@aitne-sh/aitne 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 (308) hide show
  1. package/README.md +251 -164
  2. package/agent-assets/agent-profiles/_safety.md +3 -3
  3. package/agent-assets/agent-profiles/browser-task.md +108 -0
  4. package/agent-assets/agent-profiles/conversational.md +3 -3
  5. package/agent-assets/agent-profiles/profile-importer.md +2 -2
  6. package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
  7. package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
  8. package/agent-assets/agents/evening-review/agent.md +53 -0
  9. package/agent-assets/agents/hourly-check/agent.md +62 -0
  10. package/agent-assets/agents/monthly-review/agent.md +55 -0
  11. package/agent-assets/agents/morning-routine/agent.md +78 -0
  12. package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
  13. package/agent-assets/agents/skill-curation/agent.md +52 -0
  14. package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
  15. package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
  16. package/agent-assets/agents/weekly-review/agent.md +51 -0
  17. package/agent-assets/docs/concepts/agent-day.md +13 -11
  18. package/agent-assets/docs/concepts/auth-health.md +47 -10
  19. package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
  20. package/agent-assets/docs/concepts/costs-and-quotas.md +51 -15
  21. package/agent-assets/docs/concepts/delegated-mode.md +56 -17
  22. package/agent-assets/docs/concepts/memory-model.md +77 -34
  23. package/agent-assets/docs/concepts/observations.md +49 -11
  24. package/agent-assets/docs/concepts/process-keys.md +56 -22
  25. package/agent-assets/docs/concepts/routines.md +60 -33
  26. package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
  27. package/agent-assets/docs/concepts/safety-model.md +61 -50
  28. package/agent-assets/docs/concepts/skills.md +34 -18
  29. package/agent-assets/docs/features/integrations/browser-history.md +196 -0
  30. package/agent-assets/docs/features/integrations/calendar.md +39 -29
  31. package/agent-assets/docs/features/integrations/git.md +18 -7
  32. package/agent-assets/docs/features/integrations/github.md +84 -33
  33. package/agent-assets/docs/features/integrations/mail.md +61 -17
  34. package/agent-assets/docs/features/integrations/notion.md +18 -6
  35. package/agent-assets/docs/features/integrations/obsidian.md +28 -5
  36. package/agent-assets/docs/features/lifestyle/git.md +44 -40
  37. package/agent-assets/docs/features/lifestyle/reading.md +57 -22
  38. package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
  39. package/agent-assets/docs/features/lifestyle/travel-bookings.md +77 -14
  40. package/agent-assets/docs/features/memory-files/agent-journal.md +132 -53
  41. package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
  42. package/agent-assets/docs/features/memory-files/projects.md +73 -17
  43. package/agent-assets/docs/features/memory-files/roadmap.md +54 -11
  44. package/agent-assets/docs/features/memory-files/schedule.md +113 -70
  45. package/agent-assets/docs/features/memory-files/today.md +46 -21
  46. package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
  47. package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
  48. package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
  49. package/agent-assets/docs/features/messaging/discord.md +35 -4
  50. package/agent-assets/docs/features/messaging/overview.md +37 -19
  51. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
  52. package/agent-assets/docs/features/messaging/slack.md +67 -14
  53. package/agent-assets/docs/features/messaging/telegram.md +22 -8
  54. package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
  55. package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -15
  56. package/agent-assets/docs/features/operations/approvals.md +49 -16
  57. package/agent-assets/docs/features/operations/backend-routing.md +68 -16
  58. package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
  59. package/agent-assets/docs/features/operations/managed-chromium.md +222 -0
  60. package/agent-assets/docs/features/operations/notifications.md +52 -11
  61. package/agent-assets/docs/features/operations/quiet-hours.md +64 -40
  62. package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
  63. package/agent-assets/docs/features/routines/custom-routines.md +98 -26
  64. package/agent-assets/docs/features/routines/evening-review.md +82 -21
  65. package/agent-assets/docs/features/routines/hourly-check.md +149 -29
  66. package/agent-assets/docs/features/routines/morning-routine.md +54 -35
  67. package/agent-assets/docs/features/routines/weekly-review.md +46 -21
  68. package/agent-assets/docs/features/wiki/commands.md +26 -16
  69. package/agent-assets/docs/features/wiki/cost-and-approval.md +241 -0
  70. package/agent-assets/docs/features/wiki/dashboard.md +256 -0
  71. package/agent-assets/docs/features/wiki/overview.md +70 -12
  72. package/agent-assets/docs/features/wiki/search.md +248 -0
  73. package/agent-assets/docs/features/wiki/workspaces.md +254 -0
  74. package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
  75. package/agent-assets/docs/getting-started/02-first-steps.md +17 -10
  76. package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
  77. package/agent-assets/docs/getting-started/04-first-day.md +39 -21
  78. package/agent-assets/docs/glossary.md +235 -24
  79. package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
  80. package/agent-assets/docs/guides/backup-and-restore.md +80 -16
  81. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -26
  82. package/agent-assets/docs/guides/build-your-wiki.md +22 -9
  83. package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
  84. package/agent-assets/docs/guides/connect-a-new-mail-account.md +66 -15
  85. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -14
  86. package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
  87. package/agent-assets/docs/guides/install-and-run.md +49 -20
  88. package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
  89. package/agent-assets/docs/guides/migrate-machines.md +74 -18
  90. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
  91. package/agent-assets/docs/guides/pause-the-agent.md +69 -24
  92. package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
  93. package/agent-assets/docs/guides/setup-wizard.md +116 -54
  94. package/agent-assets/docs/guides/switch-default-backend.md +62 -16
  95. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +30 -14
  96. package/agent-assets/docs/reference/api.md +153 -32
  97. package/agent-assets/docs/reference/cli-commands.md +39 -18
  98. package/agent-assets/docs/reference/config.md +241 -49
  99. package/agent-assets/docs/reference/disallowed-tools.md +34 -13
  100. package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
  101. package/agent-assets/docs/reference/knowledge-layout.md +629 -0
  102. package/agent-assets/docs/reference/process-keys.md +62 -6
  103. package/agent-assets/docs/reference/skills.md +41 -14
  104. package/agent-assets/docs/troubleshooting/auth-failed.md +51 -21
  105. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +97 -28
  106. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
  107. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
  108. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
  109. package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
  110. package/agent-assets/docs/troubleshooting/quota-exhausted.md +33 -8
  111. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
  112. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
  113. package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
  114. package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
  115. package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
  116. package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
  117. package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
  118. package/agent-assets/skills/agent-actions/SKILL.md +25 -41
  119. package/agent-assets/skills/agent-create/SKILL.md +158 -0
  120. package/agent-assets/skills/attach/SKILL.md +10 -29
  121. package/agent-assets/skills/browser-history/SKILL.md +211 -0
  122. package/agent-assets/skills/browser-history-respond/SKILL.md +111 -0
  123. package/agent-assets/skills/browser-task/SKILL.md +164 -0
  124. package/agent-assets/skills/context/SKILL.md +35 -44
  125. package/agent-assets/skills/context/curation.json +14 -14
  126. package/agent-assets/skills/context/references/api.md +52 -40
  127. package/agent-assets/skills/context/references/required-frontmatter.md +13 -12
  128. package/agent-assets/skills/context/references/snapshot-files.md +18 -17
  129. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +8 -8
  130. package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
  131. package/agent-assets/skills/docs-search/SKILL.md +23 -34
  132. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +17 -114
  133. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +17 -113
  134. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +17 -113
  135. package/agent-assets/skills/external-services/SKILL.md +3 -3
  136. package/agent-assets/skills/external-services/SKILL.native.claude.md +7 -7
  137. package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
  138. package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
  139. package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
  140. package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
  141. package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
  142. package/agent-assets/skills/external-services/references/obsidian.md +2 -2
  143. package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
  144. package/agent-assets/skills/gmail-lifestyle/SKILL.md +11 -83
  145. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
  146. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
  147. package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -18
  148. package/agent-assets/skills/mail/SKILL.delegated.codex.md +11 -6
  149. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +11 -6
  150. package/agent-assets/skills/mail/SKILL.md +10 -18
  151. package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
  152. package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
  153. package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
  154. package/agent-assets/skills/mail/references/api.md +10 -3
  155. package/agent-assets/skills/mail/references/examples.md +2 -1
  156. package/agent-assets/skills/mail/references/providers.md +1 -1
  157. package/agent-assets/skills/managed-tasks/SKILL.md +48 -81
  158. package/agent-assets/skills/managed-tasks/references/errors.md +33 -19
  159. package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
  160. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +7 -5
  161. package/agent-assets/skills/management-policy/SKILL.md +42 -42
  162. package/agent-assets/skills/management-policy/curation.json +1 -1
  163. package/agent-assets/skills/management-policy/references/policy-workflow.md +11 -12
  164. package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
  165. package/agent-assets/skills/notify/SKILL.md +14 -16
  166. package/agent-assets/skills/notify/references/priority.md +28 -20
  167. package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
  168. package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
  169. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
  170. package/agent-assets/skills/notion/SKILL.md +17 -17
  171. package/agent-assets/skills/notion/SKILL.native.claude.md +11 -7
  172. package/agent-assets/skills/notion/SKILL.native.codex.md +10 -5
  173. package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -5
  174. package/agent-assets/skills/observations/SKILL.md +29 -28
  175. package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
  176. package/agent-assets/skills/project-doc/SKILL.md +10 -7
  177. package/agent-assets/skills/project-doc/curation.json +3 -3
  178. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +8 -5
  179. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +5 -5
  180. package/agent-assets/skills/reading/SKILL.md +18 -42
  181. package/agent-assets/skills/reading/references/reading-taste.md +7 -7
  182. package/agent-assets/skills/roadmap/SKILL.md +8 -24
  183. package/agent-assets/skills/roadmap/curation.json +1 -1
  184. package/agent-assets/skills/roadmap/references/api.md +21 -11
  185. package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
  186. package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
  187. package/agent-assets/skills/roadmap/references/migration.md +12 -10
  188. package/agent-assets/skills/roadmap/references/retention.md +18 -0
  189. package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
  190. package/agent-assets/skills/schedule/SKILL.md +41 -50
  191. package/agent-assets/skills/schedule/references/batch.md +2 -2
  192. package/agent-assets/skills/schedule/references/errors.md +7 -4
  193. package/agent-assets/skills/schedule/references/importance.md +23 -0
  194. package/agent-assets/skills/schedule/references/model-selection.md +3 -3
  195. package/agent-assets/skills/schedule/references/recurrence-rule.md +7 -5
  196. package/agent-assets/skills/scheduled-managed-task/SKILL.md +77 -70
  197. package/agent-assets/skills/today/SKILL.md +24 -83
  198. package/agent-assets/skills/today/curation.json +3 -3
  199. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
  200. package/agent-assets/skills/today/references/today-skeleton.md +66 -0
  201. package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
  202. package/agent-assets/skills/today/seeds/section-shape.seed.json +7 -7
  203. package/agent-assets/skills/user-interview/SKILL.md +21 -93
  204. package/agent-assets/skills/user-interview/references/op-briefing.md +3 -3
  205. package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
  206. package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
  207. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
  208. package/agent-assets/skills/user-profile/SKILL.md +29 -39
  209. package/agent-assets/skills/user-profile/curation.json +4 -4
  210. package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
  211. package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
  212. package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
  213. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
  214. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +9 -8
  215. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
  216. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
  217. package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
  218. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
  219. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
  220. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
  221. package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
  222. package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
  223. package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
  224. package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
  225. package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
  226. package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
  227. package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
  228. package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
  229. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
  230. package/agent-assets/task-flows/browser_task.md +84 -0
  231. package/agent-assets/task-flows/github.assigned.md +1 -1
  232. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  233. package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
  234. package/agent-assets/task-flows/knowledge.import.md +14 -14
  235. package/agent-assets/task-flows/message.received.dm.md +13 -4
  236. package/agent-assets/task-flows/message.received.dm_first.md +7 -3
  237. package/agent-assets/task-flows/routine.custom.md +3 -3
  238. package/agent-assets/task-flows/routine.evening_review.md +88 -8
  239. package/agent-assets/task-flows/routine.fetch_window.md +2 -2
  240. package/agent-assets/task-flows/routine.hourly_check.md +16 -12
  241. package/agent-assets/task-flows/routine.monthly_review.md +93 -21
  242. package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
  243. package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
  244. package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
  245. package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
  246. package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
  247. package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
  248. package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
  249. package/agent-assets/task-flows/routine.today_refresh.md +4 -4
  250. package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
  251. package/agent-assets/task-flows/routine.weekly_review.md +114 -24
  252. package/agent-assets/task-flows/schedule.approaching.md +0 -1
  253. package/agent-assets/task-flows/scheduled.dm.md +5 -5
  254. package/agent-assets/task-flows/scheduled.task.md +4 -4
  255. package/agent-assets/task-flows/setup.initial.md +21 -21
  256. package/agent-assets/task-flows/setup.update.md +2 -2
  257. package/agent-assets/task-flows/wiki.trace.md +1 -1
  258. package/agent-assets/templates/README.md +27 -20
  259. package/agent-assets/templates/_index.md +42 -26
  260. package/agent-assets/templates/_manifest.json +34 -99
  261. package/agent-assets/templates/{user → identity}/_index.md +1 -1
  262. package/agent-assets/templates/{user → identity}/profile.md +2 -2
  263. package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
  264. package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
  265. package/agent-assets/templates/policies/_index.md +21 -0
  266. package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
  267. package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
  268. package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
  269. package/agent-assets/templates/{rules → policies}/management.md +3 -3
  270. package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
  271. package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
  272. package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
  273. package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
  274. package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
  275. package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
  276. package/bin/aitne.mjs +58 -15
  277. package/package.json +5 -4
  278. package/scripts/commands/doctor.mjs +25 -10
  279. package/scripts/commands/run-now.mjs +6 -21
  280. package/scripts/lib/ports.d.mts +27 -0
  281. package/scripts/lib/ports.mjs +36 -0
  282. package/scripts/lib/process-identity.d.mts +46 -0
  283. package/scripts/lib/process-identity.mjs +193 -0
  284. package/scripts/lib/read-api-token.mjs +176 -0
  285. package/scripts/start.mjs +16 -5
  286. package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
  287. package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
  288. package/agent-assets/skills/schedule/references/recurring.md +0 -185
  289. package/agent-assets/templates/context-index.md +0 -42
  290. package/agent-assets/templates/rules/_index.md +0 -19
  291. /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
  292. /package/agent-assets/templates/{user → identity}/goals.md +0 -0
  293. /package/agent-assets/templates/{user → identity}/people.md +0 -0
  294. /package/agent-assets/templates/{user → identity}/personal.md +0 -0
  295. /package/agent-assets/templates/{user → identity}/work.md +0 -0
  296. /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
  297. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
  298. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
  299. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
  300. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
  301. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
  302. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
  303. /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
  304. /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
  305. /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
  306. /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
  307. /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
  308. /package/agent-assets/templates/{today.md → state/today.md} +0 -0
