@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
@@ -16,6 +16,7 @@ tags:
16
16
  - integrations
17
17
  - knowledge
18
18
  - observations
19
+ - obsidian
19
20
  status: stable
20
21
  ask_examples:
21
22
  - How do I connect my Obsidian vault?
@@ -23,7 +24,7 @@ ask_examples:
23
24
  - Why didn't the agent see my new note?
24
25
  locale: en-US
25
26
  created: 2026-04-25
26
- updated: 2026-04-25
27
+ updated: 2026-05-28
27
28
  keywords:
28
29
  - obsidian
29
30
  - vault
@@ -36,15 +37,20 @@ related:
36
37
  ui_anchors:
37
38
  - /connections/knowledge
38
39
  config_keys:
40
+ - externalObsidianVaultPath
41
+ - externalObsidianVaultName
42
+ - externalObsidianWatch
39
43
  - obsidianDebounceSeconds
40
44
  ---
41
45
 
42
46
  # Obsidian
43
47
 
44
- ## In One Sentence
48
+ Point Aitne at your Obsidian vault directory; new and changed notes
49
+ record observations the hourly check consumes. The agent can read and
50
+ write vault notes through the `external-services` skill.
45
51
 
46
- Point Aitne at your Obsidian vault directory; new and changed
47
- notes record observations the hourly check consumes.
52
+ Reads and writes go through the Obsidian app's CLI the Obsidian app
53
+ must be running, or vault read/write calls fail.
48
54
 
49
55
  ## What It Does
50
56
 
@@ -52,9 +58,22 @@ notes record observations the hourly check consumes.
52
58
  - Filters out agent-originated writes via `AgentWriteTracker`.
53
59
  - Records observations for genuine operator edits.
54
60
 
61
+ ### Will it edit my notes?
62
+
63
+ The agent reads on demand and can create, append to, overwrite, or
64
+ delete notes when you ask it to (via the `external-services` skill). It
65
+ never edits your vault unprompted. When the agent does write, the
66
+ watcher does not treat its own writes as new observations —
67
+ `AgentWriteTracker` suppresses them — so the agent does not re-observe
68
+ its own output.
69
+
55
70
  ## When It Runs / How It Is Triggered
56
71
 
57
- Continuously. The watcher is debounced by `obsidianDebounceSeconds`.
72
+ Continuously the watcher runs as long as the daemon is up and a vault
73
+ path is configured (`externalObsidianWatch=true`). Saves are debounced
74
+ by `obsidianDebounceSeconds` before an observation is recorded; the
75
+ [hourly check](../routines/hourly-check.md) later consumes those
76
+ observations.
58
77
 
59
78
  ## Where in the Dashboard
60
79
 
@@ -64,10 +83,14 @@ Continuously. The watcher is debounced by `obsidianDebounceSeconds`.
64
83
 
65
84
  | Setting | Default | Notes |
66
85
  |---|---|---|
86
+ | `externalObsidianVaultPath` | unset | Vault directory; set in Connections → Knowledge. |
87
+ | `externalObsidianWatch` | true | Set false to keep the path but stop recording changes (large-vault churn control). |
67
88
  | `obsidianDebounceSeconds` | 5 | How long to wait after a save before recording. |
68
89
 
69
90
  ## When Something Goes Wrong
70
91
 
92
+ - A vault read or write that failed: the Obsidian app must be running,
93
+ since reads and writes proxy through its CLI. Open Obsidian and retry.
71
94
  - A change that did not record: the debounce may have folded multiple
72
95
  saves; the next one will fire.
73
96
 
@@ -26,9 +26,9 @@ tags:
26
26
  - lifestyle
27
27
  - git
28
28
  - github
29
- - automation
29
+ - autonomous
30
30
  - observations
31
- - architecture
31
+ - core
32
32
  status: stable
33
33
  ask_examples:
34
34
  - What is the My Life › Git page for?
@@ -46,7 +46,7 @@ ask_examples:
46
46
  - How much does one Architecture refresh cost?
47
47
  locale: en-US
48
48
  created: 2026-05-05
49
- updated: 2026-05-17
49
+ updated: 2026-06-07
50
50
  keywords:
51
51
  - my life
52
52
  - git
@@ -69,6 +69,20 @@ ui_anchors:
69
69
  - /connections/repositories
70
70
  config_keys:
