@aitne-sh/aitne 0.1.9 → 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 +41 -11
- 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 +6 -7
- 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 +14 -12
- package/agent-assets/docs/concepts/delegated-mode.md +18 -17
- package/agent-assets/docs/concepts/memory-model.md +16 -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 +39 -25
- package/agent-assets/docs/concepts/skills.md +12 -10
- package/agent-assets/docs/features/integrations/browser-history.md +23 -18
- package/agent-assets/docs/features/integrations/calendar.md +28 -17
- 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 +25 -22
- 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 +27 -23
- package/agent-assets/docs/features/lifestyle/reading.md +20 -11
- package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
- package/agent-assets/docs/features/memory-files/agent-journal.md +53 -26
- package/agent-assets/docs/features/memory-files/agent-lessons.md +178 -0
- package/agent-assets/docs/features/memory-files/projects.md +11 -8
- package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
- 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 +17 -14
- package/agent-assets/docs/features/messaging/telegram.md +10 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +6 -5
- package/agent-assets/docs/features/operations/approvals.md +6 -5
- 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 +4 -2
- package/agent-assets/docs/features/operations/notifications.md +11 -1
- package/agent-assets/docs/features/operations/quiet-hours.md +41 -11
- 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 -134
- package/agent-assets/docs/features/routines/evening-review.md +23 -13
- package/agent-assets/docs/features/routines/morning-routine.md +7 -5
- package/agent-assets/docs/features/routines/weekly-review.md +24 -3
- package/agent-assets/docs/features/wiki/commands.md +4 -4
- package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
- package/agent-assets/docs/features/wiki/dashboard.md +7 -6
- package/agent-assets/docs/features/wiki/overview.md +3 -3
- package/agent-assets/docs/features/wiki/search.md +5 -5
- package/agent-assets/docs/features/wiki/workspaces.md +2 -2
- package/agent-assets/docs/getting-started/01-what-is-this.md +3 -3
- package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
- package/agent-assets/docs/getting-started/04-first-day.md +27 -30
- package/agent-assets/docs/glossary.md +8 -8
- package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
- package/agent-assets/docs/guides/install-and-run.md +2 -2
- package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
- package/agent-assets/docs/guides/pause-the-agent.md +27 -21
- package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
- package/agent-assets/docs/guides/setup-wizard.md +12 -6
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
- package/agent-assets/docs/reference/api.md +26 -5
- package/agent-assets/docs/reference/cli-commands.md +3 -3
- package/agent-assets/docs/reference/config.md +51 -24
- package/agent-assets/docs/reference/disallowed-tools.md +6 -4
- package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
- package/agent-assets/docs/reference/knowledge-layout.md +25 -12
- package/agent-assets/docs/reference/process-keys.md +9 -9
- package/agent-assets/docs/reference/skills.md +10 -6
- package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -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/quota-exhausted.md +7 -6
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
- package/agent-assets/skills/agent-actions/SKILL.md +23 -39
- package/agent-assets/skills/agent-create/SKILL.md +26 -6
- package/agent-assets/skills/attach/SKILL.md +8 -27
- 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 +60 -29
- package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
- package/agent-assets/skills/browser-task/SKILL.md +33 -31
- package/agent-assets/skills/context/SKILL.md +26 -34
- package/agent-assets/skills/context/curation.json +12 -12
- package/agent-assets/skills/context/references/api.md +22 -20
- package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
- package/agent-assets/skills/context/references/snapshot-files.md +16 -15
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +19 -31
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
- package/agent-assets/skills/external-services/SKILL.native.claude.md +15 -9
- 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/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
- package/agent-assets/skills/mail/SKILL.md +12 -20
- package/agent-assets/skills/mail/SKILL.native.claude.md +24 -16
- package/agent-assets/skills/mail/SKILL.native.codex.md +16 -9
- package/agent-assets/skills/mail/SKILL.native.gemini.md +12 -6
- package/agent-assets/skills/mail/references/api.md +6 -1
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
- package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +26 -16
- package/agent-assets/skills/management-policy/SKILL.md +36 -28
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +30 -18
- package/agent-assets/skills/notify/SKILL.md +16 -13
- package/agent-assets/skills/notify/references/priority.md +42 -26
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.md +18 -18
- package/agent-assets/skills/notion/SKILL.native.claude.md +4 -4
- package/agent-assets/skills/notion/SKILL.native.codex.md +3 -3
- package/agent-assets/skills/notion/SKILL.native.gemini.md +3 -3
- package/agent-assets/skills/observations/SKILL.md +9 -24
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +9 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +8 -42
- package/agent-assets/skills/reading/references/reading-taste.md +5 -5
- package/agent-assets/skills/roadmap/SKILL.md +3 -19
- package/agent-assets/skills/roadmap/references/api.md +23 -8
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +8 -6
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/schedule/SKILL.md +20 -28
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +26 -16
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -46
- package/agent-assets/skills/today/SKILL.md +38 -81
- 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 +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
- package/agent-assets/skills/user-interview/SKILL.md +15 -90
- package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +2 -2
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
- package/agent-assets/skills/user-profile/SKILL.md +16 -26
- package/agent-assets/skills/user-profile/curation.json +3 -3
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -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 +11 -3
- package/agent-assets/task-flows/message.received.dm_first.md +8 -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.evening_review.md +80 -0
- package/agent-assets/task-flows/routine.monthly_review.md +81 -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 +124 -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/task-flows/wiki.trace.md +1 -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/bin/aitne.mjs +45 -11
- package/package.json +6 -5
- package/scripts/commands/doctor.mjs +11 -2
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +1 -1
- package/scripts/start.mjs +14 -4
- package/agent-assets/docs/features/routines/hourly-check.md +0 -205
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- How do I add a second mail account?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- mail
|
|
33
33
|
- gmail
|
|
@@ -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
|
|
@@ -118,19 +118,22 @@ mode lifecycle.
|
|
|
118
118
|
|
|
119
119
|
## What It Outputs
|
|
120
120
|
|
|
121
|
-
- New threads land in the local `
|
|
122
|
-
-
|
|
121
|
+
- New threads land in the local `mail_messages_index` table
|
|
122
|
+
(FTS-indexed via `fts_mail_messages`).
|
|
123
|
+
- Labels/tags are written via the provider API when the agent applies
|
|
124
|
+
them (`POST /mail/:account/messages/:id/tags`).
|
|
123
125
|
- A short "mail" section in `state/today.md` when items qualified.
|
|
124
126
|
|
|
125
127
|
## Where in the Dashboard
|
|
126
128
|
|
|
127
129
|
- **Connections → Mail** is the per-account configuration: providers,
|
|
128
|
-
credentials,
|
|
130
|
+
credentials, per-account active toggles, and the Gmail classification
|
|
131
|
+
model.
|
|
129
132
|
|
|
130
133
|
## Configuration
|
|
131
134
|
|
|
132
135
|
Per account you choose a provider kind (`gmail` / `outlook` / `yahoo` /
|
|
133
|
-
`icloud`) plus credentials
|
|
136
|
+
`icloud`) plus credentials and an optional display label. You
|
|
134
137
|
pick the kind, not the transport — Yahoo and iCloud connect over IMAP
|
|
135
138
|
under the hood, but that is an implementation detail. The set of enabled
|
|
136
139
|
providers is `enabledMailProviders` (default `["gmail"]`).
|
|
@@ -139,8 +142,8 @@ providers is `enabledMailProviders` (default `["gmail"]`).
|
|
|
139
142
|
|
|
140
143
|
- An **auth failure** points at expired credentials. The dashboard's
|
|
141
144
|
auth-health card flips to a warning. See [Auth Failed](../../troubleshooting/auth-failed.md).
|
|
142
|
-
- A **classifier that misses**
|
|
143
|
-
|
|
145
|
+
- A **classifier that misses** consistently — switch the model behind
|
|
146
|
+
it via the Gmail Classification Model card on `/connections/mail`.
|
|
144
147
|
|
|
145
148
|
## Related
|
|
146
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
|
|
|
@@ -46,7 +46,7 @@ ask_examples:
|
|
|
46
46
|
- How much does one Architecture refresh cost?
|
|
47
47
|
locale: en-US
|
|
48
48
|
created: 2026-05-05
|
|
49
|
-
updated: 2026-
|
|
49
|
+
updated: 2026-06-07
|
|
50
50
|
keywords:
|
|
51
51
|
- my life
|
|
52
52
|
- git
|
|
@@ -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
|
|
@@ -110,11 +110,11 @@ per repo (all open by default so the controls are visible at a glance):
|
|
|
110
110
|
2. **Triggers** — fire when matching Git or GitHub events arrive on
|
|
111
111
|
this repository. Triggers run **alongside** the project-wide
|
|
112
112
|
task-flow defaults, not in place of them. Each trigger has a
|
|
113
|
-
workdir mode (`local-clone` or `
|
|
113
|
+
workdir mode (`local-clone` or `temp`); local-clone triggers
|
|
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,
|
|
@@ -272,7 +275,7 @@ repository has a `localPath`:
|
|
|
272
275
|
- **Triggers** with `workdirMode: "local-clone"` require a `localPath`
|
|
273
276
|
on the parent repository (enforced when the trigger is created and
|
|
274
277
|
again if you try to clear `localPath` while such a trigger exists).
|
|
275
|
-
Triggers with `workdirMode: "
|
|
278
|
+
Triggers with `workdirMode: "temp"` work without a local clone.
|
|
276
279
|
- **Daily git management** is **local-clone-bound for v1**. The
|
|
277
280
|
toggle is disabled and the dashboard surfaces "No local clone — link
|
|
278
281
|
one to enable this feature." Internally the
|
|
@@ -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.
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- Where do reading-list items get stored?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-06-07
|
|
30
30
|
keywords:
|
|
31
31
|
- reading
|
|
32
32
|
- books
|
|
@@ -65,12 +65,15 @@ at `/reading`.
|
|
|
65
65
|
"Export Notebook" email.
|
|
66
66
|
- **List** the library on `/reading` or via `GET /api/books`
|
|
67
67
|
(filterable by `status` and `source`, paginated to 200 rows per call).
|
|
68
|
-
- **Mark complete or abandoned** —
|
|
69
|
-
`PATCH /api/books/:id`.
|
|
70
|
-
`
|
|
71
|
-
|
|
68
|
+
- **Mark complete or abandoned** — an existing row is updated via
|
|
69
|
+
`PATCH /api/books/:id`. This is an **Approve-tier** write that requires
|
|
70
|
+
an operator `Authorization: Bearer` token, so it is driven from the
|
|
71
|
+
dashboard, not autonomously by the agent (an unauthenticated agent curl
|
|
72
|
+
is rejected with **401** before the handler runs). Setting `status` to
|
|
73
|
+
`completed` stamps `completed_at` automatically; you can also set a 1–5
|
|
74
|
+
`rating` or `notes`.
|
|
72
75
|
- **Recommend** from the list during reactive turns, and refresh the
|
|
73
|
-
reading-taste profile during weekly
|
|
76
|
+
reading-taste profile during the weekly review.
|
|
74
77
|
|
|
75
78
|
There is **no bare "add a book" endpoint** — new books arrive through the
|
|
76
79
|
two Kindle import pipelines above (or are created internally during an
|
|
@@ -90,8 +93,10 @@ drives the list shape. The reading skill loads in two situations:
|
|
|
90
93
|
|
|
91
94
|
- **Reactively**, when you mention a book or highlight in a DM.
|
|
92
95
|
- **From existing routines** — the morning routine can mention what
|
|
93
|
-
you're currently reading,
|
|
94
|
-
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).
|
|
95
100
|
|
|
96
101
|
## What It Outputs
|
|
97
102
|
|
|
@@ -111,9 +116,13 @@ drives the list shape. The reading skill loads in two situations:
|
|
|
111
116
|
network error there surfaces in the audit log even when the chat reply
|
|
112
117
|
looked fine. A common cause is pasting a partial or non-Kindle
|
|
113
118
|
clippings file, which yields zero parsed books.
|
|
114
|
-
- **An edit that didn't stick**: `PATCH /api/books/:id`
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
- **An edit that didn't stick**: `PATCH /api/books/:id` is Approve-tier,
|
|
120
|
+
so a request without a valid operator Bearer token is rejected with 401
|
|
121
|
+
before the handler runs — book status/rating/notes corrections are made
|
|
122
|
+
from the dashboard, not by an autonomous agent. Once authenticated, it
|
|
123
|
+
returns 404 if the id doesn't exist and 400 for an invalid `status`
|
|
124
|
+
(only `reading`, `completed`, `abandoned`) or an out-of-range `rating`
|
|
125
|
+
(must be 1–5).
|
|
117
126
|
|
|
118
127
|
## Related
|
|
119
128
|
|
|
@@ -10,7 +10,7 @@ aliases:
|
|
|
10
10
|
- receipt files
|
|
11
11
|
category: features
|
|
12
12
|
summary: |
|
|
13
|
-
A SQLite-backed log of receipt and invoice attachments the
|
|
13
|
+
A SQLite-backed log of receipt and invoice attachments the mail
|
|
14
14
|
observer detects, plus an export path that saves them into the
|
|
15
15
|
operator's external Obsidian vault for tax / reimbursement tracking.
|
|
16
16
|
section: lifestyle
|
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- What receipts haven't I saved yet?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- receipt
|
|
33
33
|
- invoice
|
|
@@ -50,20 +50,21 @@ related:
|
|
|
50
50
|
|
|
51
51
|
## In One Sentence
|
|
52
52
|
|
|
53
|
-
Receipts are
|
|
54
|
-
scanning your mail; their metadata lives in the
|
|
55
|
-
table, and the agent can save the original file into
|
|
56
|
-
Obsidian vault on request.
|
|
53
|
+
Receipts are attachments (typically PDFs or images) the mail observer
|
|
54
|
+
detects while scanning your mail; their metadata lives in the
|
|
55
|
+
`receipts` SQLite table, and the agent can save the original file into
|
|
56
|
+
your external Obsidian vault on request.
|
|
57
57
|
|
|
58
58
|
## How Detection Works
|
|
59
59
|
|
|
60
|
-
The
|
|
61
|
-
|
|
60
|
+
The mail observer scans travel-booking emails across every connected
|
|
61
|
+
mail account and records each attachment it finds. Each detected
|
|
62
62
|
attachment inserts a row into the `receipts` table, keyed uniquely on
|
|
63
63
|
`(account_id, provider_msg_id, attachment_id)` so re-scans are
|
|
64
64
|
idempotent. Columns:
|
|
65
65
|
|
|
66
|
-
- `category` — `
|
|
66
|
+
- `category` — `travel` at detection time; reclassify to `document`
|
|
67
|
+
via PATCH (nullable on legacy rows)
|
|
67
68
|
- `provider_msg_id`, `attachment_id`, `account_id` — locate the source
|
|
68
69
|
attachment in the unified mail registry
|
|
69
70
|
- `filename`, `mime_type`, `size_bytes` — attachment metadata
|
|
@@ -105,7 +106,7 @@ is documented in
|
|
|
105
106
|
|
|
106
107
|
## Configuration
|
|
107
108
|
|
|
108
|
-
Detection runs as part of the
|
|
109
|
+
Detection runs as part of the mail observer; see
|
|
109
110
|
[Mail](../integrations/mail.md). The save target follows the external
|
|
110
111
|
vault convention `receipts/YYYY/MM/<merchant>-<date>.<ext>`.
|
|
111
112
|
|
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- Where are my travel bookings stored?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- flight
|
|
33
33
|
- hotel
|
|
@@ -99,8 +99,9 @@ classifier do the rest. The flow is:
|
|
|
99
99
|
|
|
100
100
|
## API
|
|
101
101
|
|
|
102
|
-
Read-only and status-update access (read endpoints are
|
|
103
|
-
PATCH endpoint follows the standard
|
|
102
|
+
Read-only and status-update access (read endpoints are read-sensitive —
|
|
103
|
+
they expose personal travel data; the PATCH endpoint follows the standard
|
|
104
|
+
write-safety tier and requires approval):
|
|
104
105
|
|
|
105
106
|
```bash
|
|
106
107
|
# All bookings (optionally filter by type/status/date range)
|