@@ -36,7 +36,7 @@ ask_examples:
36
36
  - Why don't I see a SKILL.md for Gmail in my Codex session?
37
37
  locale: en-US
38
38
  created: 2026-04-26
39
- updated: 2026-05-17
39
+ updated: 2026-06-07
40
40
  keywords:
41
41
  - delegated mode
42
42
  - direct mode
@@ -55,9 +55,16 @@ related:
55
55
  - features/integrations/mail
56
56
  ui_anchors:
57
57
  - /connections
58
+ - /connections/mail
59
+ - /connections/calendar
58
60
  - /settings/models
59
- config_keys:
60
- - integrations
61
+ api_endpoints:
62
+ - PATCH /api/integrations/:key
63
+ - POST /api/integrations/:key/exec
64
+ - POST /api/integrations/:key/probe
65
+ - POST /api/observations/batch
66
+ context_files:
67
+ - policies/integrations.md
61
68
  ---
62
69
 
63
70
  # Delegated Mode (Integration Modes)
@@ -93,11 +100,17 @@ backend is the same as the integration's `delegatedBackend`:
93
100
  for the task-mode body shape.
94
101
 
95
102
  `native` has no sub-cases. The integration's `nativeBackend` must equal
96
- the main DM backend — `BackendRouter.setMainBackend` cascades unmatched
97
- `native` rows to `disabled`. From the agent's call-site view, `native`
103
+ the main DM backend — `cascadeNativeBindingsOnMainSwitch` cascades
104
+ unmatched `native` rows to `disabled`. From the agent's call-site view, `native`
98
105
  is indistinguishable from `delegated` same-backend (both are in-session
99
106
  MCP); the difference is who polls (no one, for `native`).
