@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.
- package/README.md +251 -164
- package/agent-assets/agent-profiles/_safety.md +3 -3
- package/agent-assets/agent-profiles/browser-task.md +108 -0
- package/agent-assets/agent-profiles/conversational.md +3 -3
- package/agent-assets/agent-profiles/profile-importer.md +2 -2
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
- package/agent-assets/agents/evening-review/agent.md +53 -0
- package/agent-assets/agents/hourly-check/agent.md +62 -0
- package/agent-assets/agents/monthly-review/agent.md +55 -0
- package/agent-assets/agents/morning-routine/agent.md +78 -0
- package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
- package/agent-assets/agents/skill-curation/agent.md +52 -0
- package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
- package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
- package/agent-assets/agents/weekly-review/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +13 -11
- package/agent-assets/docs/concepts/auth-health.md +47 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
- package/agent-assets/docs/concepts/costs-and-quotas.md +51 -15
- package/agent-assets/docs/concepts/delegated-mode.md +56 -17
- package/agent-assets/docs/concepts/memory-model.md +77 -34
- package/agent-assets/docs/concepts/observations.md +49 -11
- package/agent-assets/docs/concepts/process-keys.md +56 -22
- package/agent-assets/docs/concepts/routines.md +60 -33
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +61 -50
- package/agent-assets/docs/concepts/skills.md +34 -18
- package/agent-assets/docs/features/integrations/browser-history.md +196 -0
- package/agent-assets/docs/features/integrations/calendar.md +39 -29
- package/agent-assets/docs/features/integrations/git.md +18 -7
- package/agent-assets/docs/features/integrations/github.md +84 -33
- package/agent-assets/docs/features/integrations/mail.md +61 -17
- package/agent-assets/docs/features/integrations/notion.md +18 -6
- package/agent-assets/docs/features/integrations/obsidian.md +28 -5
- package/agent-assets/docs/features/lifestyle/git.md +44 -40
- package/agent-assets/docs/features/lifestyle/reading.md +57 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +77 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +132 -53
- package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
- package/agent-assets/docs/features/memory-files/projects.md +73 -17
- package/agent-assets/docs/features/memory-files/roadmap.md +54 -11
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +46 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
- package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +35 -4
- package/agent-assets/docs/features/messaging/overview.md +37 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +67 -14
- package/agent-assets/docs/features/messaging/telegram.md +22 -8
- package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
- package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -15
- package/agent-assets/docs/features/operations/approvals.md +49 -16
- package/agent-assets/docs/features/operations/backend-routing.md +68 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +222 -0
- package/agent-assets/docs/features/operations/notifications.md +52 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +64 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
- package/agent-assets/docs/features/routines/custom-routines.md +98 -26
- package/agent-assets/docs/features/routines/evening-review.md +82 -21
- package/agent-assets/docs/features/routines/hourly-check.md +149 -29
- package/agent-assets/docs/features/routines/morning-routine.md +54 -35
- package/agent-assets/docs/features/routines/weekly-review.md +46 -21
- package/agent-assets/docs/features/wiki/commands.md +26 -16
- package/agent-assets/docs/features/wiki/cost-and-approval.md +241 -0
- package/agent-assets/docs/features/wiki/dashboard.md +256 -0
- package/agent-assets/docs/features/wiki/overview.md +70 -12
- package/agent-assets/docs/features/wiki/search.md +248 -0
- package/agent-assets/docs/features/wiki/workspaces.md +254 -0
- package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
- package/agent-assets/docs/getting-started/02-first-steps.md +17 -10
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
- package/agent-assets/docs/getting-started/04-first-day.md +39 -21
- package/agent-assets/docs/glossary.md +235 -24
- package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
- package/agent-assets/docs/guides/backup-and-restore.md +80 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -26
- package/agent-assets/docs/guides/build-your-wiki.md +22 -9
- package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +66 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -14
- package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
- package/agent-assets/docs/guides/install-and-run.md +49 -20
- package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
- package/agent-assets/docs/guides/migrate-machines.md +74 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
- package/agent-assets/docs/guides/pause-the-agent.md +69 -24
- package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
- package/agent-assets/docs/guides/setup-wizard.md +116 -54
- package/agent-assets/docs/guides/switch-default-backend.md +62 -16
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +30 -14
- package/agent-assets/docs/reference/api.md +153 -32
- package/agent-assets/docs/reference/cli-commands.md +39 -18
- package/agent-assets/docs/reference/config.md +241 -49
- package/agent-assets/docs/reference/disallowed-tools.md +34 -13
- package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
- package/agent-assets/docs/reference/knowledge-layout.md +629 -0
- package/agent-assets/docs/reference/process-keys.md +62 -6
- package/agent-assets/docs/reference/skills.md +41 -14
- package/agent-assets/docs/troubleshooting/auth-failed.md +51 -21
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +97 -28
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +33 -8
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
- package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
- package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
- package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
- package/agent-assets/skills/agent-actions/SKILL.md +25 -41
- package/agent-assets/skills/agent-create/SKILL.md +158 -0
- package/agent-assets/skills/attach/SKILL.md +10 -29
- package/agent-assets/skills/browser-history/SKILL.md +211 -0
- package/agent-assets/skills/browser-history-respond/SKILL.md +111 -0
- package/agent-assets/skills/browser-task/SKILL.md +164 -0
- package/agent-assets/skills/context/SKILL.md +35 -44
- package/agent-assets/skills/context/curation.json +14 -14
- package/agent-assets/skills/context/references/api.md +52 -40
- package/agent-assets/skills/context/references/required-frontmatter.md +13 -12
- package/agent-assets/skills/context/references/snapshot-files.md +18 -17
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +8 -8
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +23 -34
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +17 -114
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +17 -113
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +17 -113
- package/agent-assets/skills/external-services/SKILL.md +3 -3
- package/agent-assets/skills/external-services/SKILL.native.claude.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
- package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
- package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
- package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/obsidian.md +2 -2
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +11 -83
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -18
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +11 -6
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +11 -6
- package/agent-assets/skills/mail/SKILL.md +10 -18
- package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
- package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/mail/references/api.md +10 -3
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/mail/references/providers.md +1 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +48 -81
- package/agent-assets/skills/managed-tasks/references/errors.md +33 -19
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +7 -5
- package/agent-assets/skills/management-policy/SKILL.md +42 -42
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +11 -12
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +14 -16
- package/agent-assets/skills/notify/references/priority.md +28 -20
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
- package/agent-assets/skills/notion/SKILL.md +17 -17
- package/agent-assets/skills/notion/SKILL.native.claude.md +11 -7
- package/agent-assets/skills/notion/SKILL.native.codex.md +10 -5
- package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -5
- package/agent-assets/skills/observations/SKILL.md +29 -28
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +10 -7
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +8 -5
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +5 -5
- package/agent-assets/skills/reading/SKILL.md +18 -42
- package/agent-assets/skills/reading/references/reading-taste.md +7 -7
- package/agent-assets/skills/roadmap/SKILL.md +8 -24
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +21 -11
- package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +12 -10
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +41 -50
- package/agent-assets/skills/schedule/references/batch.md +2 -2
- package/agent-assets/skills/schedule/references/errors.md +7 -4
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/model-selection.md +3 -3
- package/agent-assets/skills/schedule/references/recurrence-rule.md +7 -5
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +77 -70
- package/agent-assets/skills/today/SKILL.md +24 -83
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
- package/agent-assets/skills/today/references/today-skeleton.md +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +7 -7
- package/agent-assets/skills/user-interview/SKILL.md +21 -93
- package/agent-assets/skills/user-interview/references/op-briefing.md +3 -3
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
- package/agent-assets/skills/user-profile/SKILL.md +29 -39
- package/agent-assets/skills/user-profile/curation.json +4 -4
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +9 -8
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
- package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
- package/agent-assets/task-flows/browser_task.md +84 -0
- package/agent-assets/task-flows/github.assigned.md +1 -1
- package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
- package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
- package/agent-assets/task-flows/knowledge.import.md +14 -14
- package/agent-assets/task-flows/message.received.dm.md +13 -4
- package/agent-assets/task-flows/message.received.dm_first.md +7 -3
- package/agent-assets/task-flows/routine.custom.md +3 -3
- package/agent-assets/task-flows/routine.evening_review.md +88 -8
- package/agent-assets/task-flows/routine.fetch_window.md +2 -2
- package/agent-assets/task-flows/routine.hourly_check.md +16 -12
- package/agent-assets/task-flows/routine.monthly_review.md +93 -21
- package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
- package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
- package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
- package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
- package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
- package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
- package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
- package/agent-assets/task-flows/routine.weekly_review.md +114 -24
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +5 -5
- package/agent-assets/task-flows/scheduled.task.md +4 -4
- package/agent-assets/task-flows/setup.initial.md +21 -21
- package/agent-assets/task-flows/setup.update.md +2 -2
- package/agent-assets/task-flows/wiki.trace.md +1 -1
- package/agent-assets/templates/README.md +27 -20
- package/agent-assets/templates/_index.md +42 -26
- package/agent-assets/templates/_manifest.json +34 -99
- package/agent-assets/templates/{user → identity}/_index.md +1 -1
- package/agent-assets/templates/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
- package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
- package/agent-assets/templates/policies/_index.md +21 -0
- package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
- package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
- package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
- package/agent-assets/templates/{rules → policies}/management.md +3 -3
- package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
- package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
- package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
- package/bin/aitne.mjs +58 -15
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +25 -10
- package/scripts/commands/run-now.mjs +6 -21
- package/scripts/lib/ports.d.mts +27 -0
- package/scripts/lib/ports.mjs +36 -0
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +176 -0
- package/scripts/start.mjs +16 -5
- package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
- package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
- package/agent-assets/skills/schedule/references/recurring.md +0 -185
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
- /package/agent-assets/templates/{user → identity}/goals.md +0 -0
- /package/agent-assets/templates/{user → identity}/people.md +0 -0
- /package/agent-assets/templates/{user → identity}/personal.md +0 -0
- /package/agent-assets/templates/{user → identity}/work.md +0 -0
- /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
- /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
- /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
- /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
- /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-
|
|
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
|
-
|
|
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
|
-
|
|
47
|
-
|
|
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
|
|
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
|
-
-
|
|
29
|
+
- autonomous
|
|
30
30
|
- observations
|
|
31
|
-
-
|
|
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-
|
|
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 (
|
|
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 `
|
|
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
|
-
`
|
|
106
|
-
to `
|
|
107
|
-
one-shot Architecture refresh** so the AI
|
|
108
|
-
deep Architecture section for you.
|
|
109
|
-
- Once a day, the `
|
|
110
|
-
enabled rows and writes `
|
|
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 `
|
|
124
|
-
`<!-- architecture:start -->` / `<!-- architecture:end -->`
|
|
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
|
-
`
|
|
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
|
|
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/
|
|
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
|
|
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?
|
|
230
|
-
on each Daily-git-management panel open the generated overview
|
|
231
|
-
current day's journal
|
|
232
|
-
|
|
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: "
|
|
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
|
|
15
|
-
|
|
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-
|
|
29
|
+
updated: 2026-06-07
|
|
29
30
|
keywords:
|
|
30
31
|
- reading
|
|
31
32
|
- books
|
|
32
|
-
-
|
|
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
|
|
48
|
-
and surfaces the working set
|
|
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
|
-
- **
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- **List**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
-
|
|
87
|
-
hits `/api/books
|
|
88
|
-
|
|
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-
|
|
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
|
|
47
|
-
|
|
48
|
-
table, and the agent can
|
|
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
|
-
##
|
|
58
|
+
## How Detection Works
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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?").
|
|
72
|
-
|
|
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
|
-
|
|
79
|
-
[Mail](../integrations/mail.md). The
|
|
80
|
-
|
|
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
|
|
15
|
-
numbers
|
|
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
|
|
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-
|
|
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/
|
|
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
|
|
45
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
77
|
+
## How Bookings Get Created
|
|
58
78
|
|
|
59
|
-
|
|
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).
|