@aitne/daemon 0.1.8 → 0.1.10

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 (2350) hide show
  1. package/dist/adapters/composite-dashboard-stream.d.ts +8 -11
  2. package/dist/adapters/composite-dashboard-stream.js +8 -11
  3. package/dist/adapters/dashboard-adapter.d.ts +6 -10
  4. package/dist/adapters/dashboard-adapter.js +6 -10
  5. package/dist/adapters/discord.d.ts +5 -6
  6. package/dist/adapters/discord.js +14 -17
  7. package/dist/adapters/docs-qa-adapter.d.ts +15 -16
  8. package/dist/adapters/docs-qa-adapter.js +14 -15
  9. package/dist/adapters/message-hub.d.ts +2 -3
  10. package/dist/adapters/message-hub.js +2 -2
  11. package/dist/adapters/notification-manager.d.ts +26 -29
  12. package/dist/adapters/notification-manager.js +63 -62
  13. package/dist/adapters/outbound-text.d.ts +3 -6
  14. package/dist/adapters/outbound-text.js +3 -6
  15. package/dist/adapters/primary-platform-resolver.d.ts +0 -1
  16. package/dist/adapters/primary-platform-resolver.js +0 -1
  17. package/dist/adapters/slack-adapter.d.ts +7 -8
  18. package/dist/adapters/slack-adapter.js +18 -29
  19. package/dist/adapters/telegram-adapter.d.ts +6 -9
  20. package/dist/adapters/telegram-adapter.js +18 -28
  21. package/dist/adapters/types.d.ts +3 -4
  22. package/dist/adapters/types.js +0 -1
  23. package/dist/adapters/whatsapp-adapter.d.ts +71 -18
  24. package/dist/adapters/whatsapp-adapter.js +225 -73
  25. package/dist/api/chat-binding-query.d.ts +0 -1
  26. package/dist/api/chat-binding-query.js +0 -1
  27. package/dist/api/chat-session-resume.d.ts +0 -1
  28. package/dist/api/chat-session-resume.js +0 -1
  29. package/dist/api/directory-picker.d.ts +0 -1
  30. package/dist/api/directory-picker.js +0 -1
  31. package/dist/api/env-writer.d.ts +1 -1
  32. package/dist/api/env-writer.js +111 -6
  33. package/dist/api/helpers/agent-errors-envelope.d.ts +116 -0
  34. package/dist/api/helpers/agent-errors-envelope.js +165 -0
  35. package/dist/api/helpers/agent-errors-registry.d.ts +2290 -0
  36. package/dist/api/helpers/agent-errors-registry.js +2197 -0
  37. package/dist/api/helpers/agent-errors-types.d.ts +193 -0
  38. package/dist/api/helpers/agent-errors-types.js +15 -0
  39. package/dist/api/helpers/agent-errors-zod.d.ts +33 -0
  40. package/dist/api/helpers/agent-errors-zod.js +138 -0
  41. package/dist/api/helpers/agent-errors.d.ts +4 -2600
  42. package/dist/api/helpers/agent-errors.js +15 -2504
  43. package/dist/api/integration-route-gate.d.ts +0 -1
  44. package/dist/api/integration-route-gate.js +0 -1
  45. package/dist/api/json-body.d.ts +3 -4
  46. package/dist/api/json-body.js +3 -4
  47. package/dist/api/routes/activity-sources.d.ts +1 -2
  48. package/dist/api/routes/activity-sources.js +0 -1
  49. package/dist/api/routes/agent-schedule-plan-match.d.ts +0 -1
  50. package/dist/api/routes/agent-schedule-plan-match.js +0 -1
  51. package/dist/api/routes/agent-schedule.d.ts +0 -1
  52. package/dist/api/routes/agent-schedule.js +64 -20
  53. package/dist/api/routes/agent.d.ts +0 -1
  54. package/dist/api/routes/agent.js +25 -2
  55. package/dist/api/routes/agents/index.d.ts +3 -0
  56. package/dist/api/routes/agents/index.js +404 -0
  57. package/dist/api/routes/agents/views.d.ts +185 -0
  58. package/dist/api/routes/agents/views.js +514 -0
  59. package/dist/api/routes/apple-calendar.d.ts +1 -2
  60. package/dist/api/routes/apple-calendar.js +5 -3
  61. package/dist/api/routes/attachments.d.ts +0 -1
  62. package/dist/api/routes/attachments.js +0 -1
  63. package/dist/api/routes/backends.d.ts +0 -1
  64. package/dist/api/routes/backends.js +44 -36
  65. package/dist/api/routes/books.d.ts +0 -1
  66. package/dist/api/routes/books.js +7 -8
  67. package/dist/api/routes/browser-automation-purchase.d.ts +31 -0
  68. package/dist/api/routes/browser-automation-purchase.js +251 -0
  69. package/dist/api/routes/browser-automation-sites.d.ts +22 -0
  70. package/dist/api/routes/browser-automation-sites.js +238 -0
  71. package/dist/api/routes/browser-history-managed.d.ts +23 -0
  72. package/dist/api/routes/browser-history-managed.js +202 -0
  73. package/dist/api/routes/browser-history.d.ts +3 -0
  74. package/dist/api/routes/browser-history.js +433 -0
  75. package/dist/api/routes/browser-task.d.ts +43 -0
  76. package/dist/api/routes/browser-task.js +617 -0
  77. package/dist/api/routes/calendar.d.ts +0 -1
  78. package/dist/api/routes/calendar.js +12 -3
  79. package/dist/api/routes/commands.d.ts +0 -1
  80. package/dist/api/routes/commands.js +10 -4
  81. package/dist/api/routes/context/frontmatter-merge.d.ts +28 -0
  82. package/dist/api/routes/context/frontmatter-merge.js +56 -0
  83. package/dist/api/routes/context/index.d.ts +12 -5
  84. package/dist/api/routes/context/index.js +1 -20
  85. package/dist/api/routes/context/locks.d.ts +0 -1
  86. package/dist/api/routes/context/locks.js +14 -14
  87. package/dist/api/routes/context/path-resolve.d.ts +12 -1
  88. package/dist/api/routes/context/path-resolve.js +29 -8
  89. package/dist/api/routes/context/permissions.d.ts +24 -1
  90. package/dist/api/routes/context/permissions.js +114 -63
  91. package/dist/api/routes/context/read.d.ts +0 -1
  92. package/dist/api/routes/context/read.js +61 -50
  93. package/dist/api/routes/context/repair.d.ts +0 -1
  94. package/dist/api/routes/context/repair.js +3 -3
  95. package/dist/api/routes/context/snapshots.d.ts +0 -1
  96. package/dist/api/routes/context/snapshots.js +44 -13
  97. package/dist/api/routes/context/write-step.d.ts +132 -0
  98. package/dist/api/routes/context/write-step.js +151 -0
  99. package/dist/api/routes/context/write.d.ts +0 -1
  100. package/dist/api/routes/context/write.js +297 -86
  101. package/dist/api/routes/dashboard/config.d.ts +0 -1
  102. package/dist/api/routes/dashboard/config.js +20 -2
  103. package/dist/api/routes/dashboard/conversations.d.ts +0 -1
  104. package/dist/api/routes/dashboard/conversations.js +0 -1
  105. package/dist/api/routes/dashboard/cost-approvals.d.ts +0 -1
  106. package/dist/api/routes/dashboard/cost-approvals.js +0 -1
  107. package/dist/api/routes/dashboard/index.d.ts +0 -1
  108. package/dist/api/routes/dashboard/index.js +0 -1
  109. package/dist/api/routes/dashboard/messaging.d.ts +0 -1
  110. package/dist/api/routes/dashboard/messaging.js +2 -4
  111. package/dist/api/routes/dashboard/notifications.d.ts +0 -1
  112. package/dist/api/routes/dashboard/notifications.js +0 -1
  113. package/dist/api/routes/dashboard/oauth-google.d.ts +0 -1
  114. package/dist/api/routes/dashboard/oauth-google.js +14 -17
  115. package/dist/api/routes/dashboard/schedule-readonly.d.ts +0 -1
  116. package/dist/api/routes/dashboard/schedule-readonly.js +11 -3
  117. package/dist/api/routes/dashboard/secrets.d.ts +0 -1
  118. package/dist/api/routes/dashboard/secrets.js +0 -1
  119. package/dist/api/routes/dashboard/snapshots.d.ts +0 -1
  120. package/dist/api/routes/dashboard/snapshots.js +0 -1
  121. package/dist/api/routes/delegated-sync.d.ts +0 -1
  122. package/dist/api/routes/delegated-sync.js +0 -1
  123. package/dist/api/routes/delegated.d.ts +0 -1
  124. package/dist/api/routes/delegated.js +0 -1
  125. package/dist/api/routes/docs.d.ts +0 -1
  126. package/dist/api/routes/docs.js +0 -1
  127. package/dist/api/routes/entities.d.ts +0 -1
  128. package/dist/api/routes/entities.js +3 -3
  129. package/dist/api/routes/feedback.d.ts +3 -0
  130. package/dist/api/routes/feedback.js +349 -0
  131. package/dist/api/routes/fs.d.ts +0 -1
  132. package/dist/api/routes/fs.js +0 -1
  133. package/dist/api/routes/fs.logic.d.ts +0 -1
  134. package/dist/api/routes/fs.logic.js +6 -2
  135. package/dist/api/routes/git-accounts.d.ts +0 -1
  136. package/dist/api/routes/git-accounts.js +0 -1
  137. package/dist/api/routes/git-templates.d.ts +0 -1
  138. package/dist/api/routes/git-templates.js +7 -2
  139. package/dist/api/routes/git.d.ts +0 -1
  140. package/dist/api/routes/git.js +19 -7
  141. package/dist/api/routes/github.d.ts +0 -1
  142. package/dist/api/routes/github.js +25 -8
  143. package/dist/api/routes/health.d.ts +0 -1
  144. package/dist/api/routes/health.js +4 -3
  145. package/dist/api/routes/integrations/crud-patch.d.ts +0 -1
  146. package/dist/api/routes/integrations/crud-patch.js +53 -15
  147. package/dist/api/routes/integrations/crud.d.ts +0 -1
  148. package/dist/api/routes/integrations/crud.js +0 -1
  149. package/dist/api/routes/integrations/exec.d.ts +0 -1
  150. package/dist/api/routes/integrations/exec.js +8 -15
  151. package/dist/api/routes/integrations/index.d.ts +0 -1
  152. package/dist/api/routes/integrations/index.js +0 -1
  153. package/dist/api/routes/integrations/probe.d.ts +0 -1
  154. package/dist/api/routes/integrations/probe.js +0 -1
  155. package/dist/api/routes/integrations-reconcile.d.ts +0 -1
  156. package/dist/api/routes/integrations-reconcile.js +0 -1
  157. package/dist/api/routes/knowledge.d.ts +0 -1
  158. package/dist/api/routes/knowledge.js +1 -2
  159. package/dist/api/routes/mail/accounts.d.ts +0 -1
  160. package/dist/api/routes/mail/accounts.js +0 -1
  161. package/dist/api/routes/mail/app-password.d.ts +0 -1
  162. package/dist/api/routes/mail/app-password.js +0 -1
  163. package/dist/api/routes/mail/body-helpers.d.ts +0 -1
  164. package/dist/api/routes/mail/body-helpers.js +0 -1
  165. package/dist/api/routes/mail/dependencies.d.ts +0 -1
  166. package/dist/api/routes/mail/dependencies.js +0 -1
  167. package/dist/api/routes/mail/drafts.d.ts +0 -1
  168. package/dist/api/routes/mail/drafts.js +0 -1
  169. package/dist/api/routes/mail/gating.d.ts +0 -1
  170. package/dist/api/routes/mail/gating.js +0 -1
  171. package/dist/api/routes/mail/index.d.ts +0 -1
  172. package/dist/api/routes/mail/index.js +0 -1
  173. package/dist/api/routes/mail/messages.d.ts +0 -1
  174. package/dist/api/routes/mail/messages.js +0 -1
  175. package/dist/api/routes/mail/outlook-config.d.ts +0 -1
  176. package/dist/api/routes/mail/outlook-config.js +0 -1
  177. package/dist/api/routes/mail/provider-resolver.d.ts +2 -3
  178. package/dist/api/routes/mail/provider-resolver.js +0 -1
  179. package/dist/api/routes/mail/providers.d.ts +0 -1
  180. package/dist/api/routes/mail/providers.js +0 -1
  181. package/dist/api/routes/mail/search-health.d.ts +0 -1
  182. package/dist/api/routes/mail/search-health.js +0 -1
  183. package/dist/api/routes/mail/tags-folders.d.ts +0 -1
  184. package/dist/api/routes/mail/tags-folders.js +0 -1
  185. package/dist/api/routes/mail/validators.d.ts +0 -1
  186. package/dist/api/routes/mail/validators.js +0 -1
  187. package/dist/api/routes/managed-tasks.d.ts +0 -1
  188. package/dist/api/routes/managed-tasks.js +12 -9
  189. package/dist/api/routes/mcp.d.ts +0 -1
  190. package/dist/api/routes/mcp.js +65 -14
  191. package/dist/api/routes/metrics.d.ts +0 -1
  192. package/dist/api/routes/metrics.js +0 -1
  193. package/dist/api/routes/notion.d.ts +0 -1
  194. package/dist/api/routes/notion.js +5 -2
  195. package/dist/api/routes/observations.d.ts +0 -1
  196. package/dist/api/routes/observations.js +13 -15
  197. package/dist/api/routes/obsidian.d.ts +0 -1
  198. package/dist/api/routes/obsidian.js +0 -1
  199. package/dist/api/routes/profile-questions.d.ts +0 -1
  200. package/dist/api/routes/profile-questions.js +7 -2
  201. package/dist/api/routes/receipts.d.ts +0 -1
  202. package/dist/api/routes/receipts.js +0 -1
  203. package/dist/api/routes/recurring-schedules.d.ts +0 -1
  204. package/dist/api/routes/recurring-schedules.js +45 -2
  205. package/dist/api/routes/repositories.d.ts +0 -1
  206. package/dist/api/routes/repositories.js +0 -1
  207. package/dist/api/routes/schedule-model-resolver.d.ts +0 -1
  208. package/dist/api/routes/schedule-model-resolver.js +6 -3
  209. package/dist/api/routes/schedule-options.d.ts +0 -1
  210. package/dist/api/routes/schedule-options.js +0 -1
  211. package/dist/api/routes/schedule-validation.d.ts +3 -4
  212. package/dist/api/routes/schedule-validation.js +4 -5
  213. package/dist/api/routes/setup-migrate.d.ts +0 -1
  214. package/dist/api/routes/setup-migrate.js +6 -4
  215. package/dist/api/routes/setup.d.ts +0 -1
  216. package/dist/api/routes/setup.js +42 -1
  217. package/dist/api/routes/skill-curation.d.ts +0 -1
  218. package/dist/api/routes/skill-curation.js +0 -1
  219. package/dist/api/routes/skills.d.ts +2 -1
  220. package/dist/api/routes/skills.js +11 -3
  221. package/dist/api/routes/sot-bindings.d.ts +1 -2
  222. package/dist/api/routes/sot-bindings.js +0 -1
  223. package/dist/api/routes/sse.d.ts +0 -1
  224. package/dist/api/routes/sse.js +3 -4
  225. package/dist/api/routes/system.d.ts +0 -1
  226. package/dist/api/routes/system.js +0 -1
  227. package/dist/api/routes/task-flows.d.ts +0 -1
  228. package/dist/api/routes/task-flows.js +0 -1
  229. package/dist/api/routes/travel-bookings.d.ts +0 -1
  230. package/dist/api/routes/travel-bookings.js +0 -1
  231. package/dist/api/routes/triggers.d.ts +0 -1
  232. package/dist/api/routes/triggers.js +0 -1
  233. package/dist/api/routes/voice.d.ts +0 -1
  234. package/dist/api/routes/voice.js +0 -1
  235. package/dist/api/routes/wiki.d.ts +0 -1
  236. package/dist/api/routes/wiki.js +35 -9
  237. package/dist/api/server.d.ts +41 -4
  238. package/dist/api/server.js +47 -12
  239. package/dist/bootstrap/adapters.d.ts +0 -1
  240. package/dist/bootstrap/adapters.js +0 -1
  241. package/dist/bootstrap/api.d.ts +16 -2
  242. package/dist/bootstrap/api.js +61 -2
  243. package/dist/bootstrap/catchup.d.ts +0 -1
  244. package/dist/bootstrap/catchup.js +1 -2
  245. package/dist/bootstrap/db.d.ts +104 -10
  246. package/dist/bootstrap/db.js +339 -16
  247. package/dist/bootstrap/event-pipeline.d.ts +22 -1
  248. package/dist/bootstrap/event-pipeline.js +508 -9
  249. package/dist/bootstrap/managed-chromium.d.ts +26 -0
  250. package/dist/bootstrap/managed-chromium.js +66 -0
  251. package/dist/bootstrap/observers.d.ts +0 -1
  252. package/dist/bootstrap/observers.js +29 -1
  253. package/dist/bootstrap/schedule-helpers.d.ts +0 -1
  254. package/dist/bootstrap/schedule-helpers.js +4 -2
  255. package/dist/bootstrap/services.d.ts +0 -1
  256. package/dist/bootstrap/services.js +1 -11
  257. package/dist/config.d.ts +1 -2
  258. package/dist/config.js +18 -12
  259. package/dist/core/abort-utils.d.ts +0 -1
  260. package/dist/core/abort-utils.js +0 -1
  261. package/dist/core/agent-core.d.ts +14 -1
  262. package/dist/core/agent-core.js +0 -1
  263. package/dist/core/agent-execution-recorder.d.ts +78 -0
  264. package/dist/core/agent-execution-recorder.js +60 -0
  265. package/dist/core/agents/agent-execution-tracker.d.ts +91 -0
  266. package/dist/core/agents/agent-execution-tracker.js +226 -0
  267. package/dist/core/agents/agent-frontmatter.d.ts +57 -0
  268. package/dist/core/agents/agent-frontmatter.js +74 -0
  269. package/dist/core/agents/agent-id-resolver.d.ts +47 -0
  270. package/dist/core/agents/agent-id-resolver.js +61 -0
  271. package/dist/core/agents/builtin-registry.d.ts +156 -0
  272. package/dist/core/agents/builtin-registry.js +257 -0
  273. package/dist/core/agents/cron-substitute.d.ts +60 -0
  274. package/dist/core/agents/cron-substitute.js +100 -0
  275. package/dist/core/agents/definition-criteria.d.ts +14 -0
  276. package/dist/core/agents/definition-criteria.js +25 -0
  277. package/dist/core/agents/effective-definition.d.ts +47 -0
  278. package/dist/core/agents/effective-definition.js +101 -0
  279. package/dist/core/agents/firing-blocked.d.ts +28 -0
  280. package/dist/core/agents/firing-blocked.js +27 -0
  281. package/dist/core/agents/loader-boot.d.ts +26 -0
  282. package/dist/core/agents/loader-boot.js +98 -0
  283. package/dist/core/agents/loader-watcher.d.ts +23 -0
  284. package/dist/core/agents/loader-watcher.js +84 -0
  285. package/dist/core/agents/loader.d.ts +188 -0
  286. package/dist/core/agents/loader.js +754 -0
  287. package/dist/core/agents/override-merge.d.ts +57 -0
  288. package/dist/core/agents/override-merge.js +131 -0
  289. package/dist/core/agents/recurrence-convert.d.ts +92 -0
  290. package/dist/core/agents/recurrence-convert.js +207 -0
  291. package/dist/core/agents/recurring-schedule-adapter.d.ts +24 -0
  292. package/dist/core/agents/recurring-schedule-adapter.js +157 -0
  293. package/dist/core/agents/success-criteria.d.ts +60 -0
  294. package/dist/core/agents/success-criteria.js +139 -0
  295. package/dist/core/agents/validate-agent-md.d.ts +17 -0
  296. package/dist/core/agents/validate-agent-md.js +64 -0
  297. package/dist/core/alerts.d.ts +0 -1
  298. package/dist/core/alerts.js +0 -1
  299. package/dist/core/atomic-write.d.ts +0 -1
  300. package/dist/core/atomic-write.js +17 -4
  301. package/dist/core/backends/api-key-probe.d.ts +0 -1
  302. package/dist/core/backends/api-key-probe.js +0 -1
  303. package/dist/core/backends/auth-health-monitor.d.ts +0 -1
  304. package/dist/core/backends/auth-health-monitor.js +29 -2
  305. package/dist/core/backends/auth-recovery.d.ts +0 -1
  306. package/dist/core/backends/auth-recovery.js +17 -4
  307. package/dist/core/backends/auth-telemetry.d.ts +0 -1
  308. package/dist/core/backends/auth-telemetry.js +0 -1
  309. package/dist/core/backends/backend-router.d.ts +33 -2
  310. package/dist/core/backends/backend-router.js +134 -2
  311. package/dist/core/backends/claude-auth.d.ts +0 -1
  312. package/dist/core/backends/claude-auth.js +0 -1
  313. package/dist/core/backends/claude-code-core.d.ts +2 -2
  314. package/dist/core/backends/claude-code-core.js +68 -18
  315. package/dist/core/backends/claude-credentials-store.d.ts +0 -1
  316. package/dist/core/backends/claude-credentials-store.js +0 -1
  317. package/dist/core/backends/claude-delegated.d.ts +0 -1
  318. package/dist/core/backends/claude-delegated.js +14 -15
  319. package/dist/core/backends/claude-errors.d.ts +0 -1
  320. package/dist/core/backends/claude-errors.js +0 -1
  321. package/dist/core/backends/claude-probe.d.ts +0 -1
  322. package/dist/core/backends/claude-probe.js +0 -1
  323. package/dist/core/backends/claude-tool-collection.d.ts +0 -1
  324. package/dist/core/backends/claude-tool-collection.js +176 -31
  325. package/dist/core/backends/cli-quota-guards.d.ts +100 -0
  326. package/dist/core/backends/cli-quota-guards.js +95 -0
  327. package/dist/core/backends/cli-utils.d.ts +26 -2
  328. package/dist/core/backends/cli-utils.js +133 -15
  329. package/dist/core/backends/codex-core.d.ts +0 -1
  330. package/dist/core/backends/codex-core.js +71 -78
  331. package/dist/core/backends/gemini-cli-core.d.ts +0 -1
  332. package/dist/core/backends/gemini-cli-core.js +102 -92
  333. package/dist/core/backends/idle-watchdog.d.ts +0 -1
  334. package/dist/core/backends/idle-watchdog.js +0 -1
  335. package/dist/core/backends/install-methods.d.ts +0 -1
  336. package/dist/core/backends/install-methods.js +0 -1
  337. package/dist/core/backends/model-registry.d.ts +2 -3
  338. package/dist/core/backends/model-registry.js +54 -14
  339. package/dist/core/backends/native-skill-discovery-probe.d.ts +3 -6
  340. package/dist/core/backends/native-skill-discovery-probe.js +3 -6
  341. package/dist/core/backends/opencode-basic-auth-fetch.d.ts +0 -1
  342. package/dist/core/backends/opencode-basic-auth-fetch.js +0 -1
  343. package/dist/core/backends/opencode-config-builder.d.ts +29 -2
  344. package/dist/core/backends/opencode-config-builder.js +13 -1
  345. package/dist/core/backends/opencode-core.d.ts +0 -1
  346. package/dist/core/backends/opencode-core.js +8 -2
  347. package/dist/core/backends/opencode-event-mapper.d.ts +0 -1
  348. package/dist/core/backends/opencode-event-mapper.js +0 -1
  349. package/dist/core/backends/opencode-mcp.d.ts +0 -1
  350. package/dist/core/backends/opencode-mcp.js +10 -18
  351. package/dist/core/backends/opencode-server-manager.d.ts +0 -1
  352. package/dist/core/backends/opencode-server-manager.js +0 -1
  353. package/dist/core/backends/opencode-types.d.ts +0 -1
  354. package/dist/core/backends/opencode-types.js +0 -1
  355. package/dist/core/backends/plan-presets.d.ts +0 -1
  356. package/dist/core/backends/plan-presets.js +60 -9
  357. package/dist/core/backends/price-fetcher.d.ts +0 -1
  358. package/dist/core/backends/price-fetcher.js +0 -1
  359. package/dist/core/backends/process-config-cascade.d.ts +0 -1
  360. package/dist/core/backends/process-config-cascade.js +0 -1
  361. package/dist/core/backends/prompt-utils.d.ts +0 -1
  362. package/dist/core/backends/prompt-utils.js +0 -1
  363. package/dist/core/backends/proxy-model-registry.d.ts +0 -1
  364. package/dist/core/backends/proxy-model-registry.js +0 -1
  365. package/dist/core/backends/quota-reset-hints.d.ts +0 -1
  366. package/dist/core/backends/quota-reset-hints.js +0 -1
  367. package/dist/core/backends/silent-api-error-detector.d.ts +0 -1
  368. package/dist/core/backends/silent-api-error-detector.js +0 -1
  369. package/dist/core/bang-commands/commands-checks.d.ts +16 -0
  370. package/dist/core/bang-commands/commands-checks.js +58 -0
  371. package/dist/core/bang-commands/commands-close.d.ts +0 -1
  372. package/dist/core/bang-commands/commands-close.js +0 -1
  373. package/dist/core/bang-commands/commands-cost.d.ts +0 -1
  374. package/dist/core/bang-commands/commands-cost.js +0 -1
  375. package/dist/core/bang-commands/commands-help.d.ts +0 -1
  376. package/dist/core/bang-commands/commands-help.js +8 -9
  377. package/dist/core/bang-commands/commands-report.d.ts +0 -1
  378. package/dist/core/bang-commands/commands-report.js +0 -1
  379. package/dist/core/bang-commands/commands-research.d.ts +36 -0
  380. package/dist/core/bang-commands/commands-research.js +284 -0
  381. package/dist/core/bang-commands/commands-stop-start.d.ts +0 -1
  382. package/dist/core/bang-commands/commands-stop-start.js +0 -1
  383. package/dist/core/bang-commands/commands-wiki.d.ts +0 -1
  384. package/dist/core/bang-commands/commands-wiki.js +44 -16
  385. package/dist/core/bang-commands/format-utils.d.ts +2 -2
  386. package/dist/core/bang-commands/format-utils.js +2 -2
  387. package/dist/core/bang-commands/index.d.ts +2 -1
  388. package/dist/core/bang-commands/index.js +11 -1
  389. package/dist/core/bang-commands/registry.d.ts +9 -1
  390. package/dist/core/bang-commands/registry.js +14 -7
  391. package/dist/core/bang-commands/user-commands.d.ts +0 -1
  392. package/dist/core/bang-commands/user-commands.js +0 -1
  393. package/dist/core/browser-history/pre-morning-digest-job.d.ts +79 -0
  394. package/dist/core/browser-history/pre-morning-digest-job.js +89 -0
  395. package/dist/core/browser-history/research-cluster-fanout.d.ts +40 -0
  396. package/dist/core/browser-history/research-cluster-fanout.js +47 -0
  397. package/dist/core/browser-history/research-events.d.ts +37 -0
  398. package/dist/core/browser-history/research-events.js +70 -0
  399. package/dist/core/channel-timeline.d.ts +0 -1
  400. package/dist/core/channel-timeline.js +0 -1
  401. package/dist/core/character-block.d.ts +0 -1
  402. package/dist/core/character-block.js +0 -1
  403. package/dist/core/context/activity-sources.d.ts +3 -4
  404. package/dist/core/context/activity-sources.js +0 -1
  405. package/dist/core/context/activity-view-reconciler.d.ts +1 -2
  406. package/dist/core/context/activity-view-reconciler.js +10 -10
  407. package/dist/core/context/activity-view-runner.d.ts +0 -1
  408. package/dist/core/context/activity-view-runner.js +2 -2
  409. package/dist/core/context/default-schedules-reconciler.d.ts +1 -2
  410. package/dist/core/context/default-schedules-reconciler.js +1 -2
  411. package/dist/core/context/default-schedules-runner.d.ts +0 -1
  412. package/dist/core/context/default-schedules-runner.js +0 -1
  413. package/dist/core/context/domain-index-reconciler.d.ts +3 -1
  414. package/dist/core/context/domain-index-reconciler.js +11 -5
  415. package/dist/core/context/domain-index-runner.d.ts +0 -1
  416. package/dist/core/context/domain-index-runner.js +0 -1
  417. package/dist/core/context/entity-mirror.d.ts +9 -7
  418. package/dist/core/context/entity-mirror.js +21 -9
  419. package/dist/core/context/entity-source-rename.d.ts +0 -1
  420. package/dist/core/context/entity-source-rename.js +0 -1
  421. package/dist/core/context/index-reconciler.d.ts +26 -5
  422. package/dist/core/context/index-reconciler.js +110 -56
  423. package/dist/core/context/policy-index-reconciler.d.ts +6 -7
  424. package/dist/core/context/policy-index-reconciler.js +6 -7
  425. package/dist/core/context/policy-index-runner.d.ts +2 -3
  426. package/dist/core/context/policy-index-runner.js +1 -2
  427. package/dist/core/context/reconciler-runner.d.ts +0 -1
  428. package/dist/core/context/reconciler-runner.js +37 -5
  429. package/dist/core/context/reconciler-section.d.ts +30 -0
  430. package/dist/core/context/reconciler-section.js +39 -0
  431. package/dist/core/context-builder-calendar.d.ts +36 -0
  432. package/dist/core/context-builder-calendar.js +245 -0
  433. package/dist/core/context-builder-conversation.d.ts +95 -0
  434. package/dist/core/context-builder-conversation.js +444 -0
  435. package/dist/core/context-builder-format.d.ts +8 -0
  436. package/dist/core/context-builder-format.js +22 -0
  437. package/dist/core/context-builder-projects.d.ts +11 -0
  438. package/dist/core/context-builder-projects.js +102 -0
  439. package/dist/core/context-builder-yesterday.d.ts +30 -0
  440. package/dist/core/context-builder-yesterday.js +198 -0
  441. package/dist/core/context-builder.d.ts +9 -155
  442. package/dist/core/context-builder.js +246 -1004
  443. package/dist/core/context-file-serializer.d.ts +92 -0
  444. package/dist/core/context-file-serializer.js +126 -0
  445. package/dist/core/context-frontmatter-extract.d.ts +32 -0
  446. package/dist/core/context-frontmatter-extract.js +98 -0
  447. package/dist/core/context-frontmatter.d.ts +8 -1
  448. package/dist/core/context-frontmatter.js +71 -112
  449. package/dist/core/context-health.d.ts +0 -1
  450. package/dist/core/context-health.js +4 -5
  451. package/dist/core/context-paths.d.ts +138 -85
  452. package/dist/core/context-paths.js +206 -108
  453. package/dist/core/context-staleness.d.ts +0 -1
  454. package/dist/core/context-staleness.js +2 -3
  455. package/dist/core/context-validation/frontmatter.d.ts +73 -0
  456. package/dist/core/context-validation/frontmatter.js +216 -0
  457. package/dist/core/context-validation/index.d.ts +1 -1
  458. package/dist/core/context-validation/index.js +1 -1
  459. package/dist/core/context-validation/prepare-write.d.ts +1 -2
  460. package/dist/core/context-validation/prepare-write.js +18 -8
  461. package/dist/core/context-validation/routine-rulebook.d.ts +2 -3
  462. package/dist/core/context-validation/routine-rulebook.js +3 -4
  463. package/dist/core/context-validation/section.d.ts +1 -2
  464. package/dist/core/context-validation/section.js +13 -5
  465. package/dist/core/context-validation/snapshot-debounce.d.ts +3 -4
  466. package/dist/core/context-validation/snapshot-debounce.js +3 -4
  467. package/dist/core/context-validation/today.d.ts +0 -1
  468. package/dist/core/context-validation/today.js +0 -1
  469. package/dist/core/context-vault-aliases.d.ts +107 -0
  470. package/dist/core/context-vault-aliases.js +253 -0
  471. package/dist/core/custom-routine-scheduler.d.ts +5 -6
  472. package/dist/core/custom-routine-scheduler.js +3 -4
  473. package/dist/core/daemon-api-cli.d.ts +0 -1
  474. package/dist/core/daemon-api-cli.js +60 -2
  475. package/dist/core/dashboard-session-cleanup.d.ts +0 -1
  476. package/dist/core/dashboard-session-cleanup.js +0 -1
  477. package/dist/core/dashboard-session-controls.d.ts +0 -1
  478. package/dist/core/dashboard-session-controls.js +0 -1
  479. package/dist/core/delegated-connector-health.d.ts +0 -1
  480. package/dist/core/delegated-connector-health.js +0 -1
  481. package/dist/core/dispatcher-date-utils.d.ts +0 -1
  482. package/dist/core/dispatcher-date-utils.js +0 -1
  483. package/dist/core/dispatcher-error-handling.d.ts +0 -1
  484. package/dist/core/dispatcher-error-handling.js +0 -1
  485. package/dist/core/dispatcher-hourly-check.d.ts +0 -1
  486. package/dist/core/dispatcher-hourly-check.js +9 -2
  487. package/dist/core/dispatcher-message-handler.d.ts +21 -1
  488. package/dist/core/dispatcher-message-handler.js +153 -7
  489. package/dist/core/dispatcher-morning-routine.d.ts +0 -1
  490. package/dist/core/dispatcher-morning-routine.js +150 -126
  491. package/dist/core/dispatcher-prompt.d.ts +0 -1
  492. package/dist/core/dispatcher-prompt.js +4 -5
  493. package/dist/core/dispatcher-repository-helpers.d.ts +0 -1
  494. package/dist/core/dispatcher-repository-helpers.js +0 -1
  495. package/dist/core/dispatcher-result-processor.d.ts +20 -1
  496. package/dist/core/dispatcher-result-processor.js +86 -2
  497. package/dist/core/dispatcher-scheduled-browser-task.d.ts +91 -0
  498. package/dist/core/dispatcher-scheduled-browser-task.js +228 -0
  499. package/dist/core/dispatcher-scheduled-tasks.d.ts +109 -1
  500. package/dist/core/dispatcher-scheduled-tasks.js +640 -15
  501. package/dist/core/dispatcher-types.d.ts +56 -1
  502. package/dist/core/dispatcher-types.js +0 -1
  503. package/dist/core/dispatcher.d.ts +144 -4
  504. package/dist/core/dispatcher.js +357 -4
  505. package/dist/core/dm-freshness-metrics.d.ts +0 -1
  506. package/dist/core/dm-freshness-metrics.js +0 -1
  507. package/dist/core/dm-token-router.d.ts +58 -0
  508. package/dist/core/dm-token-router.js +58 -0
  509. package/dist/core/docs/citation-validator.d.ts +0 -1
  510. package/dist/core/docs/citation-validator.js +0 -1
  511. package/dist/core/docs/extract-terms.d.ts +0 -1
  512. package/dist/core/docs/extract-terms.js +0 -1
  513. package/dist/core/docs/indexer.d.ts +0 -1
  514. package/dist/core/docs/indexer.js +0 -1
  515. package/dist/core/drift-effects.d.ts +0 -1
  516. package/dist/core/drift-effects.js +6 -3
  517. package/dist/core/evening-review-verify.d.ts +1 -2
  518. package/dist/core/evening-review-verify.js +2 -3
  519. package/dist/core/event-bus.d.ts +0 -1
  520. package/dist/core/event-bus.js +0 -1
  521. package/dist/core/feedback/consolidation-prep.d.ts +94 -0
  522. package/dist/core/feedback/consolidation-prep.js +242 -0
  523. package/dist/core/feedback/eviction-scorer.d.ts +81 -0
  524. package/dist/core/feedback/eviction-scorer.js +132 -0
  525. package/dist/core/feedback/lesson-format.d.ts +79 -0
  526. package/dist/core/feedback/lesson-format.js +194 -0
  527. package/dist/core/feedback/lesson-injection.d.ts +98 -0
  528. package/dist/core/feedback/lesson-injection.js +159 -0
  529. package/dist/core/feedback/lesson-merge.d.ts +51 -0
  530. package/dist/core/feedback/lesson-merge.js +88 -0
  531. package/dist/core/feedback/lesson-store-overview.d.ts +42 -0
  532. package/dist/core/feedback/lesson-store-overview.js +38 -0
  533. package/dist/core/feedback/promotion-gate.d.ts +69 -0
  534. package/dist/core/feedback/promotion-gate.js +117 -0
  535. package/dist/core/feedback/regeneralization-prep.d.ts +87 -0
  536. package/dist/core/feedback/regeneralization-prep.js +139 -0
  537. package/dist/core/feedback/scope-parser.d.ts +86 -0
  538. package/dist/core/feedback/scope-parser.js +141 -0
  539. package/dist/core/fetch-window-prompt-loader.d.ts +0 -1
  540. package/dist/core/fetch-window-prompt-loader.js +0 -1
  541. package/dist/core/git-project-docs.d.ts +0 -1
  542. package/dist/core/git-project-docs.js +13 -6
  543. package/dist/core/health-monitor.d.ts +2 -2
  544. package/dist/core/health-monitor.js +6 -3
  545. package/dist/core/heartbeat.d.ts +0 -1
  546. package/dist/core/heartbeat.js +0 -1
  547. package/dist/core/injection-policy.d.ts +189 -0
  548. package/dist/core/injection-policy.js +175 -0
  549. package/dist/core/integration-health.d.ts +0 -1
  550. package/dist/core/integration-health.js +1 -2
  551. package/dist/core/integration-lifecycle.d.ts +0 -1
  552. package/dist/core/integration-lifecycle.js +0 -1
  553. package/dist/core/integration-main-backend.d.ts +0 -1
  554. package/dist/core/integration-main-backend.js +11 -4
  555. package/dist/core/integration-probe.d.ts +0 -1
  556. package/dist/core/integration-probe.js +0 -1
  557. package/dist/core/management-md-write-lock.d.ts +1 -2
  558. package/dist/core/management-md-write-lock.js +1 -2
  559. package/dist/core/management-md.d.ts +24 -10
  560. package/dist/core/management-md.js +42 -24
  561. package/dist/core/management-registry.d.ts +3 -4
  562. package/dist/core/management-registry.js +5 -6
  563. package/dist/core/management-telemetry.d.ts +1 -2
  564. package/dist/core/management-telemetry.js +1 -2
  565. package/dist/core/message-recorder.d.ts +3 -4
  566. package/dist/core/message-recorder.js +3 -4
  567. package/dist/core/metrics.d.ts +0 -1
  568. package/dist/core/metrics.js +0 -1
  569. package/dist/core/migration-backup.d.ts +0 -1
  570. package/dist/core/migration-backup.js +11 -1
  571. package/dist/core/morning/agent-journal-appender.d.ts +75 -8
  572. package/dist/core/morning/agent-journal-appender.js +212 -38
  573. package/dist/core/morning/daily-journal-composer.d.ts +183 -0
  574. package/dist/core/morning/daily-journal-composer.js +421 -0
  575. package/dist/core/morning/handoff-parser.d.ts +3 -5
  576. package/dist/core/morning/handoff-parser.js +3 -5
  577. package/dist/core/morning/journal-skeleton-builder.d.ts +7 -9
  578. package/dist/core/morning/journal-skeleton-builder.js +15 -17
  579. package/dist/core/morning/orchestrator.d.ts +129 -17
  580. package/dist/core/morning/orchestrator.js +467 -64
  581. package/dist/core/morning/parent-audit-emitter.d.ts +2 -4
  582. package/dist/core/morning/parent-audit-emitter.js +2 -4
  583. package/dist/core/morning/partial-extract-streak.d.ts +76 -0
  584. package/dist/core/morning/partial-extract-streak.js +165 -0
  585. package/dist/core/morning/roadmap-skeleton-builder.d.ts +3 -4
  586. package/dist/core/morning/roadmap-skeleton-builder.js +4 -5
  587. package/dist/core/output-language-policy.d.ts +0 -1
  588. package/dist/core/output-language-policy.js +6 -7
  589. package/dist/core/overview-write-lock.d.ts +0 -1
  590. package/dist/core/overview-write-lock.js +0 -1
  591. package/dist/core/path-compat.d.ts +0 -1
  592. package/dist/core/path-compat.js +0 -1
  593. package/dist/core/path-rewrite.d.ts +1 -2
  594. package/dist/core/path-rewrite.js +0 -1
  595. package/dist/core/policy-files.d.ts +25 -16
  596. package/dist/core/policy-files.js +36 -44
  597. package/dist/core/pre-pass-freshness.d.ts +0 -1
  598. package/dist/core/pre-pass-freshness.js +0 -1
  599. package/dist/core/previous-week-digest.d.ts +0 -1
  600. package/dist/core/previous-week-digest.js +12 -13
  601. package/dist/core/profile-questions/seed.d.ts +2 -3
  602. package/dist/core/profile-questions/seed.js +4 -4
  603. package/dist/core/profile-questions/slot-filled.d.ts +0 -1
  604. package/dist/core/profile-questions/slot-filled.js +0 -1
  605. package/dist/core/prompts.d.ts +0 -1
  606. package/dist/core/prompts.js +3 -4
  607. package/dist/core/quiet-hours-sync.d.ts +0 -1
  608. package/dist/core/quiet-hours-sync.js +0 -1
  609. package/dist/core/quiet-hours.d.ts +35 -0
  610. package/dist/core/quiet-hours.js +93 -0
  611. package/dist/core/read-sensitive-token-manager.d.ts +0 -1
  612. package/dist/core/read-sensitive-token-manager.js +0 -1
  613. package/dist/core/recurrence.d.ts +0 -1
  614. package/dist/core/recurrence.js +6 -7
  615. package/dist/core/reinstall.d.ts +5 -1
  616. package/dist/core/reinstall.js +12 -2
  617. package/dist/core/release-assets.d.ts +18 -3
  618. package/dist/core/release-assets.js +25 -5
  619. package/dist/core/repository-management-docs.d.ts +0 -1
  620. package/dist/core/repository-management-docs.js +18 -7
  621. package/dist/core/retention.d.ts +49 -4
  622. package/dist/core/retention.js +218 -5
  623. package/dist/core/review-context.d.ts +10 -1
  624. package/dist/core/review-context.js +26 -9
  625. package/dist/core/roadmap-horizon.d.ts +0 -1
  626. package/dist/core/roadmap-horizon.js +0 -1
  627. package/dist/core/roadmap-ids.d.ts +4 -6
  628. package/dist/core/roadmap-ids.js +4 -6
  629. package/dist/core/roadmap-maintenance.d.ts +2 -3
  630. package/dist/core/roadmap-maintenance.js +62 -36
  631. package/dist/core/roadmap-refresh-triggers.d.ts +0 -1
  632. package/dist/core/roadmap-refresh-triggers.js +0 -1
  633. package/dist/core/roadmap-truncate.d.ts +0 -1
  634. package/dist/core/roadmap-truncate.js +0 -1
  635. package/dist/core/roadmap-validate.d.ts +0 -1
  636. package/dist/core/roadmap-validate.js +6 -6
  637. package/dist/core/roadmap-write-lock.d.ts +0 -1
  638. package/dist/core/roadmap-write-lock.js +0 -1
  639. package/dist/core/routine-acquisition-plan.d.ts +0 -1
  640. package/dist/core/routine-acquisition-plan.js +0 -1
  641. package/dist/core/routine-fetch-window-retry.d.ts +6 -8
  642. package/dist/core/routine-fetch-window-retry.js +6 -8
  643. package/dist/core/routine-fetch-window-runner.d.ts +8 -9
  644. package/dist/core/routine-fetch-window-runner.js +41 -18
  645. package/dist/core/routine-windows.d.ts +5 -11
  646. package/dist/core/routine-windows.js +18 -24
  647. package/dist/core/schedule-insert-helper.d.ts +0 -1
  648. package/dist/core/schedule-insert-helper.js +0 -1
  649. package/dist/core/schedule-maintenance.d.ts +0 -1
  650. package/dist/core/schedule-maintenance.js +0 -1
  651. package/dist/core/scheduler.d.ts +59 -1
  652. package/dist/core/scheduler.js +265 -21
  653. package/dist/core/semaphore.d.ts +0 -1
  654. package/dist/core/semaphore.js +0 -1
  655. package/dist/core/session-gate.d.ts +0 -1
  656. package/dist/core/session-gate.js +0 -1
  657. package/dist/core/session-manager.d.ts +0 -1
  658. package/dist/core/session-manager.js +0 -1
  659. package/dist/core/signal-detector.d.ts +41 -4
  660. package/dist/core/signal-detector.js +280 -28
  661. package/dist/core/skeleton.d.ts +1 -2
  662. package/dist/core/skeleton.js +8 -9
  663. package/dist/core/skill-curation/apply-proposal.d.ts +0 -1
  664. package/dist/core/skill-curation/apply-proposal.js +0 -1
  665. package/dist/core/skill-curation/auto-revert.d.ts +0 -1
  666. package/dist/core/skill-curation/auto-revert.js +4 -5
  667. package/dist/core/skill-curation/classify-diff.d.ts +0 -1
  668. package/dist/core/skill-curation/classify-diff.js +0 -0
  669. package/dist/core/skill-curation/declarations.d.ts +0 -1
  670. package/dist/core/skill-curation/declarations.js +0 -1
  671. package/dist/core/skill-curation/knowledge-map.d.ts +0 -1
  672. package/dist/core/skill-curation/knowledge-map.js +0 -1
  673. package/dist/core/skill-curation/orphan-overlay.d.ts +2 -3
  674. package/dist/core/skill-curation/orphan-overlay.js +5 -6
  675. package/dist/core/skill-curation/overlay-store.d.ts +6 -4
  676. package/dist/core/skill-curation/overlay-store.js +12 -7
  677. package/dist/core/skill-curation/render/convention-notes.d.ts +0 -1
  678. package/dist/core/skill-curation/render/convention-notes.js +0 -1
  679. package/dist/core/skill-curation/render/cross-references.d.ts +0 -1
  680. package/dist/core/skill-curation/render/cross-references.js +0 -1
  681. package/dist/core/skill-curation/render/frontmatter-schema.d.ts +0 -1
  682. package/dist/core/skill-curation/render/frontmatter-schema.js +0 -1
  683. package/dist/core/skill-curation/render/index.d.ts +0 -1
  684. package/dist/core/skill-curation/render/index.js +0 -1
  685. package/dist/core/skill-curation/render/knowledge-layout.d.ts +0 -1
  686. package/dist/core/skill-curation/render/knowledge-layout.js +0 -1
  687. package/dist/core/skill-curation/render/routing-table.d.ts +0 -1
  688. package/dist/core/skill-curation/render/routing-table.js +0 -1
  689. package/dist/core/skill-curation/render/search-recipes.d.ts +0 -1
  690. package/dist/core/skill-curation/render/search-recipes.js +0 -1
  691. package/dist/core/skill-curation/run-token.d.ts +0 -1
  692. package/dist/core/skill-curation/run-token.js +0 -1
  693. package/dist/core/skill-curation/signals.d.ts +0 -1
  694. package/dist/core/skill-curation/signals.js +0 -1
  695. package/dist/core/skill-curation/smoke-test.d.ts +0 -1
  696. package/dist/core/skill-curation/smoke-test.js +0 -1
  697. package/dist/core/skill-curation/splicer.d.ts +0 -1
  698. package/dist/core/skill-curation/splicer.js +0 -1
  699. package/dist/core/skill-curation/workdir.d.ts +0 -1
  700. package/dist/core/skill-curation/workdir.js +0 -1
  701. package/dist/core/skill-source-paths.d.ts +0 -1
  702. package/dist/core/skill-source-paths.js +0 -1
  703. package/dist/core/skills-compiler-cli-renderer.d.ts +79 -0
  704. package/dist/core/skills-compiler-cli-renderer.js +289 -0
  705. package/dist/core/skills-compiler-denied-tools.d.ts +57 -0
  706. package/dist/core/skills-compiler-denied-tools.js +204 -0
  707. package/dist/core/skills-compiler-skill-index.d.ts +117 -0
  708. package/dist/core/skills-compiler-skill-index.js +262 -0
  709. package/dist/core/skills-compiler-tree.d.ts +38 -0
  710. package/dist/core/skills-compiler-tree.js +157 -0
  711. package/dist/core/skills-compiler-types.d.ts +46 -0
  712. package/dist/core/skills-compiler-types.js +1 -0
  713. package/dist/core/skills-compiler-variants.d.ts +117 -0
  714. package/dist/core/skills-compiler-variants.js +337 -0
  715. package/dist/core/skills-compiler.d.ts +21 -319
  716. package/dist/core/skills-compiler.js +29 -1223
  717. package/dist/core/skills-manifest.d.ts +30 -2
  718. package/dist/core/skills-manifest.js +178 -22
  719. package/dist/core/system-reset.d.ts +1 -2
  720. package/dist/core/system-reset.js +1 -2
  721. package/dist/core/template-store.d.ts +2 -3
  722. package/dist/core/template-store.js +7 -4
  723. package/dist/core/template-versions.d.ts +1 -2
  724. package/dist/core/template-versions.js +1 -2
  725. package/dist/core/today-agent-plan.d.ts +0 -1
  726. package/dist/core/today-agent-plan.js +0 -1
  727. package/dist/core/today-direct-writer.d.ts +71 -16
  728. package/dist/core/today-direct-writer.js +132 -40
  729. package/dist/core/today-write-lock.d.ts +0 -1
  730. package/dist/core/today-write-lock.js +0 -1
  731. package/dist/core/trigger-dispatch.d.ts +0 -1
  732. package/dist/core/trigger-dispatch.js +0 -1
  733. package/dist/core/trigger-evaluator.d.ts +0 -1
  734. package/dist/core/trigger-evaluator.js +0 -1
  735. package/dist/core/user-skills-root.d.ts +24 -0
  736. package/dist/core/user-skills-root.js +29 -0
  737. package/dist/core/wiki/approval-queue.d.ts +0 -1
  738. package/dist/core/wiki/approval-queue.js +7 -3
  739. package/dist/core/wiki/bridge.d.ts +0 -1
  740. package/dist/core/wiki/bridge.js +0 -1
  741. package/dist/core/wiki/compile-lock.d.ts +0 -1
  742. package/dist/core/wiki/compile-lock.js +0 -1
  743. package/dist/core/wiki/compile-preview.d.ts +0 -1
  744. package/dist/core/wiki/compile-preview.js +0 -1
  745. package/dist/core/wiki/cost-estimate.d.ts +0 -1
  746. package/dist/core/wiki/cost-estimate.js +23 -3
  747. package/dist/core/wiki/dispatcher.d.ts +1 -21
  748. package/dist/core/wiki/dispatcher.js +0 -26
  749. package/dist/core/wiki/git-precompile.d.ts +0 -1
  750. package/dist/core/wiki/git-precompile.js +0 -1
  751. package/dist/core/wiki/import-migrate.d.ts +0 -1
  752. package/dist/core/wiki/import-migrate.js +0 -1
  753. package/dist/core/wiki/import-probe.d.ts +0 -1
  754. package/dist/core/wiki/import-probe.js +7 -5
  755. package/dist/core/wiki/index-cache.d.ts +0 -1
  756. package/dist/core/wiki/index-cache.js +0 -1
  757. package/dist/core/wiki/multi-url-dispatch.d.ts +0 -1
  758. package/dist/core/wiki/multi-url-dispatch.js +19 -9
  759. package/dist/core/wiki/wiki-fts.d.ts +0 -1
  760. package/dist/core/wiki/wiki-fts.js +13 -7
  761. package/dist/core/wiki/workspaces.d.ts +17 -2
  762. package/dist/core/wiki/workspaces.js +28 -17
  763. package/dist/core/wiki/write-strategy.d.ts +0 -1
  764. package/dist/core/wiki/write-strategy.js +19 -3
  765. package/dist/core/workdir.d.ts +9 -2
  766. package/dist/core/workdir.js +21 -4
  767. package/dist/db/agent-executions-store.d.ts +149 -0
  768. package/dist/db/agent-executions-store.js +209 -0
  769. package/dist/db/agents-store.d.ts +179 -0
  770. package/dist/db/agents-store.js +264 -0
  771. package/dist/db/automation-triggers.d.ts +0 -1
  772. package/dist/db/automation-triggers.js +0 -1
  773. package/dist/db/browser-automation-b4-config-store.d.ts +68 -0
  774. package/dist/db/browser-automation-b4-config-store.js +111 -0
  775. package/dist/db/browser-automation-purchase-primary-channels-store.d.ts +48 -0
  776. package/dist/db/browser-automation-purchase-primary-channels-store.js +88 -0
  777. package/dist/db/browser-automation-purchase-replies-store.d.ts +48 -0
  778. package/dist/db/browser-automation-purchase-replies-store.js +71 -0
  779. package/dist/db/browser-automation-purchase-tokens-store.d.ts +276 -0
  780. package/dist/db/browser-automation-purchase-tokens-store.js +483 -0
  781. package/dist/db/browser-automation-store.d.ts +37 -0
  782. package/dist/db/browser-automation-store.js +41 -0
  783. package/dist/db/browser-history-store.d.ts +231 -0
  784. package/dist/db/browser-history-store.js +601 -0
  785. package/dist/db/browser-task-action-log-store.d.ts +41 -0
  786. package/dist/db/browser-task-action-log-store.js +74 -0
  787. package/dist/db/browser-task-clarifications-store.d.ts +67 -0
  788. package/dist/db/browser-task-clarifications-store.js +118 -0
  789. package/dist/db/browser-task-final-confirm-tokens-store.d.ts +108 -0
  790. package/dist/db/browser-task-final-confirm-tokens-store.js +251 -0
  791. package/dist/db/browser-task-store.d.ts +114 -0
  792. package/dist/db/browser-task-store.js +250 -0
  793. package/dist/db/client.d.ts +0 -1
  794. package/dist/db/client.js +0 -1
  795. package/dist/db/entities-store.d.ts +1 -2
  796. package/dist/db/entities-store.js +0 -1
  797. package/dist/db/feedback-signals-store.d.ts +77 -0
  798. package/dist/db/feedback-signals-store.js +144 -0
  799. package/dist/db/hourly-check-signals.d.ts +0 -1
  800. package/dist/db/hourly-check-signals.js +0 -1
  801. package/dist/db/integration-probe-store.d.ts +0 -1
  802. package/dist/db/integration-probe-store.js +0 -1
  803. package/dist/db/integrations-store.d.ts +0 -1
  804. package/dist/db/integrations-store.js +0 -1
  805. package/dist/db/managed-chromium-sites-store.d.ts +110 -0
  806. package/dist/db/managed-chromium-sites-store.js +174 -0
  807. package/dist/db/managed-chromium-state.d.ts +58 -0
  808. package/dist/db/managed-chromium-state.js +104 -0
  809. package/dist/db/managed-tasks-store.d.ts +0 -1
  810. package/dist/db/managed-tasks-store.js +0 -1
  811. package/dist/db/management-parse-failures-store.d.ts +0 -1
  812. package/dist/db/management-parse-failures-store.js +0 -1
  813. package/dist/db/migrations/context-vault-restructure.d.ts +263 -0
  814. package/dist/db/migrations/context-vault-restructure.js +1384 -0
  815. package/dist/db/migrations.d.ts +111 -0
  816. package/dist/db/migrations.js +526 -0
  817. package/dist/db/observations.d.ts +0 -1
  818. package/dist/db/observations.js +12 -3
  819. package/dist/db/recurring-schedules.d.ts +12 -2
  820. package/dist/db/recurring-schedules.js +91 -15
  821. package/dist/db/repositories-store.d.ts +0 -1
  822. package/dist/db/repositories-store.js +4 -2
  823. package/dist/db/runtime-state.d.ts +32 -2
  824. package/dist/db/runtime-state.js +33 -2
  825. package/dist/db/schema.d.ts +0 -1
  826. package/dist/db/schema.js +819 -19
  827. package/dist/db/sot-bindings-store.d.ts +0 -1
  828. package/dist/db/sot-bindings-store.js +0 -1
  829. package/dist/db/voice-transcripts-store.d.ts +0 -1
  830. package/dist/db/voice-transcripts-store.js +0 -1
  831. package/dist/db/wiki-store.d.ts +0 -1
  832. package/dist/db/wiki-store.js +0 -1
  833. package/dist/index.d.ts +0 -1
  834. package/dist/index.js +119 -61
  835. package/dist/init.d.ts +0 -1
  836. package/dist/init.js +0 -2
  837. package/dist/log-buffer.d.ts +0 -1
  838. package/dist/log-buffer.js +0 -2
  839. package/dist/logging.d.ts +0 -1
  840. package/dist/logging.js +0 -2
  841. package/dist/management-rules.d.ts +0 -1
  842. package/dist/management-rules.js +0 -1
  843. package/dist/messaging/browser-task-mcp-notifier.d.ts +77 -0
  844. package/dist/messaging/browser-task-mcp-notifier.js +164 -0
  845. package/dist/messaging/browser-task-screenshot-attachment.d.ts +62 -0
  846. package/dist/messaging/browser-task-screenshot-attachment.js +115 -0
  847. package/dist/messaging/constants.d.ts +0 -1
  848. package/dist/messaging/constants.js +0 -1
  849. package/dist/messaging/final-confirm-system-message-sender.d.ts +53 -0
  850. package/dist/messaging/final-confirm-system-message-sender.js +165 -0
  851. package/dist/messaging/magic-phrase.d.ts +0 -1
  852. package/dist/messaging/magic-phrase.js +7 -3
  853. package/dist/messaging/owner-channels.d.ts +16 -1
  854. package/dist/messaging/owner-channels.js +21 -1
  855. package/dist/messaging/purchase-system-message-sender.d.ts +54 -0
  856. package/dist/messaging/purchase-system-message-sender.js +213 -0
  857. package/dist/messaging/setup-welcome-dm.d.ts +0 -1
  858. package/dist/messaging/setup-welcome-dm.js +0 -1
  859. package/dist/messaging/url-extract.d.ts +0 -1
  860. package/dist/messaging/url-extract.js +5 -1
  861. package/dist/observers/browser-history-poller.d.ts +113 -0
  862. package/dist/observers/browser-history-poller.js +404 -0
  863. package/dist/observers/calendar-poller.d.ts +0 -1
  864. package/dist/observers/calendar-poller.js +0 -1
  865. package/dist/observers/context-index-reconciler-observer.d.ts +0 -1
  866. package/dist/observers/context-index-reconciler-observer.js +0 -1
  867. package/dist/observers/delegated-probe-observer.d.ts +0 -1
  868. package/dist/observers/delegated-probe-observer.js +0 -1
  869. package/dist/observers/delegated-sync-worker.d.ts +8 -10
  870. package/dist/observers/delegated-sync-worker.js +10 -11
  871. package/dist/observers/entity-mirror-observer.d.ts +0 -1
  872. package/dist/observers/entity-mirror-observer.js +0 -1
  873. package/dist/observers/git-delegated-cron.d.ts +0 -1
  874. package/dist/observers/git-delegated-cron.js +0 -1
  875. package/dist/observers/git-event-classifier.d.ts +0 -1
  876. package/dist/observers/git-event-classifier.js +0 -1
  877. package/dist/observers/git-watcher.d.ts +0 -1
  878. package/dist/observers/git-watcher.js +7 -2
  879. package/dist/observers/github-poller-classifier.d.ts +0 -1
  880. package/dist/observers/github-poller-classifier.js +0 -1
  881. package/dist/observers/github-poller.d.ts +3 -1
  882. package/dist/observers/github-poller.js +28 -3
  883. package/dist/observers/imminent-event-scheduler.d.ts +0 -1
  884. package/dist/observers/imminent-event-scheduler.js +1 -2
  885. package/dist/observers/mail-poller.d.ts +0 -1
  886. package/dist/observers/mail-poller.js +45 -18
  887. package/dist/observers/mail-reconciliation.d.ts +1 -2
  888. package/dist/observers/mail-reconciliation.js +1 -2
  889. package/dist/observers/manager.d.ts +7 -8
  890. package/dist/observers/manager.js +7 -8
  891. package/dist/observers/notion-poller.d.ts +0 -1
  892. package/dist/observers/notion-poller.js +2 -3
  893. package/dist/observers/observation-summarizer/index.d.ts +0 -1
  894. package/dist/observers/observation-summarizer/index.js +0 -1
  895. package/dist/observers/observation-summarizer/pre-filter.d.ts +0 -1
  896. package/dist/observers/observation-summarizer/pre-filter.js +0 -1
  897. package/dist/observers/observation-summarizer/response-parser.d.ts +0 -1
  898. package/dist/observers/observation-summarizer/response-parser.js +7 -7
  899. package/dist/observers/observation-summarizer/summarizer-client.d.ts +0 -1
  900. package/dist/observers/observation-summarizer/summarizer-client.js +0 -1
  901. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +0 -1
  902. package/dist/observers/observation-summarizer/summarizer-prompts.js +0 -1
  903. package/dist/observers/observation-summarizer/worker.d.ts +2 -1
  904. package/dist/observers/observation-summarizer/worker.js +25 -1
  905. package/dist/observers/obsidian-watcher.d.ts +0 -1
  906. package/dist/observers/obsidian-watcher.js +0 -1
  907. package/dist/observers/poll-guard.d.ts +0 -1
  908. package/dist/observers/poll-guard.js +0 -1
  909. package/dist/observers/primary-vault-watcher.d.ts +0 -1
  910. package/dist/observers/primary-vault-watcher.js +0 -1
  911. package/dist/observers/repository-management-cron.d.ts +0 -1
  912. package/dist/observers/repository-management-cron.js +0 -1
  913. package/dist/observers/skill-curation-walker.d.ts +0 -1
  914. package/dist/observers/skill-curation-walker.js +0 -1
  915. package/dist/safety/absolute-block-audit.d.ts +0 -1
  916. package/dist/safety/absolute-block-audit.js +0 -1
  917. package/dist/safety/agent-write-tracker.d.ts +0 -1
  918. package/dist/safety/agent-write-tracker.js +0 -1
  919. package/dist/safety/always-disallowed.d.ts +59 -3
  920. package/dist/safety/always-disallowed.js +429 -13
  921. package/dist/safety/audit.d.ts +17 -6
  922. package/dist/safety/audit.js +137 -15
  923. package/dist/safety/integration-write-tracker.d.ts +0 -1
  924. package/dist/safety/integration-write-tracker.js +0 -1
  925. package/dist/safety/outbound-purchase-guard.d.ts +60 -0
  926. package/dist/safety/outbound-purchase-guard.js +82 -0
  927. package/dist/safety/risk-classifier.d.ts +4 -5
  928. package/dist/safety/risk-classifier.js +259 -86
  929. package/dist/safety/subprocess-block-scanner.d.ts +0 -1
  930. package/dist/safety/subprocess-block-scanner.js +0 -1
  931. package/dist/scheduler/hourly-check-gate.d.ts +0 -1
  932. package/dist/scheduler/hourly-check-gate.js +0 -1
  933. package/dist/secrets/backend-api-key-env.d.ts +0 -1
  934. package/dist/secrets/backend-api-key-env.js +0 -1
  935. package/dist/secrets/codex-home-materializer.d.ts +0 -1
  936. package/dist/secrets/codex-home-materializer.js +0 -1
  937. package/dist/secrets/encrypted-blob-store.d.ts +0 -1
  938. package/dist/secrets/encrypted-blob-store.js +0 -1
  939. package/dist/secrets/platform-secret-store.d.ts +0 -1
  940. package/dist/secrets/platform-secret-store.js +0 -1
  941. package/dist/secrets/redaction.d.ts +0 -1
  942. package/dist/secrets/redaction.js +0 -1
  943. package/dist/secrets/secret-broker.d.ts +0 -2
  944. package/dist/secrets/secret-broker.js +0 -4
  945. package/dist/secrets/secret-names.d.ts +1 -2
  946. package/dist/secrets/secret-names.js +0 -2
  947. package/dist/secrets/secret-store.d.ts +0 -1
  948. package/dist/secrets/secret-store.js +0 -1
  949. package/dist/secrets/types.d.ts +0 -1
  950. package/dist/secrets/types.js +0 -1
  951. package/dist/services/apple-calendar/caldav-client.d.ts +0 -1
  952. package/dist/services/apple-calendar/caldav-client.js +0 -1
  953. package/dist/services/apple-calendar/caldav-codec.d.ts +0 -1
  954. package/dist/services/apple-calendar/caldav-codec.js +0 -1
  955. package/dist/services/apple-calendar/index.d.ts +0 -1
  956. package/dist/services/apple-calendar/index.js +0 -1
  957. package/dist/services/apple-calendar/service.d.ts +0 -1
  958. package/dist/services/apple-calendar/service.js +0 -1
  959. package/dist/services/apple-calendar/types.d.ts +0 -1
  960. package/dist/services/apple-calendar/types.js +0 -1
  961. package/dist/services/attachments/hardlink.d.ts +0 -1
  962. package/dist/services/attachments/hardlink.js +0 -1
  963. package/dist/services/attachments/sanitize.d.ts +0 -1
  964. package/dist/services/attachments/sanitize.js +0 -1
  965. package/dist/services/attachments/store.d.ts +0 -1
  966. package/dist/services/attachments/store.js +1 -3
  967. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.d.ts +48 -0
  968. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.js +98 -0
  969. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.d.ts +76 -0
  970. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.js +79 -0
  971. package/dist/services/browser-history/automation/browser-task-tools/extract-output.d.ts +66 -0
  972. package/dist/services/browser-history/automation/browser-task-tools/extract-output.js +69 -0
  973. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.d.ts +129 -0
  974. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.js +150 -0
  975. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.d.ts +95 -0
  976. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.js +123 -0
  977. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.d.ts +54 -0
  978. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.js +62 -0
  979. package/dist/services/browser-history/automation/browser-task-tools/schemas.d.ts +201 -0
  980. package/dist/services/browser-history/automation/browser-task-tools/schemas.js +248 -0
  981. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.d.ts +76 -0
  982. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.js +101 -0
  983. package/dist/services/browser-history/automation/browser-task-tools/server.d.ts +240 -0
  984. package/dist/services/browser-history/automation/browser-task-tools/server.js +1016 -0
  985. package/dist/services/browser-history/automation/cdp-network-interception.d.ts +74 -0
  986. package/dist/services/browser-history/automation/cdp-network-interception.js +106 -0
  987. package/dist/services/browser-history/automation/egress-denylist.d.ts +167 -0
  988. package/dist/services/browser-history/automation/egress-denylist.js +468 -0
  989. package/dist/services/browser-history/automation/external-content.d.ts +72 -0
  990. package/dist/services/browser-history/automation/external-content.js +0 -0
  991. package/dist/services/browser-history/automation/final-confirm-handler.d.ts +178 -0
  992. package/dist/services/browser-history/automation/final-confirm-handler.js +462 -0
  993. package/dist/services/browser-history/automation/lite-final-confirm-tokens.d.ts +100 -0
  994. package/dist/services/browser-history/automation/lite-final-confirm-tokens.js +126 -0
  995. package/dist/services/browser-history/automation/payment-path-blocker.d.ts +62 -0
  996. package/dist/services/browser-history/automation/payment-path-blocker.js +113 -0
  997. package/dist/services/browser-history/automation/purchase-handler.d.ts +344 -0
  998. package/dist/services/browser-history/automation/purchase-handler.js +666 -0
  999. package/dist/services/browser-history/automation/purchase-tokens.d.ts +265 -0
  1000. package/dist/services/browser-history/automation/purchase-tokens.js +271 -0
  1001. package/dist/services/browser-history/automation/site-registry.d.ts +176 -0
  1002. package/dist/services/browser-history/automation/site-registry.js +290 -0
  1003. package/dist/services/browser-history/automation/trace-store-paths.d.ts +80 -0
  1004. package/dist/services/browser-history/automation/trace-store-paths.js +119 -0
  1005. package/dist/services/browser-history/automation/trace-store.d.ts +29 -0
  1006. package/dist/services/browser-history/automation/trace-store.js +63 -0
  1007. package/dist/services/browser-history/cleanup-interests-reflection.d.ts +39 -0
  1008. package/dist/services/browser-history/cleanup-interests-reflection.js +204 -0
  1009. package/dist/services/browser-history/detectors/atlas.d.ts +2 -0
  1010. package/dist/services/browser-history/detectors/atlas.js +4 -0
  1011. package/dist/services/browser-history/detectors/chrome.d.ts +2 -0
  1012. package/dist/services/browser-history/detectors/chrome.js +4 -0
  1013. package/dist/services/browser-history/detectors/chromium.d.ts +2 -0
  1014. package/dist/services/browser-history/detectors/chromium.js +193 -0
  1015. package/dist/services/browser-history/detectors/comet.d.ts +2 -0
  1016. package/dist/services/browser-history/detectors/comet.js +4 -0
  1017. package/dist/services/browser-history/detectors/registry.d.ts +15 -0
  1018. package/dist/services/browser-history/detectors/registry.js +82 -0
  1019. package/dist/services/browser-history/history-mtime.d.ts +8 -0
  1020. package/dist/services/browser-history/history-mtime.js +31 -0
  1021. package/dist/services/browser-history/interests-reflection-lock.d.ts +26 -0
  1022. package/dist/services/browser-history/interests-reflection-lock.js +84 -0
  1023. package/dist/services/browser-history/lifecycle/chromium-install.d.ts +78 -0
  1024. package/dist/services/browser-history/lifecycle/chromium-install.js +206 -0
  1025. package/dist/services/browser-history/lifecycle/chromium-launcher.d.ts +77 -0
  1026. package/dist/services/browser-history/lifecycle/chromium-launcher.js +288 -0
  1027. package/dist/services/browser-history/lifecycle/failure-escalation.d.ts +3 -0
  1028. package/dist/services/browser-history/lifecycle/failure-escalation.js +54 -0
  1029. package/dist/services/browser-history/lifecycle/health-check.d.ts +8 -0
  1030. package/dist/services/browser-history/lifecycle/health-check.js +17 -0
  1031. package/dist/services/browser-history/lifecycle/platform.d.ts +99 -0
  1032. package/dist/services/browser-history/lifecycle/platform.js +639 -0
  1033. package/dist/services/browser-history/lifecycle/supervisor.d.ts +24 -0
  1034. package/dist/services/browser-history/lifecycle/supervisor.js +334 -0
  1035. package/dist/services/browser-history/managed-chromium/cdp-connect.d.ts +110 -0
  1036. package/dist/services/browser-history/managed-chromium/cdp-connect.js +171 -0
  1037. package/dist/services/browser-history/managed-chromium/instance-a-config.d.ts +116 -0
  1038. package/dist/services/browser-history/managed-chromium/instance-a-config.js +164 -0
  1039. package/dist/services/browser-history/managed-chromium/instance-a-launcher.d.ts +82 -0
  1040. package/dist/services/browser-history/managed-chromium/instance-a-launcher.js +200 -0
  1041. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.d.ts +69 -0
  1042. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.js +334 -0
  1043. package/dist/services/browser-history/managed-chromium/reauth-detector.d.ts +60 -0
  1044. package/dist/services/browser-history/managed-chromium/reauth-detector.js +179 -0
  1045. package/dist/services/browser-history/managed-chromium/sandbox-install.d.ts +69 -0
  1046. package/dist/services/browser-history/managed-chromium/sandbox-install.js +123 -0
  1047. package/dist/services/browser-history/managed-chromium/sandbox-launcher.d.ts +117 -0
  1048. package/dist/services/browser-history/managed-chromium/sandbox-launcher.js +244 -0
  1049. package/dist/services/browser-history/managed-chromium/setup-bootstrap.d.ts +149 -0
  1050. package/dist/services/browser-history/managed-chromium/setup-bootstrap.js +404 -0
  1051. package/dist/services/browser-history/managed-chromium/site-bootstrap.d.ts +133 -0
  1052. package/dist/services/browser-history/managed-chromium/site-bootstrap.js +360 -0
  1053. package/dist/services/browser-history/managed-chromium/supervisor-config.d.ts +75 -0
  1054. package/dist/services/browser-history/managed-chromium/supervisor-config.js +146 -0
  1055. package/dist/services/browser-history/managed-chromium/types.d.ts +199 -0
  1056. package/dist/services/browser-history/managed-chromium/types.js +116 -0
  1057. package/dist/services/browser-history/pipeline/amazon-extractor.d.ts +11 -0
  1058. package/dist/services/browser-history/pipeline/amazon-extractor.js +33 -0
  1059. package/dist/services/browser-history/pipeline/classifier.d.ts +7 -0
  1060. package/dist/services/browser-history/pipeline/classifier.js +208 -0
  1061. package/dist/services/browser-history/pipeline/cluster-extractor.d.ts +76 -0
  1062. package/dist/services/browser-history/pipeline/cluster-extractor.js +271 -0
  1063. package/dist/services/browser-history/pipeline/interests-block.d.ts +99 -0
  1064. package/dist/services/browser-history/pipeline/interests-block.js +333 -0
  1065. package/dist/services/browser-history/pipeline/meaningful-filter.d.ts +47 -0
  1066. package/dist/services/browser-history/pipeline/meaningful-filter.js +228 -0
  1067. package/dist/services/browser-history/pipeline/offer-rate-limit.d.ts +75 -0
  1068. package/dist/services/browser-history/pipeline/offer-rate-limit.js +188 -0
  1069. package/dist/services/browser-history/pipeline/offer-triggers.d.ts +150 -0
  1070. package/dist/services/browser-history/pipeline/offer-triggers.js +164 -0
  1071. package/dist/services/browser-history/pipeline/pre-morning-digest.d.ts +118 -0
  1072. package/dist/services/browser-history/pipeline/pre-morning-digest.js +399 -0
  1073. package/dist/services/browser-history/pipeline/project-matcher.d.ts +26 -0
  1074. package/dist/services/browser-history/pipeline/project-matcher.js +314 -0
  1075. package/dist/services/browser-history/pipeline/redactor.d.ts +15 -0
  1076. package/dist/services/browser-history/pipeline/redactor.js +119 -0
  1077. package/dist/services/browser-history/pipeline/reload-detector.d.ts +6 -0
  1078. package/dist/services/browser-history/pipeline/reload-detector.js +16 -0
  1079. package/dist/services/browser-history/pipeline/sensitive-hosts.d.ts +2 -0
  1080. package/dist/services/browser-history/pipeline/sensitive-hosts.js +173 -0
  1081. package/dist/services/browser-history/pipeline/summarizer.d.ts +52 -0
  1082. package/dist/services/browser-history/pipeline/summarizer.js +97 -0
  1083. package/dist/services/browser-history/pipeline/weekly-interests-summary.d.ts +139 -0
  1084. package/dist/services/browser-history/pipeline/weekly-interests-summary.js +227 -0
  1085. package/dist/services/browser-history/readers/chromium-reader.d.ts +30 -0
  1086. package/dist/services/browser-history/readers/chromium-reader.js +139 -0
  1087. package/dist/services/browser-history/readers/snapshot.d.ts +19 -0
  1088. package/dist/services/browser-history/readers/snapshot.js +67 -0
  1089. package/dist/services/browser-history/refresh-interests-reflection.d.ts +125 -0
  1090. package/dist/services/browser-history/refresh-interests-reflection.js +424 -0
  1091. package/dist/services/browser-history/types.d.ts +60 -0
  1092. package/dist/services/browser-history/types.js +1 -0
  1093. package/dist/services/browser-task/browser-task-allowlist.d.ts +107 -0
  1094. package/dist/services/browser-task/browser-task-allowlist.js +247 -0
  1095. package/dist/services/browser-task/browser-task-deadline-scanner.d.ts +76 -0
  1096. package/dist/services/browser-task/browser-task-deadline-scanner.js +68 -0
  1097. package/dist/services/browser-task/browser-task-driver.d.ts +188 -0
  1098. package/dist/services/browser-task/browser-task-driver.js +714 -0
  1099. package/dist/services/browser-task/browser-task-runner.d.ts +166 -0
  1100. package/dist/services/browser-task/browser-task-runner.js +781 -0
  1101. package/dist/services/browser-task/browser-task-slots.d.ts +212 -0
  1102. package/dist/services/browser-task/browser-task-slots.js +404 -0
  1103. package/dist/services/browser-task/browser-task-transition-events.d.ts +76 -0
  1104. package/dist/services/browser-task/browser-task-transition-events.js +80 -0
  1105. package/dist/services/calendar/outlook/graph-calendar-client.d.ts +0 -1
  1106. package/dist/services/calendar/outlook/graph-calendar-client.js +0 -1
  1107. package/dist/services/calendar.d.ts +0 -1
  1108. package/dist/services/calendar.js +21 -16
  1109. package/dist/services/delegated-backend-invoker.d.ts +0 -1
  1110. package/dist/services/delegated-backend-invoker.js +0 -1
  1111. package/dist/services/delegated-invoker-audit.d.ts +0 -1
  1112. package/dist/services/delegated-invoker-audit.js +3 -4
  1113. package/dist/services/delegated-invoker-cache-hits.d.ts +0 -1
  1114. package/dist/services/delegated-invoker-cache-hits.js +0 -1
  1115. package/dist/services/delegated-invoker-janitors.d.ts +0 -1
  1116. package/dist/services/delegated-invoker-janitors.js +0 -1
  1117. package/dist/services/delegated-invoker-utils.d.ts +0 -1
  1118. package/dist/services/delegated-invoker-utils.js +0 -1
  1119. package/dist/services/delegated-proxy-config.d.ts +0 -1
  1120. package/dist/services/delegated-proxy-config.js +0 -1
  1121. package/dist/services/delegated-task-result-cache.d.ts +0 -1
  1122. package/dist/services/delegated-task-result-cache.js +0 -0
  1123. package/dist/services/delegated-task-runtime.d.ts +0 -1
  1124. package/dist/services/delegated-task-runtime.js +0 -1
  1125. package/dist/services/delegated-task-session-pool.d.ts +0 -1
  1126. package/dist/services/delegated-task-session-pool.js +0 -1
  1127. package/dist/services/delegated-tool-runtime.d.ts +0 -1
  1128. package/dist/services/delegated-tool-runtime.js +0 -1
  1129. package/dist/services/fts5.d.ts +0 -1
  1130. package/dist/services/fts5.js +0 -1
  1131. package/dist/services/git-account-registry.d.ts +0 -1
  1132. package/dist/services/git-account-registry.js +0 -1
  1133. package/dist/services/github.d.ts +9 -40
  1134. package/dist/services/github.js +9 -107
  1135. package/dist/services/gmail-classifier.d.ts +0 -1
  1136. package/dist/services/gmail-classifier.js +0 -1
  1137. package/dist/services/gmail.d.ts +0 -1
  1138. package/dist/services/gmail.js +31 -52
  1139. package/dist/services/google-auth.d.ts +0 -1
  1140. package/dist/services/google-auth.js +0 -1
  1141. package/dist/services/integrations/extract-write-item-id.d.ts +0 -1
  1142. package/dist/services/integrations/extract-write-item-id.js +6 -1
  1143. package/dist/services/integrations/reconcile.d.ts +0 -1
  1144. package/dist/services/integrations/reconcile.js +0 -1
  1145. package/dist/services/integrations/snapshot-partitions.d.ts +0 -1
  1146. package/dist/services/integrations/snapshot-partitions.js +8 -1
  1147. package/dist/services/journal/render.d.ts +0 -1
  1148. package/dist/services/journal/render.js +0 -1
  1149. package/dist/services/journal/writer.d.ts +0 -1
  1150. package/dist/services/journal/writer.js +0 -1
  1151. package/dist/services/mail/account-registry.d.ts +0 -1
  1152. package/dist/services/mail/account-registry.js +7 -3
  1153. package/dist/services/mail/gmail/auth-failure-classifier.d.ts +0 -1
  1154. package/dist/services/mail/gmail/auth-failure-classifier.js +0 -1
  1155. package/dist/services/mail/gmail/gmail-provider.d.ts +0 -1
  1156. package/dist/services/mail/gmail/gmail-provider.js +0 -1
  1157. package/dist/services/mail/gmail/legacy-row.d.ts +0 -1
  1158. package/dist/services/mail/gmail/legacy-row.js +0 -1
  1159. package/dist/services/mail/gmail/poll-cursor.d.ts +0 -1
  1160. package/dist/services/mail/gmail/poll-cursor.js +0 -1
  1161. package/dist/services/mail/html-to-plaintext.d.ts +0 -1
  1162. package/dist/services/mail/html-to-plaintext.js +0 -1
  1163. package/dist/services/mail/imap/app-password.d.ts +0 -1
  1164. package/dist/services/mail/imap/app-password.js +0 -1
  1165. package/dist/services/mail/imap/auth-failure-classifier.d.ts +0 -1
  1166. package/dist/services/mail/imap/auth-failure-classifier.js +0 -1
  1167. package/dist/services/mail/imap/capabilities.d.ts +0 -1
  1168. package/dist/services/mail/imap/capabilities.js +0 -1
  1169. package/dist/services/mail/imap/client.d.ts +0 -1
  1170. package/dist/services/mail/imap/client.js +0 -1
  1171. package/dist/services/mail/imap/cursor.d.ts +0 -1
  1172. package/dist/services/mail/imap/cursor.js +0 -1
  1173. package/dist/services/mail/imap/folder-resolver.d.ts +0 -1
  1174. package/dist/services/mail/imap/folder-resolver.js +0 -1
  1175. package/dist/services/mail/imap/icloud-provider.d.ts +0 -1
  1176. package/dist/services/mail/imap/icloud-provider.js +0 -1
  1177. package/dist/services/mail/imap/imap-provider-base.d.ts +0 -1
  1178. package/dist/services/mail/imap/imap-provider-base.js +12 -7
  1179. package/dist/services/mail/imap/query-translator.d.ts +0 -1
  1180. package/dist/services/mail/imap/query-translator.js +0 -1
  1181. package/dist/services/mail/imap/reconcile-planner.d.ts +0 -1
  1182. package/dist/services/mail/imap/reconcile-planner.js +0 -1
  1183. package/dist/services/mail/imap/reply-mime.d.ts +0 -1
  1184. package/dist/services/mail/imap/reply-mime.js +0 -1
  1185. package/dist/services/mail/imap/yahoo-provider.d.ts +0 -1
  1186. package/dist/services/mail/imap/yahoo-provider.js +0 -1
  1187. package/dist/services/mail/mail-search.d.ts +0 -1
  1188. package/dist/services/mail/mail-search.js +0 -1
  1189. package/dist/services/mail/outlook/auth-failure-classifier.d.ts +0 -1
  1190. package/dist/services/mail/outlook/auth-failure-classifier.js +0 -1
  1191. package/dist/services/mail/outlook/client-config.d.ts +0 -1
  1192. package/dist/services/mail/outlook/client-config.js +0 -1
  1193. package/dist/services/mail/outlook/delta-cursor.d.ts +0 -1
  1194. package/dist/services/mail/outlook/delta-cursor.js +0 -1
  1195. package/dist/services/mail/outlook/graph-client.d.ts +0 -1
  1196. package/dist/services/mail/outlook/graph-client.js +0 -1
  1197. package/dist/services/mail/outlook/msal-app-factory.d.ts +0 -1
  1198. package/dist/services/mail/outlook/msal-app-factory.js +0 -1
  1199. package/dist/services/mail/outlook/msal-cache-plugin.d.ts +0 -1
  1200. package/dist/services/mail/outlook/msal-cache-plugin.js +0 -1
  1201. package/dist/services/mail/outlook/oauth-device-code.d.ts +0 -1
  1202. package/dist/services/mail/outlook/oauth-device-code.js +0 -1
  1203. package/dist/services/mail/outlook/oauth-loopback.d.ts +0 -1
  1204. package/dist/services/mail/outlook/oauth-loopback.js +0 -1
  1205. package/dist/services/mail/outlook/outlook-provider.d.ts +0 -1
  1206. package/dist/services/mail/outlook/outlook-provider.js +0 -1
  1207. package/dist/services/mail/outlook/query-translator.d.ts +0 -1
  1208. package/dist/services/mail/outlook/query-translator.js +0 -1
  1209. package/dist/services/mail/provider.d.ts +0 -1
  1210. package/dist/services/mail/provider.js +0 -1
  1211. package/dist/services/mail/query-utils.d.ts +0 -1
  1212. package/dist/services/mail/query-utils.js +0 -1
  1213. package/dist/services/mail-classifier.d.ts +0 -1
  1214. package/dist/services/mail-classifier.js +0 -1
  1215. package/dist/services/mail-ingestion.d.ts +0 -1
  1216. package/dist/services/mail-ingestion.js +0 -1
  1217. package/dist/services/mcp/auto-probe.d.ts +0 -1
  1218. package/dist/services/mcp/auto-probe.js +0 -1
  1219. package/dist/services/mcp/generators/claude.d.ts +0 -1
  1220. package/dist/services/mcp/generators/claude.js +0 -1
  1221. package/dist/services/mcp/generators/codex.d.ts +0 -1
  1222. package/dist/services/mcp/generators/codex.js +0 -1
  1223. package/dist/services/mcp/generators/gemini.d.ts +0 -1
  1224. package/dist/services/mcp/generators/gemini.js +0 -1
  1225. package/dist/services/mcp/generators/index.d.ts +0 -1
  1226. package/dist/services/mcp/generators/index.js +0 -1
  1227. package/dist/services/mcp/generators/types.d.ts +0 -1
  1228. package/dist/services/mcp/generators/types.js +0 -1
  1229. package/dist/services/mcp/probe.d.ts +0 -1
  1230. package/dist/services/mcp/probe.js +30 -2
  1231. package/dist/services/mcp/registry.d.ts +0 -1
  1232. package/dist/services/mcp/registry.js +0 -1
  1233. package/dist/services/mcp/risk.d.ts +1 -2
  1234. package/dist/services/mcp/risk.js +1 -2
  1235. package/dist/services/mcp/sdk-observations-server.d.ts +0 -1
  1236. package/dist/services/mcp/sdk-observations-server.js +0 -1
  1237. package/dist/services/mcp/session-materializer.d.ts +2 -3
  1238. package/dist/services/mcp/session-materializer.js +2 -3
  1239. package/dist/services/mcp/tool-audit.d.ts +0 -1
  1240. package/dist/services/mcp/tool-audit.js +0 -1
  1241. package/dist/services/mcp/types.d.ts +0 -1
  1242. package/dist/services/mcp/types.js +0 -1
  1243. package/dist/services/notion.d.ts +1 -4
  1244. package/dist/services/notion.js +1 -4
  1245. package/dist/services/observations-batch.d.ts +8 -10
  1246. package/dist/services/observations-batch.js +8 -10
  1247. package/dist/services/obsidian.d.ts +0 -1
  1248. package/dist/services/obsidian.js +0 -1
  1249. package/dist/services/service-registry.d.ts +0 -3
  1250. package/dist/services/service-registry.js +0 -2
  1251. package/dist/services/voice/transcriber-impl.d.ts +0 -1
  1252. package/dist/services/voice/transcriber-impl.js +21 -20
  1253. package/dist/services/voice/transcriber.d.ts +2 -5
  1254. package/dist/services/voice/transcriber.js +16 -14
  1255. package/dist/settings/runtime-settings.d.ts +50 -3
  1256. package/dist/settings/runtime-settings.js +136 -5
  1257. package/dist/settings/settings-store.d.ts +0 -1
  1258. package/dist/settings/settings-store.js +44 -2
  1259. package/native/win-appcontainer/README.md +66 -0
  1260. package/native/win-appcontainer/binding.gyp +33 -0
  1261. package/native/win-appcontainer/loader.js +29 -0
  1262. package/native/win-appcontainer/package.json +18 -0
  1263. package/native/win-appcontainer/src/win_appcontainer.cc +67 -0
  1264. package/package.json +7 -3
  1265. package/dist/adapters/composite-dashboard-stream.d.ts.map +0 -1
  1266. package/dist/adapters/composite-dashboard-stream.js.map +0 -1
  1267. package/dist/adapters/dashboard-adapter.d.ts.map +0 -1
  1268. package/dist/adapters/dashboard-adapter.js.map +0 -1
  1269. package/dist/adapters/discord.d.ts.map +0 -1
  1270. package/dist/adapters/discord.js.map +0 -1
  1271. package/dist/adapters/docs-qa-adapter.d.ts.map +0 -1
  1272. package/dist/adapters/docs-qa-adapter.js.map +0 -1
  1273. package/dist/adapters/message-hub.d.ts.map +0 -1
  1274. package/dist/adapters/message-hub.js.map +0 -1
  1275. package/dist/adapters/notification-manager.d.ts.map +0 -1
  1276. package/dist/adapters/notification-manager.js.map +0 -1
  1277. package/dist/adapters/outbound-text.d.ts.map +0 -1
  1278. package/dist/adapters/outbound-text.js.map +0 -1
  1279. package/dist/adapters/primary-platform-resolver.d.ts.map +0 -1
  1280. package/dist/adapters/primary-platform-resolver.js.map +0 -1
  1281. package/dist/adapters/slack-adapter.d.ts.map +0 -1
  1282. package/dist/adapters/slack-adapter.js.map +0 -1
  1283. package/dist/adapters/telegram-adapter.d.ts.map +0 -1
  1284. package/dist/adapters/telegram-adapter.js.map +0 -1
  1285. package/dist/adapters/types.d.ts.map +0 -1
  1286. package/dist/adapters/types.js.map +0 -1
  1287. package/dist/adapters/whatsapp-adapter.d.ts.map +0 -1
  1288. package/dist/adapters/whatsapp-adapter.js.map +0 -1
  1289. package/dist/api/chat-binding-query.d.ts.map +0 -1
  1290. package/dist/api/chat-binding-query.js.map +0 -1
  1291. package/dist/api/chat-session-resume.d.ts.map +0 -1
  1292. package/dist/api/chat-session-resume.js.map +0 -1
  1293. package/dist/api/directory-picker.d.ts.map +0 -1
  1294. package/dist/api/directory-picker.js.map +0 -1
  1295. package/dist/api/env-writer.d.ts.map +0 -1
  1296. package/dist/api/env-writer.js.map +0 -1
  1297. package/dist/api/helpers/agent-errors.d.ts.map +0 -1
  1298. package/dist/api/helpers/agent-errors.js.map +0 -1
  1299. package/dist/api/integration-route-gate.d.ts.map +0 -1
  1300. package/dist/api/integration-route-gate.js.map +0 -1
  1301. package/dist/api/json-body.d.ts.map +0 -1
  1302. package/dist/api/json-body.js.map +0 -1
  1303. package/dist/api/routes/activity-sources.d.ts.map +0 -1
  1304. package/dist/api/routes/activity-sources.js.map +0 -1
  1305. package/dist/api/routes/agent-schedule-plan-match.d.ts.map +0 -1
  1306. package/dist/api/routes/agent-schedule-plan-match.js.map +0 -1
  1307. package/dist/api/routes/agent-schedule.d.ts.map +0 -1
  1308. package/dist/api/routes/agent-schedule.js.map +0 -1
  1309. package/dist/api/routes/agent.d.ts.map +0 -1
  1310. package/dist/api/routes/agent.js.map +0 -1
  1311. package/dist/api/routes/apple-calendar.d.ts.map +0 -1
  1312. package/dist/api/routes/apple-calendar.js.map +0 -1
  1313. package/dist/api/routes/attachments.d.ts.map +0 -1
  1314. package/dist/api/routes/attachments.js.map +0 -1
  1315. package/dist/api/routes/backends.d.ts.map +0 -1
  1316. package/dist/api/routes/backends.js.map +0 -1
  1317. package/dist/api/routes/books.d.ts.map +0 -1
  1318. package/dist/api/routes/books.js.map +0 -1
  1319. package/dist/api/routes/calendar.d.ts.map +0 -1
  1320. package/dist/api/routes/calendar.js.map +0 -1
  1321. package/dist/api/routes/commands.d.ts.map +0 -1
  1322. package/dist/api/routes/commands.js.map +0 -1
  1323. package/dist/api/routes/context/index.d.ts.map +0 -1
  1324. package/dist/api/routes/context/index.js.map +0 -1
  1325. package/dist/api/routes/context/locks.d.ts.map +0 -1
  1326. package/dist/api/routes/context/locks.js.map +0 -1
  1327. package/dist/api/routes/context/path-resolve.d.ts.map +0 -1
  1328. package/dist/api/routes/context/path-resolve.js.map +0 -1
  1329. package/dist/api/routes/context/permissions.d.ts.map +0 -1
  1330. package/dist/api/routes/context/permissions.js.map +0 -1
  1331. package/dist/api/routes/context/read.d.ts.map +0 -1
  1332. package/dist/api/routes/context/read.js.map +0 -1
  1333. package/dist/api/routes/context/repair.d.ts.map +0 -1
  1334. package/dist/api/routes/context/repair.js.map +0 -1
  1335. package/dist/api/routes/context/snapshots.d.ts.map +0 -1
  1336. package/dist/api/routes/context/snapshots.js.map +0 -1
  1337. package/dist/api/routes/context/write.d.ts.map +0 -1
  1338. package/dist/api/routes/context/write.js.map +0 -1
  1339. package/dist/api/routes/context.d.ts +0 -16
  1340. package/dist/api/routes/context.d.ts.map +0 -1
  1341. package/dist/api/routes/context.js +0 -1645
  1342. package/dist/api/routes/context.js.map +0 -1
  1343. package/dist/api/routes/dashboard/config.d.ts.map +0 -1
  1344. package/dist/api/routes/dashboard/config.js.map +0 -1
  1345. package/dist/api/routes/dashboard/conversations.d.ts.map +0 -1
  1346. package/dist/api/routes/dashboard/conversations.js.map +0 -1
  1347. package/dist/api/routes/dashboard/cost-approvals.d.ts.map +0 -1
  1348. package/dist/api/routes/dashboard/cost-approvals.js.map +0 -1
  1349. package/dist/api/routes/dashboard/index.d.ts.map +0 -1
  1350. package/dist/api/routes/dashboard/index.js.map +0 -1
  1351. package/dist/api/routes/dashboard/messaging.d.ts.map +0 -1
  1352. package/dist/api/routes/dashboard/messaging.js.map +0 -1
  1353. package/dist/api/routes/dashboard/notifications.d.ts.map +0 -1
  1354. package/dist/api/routes/dashboard/notifications.js.map +0 -1
  1355. package/dist/api/routes/dashboard/oauth-google.d.ts.map +0 -1
  1356. package/dist/api/routes/dashboard/oauth-google.js.map +0 -1
  1357. package/dist/api/routes/dashboard/schedule-readonly.d.ts.map +0 -1
  1358. package/dist/api/routes/dashboard/schedule-readonly.js.map +0 -1
  1359. package/dist/api/routes/dashboard/secrets.d.ts.map +0 -1
  1360. package/dist/api/routes/dashboard/secrets.js.map +0 -1
  1361. package/dist/api/routes/dashboard/snapshots.d.ts.map +0 -1
  1362. package/dist/api/routes/dashboard/snapshots.js.map +0 -1
  1363. package/dist/api/routes/dashboard.d.ts +0 -29
  1364. package/dist/api/routes/dashboard.d.ts.map +0 -1
  1365. package/dist/api/routes/dashboard.js +0 -2168
  1366. package/dist/api/routes/dashboard.js.map +0 -1
  1367. package/dist/api/routes/delegated-sync.d.ts.map +0 -1
  1368. package/dist/api/routes/delegated-sync.js.map +0 -1
  1369. package/dist/api/routes/delegated.d.ts.map +0 -1
  1370. package/dist/api/routes/delegated.js.map +0 -1
  1371. package/dist/api/routes/docs.d.ts.map +0 -1
  1372. package/dist/api/routes/docs.js.map +0 -1
  1373. package/dist/api/routes/entities.d.ts.map +0 -1
  1374. package/dist/api/routes/entities.js.map +0 -1
  1375. package/dist/api/routes/fs.d.ts.map +0 -1
  1376. package/dist/api/routes/fs.js.map +0 -1
  1377. package/dist/api/routes/fs.logic.d.ts.map +0 -1
  1378. package/dist/api/routes/fs.logic.js.map +0 -1
  1379. package/dist/api/routes/git-accounts.d.ts.map +0 -1
  1380. package/dist/api/routes/git-accounts.js.map +0 -1
  1381. package/dist/api/routes/git-templates.d.ts.map +0 -1
  1382. package/dist/api/routes/git-templates.js.map +0 -1
  1383. package/dist/api/routes/git.d.ts.map +0 -1
  1384. package/dist/api/routes/git.js.map +0 -1
  1385. package/dist/api/routes/github.d.ts.map +0 -1
  1386. package/dist/api/routes/github.js.map +0 -1
  1387. package/dist/api/routes/health.d.ts.map +0 -1
  1388. package/dist/api/routes/health.js.map +0 -1
  1389. package/dist/api/routes/integrations/crud-patch.d.ts.map +0 -1
  1390. package/dist/api/routes/integrations/crud-patch.js.map +0 -1
  1391. package/dist/api/routes/integrations/crud.d.ts.map +0 -1
  1392. package/dist/api/routes/integrations/crud.js.map +0 -1
  1393. package/dist/api/routes/integrations/exec.d.ts.map +0 -1
  1394. package/dist/api/routes/integrations/exec.js.map +0 -1
  1395. package/dist/api/routes/integrations/index.d.ts.map +0 -1
  1396. package/dist/api/routes/integrations/index.js.map +0 -1
  1397. package/dist/api/routes/integrations/integrations/crud.d.ts +0 -16
  1398. package/dist/api/routes/integrations/integrations/crud.d.ts.map +0 -1
  1399. package/dist/api/routes/integrations/integrations/crud.js +0 -158
  1400. package/dist/api/routes/integrations/integrations/crud.js.map +0 -1
  1401. package/dist/api/routes/integrations/integrations/index.d.ts +0 -55
  1402. package/dist/api/routes/integrations/integrations/index.d.ts.map +0 -1
  1403. package/dist/api/routes/integrations/integrations/index.js +0 -65
  1404. package/dist/api/routes/integrations/integrations/index.js.map +0 -1
  1405. package/dist/api/routes/integrations/integrations/invoke.d.ts +0 -38
  1406. package/dist/api/routes/integrations/integrations/invoke.d.ts.map +0 -1
  1407. package/dist/api/routes/integrations/integrations/invoke.js +0 -320
  1408. package/dist/api/routes/integrations/integrations/invoke.js.map +0 -1
  1409. package/dist/api/routes/integrations/integrations/probe.d.ts +0 -21
  1410. package/dist/api/routes/integrations/integrations/probe.d.ts.map +0 -1
  1411. package/dist/api/routes/integrations/integrations/probe.js +0 -247
  1412. package/dist/api/routes/integrations/integrations/probe.js.map +0 -1
  1413. package/dist/api/routes/integrations/invoke.d.ts +0 -38
  1414. package/dist/api/routes/integrations/invoke.d.ts.map +0 -1
  1415. package/dist/api/routes/integrations/invoke.js +0 -320
  1416. package/dist/api/routes/integrations/invoke.js.map +0 -1
  1417. package/dist/api/routes/integrations/probe.d.ts.map +0 -1
  1418. package/dist/api/routes/integrations/probe.js.map +0 -1
  1419. package/dist/api/routes/integrations-reconcile.d.ts.map +0 -1
  1420. package/dist/api/routes/integrations-reconcile.js.map +0 -1
  1421. package/dist/api/routes/integrations.d.ts +0 -48
  1422. package/dist/api/routes/integrations.d.ts.map +0 -1
  1423. package/dist/api/routes/integrations.js +0 -1624
  1424. package/dist/api/routes/integrations.js.map +0 -1
  1425. package/dist/api/routes/knowledge.d.ts.map +0 -1
  1426. package/dist/api/routes/knowledge.js.map +0 -1
  1427. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts +0 -4
  1428. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts.map +0 -1
  1429. package/dist/api/routes/mail/_pa_wip_mail/app-password.js +0 -192
  1430. package/dist/api/routes/mail/_pa_wip_mail/app-password.js.map +0 -1
  1431. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts +0 -55
  1432. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts.map +0 -1
  1433. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js +0 -91
  1434. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js.map +0 -1
  1435. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts +0 -36
  1436. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts.map +0 -1
  1437. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js +0 -2
  1438. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js.map +0 -1
  1439. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts +0 -45
  1440. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts.map +0 -1
  1441. package/dist/api/routes/mail/_pa_wip_mail/gating.js +0 -98
  1442. package/dist/api/routes/mail/_pa_wip_mail/gating.js.map +0 -1
  1443. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts +0 -4
  1444. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts.map +0 -1
  1445. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js +0 -289
  1446. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js.map +0 -1
  1447. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts +0 -4
  1448. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts.map +0 -1
  1449. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js +0 -192
  1450. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js.map +0 -1
  1451. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts +0 -55
  1452. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts.map +0 -1
  1453. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js +0 -91
  1454. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js.map +0 -1
  1455. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts +0 -36
  1456. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts.map +0 -1
  1457. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js +0 -2
  1458. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js.map +0 -1
  1459. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts +0 -5
  1460. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts.map +0 -1
  1461. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js +0 -139
  1462. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js.map +0 -1
  1463. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts +0 -45
  1464. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts.map +0 -1
  1465. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js +0 -98
  1466. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js.map +0 -1
  1467. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts +0 -18
  1468. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts.map +0 -1
  1469. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js +0 -40
  1470. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js.map +0 -1
  1471. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts +0 -15
  1472. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts.map +0 -1
  1473. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js +0 -239
  1474. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js.map +0 -1
  1475. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts +0 -4
  1476. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts.map +0 -1
  1477. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js +0 -73
  1478. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js.map +0 -1
  1479. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts +0 -64
  1480. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts.map +0 -1
  1481. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js +0 -286
  1482. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js.map +0 -1
  1483. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts +0 -4
  1484. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts.map +0 -1
  1485. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js +0 -73
  1486. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js.map +0 -1
  1487. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts +0 -5
  1488. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts.map +0 -1
  1489. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js +0 -35
  1490. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js.map +0 -1
  1491. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts +0 -23
  1492. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts.map +0 -1
  1493. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js +0 -131
  1494. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js.map +0 -1
  1495. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts +0 -64
  1496. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts.map +0 -1
  1497. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js +0 -286
  1498. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js.map +0 -1
  1499. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts +0 -4
  1500. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts.map +0 -1
  1501. package/dist/api/routes/mail/_pa_wip_mail/search-health.js +0 -131
  1502. package/dist/api/routes/mail/_pa_wip_mail/search-health.js.map +0 -1
  1503. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts +0 -23
  1504. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts.map +0 -1
  1505. package/dist/api/routes/mail/_pa_wip_mail/validators.js +0 -131
  1506. package/dist/api/routes/mail/_pa_wip_mail/validators.js.map +0 -1
  1507. package/dist/api/routes/mail/accounts.d.ts.map +0 -1
  1508. package/dist/api/routes/mail/accounts.js.map +0 -1
  1509. package/dist/api/routes/mail/app-password.d.ts.map +0 -1
  1510. package/dist/api/routes/mail/app-password.js.map +0 -1
  1511. package/dist/api/routes/mail/body-helpers.d.ts.map +0 -1
  1512. package/dist/api/routes/mail/body-helpers.js.map +0 -1
  1513. package/dist/api/routes/mail/dependencies.d.ts.map +0 -1
  1514. package/dist/api/routes/mail/dependencies.js.map +0 -1
  1515. package/dist/api/routes/mail/drafts.d.ts.map +0 -1
  1516. package/dist/api/routes/mail/drafts.js.map +0 -1
  1517. package/dist/api/routes/mail/gating.d.ts.map +0 -1
  1518. package/dist/api/routes/mail/gating.js.map +0 -1
  1519. package/dist/api/routes/mail/index.d.ts.map +0 -1
  1520. package/dist/api/routes/mail/index.js.map +0 -1
  1521. package/dist/api/routes/mail/messages.d.ts.map +0 -1
  1522. package/dist/api/routes/mail/messages.js.map +0 -1
  1523. package/dist/api/routes/mail/outlook-config.d.ts.map +0 -1
  1524. package/dist/api/routes/mail/outlook-config.js.map +0 -1
  1525. package/dist/api/routes/mail/provider-resolver.d.ts.map +0 -1
  1526. package/dist/api/routes/mail/provider-resolver.js.map +0 -1
  1527. package/dist/api/routes/mail/providers.d.ts.map +0 -1
  1528. package/dist/api/routes/mail/providers.js.map +0 -1
  1529. package/dist/api/routes/mail/search-health.d.ts.map +0 -1
  1530. package/dist/api/routes/mail/search-health.js.map +0 -1
  1531. package/dist/api/routes/mail/tags-folders.d.ts.map +0 -1
  1532. package/dist/api/routes/mail/tags-folders.js.map +0 -1
  1533. package/dist/api/routes/mail/validators.d.ts.map +0 -1
  1534. package/dist/api/routes/mail/validators.js.map +0 -1
  1535. package/dist/api/routes/mail.d.ts +0 -39
  1536. package/dist/api/routes/mail.d.ts.map +0 -1
  1537. package/dist/api/routes/mail.js +0 -1664
  1538. package/dist/api/routes/mail.js.map +0 -1
  1539. package/dist/api/routes/managed-tasks.d.ts.map +0 -1
  1540. package/dist/api/routes/managed-tasks.js.map +0 -1
  1541. package/dist/api/routes/mcp.d.ts.map +0 -1
  1542. package/dist/api/routes/mcp.js.map +0 -1
  1543. package/dist/api/routes/metrics.d.ts.map +0 -1
  1544. package/dist/api/routes/metrics.js.map +0 -1
  1545. package/dist/api/routes/notion.d.ts.map +0 -1
  1546. package/dist/api/routes/notion.js.map +0 -1
  1547. package/dist/api/routes/observations.d.ts.map +0 -1
  1548. package/dist/api/routes/observations.js.map +0 -1
  1549. package/dist/api/routes/obsidian.d.ts.map +0 -1
  1550. package/dist/api/routes/obsidian.js.map +0 -1
  1551. package/dist/api/routes/profile-questions.d.ts.map +0 -1
  1552. package/dist/api/routes/profile-questions.js.map +0 -1
  1553. package/dist/api/routes/receipts.d.ts.map +0 -1
  1554. package/dist/api/routes/receipts.js.map +0 -1
  1555. package/dist/api/routes/recurring-schedules.d.ts.map +0 -1
  1556. package/dist/api/routes/recurring-schedules.js.map +0 -1
  1557. package/dist/api/routes/repositories.d.ts.map +0 -1
  1558. package/dist/api/routes/repositories.js.map +0 -1
  1559. package/dist/api/routes/schedule-model-resolver.d.ts.map +0 -1
  1560. package/dist/api/routes/schedule-model-resolver.js.map +0 -1
  1561. package/dist/api/routes/schedule-options.d.ts.map +0 -1
  1562. package/dist/api/routes/schedule-options.js.map +0 -1
  1563. package/dist/api/routes/schedule-validation.d.ts.map +0 -1
  1564. package/dist/api/routes/schedule-validation.js.map +0 -1
  1565. package/dist/api/routes/setup-migrate.d.ts.map +0 -1
  1566. package/dist/api/routes/setup-migrate.js.map +0 -1
  1567. package/dist/api/routes/setup.d.ts.map +0 -1
  1568. package/dist/api/routes/setup.js.map +0 -1
  1569. package/dist/api/routes/skill-curation.d.ts.map +0 -1
  1570. package/dist/api/routes/skill-curation.js.map +0 -1
  1571. package/dist/api/routes/skills.d.ts.map +0 -1
  1572. package/dist/api/routes/skills.js.map +0 -1
  1573. package/dist/api/routes/sot-bindings.d.ts.map +0 -1
  1574. package/dist/api/routes/sot-bindings.js.map +0 -1
  1575. package/dist/api/routes/sse.d.ts.map +0 -1
  1576. package/dist/api/routes/sse.js.map +0 -1
  1577. package/dist/api/routes/system.d.ts.map +0 -1
  1578. package/dist/api/routes/system.js.map +0 -1
  1579. package/dist/api/routes/task-flows.d.ts.map +0 -1
  1580. package/dist/api/routes/task-flows.js.map +0 -1
  1581. package/dist/api/routes/travel-bookings.d.ts.map +0 -1
  1582. package/dist/api/routes/travel-bookings.js.map +0 -1
  1583. package/dist/api/routes/travel-time.d.ts +0 -8
  1584. package/dist/api/routes/travel-time.d.ts.map +0 -1
  1585. package/dist/api/routes/travel-time.js +0 -127
  1586. package/dist/api/routes/travel-time.js.map +0 -1
  1587. package/dist/api/routes/triggers.d.ts.map +0 -1
  1588. package/dist/api/routes/triggers.js.map +0 -1
  1589. package/dist/api/routes/voice.d.ts.map +0 -1
  1590. package/dist/api/routes/voice.js.map +0 -1
  1591. package/dist/api/routes/wiki.d.ts.map +0 -1
  1592. package/dist/api/routes/wiki.js.map +0 -1
  1593. package/dist/api/server.d.ts.map +0 -1
  1594. package/dist/api/server.js.map +0 -1
  1595. package/dist/bootstrap/adapters.d.ts.map +0 -1
  1596. package/dist/bootstrap/adapters.js.map +0 -1
  1597. package/dist/bootstrap/api.d.ts.map +0 -1
  1598. package/dist/bootstrap/api.js.map +0 -1
  1599. package/dist/bootstrap/catchup.d.ts.map +0 -1
  1600. package/dist/bootstrap/catchup.js.map +0 -1
  1601. package/dist/bootstrap/db.d.ts.map +0 -1
  1602. package/dist/bootstrap/db.js.map +0 -1
  1603. package/dist/bootstrap/event-pipeline.d.ts.map +0 -1
  1604. package/dist/bootstrap/event-pipeline.js.map +0 -1
  1605. package/dist/bootstrap/observers.d.ts.map +0 -1
  1606. package/dist/bootstrap/observers.js.map +0 -1
  1607. package/dist/bootstrap/schedule-helpers.d.ts.map +0 -1
  1608. package/dist/bootstrap/schedule-helpers.js.map +0 -1
  1609. package/dist/bootstrap/services.d.ts.map +0 -1
  1610. package/dist/bootstrap/services.js.map +0 -1
  1611. package/dist/config.d.ts.map +0 -1
  1612. package/dist/config.js.map +0 -1
  1613. package/dist/core/abort-utils.d.ts.map +0 -1
  1614. package/dist/core/abort-utils.js.map +0 -1
  1615. package/dist/core/agent-core.d.ts.map +0 -1
  1616. package/dist/core/agent-core.js.map +0 -1
  1617. package/dist/core/alerts.d.ts.map +0 -1
  1618. package/dist/core/alerts.js.map +0 -1
  1619. package/dist/core/atomic-write.d.ts.map +0 -1
  1620. package/dist/core/atomic-write.js.map +0 -1
  1621. package/dist/core/backends/api-key-probe.d.ts.map +0 -1
  1622. package/dist/core/backends/api-key-probe.js.map +0 -1
  1623. package/dist/core/backends/auth-health-monitor.d.ts.map +0 -1
  1624. package/dist/core/backends/auth-health-monitor.js.map +0 -1
  1625. package/dist/core/backends/auth-recovery.d.ts.map +0 -1
  1626. package/dist/core/backends/auth-recovery.js.map +0 -1
  1627. package/dist/core/backends/auth-telemetry.d.ts.map +0 -1
  1628. package/dist/core/backends/auth-telemetry.js.map +0 -1
  1629. package/dist/core/backends/backend-router.d.ts.map +0 -1
  1630. package/dist/core/backends/backend-router.js.map +0 -1
  1631. package/dist/core/backends/claude-auth.d.ts.map +0 -1
  1632. package/dist/core/backends/claude-auth.js.map +0 -1
  1633. package/dist/core/backends/claude-code-core.d.ts.map +0 -1
  1634. package/dist/core/backends/claude-code-core.js.map +0 -1
  1635. package/dist/core/backends/claude-credentials-store.d.ts.map +0 -1
  1636. package/dist/core/backends/claude-credentials-store.js.map +0 -1
  1637. package/dist/core/backends/claude-delegated.d.ts.map +0 -1
  1638. package/dist/core/backends/claude-delegated.js.map +0 -1
  1639. package/dist/core/backends/claude-errors.d.ts.map +0 -1
  1640. package/dist/core/backends/claude-errors.js.map +0 -1
  1641. package/dist/core/backends/claude-probe.d.ts.map +0 -1
  1642. package/dist/core/backends/claude-probe.js.map +0 -1
  1643. package/dist/core/backends/claude-tool-collection.d.ts.map +0 -1
  1644. package/dist/core/backends/claude-tool-collection.js.map +0 -1
  1645. package/dist/core/backends/cli-utils.d.ts.map +0 -1
  1646. package/dist/core/backends/cli-utils.js.map +0 -1
  1647. package/dist/core/backends/codex-core.d.ts.map +0 -1
  1648. package/dist/core/backends/codex-core.js.map +0 -1
  1649. package/dist/core/backends/gemini-cli-core.d.ts.map +0 -1
  1650. package/dist/core/backends/gemini-cli-core.js.map +0 -1
  1651. package/dist/core/backends/idle-watchdog.d.ts.map +0 -1
  1652. package/dist/core/backends/idle-watchdog.js.map +0 -1
  1653. package/dist/core/backends/install-methods.d.ts.map +0 -1
  1654. package/dist/core/backends/install-methods.js.map +0 -1
  1655. package/dist/core/backends/model-registry.d.ts.map +0 -1
  1656. package/dist/core/backends/model-registry.js.map +0 -1
  1657. package/dist/core/backends/native-skill-discovery-probe.d.ts.map +0 -1
  1658. package/dist/core/backends/native-skill-discovery-probe.js.map +0 -1
  1659. package/dist/core/backends/opencode-basic-auth-fetch.d.ts.map +0 -1
  1660. package/dist/core/backends/opencode-basic-auth-fetch.js.map +0 -1
  1661. package/dist/core/backends/opencode-config-builder.d.ts.map +0 -1
  1662. package/dist/core/backends/opencode-config-builder.js.map +0 -1
  1663. package/dist/core/backends/opencode-core.d.ts.map +0 -1
  1664. package/dist/core/backends/opencode-core.js.map +0 -1
  1665. package/dist/core/backends/opencode-event-mapper.d.ts.map +0 -1
  1666. package/dist/core/backends/opencode-event-mapper.js.map +0 -1
  1667. package/dist/core/backends/opencode-mcp.d.ts.map +0 -1
  1668. package/dist/core/backends/opencode-mcp.js.map +0 -1
  1669. package/dist/core/backends/opencode-server-manager.d.ts.map +0 -1
  1670. package/dist/core/backends/opencode-server-manager.js.map +0 -1
  1671. package/dist/core/backends/opencode-types.d.ts.map +0 -1
  1672. package/dist/core/backends/opencode-types.js.map +0 -1
  1673. package/dist/core/backends/plan-presets.d.ts.map +0 -1
  1674. package/dist/core/backends/plan-presets.js.map +0 -1
  1675. package/dist/core/backends/price-fetcher.d.ts.map +0 -1
  1676. package/dist/core/backends/price-fetcher.js.map +0 -1
  1677. package/dist/core/backends/process-config-cascade.d.ts.map +0 -1
  1678. package/dist/core/backends/process-config-cascade.js.map +0 -1
  1679. package/dist/core/backends/prompt-utils.d.ts.map +0 -1
  1680. package/dist/core/backends/prompt-utils.js.map +0 -1
  1681. package/dist/core/backends/proxy-model-registry.d.ts.map +0 -1
  1682. package/dist/core/backends/proxy-model-registry.js.map +0 -1
  1683. package/dist/core/backends/quota-reset-hints.d.ts.map +0 -1
  1684. package/dist/core/backends/quota-reset-hints.js.map +0 -1
  1685. package/dist/core/backends/silent-api-error-detector.d.ts.map +0 -1
  1686. package/dist/core/backends/silent-api-error-detector.js.map +0 -1
  1687. package/dist/core/bang-commands/commands-close.d.ts.map +0 -1
  1688. package/dist/core/bang-commands/commands-close.js.map +0 -1
  1689. package/dist/core/bang-commands/commands-cost.d.ts.map +0 -1
  1690. package/dist/core/bang-commands/commands-cost.js.map +0 -1
  1691. package/dist/core/bang-commands/commands-help.d.ts.map +0 -1
  1692. package/dist/core/bang-commands/commands-help.js.map +0 -1
  1693. package/dist/core/bang-commands/commands-report.d.ts.map +0 -1
  1694. package/dist/core/bang-commands/commands-report.js.map +0 -1
  1695. package/dist/core/bang-commands/commands-stop-start.d.ts.map +0 -1
  1696. package/dist/core/bang-commands/commands-stop-start.js.map +0 -1
  1697. package/dist/core/bang-commands/commands-wiki.d.ts.map +0 -1
  1698. package/dist/core/bang-commands/commands-wiki.js.map +0 -1
  1699. package/dist/core/bang-commands/format-utils.d.ts.map +0 -1
  1700. package/dist/core/bang-commands/format-utils.js.map +0 -1
  1701. package/dist/core/bang-commands/index.d.ts.map +0 -1
  1702. package/dist/core/bang-commands/index.js.map +0 -1
  1703. package/dist/core/bang-commands/registry.d.ts.map +0 -1
  1704. package/dist/core/bang-commands/registry.js.map +0 -1
  1705. package/dist/core/bang-commands/user-commands.d.ts.map +0 -1
  1706. package/dist/core/bang-commands/user-commands.js.map +0 -1
  1707. package/dist/core/channel-timeline.d.ts.map +0 -1
  1708. package/dist/core/channel-timeline.js.map +0 -1
  1709. package/dist/core/character-block.d.ts.map +0 -1
  1710. package/dist/core/character-block.js.map +0 -1
  1711. package/dist/core/context/activity-sources.d.ts.map +0 -1
  1712. package/dist/core/context/activity-sources.js.map +0 -1
  1713. package/dist/core/context/activity-view-reconciler.d.ts.map +0 -1
  1714. package/dist/core/context/activity-view-reconciler.js.map +0 -1
  1715. package/dist/core/context/activity-view-runner.d.ts.map +0 -1
  1716. package/dist/core/context/activity-view-runner.js.map +0 -1
  1717. package/dist/core/context/default-schedules-reconciler.d.ts.map +0 -1
  1718. package/dist/core/context/default-schedules-reconciler.js.map +0 -1
  1719. package/dist/core/context/default-schedules-runner.d.ts.map +0 -1
  1720. package/dist/core/context/default-schedules-runner.js.map +0 -1
  1721. package/dist/core/context/domain-index-reconciler.d.ts.map +0 -1
  1722. package/dist/core/context/domain-index-reconciler.js.map +0 -1
  1723. package/dist/core/context/domain-index-runner.d.ts.map +0 -1
  1724. package/dist/core/context/domain-index-runner.js.map +0 -1
  1725. package/dist/core/context/entity-mirror.d.ts.map +0 -1
  1726. package/dist/core/context/entity-mirror.js.map +0 -1
  1727. package/dist/core/context/entity-source-rename.d.ts.map +0 -1
  1728. package/dist/core/context/entity-source-rename.js.map +0 -1
  1729. package/dist/core/context/index-reconciler.d.ts.map +0 -1
  1730. package/dist/core/context/index-reconciler.js.map +0 -1
  1731. package/dist/core/context/policy-index-reconciler.d.ts.map +0 -1
  1732. package/dist/core/context/policy-index-reconciler.js.map +0 -1
  1733. package/dist/core/context/policy-index-runner.d.ts.map +0 -1
  1734. package/dist/core/context/policy-index-runner.js.map +0 -1
  1735. package/dist/core/context/reconciler-runner.d.ts.map +0 -1
  1736. package/dist/core/context/reconciler-runner.js.map +0 -1
  1737. package/dist/core/context-builder.d.ts.map +0 -1
  1738. package/dist/core/context-builder.js.map +0 -1
  1739. package/dist/core/context-frontmatter-backfill.d.ts +0 -33
  1740. package/dist/core/context-frontmatter-backfill.d.ts.map +0 -1
  1741. package/dist/core/context-frontmatter-backfill.js +0 -111
  1742. package/dist/core/context-frontmatter-backfill.js.map +0 -1
  1743. package/dist/core/context-frontmatter.d.ts.map +0 -1
  1744. package/dist/core/context-frontmatter.js.map +0 -1
  1745. package/dist/core/context-health.d.ts.map +0 -1
  1746. package/dist/core/context-health.js.map +0 -1
  1747. package/dist/core/context-paths.d.ts.map +0 -1
  1748. package/dist/core/context-paths.js.map +0 -1
  1749. package/dist/core/context-staleness.d.ts.map +0 -1
  1750. package/dist/core/context-staleness.js.map +0 -1
  1751. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts +0 -19
  1752. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts.map +0 -1
  1753. package/dist/core/context-validation/_pa_wip_context_validation/index.js +0 -19
  1754. package/dist/core/context-validation/_pa_wip_context_validation/index.js.map +0 -1
  1755. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts +0 -94
  1756. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts.map +0 -1
  1757. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js +0 -130
  1758. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js.map +0 -1
  1759. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts +0 -60
  1760. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts.map +0 -1
  1761. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js +0 -156
  1762. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js.map +0 -1
  1763. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts +0 -41
  1764. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts.map +0 -1
  1765. package/dist/core/context-validation/_pa_wip_context_validation/section.js +0 -82
  1766. package/dist/core/context-validation/_pa_wip_context_validation/section.js.map +0 -1
  1767. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts +0 -52
  1768. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts.map +0 -1
  1769. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js +0 -110
  1770. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js.map +0 -1
  1771. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts +0 -85
  1772. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts.map +0 -1
  1773. package/dist/core/context-validation/_pa_wip_context_validation/today.js +0 -162
  1774. package/dist/core/context-validation/_pa_wip_context_validation/today.js.map +0 -1
  1775. package/dist/core/context-validation/index.d.ts.map +0 -1
  1776. package/dist/core/context-validation/index.js.map +0 -1
  1777. package/dist/core/context-validation/prepare-write.d.ts.map +0 -1
  1778. package/dist/core/context-validation/prepare-write.js.map +0 -1
  1779. package/dist/core/context-validation/routine-rulebook.d.ts.map +0 -1
  1780. package/dist/core/context-validation/routine-rulebook.js.map +0 -1
  1781. package/dist/core/context-validation/section.d.ts.map +0 -1
  1782. package/dist/core/context-validation/section.js.map +0 -1
  1783. package/dist/core/context-validation/snapshot-debounce.d.ts.map +0 -1
  1784. package/dist/core/context-validation/snapshot-debounce.js.map +0 -1
  1785. package/dist/core/context-validation/today.d.ts.map +0 -1
  1786. package/dist/core/context-validation/today.js.map +0 -1
  1787. package/dist/core/custom-routine-scheduler.d.ts.map +0 -1
  1788. package/dist/core/custom-routine-scheduler.js.map +0 -1
  1789. package/dist/core/daemon-api-cli.d.ts.map +0 -1
  1790. package/dist/core/daemon-api-cli.js.map +0 -1
  1791. package/dist/core/dashboard-session-cleanup.d.ts.map +0 -1
  1792. package/dist/core/dashboard-session-cleanup.js.map +0 -1
  1793. package/dist/core/dashboard-session-controls.d.ts.map +0 -1
  1794. package/dist/core/dashboard-session-controls.js.map +0 -1
  1795. package/dist/core/delegated-connector-health.d.ts.map +0 -1
  1796. package/dist/core/delegated-connector-health.js.map +0 -1
  1797. package/dist/core/dispatcher-date-utils.d.ts.map +0 -1
  1798. package/dist/core/dispatcher-date-utils.js.map +0 -1
  1799. package/dist/core/dispatcher-error-handling.d.ts.map +0 -1
  1800. package/dist/core/dispatcher-error-handling.js.map +0 -1
  1801. package/dist/core/dispatcher-hourly-check.d.ts.map +0 -1
  1802. package/dist/core/dispatcher-hourly-check.js.map +0 -1
  1803. package/dist/core/dispatcher-message-handler.d.ts.map +0 -1
  1804. package/dist/core/dispatcher-message-handler.js.map +0 -1
  1805. package/dist/core/dispatcher-morning-routine.d.ts.map +0 -1
  1806. package/dist/core/dispatcher-morning-routine.js.map +0 -1
  1807. package/dist/core/dispatcher-prompt.d.ts.map +0 -1
  1808. package/dist/core/dispatcher-prompt.js.map +0 -1
  1809. package/dist/core/dispatcher-repository-helpers.d.ts.map +0 -1
  1810. package/dist/core/dispatcher-repository-helpers.js.map +0 -1
  1811. package/dist/core/dispatcher-result-processor.d.ts.map +0 -1
  1812. package/dist/core/dispatcher-result-processor.js.map +0 -1
  1813. package/dist/core/dispatcher-scheduled-tasks.d.ts.map +0 -1
  1814. package/dist/core/dispatcher-scheduled-tasks.js.map +0 -1
  1815. package/dist/core/dispatcher-types.d.ts.map +0 -1
  1816. package/dist/core/dispatcher-types.js.map +0 -1
  1817. package/dist/core/dispatcher.d.ts.map +0 -1
  1818. package/dist/core/dispatcher.js.map +0 -1
  1819. package/dist/core/dm-freshness-metrics.d.ts.map +0 -1
  1820. package/dist/core/dm-freshness-metrics.js.map +0 -1
  1821. package/dist/core/docs/citation-validator.d.ts.map +0 -1
  1822. package/dist/core/docs/citation-validator.js.map +0 -1
  1823. package/dist/core/docs/extract-terms.d.ts.map +0 -1
  1824. package/dist/core/docs/extract-terms.js.map +0 -1
  1825. package/dist/core/docs/indexer.d.ts.map +0 -1
  1826. package/dist/core/docs/indexer.js.map +0 -1
  1827. package/dist/core/drift-effects.d.ts.map +0 -1
  1828. package/dist/core/drift-effects.js.map +0 -1
  1829. package/dist/core/evening-review-verify.d.ts.map +0 -1
  1830. package/dist/core/evening-review-verify.js.map +0 -1
  1831. package/dist/core/event-bus.d.ts.map +0 -1
  1832. package/dist/core/event-bus.js.map +0 -1
  1833. package/dist/core/fetch-window-prompt-loader.d.ts.map +0 -1
  1834. package/dist/core/fetch-window-prompt-loader.js.map +0 -1
  1835. package/dist/core/git-project-docs.d.ts.map +0 -1
  1836. package/dist/core/git-project-docs.js.map +0 -1
  1837. package/dist/core/health-monitor.d.ts.map +0 -1
  1838. package/dist/core/health-monitor.js.map +0 -1
  1839. package/dist/core/heartbeat.d.ts.map +0 -1
  1840. package/dist/core/heartbeat.js.map +0 -1
  1841. package/dist/core/integration-health.d.ts.map +0 -1
  1842. package/dist/core/integration-health.js.map +0 -1
  1843. package/dist/core/integration-lifecycle.d.ts.map +0 -1
  1844. package/dist/core/integration-lifecycle.js.map +0 -1
  1845. package/dist/core/integration-main-backend.d.ts.map +0 -1
  1846. package/dist/core/integration-main-backend.js.map +0 -1
  1847. package/dist/core/integration-probe.d.ts.map +0 -1
  1848. package/dist/core/integration-probe.js.map +0 -1
  1849. package/dist/core/management-md-write-lock.d.ts.map +0 -1
  1850. package/dist/core/management-md-write-lock.js.map +0 -1
  1851. package/dist/core/management-md.d.ts.map +0 -1
  1852. package/dist/core/management-md.js.map +0 -1
  1853. package/dist/core/management-registry.d.ts.map +0 -1
  1854. package/dist/core/management-registry.js.map +0 -1
  1855. package/dist/core/management-telemetry.d.ts.map +0 -1
  1856. package/dist/core/management-telemetry.js.map +0 -1
  1857. package/dist/core/message-recorder.d.ts.map +0 -1
  1858. package/dist/core/message-recorder.js.map +0 -1
  1859. package/dist/core/metrics.d.ts.map +0 -1
  1860. package/dist/core/metrics.js.map +0 -1
  1861. package/dist/core/migration-backup.d.ts.map +0 -1
  1862. package/dist/core/migration-backup.js.map +0 -1
  1863. package/dist/core/morning/agent-journal-appender.d.ts.map +0 -1
  1864. package/dist/core/morning/agent-journal-appender.js.map +0 -1
  1865. package/dist/core/morning/handoff-parser.d.ts.map +0 -1
  1866. package/dist/core/morning/handoff-parser.js.map +0 -1
  1867. package/dist/core/morning/journal-skeleton-builder.d.ts.map +0 -1
  1868. package/dist/core/morning/journal-skeleton-builder.js.map +0 -1
  1869. package/dist/core/morning/orchestrator.d.ts.map +0 -1
  1870. package/dist/core/morning/orchestrator.js.map +0 -1
  1871. package/dist/core/morning/parent-audit-emitter.d.ts.map +0 -1
  1872. package/dist/core/morning/parent-audit-emitter.js.map +0 -1
  1873. package/dist/core/morning/roadmap-skeleton-builder.d.ts.map +0 -1
  1874. package/dist/core/morning/roadmap-skeleton-builder.js.map +0 -1
  1875. package/dist/core/output-language-policy.d.ts.map +0 -1
  1876. package/dist/core/output-language-policy.js.map +0 -1
  1877. package/dist/core/overview-write-lock.d.ts.map +0 -1
  1878. package/dist/core/overview-write-lock.js.map +0 -1
  1879. package/dist/core/path-compat.d.ts.map +0 -1
  1880. package/dist/core/path-compat.js.map +0 -1
  1881. package/dist/core/path-rewrite.d.ts.map +0 -1
  1882. package/dist/core/path-rewrite.js.map +0 -1
  1883. package/dist/core/policy-files.d.ts.map +0 -1
  1884. package/dist/core/policy-files.js.map +0 -1
  1885. package/dist/core/pre-pass-freshness.d.ts.map +0 -1
  1886. package/dist/core/pre-pass-freshness.js.map +0 -1
  1887. package/dist/core/previous-week-digest.d.ts.map +0 -1
  1888. package/dist/core/previous-week-digest.js.map +0 -1
  1889. package/dist/core/profile-questions/seed.d.ts.map +0 -1
  1890. package/dist/core/profile-questions/seed.js.map +0 -1
  1891. package/dist/core/profile-questions/slot-filled.d.ts.map +0 -1
  1892. package/dist/core/profile-questions/slot-filled.js.map +0 -1
  1893. package/dist/core/prompts.d.ts.map +0 -1
  1894. package/dist/core/prompts.js.map +0 -1
  1895. package/dist/core/quiet-hours-sync.d.ts.map +0 -1
  1896. package/dist/core/quiet-hours-sync.js.map +0 -1
  1897. package/dist/core/read-sensitive-token-manager.d.ts.map +0 -1
  1898. package/dist/core/read-sensitive-token-manager.js.map +0 -1
  1899. package/dist/core/recurrence.d.ts.map +0 -1
  1900. package/dist/core/recurrence.js.map +0 -1
  1901. package/dist/core/reinstall.d.ts.map +0 -1
  1902. package/dist/core/reinstall.js.map +0 -1
  1903. package/dist/core/release-assets.d.ts.map +0 -1
  1904. package/dist/core/release-assets.js.map +0 -1
  1905. package/dist/core/repository-management-docs.d.ts.map +0 -1
  1906. package/dist/core/repository-management-docs.js.map +0 -1
  1907. package/dist/core/retention.d.ts.map +0 -1
  1908. package/dist/core/retention.js.map +0 -1
  1909. package/dist/core/review-context.d.ts.map +0 -1
  1910. package/dist/core/review-context.js.map +0 -1
  1911. package/dist/core/roadmap-horizon.d.ts.map +0 -1
  1912. package/dist/core/roadmap-horizon.js.map +0 -1
  1913. package/dist/core/roadmap-ids.d.ts.map +0 -1
  1914. package/dist/core/roadmap-ids.js.map +0 -1
  1915. package/dist/core/roadmap-maintenance.d.ts.map +0 -1
  1916. package/dist/core/roadmap-maintenance.js.map +0 -1
  1917. package/dist/core/roadmap-refresh-triggers.d.ts.map +0 -1
  1918. package/dist/core/roadmap-refresh-triggers.js.map +0 -1
  1919. package/dist/core/roadmap-truncate.d.ts.map +0 -1
  1920. package/dist/core/roadmap-truncate.js.map +0 -1
  1921. package/dist/core/roadmap-validate.d.ts.map +0 -1
  1922. package/dist/core/roadmap-validate.js.map +0 -1
  1923. package/dist/core/roadmap-write-lock.d.ts.map +0 -1
  1924. package/dist/core/roadmap-write-lock.js.map +0 -1
  1925. package/dist/core/routine-acquisition-plan.d.ts.map +0 -1
  1926. package/dist/core/routine-acquisition-plan.js.map +0 -1
  1927. package/dist/core/routine-fetch-window-retry.d.ts.map +0 -1
  1928. package/dist/core/routine-fetch-window-retry.js.map +0 -1
  1929. package/dist/core/routine-fetch-window-runner.d.ts.map +0 -1
  1930. package/dist/core/routine-fetch-window-runner.js.map +0 -1
  1931. package/dist/core/routine-windows.d.ts.map +0 -1
  1932. package/dist/core/routine-windows.js.map +0 -1
  1933. package/dist/core/schedule-insert-helper.d.ts.map +0 -1
  1934. package/dist/core/schedule-insert-helper.js.map +0 -1
  1935. package/dist/core/schedule-maintenance.d.ts.map +0 -1
  1936. package/dist/core/schedule-maintenance.js.map +0 -1
  1937. package/dist/core/scheduler.d.ts.map +0 -1
  1938. package/dist/core/scheduler.js.map +0 -1
  1939. package/dist/core/semaphore.d.ts.map +0 -1
  1940. package/dist/core/semaphore.js.map +0 -1
  1941. package/dist/core/session-gate.d.ts.map +0 -1
  1942. package/dist/core/session-gate.js.map +0 -1
  1943. package/dist/core/session-manager.d.ts.map +0 -1
  1944. package/dist/core/session-manager.js.map +0 -1
  1945. package/dist/core/signal-detector.d.ts.map +0 -1
  1946. package/dist/core/signal-detector.js.map +0 -1
  1947. package/dist/core/skeleton.d.ts.map +0 -1
  1948. package/dist/core/skeleton.js.map +0 -1
  1949. package/dist/core/skill-curation/apply-proposal.d.ts.map +0 -1
  1950. package/dist/core/skill-curation/apply-proposal.js.map +0 -1
  1951. package/dist/core/skill-curation/auto-revert.d.ts.map +0 -1
  1952. package/dist/core/skill-curation/auto-revert.js.map +0 -1
  1953. package/dist/core/skill-curation/classify-diff.d.ts.map +0 -1
  1954. package/dist/core/skill-curation/classify-diff.js.map +0 -1
  1955. package/dist/core/skill-curation/declarations.d.ts.map +0 -1
  1956. package/dist/core/skill-curation/declarations.js.map +0 -1
  1957. package/dist/core/skill-curation/knowledge-map.d.ts.map +0 -1
  1958. package/dist/core/skill-curation/knowledge-map.js.map +0 -1
  1959. package/dist/core/skill-curation/orphan-overlay.d.ts.map +0 -1
  1960. package/dist/core/skill-curation/orphan-overlay.js.map +0 -1
  1961. package/dist/core/skill-curation/overlay-store.d.ts.map +0 -1
  1962. package/dist/core/skill-curation/overlay-store.js.map +0 -1
  1963. package/dist/core/skill-curation/render/convention-notes.d.ts.map +0 -1
  1964. package/dist/core/skill-curation/render/convention-notes.js.map +0 -1
  1965. package/dist/core/skill-curation/render/cross-references.d.ts.map +0 -1
  1966. package/dist/core/skill-curation/render/cross-references.js.map +0 -1
  1967. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +0 -1
  1968. package/dist/core/skill-curation/render/frontmatter-schema.js.map +0 -1
  1969. package/dist/core/skill-curation/render/index.d.ts.map +0 -1
  1970. package/dist/core/skill-curation/render/index.js.map +0 -1
  1971. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +0 -1
  1972. package/dist/core/skill-curation/render/knowledge-layout.js.map +0 -1
  1973. package/dist/core/skill-curation/render/routing-table.d.ts.map +0 -1
  1974. package/dist/core/skill-curation/render/routing-table.js.map +0 -1
  1975. package/dist/core/skill-curation/render/search-recipes.d.ts.map +0 -1
  1976. package/dist/core/skill-curation/render/search-recipes.js.map +0 -1
  1977. package/dist/core/skill-curation/run-token.d.ts.map +0 -1
  1978. package/dist/core/skill-curation/run-token.js.map +0 -1
  1979. package/dist/core/skill-curation/signals.d.ts.map +0 -1
  1980. package/dist/core/skill-curation/signals.js.map +0 -1
  1981. package/dist/core/skill-curation/smoke-test.d.ts.map +0 -1
  1982. package/dist/core/skill-curation/smoke-test.js.map +0 -1
  1983. package/dist/core/skill-curation/splicer.d.ts.map +0 -1
  1984. package/dist/core/skill-curation/splicer.js.map +0 -1
  1985. package/dist/core/skill-curation/workdir.d.ts.map +0 -1
  1986. package/dist/core/skill-curation/workdir.js.map +0 -1
  1987. package/dist/core/skill-source-paths.d.ts.map +0 -1
  1988. package/dist/core/skill-source-paths.js.map +0 -1
  1989. package/dist/core/skills-compiler.d.ts.map +0 -1
  1990. package/dist/core/skills-compiler.js.map +0 -1
  1991. package/dist/core/skills-manifest.d.ts.map +0 -1
  1992. package/dist/core/skills-manifest.js.map +0 -1
  1993. package/dist/core/system-reset.d.ts.map +0 -1
  1994. package/dist/core/system-reset.js.map +0 -1
  1995. package/dist/core/template-store.d.ts.map +0 -1
  1996. package/dist/core/template-store.js.map +0 -1
  1997. package/dist/core/template-versions.d.ts.map +0 -1
  1998. package/dist/core/template-versions.js.map +0 -1
  1999. package/dist/core/today-agent-plan.d.ts.map +0 -1
  2000. package/dist/core/today-agent-plan.js.map +0 -1
  2001. package/dist/core/today-direct-writer.d.ts.map +0 -1
  2002. package/dist/core/today-direct-writer.js.map +0 -1
  2003. package/dist/core/today-write-lock.d.ts.map +0 -1
  2004. package/dist/core/today-write-lock.js.map +0 -1
  2005. package/dist/core/trigger-dispatch.d.ts.map +0 -1
  2006. package/dist/core/trigger-dispatch.js.map +0 -1
  2007. package/dist/core/trigger-evaluator.d.ts.map +0 -1
  2008. package/dist/core/trigger-evaluator.js.map +0 -1
  2009. package/dist/core/wiki/approval-queue.d.ts.map +0 -1
  2010. package/dist/core/wiki/approval-queue.js.map +0 -1
  2011. package/dist/core/wiki/bridge.d.ts.map +0 -1
  2012. package/dist/core/wiki/bridge.js.map +0 -1
  2013. package/dist/core/wiki/compile-lock.d.ts.map +0 -1
  2014. package/dist/core/wiki/compile-lock.js.map +0 -1
  2015. package/dist/core/wiki/compile-preview.d.ts.map +0 -1
  2016. package/dist/core/wiki/compile-preview.js.map +0 -1
  2017. package/dist/core/wiki/cost-estimate.d.ts.map +0 -1
  2018. package/dist/core/wiki/cost-estimate.js.map +0 -1
  2019. package/dist/core/wiki/dispatcher.d.ts.map +0 -1
  2020. package/dist/core/wiki/dispatcher.js.map +0 -1
  2021. package/dist/core/wiki/git-precompile.d.ts.map +0 -1
  2022. package/dist/core/wiki/git-precompile.js.map +0 -1
  2023. package/dist/core/wiki/import-migrate.d.ts.map +0 -1
  2024. package/dist/core/wiki/import-migrate.js.map +0 -1
  2025. package/dist/core/wiki/import-probe.d.ts.map +0 -1
  2026. package/dist/core/wiki/import-probe.js.map +0 -1
  2027. package/dist/core/wiki/index-cache.d.ts.map +0 -1
  2028. package/dist/core/wiki/index-cache.js.map +0 -1
  2029. package/dist/core/wiki/multi-url-dispatch.d.ts.map +0 -1
  2030. package/dist/core/wiki/multi-url-dispatch.js.map +0 -1
  2031. package/dist/core/wiki/wiki-fts.d.ts.map +0 -1
  2032. package/dist/core/wiki/wiki-fts.js.map +0 -1
  2033. package/dist/core/wiki/workspaces.d.ts.map +0 -1
  2034. package/dist/core/wiki/workspaces.js.map +0 -1
  2035. package/dist/core/wiki/write-strategy.d.ts.map +0 -1
  2036. package/dist/core/wiki/write-strategy.js.map +0 -1
  2037. package/dist/core/workdir.d.ts.map +0 -1
  2038. package/dist/core/workdir.js.map +0 -1
  2039. package/dist/db/automation-triggers.d.ts.map +0 -1
  2040. package/dist/db/automation-triggers.js.map +0 -1
  2041. package/dist/db/client.d.ts.map +0 -1
  2042. package/dist/db/client.js.map +0 -1
  2043. package/dist/db/entities-store.d.ts.map +0 -1
  2044. package/dist/db/entities-store.js.map +0 -1
  2045. package/dist/db/hourly-check-signals.d.ts.map +0 -1
  2046. package/dist/db/hourly-check-signals.js.map +0 -1
  2047. package/dist/db/integration-probe-store.d.ts.map +0 -1
  2048. package/dist/db/integration-probe-store.js.map +0 -1
  2049. package/dist/db/integrations-store.d.ts.map +0 -1
  2050. package/dist/db/integrations-store.js.map +0 -1
  2051. package/dist/db/managed-tasks-store.d.ts.map +0 -1
  2052. package/dist/db/managed-tasks-store.js.map +0 -1
  2053. package/dist/db/management-parse-failures-store.d.ts.map +0 -1
  2054. package/dist/db/management-parse-failures-store.js.map +0 -1
  2055. package/dist/db/observations.d.ts.map +0 -1
  2056. package/dist/db/observations.js.map +0 -1
  2057. package/dist/db/recurring-schedules.d.ts.map +0 -1
  2058. package/dist/db/recurring-schedules.js.map +0 -1
  2059. package/dist/db/repositories-store.d.ts.map +0 -1
  2060. package/dist/db/repositories-store.js.map +0 -1
  2061. package/dist/db/runtime-state.d.ts.map +0 -1
  2062. package/dist/db/runtime-state.js.map +0 -1
  2063. package/dist/db/schema.d.ts.map +0 -1
  2064. package/dist/db/schema.js.map +0 -1
  2065. package/dist/db/sot-bindings-store.d.ts.map +0 -1
  2066. package/dist/db/sot-bindings-store.js.map +0 -1
  2067. package/dist/db/voice-transcripts-store.d.ts.map +0 -1
  2068. package/dist/db/voice-transcripts-store.js.map +0 -1
  2069. package/dist/db/wiki-store.d.ts.map +0 -1
  2070. package/dist/db/wiki-store.js.map +0 -1
  2071. package/dist/index.d.ts.map +0 -1
  2072. package/dist/index.js.map +0 -1
  2073. package/dist/init.d.ts.map +0 -1
  2074. package/dist/init.js.map +0 -1
  2075. package/dist/log-buffer.d.ts.map +0 -1
  2076. package/dist/log-buffer.js.map +0 -1
  2077. package/dist/logging.d.ts.map +0 -1
  2078. package/dist/logging.js.map +0 -1
  2079. package/dist/management-rules.d.ts.map +0 -1
  2080. package/dist/management-rules.js.map +0 -1
  2081. package/dist/messaging/constants.d.ts.map +0 -1
  2082. package/dist/messaging/constants.js.map +0 -1
  2083. package/dist/messaging/magic-phrase.d.ts.map +0 -1
  2084. package/dist/messaging/magic-phrase.js.map +0 -1
  2085. package/dist/messaging/owner-channels.d.ts.map +0 -1
  2086. package/dist/messaging/owner-channels.js.map +0 -1
  2087. package/dist/messaging/setup-welcome-dm.d.ts.map +0 -1
  2088. package/dist/messaging/setup-welcome-dm.js.map +0 -1
  2089. package/dist/messaging/url-extract.d.ts.map +0 -1
  2090. package/dist/messaging/url-extract.js.map +0 -1
  2091. package/dist/observers/calendar-poller.d.ts.map +0 -1
  2092. package/dist/observers/calendar-poller.js.map +0 -1
  2093. package/dist/observers/context-index-reconciler-observer.d.ts.map +0 -1
  2094. package/dist/observers/context-index-reconciler-observer.js.map +0 -1
  2095. package/dist/observers/delegated-probe-observer.d.ts.map +0 -1
  2096. package/dist/observers/delegated-probe-observer.js.map +0 -1
  2097. package/dist/observers/delegated-sync-worker.d.ts.map +0 -1
  2098. package/dist/observers/delegated-sync-worker.js.map +0 -1
  2099. package/dist/observers/entity-mirror-observer.d.ts.map +0 -1
  2100. package/dist/observers/entity-mirror-observer.js.map +0 -1
  2101. package/dist/observers/git-delegated-cron.d.ts.map +0 -1
  2102. package/dist/observers/git-delegated-cron.js.map +0 -1
  2103. package/dist/observers/git-event-classifier.d.ts.map +0 -1
  2104. package/dist/observers/git-event-classifier.js.map +0 -1
  2105. package/dist/observers/git-watcher.d.ts.map +0 -1
  2106. package/dist/observers/git-watcher.js.map +0 -1
  2107. package/dist/observers/github-poller-classifier.d.ts.map +0 -1
  2108. package/dist/observers/github-poller-classifier.js.map +0 -1
  2109. package/dist/observers/github-poller.d.ts.map +0 -1
  2110. package/dist/observers/github-poller.js.map +0 -1
  2111. package/dist/observers/imminent-event-scheduler.d.ts.map +0 -1
  2112. package/dist/observers/imminent-event-scheduler.js.map +0 -1
  2113. package/dist/observers/mail-poller.d.ts.map +0 -1
  2114. package/dist/observers/mail-poller.js.map +0 -1
  2115. package/dist/observers/mail-reconciliation.d.ts.map +0 -1
  2116. package/dist/observers/mail-reconciliation.js.map +0 -1
  2117. package/dist/observers/manager.d.ts.map +0 -1
  2118. package/dist/observers/manager.js.map +0 -1
  2119. package/dist/observers/notion-poller.d.ts.map +0 -1
  2120. package/dist/observers/notion-poller.js.map +0 -1
  2121. package/dist/observers/observation-summarizer/index.d.ts.map +0 -1
  2122. package/dist/observers/observation-summarizer/index.js.map +0 -1
  2123. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +0 -1
  2124. package/dist/observers/observation-summarizer/pre-filter.js.map +0 -1
  2125. package/dist/observers/observation-summarizer/response-parser.d.ts.map +0 -1
  2126. package/dist/observers/observation-summarizer/response-parser.js.map +0 -1
  2127. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +0 -1
  2128. package/dist/observers/observation-summarizer/summarizer-client.js.map +0 -1
  2129. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +0 -1
  2130. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +0 -1
  2131. package/dist/observers/observation-summarizer/worker.d.ts.map +0 -1
  2132. package/dist/observers/observation-summarizer/worker.js.map +0 -1
  2133. package/dist/observers/obsidian-watcher.d.ts.map +0 -1
  2134. package/dist/observers/obsidian-watcher.js.map +0 -1
  2135. package/dist/observers/poll-guard.d.ts.map +0 -1
  2136. package/dist/observers/poll-guard.js.map +0 -1
  2137. package/dist/observers/primary-vault-watcher.d.ts.map +0 -1
  2138. package/dist/observers/primary-vault-watcher.js.map +0 -1
  2139. package/dist/observers/repository-management-cron.d.ts.map +0 -1
  2140. package/dist/observers/repository-management-cron.js.map +0 -1
  2141. package/dist/observers/skill-curation-walker.d.ts.map +0 -1
  2142. package/dist/observers/skill-curation-walker.js.map +0 -1
  2143. package/dist/safety/absolute-block-audit.d.ts.map +0 -1
  2144. package/dist/safety/absolute-block-audit.js.map +0 -1
  2145. package/dist/safety/agent-write-tracker.d.ts.map +0 -1
  2146. package/dist/safety/agent-write-tracker.js.map +0 -1
  2147. package/dist/safety/always-disallowed.d.ts.map +0 -1
  2148. package/dist/safety/always-disallowed.js.map +0 -1
  2149. package/dist/safety/audit.d.ts.map +0 -1
  2150. package/dist/safety/audit.js.map +0 -1
  2151. package/dist/safety/integration-write-tracker.d.ts.map +0 -1
  2152. package/dist/safety/integration-write-tracker.js.map +0 -1
  2153. package/dist/safety/risk-classifier.d.ts.map +0 -1
  2154. package/dist/safety/risk-classifier.js.map +0 -1
  2155. package/dist/safety/subprocess-block-scanner.d.ts.map +0 -1
  2156. package/dist/safety/subprocess-block-scanner.js.map +0 -1
  2157. package/dist/scheduler/hourly-check-gate.d.ts.map +0 -1
  2158. package/dist/scheduler/hourly-check-gate.js.map +0 -1
  2159. package/dist/secrets/backend-api-key-env.d.ts.map +0 -1
  2160. package/dist/secrets/backend-api-key-env.js.map +0 -1
  2161. package/dist/secrets/codex-home-materializer.d.ts.map +0 -1
  2162. package/dist/secrets/codex-home-materializer.js.map +0 -1
  2163. package/dist/secrets/encrypted-blob-store.d.ts.map +0 -1
  2164. package/dist/secrets/encrypted-blob-store.js.map +0 -1
  2165. package/dist/secrets/platform-secret-store.d.ts.map +0 -1
  2166. package/dist/secrets/platform-secret-store.js.map +0 -1
  2167. package/dist/secrets/redaction.d.ts.map +0 -1
  2168. package/dist/secrets/redaction.js.map +0 -1
  2169. package/dist/secrets/secret-broker.d.ts.map +0 -1
  2170. package/dist/secrets/secret-broker.js.map +0 -1
  2171. package/dist/secrets/secret-names.d.ts.map +0 -1
  2172. package/dist/secrets/secret-names.js.map +0 -1
  2173. package/dist/secrets/secret-store.d.ts.map +0 -1
  2174. package/dist/secrets/secret-store.js.map +0 -1
  2175. package/dist/secrets/types.d.ts.map +0 -1
  2176. package/dist/secrets/types.js.map +0 -1
  2177. package/dist/services/apple-calendar/caldav-client.d.ts.map +0 -1
  2178. package/dist/services/apple-calendar/caldav-client.js.map +0 -1
  2179. package/dist/services/apple-calendar/caldav-codec.d.ts.map +0 -1
  2180. package/dist/services/apple-calendar/caldav-codec.js.map +0 -1
  2181. package/dist/services/apple-calendar/index.d.ts.map +0 -1
  2182. package/dist/services/apple-calendar/index.js.map +0 -1
  2183. package/dist/services/apple-calendar/service.d.ts.map +0 -1
  2184. package/dist/services/apple-calendar/service.js.map +0 -1
  2185. package/dist/services/apple-calendar/types.d.ts.map +0 -1
  2186. package/dist/services/apple-calendar/types.js.map +0 -1
  2187. package/dist/services/attachments/hardlink.d.ts.map +0 -1
  2188. package/dist/services/attachments/hardlink.js.map +0 -1
  2189. package/dist/services/attachments/sanitize.d.ts.map +0 -1
  2190. package/dist/services/attachments/sanitize.js.map +0 -1
  2191. package/dist/services/attachments/store.d.ts.map +0 -1
  2192. package/dist/services/attachments/store.js.map +0 -1
  2193. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +0 -1
  2194. package/dist/services/calendar/outlook/graph-calendar-client.js.map +0 -1
  2195. package/dist/services/calendar.d.ts.map +0 -1
  2196. package/dist/services/calendar.js.map +0 -1
  2197. package/dist/services/delegated-backend-invoker.d.ts.map +0 -1
  2198. package/dist/services/delegated-backend-invoker.js.map +0 -1
  2199. package/dist/services/delegated-invoker-audit.d.ts.map +0 -1
  2200. package/dist/services/delegated-invoker-audit.js.map +0 -1
  2201. package/dist/services/delegated-invoker-cache-hits.d.ts.map +0 -1
  2202. package/dist/services/delegated-invoker-cache-hits.js.map +0 -1
  2203. package/dist/services/delegated-invoker-janitors.d.ts.map +0 -1
  2204. package/dist/services/delegated-invoker-janitors.js.map +0 -1
  2205. package/dist/services/delegated-invoker-utils.d.ts.map +0 -1
  2206. package/dist/services/delegated-invoker-utils.js.map +0 -1
  2207. package/dist/services/delegated-proxy-config.d.ts.map +0 -1
  2208. package/dist/services/delegated-proxy-config.js.map +0 -1
  2209. package/dist/services/delegated-task-result-cache.d.ts.map +0 -1
  2210. package/dist/services/delegated-task-result-cache.js.map +0 -1
  2211. package/dist/services/delegated-task-runtime.d.ts.map +0 -1
  2212. package/dist/services/delegated-task-runtime.js.map +0 -1
  2213. package/dist/services/delegated-task-session-pool.d.ts.map +0 -1
  2214. package/dist/services/delegated-task-session-pool.js.map +0 -1
  2215. package/dist/services/delegated-tool-runtime.d.ts.map +0 -1
  2216. package/dist/services/delegated-tool-runtime.js.map +0 -1
  2217. package/dist/services/fts5.d.ts.map +0 -1
  2218. package/dist/services/fts5.js.map +0 -1
  2219. package/dist/services/git-account-registry.d.ts.map +0 -1
  2220. package/dist/services/git-account-registry.js.map +0 -1
  2221. package/dist/services/github.d.ts.map +0 -1
  2222. package/dist/services/github.js.map +0 -1
  2223. package/dist/services/gmail-classifier.d.ts.map +0 -1
  2224. package/dist/services/gmail-classifier.js.map +0 -1
  2225. package/dist/services/gmail.d.ts.map +0 -1
  2226. package/dist/services/gmail.js.map +0 -1
  2227. package/dist/services/google-auth.d.ts.map +0 -1
  2228. package/dist/services/google-auth.js.map +0 -1
  2229. package/dist/services/google-maps.d.ts +0 -35
  2230. package/dist/services/google-maps.d.ts.map +0 -1
  2231. package/dist/services/google-maps.js +0 -82
  2232. package/dist/services/google-maps.js.map +0 -1
  2233. package/dist/services/integrations/extract-write-item-id.d.ts.map +0 -1
  2234. package/dist/services/integrations/extract-write-item-id.js.map +0 -1
  2235. package/dist/services/integrations/reconcile.d.ts.map +0 -1
  2236. package/dist/services/integrations/reconcile.js.map +0 -1
  2237. package/dist/services/integrations/snapshot-partitions.d.ts.map +0 -1
  2238. package/dist/services/integrations/snapshot-partitions.js.map +0 -1
  2239. package/dist/services/journal/render.d.ts.map +0 -1
  2240. package/dist/services/journal/render.js.map +0 -1
  2241. package/dist/services/journal/writer.d.ts.map +0 -1
  2242. package/dist/services/journal/writer.js.map +0 -1
  2243. package/dist/services/mail/account-registry.d.ts.map +0 -1
  2244. package/dist/services/mail/account-registry.js.map +0 -1
  2245. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +0 -1
  2246. package/dist/services/mail/gmail/auth-failure-classifier.js.map +0 -1
  2247. package/dist/services/mail/gmail/gmail-provider.d.ts.map +0 -1
  2248. package/dist/services/mail/gmail/gmail-provider.js.map +0 -1
  2249. package/dist/services/mail/gmail/legacy-row.d.ts.map +0 -1
  2250. package/dist/services/mail/gmail/legacy-row.js.map +0 -1
  2251. package/dist/services/mail/gmail/poll-cursor.d.ts.map +0 -1
  2252. package/dist/services/mail/gmail/poll-cursor.js.map +0 -1
  2253. package/dist/services/mail/html-to-plaintext.d.ts.map +0 -1
  2254. package/dist/services/mail/html-to-plaintext.js.map +0 -1
  2255. package/dist/services/mail/imap/app-password.d.ts.map +0 -1
  2256. package/dist/services/mail/imap/app-password.js.map +0 -1
  2257. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +0 -1
  2258. package/dist/services/mail/imap/auth-failure-classifier.js.map +0 -1
  2259. package/dist/services/mail/imap/capabilities.d.ts.map +0 -1
  2260. package/dist/services/mail/imap/capabilities.js.map +0 -1
  2261. package/dist/services/mail/imap/client.d.ts.map +0 -1
  2262. package/dist/services/mail/imap/client.js.map +0 -1
  2263. package/dist/services/mail/imap/cursor.d.ts.map +0 -1
  2264. package/dist/services/mail/imap/cursor.js.map +0 -1
  2265. package/dist/services/mail/imap/folder-resolver.d.ts.map +0 -1
  2266. package/dist/services/mail/imap/folder-resolver.js.map +0 -1
  2267. package/dist/services/mail/imap/icloud-provider.d.ts.map +0 -1
  2268. package/dist/services/mail/imap/icloud-provider.js.map +0 -1
  2269. package/dist/services/mail/imap/imap-provider-base.d.ts.map +0 -1
  2270. package/dist/services/mail/imap/imap-provider-base.js.map +0 -1
  2271. package/dist/services/mail/imap/query-translator.d.ts.map +0 -1
  2272. package/dist/services/mail/imap/query-translator.js.map +0 -1
  2273. package/dist/services/mail/imap/reconcile-planner.d.ts.map +0 -1
  2274. package/dist/services/mail/imap/reconcile-planner.js.map +0 -1
  2275. package/dist/services/mail/imap/reply-mime.d.ts.map +0 -1
  2276. package/dist/services/mail/imap/reply-mime.js.map +0 -1
  2277. package/dist/services/mail/imap/yahoo-provider.d.ts.map +0 -1
  2278. package/dist/services/mail/imap/yahoo-provider.js.map +0 -1
  2279. package/dist/services/mail/mail-search.d.ts.map +0 -1
  2280. package/dist/services/mail/mail-search.js.map +0 -1
  2281. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +0 -1
  2282. package/dist/services/mail/outlook/auth-failure-classifier.js.map +0 -1
  2283. package/dist/services/mail/outlook/client-config.d.ts.map +0 -1
  2284. package/dist/services/mail/outlook/client-config.js.map +0 -1
  2285. package/dist/services/mail/outlook/delta-cursor.d.ts.map +0 -1
  2286. package/dist/services/mail/outlook/delta-cursor.js.map +0 -1
  2287. package/dist/services/mail/outlook/graph-client.d.ts.map +0 -1
  2288. package/dist/services/mail/outlook/graph-client.js.map +0 -1
  2289. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +0 -1
  2290. package/dist/services/mail/outlook/msal-app-factory.js.map +0 -1
  2291. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +0 -1
  2292. package/dist/services/mail/outlook/msal-cache-plugin.js.map +0 -1
  2293. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +0 -1
  2294. package/dist/services/mail/outlook/oauth-device-code.js.map +0 -1
  2295. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +0 -1
  2296. package/dist/services/mail/outlook/oauth-loopback.js.map +0 -1
  2297. package/dist/services/mail/outlook/outlook-provider.d.ts.map +0 -1
  2298. package/dist/services/mail/outlook/outlook-provider.js.map +0 -1
  2299. package/dist/services/mail/outlook/query-translator.d.ts.map +0 -1
  2300. package/dist/services/mail/outlook/query-translator.js.map +0 -1
  2301. package/dist/services/mail/provider.d.ts.map +0 -1
  2302. package/dist/services/mail/provider.js.map +0 -1
  2303. package/dist/services/mail/query-utils.d.ts.map +0 -1
  2304. package/dist/services/mail/query-utils.js.map +0 -1
  2305. package/dist/services/mail-classifier.d.ts.map +0 -1
  2306. package/dist/services/mail-classifier.js.map +0 -1
  2307. package/dist/services/mail-ingestion.d.ts.map +0 -1
  2308. package/dist/services/mail-ingestion.js.map +0 -1
  2309. package/dist/services/mcp/auto-probe.d.ts.map +0 -1
  2310. package/dist/services/mcp/auto-probe.js.map +0 -1
  2311. package/dist/services/mcp/generators/claude.d.ts.map +0 -1
  2312. package/dist/services/mcp/generators/claude.js.map +0 -1
  2313. package/dist/services/mcp/generators/codex.d.ts.map +0 -1
  2314. package/dist/services/mcp/generators/codex.js.map +0 -1
  2315. package/dist/services/mcp/generators/gemini.d.ts.map +0 -1
  2316. package/dist/services/mcp/generators/gemini.js.map +0 -1
  2317. package/dist/services/mcp/generators/index.d.ts.map +0 -1
  2318. package/dist/services/mcp/generators/index.js.map +0 -1
  2319. package/dist/services/mcp/generators/types.d.ts.map +0 -1
  2320. package/dist/services/mcp/generators/types.js.map +0 -1
  2321. package/dist/services/mcp/probe.d.ts.map +0 -1
  2322. package/dist/services/mcp/probe.js.map +0 -1
  2323. package/dist/services/mcp/registry.d.ts.map +0 -1
  2324. package/dist/services/mcp/registry.js.map +0 -1
  2325. package/dist/services/mcp/risk.d.ts.map +0 -1
  2326. package/dist/services/mcp/risk.js.map +0 -1
  2327. package/dist/services/mcp/sdk-observations-server.d.ts.map +0 -1
  2328. package/dist/services/mcp/sdk-observations-server.js.map +0 -1
  2329. package/dist/services/mcp/session-materializer.d.ts.map +0 -1
  2330. package/dist/services/mcp/session-materializer.js.map +0 -1
  2331. package/dist/services/mcp/tool-audit.d.ts.map +0 -1
  2332. package/dist/services/mcp/tool-audit.js.map +0 -1
  2333. package/dist/services/mcp/types.d.ts.map +0 -1
  2334. package/dist/services/mcp/types.js.map +0 -1
  2335. package/dist/services/notion.d.ts.map +0 -1
  2336. package/dist/services/notion.js.map +0 -1
  2337. package/dist/services/observations-batch.d.ts.map +0 -1
  2338. package/dist/services/observations-batch.js.map +0 -1
  2339. package/dist/services/obsidian.d.ts.map +0 -1
  2340. package/dist/services/obsidian.js.map +0 -1
  2341. package/dist/services/service-registry.d.ts.map +0 -1
  2342. package/dist/services/service-registry.js.map +0 -1
  2343. package/dist/services/voice/transcriber-impl.d.ts.map +0 -1
  2344. package/dist/services/voice/transcriber-impl.js.map +0 -1
  2345. package/dist/services/voice/transcriber.d.ts.map +0 -1
  2346. package/dist/services/voice/transcriber.js.map +0 -1
  2347. package/dist/settings/runtime-settings.d.ts.map +0 -1
  2348. package/dist/settings/runtime-settings.js.map +0 -1
  2349. package/dist/settings/settings-store.d.ts.map +0 -1
  2350. package/dist/settings/settings-store.js.map +0 -1
@@ -0,0 +1,2290 @@
1
+ /**
2
+ * Authoritative registry of every agent-consumable error code. Adding a new
3
+ * code requires a registry entry; the helper logs a warning and emits a
4
+ * placeholder hint when an unregistered code is passed (so a typo doesn't
5
+ * silently ship a useless error).
6
+ *
7
+ * Codes are namespaced by resource:
8
+ * - `schedule.*` — POST /api/schedule + POST /api/schedule/batch
9
+ * - `agent_actions.*` — PATCH /api/agent-actions/self
10
+ *
11
+ * The codes here must be reachable via a crafted bad request — every test
12
+ * file for these endpoints carries a coverage assertion against the registry
13
+ * (see schedule-batch.test.ts / agent-actions.test.ts).
14
+ */
15
+ export declare const AGENT_ERROR_REGISTRY: {
16
+ readonly "schedule.body_not_object": {
17
+ readonly expected: "JSON object";
18
+ readonly hint: "Request body must be a JSON object. For /api/schedule/batch wrap rows in '{\"rows\":[…]}'. For /api/schedule supply the row fields directly at the top level.";
19
+ readonly skillAnchor: "schedule#request-shape";
20
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#body_not_object";
21
+ readonly constraint: {
22
+ readonly type: "object";
23
+ readonly required: true;
24
+ };
25
+ };
26
+ readonly "schedule.rows_field_missing": {
27
+ readonly expected: "array of row objects under 'rows'";
28
+ readonly hint: "Wrap your row objects in a 'rows' array: POST {\"rows\":[{…},{…}]}. An empty array is accepted as a documented no-op.";
29
+ readonly skillAnchor: "schedule#batch-shape";
30
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#rows_field_missing";
31
+ readonly constraint: {
32
+ readonly type: "array";
33
+ readonly required: true;
34
+ };
35
+ };
36
+ readonly "schedule.rows_too_many": {
37
+ readonly expected: "at most 50 rows per batch";
38
+ readonly hint: "Split the batch into chunks of at most 50 rows. The morning routine's typical batch size is 4-8 rows; 50 is a generous cap.";
39
+ readonly skillAnchor: "schedule#batch-shape";
40
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#rows_too_many";
41
+ readonly constraint: {
42
+ readonly type: "array";
43
+ readonly maximum: 50;
44
+ };
45
+ };
46
+ readonly "schedule.scheduled_for_invalid": {
47
+ readonly expected: "ISO8601 timestamp parseable by Date()";
48
+ readonly hint: "Use an ISO 8601 string with timezone offset, e.g. '2026-05-15T14:30:00-04:00'. Convert relative expressions via <current_time> in your context.";
49
+ readonly skillAnchor: "schedule#scheduledFor-bounds";
50
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#scheduled_for_invalid";
51
+ readonly constraint: {
52
+ readonly type: "iso8601";
53
+ readonly required: true;
54
+ };
55
+ };
56
+ readonly "schedule.scheduled_for_in_past": {
57
+ readonly expected: "ISO8601 timestamp >= now";
58
+ readonly hint: "scheduledFor must be at least 1 minute in the future. Pick a time later today or tomorrow, then resubmit.";
59
+ readonly skillAnchor: "schedule#scheduledFor-bounds";
60
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#scheduled_for_in_past";
61
+ readonly constraint: {
62
+ readonly type: "iso8601";
63
+ };
64
+ };
65
+ readonly "schedule.task_type_unknown": {
66
+ readonly expected: "one of 'wake' | 'dm_session' | 'check' | 'dm'";
67
+ readonly hint: "taskType is the dispatcher's switch. Pick: 'wake' = future agent session that decides+acts at fire time (most common); 'dm_session' = agent session that composes ONE DM and exits (notifications with model judgment); 'dm' = precomposed DM with no LLM call at fire time (use this on POST /api/schedule/dm, NOT POST /api/schedule); 'check' = non-LLM probe (rare — internal). When in doubt for routines, use 'wake'.";
68
+ readonly skillAnchor: "schedule#taskType";
69
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#task_type_unknown";
70
+ readonly constraint: {
71
+ readonly type: "enum";
72
+ readonly enum: readonly ["wake", "dm_session", "check", "dm"];
73
+ readonly required: true;
74
+ };
75
+ };
76
+ readonly "schedule.description_too_short": {
77
+ readonly expected: "string with >= 20 characters";
78
+ readonly hint: "The wake-up agent has NO memory — description is its only context. Include what + why + who + expected output. Bad: 'Meeting prep'. Good: '15-min reminder for the 14:00 design review. Attendees: Sarah, Mike. Notify the user via Slack.'";
79
+ readonly skillAnchor: "schedule#description-shape";
80
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#description_too_short";
81
+ readonly constraint: {
82
+ readonly type: "string";
83
+ readonly minLength: 20;
84
+ readonly required: true;
85
+ };
86
+ };
87
+ readonly "schedule.prompt_too_short": {
88
+ readonly expected: "string with >= 20 characters when set";
89
+ readonly hint: "On /api/schedule/batch and recurring schedules a `prompt`/`taskPrompt` override must be >= 20 chars when set, or omit it so the row uses its description body. (On the single /api/schedule row `prompt` is the required instruction and only `schedule.prompt_required` applies.)";
90
+ readonly skillAnchor: "schedule#description-shape";
91
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#prompt_too_short";
92
+ readonly constraint: {
93
+ readonly type: "string";
94
+ readonly minLength: 20;
95
+ };
96
+ };
97
+ readonly "schedule.prompt_required": {
98
+ readonly expected: "non-empty string (the agent's instruction)";
99
+ readonly hint: "prompt is the wake-up agent's ONLY instruction at fire time — it is required. Write the full instruction here (what to do + why + the expected output). The separate `description` is just the optional short label shown in the schedule list; it is no longer used as the agent body.";
100
+ readonly skillAnchor: "schedule#description-shape";
101
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#prompt_required";
102
+ readonly constraint: {
103
+ readonly type: "string";
104
+ readonly minLength: 1;
105
+ readonly required: true;
106
+ };
107
+ };
108
+ readonly "schedule.prompt_too_long": {
109
+ readonly expected: "string with <= 8000 characters";
110
+ readonly hint: "prompt exceeds the 8000-character cap (~2000 tokens) — the bound is a cost/context guardrail, not a model limit. Tighten the instruction to the goal, the key context, and the expected output. Move bulk reference material into a file the agent reads at fire time (e.g. a context/plans path) instead of inlining it.";
111
+ readonly skillAnchor: "schedule#description-shape";
112
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#prompt_too_long";
113
+ readonly constraint: {
114
+ readonly type: "string";
115
+ readonly maxLength: 8000;
116
+ };
117
+ };
118
+ readonly "schedule.description_too_long": {
119
+ readonly expected: "string with <= 200 characters";
120
+ readonly hint: "description is the short label shown in the schedule list — keep it under 200 characters. It is NOT the agent body; put the full instruction in `prompt`. (Omit `description` entirely and the list falls back to a prompt excerpt.)";
121
+ readonly skillAnchor: "schedule#description-shape";
122
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#description_too_long";
123
+ readonly constraint: {
124
+ readonly type: "string";
125
+ readonly maxLength: 200;
126
+ };
127
+ };
128
+ readonly "schedule.task_context_field_missing": {
129
+ readonly expected: "string with >= 30 characters explaining why this task is being scheduled";
130
+ readonly hint: "Stage A must populate taskContext.background and taskContext.expected_output so the future session can produce high-quality output without re-deriving context. Example background: 'User flagged Q2 roadmap risks in yesterday's DM; pre-brief should surface the two open items before the 15:00 standup.'";
131
+ readonly skillAnchor: "schedule#taskContext-required-fields";
132
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#task_context_field_missing";
133
+ readonly constraint: {
134
+ readonly type: "string";
135
+ readonly minLength: 30;
136
+ readonly required: true;
137
+ };
138
+ };
139
+ readonly "schedule.task_context_field_too_short": {
140
+ readonly expected: "non-trivial string content";
141
+ readonly hint: "Required taskContext fields must carry real content. background needs >=30 chars, expected_output needs >=20 chars. Omitting them is not an option — they're how the future session reconstructs context.";
142
+ readonly skillAnchor: "schedule#taskContext-required-fields";
143
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#task_context_field_too_short";
144
+ readonly constraint: {
145
+ readonly type: "string";
146
+ };
147
+ };
148
+ readonly "schedule.task_context_field_wrong_type": {
149
+ readonly expected: "matching type per the schema";
150
+ readonly hint: "taskContext fields have typed slots: background = string (>=30 chars); expected_output = string (>=20 chars); references = string[] (paths or URLs the future session should read); tier_override = null | 'lite' | 'medium' | 'high'; tone = free string ('terse', 'celebratory', etc.); deadline = ISO8601 string or null. The response's `received` shows the actual JS type the daemon saw — coerce to the expected one and resubmit.";
151
+ readonly skillAnchor: "schedule#taskContext-required-fields";
152
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#task_context_field_wrong_type";
153
+ };
154
+ readonly "schedule.model_unknown": {
155
+ readonly expected: "'sonnet' | 'opus' | a registered model id | omitted";
156
+ readonly hint: "Pass one of: a legacy alias ('sonnet'/'opus' — rewritten to tier 'medium'/'high'); a full registered model id (e.g. 'claude-opus-4-8', 'gpt-5.4'); the composite form '<backendId>/<modelId>' when an id collides across backends; or omit `model` and use `tier` (recommended). The response's validValues lists every alias + every currently-registered model per backend — pick from that list and resubmit.";
157
+ readonly skillAnchor: "schedule#model-selection";
158
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#model_unknown";
159
+ readonly constraint: {
160
+ readonly type: "string";
161
+ readonly maxLength: 120;
162
+ };
163
+ };
164
+ readonly "schedule.model_ambiguous": {
165
+ readonly expected: "an unambiguous model token (use '<backendId>/<modelId>')";
166
+ readonly hint: "The model id you supplied is registered under more than one backend. Resubmit using the composite '<backendId>/<modelId>' form (e.g. 'claude/claude-opus-4-8') so the daemon doesn't have to guess which backend you meant. The response's validValues.matches lists the colliding entries.";
167
+ readonly skillAnchor: "schedule#model-selection";
168
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#model_ambiguous";
169
+ readonly constraint: {
170
+ readonly type: "string";
171
+ };
172
+ };
173
+ readonly "schedule.model_deprecated": {
174
+ readonly expected: "a non-deprecated model id (or omit and use `tier`)";
175
+ readonly hint: "The model id you supplied is registered but flagged deprecated — the registry may remove it on a future release. The row was still persisted. Consider switching to a non-deprecated id from the response's validValues.availableModels list, or use `tier` instead so the dispatcher picks the latest non-deprecated model for the resolved process key.";
176
+ readonly skillAnchor: "schedule#model-selection";
177
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#model_deprecated";
178
+ readonly severity: "warning";
179
+ readonly constraint: {
180
+ readonly type: "string";
181
+ };
182
+ };
183
+ readonly "schedule.backend_id_unknown": {
184
+ readonly expected: "'claude' | 'codex' | 'gemini' | 'opencode'";
185
+ readonly hint: "The backend id portion of the composite-form token did not match a registered backend. Use one of the four BackendId values listed in validValues — the daemon does not dispatch to any others.";
186
+ readonly skillAnchor: "schedule#model-selection";
187
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#backend_id_unknown";
188
+ readonly constraint: {
189
+ readonly type: "enum";
190
+ readonly enum: readonly ["claude", "codex", "gemini", "opencode"];
191
+ };
192
+ };
193
+ readonly "schedule.tier_unknown": {
194
+ readonly expected: "'lite' | 'medium' | 'high' | omitted";
195
+ readonly hint: "tier is the abstract cost knob — prefer this over `model` for new schedules. Omit to use the dispatcher's process-key default (medium). Use 'lite' for hourly polling/health checks (Haiku-class) and 'high' for one-off generative work (Opus-class).";
196
+ readonly skillAnchor: "schedule#tier-selection";
197
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#tier_unknown";
198
+ readonly constraint: {
199
+ readonly type: "enum";
200
+ readonly enum: readonly ["lite", "medium", "high"];
201
+ };
202
+ };
203
+ readonly "schedule.tier_and_model_conflict": {
204
+ readonly expected: "exactly one of `tier` OR `model` (not both)";
205
+ readonly hint: "You supplied BOTH `tier` and `model`. Pick one: use `tier` ('lite' | 'medium' | 'high') as the abstract cost knob — this is the recommended path because the dispatcher picks the latest non-deprecated model per backend automatically. Use `model` only when you must pin a specific id (e.g. reproducing a past run on a deprecated id). On PATCH, you can clear one and set the other in the same request (pass `null` to clear).";
206
+ readonly skillAnchor: "schedule#tier-vs-model";
207
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#tier_and_model_conflict";
208
+ };
209
+ readonly "schedule.batch_atomic_invalid": {
210
+ readonly expected: "boolean (default true)";
211
+ readonly hint: "atomic controls rollback. true (default) wraps all rows in one transaction; any row error rolls back all inserts. false commits successful rows individually. Use true for morning routine to retry the whole batch as one unit.";
212
+ readonly skillAnchor: "schedule#batch-shape";
213
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#batch_atomic_invalid";
214
+ readonly constraint: {
215
+ readonly type: "boolean";
216
+ };
217
+ };
218
+ readonly "schedule.frequency_unknown": {
219
+ readonly expected: "'hourly' | 'daily' | 'weekly' | 'monthly'";
220
+ readonly hint: "recurrenceRule.frequency must be one of: 'hourly' (every N hours at :MM), 'daily' (one fire per day at HH:MM), 'weekly' (HH:MM on the listed daysOfWeek), 'monthly' (HH:MM on the listed daysOfMonth). See validValues for the exact enum.";
221
+ readonly skillAnchor: "recurring#frequency";
222
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#frequency_unknown";
223
+ readonly constraint: {
224
+ readonly type: "enum";
225
+ readonly enum: readonly ["hourly", "daily", "weekly", "monthly"];
226
+ };
227
+ };
228
+ readonly "schedule.frequency_field_mismatch": {
229
+ readonly expected: "field set that matches the chosen frequency";
230
+ readonly hint: "Each frequency requires a specific combination of fields. hourly: no `time`, no day-of-* fields, no `onMissingDay` — use `intervalHours` (1..23, default 1) + `minuteOfHour` (0..59, default 0). daily: `time` only (HH:MM). weekly: `time` + `daysOfWeek` (0=Sun..6=Sat). monthly: `time` + `daysOfMonth` (1..31), `onMissingDay` optional ('skip' | 'lastDayOfMonth', default 'lastDayOfMonth'). See validValues.requiredFor / forbiddenFor for the exact matrix.";
231
+ readonly skillAnchor: "recurring#frequency-fields";
232
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#frequency_field_mismatch";
233
+ };
234
+ readonly "schedule.interval_hours_out_of_range": {
235
+ readonly expected: "integer in [1, 23]";
236
+ readonly hint: "intervalHours sets the hourly cadence — N=1 fires every hour, N=2 every two hours anchored at midnight in the rule's timezone. The cap is 23 because N=24 collapses to a daily fire; if you want daily, switch frequency to 'daily' and set `time`. Sub-hour intervals are not supported.";
237
+ readonly skillAnchor: "recurring#hourly";
238
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#interval_hours_out_of_range";
239
+ readonly constraint: {
240
+ readonly type: "integer";
241
+ readonly minimum: 1;
242
+ readonly maximum: 23;
243
+ };
244
+ };
245
+ readonly "schedule.minute_of_hour_out_of_range": {
246
+ readonly expected: "integer in [0, 59]";
247
+ readonly hint: "minuteOfHour pins which minute the hourly cadence lands on. Default 0 (fires at :00). Example: minuteOfHour=15 with intervalHours=2 fires at 00:15, 02:15, 04:15, …";
248
+ readonly skillAnchor: "recurring#hourly";
249
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#minute_of_hour_out_of_range";
250
+ readonly constraint: {
251
+ readonly type: "integer";
252
+ readonly minimum: 0;
253
+ readonly maximum: 59;
254
+ };
255
+ };
256
+ readonly "schedule.time_format_invalid": {
257
+ readonly expected: "string matching ^\\d{2}:\\d{2}$ (24h)";
258
+ readonly hint: "recurrenceRule.time is 24-hour HH:MM local to the rule's timezone — e.g. '09:00', '21:30'. No seconds, no AM/PM, no offset.";
259
+ readonly skillAnchor: "recurring#time";
260
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#time_format_invalid";
261
+ readonly constraint: {
262
+ readonly type: "string";
263
+ readonly pattern: "^\\d{2}:\\d{2}$";
264
+ };
265
+ };
266
+ readonly "schedule.days_of_week_invalid": {
267
+ readonly expected: "non-empty array of distinct integers in [0, 6]";
268
+ readonly hint: "daysOfWeek is required for frequency='weekly' and forbidden otherwise. Integers 0..6 map to Sun..Sat (see validValues.labels). Duplicates are rejected at the schema layer — a duplicate is always a caller bug, never intent. Example: [1,3,5] = Mon/Wed/Fri.";
269
+ readonly skillAnchor: "recurring#weekly";
270
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#days_of_week_invalid";
271
+ readonly constraint: {
272
+ readonly type: "array";
273
+ readonly minimum: 1;
274
+ readonly maximum: 7;
275
+ };
276
+ };
277
+ readonly "schedule.days_of_month_invalid": {
278
+ readonly expected: "non-empty array of distinct integers in [1, 31]";
279
+ readonly hint: "daysOfMonth is required for frequency='monthly' and forbidden otherwise. Integers 1..31. Duplicates are rejected. Days 29-31 may fall outside short months — control the behavior via `onMissingDay` ('skip' to drop those months, 'lastDayOfMonth' to fire on the actual last day instead).";
280
+ readonly skillAnchor: "recurring#monthly";
281
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#days_of_month_invalid";
282
+ readonly constraint: {
283
+ readonly type: "array";
284
+ readonly minimum: 1;
285
+ readonly maximum: 31;
286
+ };
287
+ };
288
+ readonly "schedule.on_missing_day_unknown": {
289
+ readonly expected: "'skip' | 'lastDayOfMonth' (or omit; defaults to 'lastDayOfMonth')";
290
+ readonly hint: "onMissingDay only applies to frequency='monthly'. 'skip' drops months that don't contain the requested day (e.g. [31] skips Feb/Apr/Jun/Sep/Nov). 'lastDayOfMonth' fires on the actual last day of those months instead (the bit-compatible default — preserves the pre-redesign clamp behavior).";
291
+ readonly skillAnchor: "recurring#on-missing-day";
292
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#on_missing_day_unknown";
293
+ readonly constraint: {
294
+ readonly type: "enum";
295
+ readonly enum: readonly ["skip", "lastDayOfMonth"];
296
+ };
297
+ };
298
+ readonly "schedule.on_missing_day_unused": {
299
+ readonly expected: "onMissingDay omitted, OR daysOfMonth contains 29, 30, or 31";
300
+ readonly hint: "You set `onMissingDay` but `daysOfMonth` has no entry in [29, 30, 31] — the field has no effect because every month already contains the requested day. Either drop `onMissingDay` to keep the row clean, or extend `daysOfMonth` (e.g. add 31 if this is meant to be a month-end rule).";
301
+ readonly skillAnchor: "recurring#on-missing-day";
302
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#on_missing_day_unused";
303
+ readonly severity: "warning";
304
+ };
305
+ readonly "schedule.timezone_unknown": {
306
+ readonly expected: "valid IANA timezone string";
307
+ readonly hint: "recurrenceRule.timezone must parse via Intl.DateTimeFormat with a real IANA zone (e.g. 'Asia/Tokyo', 'America/New_York', 'UTC'). When omitted, the daemon falls back to the configured primary timezone, then the system zone.";
308
+ readonly skillAnchor: "recurring#timezone";
309
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#timezone_unknown";
310
+ readonly constraint: {
311
+ readonly type: "string";
312
+ };
313
+ };
314
+ readonly "schedule.recurrence_rule_invalid": {
315
+ readonly expected: "well-formed RecurrenceRule object";
316
+ readonly hint: "recurrenceRule must be an object with `frequency` plus the per-frequency fields. The route emits more specific codes (schedule.frequency_unknown / schedule.frequency_field_mismatch / schedule.time_format_invalid / …) when it can identify the offending field; this fallback fires on structurally-invalid bodies the Zod traversal could not localise.";
317
+ readonly skillAnchor: "recurring#shape";
318
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#recurrence_rule_invalid";
319
+ };
320
+ readonly "schedule.recurring_id_invalid": {
321
+ readonly expected: "positive integer id";
322
+ readonly hint: "The id path segment must parse as a positive integer. Use the value returned by POST /api/recurring-schedules (item.id), not a slug or 0.";
323
+ readonly skillAnchor: "recurring#identifiers";
324
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#recurring_id_invalid";
325
+ readonly legacyErrorCode: "invalid_id";
326
+ readonly constraint: {
327
+ readonly type: "integer";
328
+ readonly minimum: 1;
329
+ };
330
+ };
331
+ readonly "schedule.recurring_not_found": {
332
+ readonly expected: "recurring schedule id that exists";
333
+ readonly hint: "No recurring schedule exists with this id. List /api/recurring-schedules to see the current rows, or POST a new one. Deleted rows are gone permanently — the table does not soft-delete.";
334
+ readonly skillAnchor: "recurring#identifiers";
335
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#recurring_not_found";
336
+ readonly legacyErrorCode: "not_found";
337
+ };
338
+ readonly "schedule.recurring_no_changes": {
339
+ readonly expected: "at least one field set on the PATCH body";
340
+ readonly hint: "An empty PATCH body is rejected — supply at least one of `description`, `prompt`, `recurrenceRule`, `model`, `tier`, `taskContext`, `enabled`. PATCH does not re-materialize the already-pending agent_schedule row unless you change `recurrenceRule` or `enabled`.";
341
+ readonly skillAnchor: "recurring#patch-semantics";
342
+ readonly docsUrl: "agent-assets/skills/schedule/references/errors.md#recurring_no_changes";
343
+ };
344
+ readonly "agent_actions.session_identity_missing": {
345
+ readonly expected: "x-pa-event-correlation-id and x-process-key headers identifying the running session";
346
+ readonly hint: "The pa-api shim auto-injects these from PA_EVENT_CORRELATION_ID and PA_PROCESS_KEY when running inside a dispatcher-spawned session. If you are calling this endpoint directly from the dashboard or a test, supply both headers explicitly.";
347
+ readonly skillAnchor: "agent-actions#self-write-auth";
348
+ readonly retryable: false;
349
+ };
350
+ readonly "agent_actions.session_row_not_found": {
351
+ readonly expected: "an in-flight agent_actions row matching (event_id, action_type)";
352
+ readonly hint: "No row was found for the running session's correlation id + process key. Either the dispatcher has not yet inserted the row, or the row's result column is already terminal (success/failed). Verify the dispatcher writes an in_progress row before launching the session.";
353
+ readonly skillAnchor: "agent-actions#self-write-auth";
354
+ readonly retryable: false;
355
+ };
356
+ readonly "agent_actions.metadata_field_invalid": {
357
+ readonly expected: "object with optional dayType/anomalies/filesTouched/inboxStats/scheduleBatchSize";
358
+ readonly hint: "The metadata body slot is shallow-merged into the row's metadata column. Pass an object literal; arrays go inside named keys (e.g. anomalies:[...]). Non-JSON-serialisable values (functions, Symbols) are rejected.";
359
+ readonly skillAnchor: "agent-actions#metadata-shape";
360
+ readonly constraint: {
361
+ readonly type: "object";
362
+ readonly required: true;
363
+ };
364
+ };
365
+ readonly "agent_actions.body_not_object": {
366
+ readonly expected: "JSON object";
367
+ readonly hint: "Body must be {\"metadata\":{…}}. The metadata key is required; other top-level keys are ignored.";
368
+ readonly skillAnchor: "agent-actions#metadata-shape";
369
+ readonly constraint: {
370
+ readonly type: "object";
371
+ readonly required: true;
372
+ };
373
+ };
374
+ readonly "context.path_invalid": {
375
+ readonly expected: "context-relative path within the allowed write whitelist";
376
+ readonly hint: "The path failed safePath(): it escaped getContextDir() or pointed outside the allowed file set. Use a path like 'state/today', 'plans/roadmap', 'plans/projects/<slug>', 'identity/profile' — no '..', no absolute paths. Read GET /api/context/list/plans/projects to discover live slugs.";
377
+ readonly skillAnchor: "context#allowed-paths";
378
+ readonly legacyErrorCode: "invalid_path";
379
+ readonly constraint: {
380
+ readonly type: "string";
381
+ };
382
+ };
383
+ readonly "context.path_required": {
384
+ readonly expected: "non-empty 'path' query / route parameter";
385
+ readonly hint: "The endpoint needs a context path (e.g. 'state/today', 'plans/projects/launch-prep'). For wildcard read/write routes the path is the URL tail after /api/context/; for snapshot restore the path is captured from the snapshot row.";
386
+ readonly skillAnchor: "context#allowed-paths";
387
+ readonly legacyErrorCode: "path_required";
388
+ readonly constraint: {
389
+ readonly type: "string";
390
+ readonly required: true;
391
+ };
392
+ };
393
+ readonly "context.path_not_found": {
394
+ readonly expected: "an existing context MD file at the resolved path";
395
+ readonly hint: "GET / PATCH / DELETE on a path that does not exist on disk. Use GET /api/context/list/plans/projects (or .../list/policies) to discover available paths, or PUT first to create the file.";
396
+ readonly skillAnchor: "context#allowed-paths";
397
+ readonly legacyErrorCode: "not_found";
398
+ readonly retryable: false;
399
+ };
400
+ readonly "context.write_forbidden": {
401
+ readonly expected: "path inside the daemon's write whitelist";
402
+ readonly hint: "This file is read-only from the agent side. The whitelist covers state/today, plans/roadmap, plans/projects/*, policies/management-captures/*, identity/*, journal/agent, state/profile-questions, journal/weekly/*, journal/monthly/*, knowledge/dossiers/*, knowledge/entities/<domain>/<type-plural>/* (e.g. knowledge/entities/work/meetings/<slug>), research/* (browser-history cluster journals), state/inbox/*, state/scratch/*, and policies/routines/custom/*. Legacy paths (today.md, roadmap.md, user/*, rules/*, agent/journal) are server-side aliased for one minor release but the canonical names above are the future contract. Files outside this set are owned by the daemon or operator — GET /api/context/list/plans/projects to find a writable parent, or NOTIFY the user.";
403
+ readonly skillAnchor: "context#write-whitelist";
404
+ readonly legacyErrorCode: "forbidden";
405
+ readonly retryable: false;
406
+ };
407
+ readonly "context.lock_held": {
408
+ readonly expected: "morning-routine lock not held by another holder";
409
+ readonly hint: "Another session is currently running the morning routine. Wait for it to finish (the holder block in the response carries the lockId and acquiredAt). Acquire-lock requests on a held lock return 409.";
410
+ readonly skillAnchor: "context#locks";
411
+ readonly legacyErrorCode: "lock_held";
412
+ readonly retryable: true;
413
+ };
414
+ readonly "context.lock_not_held": {
415
+ readonly expected: "valid lockId held by this caller";
416
+ readonly hint: "Release was rejected — the lockId in the body did not match the current holder. The release contract is single-shot: each acquire returns exactly one lockId; releasing twice or releasing without the id returns 400. If the dispatcher did not capture the id, re-acquire and immediately release.";
417
+ readonly skillAnchor: "context#locks";
418
+ readonly legacyErrorCode: "lock_not_held";
419
+ readonly retryable: false;
420
+ };
421
+ readonly "context.morning_routine_lock_held": {
422
+ readonly expected: "morning_routine lock released OR X-Lock-Id matching the holder";
423
+ readonly hint: "today.md write rejected because the morning routine is in progress. If you are the routine, pass X-Lock-Id: <id> with the lockId from POST /context/lock/morning-routine. If you are not the routine, wait for it to finish (typically <2 minutes) and retry.";
424
+ readonly skillAnchor: "context#locks";
425
+ readonly legacyErrorCode: "morning_routine_lock_held";
426
+ readonly retryable: true;
427
+ };
428
+ readonly "context.roadmap_write_lock_held": {
429
+ readonly expected: "roadmap write lock released OR X-Lock-Id matching the holder";
430
+ readonly hint: "roadmap.md write rejected because another flow is currently rewriting roadmap. Pass X-Lock-Id: <id> from POST /context/lock/roadmap if you acquired it, or wait for the holder (typically routine.roadmap_refresh) to finish.";
431
+ readonly skillAnchor: "context#locks";
432
+ readonly legacyErrorCode: "roadmap_write_lock_held";
433
+ readonly retryable: true;
434
+ };
435
+ readonly "context.body_not_object": {
436
+ readonly expected: "JSON object body";
437
+ readonly hint: "PUT / PATCH / lock-release / archive-today bodies must be a JSON object. Wrap your payload in '{}'. An empty body is rejected by PUT (content required) but accepted by lock-release as a no-op.";
438
+ readonly skillAnchor: "context#request-shape";
439
+ readonly legacyErrorCode: "validation_error";
440
+ readonly constraint: {
441
+ readonly type: "object";
442
+ readonly required: true;
443
+ };
444
+ };
445
+ readonly "context.invalid_body_field": {
446
+ readonly expected: "field value matching the route schema";
447
+ readonly hint: "One or more body fields failed schema validation. Inspect the per-issue `field` (Zod path) and `received` (the value you sent) plus `validValues` for enum fields. For PATCH /api/context/<path> the shape is {section, mode: 'append'|'replace'|'clear'|'clear_before'|'append_to_file', content?, cutoff?, maxEntries?}; for PUT it is {content}. For append-only files like journal/agent.md prefer mode='append_to_file' (section optional).";
448
+ readonly skillAnchor: "context#request-shape";
449
+ readonly legacyErrorCode: "validation_error";
450
+ };
451
+ readonly "context.invalid_json_body": {
452
+ readonly expected: "syntactically valid JSON";
453
+ readonly hint: "Body failed JSON.parse(). Check for trailing commas, single quotes, or unescaped newlines in string content. Use jq -nc for compact valid JSON before piping into curl --data-binary.";
454
+ readonly skillAnchor: "context#request-shape";
455
+ readonly legacyErrorCode: "invalid_json_body";
456
+ };
457
+ readonly "context.snapshot_id_invalid": {
458
+ readonly expected: "positive safe integer matching md_file_snapshots.id";
459
+ readonly hint: "Snapshot id must be a positive integer (no decimals, no scientific notation). GET /api/context/snapshots/:path to list available snapshot ids.";
460
+ readonly skillAnchor: "context#snapshots";
461
+ readonly legacyErrorCode: "invalid_id";
462
+ readonly constraint: {
463
+ readonly type: "integer";
464
+ readonly minimum: 1;
465
+ };
466
+ };
467
+ readonly "context.snapshot_not_found": {
468
+ readonly expected: "an existing row in md_file_snapshots";
469
+ readonly hint: "No snapshot exists with that id. Snapshots are pruned over time — verify the id from a fresh GET /api/context/snapshots/:path before restoring.";
470
+ readonly skillAnchor: "context#snapshots";
471
+ readonly legacyErrorCode: "not_found";
472
+ readonly retryable: false;
473
+ };
474
+ readonly "context.roadmap_id_generation_failed": {
475
+ readonly expected: "successful id generation after collision retries";
476
+ readonly hint: "The daemon exhausted retries trying to mint a non-colliding 4-char suffix for the roadmap id. This indicates an unusually full roadmap day or a corrupt randomBytes injection. Retry once; if it fails again, file an issue — DO NOT manually mint an id, the IDs must be daemon-issued so audit hooks fire.";
477
+ readonly skillAnchor: "context#roadmap-ids";
478
+ readonly legacyErrorCode: "roadmap_id_generation_failed";
479
+ readonly retryable: true;
480
+ };
481
+ readonly "context.creation_date_invalid": {
482
+ readonly expected: "YYYY-MM-DD calendar date string";
483
+ readonly hint: "Roadmap-id creationDate must be a calendar date in YYYY-MM-DD form (no time component). Use localDateStr(now, <timezone>) shape; omit the field entirely to let the daemon stamp it from config.timezone.";
484
+ readonly skillAnchor: "context#roadmap-ids";
485
+ readonly legacyErrorCode: "validation_error";
486
+ readonly constraint: {
487
+ readonly type: "string";
488
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
489
+ };
490
+ };
491
+ readonly "context.directory_invalid": {
492
+ readonly expected: "directory listed in the allowed-directory set";
493
+ readonly hint: "Directory listings are restricted to the curated allow-list returned in the 400 response's `allowed` field (e.g. 'plans/projects', 'policies/management-captures', 'identity', 'knowledge/dossiers'). Pick from that list — wildcards and absolute paths are rejected.";
494
+ readonly skillAnchor: "context#allowed-paths";
495
+ readonly legacyErrorCode: "invalid_directory";
496
+ };
497
+ readonly "context.content_validation_failed": {
498
+ readonly expected: "content matching the file's schema (today/roadmap/projects/...)";
499
+ readonly hint: "The body content failed validateContextContent(). The response's `message` field carries the specific reason: today.md H1 date mismatch, frontmatter shape, roadmap row schema, project doc skeleton, etc. Read the message verbatim and adjust the offending section — do NOT retry without changing the content.";
500
+ readonly skillAnchor: "context#content-validation";
501
+ readonly legacyErrorCode: "validation_error";
502
+ };
503
+ readonly "context.daily_skeleton_field_drift": {
504
+ readonly expected: "skeleton-owned frontmatter field present and well-typed";
505
+ readonly hint: "A required skeleton-owned frontmatter field is missing or malformed on the daily/<date>.md write. The errors array carries one entry per offending field with the exact `received` value and the `expected` shape. Re-emit the file with the missing fields restored from the `<journal_skeleton>` you were given — the skeleton's frontmatter is preserved byte-for-byte; do not paraphrase it. Body authoring is yours per rules/journal-format.md.";
506
+ readonly skillAnchor: "context#daily-skeleton-fields";
507
+ readonly legacyErrorCode: "daily_skeleton_drift";
508
+ readonly retryable: true;
509
+ };
510
+ readonly "context.vault_unreachable": {
511
+ readonly expected: "primary vault filesystem reachable";
512
+ readonly hint: "The vault path resolved by config.primaryVault is currently unreachable (mount lost, drive not present, etc.). Reads work; writes are blocked until the path returns. Surface the situation to the operator — do NOT retry blindly. See `state.reason` and `state.path` in the response for details.";
513
+ readonly skillAnchor: "context#vault-degraded";
514
+ readonly legacyErrorCode: "primary_vault_unreachable";
515
+ readonly retryable: false;
516
+ };
517
+ readonly "context.migration_in_progress": {
518
+ readonly expected: "no /api/setup/migrate-context run in flight";
519
+ readonly hint: "Context writes are temporarily globally blocked because the setup migration is moving the data directory. Wait until the migration completes (typically <10s for normal installs; up to a minute for large vaults) and retry. Reads remain available.";
520
+ readonly skillAnchor: "context#migration-gate";
521
+ readonly legacyErrorCode: "migration_in_progress";
522
+ readonly retryable: true;
523
+ };
524
+ readonly "context.stub_target_unsupported": {
525
+ readonly expected: "one of the REPAIRABLE_STUB_TARGETS paths";
526
+ readonly hint: "POST /api/context/repair-stub only accepts a curated allow-list of paths (e.g. 'policies/management-captures/_index', 'identity/_index'). The response's expected list (if surfaced) or the REPAIRABLE_STUB_TARGETS constant in context-health.ts is authoritative. For any other file, PUT the content directly via /api/context/<path>.";
527
+ readonly skillAnchor: "context#stub-repair";
528
+ readonly legacyErrorCode: "unsupported_stub_target";
529
+ readonly retryable: false;
530
+ };
531
+ readonly "context.template_unavailable": {
532
+ readonly expected: "agent-assets/templates directory resolvable";
533
+ readonly hint: "Skeleton template root unresolved on this install — typically a setup-time misconfiguration (agent-assets/ not bundled, or PA_DATA_DIR points at a wrong tree). The agent has no recovery path here: skip the stub-repair step, continue the routine with the unrepaired stub, and surface ONE notification to the user suggesting `aitne doctor`. Do NOT loop on this code.";
534
+ readonly skillAnchor: "context#stub-repair";
535
+ readonly legacyErrorCode: "templates_unavailable";
536
+ readonly retryable: false;
537
+ };
538
+ readonly "context.template_not_found": {
539
+ readonly expected: "matching template file under agent-assets/templates/";
540
+ readonly hint: "No skeleton template exists for the requested stub path. Either the path you passed is wrong, or this particular stub doesn't have a template (and should be authored directly). Check REPAIRABLE_STUB_TARGETS for the supported set.";
541
+ readonly skillAnchor: "context#stub-repair";
542
+ readonly legacyErrorCode: "template_not_found";
543
+ readonly retryable: false;
544
+ };
545
+ readonly "context.append_only_violation": {
546
+ readonly expected: "section header retained — only body content may change";
547
+ readonly hint: "This file is append-only (e.g. agent/journal.md uses mode='append_to_file' or mode='append'). PATCH replace/clear modes are rejected. Use mode='append' or mode='append_to_file' to add content; never overwrite past entries.";
548
+ readonly skillAnchor: "context#patch-modes";
549
+ readonly legacyErrorCode: "append_only";
550
+ readonly retryable: false;
551
+ };
552
+ readonly "context.write_conflict": {
553
+ readonly expected: "If-Match / parent revision matching current on-disk state";
554
+ readonly hint: "PATCH rejected — the file changed since you fetched it. Recovery in 3 steps: (1) GET /api/context/<path> again and capture the new `ETag` response header; (2) re-derive your patch against the fresh content (section may have moved, bullets may have been added); (3) re-PATCH with `If-Match: <new ETag>`. Bare curl without the If-Match header always 409s on tracked files (today.md, roadmap.md, projects/*). If the conflict repeats twice on the same field, another writer is racing — wait 10s before the third attempt, or fall back to mode='append_to_file' to dodge the section-level conflict entirely.";
555
+ readonly skillAnchor: "context#write-conflict";
556
+ readonly legacyErrorCode: "conflict";
557
+ readonly retryable: true;
558
+ };
559
+ readonly "context.unsupported_operation": {
560
+ readonly expected: "endpoint capable of handling this file extension";
561
+ readonly hint: "PATCH is unsupported for .base files — they are full-replace only. Use PUT /api/context/<path>.base with the complete new content instead. Other operation/file combinations carry their own message in the response.";
562
+ readonly skillAnchor: "context#file-extensions";
563
+ readonly legacyErrorCode: "unsupported_operation";
564
+ readonly retryable: false;
565
+ };
566
+ readonly "context.section_not_found": {
567
+ readonly expected: "matching ## heading in the file";
568
+ readonly hint: "PATCH targeted a section heading that does not exist in the file. Section matching rules: case-sensitive, exact literal '## <name>' (the leading `## ` and a single space are mandatory; '## X' with two spaces, '### X' deeper, or '##X' tight all miss). Recovery in order: (1) GET the file and read the current ## headings — pick the actual one verbatim; (2) if the section truly belongs in a new heading, use mode='append_to_file' with the heading included in `content` (e.g. `\\n## New Section\\n<body>`); (3) for structural rewrites, PUT the full file body. Do not approximate the heading — title-cased / pluralised guesses keep missing.";
569
+ readonly skillAnchor: "context#patch-modes";
570
+ readonly legacyErrorCode: "section_not_found";
571
+ readonly retryable: false;
572
+ };
573
+ readonly "context.cutoff_required": {
574
+ readonly expected: "ISO date string under 'cutoff' when mode='clear_before'";
575
+ readonly hint: "mode='clear_before' requires a cutoff date so the daemon knows which dated bullets to drop. Use YYYY-MM-DD (or a full ISO timestamp); rows with a stamp older than cutoff are removed.";
576
+ readonly skillAnchor: "context#patch-modes";
577
+ readonly legacyErrorCode: "cutoff_required";
578
+ readonly constraint: {
579
+ readonly type: "iso8601";
580
+ readonly required: true;
581
+ };
582
+ };
583
+ readonly "obsidian.not_configured": {
584
+ readonly expected: "external Obsidian vault configured in setup";
585
+ readonly hint: "No external Obsidian vault is configured for this install — `externalObsidianVaultPath`/`externalObsidianVaultName` are unset. Stop calling /api/obsidian/* in this session; either route the work to /api/wiki/* (internal vault), /api/context/* (management store), or notify the user that Obsidian is not configured. GET /api/health → integrationStatuses.obsidian for the live state.";
586
+ readonly skillAnchor: "obsidian-vault-rules#external-vault-setup";
587
+ readonly legacyErrorCode: "obsidian_not_configured";
588
+ readonly retryable: false;
589
+ };
590
+ readonly "obsidian.not_running": {
591
+ readonly expected: "Obsidian.app process running on the host";
592
+ readonly hint: "The Obsidian CLI requires the Obsidian desktop app to be running (Catalyst feature). Notify the user that Obsidian is not running and ask them to launch it, then retry after they confirm. Do NOT silently retry — there is no automatic recovery path.";
593
+ readonly skillAnchor: "obsidian-vault-rules#obsidian-must-be-running";
594
+ readonly legacyErrorCode: "obsidian_not_running";
595
+ readonly retryable: false;
596
+ };
597
+ readonly "obsidian.invalid_path": {
598
+ readonly expected: "vault-relative path: word chars / spaces / hyphens / dots / forward slashes, no '..', no leading '/'";
599
+ readonly hint: "Vault paths reject `..`, absolute paths, and characters outside `[a-z0-9 _\\-./CJK]`. Use 'folder/subfolder/My Note' shape (no leading slash, no .md extension required for the CLI). Search via GET /api/obsidian/search?q=… to discover a real path before writing.";
600
+ readonly skillAnchor: "obsidian-vault-rules#path-rules";
601
+ readonly legacyErrorCode: "invalid file path";
602
+ readonly constraint: {
603
+ readonly type: "string";
604
+ readonly maxLength: 500;
605
+ };
606
+ };
607
+ readonly "obsidian.invalid_note_name": {
608
+ readonly expected: "vault-relative note name: same rules as path";
609
+ readonly hint: "Note names for create take the same shape as paths: no '..', no leading '/', characters limited to `[a-z0-9 _\\-./CJK]`. Use 'Daily/2026-05-15' or 'My Note' — the CLI appends .md automatically.";
610
+ readonly skillAnchor: "obsidian-vault-rules#path-rules";
611
+ readonly legacyErrorCode: "invalid note name";
612
+ readonly constraint: {
613
+ readonly type: "string";
614
+ readonly maxLength: 500;
615
+ };
616
+ };
617
+ readonly "obsidian.name_and_content_required": {
618
+ readonly expected: "both 'name' (string) and 'content' (string) in the JSON body";
619
+ readonly hint: "POST /api/obsidian/notes requires `{ name: '<vault-path>', content: '<markdown>' }`. Both fields are mandatory and must be non-empty strings. To create an empty note, pass content: '' (empty string), not omit the field.";
620
+ readonly skillAnchor: "obsidian-vault-rules#create-note";
621
+ readonly legacyErrorCode: "name and content are required";
622
+ readonly constraint: {
623
+ readonly type: "object";
624
+ readonly required: true;
625
+ };
626
+ };
627
+ readonly "obsidian.content_required": {
628
+ readonly expected: "'content' string in the JSON body";
629
+ readonly hint: "PUT / PATCH /api/obsidian/notes endpoints require `{ content: '<markdown>' }`. Pass an empty string to clear content; omitting the field is a different error. PATCH /obsidian/notes also needs `file`; PATCH /obsidian/daily only needs `content`.";
630
+ readonly skillAnchor: "obsidian-vault-rules#update-note";
631
+ readonly legacyErrorCode: "content is required";
632
+ readonly constraint: {
633
+ readonly type: "string";
634
+ readonly required: true;
635
+ };
636
+ };
637
+ readonly "obsidian.file_and_content_required": {
638
+ readonly expected: "both 'file' (vault path) and 'content' (string) in the JSON body";
639
+ readonly hint: "PATCH /api/obsidian/notes (append) requires `{ file: '<vault-path>', content: '<markdown to append>' }`. Use PATCH /api/obsidian/daily (no `file`) to append to today's daily note instead.";
640
+ readonly skillAnchor: "obsidian-vault-rules#append-note";
641
+ readonly legacyErrorCode: "file and content are required";
642
+ readonly constraint: {
643
+ readonly type: "object";
644
+ readonly required: true;
645
+ };
646
+ };
647
+ readonly "obsidian.query_required": {
648
+ readonly expected: "non-empty 'q' query parameter";
649
+ readonly hint: "GET /api/obsidian/search?q=<term> needs a non-empty query string. The Obsidian CLI search is FTS-style — pass a phrase, tag like `#project`, or path fragment. Empty string is rejected; use the notes endpoint for path-only enumeration.";
650
+ readonly skillAnchor: "obsidian-vault-rules#search";
651
+ readonly legacyErrorCode: "query parameter 'q' is required";
652
+ readonly constraint: {
653
+ readonly type: "string";
654
+ readonly required: true;
655
+ readonly minLength: 1;
656
+ };
657
+ };
658
+ readonly "obsidian.not_found": {
659
+ readonly expected: "an existing note at the resolved vault path";
660
+ readonly hint: "The note does not exist. The Obsidian CLI collapses 'no such note' and 'read failure' into one error — GET /api/obsidian/search?q=<word-from-title> to discover the correct path, then retry. Do NOT keep retrying the same path.";
661
+ readonly skillAnchor: "obsidian-vault-rules#read-note";
662
+ readonly legacyErrorCode: "not_found";
663
+ readonly retryable: false;
664
+ };
665
+ readonly "obsidian.upstream_error": {
666
+ readonly expected: "successful Obsidian CLI invocation";
667
+ readonly hint: "Obsidian CLI returned a non-zero error. `message` is the raw CLI stderr — read it before retrying. Branches: 'note locked' / 'vault busy' → another writer is mid-flight, wait 5s and retry ONCE; 'note has unsaved changes' → the note is open in the Obsidian UI with edits the CLI refuses to overwrite, notify the user with 'Please save or close <path> in Obsidian, then retry' and skip this write; 'unauthorized' / 'token expired' → CLI auth lost, notify with 'Re-link Obsidian CLI: open Obsidian → Settings → Catalyst → CLI → regenerate token' and stop calling /api/obsidian/* this turn; 'plugin not running' → user closed Obsidian, see obsidian.not_running. Do NOT loop without changing call shape.";
668
+ readonly skillAnchor: "obsidian-vault-rules#errors";
669
+ readonly legacyErrorCode: "obsidian_error";
670
+ readonly retryable: true;
671
+ };
672
+ readonly "calendar.not_configured": {
673
+ readonly expected: "Google Calendar configured (direct mode) on this install";
674
+ readonly hint: "Google Calendar is not configured for direct access — either OAuth is not set up, the service is disabled, or the integration is in delegated/native mode (in which case the route is already 410-gated). Notify the user that calendar is unavailable and skip the calendar branch of the routine. GET /api/health.integrationStatuses.google.services.calendar shows the live state.";
675
+ readonly skillAnchor: "calendar#configuration";
676
+ readonly legacyErrorCode: "calendar_not_configured";
677
+ readonly retryable: false;
678
+ };
679
+ readonly "calendar.invalid_date_format": {
680
+ readonly expected: "'today' or YYYY-MM-DD date string";
681
+ readonly hint: "The `date` query parameter must be the literal 'today' or a calendar date like '2026-05-15'. Other shapes (ISO timestamps, '5/15/26', RFC-3339) are rejected. Use localDateStr(now, <timezone>) shape.";
682
+ readonly skillAnchor: "calendar#list-events";
683
+ readonly legacyErrorCode: "invalid date format — expected YYYY-MM-DD or 'today'";
684
+ readonly constraint: {
685
+ readonly type: "string";
686
+ readonly pattern: "^(today|\\d{4}-\\d{2}-\\d{2})$";
687
+ readonly required: true;
688
+ };
689
+ };
690
+ readonly "calendar.invalid_send_updates": {
691
+ readonly expected: "one of 'all' | 'externalOnly' | 'none'";
692
+ readonly hint: "The `sendUpdates` query parameter controls invite emails. Pass 'none' (silent — typical for batch agent edits), 'externalOnly' (notify external attendees but not internal), or 'all' (notify everyone). Omit the param to default to 'none'.";
693
+ readonly skillAnchor: "calendar#sendUpdates";
694
+ readonly legacyErrorCode: "invalid sendUpdates — must be 'all', 'externalOnly', or 'none'";
695
+ readonly constraint: {
696
+ readonly type: "enum";
697
+ readonly enum: readonly ["all", "externalOnly", "none"];
698
+ };
699
+ };
700
+ readonly "calendar.not_found": {
701
+ readonly expected: "an existing event at the supplied calendarId + eventId";
702
+ readonly hint: "Google returned 404 for this event. The event may have been deleted by another client, or the eventId is wrong. Re-list with GET /api/calendar/events?date=<day> to find the current id, or skip if the event no longer exists.";
703
+ readonly skillAnchor: "calendar#event-id";
704
+ readonly legacyErrorCode: "not_found";
705
+ readonly retryable: false;
706
+ };
707
+ readonly "calendar.upstream_error": {
708
+ readonly expected: "successful Google Calendar API call";
709
+ readonly hint: "Google Calendar returned an error. `message` is Google's verbatim text. Branches: 429 / 'rateLimitExceeded' / 'userRateLimitExceeded' → backoff 60s and retry ONCE, then skip calendar for this turn. 412 / 'preconditionFailed' → another client edited the event between your GET and PATCH; GET the event again to refresh the etag and replay the same change ONCE. 401 / 'authError' → OAuth refresh token revoked or expired; notify the user to re-link Google in /settings/integrations and skip — agent cannot refresh interactively. 403 / 'insufficientPermissions' → the integration scope was downgraded; same fix as 401. 404 → event was deleted between your last list and this call; drop it and continue. Cap retries at one per code per turn.";
710
+ readonly skillAnchor: "calendar#errors";
711
+ readonly legacyErrorCode: "calendar_error";
712
+ readonly retryable: true;
713
+ };
714
+ readonly "calendar.validation_error": {
715
+ readonly expected: "request body matching the calendar event schema";
716
+ readonly hint: "Body failed Zod validation. The response's `details` array carries per-field issues — read each `path` + `message` and fix. Common issues: start/end must be `{ dateTime: ISO, timeZone: 'IANA/Name' }` OR `{ date: 'YYYY-MM-DD' }` (all-day), not both; attendees must be array of `{ email }` objects.";
717
+ readonly skillAnchor: "calendar#event-shape";
718
+ readonly legacyErrorCode: "validation_error";
719
+ };
720
+ readonly "calendar.outlook_not_configured": {
721
+ readonly expected: "an active Outlook mail account (calendar reuses its MSAL token)";
722
+ readonly hint: "Outlook Calendar piggybacks on the first active Outlook mail account's MSAL token. Either no Outlook account is set up, or the cached token can't acquire Calendars.ReadWrite. Notify the user to add an Outlook account in /settings/mail and confirm calendar scopes were granted.";
723
+ readonly skillAnchor: "calendar#outlook-setup";
724
+ readonly legacyErrorCode: "outlook_not_configured";
725
+ readonly retryable: false;
726
+ };
727
+ readonly "calendar.outlook_disabled": {
728
+ readonly expected: "outlook_calendar integration mode != 'disabled'";
729
+ readonly hint: "Outlook Calendar is set to 'disabled' in /settings/integrations. Skip the calendar branch for Outlook routines. Don't re-enable from the agent side — the user controls integration modes via the dashboard.";
730
+ readonly skillAnchor: "calendar#outlook-mode";
731
+ readonly legacyErrorCode: "outlook_calendar_disabled";
732
+ readonly retryable: false;
733
+ };
734
+ readonly "calendar.outlook_delegated": {
735
+ readonly expected: "outlook_calendar integration mode = 'direct' for this route";
736
+ readonly hint: "Outlook Calendar is in 'delegated' mode — direct reads are blocked. Route cross-backend work through POST /api/integrations/outlook_calendar/exec (task-mode chokepoint; the legacy /invoke RPC was retired) or wait for the delegated sync worker's next cadence to land observations.";
737
+ readonly skillAnchor: "calendar#outlook-mode";
738
+ readonly legacyErrorCode: "outlook_calendar_delegated";
739
+ readonly retryable: false;
740
+ };
741
+ readonly "wiki.not_enabled": {
742
+ readonly expected: "an active wiki_workspaces row matching the URL workspace name";
743
+ readonly hint: "The wiki is opt-in; either no workspace named `<workspace>` exists, or it has `active=0`. Use GET /api/wiki/workspaces to list available workspaces. To enable, open /settings/wiki in the dashboard and click 'Enable Wiki' — the agent cannot enable it.";
744
+ readonly skillAnchor: "wiki-vault-rules#enable";
745
+ readonly legacyErrorCode: "wiki_not_enabled";
746
+ readonly retryable: false;
747
+ };
748
+ readonly "wiki.workspace_not_found": {
749
+ readonly expected: "an existing workspace row, including archived ones for DELETE/PATCH";
750
+ readonly hint: "No workspace named `<workspace>` exists at all (not even archived). GET /api/wiki/workspaces to list ids and names. To create the default workspace, POST /api/wiki/workspaces with an empty body.";
751
+ readonly skillAnchor: "wiki-vault-rules#workspace-crud";
752
+ readonly legacyErrorCode: "not_found";
753
+ readonly retryable: false;
754
+ };
755
+ readonly "wiki.invalid_body": {
756
+ readonly expected: "request body matching the workspace/file/bridge zod schema";
757
+ readonly hint: "Body failed Zod validation. The response's `issues` array carries per-field paths — read each `path`/`message` and fix that field exactly. Common shapes by endpoint: (a) POST /wiki/workspaces external — `{ kind: 'external', rootPath: '<abs>', language?, name? }`; (b) POST /wiki/<ws>/files — `{ path: '<layer>/<slug>.md', content: '<markdown>', frontmatter? }`; (c) PATCH /wiki/<ws>/files/<path> — `{ content: '<markdown>' }`; (d) bridge proposals — `{ rawPath, wikiPath, confidence: 0-1, evidence: string }`. Do NOT retry without changing the listed fields.";
758
+ readonly skillAnchor: "wiki-vault-rules#schemas";
759
+ readonly legacyErrorCode: "invalid_body";
760
+ };
761
+ readonly "wiki.invalid_root_path": {
762
+ readonly expected: "writable directory outside primary vault / external obsidian / dataDir / other wiki";
763
+ readonly hint: "Wiki root path validation rejects paths that overlap with the management vault, the external Obsidian vault, the daemon's data dir, or another active wiki workspace. POST /api/fs/probe?path=<absolute> first to see which collision applies, then pick a sibling path.";
764
+ readonly skillAnchor: "wiki-vault-rules#root-path";
765
+ readonly legacyErrorCode: "invalid_root_path";
766
+ readonly retryable: false;
767
+ };
768
+ readonly "wiki.invalid_json": {
769
+ readonly expected: "syntactically valid JSON body or empty body";
770
+ readonly hint: "POST /api/wiki/workspaces accepts either no body (default-workspace quick path) or a JSON object — anything else fails JSON.parse(). Check for trailing commas, single quotes, or unescaped newlines.";
771
+ readonly skillAnchor: "wiki-vault-rules#workspace-crud";
772
+ readonly legacyErrorCode: "invalid_json";
773
+ };
774
+ readonly "wiki.append_only_raw": {
775
+ readonly expected: "POST to a new path in 10_raw/ (never overwrite)";
776
+ readonly hint: "Files in 10_raw/ are create-only (the source-of-truth layer). POSTing to an existing 10_raw/<slug>.md file is rejected. If you need to add to an existing source, append a new dated note under 30_outputs/ or create a 20_wiki/ article that links to it.";
777
+ readonly skillAnchor: "wiki-vault-rules#layer-rules";
778
+ readonly legacyErrorCode: "append_only";
779
+ readonly retryable: false;
780
+ };
781
+ readonly "wiki.append_only_log": {
782
+ readonly expected: "PATCH to log.md (POST overwrite is rejected)";
783
+ readonly hint: "log.md grows append-only via PATCH. POST overwrites are rejected once log.md exists. Use PATCH /api/wiki/<workspace>/files/log.md with `{ content: '<new line>' }` to add entries.";
784
+ readonly skillAnchor: "wiki-vault-rules#log";
785
+ readonly legacyErrorCode: "append_only";
786
+ readonly retryable: false;
787
+ };
788
+ readonly "wiki.raw_patch_forbidden": {
789
+ readonly expected: "POST (create) rather than PATCH for 10_raw/ files";
790
+ readonly hint: "10_raw/ files cannot be patched after creation — they are immutable sources. Use POST to create a new sibling note instead of mutating an existing one.";
791
+ readonly skillAnchor: "wiki-vault-rules#layer-rules";
792
+ readonly legacyErrorCode: "append_only";
793
+ readonly retryable: false;
794
+ };
795
+ readonly "wiki.invalid_path": {
796
+ readonly expected: "vault-relative path inside a known layer (00_inbox/10_raw/20_wiki/30_outputs/90_meta or log.md)";
797
+ readonly hint: "Wiki paths must live inside the four-layer schema. The classifier rejects unknown roots, paths containing '..' or '\\', and shapes that don't match the per-layer regex (e.g. 30_outputs/ requires `<YYYY-MM-DD>-<kind>-<slug>.md`). See wiki-vault-rules for the layer table.";
798
+ readonly skillAnchor: "wiki-vault-rules#path-shapes";
799
+ readonly legacyErrorCode: "invalid_path";
800
+ };
801
+ readonly "wiki.invalid_layer": {
802
+ readonly expected: "path classifying into a known layer";
803
+ readonly hint: "Path is well-formed but the leading directory doesn't match any of `00_inbox/`, `10_raw/`, `20_wiki/`, `30_outputs/`, `90_meta/`, or the bare `log.md`. Move the file under the right layer for its kind (raw source → 10_raw, article → 20_wiki, etc.).";
804
+ readonly skillAnchor: "wiki-vault-rules#layer-rules";
805
+ readonly legacyErrorCode: "invalid_layer";
806
+ };
807
+ readonly "wiki.file_not_found": {
808
+ readonly expected: "an existing file under the workspace root";
809
+ readonly hint: "GET on a wiki path that does not exist on disk. Use GET /api/wiki/<workspace>/index to list files, or GET /api/wiki/<workspace>/search?q=… to find it by title. POST first to create it if you intended a write.";
810
+ readonly skillAnchor: "wiki-vault-rules#read-file";
811
+ readonly legacyErrorCode: "not_found";
812
+ readonly retryable: false;
813
+ };
814
+ readonly "wiki.not_file": {
815
+ readonly expected: "the resolved path is a regular file";
816
+ readonly hint: "GET hit a directory rather than a file. Append the file name (e.g. `20_wiki/<slug>.md`) instead of the directory path.";
817
+ readonly skillAnchor: "wiki-vault-rules#read-file";
818
+ readonly legacyErrorCode: "not_file";
819
+ readonly retryable: false;
820
+ };
821
+ readonly "wiki.forbidden_missing_process_key": {
822
+ readonly expected: "x-process-key header on every wiki call";
823
+ readonly hint: "Wiki endpoints gate on `x-process-key` for layer-aware auth. The pa-api shim auto-injects this from `PA_PROCESS_KEY`; if you are calling outside a dispatcher session, supply the header explicitly (e.g. `x-process-key: wiki.compile` for compile, `wiki.ingest_url` for raw ingest, `message.dm` for bridge proposals).";
824
+ readonly skillAnchor: "wiki-vault-rules#process-keys";
825
+ readonly legacyErrorCode: "forbidden";
826
+ readonly retryable: false;
827
+ };
828
+ readonly "wiki.forbidden_read": {
829
+ readonly expected: "x-process-key with a `wiki.*` or DM-read prefix";
830
+ readonly hint: "GET on wiki files requires either a wiki-tier process key (`wiki.compile`, `wiki.ask`, …) or a DM-read process key (`message.dm`, `message.mention`, `dashboard.chat`). The agent's current process key did not match either set.";
831
+ readonly skillAnchor: "wiki-vault-rules#process-keys";
832
+ readonly legacyErrorCode: "forbidden";
833
+ readonly retryable: false;
834
+ };
835
+ readonly "wiki.forbidden_write": {
836
+ readonly expected: "process key authorized to write to this layer";
837
+ readonly hint: "Writes are layer-gated: `wiki.ingest_url` → 10_raw/; `wiki.compile` → 20_wiki/ + 90_meta/; `wiki.ask`/`wiki.trace`/`wiki.connect` → 30_outputs/; `wiki.lint` → 90_meta/health/. DM-tier callers can ONLY write bridge files in 10_raw/ AND only when both `bridge_enabled` and `dm_agent_write_enabled` are on. The `code` field disambiguates which gate failed.";
838
+ readonly skillAnchor: "wiki-vault-rules#process-keys";
839
+ readonly legacyErrorCode: "forbidden";
840
+ readonly retryable: false;
841
+ };
842
+ readonly "wiki.import_conflict": {
843
+ readonly expected: "no destination-side filename collisions in the existing vault";
844
+ readonly hint: "Import-migrate aborted because flattened filenames collide with existing files in 20_wiki/. The response's `conflicts` array lists each collision. Re-run with `?allowConflicts=true` to overwrite, or pre-rename the conflicting files in the source vault first.";
845
+ readonly skillAnchor: "wiki-vault-rules#import";
846
+ readonly legacyErrorCode: "import_conflict";
847
+ readonly retryable: true;
848
+ };
849
+ readonly "wiki.import_split_unsupported": {
850
+ readonly expected: "decision = 'adopt' or 'migrate'";
851
+ readonly hint: "The 'split' import decision is reserved for the multi-workspace phase and not yet implemented. Re-POST with `decision: 'adopt'` (keep source layout) or `decision: 'migrate'` (flatten to the standard schema).";
852
+ readonly skillAnchor: "wiki-vault-rules#import";
853
+ readonly legacyErrorCode: "import_split_unsupported";
854
+ readonly retryable: false;
855
+ };
856
+ readonly "fs.missing_path": {
857
+ readonly expected: "non-empty 'path' query parameter";
858
+ readonly hint: "GET /api/fs/probe?path=<absolute-path>. The path must be absolute (no `..`, no `~`) and is checked against the wiki/primary-vault collision matrix. POST /api/system/pick-directory is the OS-native picker — use it first to get a valid absolute path.";
859
+ readonly skillAnchor: "wiki-vault-rules#root-path-picker";
860
+ readonly legacyErrorCode: "missing_path";
861
+ readonly constraint: {
862
+ readonly type: "string";
863
+ readonly required: true;
864
+ };
865
+ };
866
+ readonly "fs.invalid_path": {
867
+ readonly expected: "absolute path that is not on the system blocklist";
868
+ readonly hint: "The path failed `normalizeRequestedPath()`: it was relative, contained `..` traversal, started with a system prefix (`/etc`, `/var`, `/System`, …), or matched a known secret-file pattern. Pick a path inside the user's home directory or an external mount; the response's `error`/`message` carries the specific reason.";
869
+ readonly skillAnchor: "wiki-vault-rules#root-path-picker";
870
+ readonly retryable: false;
871
+ };
872
+ readonly "attachments.too_many_uploads": {
873
+ readonly expected: "fewer than 5 concurrent uploads per principal";
874
+ readonly hint: "Throttled — there are already 5 in-flight uploads on this auth key. Wait for one to complete (200/4xx response) before starting another. Multipart parses count from the first byte until the response is sent.";
875
+ readonly skillAnchor: "attachments#upload";
876
+ readonly legacyErrorCode: "too_many_uploads";
877
+ readonly retryable: true;
878
+ };
879
+ readonly "attachments.invalid_content_type": {
880
+ readonly expected: "Content-Type: multipart/form-data; boundary=…";
881
+ readonly hint: "Attachment uploads must be multipart/form-data with a single `file` field. application/json, x-www-form-urlencoded, and raw binary are rejected. Use `curl -F 'file=@<path>' -F 'caption=<text>'` for shell uploads.";
882
+ readonly skillAnchor: "attachments#upload";
883
+ readonly legacyErrorCode: "invalid_request";
884
+ readonly retryable: false;
885
+ };
886
+ readonly "attachments.invalid_multipart": {
887
+ readonly expected: "well-formed multipart body with at least one 'file' field";
888
+ readonly hint: "Busboy failed to parse the request — the multipart boundary is malformed, the body was empty before the file field, or the stream closed early. Re-send with a clean -F flag; do not concatenate two -F uploads in one request.";
889
+ readonly skillAnchor: "attachments#upload";
890
+ readonly legacyErrorCode: "invalid_multipart";
891
+ readonly retryable: true;
892
+ };
893
+ readonly "attachments.missing_turn_token": {
894
+ readonly expected: "X-Turn-Token header from the currently-running session";
895
+ readonly hint: "Outbound (agent→user) attachment uploads require X-Turn-Token. The dispatcher mints one per session and the pa-api shim auto-injects `PA_TURN_TOKEN`. If you're calling outside a session, this endpoint is the wrong one — use POST /api/chat/attachments (inbound) instead.";
896
+ readonly skillAnchor: "attachments#outbound";
897
+ readonly legacyErrorCode: "missing_turn_token";
898
+ readonly retryable: false;
899
+ };
900
+ readonly "attachments.invalid_turn_token": {
901
+ readonly expected: "X-Turn-Token bound to an active session";
902
+ readonly hint: "The supplied token doesn't correspond to a currently-running turn. The dispatcher rotates tokens per turn; an attachment from a previous turn is rejected. Re-fetch the token from the current session env (`PA_TURN_TOKEN`) and retry.";
903
+ readonly skillAnchor: "attachments#outbound";
904
+ readonly legacyErrorCode: "invalid_turn_token";
905
+ readonly retryable: false;
906
+ };
907
+ readonly "attachments.ingest_rejected": {
908
+ readonly expected: "file matching the accepted MIME / size constraints";
909
+ readonly hint: "The attachment store rejected the file. The `error` field carries the IngestRejectedError reason (disallowed_mime, too_large, mime_mismatch, magic_bytes_mismatch, …); the `message` is verbatim. Common cases: images > 5 MB, non-image > 25 MB, declared application/pdf but magic bytes say PNG.";
910
+ readonly skillAnchor: "attachments#limits";
911
+ readonly retryable: false;
912
+ };
913
+ readonly "attachments.ingest_failed": {
914
+ readonly expected: "successful blob write";
915
+ readonly hint: "Internal error storing the attachment. Check daemon logs for the stack; not retryable from the agent side. Notify the user and skip the attach step rather than looping.";
916
+ readonly skillAnchor: "attachments#errors";
917
+ readonly legacyErrorCode: "ingest_failed";
918
+ readonly retryable: false;
919
+ };
920
+ readonly "attachments.not_found": {
921
+ readonly expected: "an existing attachment id from the recent upload response";
922
+ readonly hint: "GET / DELETE /chat/attachments/:id for an unknown id. Attachment ids are returned from POST /chat/attachments — store the id immediately and quote it verbatim. Attachments may also have been pruned (TTL).";
923
+ readonly skillAnchor: "attachments#crud";
924
+ readonly legacyErrorCode: "not_found";
925
+ readonly retryable: false;
926
+ };
927
+ readonly "attachments.already_bound": {
928
+ readonly expected: "attachment not yet bound to a message";
929
+ readonly hint: "DELETE on an attachment that's already attached to a sent message is rejected — deletion would break the message thread. Detach via the chat history flow instead, or leave it in place.";
930
+ readonly skillAnchor: "attachments#crud";
931
+ readonly legacyErrorCode: "already_bound";
932
+ readonly retryable: false;
933
+ };
934
+ readonly "github.rate_limited": {
935
+ readonly expected: "fewer than 60 requests per minute per peer (300 global)";
936
+ readonly hint: "Webhook receiver rate limit hit (per-peer 60 req/min, global 300 req/min). GitHub auto-retries webhook deliveries with backoff, so this is harmless for real deliveries. If the agent itself is calling here (replay/testing), do NOT tight-loop — drop the GitHub branch of this routine and continue with the rest. Retry the same call only after >=60s have elapsed.";
937
+ readonly skillAnchor: "github#webhook";
938
+ readonly legacyErrorCode: "rate_limited";
939
+ readonly retryable: true;
940
+ };
941
+ readonly "github.webhook_not_configured": {
942
+ readonly expected: "PA_GITHUB_WEBHOOK_SECRET set in the keychain";
943
+ readonly hint: "The webhook secret is unset, so signature verification cannot run. The user must set it in /settings/integrations → GitHub. Skip webhook-related work until the secret is configured.";
944
+ readonly skillAnchor: "github#webhook-setup";
945
+ readonly legacyErrorCode: "webhook_not_configured";
946
+ readonly retryable: false;
947
+ };
948
+ readonly "github.invalid_signature": {
949
+ readonly expected: "X-Hub-Signature-256 matching HMAC-SHA256(body, secret)";
950
+ readonly hint: "Signature mismatch — either the wrong secret was configured or the request was tampered with. Verify the GitHub webhook secret in /settings/integrations matches the one configured on github.com side.";
951
+ readonly skillAnchor: "github#webhook-auth";
952
+ readonly legacyErrorCode: "invalid_signature";
953
+ readonly retryable: false;
954
+ };
955
+ readonly "github.missing_event_type": {
956
+ readonly expected: "X-GitHub-Event header set";
957
+ readonly hint: "Webhook payload received without the X-GitHub-Event header. Real GitHub deliveries always set it; if you are replaying for testing, add it to the request.";
958
+ readonly skillAnchor: "github#webhook";
959
+ readonly legacyErrorCode: "missing_event_type";
960
+ readonly retryable: false;
961
+ };
962
+ readonly "github.invalid_json": {
963
+ readonly expected: "syntactically valid JSON webhook body";
964
+ readonly hint: "The webhook body failed JSON.parse(). Genuine GitHub webhooks are always valid JSON; if you are replaying, check the body wasn't double-encoded or truncated.";
965
+ readonly skillAnchor: "github#webhook";
966
+ readonly legacyErrorCode: "invalid_json";
967
+ readonly retryable: false;
968
+ };
969
+ readonly "github.not_configured": {
970
+ readonly expected: "GitHub token in the OS keychain";
971
+ readonly hint: "No GitHub token is stored. The user must add one in /settings/integrations → GitHub → 'Add token'. Until then, /api/github/* proxy routes 503 — skip the GitHub branch of any routine.";
972
+ readonly skillAnchor: "github#token";
973
+ readonly legacyErrorCode: "github_not_configured";
974
+ readonly retryable: false;
975
+ };
976
+ readonly "github.repository_not_found": {
977
+ readonly expected: "repository id or slug registered in the unified repositories table";
978
+ readonly hint: "The supplied `repo=`/`repositoryId=` does not match any row. Use GET /api/repositories to list registered repos; the value can be a row id, a local absolute path, or `github:owner/repo`. To register a new repo, POST /api/repositories.";
979
+ readonly skillAnchor: "repositories#identifiers";
980
+ readonly legacyErrorCode: "repository_not_found";
981
+ readonly retryable: false;
982
+ };
983
+ readonly "github.repository_not_registered": {
984
+ readonly expected: "(owner, repo) pair registered in the unified repositories table";
985
+ readonly hint: "The combination of owner/repo does not match a registered repository. Register the repo first via POST /api/repositories, then retry. Owner+repo must be the canonical GitHub slug — branches and forks need their own rows.";
986
+ readonly skillAnchor: "repositories#github-side";
987
+ readonly legacyErrorCode: "repository_not_registered";
988
+ readonly retryable: false;
989
+ };
990
+ readonly "github.side_required": {
991
+ readonly expected: "repository row with non-null githubOwner + githubRepo";
992
+ readonly hint: "The repository is registered locally but has no GitHub side (it's a `local:*` row). GitHub API calls only work on rows with a GitHub slug; either register the GitHub side via PATCH /api/repositories/:id or pick a different repo.";
993
+ readonly skillAnchor: "repositories#dual-sided";
994
+ readonly legacyErrorCode: "github_side_required";
995
+ readonly retryable: false;
996
+ };
997
+ readonly "github.validation_error": {
998
+ readonly expected: "owner+repo or repositoryId in the request";
999
+ readonly hint: "Specify the target repo either as `?owner=<owner>&repo=<repo>` or `?repositoryId=<id-or-slug>`. The dual form exists for legacy callers; new code should pass `repositoryId` only.";
1000
+ readonly skillAnchor: "repositories#identifiers";
1001
+ readonly legacyErrorCode: "validation_error";
1002
+ readonly retryable: false;
1003
+ };
1004
+ readonly "github.pull_number_and_comment_required": {
1005
+ readonly expected: "'pull_number' (number) and 'comment' (string) in the JSON body";
1006
+ readonly hint: "POST /api/github/pulls/comment requires `{ owner, repo, pull_number, comment }` (or `repositoryId` instead of owner+repo). pull_number is the PR number (not the global issue id). comment is the markdown body of the new comment.";
1007
+ readonly skillAnchor: "github#pull-comment";
1008
+ readonly legacyErrorCode: "pull_number and comment are required";
1009
+ readonly constraint: {
1010
+ readonly type: "object";
1011
+ readonly required: true;
1012
+ };
1013
+ };
1014
+ readonly "github.api_error": {
1015
+ readonly expected: "successful Octokit response";
1016
+ readonly hint: "GitHub API returned an error. Inspect `message` (Octokit's verbatim error text) AND `status` (the HTTP code) to disambiguate. Common cases: 401 (token expired — notify the user to refresh in /settings/integrations → GitHub, then skip; the agent cannot self-recover); 403 (secondary rate limit — wait 60s and retry once, then skip if it persists); 404 (repo/PR deleted or token lost visibility — verify the slug, do NOT loop); 422 (validation — `message` names the offending field; typical causes: closing an already-closed PR, commenting on a locked PR, merge with conflicts; do NOT retry the same body); 5xx (GitHub maintenance — retry once after 60s, then skip).";
1017
+ readonly skillAnchor: "github#errors";
1018
+ readonly legacyErrorCode: "github_api_error";
1019
+ readonly retryable: true;
1020
+ };
1021
+ readonly "git.invalid_repo": {
1022
+ readonly expected: "repo identifier resolving to a clone in the unified repositories table";
1023
+ readonly hint: "?repo= must be either an absolute local path matching a row's `local_path`, or a repository id (e.g. `github:acme/widgets`, `local:abc123…`). GitHub-only rows without a clone 404 here. The response's `allowed` array (on /git/log) lists currently-registered local paths.";
1024
+ readonly skillAnchor: "repositories#local-path";
1025
+ readonly legacyErrorCode: "invalid or missing repo";
1026
+ readonly retryable: false;
1027
+ };
1028
+ readonly "git.invalid_ref": {
1029
+ readonly expected: "ref free of shell metachars; not starting with '-'";
1030
+ readonly hint: "The `?ref=` query parameter is sanitized — it cannot contain `;&|`$` or start with `-` (which would be interpreted as a git flag). Use plain refs like `HEAD~1..HEAD`, `main..feature`, or a 40-char sha range.";
1031
+ readonly skillAnchor: "git#diff";
1032
+ readonly legacyErrorCode: "invalid ref format";
1033
+ readonly retryable: false;
1034
+ };
1035
+ readonly "git.invalid_hash": {
1036
+ readonly expected: "hash free of shell metachars; not starting with '-'";
1037
+ readonly hint: "The `?hash=` query parameter is sanitized — same rules as ref. Use a 7-40 char hex sha, or `HEAD`/`HEAD~N`. No flag-style strings.";
1038
+ readonly skillAnchor: "git#show";
1039
+ readonly legacyErrorCode: "invalid hash format";
1040
+ readonly retryable: false;
1041
+ };
1042
+ readonly "git.exec_failed": {
1043
+ readonly expected: "successful git invocation on the resolved clone";
1044
+ readonly hint: "git exited non-zero. `message` is git's verbatim stderr — read it first. Branches: 'unknown revision' / 'bad revision' → the ref doesn't exist locally; cannot retry, instead either narrow to a known sha range (HEAD~10..HEAD) or skip this repo for the turn. 'fatal: not a git repository' → the localPath is no longer a clone (deleted or moved); update the row via PATCH /api/repositories/:id. 'fatal: bad object' / 'object file is empty' → repository corruption; surface to the user with 'Run `git fsck` in <localPath>' and skip. 'unable to read tree' on porcelain queries → uncommitted state; either stash or skip the file-tree query. Do NOT auto-retry — git failures are deterministic given the inputs.";
1045
+ readonly skillAnchor: "git#errors";
1046
+ readonly retryable: false;
1047
+ };
1048
+ readonly "notion.not_configured": {
1049
+ readonly expected: "Notion integration token in the OS keychain";
1050
+ readonly hint: "Notion is not configured. The user must add an integration token in /settings/integrations → Notion and share at least one database with the integration. Until then, /api/notion/* 503s — skip Notion work.";
1051
+ readonly skillAnchor: "notion#configuration";
1052
+ readonly legacyErrorCode: "notion_not_configured";
1053
+ readonly retryable: false;
1054
+ };
1055
+ readonly "notion.database_not_found": {
1056
+ readonly expected: "database label registered in notion_databases config";
1057
+ readonly hint: "The `?database=<label>` query did not match a registered alias. The 404 response's `available` array lists configured labels (e.g. 'tasks', 'projects'). To register a new database, edit notion_databases in /settings/integrations → Notion.";
1058
+ readonly skillAnchor: "notion#database-labels";
1059
+ readonly legacyErrorCode: "database_not_found";
1060
+ readonly retryable: false;
1061
+ };
1062
+ readonly "notion.invalid_json_parameter": {
1063
+ readonly expected: "URL-encoded JSON in the 'filter' or 'sorts' query parameters";
1064
+ readonly hint: "GET /api/notion/query accepts `?filter=<json>` and `?sorts=<json>`. The JSON must be URL-encoded — use `encodeURIComponent(JSON.stringify(filterObj))`. Notion filter shape: `{ property: '<name>', <type>: { <op>: <value> } }`. Empty filter: omit the param.";
1065
+ readonly skillAnchor: "notion#query";
1066
+ readonly legacyErrorCode: "invalid_json_parameter";
1067
+ readonly retryable: false;
1068
+ };
1069
+ readonly "notion.invalid_type": {
1070
+ readonly expected: "type query parameter = 'page' | 'data_source'";
1071
+ readonly hint: "Notion search supports two filter types. Omit the parameter to search both, or pass `type=page` (titles) / `type=data_source` (databases). Anything else is rejected.";
1072
+ readonly skillAnchor: "notion#search";
1073
+ readonly legacyErrorCode: "invalid_type";
1074
+ readonly constraint: {
1075
+ readonly type: "enum";
1076
+ readonly enum: readonly ["page", "data_source"];
1077
+ };
1078
+ };
1079
+ readonly "notion.invalid_page_id": {
1080
+ readonly expected: "32-hex UUID or 8-4-4-4-12 hyphenated UUID";
1081
+ readonly hint: "Notion page ids are UUIDs — either 32 hex chars without hyphens or canonical 8-4-4-4-12 form. URL-style ids ('My-Page-abc123…') must be stripped of the title prefix; copy the id from the page's Share menu → Copy link → trailing 32-hex string.";
1082
+ readonly skillAnchor: "notion#page-id";
1083
+ readonly legacyErrorCode: "invalid_page_id";
1084
+ readonly constraint: {
1085
+ readonly type: "string";
1086
+ readonly pattern: "^([0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$";
1087
+ };
1088
+ };
1089
+ readonly "notion.not_found": {
1090
+ readonly expected: "an existing Notion page accessible to the configured integration";
1091
+ readonly hint: "Notion returned 404 / object_not_found. Either the id is wrong, the page is in trash, or the integration token doesn't have access to it. Share the parent page/database with the integration from the Notion UI, then retry.";
1092
+ readonly skillAnchor: "notion#permissions";
1093
+ readonly legacyErrorCode: "not_found";
1094
+ readonly retryable: false;
1095
+ };
1096
+ readonly "notion.invalid_parent": {
1097
+ readonly expected: "parent as database label, { database: '<label>' }, { data_source_id: '<uuid>' }, or { page_id: '<uuid>' }";
1098
+ readonly hint: "Page create needs an explicit parent. Three accepted shapes: string database label ('tasks'), `{ database: 'tasks' }`, `{ data_source_id: '<uuid>' }`, or `{ page_id: '<uuid>' }`. Database labels must be pre-registered (404 above) before using them here.";
1099
+ readonly skillAnchor: "notion#create-page";
1100
+ readonly legacyErrorCode: "invalid_parent";
1101
+ readonly constraint: {
1102
+ readonly required: true;
1103
+ };
1104
+ };
1105
+ readonly "notion.empty_body": {
1106
+ readonly expected: "at least one field to update in the PATCH body";
1107
+ readonly hint: "PATCH /api/notion/pages/:id rejects empty bodies — supply at least one of properties / icon / cover / in_trash. To rename a page, send `{ properties: { title: [{ text: { content: '<new title>' } }] } }`.";
1108
+ readonly skillAnchor: "notion#update-page";
1109
+ readonly legacyErrorCode: "empty_body";
1110
+ readonly retryable: false;
1111
+ };
1112
+ readonly "notion.content_required": {
1113
+ readonly expected: "'content' string in the PATCH body for append/replace_all/replace_range modes";
1114
+ readonly hint: "PATCH /api/notion/pages/:id/content modes 'append', 'replace_all', 'replace_range' all need `content: '<markdown>'`. 'update' mode uses `updates: [{ oldStr, newStr }]` instead. Pass an empty string for content to clear; do not omit the field.";
1115
+ readonly skillAnchor: "notion#content-modes";
1116
+ readonly constraint: {
1117
+ readonly type: "string";
1118
+ readonly required: true;
1119
+ };
1120
+ };
1121
+ readonly "notion.content_range_required": {
1122
+ readonly expected: "'content' AND 'contentRange' strings in 'replace_range' mode";
1123
+ readonly hint: "`mode: 'replace_range'` also needs `contentRange` — the substring of the current page content to replace with `content`. Use 'update' mode if you have many small edits; replace_range is for one contiguous swap.";
1124
+ readonly skillAnchor: "notion#content-modes";
1125
+ readonly constraint: {
1126
+ readonly type: "object";
1127
+ readonly required: true;
1128
+ };
1129
+ };
1130
+ readonly "notion.updates_required": {
1131
+ readonly expected: "non-empty 'updates' array in 'update' mode";
1132
+ readonly hint: "`mode: 'update'` needs `updates: [{ oldStr: '<find>', newStr: '<replace>', replaceAll?: false }, …]` with at least one entry. Use this for multi-spot find-and-replace; for a single large edit use 'replace_range' or 'replace_all'.";
1133
+ readonly skillAnchor: "notion#content-modes";
1134
+ readonly constraint: {
1135
+ readonly type: "array";
1136
+ readonly required: true;
1137
+ readonly minimum: 1;
1138
+ };
1139
+ };
1140
+ readonly "notion.updates_element_invalid": {
1141
+ readonly expected: "every updates element has non-empty 'oldStr' (string) and 'newStr' (string)";
1142
+ readonly hint: "Each entry of `updates[]` must carry both fields. oldStr cannot be empty — that would match everywhere. The response's `message` carries the offending index.";
1143
+ readonly skillAnchor: "notion#content-modes";
1144
+ readonly constraint: {
1145
+ readonly type: "object";
1146
+ };
1147
+ };
1148
+ readonly "notion.invalid_mode": {
1149
+ readonly expected: "mode = 'append' | 'replace_all' | 'replace_range' | 'update'";
1150
+ readonly hint: "PATCH content has exactly four modes. Pick: 'append' (add to end), 'replace_all' (rewrite), 'replace_range' (swap one contiguous chunk), 'update' (multi-spot find-replace). Anything else is rejected.";
1151
+ readonly skillAnchor: "notion#content-modes";
1152
+ readonly legacyErrorCode: "invalid_mode";
1153
+ readonly constraint: {
1154
+ readonly type: "enum";
1155
+ readonly enum: readonly ["append", "replace_all", "replace_range", "update"];
1156
+ };
1157
+ };
1158
+ readonly "notion.upstream_error": {
1159
+ readonly expected: "successful Notion API response";
1160
+ readonly hint: "Notion API call failed. The `error` field tells you which operation tripped (query/search/get/create/update/archive/content_update); the `message` is Notion's verbatim API response. Common cases: 401 (token revoked or rotated — notify the user to re-add in /settings/integrations → Notion, then skip Notion work this turn); 403 (page not shared with the integration — guide the user to open the page in Notion → ··· menu → Add connections → pick the integration, then retry once); 404 (page in trash or id wrong — verify with a search call before retrying); 409 (conflict_error on concurrent edits — re-fetch the page and replay the edit once); 429 (rate limit — Notion caps at 3 req/sec/integration; back off 60s then retry once). Do NOT loop without changing the call shape.";
1161
+ readonly skillAnchor: "notion#errors";
1162
+ readonly retryable: true;
1163
+ };
1164
+ readonly "mail.not_configured": {
1165
+ readonly expected: "at least one active mail account in the account registry";
1166
+ readonly hint: "No mail accounts are set up. The user must add one in /settings/mail (Gmail OAuth, Outlook MSAL, IMAP credentials, etc.). Until then, /api/mail/* 503s — skip the mail branch.";
1167
+ readonly skillAnchor: "mail#accounts";
1168
+ readonly legacyErrorCode: "mail_not_configured";
1169
+ readonly retryable: false;
1170
+ };
1171
+ readonly "mail.blob_store_unavailable": {
1172
+ readonly expected: "encrypted blob store wired into the daemon";
1173
+ readonly hint: "Internal config error — the per-account secrets store is missing. The user must run `aitne doctor` to diagnose; agent cannot recover. Skip mail work this turn.";
1174
+ readonly skillAnchor: "mail#secrets";
1175
+ readonly legacyErrorCode: "blob_store_unavailable";
1176
+ readonly retryable: false;
1177
+ };
1178
+ readonly "mail.unsupported_kind": {
1179
+ readonly expected: "kind = 'gmail' | 'outlook' | 'yahoo' | 'icloud' | 'imap'";
1180
+ readonly hint: "Mail account creation needs an explicit provider kind. Pick from the supported list — the request body's `kind` is the dispatch switch. Use 'imap' for any custom IMAP server (Fastmail, ProtonMail bridge, etc.).";
1181
+ readonly skillAnchor: "mail#account-create";
1182
+ readonly legacyErrorCode: "unsupported_kind";
1183
+ readonly constraint: {
1184
+ readonly type: "enum";
1185
+ readonly enum: readonly ["gmail", "outlook", "yahoo", "icloud", "imap"];
1186
+ };
1187
+ };
1188
+ readonly "mail.outlook_client_config_missing": {
1189
+ readonly expected: "OUTLOOK_CLIENT_ID env var or pre-registered tenant config";
1190
+ readonly hint: "Outlook MSAL needs a registered app's client_id. The user must register an app in Azure AD and set OUTLOOK_CLIENT_ID before /api/mail/accounts can create Outlook rows. Skip Outlook setup; notify the user.";
1191
+ readonly skillAnchor: "mail#outlook-setup";
1192
+ readonly legacyErrorCode: "outlook_client_config_missing";
1193
+ readonly retryable: false;
1194
+ };
1195
+ readonly "mail.account_not_found": {
1196
+ readonly expected: "account id from POST /api/mail/accounts";
1197
+ readonly hint: "No mail account row matches this id. GET /api/mail/accounts to list current ids. Note that DELETE returns 204 + the row drops; reusing the same id afterward will 404.";
1198
+ readonly skillAnchor: "mail#account-crud";
1199
+ readonly legacyErrorCode: "not_found";
1200
+ readonly retryable: false;
1201
+ };
1202
+ readonly "mail.oauth_timeout": {
1203
+ readonly expected: "user completes the OAuth consent flow within the timeout";
1204
+ readonly hint: "OAuth pairing timed out waiting for the user to grant consent in the browser. Notify the user that they need to finish the consent flow (open the link the dashboard surfaced) and retry the pair step.";
1205
+ readonly skillAnchor: "mail#oauth";
1206
+ readonly legacyErrorCode: "oauth_timeout";
1207
+ readonly retryable: true;
1208
+ };
1209
+ readonly "mail.invalid_body": {
1210
+ readonly expected: "JSON body matching the per-endpoint shape";
1211
+ readonly hint: "Mail endpoint body missing or malformed — `message` names the specific offender (e.g. 'clientId required', 'read: boolean required', 'add/remove labels required'). Common shapes by endpoint: POST /mail/accounts — `{ kind, displayName?, ... }` (provider-specific extras); PATCH /mail/messages/:id/read — `{ read: boolean }`; PATCH /mail/messages/:id/labels — `{ add?: string[], remove?: string[] }` (at least one); POST /mail/send — see mail.validation_failed for the send contract. Read `message` verbatim, supply the missing field, and resubmit; do NOT retry the same body.";
1212
+ readonly skillAnchor: "mail#request-shapes";
1213
+ readonly legacyErrorCode: "invalid_body";
1214
+ readonly constraint: {
1215
+ readonly type: "object";
1216
+ readonly required: true;
1217
+ };
1218
+ };
1219
+ readonly "mail.not_implemented": {
1220
+ readonly expected: "operation supported by the resolved provider";
1221
+ readonly hint: "This operation is not available on the resolved provider. `message` names the gap (e.g. 'untrash not supported on imap', 'listDrafts not supported on imap'). Known gaps: IMAP cannot manage drafts (no DRAFTS folder semantics — compose via SMTP send instead); IMAP cannot untrash once a message hits `\\Deleted` + EXPUNGE; Yahoo/iCloud have no thread API (use search by subject as a fallback); only Gmail exposes label semantics, others use folder moves. If the agent's intent requires this provider's data, skip the operation and surface to the user — do NOT retry the same call.";
1222
+ readonly skillAnchor: "mail#provider-matrix";
1223
+ readonly legacyErrorCode: "not_implemented";
1224
+ readonly retryable: false;
1225
+ };
1226
+ readonly "mail.provider_auth_error": {
1227
+ readonly expected: "valid OAuth/IMAP credentials for the resolved account";
1228
+ readonly hint: "Provider returned 401/403 — credentials are revoked, expired, or insufficient. Notify the user to re-link the account in /settings/mail; the agent cannot refresh OAuth interactively. Skip mail operations until the user confirms.";
1229
+ readonly skillAnchor: "mail#errors";
1230
+ readonly legacyErrorCode: "provider_auth_error";
1231
+ readonly retryable: false;
1232
+ };
1233
+ readonly "mail.validation_failed": {
1234
+ readonly expected: "send body matching the validateSendInput contract";
1235
+ readonly hint: "Send-mail body failed validation. The `errors` array carries per-field issues; fix every listed entry before retrying. Required fields: `to` (non-empty array of string emails or `{ email, name? }` objects), at least one of `subject`/`body`/`draftId`. Optional: `cc`/`bcc` (same shape as `to`), `replyTo` (single recipient), `inReplyTo` (RFC 822 message-id of the parent for thread continuation), `attachments` (array of `{ filename, mimeType, contentBase64 }` — all three are required per attachment). Address fields reject bare names without `@`; encode display names via the `{ email, name }` form, not RFC-2822 `Name <addr>` strings.";
1236
+ readonly skillAnchor: "mail#send";
1237
+ readonly legacyErrorCode: "validation_failed";
1238
+ };
1239
+ readonly "mail.upstream_error": {
1240
+ readonly expected: "successful provider API response";
1241
+ readonly hint: "Mail provider returned an unexpected error. `error` is the per-route tag (`mail_list_failed`, `mail_send_failed`, …); `message` is the provider's verbatim text. Transient = 5xx, ECONNRESET, ETIMEDOUT, IMAP NO/BAD with text mentioning 'temporary' — retry ONCE after 30s, then skip. Permanent = 4xx, IMAP NO with mailbox/permission text, SMTP 5xx — do NOT retry; notify the user with the verbatim `message` and skip the mail branch. After two consecutive retries on the same account, treat as permanent regardless of code.";
1242
+ readonly skillAnchor: "mail#errors";
1243
+ readonly retryable: true;
1244
+ };
1245
+ readonly "knowledge.event_bus_unavailable": {
1246
+ readonly expected: "EventBus wired into the API server";
1247
+ readonly hint: "The event bus is not constructed — daemon is starting up or in degraded mode. Wait ~5s and retry; if it persists, the agent should skip and notify the user. Do not loop tight.";
1248
+ readonly skillAnchor: "knowledge#bus";
1249
+ readonly legacyErrorCode: "event_bus_unavailable";
1250
+ readonly retryable: true;
1251
+ };
1252
+ readonly "knowledge.empty_file": {
1253
+ readonly expected: "non-empty file payload";
1254
+ readonly hint: "The uploaded file was 0 bytes after multipart parse — likely a curl typo (`-F 'file=@'` with empty path) or a download race. Re-fetch the source and resubmit.";
1255
+ readonly skillAnchor: "knowledge#upload";
1256
+ readonly legacyErrorCode: "empty_file";
1257
+ readonly constraint: {
1258
+ readonly type: "string";
1259
+ readonly minLength: 1;
1260
+ };
1261
+ };
1262
+ readonly "observations.invalid_actor": {
1263
+ readonly expected: "actor = 'user' | 'agent' | 'system'";
1264
+ readonly hint: "The `?actor=` filter accepts only `user`, `agent`, or `system`. `user` is the hourly-check default (excludes agent's own writes). Omit to get all observations.";
1265
+ readonly skillAnchor: "observations#actor-filter";
1266
+ readonly legacyErrorCode: "invalid_actor";
1267
+ readonly constraint: {
1268
+ readonly type: "enum";
1269
+ readonly enum: readonly ["user", "agent", "system"];
1270
+ };
1271
+ };
1272
+ readonly "observations.invalid_json_body": {
1273
+ readonly expected: "syntactically valid JSON consume body";
1274
+ readonly hint: "POST /api/observations/consume body failed JSON parse. The body shape is `{ ids: number[], cursor?: string }`. Verify quoting and array shape before re-sending.";
1275
+ readonly skillAnchor: "observations#consume";
1276
+ readonly legacyErrorCode: "invalid_json_body";
1277
+ readonly retryable: false;
1278
+ };
1279
+ readonly "recurring_schedules.invalid_id": {
1280
+ readonly expected: "positive integer id from GET /api/recurring-schedules";
1281
+ readonly hint: "The `:id` route param must be a positive integer. GET /api/recurring-schedules to list ids. URL-encoded ids and decimal ids are rejected.";
1282
+ readonly skillAnchor: "recurring-schedules#crud";
1283
+ readonly legacyErrorCode: "invalid_id";
1284
+ readonly constraint: {
1285
+ readonly type: "integer";
1286
+ readonly minimum: 1;
1287
+ };
1288
+ };
1289
+ readonly "recurring_schedules.not_found": {
1290
+ readonly expected: "an existing recurring_schedules row";
1291
+ readonly hint: "PATCH/DELETE on an id that doesn't exist. GET /api/recurring-schedules to discover current ids; rows are pruned when the user disables them via the dashboard.";
1292
+ readonly skillAnchor: "recurring-schedules#crud";
1293
+ readonly legacyErrorCode: "not_found";
1294
+ readonly retryable: false;
1295
+ };
1296
+ readonly "recurring_schedules.validation_error": {
1297
+ readonly expected: "body matching recurringScheduleSchema (cron-like + payload)";
1298
+ readonly hint: "Zod validation failed. The `details` field lists per-field issues. Required shape: `{ cron: '<cron expr>', taskType: 'wake'|'dm_session'|…, description: '<20+ chars>', taskContext: {...} }`. Use a cron expression validator (e.g. crontab.guru) before submitting.";
1299
+ readonly skillAnchor: "recurring-schedules#schema";
1300
+ readonly legacyErrorCode: "validation_error";
1301
+ };
1302
+ readonly "travel_bookings.invalid_type": {
1303
+ readonly expected: "one of 'flight' | 'hotel' | 'restaurant' | 'train' | 'bus' | 'other'";
1304
+ readonly hint: "The `?type=` filter must be a registered travel kind. The 400 response carries the `validTypes` array verbatim — pick from it or omit the filter to get all kinds. Spelling matters: 'plane' / 'flights' are rejected; use 'flight'.";
1305
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-filters";
1306
+ readonly legacyErrorCode: "invalid_type";
1307
+ readonly constraint: {
1308
+ readonly type: "enum";
1309
+ readonly enum: readonly ["flight", "hotel", "restaurant", "train", "bus", "other"];
1310
+ };
1311
+ };
1312
+ readonly "travel_bookings.invalid_status": {
1313
+ readonly expected: "one of 'upcoming' | 'completed' | 'cancelled' | 'all' (filter) or 'upcoming' | 'completed' | 'cancelled' (PATCH)";
1314
+ readonly hint: "Status values are constrained. Filter (?status=) accepts 'all' as the no-op; PATCH body { status } does NOT — pick one of the three concrete states. The 400 response's `validStatuses` / `valid` array carries the live list.";
1315
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-status";
1316
+ readonly legacyErrorCode: "invalid_status";
1317
+ };
1318
+ readonly "travel_bookings.invalid_id": {
1319
+ readonly expected: "positive integer id from GET /api/travel-bookings";
1320
+ readonly hint: "PATCH /api/travel-bookings/:id needs a numeric row id. GET /api/travel-bookings to discover live ids; the response items carry `.id`. URL-encoded and decimal ids are rejected.";
1321
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-crud";
1322
+ readonly legacyErrorCode: "invalid_id";
1323
+ readonly constraint: {
1324
+ readonly type: "integer";
1325
+ readonly minimum: 1;
1326
+ };
1327
+ };
1328
+ readonly "travel_bookings.invalid_json": {
1329
+ readonly expected: "syntactically valid JSON body";
1330
+ readonly hint: "PATCH body failed JSON.parse(). Check for trailing commas, single quotes, or unescaped newlines. Use jq -nc to validate before piping into curl --data-binary.";
1331
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-request-shape";
1332
+ readonly legacyErrorCode: "invalid_json";
1333
+ readonly retryable: false;
1334
+ };
1335
+ readonly "travel_bookings.no_updates": {
1336
+ readonly expected: "PATCH body containing at least one of { status, destination }";
1337
+ readonly hint: "PATCH /api/travel-bookings/:id rejects empty bodies. Supply at least one mutable field — currently `status` ('upcoming'|'completed'|'cancelled') or `destination` (string). Other columns are immutable; re-ingest from mail to change them.";
1338
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-patch";
1339
+ readonly legacyErrorCode: "no_updates";
1340
+ readonly retryable: false;
1341
+ };
1342
+ readonly "travel_bookings.not_found": {
1343
+ readonly expected: "an existing travel_bookings row matching :id";
1344
+ readonly hint: "PATCH targeted a row id that does not exist. GET /api/travel-bookings to discover current ids; rows can be pruned when a cancellation mail is reconciled. Do not retry the same id.";
1345
+ readonly skillAnchor: "gmail-lifestyle#travel-bookings-crud";
1346
+ readonly legacyErrorCode: "not_found";
1347
+ readonly retryable: false;
1348
+ };
1349
+ readonly "receipts.invalid_id": {
1350
+ readonly expected: "positive integer id from GET /api/receipts";
1351
+ readonly hint: "The `:id` route param must be a positive integer. GET /api/receipts to list current ids; receipts are pruned when the source mail is deleted. URL-encoded and decimal ids are rejected.";
1352
+ readonly skillAnchor: "gmail-lifestyle#receipts-crud";
1353
+ readonly legacyErrorCode: "invalid_id";
1354
+ readonly constraint: {
1355
+ readonly type: "integer";
1356
+ readonly minimum: 1;
1357
+ };
1358
+ };
1359
+ readonly "receipts.not_found": {
1360
+ readonly expected: "an existing receipts row matching :id";
1361
+ readonly hint: "No receipt row exists with that id. Re-list with GET /api/receipts (filters: ?category=, ?saved=true|false) to find the right id. Rows are removed when the source mail message is purged by IMAP reconciliation.";
1362
+ readonly skillAnchor: "gmail-lifestyle#receipts-crud";
1363
+ readonly legacyErrorCode: "not_found";
1364
+ readonly retryable: false;
1365
+ };
1366
+ readonly "receipts.no_updates": {
1367
+ readonly expected: "PATCH body containing at least one of { obsidianPath, category }";
1368
+ readonly hint: "PATCH /api/receipts/:id needs at least one mutable field. Currently `obsidianPath` (sets saved_at to now) or `category` ('document'|'travel'). Pass both to file a receipt under Obsidian and re-tag in one shot.";
1369
+ readonly skillAnchor: "gmail-lifestyle#receipts-patch";
1370
+ readonly legacyErrorCode: "no_updates";
1371
+ readonly retryable: false;
1372
+ };
1373
+ readonly "receipts.attachment_too_large": {
1374
+ readonly expected: "receipt attachment <= 100 MB";
1375
+ readonly hint: "Download blocked by the 100 MB ceiling to avoid OOM. The `maxBytes` field carries the limit. For attachments above this, ask the user to download via the mail provider's web UI instead. Do not retry — the size won't shrink.";
1376
+ readonly skillAnchor: "gmail-lifestyle#receipts-download-limits";
1377
+ readonly legacyErrorCode: "attachment_too_large";
1378
+ readonly retryable: false;
1379
+ };
1380
+ readonly "receipts.mail_not_configured": {
1381
+ readonly expected: "mail registry available with at least one active account";
1382
+ readonly hint: "Receipt download proxies through the originating mail account. The mail registry is not wired in — either no accounts are configured yet, or the daemon is in degraded mode. Notify the user; skip receipt downloads this turn.";
1383
+ readonly skillAnchor: "gmail-lifestyle#receipts-download";
1384
+ readonly legacyErrorCode: "mail_not_configured";
1385
+ readonly retryable: false;
1386
+ };
1387
+ readonly "receipts.orphaned_receipt": {
1388
+ readonly expected: "receipt row with a non-null account_id linked to an active mail account";
1389
+ readonly hint: "The receipt has account_id=NULL, so the daemon can't pick a provider to fetch the attachment. This typically means the originating mail account was deleted. Either re-ingest the receipt from the new account, or skip the download — there is no recovery from this state without re-ingest.";
1390
+ readonly skillAnchor: "gmail-lifestyle#receipts-account-link";
1391
+ readonly legacyErrorCode: "orphaned_receipt";
1392
+ readonly retryable: false;
1393
+ };
1394
+ readonly "receipts.account_not_found": {
1395
+ readonly expected: "account_id matching an active row in the mail account registry";
1396
+ readonly hint: "The receipt's account_id does not resolve to any registered mail account. The account was likely removed in /settings/mail. Either re-add it (the user must re-link) or skip the download.";
1397
+ readonly skillAnchor: "gmail-lifestyle#receipts-account-link";
1398
+ readonly legacyErrorCode: "account_not_found";
1399
+ readonly retryable: false;
1400
+ };
1401
+ readonly "receipts.attachment_download_not_supported": {
1402
+ readonly expected: "originating provider supports per-attachment download";
1403
+ readonly hint: "This provider (e.g. an IMAP server without UID FETCH attachment selectors) cannot download individual attachments. The `provider` field names the kind. Ask the user to fetch the attachment via the provider's native UI; do not retry.";
1404
+ readonly skillAnchor: "gmail-lifestyle#receipts-download";
1405
+ readonly legacyErrorCode: "attachment_download_not_supported";
1406
+ readonly retryable: false;
1407
+ };
1408
+ readonly "receipts.attachment_not_found": {
1409
+ readonly expected: "provider returns a non-null attachment payload for the recorded (msg, attachment) pair";
1410
+ readonly hint: "The mail provider returned null when asked for the attachment — typically the source message was deleted or moved out of the All Mail label. Skip the download and offer to remove the orphan row by PATCHing category='deleted' or by user action.";
1411
+ readonly skillAnchor: "gmail-lifestyle#receipts-download";
1412
+ readonly legacyErrorCode: "attachment_not_found";
1413
+ readonly retryable: false;
1414
+ };
1415
+ readonly "books.invalid_id": {
1416
+ readonly expected: "positive integer id from GET /api/books";
1417
+ readonly hint: "Book id must be a positive integer. GET /api/books?limit=200 to list current ids; URL-encoded and decimal ids are rejected.";
1418
+ readonly skillAnchor: "books#crud";
1419
+ readonly legacyErrorCode: "invalid_id";
1420
+ readonly constraint: {
1421
+ readonly type: "integer";
1422
+ readonly minimum: 1;
1423
+ };
1424
+ };
1425
+ readonly "books.not_found": {
1426
+ readonly expected: "an existing books row matching :id";
1427
+ readonly hint: "No book row exists with that id. GET /api/books to discover current ids, or POST /api/books/import-clippings / import-notebook-html to create rows from Kindle exports.";
1428
+ readonly skillAnchor: "books#crud";
1429
+ readonly legacyErrorCode: "not_found";
1430
+ readonly retryable: false;
1431
+ };
1432
+ readonly "books.invalid_json": {
1433
+ readonly expected: "syntactically valid JSON body";
1434
+ readonly hint: "Body failed JSON.parse(). Check for trailing commas, single quotes, or unescaped newlines in the clipping/HTML text. Use jq -nc to validate before piping into curl --data-binary.";
1435
+ readonly skillAnchor: "books#request-shape";
1436
+ readonly legacyErrorCode: "invalid_json";
1437
+ readonly retryable: false;
1438
+ };
1439
+ readonly "books.invalid_status": {
1440
+ readonly expected: "one of 'reading' | 'completed' | 'abandoned'";
1441
+ readonly hint: "Book status whitelist. The 400 response carries the `valid` array verbatim. To delete a book, use 'abandoned' (no DELETE endpoint by design — keeps the highlights linkable).";
1442
+ readonly skillAnchor: "books#status";
1443
+ readonly legacyErrorCode: "invalid_status";
1444
+ readonly constraint: {
1445
+ readonly type: "enum";
1446
+ readonly enum: readonly ["reading", "completed", "abandoned"];
1447
+ };
1448
+ };
1449
+ readonly "books.rating_must_be_1_to_5": {
1450
+ readonly expected: "integer between 1 and 5 (inclusive) for the `rating` field";
1451
+ readonly hint: "Rating uses a 5-star scale. Pass an integer 1–5; decimals and out-of-range values are rejected. Omit the field if you don't want to rate the book.";
1452
+ readonly skillAnchor: "books#rating";
1453
+ readonly legacyErrorCode: "rating_must_be_1_to_5";
1454
+ readonly constraint: {
1455
+ readonly type: "integer";
1456
+ readonly minimum: 1;
1457
+ readonly maximum: 5;
1458
+ };
1459
+ };
1460
+ readonly "books.no_updates": {
1461
+ readonly expected: "PATCH body containing at least one of { status, rating, notes }";
1462
+ readonly hint: "PATCH /api/books/:id needs at least one mutable field. Currently `status` ('reading'|'completed'|'abandoned'), `rating` (1–5), or `notes` (free string). Setting status='completed' also stamps completed_at automatically.";
1463
+ readonly skillAnchor: "books#patch";
1464
+ readonly legacyErrorCode: "no_updates";
1465
+ readonly retryable: false;
1466
+ };
1467
+ readonly "books.payload_too_large": {
1468
+ readonly expected: "request body <= 10 MB";
1469
+ readonly hint: "Clipping/notebook-HTML imports cap at 10 MB. Typical Kindle My Clippings.txt is under 5 MB; a 10 MB+ payload suggests duplicate concatenation or stray binary data. Split the file or ask the user to re-export.";
1470
+ readonly skillAnchor: "books#import-limits";
1471
+ readonly legacyErrorCode: "payload_too_large";
1472
+ readonly retryable: false;
1473
+ };
1474
+ readonly "books.data_required": {
1475
+ readonly expected: "non-empty 'data' string in the import-clippings body";
1476
+ readonly hint: "POST /api/books/import-clippings requires `{ data: '<clippings.txt content>' }`. Pass the raw text content (the parser handles ==== separators and the standard Kindle header lines).";
1477
+ readonly skillAnchor: "books#import-clippings";
1478
+ readonly legacyErrorCode: "data_required";
1479
+ readonly constraint: {
1480
+ readonly type: "string";
1481
+ readonly required: true;
1482
+ readonly minLength: 1;
1483
+ };
1484
+ };
1485
+ readonly "books.html_required": {
1486
+ readonly expected: "non-empty 'html' string in the import-notebook-html body";
1487
+ readonly hint: "POST /api/books/import-notebook-html requires `{ html: '<email HTML>', subject?, date? }`. Pass the raw HTML payload from the Kindle 'Export Notebook' email; subject/date are used as fallbacks when the HTML lacks an explicit title or timestamp.";
1488
+ readonly skillAnchor: "books#import-notebook-html";
1489
+ readonly legacyErrorCode: "html_required";
1490
+ readonly constraint: {
1491
+ readonly type: "string";
1492
+ readonly required: true;
1493
+ readonly minLength: 1;
1494
+ };
1495
+ };
1496
+ readonly "books.unrecognized_format": {
1497
+ readonly expected: "Kindle notebook HTML matching the parser's known shapes";
1498
+ readonly hint: "HTML didn't match any known Kindle notebook export shape. Three likely causes: (a) Amazon changed the export template — the agent cannot adapt, surface to the user and ask for a re-export; (b) the HTML was already converted to plain text before upload (e.g. via a 'Save as PDF'/'Print to plain text' detour) — request the original .html attachment from the Kindle 'Export Notebook' email; (c) wrong source (Goodreads, Apple Books, etc.) — only Kindle is supported here. Recovery for the user: open https://read.amazon.com → pick the book → Notebook (right rail) → Export → 'Send as email' → forward the .html attachment without modification. Do NOT retry without a different payload.";
1499
+ readonly skillAnchor: "books#import-notebook-html";
1500
+ readonly legacyErrorCode: "unrecognized_format";
1501
+ readonly retryable: false;
1502
+ };
1503
+ readonly "repositories.not_found": {
1504
+ readonly expected: "an existing repositories row matching :id, slug, or `github:owner/repo`";
1505
+ readonly hint: "GET /api/repositories to list current rows. The `:id` route param accepts the row id, the `localPath` absolute path, or a `github:<owner>/<repo>` slug. Rows are removed via DELETE — the agent cannot recreate one without explicit user intent.";
1506
+ readonly skillAnchor: "repositories#crud";
1507
+ readonly legacyErrorCode: "not_found";
1508
+ readonly retryable: false;
1509
+ };
1510
+ readonly "repositories.event_bus_unavailable": {
1511
+ readonly expected: "EventBus wired into the API server";
1512
+ readonly hint: "The daemon is starting up or in degraded mode — the EventBus that schedules repository runs is not yet available. Wait ~5s and retry once; if it persists, skip the repository run and notify the user.";
1513
+ readonly skillAnchor: "repositories#run";
1514
+ readonly legacyErrorCode: "event_bus_unavailable";
1515
+ readonly retryable: true;
1516
+ };
1517
+ readonly "repositories.validation_error": {
1518
+ readonly expected: "request body fields satisfying the run/trigger contract";
1519
+ readonly hint: "A required field is missing or has the wrong shape — `message` names the offender (e.g. 'name is required', 'backend must be claude/codex/gemini', 'prompt is required'). Read the message verbatim and supply the field. Most repository POST bodies need at minimum `{ backend, model, workdirMode, prompt }` (run) or `{ name, eventType, backend, model, workdirMode, prompt }` (trigger).";
1520
+ readonly skillAnchor: "repositories#schemas";
1521
+ readonly legacyErrorCode: "validation_error";
1522
+ };
1523
+ readonly "repositories.model_invalid": {
1524
+ readonly expected: "model registered for the chosen backend in process_backend_config";
1525
+ readonly hint: "The (backend, model) pair is rejected because the model isn't listed in the backend's model registry. GET /api/backends/models?backend=<backend> to list valid models for that backend. Common: passing 'sonnet' alias to codex/gemini — they need full ids like 'claude-sonnet-4-6' or 'gemini-2.5-pro'.";
1526
+ readonly skillAnchor: "repositories#run";
1527
+ readonly legacyErrorCode: "model_invalid";
1528
+ readonly retryable: false;
1529
+ };
1530
+ readonly "repositories.local_clone_required": {
1531
+ readonly expected: "repositories row with a non-null localPath";
1532
+ readonly hint: "The operation needs a local git clone — management init/scan/refresh-architecture and `workdirMode='local-clone'` runs all require it. Either POST /api/repositories/:id/link-local first with a clone path, or pick `workdirMode='temp'` for run-in-temp.";
1533
+ readonly skillAnchor: "repositories#dual-sided";
1534
+ readonly legacyErrorCode: "local_clone_required";
1535
+ readonly retryable: false;
1536
+ };
1537
+ readonly "repositories.instruction_required": {
1538
+ readonly expected: "`instructionMd` string when workdirMode='temp'";
1539
+ readonly hint: "run-in-temp needs an explicit instruction markdown — the temp clone has no project context to ground the agent. Either provide `instructionMd` (markdown the agent will read first) or switch to `workdirMode='local-clone'` if a clone is registered.";
1540
+ readonly skillAnchor: "repositories#run";
1541
+ readonly legacyErrorCode: "instruction_required";
1542
+ readonly retryable: false;
1543
+ };
1544
+ readonly "repositories.already_in_flight": {
1545
+ readonly expected: "no in-flight git.project.refresh_architecture row for this repo";
1546
+ readonly hint: "An architecture refresh is already pending or running. Two concurrent runs would race on the overview.md chokepoint write and burn model quota. Poll GET /api/repositories/:id/management → architectureRefresh.status until it leaves 'pending'/'running', or just wait for the next dashboard refresh.";
1547
+ readonly skillAnchor: "repositories#refresh-architecture";
1548
+ readonly legacyErrorCode: "already_in_flight";
1549
+ readonly retryable: true;
1550
+ };
1551
+ readonly "repositories.no_overview": {
1552
+ readonly expected: "overview.md exists for this repository";
1553
+ readonly hint: "PUT /architecture-section can only replace the Architecture block of an existing overview.md. Run POST /api/repositories/:id/management/init first to create the skeleton, then retry the PUT.";
1554
+ readonly skillAnchor: "repositories#architecture-section";
1555
+ readonly legacyErrorCode: "no_overview";
1556
+ readonly retryable: false;
1557
+ };
1558
+ readonly "repositories.payload_too_large": {
1559
+ readonly expected: "architecture-section markdown body within the size limit";
1560
+ readonly hint: "The markdown body exceeds the per-section byte cap. Shorten the section — focus on stable architecture (modules, dataflow, key invariants), not change history. Split overlapping content out into other overview sections via init/scan instead.";
1561
+ readonly skillAnchor: "repositories#architecture-section";
1562
+ readonly legacyErrorCode: "payload_too_large";
1563
+ readonly retryable: false;
1564
+ };
1565
+ readonly "repositories.management_init_failed": {
1566
+ readonly expected: "successful init of git/<slug>/overview.md";
1567
+ readonly hint: "Init failed mid-pipeline (skeleton write OR architecture-refresh enqueue). `message` carries the underlying error verbatim. Diagnose by branch: 'ENOENT' / 'EACCES' on the localPath → user must remount the clone or fix permissions; 'fatal:' from git → the clone is corrupt (suggest `git fsck`); 'UNIQUE constraint failed' → an in-flight init/refresh already exists, wait for it to terminal then re-call; any other text → schema drift, do not loop. Skip the repository for this turn and surface ONE notification with the verbatim `message`.";
1568
+ readonly skillAnchor: "repositories#management-init";
1569
+ readonly legacyErrorCode: "management_init_failed";
1570
+ readonly retryable: false;
1571
+ };
1572
+ readonly "repositories.architecture_refresh_enqueue_failed": {
1573
+ readonly expected: "successful insert of a git.project.refresh_architecture schedule row";
1574
+ readonly hint: "Could not enqueue the architecture-refresh agent run. The underlying error is in `message`. Don't auto-retry — typically a schema/migration drift or an EventBus shutdown. Surface to the user.";
1575
+ readonly skillAnchor: "repositories#refresh-architecture";
1576
+ readonly legacyErrorCode: "architecture_refresh_enqueue_failed";
1577
+ readonly retryable: false;
1578
+ };
1579
+ readonly "repositories.architecture_section_write_failed": {
1580
+ readonly expected: "successful in-process write of overview.md's Architecture block";
1581
+ readonly hint: "The Architecture section write to overview.md failed. `message` carries the underlying file/IO error. Inspect `git/<slug>/overview.md` manually if writable; otherwise surface to the user.";
1582
+ readonly skillAnchor: "repositories#architecture-section";
1583
+ readonly legacyErrorCode: "architecture_section_write_failed";
1584
+ readonly retryable: false;
1585
+ };
1586
+ readonly "repositories.management_scan_failed": {
1587
+ readonly expected: "successful management scan run";
1588
+ readonly hint: "Daily management scan failed mid-run. `message` carries the underlying error. Common causes and the right next step: 'git fetch failed' / network text → clone is offline; skip until network returns, do not retry this turn. 'journal write failed' (EACCES/ENOSPC) → vault is read-only or full; surface to the user with the verbatim path and stop scanning. GitHub rate-limited → the secondary limit hit (see github.rate_limited); next cron tick (1h+) will succeed naturally. The scan row is marked 'failed' for audit even though the row itself is unrecoverable — do NOT enqueue a manual retry, let the daily cron fire.";
1589
+ readonly skillAnchor: "repositories#management-scan";
1590
+ readonly legacyErrorCode: "management_scan_failed";
1591
+ readonly retryable: false;
1592
+ };
1593
+ readonly "repositories.internal_error": {
1594
+ readonly expected: "no unexpected exception inside the store";
1595
+ readonly hint: "RepositoryStore threw an unrecognised error. `message` carries the verbatim exception. This is typically a schema/migration drift; do not retry without operator action.";
1596
+ readonly skillAnchor: "repositories#errors";
1597
+ readonly legacyErrorCode: "internal_error";
1598
+ readonly retryable: false;
1599
+ };
1600
+ readonly "mcp.not_found": {
1601
+ readonly expected: "an existing mcp_servers row matching :id";
1602
+ readonly hint: "GET /api/mcp/servers to list current ids. MCP server rows are added via POST /api/mcp/servers; the agent cannot create them — surface to the user if a referenced server is missing.";
1603
+ readonly skillAnchor: "mcp#crud";
1604
+ readonly legacyErrorCode: "not_found";
1605
+ readonly retryable: false;
1606
+ };
1607
+ readonly "mcp.invalid_input": {
1608
+ readonly expected: "request body matching the MCP server / patch / secret schema";
1609
+ readonly hint: "Body failed Zod validation. The `issues` array carries per-field paths — fix each one and resubmit. Common: transport must be 'stdio'|'sse'|'http'|'docker'; backends must be a non-empty array of registered backend ids; envKeys/headerKeys must be non-empty strings.";
1610
+ readonly skillAnchor: "mcp#schemas";
1611
+ readonly legacyErrorCode: "invalid_input";
1612
+ };
1613
+ readonly "mcp.duplicate": {
1614
+ readonly expected: "no existing mcp_servers row with the same id";
1615
+ readonly hint: "An MCP server with this id already exists. Either PATCH /api/mcp/servers/:id to update the existing row, or pick a different id (ids are user-visible — e.g. 'my-notion', 'acme-mcp/coda').";
1616
+ readonly skillAnchor: "mcp#duplicate";
1617
+ readonly legacyErrorCode: "duplicate";
1618
+ readonly retryable: false;
1619
+ };
1620
+ readonly "mcp.internal_error": {
1621
+ readonly expected: "no unexpected exception inside the MCP registry";
1622
+ readonly hint: "Internal error during MCP CRUD. Inspect daemon logs for the stack; the route does not surface implementation detail to the agent. Do not retry — typically a schema/migration drift or a corrupted secrets blob.";
1623
+ readonly skillAnchor: "mcp#errors";
1624
+ readonly legacyErrorCode: "internal_error";
1625
+ readonly retryable: false;
1626
+ };
1627
+ readonly "mcp.server_disabled": {
1628
+ readonly expected: "MCP server row with enabled=1";
1629
+ readonly hint: "Probe is rejected because the server is currently disabled. Enable via POST /api/mcp/servers/:id/enable (Approve tier — the dashboard owns this), or notify the user to enable it before retrying.";
1630
+ readonly skillAnchor: "mcp#probe";
1631
+ readonly legacyErrorCode: "server_disabled";
1632
+ readonly retryable: false;
1633
+ };
1634
+ readonly "mcp.probe_failed": {
1635
+ readonly expected: "MCP probe completes without throwing at the transport layer";
1636
+ readonly hint: "The probe transport threw an unexpected error (not a normal `{ ok: false }` probe result, which is persisted normally). `message` carries the verbatim failure. Common: the configured command/binary is missing, the URL is unreachable, or an env-key secret is unset.";
1637
+ readonly skillAnchor: "mcp#probe";
1638
+ readonly legacyErrorCode: "probe_failed";
1639
+ readonly retryable: true;
1640
+ };
1641
+ readonly "mcp.unknown_key": {
1642
+ readonly expected: "keyName declared in the server's envKeys or headerKeys";
1643
+ readonly hint: "Secret keyName must match one of the strings configured on the server. PATCH /api/mcp/servers/:id with the new key in envKeys (for stdio servers) or headerKeys (for HTTP/SSE) before writing the secret value.";
1644
+ readonly skillAnchor: "mcp#secrets";
1645
+ readonly legacyErrorCode: "unknown_key";
1646
+ readonly retryable: false;
1647
+ };
1648
+ readonly "mcp.gemini_cli_not_found": {
1649
+ readonly expected: "`gemini` CLI binary resolvable on the daemon's PATH";
1650
+ readonly hint: "POST /api/mcp/gemini-install needs the Gemini CLI installed and on PATH. Notify the user to install it from https://github.com/google-gemini/gemini-cli and re-run `aitne doctor` to confirm resolution.";
1651
+ readonly skillAnchor: "mcp#gemini-install";
1652
+ readonly legacyErrorCode: "gemini_cli_not_found";
1653
+ readonly retryable: false;
1654
+ };
1655
+ readonly "mcp.install_failed": {
1656
+ readonly expected: "successful `gemini extensions install` / `gemini mcp add` invocation";
1657
+ readonly hint: "Gemini CLI exited non-zero. `stdout`/`stderr` on the response are verbatim — read both. Common branches: 'not authenticated' / 'login required' → user must run `gemini auth login` first, the agent cannot complete OAuth interactively; 'ECONNREFUSED' / 'ENOTFOUND' → npm registry/network blocked, surface and skip; 'already installed' at a different version → DELETE /api/mcp/servers/:id then re-POST with the desired version, OR install via the dashboard's /settings/integrations → MCP card which handles version pinning. Idempotent re-runs short-circuit with `alreadyInstalled: true`, so reaching this code means a real failure — do NOT retry the same call.";
1658
+ readonly skillAnchor: "mcp#gemini-install";
1659
+ readonly legacyErrorCode: "install_failed";
1660
+ readonly retryable: false;
1661
+ };
1662
+ readonly "skills.invalid_form": {
1663
+ readonly expected: "multipart/form-data body with at least a `file` field";
1664
+ readonly hint: "Skill upload requires multipart/form-data. application/json and x-www-form-urlencoded are rejected. Use `curl -F 'file=@SKILL.md' -F 'name=<slug>'` for shell uploads.";
1665
+ readonly skillAnchor: "skills#upload";
1666
+ readonly legacyErrorCode: "invalid_form";
1667
+ readonly retryable: false;
1668
+ };
1669
+ readonly "skills.file_field_required": {
1670
+ readonly expected: "multipart 'file' part containing the SKILL.md content";
1671
+ readonly hint: "The multipart parsed but did not include a `file` field. Add `-F 'file=@<path>'` (or the equivalent in your client) — the file part is required.";
1672
+ readonly skillAnchor: "skills#upload";
1673
+ readonly legacyErrorCode: "file field required";
1674
+ readonly retryable: false;
1675
+ };
1676
+ readonly "skills.builtin_protected": {
1677
+ readonly expected: "skill name not matching a built-in slug";
1678
+ readonly hint: "Built-in skills are read-only — they ship with the daemon and are owned by `agent-assets/skills/`. Pick a different slug for user skills (e.g. add a prefix like `user-` or `<your-handle>-`). GET /skills/sources to see built-in slugs.";
1679
+ readonly skillAnchor: "skills#builtin-protection";
1680
+ readonly legacyErrorCode: "builtin_protected";
1681
+ readonly retryable: false;
1682
+ };
1683
+ readonly "skills.file_too_large": {
1684
+ readonly expected: "uploaded SKILL.md file <= 256 KB";
1685
+ readonly hint: "SKILL.md uploads cap at 256 KB. A larger file usually means embedded binary content or accidentally-included generated output. Trim the file and re-upload; consider linking out to longer prose rather than inlining.";
1686
+ readonly skillAnchor: "skills#upload-limits";
1687
+ readonly legacyErrorCode: "file_too_large";
1688
+ readonly retryable: false;
1689
+ };
1690
+ readonly "skills.invalid_encoding": {
1691
+ readonly expected: "valid UTF-8 file content";
1692
+ readonly hint: "The uploaded file is not valid UTF-8 — likely a binary file renamed to .md. Re-export as plain UTF-8 text. macOS Notes / Pages exports particularly often include BOMs and surrogate pairs that trip the validator.";
1693
+ readonly skillAnchor: "skills#upload";
1694
+ readonly legacyErrorCode: "invalid_encoding";
1695
+ readonly retryable: false;
1696
+ };
1697
+ readonly "skills.empty_content": {
1698
+ readonly expected: "non-empty SKILL.md body after parsing the frontmatter";
1699
+ readonly hint: "The skill file parsed successfully but has no body content after the YAML frontmatter. Add at least one prose paragraph after the `---` block; that's the actual skill instructions the agent will read.";
1700
+ readonly skillAnchor: "skills#shape";
1701
+ readonly legacyErrorCode: "empty_content";
1702
+ readonly retryable: false;
1703
+ };
1704
+ readonly "skills.invalid_name": {
1705
+ readonly expected: "skill name matching `[a-z0-9][a-z0-9-]*` (kebab-case)";
1706
+ readonly hint: "Skill slugs are restricted to lowercase letters, digits, and hyphens (no underscores, dots, or uppercase). The first character must not be a hyphen. Pick a kebab-case slug such as `my-skill` or `obsidian-graduate-v2`.";
1707
+ readonly skillAnchor: "skills#naming";
1708
+ readonly legacyErrorCode: "invalid_name";
1709
+ readonly retryable: false;
1710
+ };
1711
+ readonly "skills.invalid_description": {
1712
+ readonly expected: "single-line description field (no \\r or \\n)";
1713
+ readonly hint: "Frontmatter description must be one line. Embedded newlines break the regex-based parser the daemon uses to update skills. Re-write the description as a single sentence; long prose goes in the body.";
1714
+ readonly skillAnchor: "skills#frontmatter";
1715
+ readonly legacyErrorCode: "invalid_description";
1716
+ readonly retryable: false;
1717
+ };
1718
+ readonly "skills.validation_error": {
1719
+ readonly expected: "JSON body matching skillCreateSchema / skillUpdateSchema";
1720
+ readonly hint: "Zod validation failed. The `details` array carries per-field paths — fix and resubmit. POST /skills needs `{ name, description, content, allowedTools? }`; PUT /skills/:name accepts a partial { description?, content?, allowedTools? }.";
1721
+ readonly skillAnchor: "skills#schemas";
1722
+ readonly legacyErrorCode: "validation_error";
1723
+ };
1724
+ readonly "skills.not_found": {
1725
+ readonly expected: "an existing skill at agent-assets/skills/<slug>/SKILL.md (built-in) or user-skills/<slug>/SKILL.md";
1726
+ readonly hint: "GET /skills to list current slugs. Built-ins are read-only; user skills can be created via POST /skills or POST /skills/upload. Do not retry the same slug — verify spelling first.";
1727
+ readonly skillAnchor: "skills#crud";
1728
+ readonly legacyErrorCode: "not_found";
1729
+ readonly retryable: false;
1730
+ };
1731
+ readonly "skills.already_exists": {
1732
+ readonly expected: "skill slug not yet present in user-skills/";
1733
+ readonly hint: "A user skill with this slug already exists. Either PUT /skills/:name to update it, or DELETE /skills/:name first if you want a fresh create. POST /skills/upload overwrites by default.";
1734
+ readonly skillAnchor: "skills#crud";
1735
+ readonly legacyErrorCode: "already_exists";
1736
+ readonly retryable: false;
1737
+ };
1738
+ readonly "skills.write_failed": {
1739
+ readonly expected: "successful disk write to the user-skills directory";
1740
+ readonly hint: "Internal write error — the user-skills directory may be on a read-only mount or out of space. `message` carries the verbatim cause. Do not auto-retry; surface to the user.";
1741
+ readonly skillAnchor: "skills#errors";
1742
+ readonly legacyErrorCode: "write_failed";
1743
+ readonly retryable: false;
1744
+ };
1745
+ readonly "skills.delete_failed": {
1746
+ readonly expected: "successful rmSync on the user-skills/<slug>/ directory";
1747
+ readonly hint: "Internal delete error — `message` carries the verbatim cause. Common: file locked by an editor, permission denied. Do not auto-retry; surface to the user.";
1748
+ readonly skillAnchor: "skills#errors";
1749
+ readonly legacyErrorCode: "delete_failed";
1750
+ readonly retryable: false;
1751
+ };
1752
+ readonly "managed_tasks.invalid_id": {
1753
+ readonly expected: "managed-task id matching `mt_<n>` (alphanumeric)";
1754
+ readonly hint: "Managed-task ids are `mt_<n>` (e.g. `mt_1`, `mt_42`). GET /api/managed-tasks to list current ids. Pass the id verbatim — do NOT URL-encode the underscore.";
1755
+ readonly skillAnchor: "managed-tasks#id-format";
1756
+ readonly legacyErrorCode: "invalid_id";
1757
+ readonly retryable: false;
1758
+ };
1759
+ readonly "managed_tasks.not_found": {
1760
+ readonly expected: "an existing managed_tasks row matching :id";
1761
+ readonly hint: "Either the id is wrong or the row was already deleted (DELETE /api/managed-tasks/:id). GET /api/managed-tasks to list current rows. Stopped rows are pruned — `mt_<n>` is not reused; pick a different id rather than re-creating with the same one.";
1762
+ readonly skillAnchor: "managed-tasks#crud";
1763
+ readonly legacyErrorCode: "not_found";
1764
+ readonly retryable: false;
1765
+ };
1766
+ readonly "managed_tasks.validation_error": {
1767
+ readonly expected: "JSON body matching managedTaskCreate/Patch/RunResult schema";
1768
+ readonly hint: "Zod validation failed. `details` carries per-field issues. Common: cadence must match `daily|weekly|monthly|<RRULE>`; intent must be a non-empty string; recurrenceRule must include freq + interval. Read each `path`/`message` and resubmit.";
1769
+ readonly skillAnchor: "managed-tasks#schemas";
1770
+ readonly legacyErrorCode: "validation_error";
1771
+ };
1772
+ readonly "managed_tasks.invalid_limit": {
1773
+ readonly expected: "positive integer <= 200 in the `limit` query parameter";
1774
+ readonly hint: "`?limit=` accepts an integer between 1 and 200. Pass `?limit=50` for the default page size; values above 200 are rejected to keep `agent_actions` scans bounded. URL-encoded or decimal values are rejected.";
1775
+ readonly skillAnchor: "managed-tasks#pagination";
1776
+ readonly legacyErrorCode: "invalid_limit";
1777
+ readonly constraint: {
1778
+ readonly type: "integer";
1779
+ readonly minimum: 1;
1780
+ readonly maximum: 200;
1781
+ };
1782
+ };
1783
+ readonly "managed_tasks.invalid_cursor": {
1784
+ readonly expected: "positive integer in the `before_id` query parameter";
1785
+ readonly hint: "Pagination cursor is the smallest id in the previous page (returned as `nextCursor`). Pass it verbatim — URL-encoded and decimal values are rejected. Omit the parameter for the first page.";
1786
+ readonly skillAnchor: "managed-tasks#pagination";
1787
+ readonly legacyErrorCode: "invalid_cursor";
1788
+ readonly constraint: {
1789
+ readonly type: "integer";
1790
+ readonly minimum: 1;
1791
+ };
1792
+ };
1793
+ readonly "managed_tasks.cap_reached": {
1794
+ readonly expected: "active managed-tasks count below the configured cap";
1795
+ readonly hint: "The active-tasks cap (default 20; configured via `managedTasksMaxActive` in /settings) is hit. Either DELETE one before registering a new task, or raise the cap via /settings → Management. Surface to the user; the cap is intentional.";
1796
+ readonly skillAnchor: "managed-tasks#capacity";
1797
+ readonly legacyErrorCode: "cap_reached";
1798
+ readonly retryable: false;
1799
+ };
1800
+ readonly "managed_tasks.duplicate": {
1801
+ readonly expected: "no managed_tasks row with the same (app_normalized, cadence) pair";
1802
+ readonly hint: "A managed task already covers this (app, cadence) — the response's `item` carries the existing row. To replace it, DELETE the existing id first. To extend it (e.g. change cadence), PATCH /api/managed-tasks/:id on the existing row.";
1803
+ readonly skillAnchor: "managed-tasks#duplicate-handling";
1804
+ readonly legacyErrorCode: "duplicate";
1805
+ readonly retryable: false;
1806
+ };
1807
+ readonly "managed_tasks.internal_error": {
1808
+ readonly expected: "no unexpected exception inside the transaction";
1809
+ readonly hint: "Internal error inside a managed-tasks CRUD/run-now/rename-app/run-result transaction. The error is logged server-side; the route does not surface implementation detail. Do not auto-retry — typically a schema/migration drift.";
1810
+ readonly skillAnchor: "managed-tasks#errors";
1811
+ readonly legacyErrorCode: "internal_error";
1812
+ readonly retryable: false;
1813
+ };
1814
+ readonly "apple_calendar.not_configured": {
1815
+ readonly expected: "Apple Calendar credentials saved + service initialised";
1816
+ readonly hint: "Apple Calendar is unavailable — either no credentials are saved (POST /apple-calendar/credentials with `{ email, appPassword }`) or the cached service rejected the iCloud handshake. Notify the user to add an app-specific password from https://appleid.apple.com → App-Specific Passwords. Skip Apple Calendar branches of routines until reconfigured.";
1817
+ readonly skillAnchor: "apple-calendar#configuration";
1818
+ readonly legacyErrorCode: "apple_calendar_not_configured";
1819
+ readonly retryable: false;
1820
+ };
1821
+ readonly "apple_calendar.auth_failed": {
1822
+ readonly expected: "iCloud CalDAV accepts the Apple ID + app-specific password";
1823
+ readonly hint: "Apple ID auth failed. Common causes: regular password used instead of an app-specific one; password was revoked from appleid.apple.com; account requires reauth after iCloud security update. Re-issue an app-specific password and POST /apple-calendar/credentials again — there's no silent recovery.";
1824
+ readonly skillAnchor: "apple-calendar#auth";
1825
+ readonly legacyErrorCode: "auth_failed";
1826
+ readonly retryable: false;
1827
+ };
1828
+ readonly "apple_calendar.validation_error": {
1829
+ readonly expected: "request body matching the Apple Calendar schema";
1830
+ readonly hint: "Zod validation failed (`.strict()`) — Apple Calendar deliberately rejects Google-shaped extras like `attendees`, `reminders`, `recurrence`, `visibility`. Drop those fields. The `details` array carries per-field paths. iCloud event create body: `{ summary, start, end, description?, location? }`.";
1831
+ readonly skillAnchor: "apple-calendar#event-shape";
1832
+ readonly legacyErrorCode: "validation_error";
1833
+ };
1834
+ readonly "apple_calendar.invalid_date": {
1835
+ readonly expected: "'today' or YYYY-MM-DD `date` query parameter";
1836
+ readonly hint: "The `?date=` query rejects shapes other than the literal 'today' or a calendar date like '2026-05-15'. Use localDateStr(now, <timezone>) shape — RFC-3339 timestamps are rejected.";
1837
+ readonly skillAnchor: "apple-calendar#list-events";
1838
+ readonly constraint: {
1839
+ readonly type: "string";
1840
+ readonly pattern: "^(today|\\d{4}-\\d{2}-\\d{2})$";
1841
+ };
1842
+ };
1843
+ readonly "apple_calendar.not_found": {
1844
+ readonly expected: "an existing iCloud event matching :id";
1845
+ readonly hint: "The event id does not resolve to any iCloud event. Recurring-instance ids cannot be modified directly (use the master event id). Re-list with GET /apple-calendar/events?date=<day> to find the master id.";
1846
+ readonly skillAnchor: "apple-calendar#event-id";
1847
+ readonly legacyErrorCode: "not_found";
1848
+ readonly retryable: false;
1849
+ };
1850
+ readonly "apple_calendar.recurring_instance_unsupported": {
1851
+ readonly expected: "master event id (not a per-instance recurrence override)";
1852
+ readonly hint: "iCloud CalDAV cannot mutate single instances of a recurring event in this build. Either edit the master (changes apply to the whole series) or skip the modification and notify the user. The `message` field carries the offending instance id verbatim.";
1853
+ readonly skillAnchor: "apple-calendar#recurring";
1854
+ readonly legacyErrorCode: "recurring_instance_unsupported";
1855
+ readonly retryable: false;
1856
+ };
1857
+ readonly "apple_calendar.upstream_error": {
1858
+ readonly expected: "successful iCloud CalDAV round-trip";
1859
+ readonly hint: "iCloud CalDAV returned an error (surfaced as 502 to the agent). `message` is iCloud's verbatim text. Branches: 5xx → Apple maintenance window or transient; retry once after 60s, then skip. 401 → app-specific password revoked or expired; notify the user with this exact prompt: 'Apple Calendar access expired — please go to https://appleid.apple.com → App-Specific Passwords, issue a new password, and paste it into /settings/integrations → Apple Calendar.' Then skip. 412 → etag mismatch from concurrent edit; GET the event again to refresh the etag and replay the change ONCE. Do NOT chain more than one retry per error code in a single turn.";
1860
+ readonly skillAnchor: "apple-calendar#errors";
1861
+ readonly legacyErrorCode: "apple_calendar_error";
1862
+ readonly retryable: true;
1863
+ };
1864
+ readonly "agent.daemon_starting": {
1865
+ readonly expected: "daemon startup complete";
1866
+ readonly hint: "Daemon still initialising (typical window: 1-3 s after process spawn). Wait ~3s and retry ONCE; if the second attempt also returns daemon_starting, abandon this turn — startup that takes >30s indicates a stuck migration or a port conflict the agent cannot resolve. Surface ONE notification suggesting `aitne status` / `aitne doctor`, then exit. Never tight-loop on this code.";
1867
+ readonly skillAnchor: "agent#startup-gate";
1868
+ readonly legacyErrorCode: "daemon_starting";
1869
+ readonly retryable: true;
1870
+ };
1871
+ readonly "agent.hourly_check_unavailable": {
1872
+ readonly expected: "triggerHourlyCheck wired into the API server";
1873
+ readonly hint: "POST /agent/run-now/hourly was called before the hourly-check engine was wired (typically only the first ~1s of boot). Wait ~3s and retry.";
1874
+ readonly skillAnchor: "agent#run-now";
1875
+ readonly legacyErrorCode: "hourly_check_unavailable";
1876
+ readonly retryable: true;
1877
+ };
1878
+ readonly "agent.roadmap_maintenance_unavailable": {
1879
+ readonly expected: "triggerRoadmapMaintenance wired into the API server";
1880
+ readonly hint: "Roadmap maintenance dispatcher not yet wired. Wait ~3s and retry; this fires only during boot.";
1881
+ readonly skillAnchor: "agent#roadmap-maintenance";
1882
+ readonly legacyErrorCode: "roadmap_maintenance_unavailable";
1883
+ readonly retryable: true;
1884
+ };
1885
+ readonly "agent.roadmap_maintenance_failed": {
1886
+ readonly expected: "successful roadmap maintenance pass";
1887
+ readonly hint: "Maintenance threw mid-pass; `message` carries the underlying error. Common: roadmap.md lock contention, schema drift, or malformed roadmap row. Do not auto-retry — inspect daemon logs.";
1888
+ readonly skillAnchor: "agent#roadmap-maintenance";
1889
+ readonly legacyErrorCode: "roadmap_maintenance_failed";
1890
+ readonly retryable: false;
1891
+ };
1892
+ readonly "agent.invalid_requested_model": {
1893
+ readonly expected: "'sonnet' | 'opus' | omitted";
1894
+ readonly hint: "`requestedModel` accepts the alias 'sonnet' or 'opus'. Omit to let process_backend_config decide; pin 'opus' for high-complexity multi-file analysis.";
1895
+ readonly skillAnchor: "agent#requestedModel";
1896
+ readonly legacyErrorCode: "invalid_requestedModel";
1897
+ readonly constraint: {
1898
+ readonly type: "enum";
1899
+ readonly enum: readonly ["sonnet", "opus"];
1900
+ };
1901
+ };
1902
+ readonly "agent.notify_validation_error": {
1903
+ readonly expected: "request body matching notifyRequestSchema";
1904
+ readonly hint: "Body failed Zod validation. `details` carries per-field paths. Required: `message` (string). Optional: `platform`/`platforms`, `priority` ('critical'|'high'|'normal'|'low').";
1905
+ readonly skillAnchor: "agent#notify";
1906
+ readonly legacyErrorCode: "validation_error";
1907
+ };
1908
+ readonly "agent.schedule_dm_validation_error": {
1909
+ readonly expected: "request body matching scheduleDmRequestSchema";
1910
+ readonly hint: "POST /schedule/dm body shape: `{ time: ISO8601, message: string, platform?, platforms?, importance? }`. `details` lists per-field paths. Use POST /api/schedule (batch) for LLM runs — /schedule/dm is the no-LLM precomposed-DM path.";
1911
+ readonly skillAnchor: "schedule#dm-shape";
1912
+ readonly legacyErrorCode: "validation_error";
1913
+ };
1914
+ readonly "agent.invalid_time": {
1915
+ readonly expected: "ISO8601 string parseable by Date() and >= now - 60s";
1916
+ readonly hint: "`time` failed Date.parse() or was more than 1 minute in the past. `details` disambiguates which check failed. Use `2026-05-15T14:30:00-04:00` shape with explicit timezone offset.";
1917
+ readonly skillAnchor: "schedule#scheduledFor-bounds";
1918
+ readonly legacyErrorCode: "invalid_time";
1919
+ readonly constraint: {
1920
+ readonly type: "iso8601";
1921
+ readonly required: true;
1922
+ };
1923
+ };
1924
+ readonly "agent.invalid_status": {
1925
+ readonly expected: "comma-separated subset of 'pending,running,completed,failed,skipped'";
1926
+ readonly hint: "GET /schedule `?status=` accepts a CSV of the five statuses. `details` names the offending token. Default is 'pending,running'; pass 'completed,failed,skipped' to see history.";
1927
+ readonly skillAnchor: "schedule#status-filter";
1928
+ readonly legacyErrorCode: "invalid_status";
1929
+ };
1930
+ readonly "agent.invalid_id": {
1931
+ readonly expected: "positive integer id from GET /schedule";
1932
+ readonly hint: "`:id` must be a positive integer. GET /schedule for current pending ids. URL-encoded and decimal ids are rejected.";
1933
+ readonly skillAnchor: "schedule#crud";
1934
+ readonly legacyErrorCode: "invalid_id";
1935
+ readonly constraint: {
1936
+ readonly type: "integer";
1937
+ readonly minimum: 1;
1938
+ };
1939
+ };
1940
+ readonly "agent.not_found": {
1941
+ readonly expected: "an existing agent_schedule row matching :id";
1942
+ readonly hint: "PATCH/DELETE on a schedule id that doesn't exist. The row may have been picked up by the scheduler (status moved to running) or already cancelled. GET /schedule for current ids.";
1943
+ readonly skillAnchor: "schedule#crud";
1944
+ readonly legacyErrorCode: "not_found";
1945
+ readonly retryable: false;
1946
+ };
1947
+ readonly "agent.schedule_conflict": {
1948
+ readonly expected: "row in 'pending' status (running/completed/failed are immutable)";
1949
+ readonly hint: "Edits and cancels only work on `pending` schedules. `details` carries the row's current status. Per-state recovery: 'running' → the scheduler has already picked the row up; cannot cancel mid-flight (the running session must finish). If you want a different action, POST /api/schedule with a NEW row scheduled for a later time. 'completed' / 'failed' / 'skipped' → terminal, the row is archive-only; do not retry — its outcome is final. If the conflict was for a cancel intent the user really needs to honour, send them a notification with the schedule id and current status rather than looping.";
1950
+ readonly skillAnchor: "schedule#crud";
1951
+ readonly legacyErrorCode: "conflict";
1952
+ readonly retryable: false;
1953
+ };
1954
+ readonly "agent.invalid_field": {
1955
+ readonly expected: "field set respecting the task_type contract";
1956
+ readonly hint: "PATCH /schedule/:id field/task_type mismatch — `details` names the offending field. Matrix: task_type='wake' or 'dm_session' or 'check' → set `description` and optionally `prompt`, NOT `message`. task_type='dm' (precomposed) → set `message`, NOT `description` and NOT `prompt` (dm rows do not run a model, so prompt would be ignored and is rejected). `time` and `taskContext` are accepted on all types; `model` is accepted on 'wake'/'dm_session'/'check' but ignored on 'dm'. To switch a row's shape, DELETE and re-create rather than PATCH across the dm boundary.";
1957
+ readonly skillAnchor: "schedule#field-by-type";
1958
+ readonly legacyErrorCode: "invalid_field";
1959
+ readonly retryable: false;
1960
+ };
1961
+ readonly "agent.no_changes": {
1962
+ readonly expected: "PATCH body containing at least one mutable field";
1963
+ readonly hint: "PATCH /schedule/:id needs at least one of { time, description, message, prompt, model, taskContext }. Omitting all is rejected.";
1964
+ readonly skillAnchor: "schedule#crud";
1965
+ readonly legacyErrorCode: "no_changes";
1966
+ readonly retryable: false;
1967
+ };
1968
+ readonly "agent.invalid_target": {
1969
+ readonly expected: "target = 'today' | 'roadmap'";
1970
+ readonly hint: "POST /agent/regenerate body needs `{ target: 'today' | 'roadmap' }`. Other values rejected. 'today' refreshes today.md via routine.today_refresh; 'roadmap' refreshes roadmap.md.";
1971
+ readonly skillAnchor: "agent#regenerate";
1972
+ readonly constraint: {
1973
+ readonly type: "enum";
1974
+ readonly enum: readonly ["today", "roadmap"];
1975
+ };
1976
+ };
1977
+ readonly "agent.roadmap_refresh_unavailable": {
1978
+ readonly expected: "triggerRoadmapRefresh wired into the API server";
1979
+ readonly hint: "Roadmap refresh dispatcher not currently wired (boot-time only). Wait ~3s and retry; if persistent, surface to user — daemon is in degraded mode.";
1980
+ readonly skillAnchor: "agent#regenerate";
1981
+ readonly retryable: true;
1982
+ };
1983
+ readonly "agent.event_bus_unavailable": {
1984
+ readonly expected: "EventBus wired into the API server";
1985
+ readonly hint: "EventBus unavailable, so today.md regeneration cannot be dispatched. Wait ~3s and retry; if persistent, run `aitne status`.";
1986
+ readonly skillAnchor: "agent#regenerate";
1987
+ readonly retryable: true;
1988
+ };
1989
+ readonly "agent.action_log_validation_error": {
1990
+ readonly expected: "request body matching actionLogRequestSchema";
1991
+ readonly hint: "Body failed Zod validation. `details` carries per-field paths. Required: `actionType` (string), `result` (string). Use `<resource>.<verb>` shape for actionType (e.g. `mail.archive`).";
1992
+ readonly skillAnchor: "agent#action-log";
1993
+ readonly legacyErrorCode: "validation_error";
1994
+ };
1995
+ readonly "agent.outbound_purchase_template_refused": {
1996
+ readonly expected: "an outbound message free of reserved purchase-confirmation markers";
1997
+ readonly hint: "Refused: this message carries a reserved purchase-confirmation marker (\"🔐 Aitne purchase confirmation\", \"[purchase-verify:\", or \"Approved on …\"). Those markers are emitted exclusively by the daemon's unforgeable purchase-system-message-sender (MANAGED_CHROMIUM_IMPLEMENTATION_PLAN.md §17.7); an agent-originated message claiming to be a purchase confirmation is structurally blocked as a spoof. Remove the reserved marker text from `message` and resend a normal notification — do not compose purchase confirmations yourself.";
1998
+ readonly skillAnchor: "agent#notify";
1999
+ readonly legacyErrorCode: "outbound_purchase_template_refused";
2000
+ readonly retryable: false;
2001
+ };
2002
+ readonly "profile_questions.path_required": {
2003
+ readonly expected: "non-empty 'path' query parameter (context-relative)";
2004
+ readonly hint: "GET /api/profile-questions/slot-filled needs `?path=<relative>` — e.g. `?path=identity/profile`. Trailing `.md` is optional; `.base` files are rejected (use a prose markdown file). Add `&section=<heading>` to scope to one heading and `&anchor=<bullet-key>` to scope to one bullet.";
2005
+ readonly skillAnchor: "profile-questions#slot-filled";
2006
+ readonly legacyErrorCode: "missing_path";
2007
+ readonly constraint: {
2008
+ readonly type: "string";
2009
+ readonly required: true;
2010
+ };
2011
+ };
2012
+ readonly "profile_questions.path_invalid": {
2013
+ readonly expected: "context-relative path inside the vault (no '..', no absolute)";
2014
+ readonly hint: "The path failed traversal validation. Use forward-slash, vault-relative paths only — e.g. `identity/profile`, `identity/people/colleague-jane`. Reject `..` segments, absolute paths, and `.base` files (those are Obsidian view configs, not prose).";
2015
+ readonly skillAnchor: "profile-questions#slot-filled";
2016
+ readonly legacyErrorCode: "invalid_path";
2017
+ readonly constraint: {
2018
+ readonly type: "string";
2019
+ };
2020
+ readonly retryable: true;
2021
+ };
2022
+ readonly "profile_questions.read_failed": {
2023
+ readonly expected: "readable file at the resolved path";
2024
+ readonly hint: "Filesystem read failed mid-probe (EACCES / EIO). The file exists but the daemon couldn't open it. Likely cause: vault was moved or permissions changed while the daemon was running. Re-check the externalObsidianVaultPath config and retry; if persistent, surface to user — daemon needs vault access.";
2025
+ readonly skillAnchor: "profile-questions#slot-filled";
2026
+ readonly legacyErrorCode: "read_failed";
2027
+ readonly retryable: false;
2028
+ };
2029
+ readonly "entities.missing_query": {
2030
+ readonly expected: "either tier-1 (source[, external_id]) or tier-2 (domain, type, date) query parameters";
2031
+ readonly hint: "GET /api/entities needs a query shape. Tier-1 exact: `?source=<app>&external_id=<eid>`. Tier-1 bias: `?source=<app>` alone (list all entities for the source so you can pick a dominant domain/type). Tier-2: `?domain=<domain>&type=<singular>&date=YYYY-MM-DD`. Don't mix tiers in one call.";
2032
+ readonly skillAnchor: "entities#query-shape";
2033
+ readonly legacyErrorCode: "missing_query";
2034
+ readonly retryable: true;
2035
+ };
2036
+ readonly "entities.ambiguous_query": {
2037
+ readonly expected: "exactly one tier — not both at the same time";
2038
+ readonly hint: "The request mixed tier-1 (source/external_id) and tier-2 (domain/type/date) parameters. Drop one set: tier-1 is for known external ids (e.g. gmail thread id), tier-2 is for discovery by category. Pick the side that matches your input.";
2039
+ readonly skillAnchor: "entities#query-shape";
2040
+ readonly legacyErrorCode: "ambiguous_query";
2041
+ readonly retryable: true;
2042
+ };
2043
+ readonly "entities.validation_error": {
2044
+ readonly expected: "well-formed query per the tier rules";
2045
+ readonly hint: "A field violated its constraint. Common causes: `external_id` set without `source` (tier-1 needs both for exact match); tier-2 missing one of domain/type/date; `date` not ISO YYYY-MM-DD; `limit` not a positive integer; unknown `domain` / `type` enum value. The `message` field carries the specific violation — read it verbatim and fix that field only.";
2046
+ readonly skillAnchor: "entities#query-shape";
2047
+ readonly legacyErrorCode: "validation_error";
2048
+ readonly retryable: true;
2049
+ };
2050
+ readonly "entities.not_found": {
2051
+ readonly expected: "an entity row matching the supplied path";
2052
+ readonly hint: "GET /api/entities/by-path?path=<...> returned no row. The path is a vault-relative markdown path (e.g. `work/meetings/2026-05-15-launch-review.md`). Check the slug spelling, or use GET /api/entities?source=<app> to discover the canonical path the registrar wrote.";
2053
+ readonly skillAnchor: "entities#by-path";
2054
+ readonly legacyErrorCode: "not_found";
2055
+ readonly retryable: false;
2056
+ };
2057
+ readonly "sot_bindings.invalid_category": {
2058
+ readonly expected: "non-empty category slug in the URL";
2059
+ readonly hint: "GET /api/sot-bindings/:category needs a trimmed category like `email`, `calendar`, `task`. Empty strings (e.g. `/sot-bindings/%20`) are rejected. List all categories first via GET /api/sot-bindings.";
2060
+ readonly skillAnchor: "sot-bindings#categories";
2061
+ readonly legacyErrorCode: "invalid_category";
2062
+ readonly retryable: true;
2063
+ };
2064
+ readonly "sot_bindings.not_found": {
2065
+ readonly expected: "an existing binding row for the supplied category";
2066
+ readonly hint: "The category has no binding registered yet. Use GET /api/sot-bindings to enumerate the live rows, or PUT /api/sot-bindings to install a new binding (body shape: an array or `{items: [...]}`).";
2067
+ readonly skillAnchor: "sot-bindings#categories";
2068
+ readonly legacyErrorCode: "not_found";
2069
+ readonly retryable: false;
2070
+ };
2071
+ readonly "sot_bindings.validation_error": {
2072
+ readonly expected: "array of binding rows, or `{items: [...]}`";
2073
+ readonly hint: "PUT body must be a JSON array or `{items: [{category, source, ...}]}`. Each row needs `category` (string) and at least one source descriptor. Duplicates by category are rejected as defense-in-depth — the file render is keyed on category position and silent overwrites would corrupt the user's mental model. Read `details`/`message` for the exact field that failed.";
2074
+ readonly skillAnchor: "sot-bindings#put-shape";
2075
+ readonly legacyErrorCode: "validation_error";
2076
+ readonly constraint: {
2077
+ readonly type: "array";
2078
+ readonly required: true;
2079
+ };
2080
+ readonly retryable: true;
2081
+ };
2082
+ readonly "sot_bindings.duplicate_category": {
2083
+ readonly expected: "at most one row per category in the PUT body";
2084
+ readonly hint: "Two or more rows shared the same `category` value. De-dupe in the caller — pick the row you want (most specific) and drop the rest. The duplicate's category value is carried on the response as `category` for log triage.";
2085
+ readonly skillAnchor: "sot-bindings#put-shape";
2086
+ readonly legacyErrorCode: "duplicate_category";
2087
+ readonly retryable: true;
2088
+ };
2089
+ readonly "sot_bindings.internal_error": {
2090
+ readonly expected: "successful DB write";
2091
+ readonly hint: "The SoT-bindings table write failed at the SQLite layer (disk full, lock contention, or corruption). Retry once; if persistent, run `aitne doctor` to verify the DB and surface to user.";
2092
+ readonly skillAnchor: "sot-bindings#put-shape";
2093
+ readonly legacyErrorCode: "internal_error";
2094
+ readonly retryable: true;
2095
+ };
2096
+ readonly "docs.doc_not_found": {
2097
+ readonly expected: "an existing doc with the supplied slug in fts_docs";
2098
+ readonly hint: "No doc indexed under `slug`. Slugs come from doc frontmatter and look like `appendices/voice-transcription` or `design/02-event-pipeline`. Search first via GET /api/docs/search?q=<term> to find the canonical slug, or GET /api/docs to list everything.";
2099
+ readonly skillAnchor: "docs#by-slug";
2100
+ readonly legacyErrorCode: "doc_not_found";
2101
+ readonly retryable: false;
2102
+ };
2103
+ readonly "docs.qa_adapter_unavailable": {
2104
+ readonly expected: "DocsQAAdapter wired into the API server";
2105
+ readonly hint: "The docs-QA bus is not initialized in this daemon instance. Most likely an in-test boot or a degraded startup; the dashboard's QA panel cannot operate. Wait a few seconds and retry; if persistent, run `aitne status` and re-launch the daemon.";
2106
+ readonly skillAnchor: "docs#qa-bus";
2107
+ readonly legacyErrorCode: "qa_adapter_unavailable";
2108
+ readonly retryable: true;
2109
+ };
2110
+ readonly "docs.channel_not_connected": {
2111
+ readonly expected: "channelId minted by GET /docs/qa/stream and still open";
2112
+ readonly hint: "POST /docs/qa/messages was called with a channelId the adapter does not recognise. The channel must be minted by the SSE stream's first event (D5 SSE-first contract). Open GET /docs/qa/stream first, capture the channelId, then POST messages against it. The channel auto-closes when the SSE EventSource disconnects.";
2113
+ readonly skillAnchor: "docs#qa-channel";
2114
+ readonly legacyErrorCode: "channel_not_connected";
2115
+ readonly retryable: false;
2116
+ };
2117
+ readonly "docs.validation_error": {
2118
+ readonly expected: "request body matching qaMessageSchema (channelId, content, scope, …)";
2119
+ readonly hint: "QA message body failed Zod validation. Required fields: `channelId` (UUID from the SSE stream), `content` (non-empty string). Optional: `scope`, `context`, `modelId`. Read `details` for the per-field path.";
2120
+ readonly skillAnchor: "docs#qa-message-shape";
2121
+ readonly legacyErrorCode: "validation_error";
2122
+ readonly constraint: {
2123
+ readonly type: "object";
2124
+ readonly required: true;
2125
+ };
2126
+ readonly retryable: true;
2127
+ };
2128
+ readonly "docs.model_not_registered": {
2129
+ readonly expected: "modelId registered for the active QA backend";
2130
+ readonly hint: "The picker-supplied `modelId` is not in the registered list for the resolved QA backend. Drop the `modelId` field (the daemon picks the canonical medium-tier model), or pick a registered id from GET /api/docs/qa/config.";
2131
+ readonly skillAnchor: "docs#qa-model-pick";
2132
+ readonly legacyErrorCode: "model_not_registered";
2133
+ readonly retryable: true;
2134
+ };
2135
+ readonly "docs.model_tier_locked": {
2136
+ readonly expected: "modelId at the medium tier (not lite, not high)";
2137
+ readonly hint: "The QA path is hard-wired to the medium tier to avoid silently draining Opus quota. The supplied `modelId` is registered but at the wrong tier. Pick a medium-tier model from GET /api/docs/qa/config or drop the field entirely.";
2138
+ readonly skillAnchor: "docs#qa-model-pick";
2139
+ readonly legacyErrorCode: "model_tier_locked";
2140
+ readonly retryable: true;
2141
+ };
2142
+ readonly "git_templates.invalid_kind": {
2143
+ readonly expected: "'project' or 'git-repo' in the :kind URL segment";
2144
+ readonly hint: "The `:kind` segment must be exactly `project` (full project doc template) or `git-repo` (repo-only doc template). Other values (e.g. `repo`, `Git-Repo`) are rejected — these are the only two on-disk templates the daemon ships.";
2145
+ readonly skillAnchor: "git-templates#kinds";
2146
+ readonly legacyErrorCode: "invalid_kind";
2147
+ readonly constraint: {
2148
+ readonly type: "enum";
2149
+ readonly enum: readonly ["project", "git-repo"];
2150
+ readonly required: true;
2151
+ };
2152
+ readonly retryable: true;
2153
+ };
2154
+ readonly "git_templates.content_required": {
2155
+ readonly expected: "string body at `content` (the template markdown source)";
2156
+ readonly hint: "PUT /api/git/templates/:kind needs `{ \"content\": \"# Template…\\n…\" }`. The value must be a string — sending a number, array, or omitting the key returns 400. Read the active body first via GET /api/git/templates/:kind to seed your edit.";
2157
+ readonly skillAnchor: "git-templates#editor";
2158
+ readonly legacyErrorCode: "content_required";
2159
+ readonly constraint: {
2160
+ readonly type: "string";
2161
+ readonly required: true;
2162
+ };
2163
+ readonly retryable: true;
2164
+ };
2165
+ readonly "git_templates.read_failed": {
2166
+ readonly expected: "readable template file (or absent override = bundled fallback)";
2167
+ readonly hint: "Filesystem read of the template override failed (EACCES / EIO). The bundled template is still usable — drop the override file or PUT a fresh body. `message` carries the underlying fs error verbatim.";
2168
+ readonly skillAnchor: "git-templates#editor";
2169
+ readonly legacyErrorCode: "read_failed";
2170
+ readonly retryable: true;
2171
+ };
2172
+ readonly "git_templates.write_failed": {
2173
+ readonly expected: "successful write to the override path";
2174
+ readonly hint: "Failed to write the template override (disk full, permissions, or path collision). Verify dataDir is writable (`aitne doctor`), then retry. `message` carries the underlying fs error.";
2175
+ readonly skillAnchor: "git-templates#editor";
2176
+ readonly legacyErrorCode: "write_failed";
2177
+ readonly retryable: true;
2178
+ };
2179
+ readonly "git_templates.body_too_large": {
2180
+ readonly expected: "template body ≤ 64 KB";
2181
+ readonly hint: "Template payload exceeded the 64 KB cap. Trim boilerplate, or split into two template kinds. Skill / agent-profile prose belongs in agent-assets/ — only the rendered project doc template lives here.";
2182
+ readonly skillAnchor: "git-templates#editor";
2183
+ readonly legacyErrorCode: "body_too_large";
2184
+ readonly retryable: false;
2185
+ };
2186
+ readonly "git_templates.in_progress": {
2187
+ readonly expected: "no in-flight retemplate run";
2188
+ readonly hint: "A retemplate run is already scheduled / executing (409). Wait for the existing run to finish, or check status via GET /api/git/templates/retemplate/status. The response carries `scheduleId` and `correlationId` for the in-flight run so the dashboard can render 'already running' state.";
2189
+ readonly skillAnchor: "git-templates#apply";
2190
+ readonly legacyErrorCode: "in_progress";
2191
+ readonly retryable: true;
2192
+ };
2193
+ readonly "git_templates.missing_template": {
2194
+ readonly expected: "template file present for the supplied kind";
2195
+ readonly hint: "The retemplate apply call cannot proceed because the template file isn't readable yet (no override AND the bundled fallback is missing — possibly a corrupt install). Run `aitne doctor` or reinstall. The `kind` field on the response identifies which template was missing.";
2196
+ readonly skillAnchor: "git-templates#apply";
2197
+ readonly legacyErrorCode: "missing_template";
2198
+ readonly retryable: false;
2199
+ };
2200
+ readonly "git_templates.no_targets": {
2201
+ readonly expected: "at least one watched git repository for the apply call";
2202
+ readonly hint: "No git repositories are registered for the retemplate scope (422). Add a watched repo via POST /api/repositories first, or pick a different kind. GET /api/repositories?filter=git lists the live set.";
2203
+ readonly skillAnchor: "git-templates#apply";
2204
+ readonly legacyErrorCode: "no_targets";
2205
+ readonly retryable: false;
2206
+ };
2207
+ readonly "git_templates.invalid_slug": {
2208
+ readonly expected: "lowercase kebab-case slug ([a-z0-9]([a-z0-9-]*[a-z0-9])?)";
2209
+ readonly hint: "POST /api/git/templates/retemplate/file body needs `slug` matching `^[a-z0-9][a-z0-9-]*[a-z0-9]$` (or a single `[a-z0-9]` char). Underscores, uppercase, and leading/trailing hyphens are rejected. Slugs come from the apply call's `targets[].slug` — echo that value verbatim.";
2210
+ readonly skillAnchor: "git-templates#per-file-report";
2211
+ readonly legacyErrorCode: "invalid_slug";
2212
+ readonly constraint: {
2213
+ readonly type: "string";
2214
+ readonly pattern: "^[a-z0-9][a-z0-9-]*[a-z0-9]$";
2215
+ readonly required: true;
2216
+ };
2217
+ readonly retryable: true;
2218
+ };
2219
+ readonly "git_templates.invalid_status": {
2220
+ readonly expected: "one of 'started' | 'completed' | 'skipped' | 'failed'";
2221
+ readonly hint: "Per-file `status` must be exactly one of the four lifecycle values. `started` is a work-begin marker (no audit row). `completed`/`skipped`/`failed` are terminal — each emits one `agent_actions` row tagged `git.project.retemplate`. Don't invent intermediate states.";
2222
+ readonly skillAnchor: "git-templates#per-file-report";
2223
+ readonly legacyErrorCode: "invalid_status";
2224
+ readonly constraint: {
2225
+ readonly type: "enum";
2226
+ readonly enum: readonly ["started", "completed", "skipped", "failed"];
2227
+ readonly required: true;
2228
+ };
2229
+ readonly retryable: true;
2230
+ };
2231
+ readonly "git_templates.no_active_run": {
2232
+ readonly expected: "an active retemplate run before posting per-file status";
2233
+ readonly hint: "No retemplate run is in flight; per-file reports are only accepted while the parent run holds its slot in `runtime_state` (409). The apply call (POST /api/git/templates/:kind/apply) must succeed first and seed the status grid.";
2234
+ readonly skillAnchor: "git-templates#per-file-report";
2235
+ readonly legacyErrorCode: "no_active_run";
2236
+ readonly retryable: false;
2237
+ };
2238
+ readonly "git_templates.correlation_mismatch": {
2239
+ readonly expected: "correlationId matching the in-flight retemplate run";
2240
+ readonly hint: "The supplied `correlationId` does not match the active run's id (409). Another retemplate run started between your apply and this report. Re-read GET /api/git/templates/retemplate/status to confirm the live run's id, then echo that value in subsequent reports.";
2241
+ readonly skillAnchor: "git-templates#per-file-report";
2242
+ readonly legacyErrorCode: "correlation_mismatch";
2243
+ readonly retryable: false;
2244
+ };
2245
+ readonly "git_templates.slug_not_in_run": {
2246
+ readonly expected: "slug present in the active run's target list";
2247
+ readonly hint: "The supplied `slug` is not one of the active run's targets (404). Slugs are pinned at apply time — adding a new target mid-run is not supported. Re-check the slug spelling against the apply response's `targets[].slug` array.";
2248
+ readonly skillAnchor: "git-templates#per-file-report";
2249
+ readonly legacyErrorCode: "slug_not_in_run";
2250
+ readonly retryable: false;
2251
+ };
2252
+ readonly "integrations.unknown_integration": {
2253
+ readonly expected: "integration key registered in the daemon (e.g. gmail, google_calendar, notion)";
2254
+ readonly hint: "The `:key` URL segment is not a registered integration. Get the live list from GET /api/integrations (returns every key the daemon knows about, with mode + backend). Keys are case-sensitive snake_case: `gmail`, `google_calendar`, `outlook_mail`, `outlook_calendar`, `notion` — not `Gmail` / `outlook-mail`.";
2255
+ readonly skillAnchor: "integrations#keys";
2256
+ readonly legacyErrorCode: "unknown_integration";
2257
+ readonly retryable: false;
2258
+ };
2259
+ readonly "integrations.invalid_json_body": {
2260
+ readonly expected: "valid JSON object body (parse-able)";
2261
+ readonly hint: "POST /api/integrations/:key/probe expects either `null`/empty (= cached read), or `{ backend?, tools?, liveProbe? }`. Parse-level failure means the body wasn't valid JSON at all — check Content-Type: application/json and that no trailing commas / unquoted keys snuck in.";
2262
+ readonly skillAnchor: "integrations#probe";
2263
+ readonly legacyErrorCode: "invalid_json_body";
2264
+ readonly constraint: {
2265
+ readonly type: "json";
2266
+ readonly required: true;
2267
+ };
2268
+ readonly retryable: true;
2269
+ };
2270
+ readonly "integrations.invalid_limit": {
2271
+ readonly expected: "positive integer (default 50, max 200)";
2272
+ readonly hint: "`?limit=` must parse as an integer ≥ 1. Anything else falls back to 50, but a non-numeric value returns 400. The hard cap is 200 — larger values are silently clamped, smaller positive ints honoured.";
2273
+ readonly skillAnchor: "integrations#recent-proxy-calls";
2274
+ readonly legacyErrorCode: "invalid_limit";
2275
+ readonly constraint: {
2276
+ readonly type: "integer";
2277
+ readonly minimum: 1;
2278
+ readonly maximum: 200;
2279
+ };
2280
+ readonly retryable: true;
2281
+ };
2282
+ readonly "integrations.internal_error": {
2283
+ readonly expected: "successful integration state update / probe persistence";
2284
+ readonly hint: "Server-side failure during integration mode change or probe persistence. Typical causes: a `runtime_state.integration_flip_lock:<key>` left by a crashed flip blocks the next change (resolves after the lock TTL expires, ~60s); descriptor vs DB-row drift (an integration was removed from `packages/shared/src/integrations.ts` but a `direct` row still exists); SQLite write contention during a long-running migration. Retry ONCE after 5s. If still failing, do not loop — stop touching this integration's mode/probe this turn, surface ONE notification quoting the response's `message`, and proceed with other work. The flip lock alone does not block read endpoints, so observation consumption can continue.";
2285
+ readonly skillAnchor: "integrations#internal-errors";
2286
+ readonly legacyErrorCode: "internal_error";
2287
+ readonly retryable: true;
2288
+ };
2289
+ };
2290
+ export type AgentErrorCode = keyof typeof AGENT_ERROR_REGISTRY;