100
107
 
108
+ > The four modes are `direct | delegated | native | disabled`
109
+ > (`INTEGRATION_MODES` in `packages/shared/src/integrations.ts`).
110
+ > `git` and `github` support only `direct | delegated | disabled` — no
111
+ > native mode (they use read-only CLI connectors), and `browser_history`
112
+ > is `direct | disabled` only.
113
+
101
114
  ## Why This Concept Exists
102
115
 
103
116
  The setup tax for direct mode (OAuth client setup in a vendor console, then
@@ -139,8 +152,8 @@ that case the daemon spawns the other backend per call.
139
152
  - **`nativeBackend`** — when native, which backend's connector is
140
153
  expected. Must equal the main DM backend; changing the main backend
141
154
  cascades unmatched `native` rows to `disabled` (the cascade is
142
- triggered by `BackendRouter.setMainBackend` /
143
- `PUT /api/backends/main`).
155
+ performed by `cascadeNativeBindingsOnMainSwitch` from the
156
+ `PUT /api/backends/main` handler).
144
157
  - **Same-backend** — DM session backend matches `delegatedBackend` /
145
158
  `nativeBackend`. The daemon is not in the loop; the agent calls
146
159
  native MCP directly. No skill body is materialized for the
@@ -154,7 +167,10 @@ that case the daemon spawns the other backend per call.
154
167
  subprocess for each call. A `SKILL.delegated.<sessionBackend>.md`
155
168
  file is materialized into the session workdir.
156
169
  - **`integrations.md`** — daemon-rendered snapshot of every
157
- integration's mode at `~/.personal-agent/integrations.md`. The agent
170
+ integration's mode. After the context-vault restructure it lives
171
+ inside the vault under the `policies` class at
172
+ `<contextDir>/policies/integrations.md` (the legacy
173
+ `~/.personal-agent/integrations.md` location was retired). The agent
158
174
  reads it to know which path to take.
159
175
 
160
176
  ## How to Choose