71
71
  - gitPollIntervalSeconds
72
+ process_keys:
73
+ - git.project.init
74
+ - git.project.update
75
+ - git.project.refresh_architecture
76
+ - git.project.retemplate
77
+ api_endpoints:
78
+ - PUT /api/repositories/:id/architecture-section
79
+ - POST /api/repositories/:id/management/init
80
+ - POST /api/repositories/:id/management/refresh-architecture
81
+ - POST /api/repositories/:id/management/scan
82
+ context_files:
83
+ - knowledge/repos/<slug>/overview.md
84
+ - knowledge/repos/<slug>/README.md
85
+ - journal/repos/<slug>/<date>.md
72
86
  ---
73
87
 
74
88
  # My Life — Git
@@ -86,8 +100,7 @@ mirror of the source README.
86
100
 
87
101
  The page lists every repository registered on
88
102
  **Connections → Repositories** and exposes three collapsible sections
89
- per repo (now **all open by default** so the controls are visible at
90
- a glance):
103
+ per repo (all open by default so the controls are visible at a glance):
91
104
 
92
105
  1. **Polling** — overrides the global `gitPollIntervalSeconds` for
93
106
  this repository alone. Useful when one repo is high-traffic and
@@ -97,17 +110,17 @@ a glance):
97
110
  2. **Triggers** — fire when matching Git or GitHub events arrive on
98
111
  this repository. Triggers run **alongside** the project-wide
99
112
  task-flow defaults, not in place of them. Each trigger has a
100
- workdir mode (`local-clone` or `ephemeral`); local-clone triggers
113
+ workdir mode (`local-clone` or `temp`); local-clone triggers
101
114
  require the repository to have a `localPath`.
102
115
  3. **Daily git management** — opt-in per repo. Enabling it does three
103
116
  distinct kinds of work, on different cadences:
104
117
  - On the first **Run init now** click, writes the curated
105
- `git/<slug>/overview.md` skeleton, mirrors the source `README.*`
106
- to `git/<slug>/README.md`, and **automatically queues a
107
- one-shot Architecture refresh** so the AI agent fills in the
108
- deep Architecture section for you.
109
- - Once a day, the `repository-management-cron` observer iterates
110
- enabled rows and writes `git/<slug>/journal/YYYY-MM-DD.md` if
118
+ `knowledge/repos/<slug>/overview.md` skeleton, mirrors the source
119
+ `README.*` to `knowledge/repos/<slug>/README.md`, and
120
+ **automatically queues a one-shot Architecture refresh** so the AI
121
+ agent fills in the deep Architecture section for you.
122
+ - Once a day, the `RepositoryManagementCron` observer iterates
123
+ enabled rows and writes `journal/repos/<slug>/YYYY-MM-DD.md` if
111
124
  there was activity, plus a one-line entry under
112
125
  `## Daily Activity Log` in `overview.md`.
113
126
  - **Refresh architecture** (the button) re-runs the Architecture
@@ -120,8 +133,9 @@ The agent never pushes, amends, or force-resets. Read-only by design.
120
133
 
121
134
  ## Architecture Section — Deep AI Analysis
122
135
 
123
- The `## Architecture` block of `git/<slug>/overview.md` is wrapped in
124
- `<!-- architecture:start -->` / `<!-- architecture:end -->` markers
136
+ The `## Architecture` block of `knowledge/repos/<slug>/overview.md` is
137
+ wrapped in `<!-- architecture:start -->` / `<!-- architecture:end -->`
138
+ markers
125
139
  and contains a **module map, runtime shape, data flow, persistence
126
140
  model, integrations, build pipeline, and design choices** produced by
127
141
  a Sonnet-class agent that reads the actual code.
@@ -162,8 +176,8 @@ for recovery.
162
176
 
163
177
  ## README Mirror
164
178
 
165
- `git/<slug>/README.md` is a **mechanical verbatim copy** of the
166
- repository's `README.*` (whichever extension exists, with `.md`
179
+ `knowledge/repos/<slug>/README.md` is a **mechanical verbatim copy** of
180
+ the repository's `README.*` (whichever extension exists, with `.md`
167
181
  preferred). It is refreshed on:
168
182
 
169
183
  - Every **Run init now** (initial mirror).
@@ -201,13 +215,13 @@ README is rewritten.
201
215
 
202
216
  ## What It Outputs
203
217
 
