@aitne-sh/aitne 0.1.12 → 0.1.13
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/agent-assets/agent-profiles/background-task.md +8 -1
- package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
- package/agent-assets/agents/evening-review/agent.md +6 -2
- package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
- package/agent-assets/agents/morning-routine/agent.md +7 -2
- package/agent-assets/agents/source-librarian/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +15 -15
- package/agent-assets/docs/concepts/auth-health.md +10 -7
- package/agent-assets/docs/concepts/backends-and-tiers.md +21 -13
- package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
- package/agent-assets/docs/concepts/delegated-mode.md +18 -18
- package/agent-assets/docs/concepts/memory-model.md +25 -24
- package/agent-assets/docs/concepts/observations.md +27 -19
- package/agent-assets/docs/concepts/process-keys.md +25 -26
- package/agent-assets/docs/concepts/routines.md +18 -17
- package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
- package/agent-assets/docs/concepts/safety-model.md +16 -15
- package/agent-assets/docs/concepts/skills.md +7 -4
- package/agent-assets/docs/features/integrations/browser-history.md +52 -47
- package/agent-assets/docs/features/integrations/calendar.md +7 -7
- package/agent-assets/docs/features/integrations/git.md +15 -13
- package/agent-assets/docs/features/integrations/github.md +12 -10
- package/agent-assets/docs/features/integrations/mail.md +47 -45
- package/agent-assets/docs/features/integrations/notion.md +15 -11
- package/agent-assets/docs/features/integrations/obsidian.md +27 -23
- package/agent-assets/docs/features/lifestyle/git.md +7 -8
- package/agent-assets/docs/features/lifestyle/reading.md +11 -8
- package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
- package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
- package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
- package/agent-assets/docs/features/memory-files/projects.md +13 -14
- package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
- package/agent-assets/docs/features/memory-files/schedule.md +10 -10
- package/agent-assets/docs/features/memory-files/today.md +18 -18
- package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
- package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
- package/agent-assets/docs/features/messaging/dashboard-chat.md +7 -6
- package/agent-assets/docs/features/messaging/discord.md +7 -5
- package/agent-assets/docs/features/messaging/overview.md +14 -14
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
- package/agent-assets/docs/features/messaging/slack.md +9 -8
- package/agent-assets/docs/features/messaging/telegram.md +7 -7
- package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
- package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
- package/agent-assets/docs/features/operations/approvals.md +13 -12
- package/agent-assets/docs/features/operations/backend-routing.md +38 -37
- package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
- package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
- package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
- package/agent-assets/docs/features/operations/notifications.md +15 -15
- package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
- package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
- package/agent-assets/docs/features/routines/activity-scan.md +14 -11
- package/agent-assets/docs/features/routines/custom-routines.md +9 -7
- package/agent-assets/docs/features/routines/evening-review.md +6 -7
- package/agent-assets/docs/features/routines/morning-routine.md +22 -21
- package/agent-assets/docs/features/routines/weekly-review.md +57 -51
- package/agent-assets/docs/features/wiki/commands.md +27 -21
- package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
- package/agent-assets/docs/features/wiki/dashboard.md +21 -23
- package/agent-assets/docs/features/wiki/overview.md +17 -25
- package/agent-assets/docs/features/wiki/search.md +15 -17
- package/agent-assets/docs/features/wiki/workspaces.md +55 -56
- package/agent-assets/docs/getting-started/01-what-is-this.md +3 -4
- package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
- package/agent-assets/docs/getting-started/04-first-day.md +4 -5
- package/agent-assets/docs/glossary.md +17 -16
- package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
- package/agent-assets/docs/guides/backup-and-restore.md +19 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +55 -62
- package/agent-assets/docs/guides/build-your-wiki.md +11 -12
- package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
- package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
- package/agent-assets/docs/guides/install-and-run.md +9 -10
- package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
- package/agent-assets/docs/guides/migrate-machines.md +16 -14
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +11 -12
- package/agent-assets/docs/guides/pause-the-agent.md +25 -25
- package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
- package/agent-assets/docs/guides/setup-wizard.md +9 -11
- package/agent-assets/docs/guides/switch-default-backend.md +9 -9
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
- package/agent-assets/docs/pages/activity.md +76 -0
- package/agent-assets/docs/pages/agents.md +78 -0
- package/agent-assets/docs/pages/analytics.md +70 -0
- package/agent-assets/docs/pages/browser.md +73 -0
- package/agent-assets/docs/pages/chat.md +67 -0
- package/agent-assets/docs/pages/connections.md +78 -0
- package/agent-assets/docs/pages/git.md +73 -0
- package/agent-assets/docs/pages/knowledge.md +75 -0
- package/agent-assets/docs/pages/overview.md +90 -0
- package/agent-assets/docs/pages/reading.md +65 -0
- package/agent-assets/docs/pages/settings.md +77 -0
- package/agent-assets/docs/pages/tasks.md +74 -0
- package/agent-assets/docs/pages/wiki.md +73 -0
- package/agent-assets/docs/reference/api.md +18 -17
- package/agent-assets/docs/reference/cli-commands.md +13 -10
- package/agent-assets/docs/reference/config.md +40 -35
- package/agent-assets/docs/reference/disallowed-tools.md +18 -17
- package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
- package/agent-assets/docs/reference/knowledge-layout.md +10 -10
- package/agent-assets/docs/reference/process-keys.md +20 -22
- package/agent-assets/docs/reference/skills.md +18 -16
- package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
- package/agent-assets/skills/agent-create/SKILL.md +39 -5
- package/agent-assets/skills/background-task/SKILL.md +9 -4
- package/agent-assets/skills/board/SKILL.md +8 -9
- package/agent-assets/skills/browser-task/SKILL.md +2 -0
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
- package/agent-assets/skills/schedule/SKILL.md +6 -5
- package/agent-assets/skills/sources/SKILL.md +68 -0
- package/agent-assets/skills/sources/curation.json +21 -0
- package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
- package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
- package/agent-assets/skills/task/SKILL.md +5 -2
- package/agent-assets/task-flows/background_task.md +29 -3
- package/agent-assets/task-flows/message.received.dm.md +1 -1
- package/agent-assets/task-flows/routine.activity_scan.md +17 -2
- package/agent-assets/task-flows/routine.evening_review.md +72 -11
- package/agent-assets/task-flows/routine.fetch_window.md +21 -0
- package/agent-assets/task-flows/routine.monthly_review.md +3 -1
- package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
- package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
- package/agent-assets/task-flows/scheduled.dm.md +8 -3
- package/agent-assets/templates/_manifest.json +1 -0
- package/agent-assets/templates/knowledge/sources/_index.md +19 -0
- package/package.json +4 -4
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- How often does the daemon poll my repos?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
30
30
|
keywords:
|
|
31
31
|
- git
|
|
32
32
|
- commit
|
|
@@ -53,31 +53,33 @@ api_endpoints:
|
|
|
53
53
|
|
|
54
54
|
# Git
|
|
55
55
|
|
|
56
|
-
Add local git repositories to a watched set
|
|
57
|
-
and the activity scan decides whether
|
|
58
|
-
flagging.
|
|
56
|
+
Add local git repositories to a watched set. The daemon checks them
|
|
57
|
+
on a schedule (it polls them), and the activity scan decides whether
|
|
58
|
+
the recent activity is worth flagging.
|
|
59
59
|
|
|
60
60
|
## What It Does
|
|
61
61
|
|
|
62
|
-
- **
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
- **Checks (polls)** each watched repo every `gitPollIntervalSeconds`
|
|
63
|
+
seconds.
|
|
64
|
+
- **Records an observation** when new commits land between two checks.
|
|
65
|
+
It notes who authored each commit, so commits the agent made itself
|
|
66
|
+
are not shown back to it (enforced by `AgentWriteTracker`).
|
|
66
67
|
- **Surfaces patterns**, not individual commits — three small commits
|
|
67
|
-
in an hour will not
|
|
68
|
+
in an hour will not each trigger a notification.
|
|
68
69
|
|
|
69
70
|
The agent never pushes, never amends, never force-resets. Read-only
|
|
70
71
|
by design.
|
|
71
72
|
|
|
72
73
|
## When It Runs / How It Is Triggered
|
|
73
74
|
|
|
74
|
-
- The poller
|
|
75
|
-
- The activity scan
|
|
75
|
+
- The poller runs continuously in the background.
|
|
76
|
+
- The activity scan reads the observations it has collected.
|
|
76
77
|
|
|
77
78
|
## What It Outputs
|
|
78
79
|
|
|
79
|
-
-
|
|
80
|
-
- A summary in the activity scan's output when observations
|
|
80
|
+
- One `observation` row for each detected set of changes.
|
|
81
|
+
- A summary in the activity scan's output when those observations are
|
|
82
|
+
worth reporting.
|
|
81
83
|
|
|
82
84
|
## Where in the Dashboard
|
|
83
85
|
|
|
@@ -29,7 +29,7 @@ ask_examples:
|
|
|
29
29
|
- Where do I add a GitHub repo to watch?
|
|
30
30
|
locale: en-US
|
|
31
31
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-07-01
|
|
33
33
|
keywords:
|
|
34
34
|
- github
|
|
35
35
|
- issue
|
|
@@ -61,14 +61,16 @@ context_files:
|
|
|
61
61
|
|
|
62
62
|
# GitHub
|
|
63
63
|
|
|
64
|
-
The daemon polls GitHub
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
The daemon polls GitHub through the local `gh` CLI. Four kinds of
|
|
65
|
+
signal turn into a direct message (DM): review requests, CI failures
|
|
66
|
+
on the default branch, security alerts, and assignments. Everything
|
|
67
|
+
else is recorded for the activity scan instead of pinging you.
|
|
67
68
|
|
|
68
69
|
## What It Does
|
|
69
70
|
|
|
70
71
|
- **Polls Notifications** every `githubPollIntervalSeconds` (default
|
|
71
|
-
1800s / 30 min) using ETag caching
|
|
72
|
+
1800s / 30 min) using ETag caching, so when nothing has changed
|
|
73
|
+
GitHub returns a 304 ("not modified") and that poll costs no
|
|
72
74
|
rate-limit quota.
|
|
73
75
|
- **Polls workflow_runs** per watched GitHub repository, filtered by
|
|
74
76
|
`status=failure`. Each repo's GitHub side comes from a unified
|
|
@@ -84,8 +86,8 @@ The agent never auto-comments, auto-merges, or pushes.
|
|
|
84
86
|
## High-priority events
|
|
85
87
|
|
|
86
88
|
The agent will DM the user (priority `high`; during quiet hours the DM
|
|
87
|
-
|
|
88
|
-
safety messages break through) on:
|
|
89
|
+
waits until quiet hours end rather than being dropped — only
|
|
90
|
+
`critical` safety messages break through) on:
|
|
89
91
|
|
|
90
92
|
- A teammate or bot **requested your review** on a PR — only when it
|
|
91
93
|
looks time-sensitive (release-blocker keywords in the title, or the
|
|
@@ -149,9 +151,9 @@ Watched repos are no longer config keys. The old `gitRepos` /
|
|
|
149
151
|
cutover — repos now live in the `repositories` table and are managed on
|
|
150
152
|
**Connections → Repositories**. Per-repo polling cadence is set on
|
|
151
153
|
**My Life → Git** and overrides the global interval for that repo's
|
|
152
|
-
workflow-runs poll. The global interval is the floor
|
|
153
|
-
cadence longer than
|
|
154
|
-
still polls at the global tick.
|
|
154
|
+
workflow-runs poll. The global interval is the floor: a per-repo
|
|
155
|
+
cadence longer than the global one slows that repo down, but a shorter
|
|
156
|
+
one still only polls at the global tick.
|
|
155
157
|
|
|
156
158
|
## When Something Goes Wrong
|
|
157
159
|
|
|
@@ -19,7 +19,6 @@ section: integrations
|
|
|
19
19
|
tags:
|
|
20
20
|
- integrations
|
|
21
21
|
- mail
|
|
22
|
-
- core
|
|
23
22
|
status: stable
|
|
24
23
|
ask_examples:
|
|
25
24
|
- How do I connect my Gmail to the agent?
|
|
@@ -27,7 +26,7 @@ ask_examples:
|
|
|
27
26
|
- How do I add a second mail account?
|
|
28
27
|
locale: en-US
|
|
29
28
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
31
30
|
keywords:
|
|
32
31
|
- mail
|
|
33
32
|
- gmail
|
|
@@ -60,46 +59,46 @@ context_files:
|
|
|
60
59
|
|
|
61
60
|
# Mail
|
|
62
61
|
|
|
63
|
-
Connect one or more mailboxes (Gmail, Outlook, Yahoo, or iCloud)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
the provider
|
|
62
|
+
Connect one or more mailboxes (Gmail, Outlook, Yahoo, or iCloud). Aitne
|
|
63
|
+
then polls them, sorts incoming threads, and lets the agent search,
|
|
64
|
+
label, and read your mail through the `mail` skill. Search runs locally,
|
|
65
|
+
backed by a SQLite full-text index (FTS5), so the agent doesn't have to
|
|
66
|
+
call the provider every time you ask about your inbox.
|
|
68
67
|
|
|
69
68
|
## What It Does
|
|
70
69
|
|
|
71
|
-
- **Read & search** existing threads (
|
|
72
|
-
- **Classify** incoming messages —
|
|
73
|
-
attachment, a Kindle notebook export.
|
|
74
|
-
- **Label** threads so
|
|
75
|
-
- **Surface** the
|
|
76
|
-
|
|
70
|
+
- **Read & search** existing threads (from the local FTS5 index).
|
|
71
|
+
- **Classify** incoming messages — for example, a travel booking, a
|
|
72
|
+
receipt attachment, or a Kindle notebook export.
|
|
73
|
+
- **Label** threads so you and the agent agree on where each one stands.
|
|
74
|
+
- **Surface** the few mail items in the morning routine that actually
|
|
75
|
+
need your attention.
|
|
77
76
|
|
|
78
|
-
The agent **prefers drafts** over sending. By
|
|
79
|
-
|
|
77
|
+
The agent **prefers drafts** over sending. By default it writes a draft
|
|
78
|
+
(`POST /mail/:account/drafts`) and leaves it for you to review and send
|
|
80
79
|
yourself. Direct send (`POST /mail/:account/messages/send`) is *not*
|
|
81
|
-
blocked — it
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
blocked — it counts as an autonomous action, so the daemon does not DM
|
|
81
|
+
you for approval first. The agent only sends on its own when it's clear
|
|
82
|
+
you'd want it to, and it tells you afterward. During the activity scan
|
|
83
|
+
the `mail` skill is strictly read-only: no sending, drafting, labeling,
|
|
84
|
+
or filing.
|
|
86
85
|
|
|
87
86
|
## When It Runs / How It Is Triggered
|
|
88
87
|
|
|
89
|
-
- In `direct` mode a poller
|
|
90
|
-
`gmailPollIntervalSeconds` (default 600); all other accounts
|
|
91
|
-
Yahoo, iCloud) use `mailPollIntervalSeconds` (default 180).
|
|
92
|
-
|
|
93
|
-
- The morning routine reads the labeled queue and
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
demand.
|
|
88
|
+
- In `direct` mode a poller checks for new messages on a set interval.
|
|
89
|
+
Gmail uses `gmailPollIntervalSeconds` (default 600); all other accounts
|
|
90
|
+
(Outlook, Yahoo, iCloud) use `mailPollIntervalSeconds` (default 180).
|
|
91
|
+
You can adjust the Gmail interval under **Settings → Infrastructure**.
|
|
92
|
+
- The morning routine reads the labeled queue and picks which threads to
|
|
93
|
+
bring to your attention.
|
|
94
|
+
- When you ask directly (you DM "what's in my mail?"), the agent uses the
|
|
95
|
+
`mail` skill on demand.
|
|
97
96
|
|
|
98
97
|
## Integration Modes
|
|
99
98
|
|
|
100
99
|
Gmail and Outlook support all four integration modes
|
|
101
|
-
(`direct | delegated | native | disabled`)
|
|
102
|
-
different mode. Yahoo and iCloud have no integration-registry entry
|
|
100
|
+
(`direct | delegated | native | disabled`), and each account can sit in
|
|
101
|
+
a different mode. Yahoo and iCloud have no integration-registry entry, so
|
|
103
102
|
they are direct-only by design.
|
|
104
103
|
|
|
105
104
|
| Provider | Direct | Delegated | Native | Notes |
|
|
@@ -109,9 +108,10 @@ they are direct-only by design.
|
|
|
109
108
|
| Yahoo | ✓ | — | — | IMAP transport. Direct-only; never enters the delegated surface. |
|
|
110
109
|
| iCloud | ✓ | — | — | IMAP transport. Direct-only; never enters the delegated surface. |
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
`runtime_state.integration_flip_lock:<key
|
|
114
|
-
backend
|
|
111
|
+
Switching a provider between modes goes through the §14.7 live probe and
|
|
112
|
+
a per-key lock (`runtime_state.integration_flip_lock:<key>`). If you
|
|
113
|
+
change the main backend, any `native` rows it no longer matches fall back
|
|
114
|
+
to `disabled`.
|
|
115
115
|
|
|
116
116
|
See [Delegated Mode](../../concepts/delegated-mode.md) for the full
|
|
117
117
|
mode lifecycle.
|
|
@@ -119,10 +119,10 @@ mode lifecycle.
|
|
|
119
119
|
## What It Outputs
|
|
120
120
|
|
|
121
121
|
- New threads land in the local `mail_messages_index` table
|
|
122
|
-
(
|
|
123
|
-
- Labels
|
|
124
|
-
them (`POST /mail/:account/messages/:id/tags`).
|
|
125
|
-
- A short "mail" section in `state/today.md` when items
|
|
122
|
+
(full-text indexed via `fts_mail_messages`).
|
|
123
|
+
- Labels and tags are written back through the provider API when the
|
|
124
|
+
agent applies them (`POST /mail/:account/messages/:id/tags`).
|
|
125
|
+
- A short "mail" section in `state/today.md` when items qualify.
|
|
126
126
|
|
|
127
127
|
## Where in the Dashboard
|
|
128
128
|
|
|
@@ -132,18 +132,20 @@ mode lifecycle.
|
|
|
132
132
|
|
|
133
133
|
## Configuration
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
`icloud`) plus credentials and an optional display label. You
|
|
135
|
+
For each account you choose a provider kind (`gmail` / `outlook` /
|
|
136
|
+
`yahoo` / `icloud`), plus credentials and an optional display label. You
|
|
137
137
|
pick the kind, not the transport — Yahoo and iCloud connect over IMAP
|
|
138
|
-
|
|
139
|
-
providers is `enabledMailProviders` (default
|
|
138
|
+
behind the scenes, but that's an implementation detail you don't manage.
|
|
139
|
+
The list of enabled providers is `enabledMailProviders` (default
|
|
140
|
+
`["gmail"]`).
|
|
140
141
|
|
|
141
142
|
## When Something Goes Wrong
|
|
142
143
|
|
|
143
|
-
- An **auth failure**
|
|
144
|
-
auth-health card
|
|
145
|
-
-
|
|
146
|
-
|
|
144
|
+
- An **auth failure** usually means the credentials have expired. The
|
|
145
|
+
dashboard's auth-health card turns to a warning. See
|
|
146
|
+
[Auth Failed](../../troubleshooting/auth-failed.md).
|
|
147
|
+
- A **classifier that keeps guessing wrong** — switch the model behind it
|
|
148
|
+
from the Gmail Classification Model card on `/connections/mail`.
|
|
147
149
|
|
|
148
150
|
## Related
|
|
149
151
|
|
|
@@ -13,7 +13,6 @@ summary: |
|
|
|
13
13
|
section: integrations
|
|
14
14
|
tags:
|
|
15
15
|
- integrations
|
|
16
|
-
- notion
|
|
17
16
|
- knowledge
|
|
18
17
|
- observations
|
|
19
18
|
status: stable
|
|
@@ -24,7 +23,7 @@ ask_examples:
|
|
|
24
23
|
- Why are my Notion routine fetches skipped?
|
|
25
24
|
locale: en-US
|
|
26
25
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
26
|
+
updated: 2026-07-01
|
|
28
27
|
keywords:
|
|
29
28
|
- notion
|
|
30
29
|
- page
|
|
@@ -48,21 +47,25 @@ api_endpoints:
|
|
|
48
47
|
|
|
49
48
|
# Notion
|
|
50
49
|
|
|
51
|
-
Aitne
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
Aitne watches the Notion databases you configure. When a page changes,
|
|
51
|
+
it records an *observation* (a short note that something happened), and
|
|
52
|
+
the [activity scan](../routines/activity-scan.md) — the routine that
|
|
53
|
+
periodically reviews recent activity — decides whether anything is worth
|
|
54
|
+
surfacing to you. The agent can also read Notion pages on demand through
|
|
54
55
|
the `notion` skill.
|
|
55
56
|
|
|
56
57
|
## What It Does
|
|
57
58
|
|
|
58
|
-
-
|
|
59
|
-
|
|
59
|
+
- Checks Notion through the official API on the interval set by
|
|
60
|
+
`notionPollIntervalSeconds`.
|
|
61
|
+
- Records one observation for each change it detects.
|
|
60
62
|
- Lets the agent read pages on demand.
|
|
61
63
|
|
|
62
64
|
## When It Runs / How It Is Triggered
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
modes
|
|
66
|
+
The poller runs continuously, but only in `direct` mode. In the
|
|
67
|
+
`delegated`, `native`, and `disabled` modes it does not run — see
|
|
68
|
+
[Integration Modes](#integration-modes) below.
|
|
66
69
|
|
|
67
70
|
## Integration Modes
|
|
68
71
|
|
|
@@ -84,8 +87,9 @@ Notion supports all four integration modes (`direct` / `delegated` /
|
|
|
84
87
|
`disabled`.
|
|
85
88
|
- **`disabled`** — silence; no observations, no daemon access.
|
|
86
89
|
|
|
87
|
-
Switching modes requires the integration flip-lock probe to pass
|
|
88
|
-
|
|
90
|
+
Switching modes requires the integration flip-lock probe to pass — a
|
|
91
|
+
quick check that the connector is reachable and reports its
|
|
92
|
+
capabilities. See `POST /api/integrations/notion/probe`.
|
|
89
93
|
|
|
90
94
|
## Routine Fetch Targets
|
|
91
95
|
|
|
@@ -8,15 +8,14 @@ aliases:
|
|
|
8
8
|
- knowledge vault
|
|
9
9
|
category: features
|
|
10
10
|
summary: |
|
|
11
|
-
Watch an Obsidian vault for new and changed notes.
|
|
12
|
-
|
|
13
|
-
notes on demand.
|
|
11
|
+
Watch an Obsidian vault for new and changed notes. Each change
|
|
12
|
+
records an observation that the activity scan later reviews; the
|
|
13
|
+
agent can also read notes on demand.
|
|
14
14
|
section: integrations
|
|
15
15
|
tags:
|
|
16
16
|
- integrations
|
|
17
17
|
- knowledge
|
|
18
18
|
- observations
|
|
19
|
-
- obsidian
|
|
20
19
|
status: stable
|
|
21
20
|
ask_examples:
|
|
22
21
|
- How do I connect my Obsidian vault?
|
|
@@ -24,7 +23,7 @@ ask_examples:
|
|
|
24
23
|
- Why didn't the agent see my new note?
|
|
25
24
|
locale: en-US
|
|
26
25
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
26
|
+
updated: 2026-07-01
|
|
28
27
|
keywords:
|
|
29
28
|
- obsidian
|
|
30
29
|
- vault
|
|
@@ -45,18 +44,22 @@ config_keys:
|
|
|
45
44
|
|
|
46
45
|
# Obsidian
|
|
47
46
|
|
|
48
|
-
Point Aitne at your Obsidian vault
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
Point Aitne at your Obsidian vault folder (the directory where your
|
|
48
|
+
notes live). When you add or change a note, Aitne records an
|
|
49
|
+
observation — a short note-to-self that the
|
|
50
|
+
[activity scan](../routines/activity-scan.md) reviews on its next run.
|
|
51
|
+
The agent can also read and write vault notes through the
|
|
52
|
+
`external-services` skill.
|
|
51
53
|
|
|
52
|
-
Reads and writes go through the Obsidian app's
|
|
53
|
-
must be running
|
|
54
|
+
Reads and writes go through the Obsidian app's own command-line tool
|
|
55
|
+
(CLI), so the Obsidian app must be running — otherwise vault read and
|
|
56
|
+
write calls fail.
|
|
54
57
|
|
|
55
58
|
## What It Does
|
|
56
59
|
|
|
57
|
-
- Watches the vault for
|
|
58
|
-
-
|
|
59
|
-
- Records
|
|
60
|
+
- Watches the vault folder for file changes.
|
|
61
|
+
- Ignores writes the agent made itself, using `AgentWriteTracker`.
|
|
62
|
+
- Records an observation for each edit you make by hand.
|
|
60
63
|
|
|
61
64
|
### Will it edit my notes?
|
|
62
65
|
|
|
@@ -70,10 +73,11 @@ its own output.
|
|
|
70
73
|
## When It Runs / How It Is Triggered
|
|
71
74
|
|
|
72
75
|
Continuously — the watcher runs as long as the daemon is up and a vault
|
|
73
|
-
path is configured (`externalObsidianWatch=true`).
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
path is configured (`externalObsidianWatch=true`). After you save,
|
|
77
|
+
Aitne waits `obsidianDebounceSeconds` before recording the change (a
|
|
78
|
+
short pause called debouncing), so a burst of quick saves is folded
|
|
79
|
+
into one observation. The [activity scan](../routines/activity-scan.md)
|
|
80
|
+
picks up those observations on its next run.
|
|
77
81
|
|
|
78
82
|
## Where in the Dashboard
|
|
79
83
|
|
|
@@ -84,15 +88,15 @@ observations.
|
|
|
84
88
|
| Setting | Default | Notes |
|
|
85
89
|
|---|---|---|
|
|
86
90
|
| `externalObsidianVaultPath` | unset | Vault directory; set in Connections → Notes. |
|
|
87
|
-
| `externalObsidianWatch` | true | Set false to keep the path but stop recording changes
|
|
88
|
-
| `obsidianDebounceSeconds` | 5 | How
|
|
91
|
+
| `externalObsidianWatch` | true | Set false to keep the path but stop recording changes — handy for a large, busy vault. |
|
|
92
|
+
| `obsidianDebounceSeconds` | 5 | How many seconds to wait after a save before recording. |
|
|
89
93
|
|
|
90
94
|
## When Something Goes Wrong
|
|
91
95
|
|
|
92
|
-
- A
|
|
93
|
-
|
|
94
|
-
- A change
|
|
95
|
-
saves; the next
|
|
96
|
+
- A read or write failed: the Obsidian app must be running, because
|
|
97
|
+
reads and writes go through its CLI. Open Obsidian and try again.
|
|
98
|
+
- A change didn't show up: the debounce pause may have folded several
|
|
99
|
+
saves together; the next save will record it.
|
|
96
100
|
|
|
97
101
|
## Related
|
|
98
102
|
|
|
@@ -28,7 +28,6 @@ tags:
|
|
|
28
28
|
- github
|
|
29
29
|
- autonomous
|
|
30
30
|
- observations
|
|
31
|
-
- core
|
|
32
31
|
status: stable
|
|
33
32
|
ask_examples:
|
|
34
33
|
- What is the My Life › Git page for?
|
|
@@ -46,7 +45,7 @@ ask_examples:
|
|
|
46
45
|
- How much does one Architecture refresh cost?
|
|
47
46
|
locale: en-US
|
|
48
47
|
created: 2026-05-05
|
|
49
|
-
updated: 2026-
|
|
48
|
+
updated: 2026-07-01
|
|
50
49
|
keywords:
|
|
51
50
|
- my life
|
|
52
51
|
- git
|
|
@@ -102,18 +101,18 @@ The page lists every repository registered on
|
|
|
102
101
|
**Connections → Repositories** and exposes three collapsible sections
|
|
103
102
|
per repo (all open by default so the controls are visible at a glance):
|
|
104
103
|
|
|
105
|
-
1. **Polling** —
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
sources.
|
|
104
|
+
1. **Polling** — how often the agent checks this repo for new
|
|
105
|
+
activity. It overrides the global `gitPollIntervalSeconds` for
|
|
106
|
+
this repository alone, which is handy when one repo is busy and you
|
|
107
|
+
want it scanned more often (or the reverse). It also shows the most
|
|
108
|
+
recent observations gathered from that repo's polling sources.
|
|
110
109
|
2. **Triggers** — fire when matching Git or GitHub events arrive on
|
|
111
110
|
this repository. Triggers run **alongside** the project-wide
|
|
112
111
|
task-flow defaults, not in place of them. Each trigger has a
|
|
113
112
|
workdir mode (`local-clone` or `temp`); local-clone triggers
|
|
114
113
|
require the repository to have a `localPath`.
|
|
115
114
|
3. **Daily git management** — opt-in per repo. Enabling it does three
|
|
116
|
-
distinct kinds of work, on
|
|
115
|
+
distinct kinds of work, each on its own schedule:
|
|
117
116
|
- On the first **Generate overview** click, writes the curated
|
|
118
117
|
`knowledge/repos/<slug>/overview.md` skeleton, mirrors the source
|
|
119
118
|
`README.*` to `knowledge/repos/<slug>/README.md`, and
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- Where do reading-list items get stored?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
30
30
|
keywords:
|
|
31
31
|
- reading
|
|
32
32
|
- books
|
|
@@ -37,6 +37,7 @@ related:
|
|
|
37
37
|
- features/memory-files/user-profile
|
|
38
38
|
- features/lifestyle/receipts
|
|
39
39
|
- features/lifestyle/travel-bookings
|
|
40
|
+
- pages/reading
|
|
40
41
|
api_endpoints:
|
|
41
42
|
- GET /api/books
|
|
42
43
|
- PATCH /api/books/:id
|
|
@@ -52,7 +53,7 @@ ui_anchors:
|
|
|
52
53
|
|
|
53
54
|
A reading list backed by the `books` and `reading_highlights` SQLite
|
|
54
55
|
tables: imports your Kindle highlights, tracks each book's status
|
|
55
|
-
(`reading`, `completed`, or `abandoned`), and
|
|
56
|
+
(`reading`, `completed`, or `abandoned`), and shows your current list
|
|
56
57
|
at `/reading`.
|
|
57
58
|
|
|
58
59
|
## What It Does
|
|
@@ -65,14 +66,15 @@ at `/reading`.
|
|
|
65
66
|
"Export Notebook" email.
|
|
66
67
|
- **List** the library on `/reading` or via `GET /api/books`
|
|
67
68
|
(filterable by `status` and `source`, paginated to 200 rows per call).
|
|
68
|
-
- **Mark complete or abandoned** —
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
- **Mark complete or abandoned** — `PATCH /api/books/:id` updates a book
|
|
70
|
+
that already exists. This is an **Approve-tier** write (a change that
|
|
71
|
+
needs your explicit sign-off), so it requires an operator
|
|
72
|
+
`Authorization: Bearer` token and runs from the dashboard rather than
|
|
73
|
+
on the agent's own initiative (an unauthenticated agent curl is
|
|
74
|
+
rejected with **401** before the handler runs). Setting `status` to
|
|
73
75
|
`completed` stamps `completed_at` automatically; you can also set a 1–5
|
|
74
76
|
`rating` or `notes`.
|
|
75
|
-
- **Recommend** from the list
|
|
77
|
+
- **Recommend** from the list when you ask in a chat, and refresh the
|
|
76
78
|
reading-taste profile during the weekly review.
|
|
77
79
|
|
|
78
80
|
There is **no bare "add a book" endpoint** — new books arrive through the
|
|
@@ -126,5 +128,6 @@ drives the list shape. The reading skill loads in two situations:
|
|
|
126
128
|
|
|
127
129
|
## Related
|
|
128
130
|
|
|
131
|
+
- [Reading Page](../../pages/reading.md)
|
|
129
132
|
- [Receipts](receipts.md)
|
|
130
133
|
- [Travel Bookings](travel-bookings.md)
|
|
@@ -16,7 +16,6 @@ summary: |
|
|
|
16
16
|
section: lifestyle
|
|
17
17
|
tags:
|
|
18
18
|
- lifestyle
|
|
19
|
-
- receipts
|
|
20
19
|
- mail
|
|
21
20
|
- integrations
|
|
22
21
|
status: stable
|
|
@@ -27,7 +26,7 @@ ask_examples:
|
|
|
27
26
|
- What receipts haven't I saved yet?
|
|
28
27
|
locale: en-US
|
|
29
28
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
31
30
|
keywords:
|
|
32
31
|
- receipt
|
|
33
32
|
- invoice
|
|
@@ -58,10 +57,10 @@ your external Obsidian vault on request.
|
|
|
58
57
|
## How Detection Works
|
|
59
58
|
|
|
60
59
|
The mail observer scans travel-booking emails across every connected
|
|
61
|
-
mail account and records each attachment it finds.
|
|
62
|
-
attachment
|
|
63
|
-
`(account_id, provider_msg_id, attachment_id)
|
|
64
|
-
|
|
60
|
+
mail account and records each attachment it finds. Every detected
|
|
61
|
+
attachment becomes one row in the `receipts` table. Each row is keyed
|
|
62
|
+
uniquely on `(account_id, provider_msg_id, attachment_id)`, so
|
|
63
|
+
re-scanning the same mail never creates a duplicate. Columns:
|
|
65
64
|
|
|
66
65
|
- `category` — `travel` at detection time; reclassify to `document`
|
|
67
66
|
via PATCH (nullable on legacy rows)
|
|
@@ -72,22 +71,22 @@ idempotent. Columns:
|
|
|
72
71
|
vault (see below)
|
|
73
72
|
- `id`, `created_at` — row identity and detection time
|
|
74
73
|
|
|
75
|
-
There is no Markdown context file for receipts
|
|
76
|
-
the SQLite row plus the optional Obsidian copy.
|
|
74
|
+
There is no Markdown context file for receipts. The lasting record is
|
|
75
|
+
the SQLite row, plus the optional Obsidian copy you save yourself.
|
|
77
76
|
|
|
78
77
|
## Saving a Receipt to Your Vault
|
|
79
78
|
|
|
80
|
-
Saving
|
|
81
|
-
|
|
79
|
+
Saving takes two steps. The download endpoint never writes to the vault
|
|
80
|
+
on its own:
|
|
82
81
|
|
|
83
|
-
1. The agent downloads the original bytes
|
|
82
|
+
1. The agent downloads the original bytes with
|
|
84
83
|
`POST /api/receipts/:id/download`, which streams the raw attachment
|
|
85
|
-
(
|
|
86
|
-
|
|
87
|
-
2. The agent writes the file into your **external** Obsidian vault —
|
|
88
|
-
the primary management vault —
|
|
89
|
-
`receipts/YYYY/MM/<merchant>-<date>.<ext>` (
|
|
90
|
-
`receipts/2026/04/amazon-2026-04-12.pdf`)
|
|
84
|
+
(found in the mail registry by `account_id`). Files larger than
|
|
85
|
+
100 MB, and orphaned rows with a null `account_id`, are rejected.
|
|
86
|
+
2. The agent writes the file into your **external** Obsidian vault —
|
|
87
|
+
not the primary management vault — using the naming convention
|
|
88
|
+
`receipts/YYYY/MM/<merchant>-<date>.<ext>` (for example,
|
|
89
|
+
`receipts/2026/04/amazon-2026-04-12.pdf`). It then records that path
|
|
91
90
|
with `PATCH /api/receipts/:id` (body `{"obsidianPath": "..."}`),
|
|
92
91
|
which also stamps `saved_at`.
|
|
93
92
|
|
|
@@ -96,11 +95,11 @@ To reclassify a receipt, the agent PATCHes `{"category": "travel"}`
|
|
|
96
95
|
|
|
97
96
|
## Where in the Dashboard
|
|
98
97
|
|
|
99
|
-
There is no dedicated tab
|
|
100
|
-
|
|
101
|
-
filter them with `GET /api/receipts` (`category`, `saved`,
|
|
102
|
-
params) and pull totals from `GET /api/receipts/summary`. The
|
|
103
|
-
is documented in
|
|
98
|
+
There is no dedicated tab yet. Receipts show up inline when you ask for
|
|
99
|
+
them in chat (for example, "what receipts haven't I saved yet?"). List
|
|
100
|
+
and filter them with `GET /api/receipts` (the `category`, `saved`, and
|
|
101
|
+
`limit` params) and pull totals from `GET /api/receipts/summary`. The
|
|
102
|
+
full API is documented in
|
|
104
103
|
`agent-assets/skills/gmail-lifestyle/references/receipts-api.md`
|
|
105
104
|
(loaded by the `gmail-lifestyle` skill).
|
|
106
105
|
|
|
@@ -17,7 +17,6 @@ summary: |
|
|
|
17
17
|
section: lifestyle
|
|
18
18
|
tags:
|
|
19
19
|
- lifestyle
|
|
20
|
-
- travel
|
|
21
20
|
- mail
|
|
22
21
|
- integrations
|
|
23
22
|
status: stable
|
|
@@ -27,7 +26,7 @@ ask_examples:
|
|
|
27
26
|
- Where are my travel bookings stored?
|
|
28
27
|
locale: en-US
|
|
29
28
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
31
30
|
keywords:
|
|
32
31
|
- flight
|
|
33
32
|
- hotel
|
|
@@ -76,10 +75,10 @@ confirmation email never creates a duplicate row.
|
|
|
76
75
|
|
|
77
76
|
## How Bookings Get Created
|
|
78
77
|
|
|
79
|
-
Bookings
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
Bookings come from email only — there is no manual "log a flight"
|
|
79
|
+
command or DM shortcut. To start capturing travel, connect a mail
|
|
80
|
+
account (see [Mail](../integrations/mail.md)) and let the classifier
|
|
81
|
+
do the rest. The flow is:
|
|
83
82
|
|
|
84
83
|
1. The mail poller fetches new messages.
|
|
85
84
|
2. The classifier (`gmail_classify`, lite tier) tags travel
|
|
@@ -99,9 +98,10 @@ classifier do the rest. The flow is:
|
|
|
99
98
|
|
|
100
99
|
## API
|
|
101
100
|
|
|
102
|
-
|
|
103
|
-
they expose personal travel data
|
|
104
|
-
write-safety tier
|
|
101
|
+
These endpoints give read and status-update access. The two read
|
|
102
|
+
endpoints are read-sensitive, because they expose personal travel data.
|
|
103
|
+
The `PATCH` endpoint follows the standard write-safety tier, so it
|
|
104
|
+
requires approval before it runs.
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
107
|
# All bookings (optionally filter by type/status/date range)
|