@aitne-sh/aitne 0.1.11 → 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/README.md +4 -0
- 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 +10 -6
- 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 +34 -23
- 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 +8 -7
- 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 +23 -22
- package/agent-assets/docs/features/routines/weekly-review.md +57 -51
- package/agent-assets/docs/features/wiki/commands.md +28 -22
- package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
- package/agent-assets/docs/features/wiki/dashboard.md +22 -24
- 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 +4 -5
- 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 +21 -19
- 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 +57 -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 +12 -13
- 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 +10 -12
- 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/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 +71 -32
- 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 +13 -8
- package/agent-assets/skills/background-task-reply/SKILL.md +2 -2
- package/agent-assets/skills/board/SKILL.md +92 -0
- package/agent-assets/skills/browser-history/SKILL.md +3 -3
- package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
- package/agent-assets/skills/browser-task/SKILL.md +4 -2
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
- package/agent-assets/skills/schedule/SKILL.md +21 -18
- 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/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 +82 -0
- 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 +29 -16
- package/agent-assets/templates/_manifest.json +1 -0
- package/agent-assets/templates/knowledge/sources/_index.md +19 -0
- package/package.json +4 -4
|
@@ -20,7 +20,6 @@ section: integrations
|
|
|
20
20
|
tags:
|
|
21
21
|
- integrations
|
|
22
22
|
- observations
|
|
23
|
-
- browser-history
|
|
24
23
|
- polling
|
|
25
24
|
- autonomous
|
|
26
25
|
status: stable
|
|
@@ -32,7 +31,7 @@ ask_examples:
|
|
|
32
31
|
- How do I opt out of browser history?
|
|
33
32
|
locale: en-US
|
|
34
33
|
created: 2026-05-22
|
|
35
|
-
updated: 2026-
|
|
34
|
+
updated: 2026-07-01
|
|
36
35
|
keywords:
|
|
37
36
|
- browser history
|
|
38
37
|
- browser history poller
|
|
@@ -75,38 +74,41 @@ api_endpoints:
|
|
|
75
74
|
|
|
76
75
|
# Browser History
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
clicks leave the daemon.
|
|
77
|
+
Every browser keeps a local history file (a small SQLite database) of
|
|
78
|
+
the pages you visit. Aitne can read that file for Chrome, Chromium,
|
|
79
|
+
Edge, Brave, Comet, and Atlas, sort each visit into a category, and use
|
|
80
|
+
the result to notice what you've been researching, what pages you keep
|
|
81
|
+
refreshing, and when you're comparison-shopping. Everything stays on
|
|
82
|
+
your machine — no URLs, titles, or clicks leave the daemon.
|
|
84
83
|
|
|
85
84
|
## What It Does
|
|
86
85
|
|
|
87
|
-
- **Reads visits** from the browser's own history
|
|
88
|
-
|
|
86
|
+
- **Reads visits** from the browser's own history file every 30
|
|
87
|
+
minutes (per browser, per profile) and inserts them into the
|
|
89
88
|
daemon's `browser_visits` table.
|
|
90
89
|
- **Counts reloads** per `<domain>/<first-path>` into
|
|
91
|
-
`browser_reload_signals
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
90
|
+
`browser_reload_signals` — that is, how often you reopen the same
|
|
91
|
+
page. These show up via [`!checks`](../messaging/bang-commands.md)
|
|
92
|
+
for the current agent-day (Aitne's version of "today", which rolls
|
|
93
|
+
over in the early morning rather than at midnight) and in the weekly
|
|
94
|
+
review's "this week you checked" block.
|
|
95
|
+
- **Derives research clusters** when a topic passes the thresholds for
|
|
96
|
+
meaningful visits, foreground reading time, and distinct domains. A
|
|
97
|
+
cluster is a group of related pages Aitne thinks you're actively
|
|
98
|
+
researching. Clusters live in `browser_research_clusters` with a
|
|
99
|
+
slug, display name, journal at `context/research/<slug>.md`, and a
|
|
100
|
+
status (`active | dormant | muted | concluded`).
|
|
101
|
+
- **Offers a direct message** when a cluster qualifies, using the
|
|
102
|
+
Two-Option Offer pattern: pick "research dive" (parallel web research
|
|
103
|
+
plus a summary) or "wiki summary" (into Obsidian / Notion / local
|
|
104
|
+
context). Accepting runs `routine.research_dispatch` or
|
|
105
|
+
`routine.research_wiki_summary`; declining silences offers for 14
|
|
104
106
|
days; mute / unmute / rename / conclude via [`!research`](../messaging/bang-commands.md).
|
|
105
|
-
- **Detects shopping
|
|
106
|
-
|
|
107
|
-
agent can
|
|
107
|
+
- **Detects comparison-shopping sessions** — a 90-min sliding window
|
|
108
|
+
holding ≥3 distinct ASINs (Amazon product IDs) surfaces as a session
|
|
109
|
+
the agent can summarize for you.
|
|
108
110
|
- **Powers the pre-morning digest** — yesterday's reading and reload
|
|
109
|
-
patterns feed the digest the morning routine reads.
|
|
111
|
+
patterns feed the digest that the morning routine reads.
|
|
110
112
|
|
|
111
113
|
## Privacy and Consent
|
|
112
114
|
|
|
@@ -116,9 +118,9 @@ clicks leave the daemon.
|
|
|
116
118
|
(`/settings/integrations/browser-history`) page. The integration only
|
|
117
119
|
supports `direct` (the daemon poller) or `disabled` — there is no
|
|
118
120
|
delegated or native mode.
|
|
119
|
-
- **Local-only.** No request leaves the daemon. The
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
- **Local-only.** No request leaves the daemon. The history file is
|
|
122
|
+
opened read-only, and the daemon never touches cookies, login
|
|
123
|
+
sessions, or any profile file other than that history database.
|
|
122
124
|
- **Per-browser opt-in.** `browserHistoryBrowserOverrides` lets you
|
|
123
125
|
force each detected browser on or off independently
|
|
124
126
|
(`auto` / `forced-on` / `forced-off`).
|
|
@@ -134,17 +136,20 @@ clicks leave the daemon.
|
|
|
134
136
|
|
|
135
137
|
## How Clusters Qualify
|
|
136
138
|
|
|
137
|
-
A
|
|
138
|
-
|
|
139
|
-
`DEFAULT_OFFER_THRESHOLDS
|
|
140
|
-
tunes the poller
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
139
|
+
A cluster qualifies once its meaningful visits, foreground time, and
|
|
140
|
+
distinct-domain counts all cross the thresholds in
|
|
141
|
+
`DEFAULT_OFFER_THRESHOLDS`. Those thresholds are fixed defaults;
|
|
142
|
+
`browserHistoryLifecycle` tunes how often the poller checks, not the
|
|
143
|
+
thresholds themselves.
|
|
144
|
+
|
|
145
|
+
Qualifying does not guarantee a message. On each tick the poller runs
|
|
146
|
+
the offer triggers for every active cluster (`evaluateOfferTriggers`),
|
|
147
|
+
which hold the 14-day, per-slug window before the same cluster can be
|
|
148
|
+
offered again. The **offer rate-limit gate** (`gateOfferRateLimit`) must
|
|
149
|
+
then approve too — it enforces a daily offer cap, a minimum gap between
|
|
150
|
+
offers, quiet hours, and a 30-day backoff after a decline. Only then
|
|
151
|
+
does the `routine.research_offer_dm` process key compose the Two-Option
|
|
152
|
+
Offer DM.
|
|
148
153
|
|
|
149
154
|
Accepting either path clears every pending-offer row for that slug, so a
|
|
150
155
|
later tick cannot re-offer the same cluster.
|
|
@@ -179,15 +184,15 @@ later tick cannot re-offer the same cluster.
|
|
|
179
184
|
|
|
180
185
|
- **The settings page shows no browsers.** Open
|
|
181
186
|
`/settings/integrations/browser-history` and run `aitne doctor` — the
|
|
182
|
-
|
|
183
|
-
|
|
187
|
+
detector may be unable to locate your browser's profile folder. The
|
|
188
|
+
daemon log line lists the candidate paths it tried.
|
|
184
189
|
- **A cluster keeps re-offering.** Check the `lastResearchOfferAt` /
|
|
185
|
-
`lastWikiOfferAt` columns; the trigger evaluator uses
|
|
186
|
-
14-day re-fire window (the rate-limit gate
|
|
190
|
+
`lastWikiOfferAt` columns; the trigger evaluator uses them for the
|
|
191
|
+
14-day re-fire window (and the rate-limit gate reads them for its
|
|
187
192
|
30-day decline backoff). `!research decline <slug>` stamps both
|
|
188
193
|
fields.
|
|
189
|
-
- **`!checks` is empty.** That's
|
|
190
|
-
|
|
194
|
+
- **`!checks` is empty.** That's normal for a quiet day — the reload
|
|
195
|
+
signals are counted per agent-day, not per UTC day.
|
|
191
196
|
|
|
192
197
|
## Related
|
|
193
198
|
|
|
@@ -19,7 +19,6 @@ section: integrations
|
|
|
19
19
|
tags:
|
|
20
20
|
- integrations
|
|
21
21
|
- calendar
|
|
22
|
-
- core
|
|
23
22
|
- observations
|
|
24
23
|
- polling
|
|
25
24
|
status: stable
|
|
@@ -33,7 +32,7 @@ ask_examples:
|
|
|
33
32
|
- Which model handles detected calendar changes?
|
|
34
33
|
locale: en-US
|
|
35
34
|
created: 2026-04-25
|
|
36
|
-
updated: 2026-
|
|
35
|
+
updated: 2026-07-01
|
|
37
36
|
keywords:
|
|
38
37
|
- calendar
|
|
39
38
|
- google calendar
|
|
@@ -77,10 +76,11 @@ around them and DM you ahead of meetings that matter.
|
|
|
77
76
|
- **Polls** Google Calendar on `calendarPollIntervalSeconds`; Outlook
|
|
78
77
|
and Apple calendars are read on demand rather than polled.
|
|
79
78
|
- **Records observations** when events change (add / move / remove),
|
|
80
|
-
|
|
79
|
+
which the activity scan then reads.
|
|
81
80
|
- **Surfaces today's events** to the morning routine so they land in
|
|
82
81
|
`state/today.md` and the day's schedule file.
|
|
83
|
-
- **Reads** events on demand
|
|
82
|
+
- **Reads** events on demand when you ask a live question, such as
|
|
83
|
+
"am I free at 3?".
|
|
84
84
|
|
|
85
85
|
The agent can create, move, or delete events when the operator asks
|
|
86
86
|
(`POST`/`PATCH`/`DELETE /api/calendar/events`, all Autonomous-tier — no
|
|
@@ -108,9 +108,9 @@ an explicit request.
|
|
|
108
108
|
## Calendar Event Model
|
|
109
109
|
|
|
110
110
|
The Calendar Event Model picker chooses the backend and model that
|
|
111
|
-
runs when the **daemon-side poller detects a calendar change**. It
|
|
112
|
-
the `calendar.change` ProcessKey
|
|
113
|
-
in two situations:
|
|
111
|
+
runs when the **daemon-side poller detects a calendar change**. It is
|
|
112
|
+
bound to the `calendar.change` ProcessKey (the internal name for this
|
|
113
|
+
change-handling job). The poller reacts to a change in two situations:
|
|
114
114
|
|
|
115
115
|
- An event was added, moved, or deleted between polls (recorded as a
|
|
116
116
|
change observation; the activity scan picks it up).
|
|
@@ -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
|
|