204
- Per repository, under `<contextDir>/git/<slug>/`:
218
+ Per repository, under `<contextDir>/`:
205
219
 
206
220
  | File | Source | Refresh cadence |
207
221
  |---|---|---|
208
- | `overview.md` | Daemon (skeleton + Notable Changes + journal log) + Agent (Architecture section) | Skeleton on init; Architecture on init/refresh; daily entry appended on each scan |
209
- | `README.md` | Verbatim copy of `<repo>/README.*` | Every init + every architecture refresh |
210
- | `journal/YYYY-MM-DD.md` | Daemon (commits + PR/workflow observations + diff stat) | Once per day per repo, when activity exists |
222
+ | `knowledge/repos/<slug>/overview.md` | Daemon (skeleton + Notable Changes + journal log) + Agent (Architecture section) | Skeleton on init; Architecture on init/refresh; daily entry appended on each scan |
223
+ | `knowledge/repos/<slug>/README.md` | Verbatim copy of `<repo>/README.*` | Every init + every architecture refresh |
224
+ | `journal/repos/<slug>/<date>.md` | Daemon (commits + PR/workflow observations + diff stat) | Once per day per repo, when activity exists |
211
225
 
212
226
  Polling additionally produces `observation` rows in the database;
213
227
  triggers spawn autonomous sessions whose task-flow is selected by the
@@ -216,7 +230,10 @@ trigger's process key.
216
230
  ## Where in the Dashboard
217
231
 
218
232
  - **My Life → Git** (`/git`) — this page. Polling, Triggers, and Daily
219
- git management are now all expanded by default.
233
+ git management are all expanded by default. The Daily-git-management
234
+ panel's buttons appear in lifecycle order — **Run init now → Refresh
235
+ architecture → Run today's scan now** — and each surfaces an inline
236
+ green confirmation on success or a red error message on failure.
220
237
  - **Connections → Repositories** (`/connections/repositories`) —
221
238
  register a repo (link a `localPath` and/or `owner/repo`), rename,
222
239
  set `local-only`, delete. The model-binding cards visible on this
@@ -226,24 +243,11 @@ trigger's process key.
226
243
  `github.pull_request.review_requested`, `github.workflow_run.failed`)
227
244
  were folded back into the default routing. To pin a different model
228
245
  for any of those, use **Settings → Models** instead.
229
- - **Knowledge** (`/knowledge?path=git/<slug>/overview`) — quick links
230
- on each Daily-git-management panel open the generated overview, the
231
- current day's journal, and (after the architecture refresh
232
- completes) the AI-rich Architecture section in context.
233
-
234
- ## UI polish (2026-05-07)
235
-
236
- - The Daily git management toggle is now a styled switch instead of a
237
- raw checkbox — same behavior, more legible state.
238
- - Init / Refresh architecture / Run today's scan now buttons surface
239
- inline confirmation messages (green) on success and inline error
240
- messages (red) on failure, instead of the previous silent return.
241
- - The button order on the panel is **Run init now → Refresh
242
- architecture → Run today's scan now**, matching the lifecycle order
243
- (one-time skeleton → one-time deep analysis → daily increments).
244
- - The Polling, Triggers, and Daily git management collapsibles all
245
- open by default so a freshly-loaded `/git` page exposes every
246
- per-repo control without an extra click.
246
+ - **Knowledge → Context Files** (`/knowledge?tab=context-files`) — quick
247
+ links on each Daily-git-management panel open the generated overview
248
+ (`knowledge/repos/<slug>/overview.md`), the current day's journal
249
+ (`journal/repos/<slug>/<date>.md`), and (after the architecture
250
+ refresh completes) the AI-rich Architecture section in context.
247
251
 
248
252
  ## Configuration
249
253
 
@@ -268,7 +272,7 @@ repository has a `localPath`:
268
272
  - **Triggers** with `workdirMode: "local-clone"` require a `localPath`
269
273
  on the parent repository (enforced when the trigger is created and
270
274
  again if you try to clear `localPath` while such a trigger exists).
271
- Triggers with `workdirMode: "ephemeral"` work without a local clone.
275
+ Triggers with `workdirMode: "temp"` work without a local clone.
272
276
  - **Daily git management** is **local-clone-bound for v1**. The
273
277
  toggle is disabled and the dashboard surfaces "No local clone — link
274
278
  one to enable this feature." Internally the