@@ -184,12 +200,35 @@ connector) cascade to `disabled` and the operator gets a DM.
184
200
 
185
201
  ## Concrete Examples
186
202
 
187
- | Setup | What happens on a Gmail search |
203
+ What happens on a Gmail search, by setup:
204
+
205
+ | Setup | Path |
188
206
  |---|---|
189
- | Gmail direct | Agent: `curl /api/mail/<acct>/messages?q=...` → daemon hits Gmail API with stored OAuth |
190
- | Gmail delegated to Codex × Codex DM (same-backend) | Agent: `mcp__codex_apps__gmail._search_emails(...)` → Codex's connector hits Gmail. No daemon involvement. No skill file. |
191
- | Gmail delegated to Codex × Claude DM (cross-backend) | Agent: `curl -X POST /api/integrations/gmail/exec -d '{"task":"Search Gmail for newer_than:1d, return id/subject/from/snippet/date for each message","outputSchema":{"type":"object","required":["messages"],"properties":{"messages":{"type":"array","items":{...}}}},"maxToolCalls":3,"cacheable":true}'` → daemon spawns Codex subprocess with `proxy.md` profile task-mode planner picks `_search_emails` from the registered `capabilityTools` → returns structured `{messages:[…]}` conforming to `outputSchema` |
192
- | Gmail native on Codex DM | Agent: `mcp__codex_apps__gmail._search_emails(...)` (identical to delegated same-backend) → Codex's connector hits Gmail. No daemon involvement. Daemon poller is OFF; the routine pre-pass POSTs results to `/api/observations/batch`. |
207
+ | Gmail **direct** | `curl /api/mail/<acct>/messages?q=...` → daemon hits Gmail API with stored OAuth |
208
+ | Gmail **delegated** to Codex, Codex DM (same-backend) | Agent calls `mcp__codex_apps__gmail._search_emails(...)` → Codex's connector hits Gmail. No daemon involvement. No skill file. |
209
+ | Gmail **delegated** to Codex, Claude DM (cross-backend) | Agent POSTs to `/api/integrations/gmail/exec` in task mode (see below) → daemon spawns a Codex subprocess → returns a structured result. |
210
+ | Gmail **native** on Codex DM | Identical call to delegated same-backend (`mcp__codex_apps__gmail._search_emails(...)`). No daemon involvement. The daemon poller is OFF; the routine pre-pass POSTs results to `/api/observations/batch`. |
211
+
212
+ The cross-backend row above issues a task-mode `/exec` call:
213
+
214
+ ```bash
215
+ curl -X POST http://localhost:8321/api/integrations/gmail/exec \
216
+ -d '{
217
+ "task": "Search Gmail for newer_than:1d, return id/subject/from/snippet/date for each message",
218
+ "outputSchema": {
219
+ "type": "object",
220
+ "required": ["messages"],
221
+ "properties": { "messages": { "type": "array", "items": { } } }
222
+ },
223
+ "maxToolCalls": 3,
224
+ "cacheable": true
225
+ }'
226
+ ```
227
+
228
+ The daemon spawns a Codex subprocess with the `proxy.md` profile, the
229
+ task-mode planner picks `_search_emails` from the registered
230
+ `capabilityTools`, runs it, and returns a structured `{messages:[…]}`
231
+ conforming to `outputSchema`.
193
232
 
194
233
  ## How the Skill File Resolves
195
234
 
@@ -222,14 +261,14 @@ returns one of four values, picked by tie-break order
222
261
  `delegated` and `native` are gated on a **live probe** (§4.12.2)
223
262
  that confirms three things before the mode is written to
224
263
  `integrations.md`: the backend binary is resolvable, backend auth
225
- is valid, and the connector reports every `requiredCapability` the
226
- descriptor demands. Cached probe rows are invalidated on mode
264
+ is valid, and the connector reports every `requiredCapabilities`
265
+ entry the descriptor demands. Cached probe rows are invalidated on mode
227
266
  change. `POST /api/integrations/:key/probe` is the chokepoint.
228
267
 
229
268
  ## How `integrations.md` Reflects This
230
269
 
231
- `~/.personal-agent/integrations.md` is the operator-readable snapshot the
232
- agent consults at session-init. It is rendered as a Markdown table:
270
+ `<contextDir>/policies/integrations.md` is the operator-readable snapshot
271
+ the agent consults at session-init. It is rendered as a Markdown table:
233
272
 
