@aitne-sh/aitne 0.1.10 → 0.1.12
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 +12 -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/agents/morning-routine/agent.md +3 -4
- 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 +25 -18
- 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/dashboard-chat.md +1 -1
- 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 +5 -4
- package/agent-assets/docs/features/routines/weekly-review.md +18 -3
- package/agent-assets/docs/features/wiki/commands.md +1 -1
- package/agent-assets/docs/features/wiki/dashboard.md +1 -1
- package/agent-assets/docs/getting-started/01-what-is-this.md +4 -4
- package/agent-assets/docs/getting-started/04-first-day.md +27 -30
- package/agent-assets/docs/glossary.md +8 -7
- package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +5 -3
- package/agent-assets/docs/guides/change-which-model-handles-x.md +1 -1
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +1 -1
- 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 +13 -10
- 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-ingest-full-blocked.md +1 -1
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
- package/agent-assets/playbooks/markdown-note.md +43 -0
- package/agent-assets/playbooks/monitoring.md +29 -0
- package/agent-assets/playbooks/research.md +47 -0
- package/agent-assets/skills/agent-create/SKILL.md +45 -29
- package/agent-assets/skills/agent-create/references/prompt-frame-extended.md +132 -0
- package/agent-assets/skills/agent-create/references/prompt-frame.md +125 -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/board/SKILL.md +93 -0
- package/agent-assets/skills/browser-history/SKILL.md +34 -16
- package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
- package/agent-assets/skills/browser-task/SKILL.md +14 -7
- 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 +26 -15
- package/agent-assets/skills/schedule/references/batch.md +1 -1
- package/agent-assets/skills/schedule/references/model-selection.md +1 -1
- package/agent-assets/skills/schedule/references/prompt-frame.md +125 -0
- 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/task/SKILL.md +79 -0
- 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 +96 -12
- 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
|
@@ -100,7 +100,8 @@ visible to the model.
|
|
|
100
100
|
## Concrete Examples
|
|
101
101
|
|
|
102
102
|
- `today` — read and rewrite `state/today.md`.
|
|
103
|
-
- `schedule` —
|
|
103
|
+
- `schedule` — register future wake-ups, reminders, and recurring
|
|
104
|
+
tasks via `/api/schedule`.
|
|
104
105
|
- `mail` — search and label messages via the daemon's mail proxy.
|
|
105
106
|
- `docs-search` — read-only fetch over the docs corpus, used only by
|
|
106
107
|
`dashboard.docs_qa`.
|
|
@@ -124,11 +125,12 @@ seed payload immediately.
|
|
|
124
125
|
The optimizer agent runs in an isolated workdir with a tightly
|
|
125
126
|
scoped toolset (`Bash(curl http://localhost:8321/api/skill-curation/*)`,
|
|
126
127
|
`Read`) and an auto-revert safety net: each cadence cycle the daemon
|
|
127
|
-
re-checks recently-applied overlays, and any section that
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
stop thrashing. This is the only
|
|
131
|
-
per-proposal approve/reject API, just
|
|
128
|
+
re-checks recently-applied overlays, and any section that keeps
|
|
129
|
+
accumulating drift signal weight after the overlay was applied
|
|
130
|
+
(crossing a fixed regression threshold) is rolled back automatically
|
|
131
|
+
and frozen for two cycles to stop thrashing. This is the only
|
|
132
|
+
roll-back path — there is no per-proposal approve/reject API, just
|
|
133
|
+
the on/off toggle.
|
|
132
134
|
|
|
133
135
|
Skill curation is **off by default**. The master toggle, curation
|
|
134
136
|
cadence, manual-run trigger, and the per-skill exclusion list are all
|
|
@@ -136,8 +138,8 @@ surfaced at **Settings → Self-learning** (`/settings/self-learning`).
|
|
|
136
138
|
|
|
137
139
|
## Where You See It in the Dashboard
|
|
138
140
|
|
|
139
|
-
- **Knowledge → Skills** lists every skill, its description, and
|
|
140
|
-
|
|
141
|
+
- **Knowledge → Skills** lists every skill, its description, and its
|
|
142
|
+
`allowed-tools`.
|
|
141
143
|
- **Connections → MCP** is where MCP servers (which surface as tools
|
|
142
144
|
inside skills) attach.
|
|
143
145
|
- **Settings → Self-learning (`/settings/self-learning`)** is where
|
|
@@ -106,7 +106,7 @@ clicks leave the daemon.
|
|
|
106
106
|
containing ≥3 distinct ASINs surface as comparison sessions the
|
|
107
107
|
agent can summarise.
|
|
108
108
|
- **Powers the pre-morning digest** — yesterday's reading and reload
|
|
109
|
-
patterns feed the morning routine
|
|
109
|
+
patterns feed the digest the morning routine reads.
|
|
110
110
|
|
|
111
111
|
## Privacy and Consent
|
|
112
112
|
|
|
@@ -120,8 +120,8 @@ clicks leave the daemon.
|
|
|
120
120
|
history file is opened read-only; the daemon never reaches into
|
|
121
121
|
cookies, login sessions, or profile dirs other than the history DB.
|
|
122
122
|
- **Per-browser opt-in.** `browserHistoryBrowserOverrides` lets you
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
force each detected browser on or off independently
|
|
124
|
+
(`auto` / `forced-on` / `forced-off`).
|
|
125
125
|
- **Per-category gate.** `browserHistoryCategories` controls which
|
|
126
126
|
visit categories (research / shopping / news / dev / entertainment / …) get
|
|
127
127
|
ingested. Categories you exclude are dropped at ingest time, not
|
|
@@ -136,11 +136,13 @@ clicks leave the daemon.
|
|
|
136
136
|
|
|
137
137
|
A research cluster qualifies when the combination of meaningful visits,
|
|
138
138
|
foreground time, and distinct domains crosses the thresholds in
|
|
139
|
-
`DEFAULT_OFFER_THRESHOLDS` (
|
|
139
|
+
`DEFAULT_OFFER_THRESHOLDS` (fixed defaults — `browserHistoryLifecycle`
|
|
140
|
+
tunes the poller's check cadence, not these thresholds).
|
|
140
141
|
On each tick the poller evaluates the offer triggers per active cluster
|
|
141
|
-
(`evaluateOfferTriggers`)
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
(`evaluateOfferTriggers`) — this is where the 14-day, per-slug offer
|
|
143
|
+
re-fire window lives — and the **offer rate-limit gate**
|
|
144
|
+
(`gateOfferRateLimit`: daily offer cap, minimum gap between offers,
|
|
145
|
+
quiet hours, and a 30-day decline backoff) must also approve before a
|
|
144
146
|
Two-Option Offer DM is composed by the `routine.research_offer_dm`
|
|
145
147
|
process key.
|
|
146
148
|
|
|
@@ -171,7 +173,7 @@ later tick cannot re-offer the same cluster.
|
|
|
171
173
|
| Shopping-comparison window scan | Same tick, 7-day lookback | `SHOPPING_COMPARISON_WINDOW_MS` constants |
|
|
172
174
|
| Nightly journal append | Agent-day boundary | `routine.research_cluster_update` (lite tier, one row per active cluster per day) |
|
|
173
175
|
| Weekly reload-memory block | Friday weekly review | `routine.weekly_review` reads `/api/browser-history/reloads/weekly` |
|
|
174
|
-
| Pre-morning digest |
|
|
176
|
+
| Pre-morning digest | Daily, one hour before the agent-day boundary | Yesterday's reading + reloads feed the digest block |
|
|
175
177
|
|
|
176
178
|
## When Something Goes Wrong
|
|
177
179
|
|
|
@@ -180,8 +182,10 @@ later tick cannot re-offer the same cluster.
|
|
|
180
182
|
platform detector might be failing to resolve the user's profile dir.
|
|
181
183
|
The daemon log line will name the candidate paths it tried.
|
|
182
184
|
- **A cluster keeps re-offering.** Check the `lastResearchOfferAt` /
|
|
183
|
-
`lastWikiOfferAt` columns; the
|
|
184
|
-
14-day
|
|
185
|
+
`lastWikiOfferAt` columns; the trigger evaluator uses those for the
|
|
186
|
+
14-day re-fire window (the rate-limit gate also reads them for its
|
|
187
|
+
30-day decline backoff). `!research decline <slug>` stamps both
|
|
188
|
+
fields.
|
|
185
189
|
- **`!checks` is empty.** That's the common case for a quiet day —
|
|
186
190
|
the reload signals are gated to the agent-day, not UTC.
|
|
187
191
|
|
|
@@ -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
|
|