@aitne-sh/aitne 0.1.10 → 0.1.11
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 +8 -8
- package/agent-assets/agent-profiles/background-task.md +53 -0
- package/agent-assets/agent-profiles/conversational.md +1 -0
- package/agent-assets/agent-profiles/routine-fetch-window.md +14 -75
- package/agent-assets/agent-profiles/routine.md +1 -1
- package/agent-assets/agents/{hourly-check → activity-scan}/agent.md +22 -17
- package/agent-assets/agents/monthly-review/agent.md +6 -5
- package/agent-assets/docs/concepts/agent-day.md +4 -5
- package/agent-assets/docs/concepts/auth-health.md +23 -20
- package/agent-assets/docs/concepts/backends-and-tiers.md +13 -9
- package/agent-assets/docs/concepts/costs-and-quotas.md +11 -10
- package/agent-assets/docs/concepts/delegated-mode.md +13 -12
- package/agent-assets/docs/concepts/memory-model.md +13 -9
- package/agent-assets/docs/concepts/observations.md +24 -20
- package/agent-assets/docs/concepts/process-keys.md +10 -9
- package/agent-assets/docs/concepts/routines.md +34 -31
- package/agent-assets/docs/concepts/safety-and-execution.md +11 -7
- package/agent-assets/docs/concepts/safety-model.md +19 -8
- package/agent-assets/docs/concepts/skills.md +10 -8
- package/agent-assets/docs/features/integrations/browser-history.md +14 -10
- package/agent-assets/docs/features/integrations/calendar.md +24 -13
- package/agent-assets/docs/features/integrations/git.md +13 -11
- package/agent-assets/docs/features/integrations/github.md +22 -14
- package/agent-assets/docs/features/integrations/mail.md +22 -20
- package/agent-assets/docs/features/integrations/notion.md +35 -11
- package/agent-assets/docs/features/integrations/obsidian.md +8 -8
- package/agent-assets/docs/features/lifestyle/git.md +24 -20
- package/agent-assets/docs/features/lifestyle/reading.md +5 -3
- package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
- package/agent-assets/docs/features/memory-files/agent-journal.md +25 -16
- package/agent-assets/docs/features/memory-files/agent-lessons.md +7 -6
- package/agent-assets/docs/features/memory-files/projects.md +5 -4
- package/agent-assets/docs/features/memory-files/schedule.md +6 -3
- package/agent-assets/docs/features/memory-files/today.md +10 -7
- package/agent-assets/docs/features/memory-files/user-profile.md +14 -9
- package/agent-assets/docs/features/messaging/bang-commands.md +21 -6
- package/agent-assets/docs/features/messaging/overview.md +12 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +1 -1
- package/agent-assets/docs/features/operations/browser-tasks.md +184 -0
- package/agent-assets/docs/features/operations/cost-tracking.md +11 -1
- package/agent-assets/docs/features/operations/managed-chromium.md +1 -0
- package/agent-assets/docs/features/operations/notifications.md +11 -1
- package/agent-assets/docs/features/operations/quiet-hours.md +41 -12
- package/agent-assets/docs/features/operations/schedule-approaching.md +2 -2
- package/agent-assets/docs/features/routines/activity-scan.md +220 -0
- package/agent-assets/docs/features/routines/custom-routines.md +82 -138
- package/agent-assets/docs/features/routines/evening-review.md +14 -12
- package/agent-assets/docs/features/routines/morning-routine.md +4 -3
- package/agent-assets/docs/features/routines/weekly-review.md +18 -3
- package/agent-assets/docs/getting-started/01-what-is-this.md +3 -3
- package/agent-assets/docs/getting-started/04-first-day.md +27 -30
- package/agent-assets/docs/glossary.md +4 -4
- package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
- package/agent-assets/docs/guides/pause-the-agent.md +22 -20
- package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
- package/agent-assets/docs/guides/setup-wizard.md +12 -9
- package/agent-assets/docs/reference/api.md +11 -0
- package/agent-assets/docs/reference/config.md +30 -20
- package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
- package/agent-assets/docs/reference/knowledge-layout.md +14 -10
- package/agent-assets/docs/reference/process-keys.md +7 -7
- package/agent-assets/docs/reference/skills.md +5 -2
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +32 -16
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +26 -24
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
- package/agent-assets/skills/agent-create/SKILL.md +11 -0
- package/agent-assets/skills/background-task/SKILL.md +184 -0
- package/agent-assets/skills/background-task-reply/SKILL.md +100 -0
- package/agent-assets/skills/browser-history/SKILL.md +31 -13
- package/agent-assets/skills/browser-task/SKILL.md +12 -5
- package/agent-assets/skills/context/SKILL.md +4 -3
- package/agent-assets/skills/context/references/api.md +5 -3
- package/agent-assets/skills/context/references/snapshot-files.md +4 -4
- package/agent-assets/skills/external-services/SKILL.native.claude.md +13 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +11 -5
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +11 -5
- package/agent-assets/skills/mail/SKILL.md +2 -2
- package/agent-assets/skills/mail/SKILL.native.claude.md +16 -9
- package/agent-assets/skills/mail/SKILL.native.codex.md +15 -8
- package/agent-assets/skills/mail/SKILL.native.gemini.md +11 -5
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +20 -12
- package/agent-assets/skills/management-policy/SKILL.md +26 -17
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +26 -13
- package/agent-assets/skills/notify/SKILL.md +10 -5
- package/agent-assets/skills/notify/references/priority.md +30 -17
- package/agent-assets/skills/notion/SKILL.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.claude.md +3 -3
- package/agent-assets/skills/notion/SKILL.native.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.native.gemini.md +2 -2
- package/agent-assets/skills/observations/SKILL.md +5 -5
- package/agent-assets/skills/roadmap/references/api.md +7 -2
- package/agent-assets/skills/schedule/SKILL.md +11 -2
- package/agent-assets/skills/schedule/references/recurrence-rule.md +20 -12
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +12 -9
- package/agent-assets/skills/today/SKILL.md +19 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +9 -4
- package/agent-assets/skills/today/references/agent-plan-revision.md +28 -0
- package/agent-assets/skills/today/references/today-skeleton.md +5 -5
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +47 -21
- package/agent-assets/task-flows/background_task.md +81 -0
- package/agent-assets/task-flows/git.local_ahead.stale.md +1 -1
- package/agent-assets/task-flows/git.push.detected.md +1 -1
- package/agent-assets/task-flows/git.tag.created.md +1 -1
- 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.security_alert.md +1 -1
- package/agent-assets/task-flows/message.received.dm.md +7 -3
- package/agent-assets/task-flows/message.received.dm_first.md +4 -2
- package/agent-assets/task-flows/{routine.hourly_check.md → routine.activity_scan.md} +31 -23
- package/agent-assets/task-flows/{routine.hourly_check.triage.md → routine.activity_scan.triage.md} +3 -3
- package/agent-assets/task-flows/routine.monthly_review.md +9 -8
- package/agent-assets/task-flows/routine.research_cluster_update.md +33 -19
- package/agent-assets/task-flows/routine.roadmap_refresh.md +2 -2
- package/agent-assets/task-flows/routine.today_refresh.md +1 -1
- package/agent-assets/task-flows/routine.weekly_review.md +103 -4
- package/agent-assets/task-flows/schedule.approaching.md +2 -2
- package/agent-assets/task-flows/scheduled.dm.md +77 -1
- package/agent-assets/task-flows/scheduled.task.md +7 -1
- package/agent-assets/templates/_manifest.json +2 -2
- package/agent-assets/templates/knowledge/dossiers/_index.md +1 -1
- package/agent-assets/templates/knowledge/dossiers/{hourly.md → activity-scan.md} +1 -1
- package/agent-assets/templates/policies/journal-format.md +1 -1
- package/agent-assets/templates/policies/mcp.md +1 -1
- package/agent-assets/templates/policies/routines/_index.md +1 -1
- package/agent-assets/templates/policies/routines/{hourly.md → activity-scan.md} +5 -5
- package/package.json +6 -5
- package/agent-assets/docs/features/routines/hourly-check.md +0 -205
|
@@ -74,9 +74,10 @@ around them and DM you ahead of meetings that matter.
|
|
|
74
74
|
|
|
75
75
|
## What It Does
|
|
76
76
|
|
|
77
|
-
- **Polls**
|
|
77
|
+
- **Polls** Google Calendar on `calendarPollIntervalSeconds`; Outlook
|
|
78
|
+
and Apple calendars are read on demand rather than polled.
|
|
78
79
|
- **Records observations** when events change (add / move / remove),
|
|
79
|
-
consumed by the
|
|
80
|
+
consumed by the activity scan.
|
|
80
81
|
- **Surfaces today's events** to the morning routine so they land in
|
|
81
82
|
`state/today.md` and the day's schedule file.
|
|
82
83
|
- **Reads** events on demand for reactive turns ("am I free at 3?").
|
|
@@ -99,18 +100,20 @@ an explicit request.
|
|
|
99
100
|
|
|
100
101
|
## Where in the Dashboard
|
|
101
102
|
|
|
102
|
-
- **Connections → Calendar** holds OAuth, scope, and
|
|
103
|
+
- **Connections → Calendar** holds OAuth, scope, and the integration
|
|
104
|
+
mode; the poll interval itself is edited on Settings → Infrastructure.
|
|
103
105
|
- The same page hosts the **Calendar Event Model** card (see below)
|
|
104
|
-
|
|
106
|
+
unless Google Calendar runs in delegated mode.
|
|
105
107
|
|
|
106
108
|
## Calendar Event Model
|
|
107
109
|
|
|
108
110
|
The Calendar Event Model picker chooses the backend and model that
|
|
109
111
|
runs when the **daemon-side poller detects a calendar change**. It binds
|
|
110
|
-
the `calendar.change` ProcessKey
|
|
112
|
+
the `calendar.change` ProcessKey. The poller's change detection reacts
|
|
113
|
+
in two situations:
|
|
111
114
|
|
|
112
115
|
- An event was added, moved, or deleted between polls (recorded as a
|
|
113
|
-
change observation; the
|
|
116
|
+
change observation; the activity scan picks it up).
|
|
114
117
|
- An event was created far in advance (long-horizon events more than 14
|
|
115
118
|
days out nudge the roadmap-refresh routine so `plans/roadmap.md` can
|
|
116
119
|
build a preparation timeline).
|
|
@@ -127,22 +130,28 @@ different mix.
|
|
|
127
130
|
|
|
128
131
|
The picker is **only meaningful when Google Calendar runs in direct
|
|
129
132
|
mode.** In delegated mode the daemon hands off all Google Calendar
|
|
130
|
-
work to the connector inside your agent's backend, so:
|
|
133
|
+
work to the connector inside your agent's backend, so, by default:
|
|
131
134
|
|
|
132
135
|
- No approaching-event reminders fire from the daemon.
|
|
133
136
|
- No change observations are recorded between polls.
|
|
134
|
-
- The
|
|
137
|
+
- The activity scan has no calendar-side observations to react to.
|
|
135
138
|
- Long-horizon roadmap-refresh nudges from calendar do not fire.
|
|
136
139
|
|
|
137
140
|
The agent only learns about calendar state in delegated mode when it
|
|
138
141
|
asks the connector itself inside a session (for example, while
|
|
139
142
|
running the morning routine). It is a pull-only model — the daemon
|
|
140
|
-
does not push.
|
|
143
|
+
does not push. The exception is **Background Sync** (Settings → Hours
|
|
144
|
+
& Notifications): two opt-in cadences, off by default, poll the
|
|
145
|
+
calendar through the backend's connector while delegated — the
|
|
146
|
+
imminent cadence (next 1 h) restores the 15-minute reminders, and the
|
|
147
|
+
day-ahead cadence (next 24 h) restores change observations and
|
|
148
|
+
far-future roadmap-refresh detection.
|
|
141
149
|
|
|
142
150
|
To avoid presenting a setting that does nothing, the dashboard hides
|
|
143
151
|
the Calendar Event Model card whenever Google Calendar is delegated.
|
|
144
152
|
If you want approaching-event reminders and change observations back,
|
|
145
|
-
switch the integration mode to direct on the same page
|
|
153
|
+
switch the integration mode to direct on the same page, or enable the
|
|
154
|
+
calendar Background Sync cadences.
|
|
146
155
|
|
|
147
156
|
## Configuration
|
|
148
157
|
|
|
@@ -158,10 +167,12 @@ rather than an env-style setting; the underlying state lives in the
|
|
|
158
167
|
|
|
159
168
|
- A **stale calendar** in `/schedule` after a real-world add usually
|
|
160
169
|
means the poll has not yet run. Check the next-fire timestamp.
|
|
161
|
-
- An **OAuth-expired** state reports on the
|
|
170
|
+
- An **OAuth-expired** state reports on the Google card's connection
|
|
171
|
+
status on Connections → Calendar.
|
|
162
172
|
- **No reminders or change observations** while in delegated mode is
|
|
163
|
-
expected behavior, not a bug — switch to direct mode
|
|
164
|
-
daemon-side flows. See
|
|
173
|
+
expected behavior, not a bug — switch to direct mode or enable the
|
|
174
|
+
Background Sync cadences to restore the daemon-side flows. See
|
|
175
|
+
"Calendar Event Model" above.
|
|
165
176
|
|
|
166
177
|
## Related
|
|
167
178
|
|
|
@@ -10,7 +10,7 @@ aliases:
|
|
|
10
10
|
category: features
|
|
11
11
|
summary: |
|
|
12
12
|
Watch one or more git repositories for new commits. Changes record
|
|
13
|
-
observations the
|
|
13
|
+
observations the activity scan coalesces — there is no per-commit
|
|
14
14
|
notification spam.
|
|
15
15
|
section: integrations
|
|
16
16
|
tags:
|
|
@@ -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-06-07
|
|
30
30
|
keywords:
|
|
31
31
|
- git
|
|
32
32
|
- commit
|
|
@@ -35,10 +35,11 @@ keywords:
|
|
|
35
35
|
- polling
|
|
36
36
|
related:
|
|
37
37
|
- features/integrations/github
|
|
38
|
-
- features/routines/
|
|
38
|
+
- features/routines/activity-scan
|
|
39
39
|
- concepts/observations
|
|
40
40
|
ui_anchors:
|
|
41
41
|
- /connections/repositories
|
|
42
|
+
- /git
|
|
42
43
|
config_keys:
|
|
43
44
|
- gitPollIntervalSeconds
|
|
44
45
|
process_keys:
|
|
@@ -53,7 +54,7 @@ api_endpoints:
|
|
|
53
54
|
# Git
|
|
54
55
|
|
|
55
56
|
Add local git repositories to a watched set; the daemon polls them
|
|
56
|
-
and the
|
|
57
|
+
and the activity scan decides whether the recent activity is worth
|
|
57
58
|
flagging.
|
|
58
59
|
|
|
59
60
|
## What It Does
|
|
@@ -71,19 +72,20 @@ by design.
|
|
|
71
72
|
## When It Runs / How It Is Triggered
|
|
72
73
|
|
|
73
74
|
- The poller is continuous.
|
|
74
|
-
- The
|
|
75
|
+
- The activity scan consumes the accumulated observations.
|
|
75
76
|
|
|
76
77
|
## What It Outputs
|
|
77
78
|
|
|
78
79
|
- An `observation` row per detected change set.
|
|
79
|
-
- A summary in the
|
|
80
|
+
- A summary in the activity scan's output when observations qualified.
|
|
80
81
|
|
|
81
82
|
## Where in the Dashboard
|
|
82
83
|
|
|
83
|
-
- **Connections → Repositories** lists the watched paths
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
- **Connections → Repositories** lists the watched paths. Git repos are
|
|
85
|
+
managed as part of the unified Repositories surface (the same place
|
|
86
|
+
that links a local checkout to its GitHub remote).
|
|
87
|
+
- **My Life → Git** (`/git`) configures per-repo polling cadence,
|
|
88
|
+
automation triggers, and daily git management.
|
|
87
89
|
|
|
88
90
|
## Configuration
|
|
89
91
|
|
|
@@ -103,4 +105,4 @@ by design.
|
|
|
103
105
|
## Related
|
|
104
106
|
|
|
105
107
|
- [GitHub](github.md) — separate integration for remote-side data.
|
|
106
|
-
- [
|
|
108
|
+
- [Activity Scan](../routines/activity-scan.md) — the consumer.
|
|
@@ -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-06-07
|
|
33
33
|
keywords:
|
|
34
34
|
- github
|
|
35
35
|
- issue
|
|
@@ -63,7 +63,7 @@ context_files:
|
|
|
63
63
|
|
|
64
64
|
The daemon polls GitHub via the local `gh` CLI: review requests, CI
|
|
65
65
|
failures on the default branch, security alerts, and assignments
|
|
66
|
-
become DMs; everything else is recorded for the
|
|
66
|
+
become DMs; everything else is recorded for the activity scan.
|
|
67
67
|
|
|
68
68
|
## What It Does
|
|
69
69
|
|
|
@@ -77,16 +77,21 @@ become DMs; everything else is recorded for the hourly check.
|
|
|
77
77
|
to the workflow-runs side; the notifications poll always runs at the
|
|
78
78
|
global cadence.
|
|
79
79
|
- **DMs the user** on the four high-priority triggers below; quieter
|
|
80
|
-
signals are coalesced into the
|
|
80
|
+
signals are coalesced into the activity scan summary.
|
|
81
81
|
|
|
82
82
|
The agent never auto-comments, auto-merges, or pushes.
|
|
83
83
|
|
|
84
84
|
## High-priority events
|
|
85
85
|
|
|
86
|
-
The agent will DM the user (priority `high
|
|
87
|
-
|
|
86
|
+
The agent will DM the user (priority `high`; during quiet hours the DM
|
|
87
|
+
is deferred until they end rather than dropped — only `critical`
|
|
88
|
+
safety messages break through) on:
|
|
88
89
|
|
|
89
|
-
- A teammate or bot **requested your review** on a PR
|
|
90
|
+
- A teammate or bot **requested your review** on a PR — only when it
|
|
91
|
+
looks time-sensitive (release-blocker keywords in the title, or the
|
|
92
|
+
repo is already on your `state/today.md` plan or an active roadmap
|
|
93
|
+
milestone); otherwise it's noted in `state/today.md` and coalesced
|
|
94
|
+
into the activity scan.
|
|
90
95
|
- You were **assigned** to an issue or PR.
|
|
91
96
|
- A **Dependabot or code-scanning security alert** fired on a watched
|
|
92
97
|
repository.
|
|
@@ -144,7 +149,9 @@ Watched repos are no longer config keys. The old `gitRepos` /
|
|
|
144
149
|
cutover — repos now live in the `repositories` table and are managed on
|
|
145
150
|
**Connections → Repositories**. Per-repo polling cadence is set on
|
|
146
151
|
**My Life → Git** and overrides the global interval for that repo's
|
|
147
|
-
workflow-runs poll.
|
|
152
|
+
workflow-runs poll. The global interval is the floor — a per-repo
|
|
153
|
+
cadence longer than it slows that repo down, while a shorter one
|
|
154
|
+
still polls at the global tick.
|
|
148
155
|
|
|
149
156
|
## When Something Goes Wrong
|
|
150
157
|
|
|
@@ -173,24 +180,25 @@ need a daemon-spawned poller's bookkeeping.
|
|
|
173
180
|
- **direct** — the daemon's `GitHubPoller` runs as described above.
|
|
174
181
|
Use this when you want the daemon to own the poll schedule and to
|
|
175
182
|
emit DMs without the main backend having to wake up.
|
|
176
|
-
- **delegated** —
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
`
|
|
183
|
+
- **delegated** — a dedicated Git/GitHub cron queues a lite-tier
|
|
184
|
+
`git.lifecycle.poll` task on the `gitPollIntervalSeconds` cadence
|
|
185
|
+
(default hourly); that session uses the chosen backend's read-only
|
|
186
|
+
`gh` CLI surface (see
|
|
187
|
+
[Delegated Mode](../../concepts/delegated-mode.md)). The daemon
|
|
180
188
|
poller stays off; the lite-tier delegated session takes the polling
|
|
181
189
|
cost.
|
|
182
|
-
- **disabled** — neither the poller nor the delegated
|
|
190
|
+
- **disabled** — neither the poller nor the delegated cron runs;
|
|
183
191
|
the integration is silent.
|
|
184
192
|
|
|
185
193
|
Pick the mode from the GitHub card on **Connections → Repositories**.
|
|
186
194
|
Mode changes go through the standard `PATCH /api/integrations/github`
|
|
187
|
-
flip-lock so the poller and the delegated
|
|
195
|
+
flip-lock so the poller and the delegated cron never run
|
|
188
196
|
simultaneously.
|
|
189
197
|
|
|
190
198
|
## Related
|
|
191
199
|
|
|
192
200
|
- [Git](git.md) — local repo file watcher (separate observer).
|
|
193
|
-
- [
|
|
201
|
+
- [Activity Scan](../routines/activity-scan.md) — the consumer of
|
|
194
202
|
non-DM-priority observations.
|
|
195
203
|
- [Delegated Mode](../../concepts/delegated-mode.md) — how the
|
|
196
204
|
`delegated` mode polls without a daemon poller.
|
|
@@ -60,8 +60,8 @@ context_files:
|
|
|
60
60
|
|
|
61
61
|
# Mail
|
|
62
62
|
|
|
63
|
-
Connect one or more mailboxes (Gmail, Outlook, Yahoo, iCloud
|
|
64
|
-
|
|
63
|
+
Connect one or more mailboxes (Gmail, Outlook, Yahoo, or iCloud) and
|
|
64
|
+
Aitne polls them, classifies incoming threads, and
|
|
65
65
|
lets the agent search / label / read via the `mail` skill. Search is
|
|
66
66
|
local — backed by SQLite FTS5 — so the agent doesn't need to round-trip
|
|
67
67
|
the provider for every query.
|
|
@@ -69,8 +69,8 @@ the provider for every query.
|
|
|
69
69
|
## What It Does
|
|
70
70
|
|
|
71
71
|
- **Read & search** existing threads (FTS5-backed local index).
|
|
72
|
-
- **Classify** incoming messages —
|
|
73
|
-
|
|
72
|
+
- **Classify** incoming messages — is it a travel booking, a receipt
|
|
73
|
+
attachment, a Kindle notebook export.
|
|
74
74
|
- **Label** threads so the operator and the agent agree on triage state.
|
|
75
75
|
- **Surface** the small set of mail items in the morning routine that
|
|
76
76
|
actually need owner action.
|
|
@@ -81,15 +81,15 @@ yourself. Direct send (`POST /mail/:account/messages/send`) is *not*
|
|
|
81
81
|
blocked — it is classified as an autonomous action, so the daemon does
|
|
82
82
|
not DM you for approval first. The agent only sends directly when it
|
|
83
83
|
judges you'd clearly want it to, and it tells you afterward; during the
|
|
84
|
-
|
|
84
|
+
activity scan the `mail` skill is hard read-only (no sending, drafting,
|
|
85
85
|
labeling, or filing).
|
|
86
86
|
|
|
87
87
|
## When It Runs / How It Is Triggered
|
|
88
88
|
|
|
89
89
|
- In `direct` mode a poller pulls new messages on a cadence. Gmail uses
|
|
90
|
-
`gmailPollIntervalSeconds` (default 600);
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
`gmailPollIntervalSeconds` (default 600); all other accounts (Outlook,
|
|
91
|
+
Yahoo, iCloud) use `mailPollIntervalSeconds` (default 180).
|
|
92
|
+
The Gmail cadence is adjustable under **Settings → Infrastructure**.
|
|
93
93
|
- The morning routine reads the labeled queue and decides which need
|
|
94
94
|
surfacing.
|
|
95
95
|
- Reactive turns (you DM "what's in my mail?") use the `mail` skill on
|
|
@@ -97,17 +97,17 @@ labeling, or filing).
|
|
|
97
97
|
|
|
98
98
|
## Integration Modes
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
(`direct | delegated | native | disabled`); each
|
|
102
|
-
different mode.
|
|
100
|
+
Gmail and Outlook support all four integration modes
|
|
101
|
+
(`direct | delegated | native | disabled`); each may sit in a
|
|
102
|
+
different mode. Yahoo and iCloud have no integration-registry entry —
|
|
103
|
+
they are direct-only by design.
|
|
103
104
|
|
|
104
105
|
| Provider | Direct | Delegated | Native | Notes |
|
|
105
106
|
|---|---|---|---|---|
|
|
106
|
-
| Gmail | ✓ | ✓ | ✓ (descriptor-driven) | Native mode uses
|
|
107
|
+
| Gmail | ✓ | ✓ | ✓ (descriptor-driven) | Native mode uses the main backend's own Gmail MCP connector (Claude's hosted connector, the Codex apps connector, or Gemini's google-workspace extension); the backend POSTs observations back via `/api/observations`. |
|
|
107
108
|
| Outlook | ✓ | ✓ | ✓ (user-managed) | Native mode requires you to install your own MCP / skill harness on the main backend (`userManagedConnector: true`); the probe synthesises a user-managed result and skips the missing-variant gate. |
|
|
108
|
-
| Yahoo | ✓ |
|
|
109
|
-
| iCloud | ✓ |
|
|
110
|
-
| Generic IMAP | ✓ | ✓ | — | IMAP transport. No native MCP variant. |
|
|
109
|
+
| Yahoo | ✓ | — | — | IMAP transport. Direct-only; never enters the delegated surface. |
|
|
110
|
+
| iCloud | ✓ | — | — | IMAP transport. Direct-only; never enters the delegated surface. |
|
|
111
111
|
|
|
112
112
|
Mode flips run through the §14.7 live probe + the per-key
|
|
113
113
|
`runtime_state.integration_flip_lock:<key>`. Changing the main
|
|
@@ -120,18 +120,20 @@ mode lifecycle.
|
|
|
120
120
|
|
|
121
121
|
- New threads land in the local `mail_messages_index` table
|
|
122
122
|
(FTS-indexed via `fts_mail_messages`).
|
|
123
|
-
-
|
|
123
|
+
- Labels/tags are written via the provider API when the agent applies
|
|
124
|
+
them (`POST /mail/:account/messages/:id/tags`).
|
|
124
125
|
- A short "mail" section in `state/today.md` when items qualified.
|
|
125
126
|
|
|
126
127
|
## Where in the Dashboard
|
|
127
128
|
|
|
128
129
|
- **Connections → Mail** is the per-account configuration: providers,
|
|
129
|
-
credentials,
|
|
130
|
+
credentials, per-account active toggles, and the Gmail classification
|
|
131
|
+
model.
|
|
130
132
|
|
|
131
133
|
## Configuration
|
|
132
134
|
|
|
133
135
|
Per account you choose a provider kind (`gmail` / `outlook` / `yahoo` /
|
|
134
|
-
`icloud`) plus credentials
|
|
136
|
+
`icloud`) plus credentials and an optional display label. You
|
|
135
137
|
pick the kind, not the transport — Yahoo and iCloud connect over IMAP
|
|
136
138
|
under the hood, but that is an implementation detail. The set of enabled
|
|
137
139
|
providers is `enabledMailProviders` (default `["gmail"]`).
|
|
@@ -140,8 +142,8 @@ providers is `enabledMailProviders` (default `["gmail"]`).
|
|
|
140
142
|
|
|
141
143
|
- An **auth failure** points at expired credentials. The dashboard's
|
|
142
144
|
auth-health card flips to a warning. See [Auth Failed](../../troubleshooting/auth-failed.md).
|
|
143
|
-
- A **classifier that misses**
|
|
144
|
-
|
|
145
|
+
- A **classifier that misses** consistently — switch the model behind
|
|
146
|
+
it via the Gmail Classification Model card on `/connections/mail`.
|
|
145
147
|
|
|
146
148
|
## Related
|
|
147
149
|
|
|
@@ -8,8 +8,8 @@ aliases:
|
|
|
8
8
|
- notion integration
|
|
9
9
|
category: features
|
|
10
10
|
summary: |
|
|
11
|
-
Watch
|
|
12
|
-
Changes record observations consumed by the
|
|
11
|
+
Watch one or more configured Notion databases for changes.
|
|
12
|
+
Changes record observations consumed by the activity scan.
|
|
13
13
|
section: integrations
|
|
14
14
|
tags:
|
|
15
15
|
- integrations
|
|
@@ -21,9 +21,10 @@ ask_examples:
|
|
|
21
21
|
- How do I connect Notion?
|
|
22
22
|
- Will Notion notify me on every page change?
|
|
23
23
|
- What does Notion native mode do?
|
|
24
|
+
- Why are my Notion routine fetches skipped?
|
|
24
25
|
locale: en-US
|
|
25
26
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-06-11
|
|
27
28
|
keywords:
|
|
28
29
|
- notion
|
|
29
30
|
- page
|
|
@@ -33,11 +34,11 @@ keywords:
|
|
|
33
34
|
- integration modes
|
|
34
35
|
related:
|
|
35
36
|
- features/integrations/obsidian
|
|
36
|
-
- features/routines/
|
|
37
|
+
- features/routines/activity-scan
|
|
37
38
|
- concepts/delegated-mode
|
|
38
39
|
- concepts/observations
|
|
39
40
|
ui_anchors:
|
|
40
|
-
- /connections/
|
|
41
|
+
- /connections/notes
|
|
41
42
|
config_keys:
|
|
42
43
|
- notionPollIntervalSeconds
|
|
43
44
|
api_endpoints:
|
|
@@ -47,8 +48,8 @@ api_endpoints:
|
|
|
47
48
|
|
|
48
49
|
# Notion
|
|
49
50
|
|
|
50
|
-
Aitne polls
|
|
51
|
-
observation on change, and the
|
|
51
|
+
Aitne polls the configured Notion databases, records an
|
|
52
|
+
observation on change, and the activity scan decides whether anything
|
|
52
53
|
warrants surfacing. The agent can also read pages on demand through
|
|
53
54
|
the `notion` skill.
|
|
54
55
|
|
|
@@ -66,10 +67,10 @@ modes the poller does not run — see Integration Modes below.
|
|
|
66
67
|
## Integration Modes
|
|
67
68
|
|
|
68
69
|
Notion supports all four integration modes (`direct` / `delegated` /
|
|
69
|
-
`native` / `disabled`), selected from **Connections →
|
|
70
|
+
`native` / `disabled`), selected from **Connections → Notes**.
|
|
70
71
|
|
|
71
72
|
- **`direct`** — the daemon polls Notion itself, records change
|
|
72
|
-
observations, and the
|
|
73
|
+
observations, and the activity scan consumes them.
|
|
73
74
|
- **`delegated`** — a delegated-sync worker runs on opt-in cadences;
|
|
74
75
|
observations are recorded the same way but on a different
|
|
75
76
|
schedule (see [Delegated Mode](../../concepts/delegated-mode.md)).
|
|
@@ -86,10 +87,30 @@ Notion supports all four integration modes (`direct` / `delegated` /
|
|
|
86
87
|
Switching modes requires the integration flip-lock probe to pass
|
|
87
88
|
(connector reachable, capabilities reported). See `POST /api/integrations/notion/probe`.
|
|
88
89
|
|
|
90
|
+
## Routine Fetch Targets
|
|
91
|
+
|
|
92
|
+
Autonomous routine fetches (the `routine.fetch_window` pre-pass that
|
|
93
|
+
feeds the morning routine and activity scan) are limited to an explicit
|
|
94
|
+
allowlist of pages you configure under **Connections → Notes →
|
|
95
|
+
Routine fetch targets**. This prevents the agent from searching the
|
|
96
|
+
whole workspace on every pass — workspace-wide scans were the dominant
|
|
97
|
+
cost driver before the allowlist existed.
|
|
98
|
+
|
|
99
|
+
- Each target is a Notion page URL, page ID, or page title. Prefer a
|
|
100
|
+
URL or ID; titles are matched best-effort and can be ambiguous.
|
|
101
|
+
- **Until at least one target is listed, routine Notion fetches are
|
|
102
|
+
skipped entirely** (recorded as a `plan_drop:no_fetch_targets` skip in
|
|
103
|
+
the activity log). On-demand reads in DMs are unaffected.
|
|
104
|
+
- Routine passes fetch at most 10 targets per window; extra entries are
|
|
105
|
+
skipped each pass.
|
|
106
|
+
- The allowlist applies in every mode (`direct` / `delegated` /
|
|
107
|
+
`native`) and survives mode switches and main-backend changes.
|
|
108
|
+
|
|
89
109
|
## Where in the Dashboard
|
|
90
110
|
|
|
91
|
-
- **Connections →
|
|
92
|
-
databases, and the mode picker.
|
|
111
|
+
- **Connections → Notes** holds the integration token, target
|
|
112
|
+
databases, the routine fetch target allowlist, and the mode picker.
|
|
113
|
+
The same Notion settings body appears in the setup wizard's Notes step.
|
|
93
114
|
|
|
94
115
|
## Configuration
|
|
95
116
|
|
|
@@ -103,6 +124,9 @@ Switching modes requires the integration flip-lock probe to pass
|
|
|
103
124
|
≥ 300 seconds.
|
|
104
125
|
- "No observations" in `native` mode is expected — observations flow
|
|
105
126
|
only when the main backend POSTs them during a session.
|
|
127
|
+
- Routine fetches silently absent? Check that **Routine fetch targets**
|
|
128
|
+
is non-empty — an empty allowlist skips Notion in every routine pass
|
|
129
|
+
(the activity log shows `plan_drop:no_fetch_targets`).
|
|
106
130
|
|
|
107
131
|
## Related
|
|
108
132
|
|
|
@@ -9,7 +9,7 @@ aliases:
|
|
|
9
9
|
category: features
|
|
10
10
|
summary: |
|
|
11
11
|
Watch an Obsidian vault for new and changed notes. Changes record
|
|
12
|
-
observations the
|
|
12
|
+
observations the activity scan consumes; the agent can also read
|
|
13
13
|
notes on demand.
|
|
14
14
|
section: integrations
|
|
15
15
|
tags:
|
|
@@ -24,7 +24,7 @@ ask_examples:
|
|
|
24
24
|
- Why didn't the agent see my new note?
|
|
25
25
|
locale: en-US
|
|
26
26
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-06-11
|
|
28
28
|
keywords:
|
|
29
29
|
- obsidian
|
|
30
30
|
- vault
|
|
@@ -32,10 +32,10 @@ keywords:
|
|
|
32
32
|
- obsidian observer
|
|
33
33
|
related:
|
|
34
34
|
- features/integrations/notion
|
|
35
|
-
- features/routines/
|
|
35
|
+
- features/routines/activity-scan
|
|
36
36
|
- concepts/observations
|
|
37
37
|
ui_anchors:
|
|
38
|
-
- /connections/
|
|
38
|
+
- /connections/notes
|
|
39
39
|
config_keys:
|
|
40
40
|
- externalObsidianVaultPath
|
|
41
41
|
- externalObsidianVaultName
|
|
@@ -46,7 +46,7 @@ config_keys:
|
|
|
46
46
|
# Obsidian
|
|
47
47
|
|
|
48
48
|
Point Aitne at your Obsidian vault directory; new and changed notes
|
|
49
|
-
record observations the
|
|
49
|
+
record observations the activity scan consumes. The agent can read and
|
|
50
50
|
write vault notes through the `external-services` skill.
|
|
51
51
|
|
|
52
52
|
Reads and writes go through the Obsidian app's CLI — the Obsidian app
|
|
@@ -72,18 +72,18 @@ its own output.
|
|
|
72
72
|
Continuously — the watcher runs as long as the daemon is up and a vault
|
|
73
73
|
path is configured (`externalObsidianWatch=true`). Saves are debounced
|
|
74
74
|
by `obsidianDebounceSeconds` before an observation is recorded; the
|
|
75
|
-
[
|
|
75
|
+
[activity scan](../routines/activity-scan.md) later consumes those
|
|
76
76
|
observations.
|
|
77
77
|
|
|
78
78
|
## Where in the Dashboard
|
|
79
79
|
|
|
80
|
-
- **Connections →
|
|
80
|
+
- **Connections → Notes** to point at the vault directory.
|
|
81
81
|
|
|
82
82
|
## Configuration
|
|
83
83
|
|
|
84
84
|
| Setting | Default | Notes |
|
|
85
85
|
|---|---|---|
|
|
86
|
-
| `externalObsidianVaultPath` | unset | Vault directory; set in Connections →
|
|
86
|
+
| `externalObsidianVaultPath` | unset | Vault directory; set in Connections → Notes. |
|
|
87
87
|
| `externalObsidianWatch` | true | Set false to keep the path but stop recording changes (large-vault churn control). |
|
|
88
88
|
| `obsidianDebounceSeconds` | 5 | How long to wait after a save before recording. |
|
|
89
89
|
|
|
@@ -62,7 +62,7 @@ keywords:
|
|
|
62
62
|
related:
|
|
63
63
|
- features/integrations/git
|
|
64
64
|
- features/integrations/github
|
|
65
|
-
- features/routines/
|
|
65
|
+
- features/routines/activity-scan
|
|
66
66
|
- concepts/observations
|
|
67
67
|
ui_anchors:
|
|
68
68
|
- /git
|
|
@@ -114,7 +114,7 @@ per repo (all open by default so the controls are visible at a glance):
|
|
|
114
114
|
require the repository to have a `localPath`.
|
|
115
115
|
3. **Daily git management** — opt-in per repo. Enabling it does three
|
|
116
116
|
distinct kinds of work, on different cadences:
|
|
117
|
-
- On the first **
|
|
117
|
+
- On the first **Generate overview** click, writes the curated
|
|
118
118
|
`knowledge/repos/<slug>/overview.md` skeleton, mirrors the source
|
|
119
119
|
`README.*` to `knowledge/repos/<slug>/README.md`, and
|
|
120
120
|
**automatically queues a one-shot Architecture refresh** so the AI
|
|
@@ -143,7 +143,7 @@ a Sonnet-class agent that reads the actual code.
|
|
|
143
143
|
**When it's generated**
|
|
144
144
|
|
|
145
145
|
- **First time** — automatically queued the moment you click
|
|
146
|
-
**
|
|
146
|
+
**Generate overview**. Returns immediately with `architectureScheduleId`;
|
|
147
147
|
the agent runs in the background (typically 30 s – 2 min) and
|
|
148
148
|
replaces the placeholder block with real analysis.
|
|
149
149
|
- **On demand** — click **Refresh architecture** any time. The daemon
|
|
@@ -171,7 +171,7 @@ new Architecture body via the chokepoint
|
|
|
171
171
|
`PUT /api/repositories/:id/architecture-section`; the daemon performs
|
|
172
172
|
the marker-bracketed replacement so other sections (Notable Changes,
|
|
173
173
|
Daily Activity Log, Open Threads) are preserved verbatim. Every write
|
|
174
|
-
also snapshots the previous
|
|
174
|
+
also snapshots the previous `overview.md` to `md_file_snapshots`
|
|
175
175
|
for recovery.
|
|
176
176
|
|
|
177
177
|
## README Mirror
|
|
@@ -180,7 +180,7 @@ for recovery.
|
|
|
180
180
|
the repository's `README.*` (whichever extension exists, with `.md`
|
|
181
181
|
preferred). It is refreshed on:
|
|
182
182
|
|
|
183
|
-
- Every **
|
|
183
|
+
- Every **Generate overview** click (initial mirror).
|
|
184
184
|
- Every **Refresh architecture** click (so the mirror tracks what the
|
|
185
185
|
agent just analyzed).
|
|
186
186
|
|
|
@@ -197,21 +197,24 @@ README is rewritten.
|
|
|
197
197
|
## When It Runs / How It Is Triggered
|
|
198
198
|
|
|
199
199
|
- **Polling** runs continuously on the per-repo cadence (or the global
|
|
200
|
-
default). Observations land in the `observations` table; the
|
|
201
|
-
|
|
200
|
+
default). Observations land in the `observations` table; the activity
|
|
201
|
+
scan coalesces them.
|
|
202
202
|
- **Triggers** fire when the matching event arrives on the EventBus.
|
|
203
203
|
- **Daily git management** is dispatched by `RepositoryManagementCron`,
|
|
204
204
|
which iterates the `repository_management` table once an hour and
|
|
205
|
-
|
|
206
|
-
whose `last_scan_at` is more than
|
|
205
|
+
runs the scan writer directly (an in-process daemon write — no agent
|
|
206
|
+
session) for any enabled row whose `last_scan_at` is more than
|
|
207
|
+
24 hours old.
|
|
207
208
|
- **Architecture refresh** (`git.project.refresh_architecture`) is
|
|
208
209
|
enqueued only on:
|
|
209
|
-
-
|
|
210
|
+
- **Generate overview** (auto-enqueue — skipped when a previous
|
|
211
|
+
analysis already landed, re-queued when the Architecture section
|
|
212
|
+
is still pending).
|
|
210
213
|
- Manual **Refresh architecture** click.
|
|
214
|
+
- A scan (cron or manual) that finds `overview.md` missing and
|
|
215
|
+
re-creates the skeleton via the implicit init.
|
|
211
216
|
|
|
212
|
-
|
|
213
|
-
(when daily scan creates a missing skeleton) deliberately does NOT
|
|
214
|
-
auto-enqueue.
|
|
217
|
+
There is no recurring cron that re-runs the analysis on a timer.
|
|
215
218
|
|
|
216
219
|
## What It Outputs
|
|
217
220
|
|
|
@@ -231,8 +234,8 @@ trigger's process key.
|
|
|
231
234
|
|
|
232
235
|
- **My Life → Git** (`/git`) — this page. Polling, Triggers, and Daily
|
|
233
236
|
git management are all expanded by default. The Daily-git-management
|
|
234
|
-
panel's buttons appear in lifecycle order — **
|
|
235
|
-
architecture → Run today's scan now** — and each surfaces an inline
|
|
237
|
+
panel's buttons appear in lifecycle order — **Generate overview →
|
|
238
|
+
Refresh architecture → Run today's scan now** — and each surfaces an inline
|
|
236
239
|
green confirmation on success or a red error message on failure.
|
|
237
240
|
- **Connections → Repositories** (`/connections/repositories`) —
|
|
238
241
|
register a repo (link a `localPath` and/or `owner/repo`), rename,
|
|
@@ -289,9 +292,10 @@ repository has a `localPath`:
|
|
|
289
292
|
- **The toggle is greyed out with "No local clone".** Add a
|
|
290
293
|
`localPath` on **Connections → Repositories**, then return.
|
|
291
294
|
- **`Last status` shows `failed` and `Failure streak` keeps climbing.**
|
|
292
|
-
The cron still iterates but the
|
|
293
|
-
|
|
294
|
-
|
|
295
|
+
The cron still iterates but the in-process scan writer is failing —
|
|
296
|
+
check the daemon logs (`aitne logs`) for "Failed to run repository
|
|
297
|
+
management scan", or click **Run today's scan now** to surface the
|
|
298
|
+
error inline. A high streak does
|
|
295
299
|
not prevent further scans (the cron retries on the next interval).
|
|
296
300
|
- **`Last scan` is "never" but the row is enabled.** Either the cron
|
|
297
301
|
has not ticked yet (default tick is 1 hour) or the row has no local
|
|
@@ -313,7 +317,7 @@ repository has a `localPath`:
|
|
|
313
317
|
before clicking again.
|
|
314
318
|
- **The README mirror went out of date** after the source repo's
|
|
315
319
|
README was rewritten. Click **Refresh architecture** (which also
|
|
316
|
-
re-copies the README) or **
|
|
320
|
+
re-copies the README) or **Generate overview** on the repo.
|
|
317
321
|
|
|
318
322
|
## Related
|
|
319
323
|
|
|
@@ -322,5 +326,5 @@ repository has a `localPath`:
|
|
|
322
326
|
- [GitHub integration](../integrations/github.md) — remote-side data
|
|
323
327
|
(notifications, workflow runs) reachable via `gh` even without a
|
|
324
328
|
local clone.
|
|
325
|
-
- [
|
|
329
|
+
- [Activity scan](../routines/activity-scan.md) — the routine that
|
|
326
330
|
consumes the observations this page's polling generates.
|
|
@@ -73,7 +73,7 @@ at `/reading`.
|
|
|
73
73
|
`completed` stamps `completed_at` automatically; you can also set a 1–5
|
|
74
74
|
`rating` or `notes`.
|
|
75
75
|
- **Recommend** from the list during reactive turns, and refresh the
|
|
76
|
-
reading-taste profile during weekly
|
|
76
|
+
reading-taste profile during the weekly review.
|
|
77
77
|
|
|
78
78
|
There is **no bare "add a book" endpoint** — new books arrive through the
|
|
79
79
|
two Kindle import pipelines above (or are created internally during an
|
|
@@ -93,8 +93,10 @@ drives the list shape. The reading skill loads in two situations:
|
|
|
93
93
|
|
|
94
94
|
- **Reactively**, when you mention a book or highlight in a DM.
|
|
95
95
|
- **From existing routines** — the morning routine can mention what
|
|
96
|
-
you're currently reading,
|
|
97
|
-
reading
|
|
96
|
+
you're currently reading, the weekly review refreshes the
|
|
97
|
+
reading-taste profile, and the monthly review pulls reading progress
|
|
98
|
+
for its reading report (it reads the existing taste profile but does
|
|
99
|
+
not re-derive it).
|
|
98
100
|
|
|
99
101
|
## What It Outputs
|
|
100
102
|
|