@@ -11,8 +11,8 @@ category: features
11
11
  summary: |
12
12
  Track books and Kindle highlights in a SQLite-backed reading list
13
13
  surfaced at /reading. The schema covers title/author/status plus a
14
- separate reading_highlights table populated from Kindle clipping
15
- imports.
14
+ separate reading_highlights table populated from Kindle imports
15
+ (My Clippings.txt or an Export Notebook email).
16
16
  section: lifestyle
17
17
  tags:
18
18
  - lifestyle
@@ -21,20 +21,27 @@ tags:
21
21
  status: stable
22
22
  ask_examples:
23
23
  - How do I add a book to my reading list?
24
+ - How do I import my Kindle highlights?
24
25
  - Can the agent recommend something from my reading list?
25
26
  - Where do reading-list items get stored?
26
27
  locale: en-US
27
28
  created: 2026-04-25
28
- updated: 2026-04-25
29
+ updated: 2026-06-07
29
30
  keywords:
30
31
  - reading
31
32
  - books
32
- - articles
33
+ - highlights
34
+ - kindle
33
35
  - read later
34
36
  related:
35
37
  - features/memory-files/user-profile
36
38
  - features/lifestyle/receipts
37
39
  - features/lifestyle/travel-bookings
40
+ api_endpoints:
41
+ - GET /api/books
42
+ - PATCH /api/books/:id
43
+ - POST /api/books/import-clippings
44
+ - POST /api/books/import-notebook-html
38
45
  ui_anchors:
39
46
  - /reading
40
47
  ---
@@ -44,22 +51,35 @@ ui_anchors:
44
51
  ## In One Sentence
45
52
 
46
53
  A reading list backed by the `books` and `reading_highlights` SQLite
47
- tables: imports Kindle clippings, tracks status (`reading`/`finished`/etc.),
48
- and surfaces the working set at `/reading`.
54
+ tables: imports your Kindle highlights, tracks each book's status
55
+ (`reading`, `completed`, or `abandoned`), and surfaces the working set
56
+ at `/reading`.
49
57
 
50
58
  ## What It Does
51
59
 