234
273
  ```markdown
235
274
  ## Current state
@@ -17,8 +17,9 @@ section: memory
17
17
  tags:
18
18
  - core
19
19
  - memory
20
- - storage
21
20
  - knowledge
21
+ - context
22
+ - safety
22
23
  status: stable
23
24
  ask_examples:
24
25
  - Where are my context files stored?
@@ -28,20 +29,21 @@ ask_examples:
28
29
  - How does the daemon prevent the agent from writing to disk directly?
29
30
  locale: en-US
30
31
  created: 2026-04-25
31
- updated: 2026-05-15
32
+ updated: 2026-06-07
32
33
  keywords:
33
34
  - context
34
35
  - markdown
35
36
  - SQLite
36
- - today.md
37
- - user/profile.md
38
- - roadmap.md
39
- - rules/management.md
40
- - rules/policies
41
- - agent journal
37
+ - state/today.md
38
+ - identity/profile.md
39
+ - plans/roadmap.md
40
+ - policies/management.md
41
+ - policies/management-captures
42
+ - journal/agent.md
42
43
  - context API
43
44
  - AgentWriteTracker
44
45
  - durable memory
46
+ - context-vault v2
45
47
  related:
46
48
  - features/memory-files/today
47
49
  - features/memory-files/user-profile
@@ -53,15 +55,23 @@ ui_anchors:
53
55
  - /knowledge
54
56
  - /connections/knowledge
55
57
  context_files:
56
- - today.md
57
- - user/profile.md
58
- - roadmap.md
59
- - agent/journal.md
60
- - daily/<date>.md
61
- - projects/<slug>.md
62
- - rules/management.md
63
- - rules/policies/<slug>.md
64
- - rules/policies/_index.md
58
+ - state/today.md
59
+ - identity/profile.md
60
+ - plans/roadmap.md
61
+ - journal/agent.md
62
+ - journal/daily/<date>.md
63
+ - plans/projects/<slug>.md
64
+ - policies/management.md
65
+ - policies/management-captures/<slug>.md
66
+ - policies/management-captures/_index.md
67
+ config_keys:
68
+ - dayBoundaryHour
69
+ - dataDir
70
+ api_endpoints:
71
+ - GET /api/context/*
72
+ - PUT /api/context/*
73
+ - PATCH /api/context/*
74
+ - DELETE /api/context/*
65
75
  ---
66
76
 
67
77
  # Memory Model
@@ -72,7 +82,11 @@ Aitne treats Markdown files in `~/.personal-agent/context/`
72
82
  as its long-term memory and SQLite
73
83
  (`~/.personal-agent/data/personal_agent.db`) as session-scoped state.
74
84
  Anything you want the agent to remember between runs lives in an MD
75
- file you can read, diff, and edit by hand.
85
+ file you can read, diff, and edit by hand. The vault is partitioned
86
+ into six authority classes — `identity/`, `state/`, `plans/`, `journal/`,
87
+ `knowledge/`, and `policies/` — each carrying its own authority and
88
+ lifecycle contract. See [Knowledge Layout](../reference/knowledge-layout.md)
89
+ for the canonical map.
76
90
 
77
91
  ## Why This Concept Exists
78
92
 
@@ -98,27 +112,55 @@ indexes, and configuration.
98
112
  legal write path. The agent does not have direct `Edit` / `Write`
99
113
  permissions on the filesystem; it must go through the daemon.
100
114
 
115
+ ## How the Agent Writes
116
+
117
+ The agent has no `Edit` or `Write` tool. To change a context file it
118
+ calls the daemon over HTTP, and every write funnels through one
119
+ endpoint family so the daemon can validate, hold locks, and snapshot a
120
+ backup before touching disk. Paths are class-prefixed
121
+ (`/api/context/<class>/<path>`):
122
+
123
+ ```bash
124
+ # Append a section to today.md
125
+ curl -X PATCH http://localhost:8321/api/context/state/today.md \
126
+ -H 'Content-Type: application/json' \
127
+ -d '{"mode":"append","section":"Notes","content":"Booked the dentist."}'
128
+ ```
129
+
130
+ - `PUT /api/context/*` replaces a whole file; `PATCH` does a section op
131
+ (`append`, `replace`, `clear`, `clear_before`, `append_to_file`);
132
+ `DELETE` removes a file (permitted only for custom routines).
133
+ - Legacy bare paths (`/api/context/today.md`) still resolve — the daemon
134
+ rewrites them to the canonical class-prefixed form in process, so a
135
+ plain `curl -X PATCH` without `-L` keeps working — but new writes
136
+ emit the class-prefixed path.
137
+ - `state/today.md` and `plans/roadmap.md` are serialized behind
138
+ dedicated write locks, so two flows can't clobber each other.
139
+
101
140
  ## Concrete Examples
102
141
 
103
- - `today.md` — rewritten by the morning routine.
104
- - `user/profile.md` — your profile, hand-edited or appended by the
142
+ - `state/today.md` — rewritten by the morning routine.
143
+ - `identity/profile.md` — your profile, hand-edited or appended by the
105
144
  agent on request. Topic-shaped slices live alongside it
106
- (`user/people.md`, `user/work.md`, `user/expertise.md`,
107
- `user/personal.md`, `user/goals.md`). See
145
+ (`identity/people.md`, `identity/work.md`, `identity/expertise.md`,
146
+ `identity/personal.md`, `identity/goals.md`). See
108
147
  [User Profile](../features/memory-files/user-profile.md).
109
- - `roadmap.md` — long-running goals + Preparation Timeline rows that
148
+ - `plans/roadmap.md` — long-running goals + Preparation Timeline rows that
110
149
  fire daily during the morning routine.
111
- - `agent/journal.md` — the agent's own running log of decisions,
150
+ - `journal/agent.md` — the agent's own running log of decisions,
112
151
  retros, and judgement calls.
113
- - `daily/2026-04-25.md` — per-date archive of that day's plan,
152
+ - `journal/daily/2026-04-25.md` — per-date archive of that day's plan,
114
153
  synthesized by the morning routine.
115
- - `projects/<slug>.md` — one file per active project.
116
- - `rules/management.md` — the umbrella registry: Source-of-Truth
117
- bindings, Managed Tasks, an Active Policies summary. Always
118
- injected into every flow.
119
- - `rules/policies/<slug>.md` one file per durable management rule
154
+ - `plans/projects/<slug>.md` — one file per active project.
155
+ - `policies/management.md` — the umbrella registry: Source-of-Truth
156
+ bindings, Managed Tasks, an Active Policies summary. Injected as
157
+ `<management_rules>` on the wide-path flows (DMs, mentions, the
158
+ morning routine); a few narrow routines (the journal stage, hourly
159
+ check, today refresh, observer events, scheduled tasks) opt out to
160
+ save budget.
161
+ - `policies/management-captures/<slug>.md` — one file per durable management rule
120
162
  ("from now on, do X"). The daemon auto-maintains a slug index at
121
- `rules/policies/_index.md`.
163
+ `policies/management-captures/_index.md`.
122
164
 
123
165
  ## Where You See It in the Dashboard
124
166
 
@@ -129,8 +171,9 @@ indexes, and configuration.
129
171
 
130
172
  ## Related
131
173
 
132
- - [today.md](../features/memory-files/today.md)
133
- - [user/profile.md](../features/memory-files/user-profile.md)
134
- - [roadmap.md](../features/memory-files/roadmap.md)
174
+ - [Knowledge Layout](../reference/knowledge-layout.md) — canonical map of every vault file
175
+ - [state/today.md](../features/memory-files/today.md)
176
+ - [identity/profile.md](../features/memory-files/user-profile.md)
177
+ - [plans/roadmap.md](../features/memory-files/roadmap.md)
135
178
  - [Skills](skills.md) — the per-skill SKILL.md files that tell the
136
179
  agent how to read and write each context file.
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - Where does the routine pre-pass write observations?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-15
32
+ updated: 2026-05-28
33
33
  keywords:
34
34
  - observation
35
35
  - observations
@@ -40,11 +40,31 @@ keywords:
40
40
  - pre-pass
41
41
  - AgentWriteTracker
42
42
  - contentHash
43
+ - recordObservation
44
+ - observation queue
45
+ - dedupe
43
46
  related:
44
47
  - features/routines/hourly-check
45
48
  - features/routines/morning-routine
46
49
  - concepts/process-keys
47
50
  - concepts/routines
51
+ - features/integrations/git
52
+ - features/integrations/obsidian
53
+ ui_anchors:
54
+ - /activity
55
+ process_keys:
56
+ - routine.hourly_check
57
+ - routine.fetch_window
58
+ config_keys:
59
+ - hourlyCheckIntervalMinutes
60
+ - hourlyCheckPrePassFreshnessMinutes
61
+ api_endpoints:
62
+ - POST /api/observations
63
+ - GET /api/observations
64
+ - POST /api/observations/consume
65
+ context_files:
66
+ - packages/daemon/src/core/routine-windows.ts
67
+ - packages/daemon/src/api/routes/observations.ts
48
68
  ---
49
69
 
50
70
  # Observations
@@ -57,13 +77,15 @@ SQLite. A single `routine.hourly_check` consumes the queue and decides
57
77
  what is worth surfacing.
58
78
 
59
79
  Since 2026-05, observations have a **second writer**: every main
60
- routine (morning, today_refresh, hourly_check, evening, weekly) is
61
- preceded by a lite-tier `routine.fetch_window` pre-pass that fetches
62
- mail / calendar / Notion windows and POSTs them to
63
- `/api/observations`. The main routine then reads them via the same
64
- `pending=true` queue that the polling path feeds. Observation rows
65
- look identical regardless of which writer produced them — the
66
- distinction is invisible to downstream consumers.
80
+ routine (`routine.morning_routine`, `routine.today_refresh`,
81
+ `routine.hourly_check`, `routine.evening_review`,
82
+ `routine.weekly_review`) is preceded by a lite-tier
83
+ `routine.fetch_window` pre-pass that fetches mail / calendar / Notion
84
+ windows and POSTs them to `/api/observations`.
85
+ (`routine.monthly_review` has no pre-pass window.) The main routine
86
+ then reads them via the same `pending=true` queue that the polling
87
+ path feeds. Observation rows look identical regardless of which writer
88
+ produced them — the distinction is invisible to downstream consumers.
67
89
 
68
90
  ## Why This Concept Exists
69
91
 
@@ -75,6 +97,18 @@ up to something the operator should hear about.
75
97
 
76
98
  ## Definitions
77
99
 
100
+ **Two writer paths feed one queue.** Observations enter the
101
+ `observations` table from two places, and downstream consumers cannot
102
+ tell them apart:
103
+
104
+ 1. **Background pollers** (Obsidian, Git, GitHub, Notion, Calendar,
105
+ Mail) call `recordObservation` when they detect a change.
106
+ 2. **The pre-pass** — the lite-tier `routine.fetch_window` session
107
+ spawned ahead of each main routine — POSTs mail / calendar / Notion
108
+ windows to `/api/observations`.
109
+
110
+ Both write rows of the same shape; the consumer reads the merged queue.
111
+
78
112
  - **Observation**: one row in the `observations` table.
79
113
  - **Actor**: who caused the change. `actor='agent'` rows are filtered
80
114
  out by the consumer (anti-loop).
@@ -88,9 +122,10 @@ up to something the operator should hear about.
88
122
  session spawned by each main routine's dispatcher. Fetches a
89
123
  per-routine window (`ROUTINE_WINDOWS` in
90
124
  `packages/daemon/src/core/routine-windows.ts`) for each enabled
91
- mail / calendar / Notion integration and POSTs observations. The
92
- server computes `contentHash` from `(source, payload)`, so an
93
- unchanged item written twice in the same cadence dedupes to a 409.
125
+ mail / calendar / Notion integration and POSTs the results to
126
+ `/api/observations`. The server computes `contentHash` from
127
+ `(source, payload)`, so an unchanged item written twice in the same
128
+ cadence dedupes to a 409.
94
129
 
95
130
  ## Concrete Examples
96
131
 
@@ -106,5 +141,8 @@ up to something the operator should hear about.
106
141
  ## Related
107
142
 
108
143
  - [Hourly Check](../features/routines/hourly-check.md)
144
+ - [Morning Routine](../features/routines/morning-routine.md)
145
+ - [Process Keys](./process-keys.md)
146
+ - [Routines](./routines.md)
109
147
  - [Git](../features/integrations/git.md)
110
148
  - [Obsidian](../features/integrations/obsidian.md)
@@ -26,14 +26,17 @@ ask_examples:
26
26
  - What is the difference between configurable and fixed ProcessKeys?
27
27
  locale: en-US
28
28
  created: 2026-04-25
29
- updated: 2026-05-15
29
+ updated: 2026-05-28
30
30
  keywords:
31
31
  - process key
32
32
  - ProcessKey
33
33
  - dispatch
34
34
  - routing
35
+ - tier
35
36
  - CONFIGURABLE_PROCESS_KEYS
36
37
  - DEFAULT_PROCESS_TIERS
38
+ - REACTIVE_PROCESS_KEYS
39
+ - TIER_LOCKED_PROCESS_KEYS
37
40
  - PROCESS_TO_EVENT_TYPE
38
41
  - routine.morning_routine
39
42
  - message.dm
@@ -42,6 +45,25 @@ related:
42
45
  - concepts/backends-and-tiers
43
46
  - concepts/skills
44
47
  - reference/process-keys
48
+ - features/operations/backend-routing
49
+ process_keys:
50
+ - routine.morning_routine
51
+ - routine.morning_routine_today
52
+ - routine.morning_routine_journal
53
+ - routine.evening_review
54
+ - routine.hourly_check
55
+ - routine.fetch_window
56
+ - routine.hourly_check.triage
57
+ - message.dm
58
+ - message.mention
59
+ - dashboard.chat
60
+ - dashboard.docs_qa
61
+ - agent.task
62
+ - agent.dm_task
63
+ - delegated_task
64
+ - delegated_task_heavy
65
+ ui_anchors:
66
+ - /settings/models
45
67
  ---
46
68
 
47
69
  # ProcessKeys
@@ -64,37 +86,49 @@ those subsystems.
64
86
  ## Definitions
65
87
 
66
88
  - **CONFIGURABLE_PROCESS_KEYS**: the set the operator can override per
67
- backend on `/settings/models`.
68
- - **REACTIVE_PROCESS_KEYS**: those tied to in-the-loop events (DMs,
69
- dashboard chat, docs QA).
70
- - **DEFAULT_PROCESS_TIERS**: the per-key default (`lite`, `medium`, or
71
- `high`).
89
+ backend on `/settings/models`. The rest (`delegated_task`, `setup`,
90
+ `schedule.approaching`, …) use fixed defaults and are not surfaced
91
+ there.
92
+ - **REACTIVE_PROCESS_KEYS**: those tied to in-the-loop events
93
+ (`message.dm`, `message.mention`, `dashboard.chat`,
94
+ `dashboard.docs_qa`, `setup`, `knowledge.import`). Everything else is
95
+ autonomous.
96
+ - **DEFAULT_PROCESS_TIERS**: the per-key default model size — `lite`
97
+ (Haiku-class), `medium` (Sonnet-class), or `high` (Opus-class).
98
+ Unknown keys (including `routine.custom.<slug>`) default to `medium`.
99
+ - **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked and
100
+ cannot be overridden by an operator pin. Today this is just
101
+ `dashboard.docs_qa`, locked to `medium`.
72
102
  - **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to the skill manifest
73
- key.
103
+ key, so the skills compiler can pick the right tool set.
74
104
 
75
105
  ## Concrete Examples
76
106
 
77
- - Routines: `routine.morning_routine` (parent envelope read by the
78
- pre-routine gate, plus the Phase 5 split keys
79
- `routine.morning_routine_today` and `routine.morning_routine_journal`),
107
+ - **Routines:** `routine.morning_routine` is the parent envelope read by
108
+ the pre-routine gate; the actual work runs as two parallel split keys
109
+ `routine.morning_routine_today` (Stage A, today.md, medium) and
110
+ `routine.morning_routine_journal` (Stage B, daily journal, lite). Also
80
111
  `routine.evening_review`, `routine.weekly_review`,
81
- `routine.hourly_check`,
82
- `routine.roadmap_refresh`, `routine.today_refresh`,
83
- `routine.user_profile_sweep`. `routine.morning_routine_initial` was
84
- retired by morning-routine-optimization.md Phase 7 (2026-05-16) the
85
- first-run branch routes through `routine.morning_routine`.
86
- - Routine sub-jobs (lite tier, dispatcher-spawned, not user-facing):
112
+ `routine.hourly_check`, `routine.roadmap_refresh`,
113
+ `routine.today_refresh`, `routine.user_profile_sweep`.
114
+ `routine.morning_routine_initial` was retired (2026-05-16) — the
115
+ first-run branch now routes through `routine.morning_routine`.
116
+ - **Routine sub-jobs** (lite tier, dispatcher-spawned, not user-facing):
87
117
  `routine.fetch_window` (pre-pass mail/calendar/Notion fetcher that
88
118
  runs before each main routine and POSTs observations) and
89
119
  `routine.hourly_check.triage` (Stage 2 escalate-vs-log-only gate
90
120
  inside the hourly check).
91
- - Custom routines: `routine.custom.<slug>` (kebab-case slug)
92
- - Messaging: `message.dm`, `message.mention`
93
- - Dashboard: `dashboard.chat`, `dashboard.docs_qa`
94
- - Scheduled / external: `agent.task` (recurring schedules),
121
+ - **Custom routines:** `routine.custom.<slug>` (kebab-case slug;
122
+ defaults to medium tier).
123
+ - **Messaging:** `message.dm`, `message.mention`
124
+ - **Dashboard:** `dashboard.chat`, `dashboard.docs_qa`
125
+ - **Scheduled / external:** `agent.task` (recurring schedules),
95
126
  `agent.dm_task` (DM-tone scheduled briefings),
96
- `schedule.approaching`, `calendar.change`, `gmail_classify`,
97
- `setup`
127
+ `schedule.approaching`, `calendar.change`, `gmail_classify`, `setup`
128
+ - **Delegated work:** `delegated_task` (lite) and `delegated_task_heavy`
129
+ — the only high-tier key, opt-in via the `delegatedTaskHeavyEnabled`
130
+ config flag. No install-time surface defaults to `high`; operators
131
+ pin high per-row on `/settings/models`.
98
132
 
99
133
  ## Where You See It in the Dashboard
100
134
 
@@ -30,7 +30,7 @@ ask_examples:
30
30
  - Which routine uses the high tier by default?
31
31
  locale: en-US
32
32
  created: 2026-04-25
33
- updated: 2026-05-15
33
+ updated: 2026-05-28
34
34
  keywords:
35
35
  - routine
36
36
  - routines
@@ -52,6 +52,25 @@ related:
52
52
  ui_anchors:
53
53
  - /connections/routines
54
54
  - /settings/routines
55
+ process_keys:
56
+ - routine.morning_routine
57
+ - routine.morning_routine_today
58
+ - routine.morning_routine_journal
59
+ - routine.evening_review
60
+ - routine.weekly_review
61
+ - routine.monthly_review
62
+ - routine.hourly_check
63
+ - routine.today_refresh
64
+ - routine.fetch_window
65
+ - routine.hourly_check.triage
66
+ config_keys:
67
+ - dayBoundaryHour
68
+ - hourlyCheckEnabled
69
+ - hourlyCheckIntervalMinutes
70
+ - hourlyCheckActiveStartHour
71
+ - hourlyCheckActiveEndHour
72
+ - hourlyCheckPrePassFreshnessMinutes
73
+ - monthlyReviewEnabled
55
74
  ---
56
75
 
57
76
  # Routines
@@ -60,8 +79,9 @@ ui_anchors:
60
79
 
61
80
  A routine is a unit of agent work that runs on a schedule, not in
62
81
  response to a message. The morning routine fires once per agent day at
63
- `dayBoundaryHour`; evening and weekly retros fire on fixed schedules
64
- in code; the hourly check coalesces accumulated observations on a
82
+ `dayBoundaryHour`; the evening review (18:00 daily), weekly review
83
+ (Friday 19:00), and optional monthly review fire on fixed schedules in
84
+ code; the hourly check coalesces accumulated observations on a
65
85
  configurable cadence.
66
86
 
67
87
  ## Why This Concept Exists
@@ -82,51 +102,58 @@ DM is who fired the event.
82
102
  a ProcessKey starting with `routine.`.
83
103
  - **Agent day**: the 24-hour window starting at `dayBoundaryHour`
84
104
  (default 04:00) — see [Agent Day](agent-day.md).
85
- - **Catch-up**: if the daemon was offline at the trigger time, the
86
- scheduler re-fires the routine on next launch when it is still in
87
- the same agent day.
88
- - **Tier policy**: no routine runs heavy by default. The morning
89
- routine's first-run branch ran on heavy until
90
- `docs/design/appendices/morning-routine-optimization.md` Phase 7
91
- (2026-05-16) retired `routine.morning_routine_initial`; the
92
- first-run branch now uses the medium-tier parent
93
- `routine.morning_routine` with a daemon-prepared
94
- `<roadmap_skeleton>` block. Every recurring routine morning,
95
- evening, weekly, hourly check defaults to **medium**
96
- (Sonnet on Claude). The morning routine itself is a two-stage
97
- pipeline: Stage A `routine.morning_routine_today` (medium) runs
98
- in parallel with Stage B `routine.morning_routine_journal` (lite).
99
- The lite (Haiku) tier is reserved for Stage B plus mechanical
100
- sub-jobs (the hourly-check triage gate and the pre-pass fetcher).
101
- See [Backends and Tiers](backends-and-tiers.md).
105
+ - **Catch-up**: if the daemon was offline at the trigger time, a
106
+ boot-time check re-fires any routine whose window has already
107
+ opened but never ran (morning routine within the agent day; evening
108
+ review once it is past 18:00; weekly review across Fri–Sun). It never
109
+ double-fires a routine that already succeeded.
110
+ - **Tier policy**: **no routine runs the high tier by default.** Every
111
+ recurring routine — morning, evening, weekly, hourly check —
112
+ defaults to **medium** (Sonnet on Claude). The **lite** (Haiku) tier
113
+ is reserved for the morning routine's Stage B and for mechanical
114
+ sub-jobs (the hourly-check triage gate and the pre-pass fetcher). The
115
+ only high-tier ProcessKey in the whole system is `delegated_task_heavy`,
116
+ which is opt-in and not a routine. See
117
+ [Backends and Tiers](backends-and-tiers.md).
118
+ - **Two-stage morning routine**: the morning routine runs as a parent
119
+ envelope `routine.morning_routine` (medium) that fans out two stages
120
+ in parallel Stage A `routine.morning_routine_today` (medium, builds
121
+ `state/today.md`) and Stage B `routine.morning_routine_journal` (lite,
122
+ authors the previous day's journal). The legacy heavy-tier
123
+ `routine.morning_routine_initial` first-run branch was retired in
124
+ Phase 7 (2026-05-16); a first run is now detected inline from a
125
+ missing `state/yesterday.md` and handled by the same medium-tier
126
+ parent with a daemon-prepared `<roadmap_skeleton>` block.
102
127
  - **Pre-pass fetcher**: each main routine that needs fresh mail /
103
128
  calendar / Notion data is preceded by a lite-tier
104
129
  `routine.fetch_window` session that fetches the relevant window and
105
- POSTs observations. The main routine consumes the resulting
106
- `<fetch_report>` block plus pending observations instead of
107
- fetching upstream APIs itself. This is the cost-savings split
108
- introduced in 2026-05.
130
+ POSTs observations. The main routine then consumes the resulting
131
+ `<fetch_report>` block plus pending observations instead of hitting
132
+ upstream APIs itself a cost-savings split introduced in 2026-05.
109
133
 
110
134
  ## Concrete Examples
111
135
 
112
136
  | ProcessKey | When | Tier |
113
137
  |---|---|---|
114
- | `routine.morning_routine` | `dayBoundaryHour` daily (parent envelope; first-run branch detected inline from missing `yesterday.md`) | medium |
138
+ | `routine.morning_routine` | `dayBoundaryHour` daily (parent envelope; first-run branch detected inline from missing `state/yesterday.md`) | medium |
115
139
  | `routine.morning_routine_today` | Stage A of every morning routine (today.md synthesis + roadmap maintenance + schedule fan-out) | medium |
116
- | `routine.morning_routine_journal` | Stage B of every morning routine (daily/<yesterday>.md authoring) | lite |
117
- | `routine.today_refresh` | Every 4h inside the active window | medium |
140
+ | `routine.morning_routine_journal` | Stage B of every morning routine (`journal/daily/<yesterday>.md` authoring) | lite |
118
141
  | `routine.evening_review` | 18:00 daily (fixed) | medium |
142
+ | `routine.weekly_review` | Friday 19:00 (fixed, one hour after evening review) | medium |
143
+ | `routine.monthly_review` | Last day of month at 18:00, **default off** (`monthlyReviewEnabled`) | medium |
119
144
  | `routine.hourly_check` | Every `hourlyCheckIntervalMinutes` (default 60) inside the active window | medium |
120
- | `routine.weekly_review` | Friday 18:00 (fixed) | medium |
121
- | `routine.fetch_window` | Spawned before each routine above | lite |
145
+ | `routine.today_refresh` | On calendar drift or a dashboard "refresh today" request (not a fixed cron) | medium |
146
+ | `routine.fetch_window` | Spawned before each routine above that needs fresh upstream data | lite |
122
147
  | `routine.hourly_check.triage` | Stage 2 gate of every hourly check | lite |
123
- | `routine.custom.<slug>` | Operator-defined recurrence | configurable |
148
+ | `routine.custom.<slug>` | Operator-defined recurrence | medium (override per routine via `backend_tier`) |
124
149
 
125
150
  ## Where You See It in the Dashboard
126
151
 
127
- - **Settings → Routines** is where the hourly check active window, the
128
- hourly check cadence, and any custom routines live. Morning, evening,
129
- and weekly fire times are fixed in code and not surfaced here.
152
+ - **Settings → Routines** is where the hourly check active window
153
+ (`hourlyCheckActiveStartHour` / `hourlyCheckActiveEndHour`), the
154
+ hourly check cadence (`hourlyCheckIntervalMinutes`), and any custom
155
+ routines live. Morning, evening, weekly, and monthly fire times are
156
+ fixed in code and not surfaced here.
130
157
  - **Connections → Routines** is the unified view of next-fire times.
131
158
  - **Activity** logs each routine run with its outcome.
132
159