52
- - **Add** items by DM ("agent, add 'The Soul of a New Machine' to my
53
- reading list") the agent inserts into `books` via the daemon
54
- `/api/books` route.
55
- - **Import Kindle highlights** via `POST /api/books/import-clippings`,
56
- which parses a `My Clippings.txt` paste and populates the
57
- `reading_highlights` table linked back to `books.id`.
58
- - **List** what's outstanding on `/reading`.
59
- - **Mark complete** the agent updates the row's `status` and
60
- `completed_at` columns.
61
- - **Recommend** from the list during reactive turns when context
62
- invites it.
60
+ - **Import Kindle highlights** the primary way books enter the list.
61
+ Two pipelines, both of which create any missing `books` rows and link
62
+ every highlight back to `books.id` in the `reading_highlights` table:
63
+ - `POST /api/books/import-clippings` parses a pasted `My Clippings.txt`.
64
+ - `POST /api/books/import-notebook-html` parses the HTML of a Kindle
65
+ "Export Notebook" email.
66
+ - **List** the library on `/reading` or via `GET /api/books`
67
+ (filterable by `status` and `source`, paginated to 200 rows per call).
68
+ - **Mark complete or abandoned** — an existing row is updated via
69
+ `PATCH /api/books/:id`. This is an **Approve-tier** write that requires
70
+ an operator `Authorization: Bearer` token, so it is driven from the
71
+ dashboard, not autonomously by the agent (an unauthenticated agent curl
72
+ is rejected with **401** before the handler runs). Setting `status` to
73
+ `completed` stamps `completed_at` automatically; you can also set a 1–5
74
+ `rating` or `notes`.
75
+ - **Recommend** from the list during reactive turns, and refresh the
76
+ reading-taste profile during weekly and monthly reviews.
77
+
78
+ There is **no bare "add a book" endpoint** — new books arrive through the
79
+ two Kindle import pipelines above (or are created internally during an
80
+ import); `PATCH` only edits books that already exist. If you ask the
81
+ agent to "add a book" conversationally, it works from whatever import
82
+ data it has rather than minting a free-form row.
63
83
 
64
84
  There is no Markdown context file for the reading list; the durable
65
85
  record is the SQLite row. If you want a parallel copy in your external
@@ -68,8 +88,13 @@ stays canonical in the database.
68
88
 
69
89
  ## When It Runs / How It Is Triggered
70
90
 
71
- Reactive only. There is no autonomous reading-list routine in the
72
- default install the operator drives the list shape.
91
+ There is no dedicated autonomous reading-list routine the operator
92
+ drives the list shape. The reading skill loads in two situations:
93
+
94
+ - **Reactively**, when you mention a book or highlight in a DM.
95
+ - **From existing routines** — the morning routine can mention what
96
+ you're currently reading, and the weekly and monthly reviews pull
97
+ reading progress and refresh the reading-taste profile.
73
98
 
74
99
  ## What It Outputs
75
100
 
@@ -83,9 +108,19 @@ default install — the operator drives the list shape.
83
108
 
84
109
  ## When Something Goes Wrong
85
110
 
86
- - A **missing add**: check the Activity row's tool calls — the agent
87
- hits `/api/books`, so a network or quota error there will surface in
88
- the audit log even when the chat reply looked fine.
111
+ - **An import that produced no books**: check the Activity row's tool
112
+ calls — the agent hits `/api/books/import-clippings` (or
113
+ `/import-notebook-html`), so a parse failure, oversized payload, or
114
+ network error there surfaces in the audit log even when the chat reply
115
+ looked fine. A common cause is pasting a partial or non-Kindle
116
+ clippings file, which yields zero parsed books.
117
+ - **An edit that didn't stick**: `PATCH /api/books/:id` is Approve-tier,
118
+ so a request without a valid operator Bearer token is rejected with 401
119
+ before the handler runs — book status/rating/notes corrections are made
120
+ from the dashboard, not by an autonomous agent. Once authenticated, it
121
+ returns 404 if the id doesn't exist and 400 for an invalid `status`
122
+ (only `reading`, `completed`, `abandoned`) or an out-of-range `rating`
123
+ (must be 1–5).
89
124
 
90
125
  ## Related
91
126
 
@@ -18,14 +18,16 @@ tags:
18
18
  - lifestyle
19
19
  - receipts
20
20
  - mail
21
+ - integrations
21
22
  status: stable
22
23
  ask_examples:
23
24
  - Where are my receipts stored?
24
25
  - How do I save a receipt to my Obsidian vault?
25
26
  - What does the receipts table track?
27
+ - What receipts haven't I saved yet?
26
28
  locale: en-US
27
29
  created: 2026-04-25
28
- updated: 2026-05-17
30
+ updated: 2026-05-28
29
31
  keywords:
30
32
  - receipt
31
33
  - invoice
@@ -33,6 +35,11 @@ keywords:
33
35
  - attachment
34
36
  - PDF
35
37
  - gmail receipts
38
+ api_endpoints:
39
+ - GET /api/receipts
40
+ - GET /api/receipts/summary
41
+ - POST /api/receipts/:id/download
42
+ - PATCH /api/receipts/:id
36
43
  related:
37
44
  - features/lifestyle/reading
38
45
  - features/lifestyle/travel-bookings
@@ -43,41 +50,64 @@ related:
43
50
 
44
51
  ## In One Sentence
45
52
 
46
- Receipts are PDF / image attachments the Gmail observer flags as
47
- receipts or invoices; their metadata lives in the `receipts` SQLite
48
- table, and the agent can export the original file into your external
53
+ Receipts are PDF / image attachments the Gmail observer detects while
54
+ scanning your mail; their metadata lives in the `receipts` SQLite
55
+ table, and the agent can save the original file into your external
49
56
  Obsidian vault on request.
50
57
 
51
- ## What It Does
58
+ ## How Detection Works
52
59
 
53
- - The Gmail observer auto-detects receipt / invoice attachments while
54
- scanning travel-booking and document mail.
55
- - Each detection inserts a row into the `receipts` table
56
- (`provider_msg_id`, `attachment_id`, `filename`, `mime_type`,
57
- `size_bytes`, `category`, `obsidian_path`, `saved_at`, `account_id`).
58
- - The agent surfaces summaries via the `/api/receipts` and
59
- `/api/receipts/summary` HTTP routes.
60
- - On request, the agent downloads the attachment via
61
- `POST /api/receipts/:id/download`, writes it into the external
62
- Obsidian vault under `receipts/YYYY/MM/<merchant>-<date>.<ext>`, and
63
- patches the row's `obsidian_path` / `saved_at` columns.
60
+ The Gmail observer scans travel-booking emails for PDF / image
61
+ attachments and retains other generic documents it finds. Each detected
62
+ attachment inserts a row into the `receipts` table, keyed uniquely on
63
+ `(account_id, provider_msg_id, attachment_id)` so re-scans are
64
+ idempotent. Columns:
65
+
66
+ - `category` `document` or `travel` (nullable until classified)
67
+ - `provider_msg_id`, `attachment_id`, `account_id` locate the source
68
+ attachment in the unified mail registry
69
+ - `filename`, `mime_type`, `size_bytes` — attachment metadata
70
+ - `obsidian_path`, `saved_at` `NULL` until you save the file to your
71
+ vault (see below)
72
+ - `id`, `created_at` — row identity and detection time
64
73
 
65
74
  There is no Markdown context file for receipts; the durable record is
66
75
  the SQLite row plus the optional Obsidian copy.
67
76
 
77
+ ## Saving a Receipt to Your Vault
78
+
79
+ Saving is a two-step flow — the download endpoint never writes to the
80
+ vault by itself:
81
+
82
+ 1. The agent downloads the original bytes via
83
+ `POST /api/receipts/:id/download`, which streams the raw attachment
84
+ (resolved through the mail registry by `account_id`; oversized files
85
+ over 100 MB and orphaned rows with a null `account_id` are rejected).
86
+ 2. The agent writes the file into your **external** Obsidian vault — not
87
+ the primary management vault — under the convention
88
+ `receipts/YYYY/MM/<merchant>-<date>.<ext>` (e.g.
89
+ `receipts/2026/04/amazon-2026-04-12.pdf`), then records that path
90
+ with `PATCH /api/receipts/:id` (body `{"obsidianPath": "..."}`),
91
+ which also stamps `saved_at`.
92
+
93
+ To reclassify a receipt, the agent PATCHes `{"category": "travel"}`
94
+ (or `"document"`).
95
+
68
96
  ## Where in the Dashboard
69
97
 
70
98
  There is no dedicated tab today. Receipts surface inline when you ask
71
- for them in chat (e.g. "what receipts haven't I saved yet?"). The
72
- underlying API is documented in
99
+ for them in chat (e.g. "what receipts haven't I saved yet?"). List and
100
+ filter them with `GET /api/receipts` (`category`, `saved`, `limit`
101
+ params) and pull totals from `GET /api/receipts/summary`. The full API
102
+ is documented in
73
103
  `agent-assets/skills/gmail-lifestyle/references/receipts-api.md`
74
104
  (loaded by the `gmail-lifestyle` skill).
75
105
 
76
106
  ## Configuration
77
107
 
78
- The detection runs as part of the Gmail observer; see
79
- [Mail](../integrations/mail.md). The Obsidian save path follows the
80
- external vault convention `receipts/YYYY/MM/<merchant>-<date>.<ext>`.
108
+ Detection runs as part of the Gmail observer; see
109
+ [Mail](../integrations/mail.md). The save target follows the external
110
+ vault convention `receipts/YYYY/MM/<merchant>-<date>.<ext>`.
81
111
 
82
112
  ## Related
83
113
 
@@ -11,20 +11,23 @@ aliases:
11
11
  - trains
12
12
  category: features
13
13
  summary: |
14
- A lightweight log of trips, flights, hotels, and confirmation
15
- numbers. The agent appends to it from confirmation emails or DMs.
14
+ A log of trips, flights, hotels, restaurants, and confirmation
15
+ numbers that the agent builds automatically from booking-confirmation
16
+ emails. The morning routine surfaces upcoming travel.
16
17
  section: lifestyle
17
18
  tags:
18
19
  - lifestyle
19
20
  - travel
20
21
  - mail
22
+ - integrations
21
23
  status: stable
22
24
  ask_examples:
23
- - How do I log a flight?
25
+ - How does the agent track my flights and hotels?
24
26
  - Will the agent remind me about my upcoming trip?
27
+ - Where are my travel bookings stored?
25
28
  locale: en-US
26
29
  created: 2026-04-25
27
- updated: 2026-04-25
30
+ updated: 2026-06-07
28
31
  keywords:
29
32
  - flight
30
33
  - hotel
@@ -33,27 +36,87 @@ keywords:
33
36
  - itinerary
34
37
  - trains
35
38
  - restaurants
39
+ - confirmation number
36
40
  related:
37
- - features/lifestyle/travel-time
41
+ - features/integrations/mail
42
+ - features/lifestyle/receipts
43
+ - features/routines/morning-routine
44
+ api_endpoints:
45
+ - /api/travel-bookings
46
+ - /api/travel-bookings/upcoming
47
+ process_keys:
48
+ - gmail_classify
49
+ - routine.morning_routine
50
+ ui_anchors:
51
+ - /trip
38
52
  ---
39
53
 
40
54
  # Travel Bookings
41
55
 
42
56
  ## In One Sentence
43
57
 
44
- A trip log the agent appends to from confirmation emails and DMs,
45
- referenced by the morning routine on travel days.
58
+ A trip log the agent builds automatically from booking-confirmation
59
+ emails, surfaced by the morning routine on travel days.
46
60
 
47
61
  ## What It Does
48
62
 
49
- - Captures trip dates, modes, and confirmation numbers.
50
- - Surfaces in the morning routine on the day of departure.
51
- - Cross-references the travel-time skill for door-to-airport math.
63
+ The mail observer watches your connected mail accounts for booking
64
+ confirmations from airlines, hotels, online travel agencies, restaurant
65
+ reservation platforms, and rail/bus services. When a message is
66
+ classified as travel, the daemon extracts the details and stores a row
67
+ in the `travel_bookings` SQLite table:
52
68
 
53
- ## Where in the Dashboard
69
+ - **Type** `flight`, `hotel`, `restaurant`, `train`, `bus`, or `other`.
70
+ - **Provider** — e.g. the airline or hotel chain.
71
+ - **Dates** — `start_date` and (where present) `end_date`.
72
+ - **Confirmation number**, **amount**, and **currency**.
54
73
 
55
- Surfaces inline in chat and via the morning briefing on travel days.
74
+ Each booking is keyed by its source message, so re-reading the same
75
+ confirmation email never creates a duplicate row.
56
76
 
57
- ## Related
77
+ ## How Bookings Get Created
58
78
 
59
- - [Travel Time](travel-time.md)
79
+ Bookings are extracted from email only — there is no manual "log a
80
+ flight" command or DM shortcut. To start capturing travel, connect a
81
+ mail account (see [Mail](features/integrations/mail)) and let the
82
+ classifier do the rest. The flow is:
83
+
84
+ 1. The mail poller fetches new messages.
85
+ 2. The classifier (`gmail_classify`, lite tier) tags travel
86
+ confirmations.
87
+ 3. The daemon parses the booking and inserts it into `travel_bookings`.
88
+
89
+ ## Where Bookings Surface
90
+
91
+ - **Morning routine.** On travel days the morning routine
92
+ (`routine.morning_routine`) surfaces upcoming trips in your briefing.
93
+ A booking with a `start_date` within roughly the last 30 days (or in
94
+ the future) keeps the travel-aware briefing helpers active.
95
+ - **Trip page.** The dashboard `/trip` page is the eventual home for an
96
+ itinerary timeline view. It is a placeholder while that view is built
97
+ — the underlying data already lives in the database and is reachable
98
+ via the API below.
99
+
100
+ ## API
101
+
102
+ Read-only and status-update access (read endpoints are read-sensitive —
103
+ they expose personal travel data; the PATCH endpoint follows the standard
104
+ write-safety tier and requires approval):
105
+
106
+ ```bash
107
+ # All bookings (optionally filter by type/status/date range)
108
+ curl -s "http://localhost:8321/api/travel-bookings?type=flight&limit=20"
109
+
110
+ # Upcoming only, sorted by start date
111
+ curl -s "http://localhost:8321/api/travel-bookings/upcoming?limit=10"
112
+
113
+ # Mark a booking completed
114
+ curl -s -X PATCH "http://localhost:8321/api/travel-bookings/1" \
115
+ -H "Content-Type: application/json" \
116
+ -d '{"status": "completed"}'
117
+ ```
118
+
119
+ Filters on `GET /api/travel-bookings`: `type`
120
+ (`flight|hotel|restaurant|train|bus|other`), `status`
121
+ (`upcoming|completed|cancelled|all`), `from` / `to` (ISO date on
122
+ `start_date`), and `limit` (1–200, default 50).