@aitne-sh/aitne 0.1.12 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-assets/agent-profiles/background-task.md +8 -1
- package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
- package/agent-assets/agents/evening-review/agent.md +6 -2
- package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
- package/agent-assets/agents/morning-routine/agent.md +7 -2
- package/agent-assets/agents/source-librarian/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +15 -15
- package/agent-assets/docs/concepts/auth-health.md +10 -7
- package/agent-assets/docs/concepts/backends-and-tiers.md +21 -13
- package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
- package/agent-assets/docs/concepts/delegated-mode.md +18 -18
- package/agent-assets/docs/concepts/memory-model.md +25 -24
- package/agent-assets/docs/concepts/observations.md +27 -19
- package/agent-assets/docs/concepts/process-keys.md +25 -26
- package/agent-assets/docs/concepts/routines.md +18 -17
- package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
- package/agent-assets/docs/concepts/safety-model.md +16 -15
- package/agent-assets/docs/concepts/skills.md +7 -4
- package/agent-assets/docs/features/integrations/browser-history.md +52 -47
- package/agent-assets/docs/features/integrations/calendar.md +7 -7
- package/agent-assets/docs/features/integrations/git.md +15 -13
- package/agent-assets/docs/features/integrations/github.md +12 -10
- package/agent-assets/docs/features/integrations/mail.md +47 -45
- package/agent-assets/docs/features/integrations/notion.md +15 -11
- package/agent-assets/docs/features/integrations/obsidian.md +27 -23
- package/agent-assets/docs/features/lifestyle/git.md +7 -8
- package/agent-assets/docs/features/lifestyle/reading.md +11 -8
- package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
- package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
- package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
- package/agent-assets/docs/features/memory-files/projects.md +13 -14
- package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
- package/agent-assets/docs/features/memory-files/schedule.md +10 -10
- package/agent-assets/docs/features/memory-files/today.md +18 -18
- package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
- package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
- package/agent-assets/docs/features/messaging/dashboard-chat.md +7 -6
- package/agent-assets/docs/features/messaging/discord.md +7 -5
- package/agent-assets/docs/features/messaging/overview.md +14 -14
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
- package/agent-assets/docs/features/messaging/slack.md +9 -8
- package/agent-assets/docs/features/messaging/telegram.md +7 -7
- package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
- package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
- package/agent-assets/docs/features/operations/approvals.md +13 -12
- package/agent-assets/docs/features/operations/backend-routing.md +38 -37
- package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
- package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
- package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
- package/agent-assets/docs/features/operations/notifications.md +15 -15
- package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
- package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
- package/agent-assets/docs/features/routines/activity-scan.md +14 -11
- package/agent-assets/docs/features/routines/custom-routines.md +9 -7
- package/agent-assets/docs/features/routines/evening-review.md +6 -7
- package/agent-assets/docs/features/routines/morning-routine.md +22 -21
- package/agent-assets/docs/features/routines/weekly-review.md +57 -51
- package/agent-assets/docs/features/wiki/commands.md +27 -21
- package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
- package/agent-assets/docs/features/wiki/dashboard.md +21 -23
- package/agent-assets/docs/features/wiki/overview.md +17 -25
- package/agent-assets/docs/features/wiki/search.md +15 -17
- package/agent-assets/docs/features/wiki/workspaces.md +55 -56
- package/agent-assets/docs/getting-started/01-what-is-this.md +3 -4
- package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
- package/agent-assets/docs/getting-started/04-first-day.md +4 -5
- package/agent-assets/docs/glossary.md +17 -16
- package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
- package/agent-assets/docs/guides/backup-and-restore.md +19 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +55 -62
- package/agent-assets/docs/guides/build-your-wiki.md +11 -12
- package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
- package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
- package/agent-assets/docs/guides/install-and-run.md +9 -10
- package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
- package/agent-assets/docs/guides/migrate-machines.md +16 -14
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +11 -12
- package/agent-assets/docs/guides/pause-the-agent.md +25 -25
- package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
- package/agent-assets/docs/guides/setup-wizard.md +9 -11
- package/agent-assets/docs/guides/switch-default-backend.md +9 -9
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
- package/agent-assets/docs/pages/activity.md +76 -0
- package/agent-assets/docs/pages/agents.md +78 -0
- package/agent-assets/docs/pages/analytics.md +70 -0
- package/agent-assets/docs/pages/browser.md +73 -0
- package/agent-assets/docs/pages/chat.md +67 -0
- package/agent-assets/docs/pages/connections.md +78 -0
- package/agent-assets/docs/pages/git.md +73 -0
- package/agent-assets/docs/pages/knowledge.md +75 -0
- package/agent-assets/docs/pages/overview.md +90 -0
- package/agent-assets/docs/pages/reading.md +65 -0
- package/agent-assets/docs/pages/settings.md +77 -0
- package/agent-assets/docs/pages/tasks.md +74 -0
- package/agent-assets/docs/pages/wiki.md +73 -0
- package/agent-assets/docs/reference/api.md +18 -17
- package/agent-assets/docs/reference/cli-commands.md +13 -10
- package/agent-assets/docs/reference/config.md +40 -35
- package/agent-assets/docs/reference/disallowed-tools.md +18 -17
- package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
- package/agent-assets/docs/reference/knowledge-layout.md +10 -10
- package/agent-assets/docs/reference/process-keys.md +20 -22
- package/agent-assets/docs/reference/skills.md +18 -16
- package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
- package/agent-assets/skills/agent-create/SKILL.md +39 -5
- package/agent-assets/skills/background-task/SKILL.md +9 -4
- package/agent-assets/skills/board/SKILL.md +8 -9
- package/agent-assets/skills/browser-task/SKILL.md +2 -0
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
- package/agent-assets/skills/schedule/SKILL.md +6 -5
- package/agent-assets/skills/sources/SKILL.md +68 -0
- package/agent-assets/skills/sources/curation.json +21 -0
- package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
- package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
- package/agent-assets/skills/task/SKILL.md +5 -2
- package/agent-assets/task-flows/background_task.md +29 -3
- package/agent-assets/task-flows/message.received.dm.md +1 -1
- package/agent-assets/task-flows/routine.activity_scan.md +17 -2
- package/agent-assets/task-flows/routine.evening_review.md +72 -11
- package/agent-assets/task-flows/routine.fetch_window.md +21 -0
- package/agent-assets/task-flows/routine.monthly_review.md +3 -1
- package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
- package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
- package/agent-assets/task-flows/scheduled.dm.md +8 -3
- package/agent-assets/templates/_manifest.json +1 -0
- package/agent-assets/templates/knowledge/sources/_index.md +19 -0
- package/package.json +4 -4
|
@@ -16,7 +16,6 @@ summary: |
|
|
|
16
16
|
notification. This pivot was the Phase 9 polling change.
|
|
17
17
|
section: observations
|
|
18
18
|
tags:
|
|
19
|
-
- core
|
|
20
19
|
- observations
|
|
21
20
|
- polling
|
|
22
21
|
- integrations
|
|
@@ -29,7 +28,7 @@ ask_examples:
|
|
|
29
28
|
- Where does the routine pre-pass write observations?
|
|
30
29
|
locale: en-US
|
|
31
30
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-07-01
|
|
33
32
|
keywords:
|
|
34
33
|
- observation
|
|
35
34
|
- observations
|
|
@@ -50,6 +49,10 @@ related:
|
|
|
50
49
|
- concepts/routines
|
|
51
50
|
- features/integrations/git
|
|
52
51
|
- features/integrations/obsidian
|
|
52
|
+
- features/integrations/calendar
|
|
53
|
+
- features/integrations/github
|
|
54
|
+
- features/integrations/notion
|
|
55
|
+
- features/integrations/browser-history
|
|
53
56
|
ui_anchors:
|
|
54
57
|
- /activity
|
|
55
58
|
process_keys:
|
|
@@ -72,29 +75,30 @@ context_files:
|
|
|
72
75
|
|
|
73
76
|
## TL;DR
|
|
74
77
|
|
|
75
|
-
Polling integrations (Obsidian, Git, Notion, Calendar)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
what is
|
|
78
|
+
Polling integrations (Obsidian, Git, Notion, Calendar) watch for
|
|
79
|
+
changes on a schedule. When they find one, they **do not emit an
|
|
80
|
+
event** or message you — they write an *observation* row into SQLite.
|
|
81
|
+
A single `routine.activity_scan` reads that queue and decides what is
|
|
82
|
+
worth surfacing.
|
|
79
83
|
|
|
80
|
-
Since 2026-05, observations have a **second writer
|
|
81
|
-
routine (`routine.morning_routine`, `routine.today_refresh`,
|
|
84
|
+
Since 2026-05, observations have a **second writer**. Before each main
|
|
85
|
+
routine runs (`routine.morning_routine`, `routine.today_refresh`,
|
|
82
86
|
`routine.activity_scan`, `routine.evening_review`,
|
|
83
|
-
`routine.weekly_review`)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
`routine.weekly_review`), a lite-tier `routine.fetch_window` pre-pass
|
|
88
|
+
fetches mail / calendar / Notion windows and POSTs them to
|
|
89
|
+
`/api/observations/batch`. (`routine.monthly_review` has no pre-pass
|
|
90
|
+
window.) The main routine then reads them through the same
|
|
91
|
+
`pending=true` queue that the polling path feeds. The rows look
|
|
92
|
+
identical no matter which writer produced them, so downstream consumers
|
|
93
|
+
cannot tell them apart.
|
|
90
94
|
|
|
91
95
|
## Why This Concept Exists
|
|
92
96
|
|
|
93
97
|
Per-change notifications turned every routine commit, every saved
|
|
94
|
-
note, every tiny calendar tweak into
|
|
95
|
-
pivot moved the agent away from that: changes
|
|
96
|
-
hour the agent
|
|
97
|
-
up to something
|
|
98
|
+
note, every tiny calendar tweak into an interruption. The Phase 9
|
|
99
|
+
pivot moved the agent away from that: changes pile up quietly, and
|
|
100
|
+
once an hour the agent reviews the whole batch and decides whether the
|
|
101
|
+
pattern adds up to something you should hear about.
|
|
98
102
|
|
|
99
103
|
## Definitions
|
|
100
104
|
|
|
@@ -149,4 +153,8 @@ Both write rows of the same shape; the consumer reads the merged queue.
|
|
|
149
153
|
- [Process Keys](./process-keys.md)
|
|
150
154
|
- [Routines](./routines.md)
|
|
151
155
|
- [Git](../features/integrations/git.md)
|
|
156
|
+
- [GitHub](../features/integrations/github.md)
|
|
152
157
|
- [Obsidian](../features/integrations/obsidian.md)
|
|
158
|
+
- [Notion](../features/integrations/notion.md)
|
|
159
|
+
- [Calendar](../features/integrations/calendar.md)
|
|
160
|
+
- [Browser History](../features/integrations/browser-history.md)
|
|
@@ -14,10 +14,8 @@ summary: |
|
|
|
14
14
|
to a backend + tier binding; the manifest map resolves it to skills.
|
|
15
15
|
section: process-keys
|
|
16
16
|
tags:
|
|
17
|
-
- core
|
|
18
|
-
- dispatch
|
|
19
|
-
- backends
|
|
20
17
|
- routing
|
|
18
|
+
- backends
|
|
21
19
|
status: stable
|
|
22
20
|
ask_examples:
|
|
23
21
|
- What is a ProcessKey?
|
|
@@ -26,7 +24,7 @@ ask_examples:
|
|
|
26
24
|
- What is the difference between configurable and fixed ProcessKeys?
|
|
27
25
|
locale: en-US
|
|
28
26
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-07-01
|
|
30
28
|
keywords:
|
|
31
29
|
- process key
|
|
32
30
|
- ProcessKey
|
|
@@ -70,36 +68,37 @@ ui_anchors:
|
|
|
70
68
|
|
|
71
69
|
## TL;DR
|
|
72
70
|
|
|
73
|
-
A ProcessKey is a string like `routine.morning_routine` or
|
|
74
|
-
that
|
|
75
|
-
event, every dashboard action
|
|
76
|
-
to pick the backend; the skills compiler uses it to pick
|
|
71
|
+
A ProcessKey is a short string like `routine.morning_routine` or
|
|
72
|
+
`message.dm` that names one class of agent work. Every routine, every
|
|
73
|
+
event the agent reacts to, and every dashboard action carries one. The
|
|
74
|
+
router uses it to pick the backend; the skills compiler uses it to pick
|
|
75
|
+
the tools.
|
|
77
76
|
|
|
78
77
|
## Why This Concept Exists
|
|
79
78
|
|
|
80
|
-
Without a stable
|
|
81
|
-
"a DM" would have to be hand
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
Without a stable name for each class of task, "the morning routine" and
|
|
80
|
+
"a DM" would have to be told apart by hand everywhere they behave
|
|
81
|
+
differently — pricing, retention, tool scope, and auditing. The
|
|
82
|
+
ProcessKey is the one label that connects dispatch to all of those
|
|
83
|
+
subsystems.
|
|
85
84
|
|
|
86
85
|
## Definitions
|
|
87
86
|
|
|
88
|
-
- **CONFIGURABLE_PROCESS_KEYS**: the
|
|
87
|
+
- **CONFIGURABLE_PROCESS_KEYS**: the keys an operator can override per
|
|
89
88
|
backend on `/settings/models`. The rest (`delegated_task`, `setup`,
|
|
90
|
-
`schedule.approaching`, …) use fixed defaults and
|
|
89
|
+
`schedule.approaching`, …) use fixed defaults and do not appear
|
|
91
90
|
there.
|
|
92
|
-
- **REACTIVE_PROCESS_KEYS**:
|
|
93
|
-
(`message.dm`, `message.mention`,
|
|
94
|
-
`dashboard.docs_qa`, `setup`, `knowledge.import`).
|
|
95
|
-
autonomous.
|
|
96
|
-
- **DEFAULT_PROCESS_TIERS**: the
|
|
97
|
-
(Haiku-class), `medium` (Sonnet-class), or `high`
|
|
98
|
-
Unknown keys default to `medium`.
|
|
99
|
-
- **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to
|
|
91
|
+
- **REACTIVE_PROCESS_KEYS**: keys tied to events that happen while you
|
|
92
|
+
interact with the agent (`message.dm`, `message.mention`,
|
|
93
|
+
`dashboard.chat`, `dashboard.docs_qa`, `setup`, `knowledge.import`).
|
|
94
|
+
Everything else runs on its own (autonomous).
|
|
95
|
+
- **DEFAULT_PROCESS_TIERS**: the default model size for each key —
|
|
96
|
+
`lite` (Haiku-class), `medium` (Sonnet-class), or `high`
|
|
97
|
+
(Opus-class). Unknown keys default to `medium`.
|
|
98
|
+
- **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked, so an
|
|
99
|
+
operator pin cannot change it. Today this is just `dashboard.docs_qa`,
|
|
100
|
+
locked to `medium`.
|
|
101
|
+
- **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to its skill manifest
|
|
103
102
|
key, so the skills compiler can pick the right tool set.
|
|
104
103
|
|
|
105
104
|
## Concrete Examples
|
|
@@ -17,7 +17,6 @@ summary: |
|
|
|
17
17
|
retro, plus any recurring user Agents you define.
|
|
18
18
|
section: routines
|
|
19
19
|
tags:
|
|
20
|
-
- core
|
|
21
20
|
- routines
|
|
22
21
|
- autonomous
|
|
23
22
|
- scheduler
|
|
@@ -30,7 +29,7 @@ ask_examples:
|
|
|
30
29
|
- Which routine uses the high tier by default?
|
|
31
30
|
locale: en-US
|
|
32
31
|
created: 2026-04-25
|
|
33
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-07-01
|
|
34
33
|
keywords:
|
|
35
34
|
- routine
|
|
36
35
|
- routines
|
|
@@ -78,24 +77,26 @@ config_keys:
|
|
|
78
77
|
|
|
79
78
|
## TL;DR
|
|
80
79
|
|
|
81
|
-
A routine is a
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
(
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
A routine is a piece of agent work that runs on a schedule instead of
|
|
81
|
+
in reply to a message. The morning routine fires once per agent day —
|
|
82
|
+
the 24-hour window that starts at `dayBoundaryHour` (04:00 by default).
|
|
83
|
+
The evening review (18:00 daily), weekly review (Friday 19:00), and
|
|
84
|
+
optional monthly review run on fixed schedules set in code. The
|
|
85
|
+
activity scan gathers up the observations that have piled up, on a
|
|
86
|
+
cadence you can configure.
|
|
87
87
|
|
|
88
88
|
## Why This Concept Exists
|
|
89
89
|
|
|
90
|
-
The
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
The whole idea of Aitne is that you should not have to "prompt" your
|
|
91
|
+
assistant every time. Routines are how the agent shows up without being
|
|
92
|
+
asked: it builds the day's plan, it writes to the journal, and it files
|
|
93
|
+
a weekly retrospective. This is the proactive side of the agent.
|
|
94
94
|
|
|
95
95
|
Each routine is a single ProcessKey — `routine.morning_routine`,
|
|
96
|
-
`routine.activity_scan`, `routine.weekly_review`,
|
|
97
|
-
treats
|
|
98
|
-
DM is
|
|
96
|
+
`routine.activity_scan`, `routine.weekly_review`, and so on. The
|
|
97
|
+
dispatcher treats a routine as just another kind of event; the only
|
|
98
|
+
thing that sets it apart from a direct message (DM) is what triggered
|
|
99
|
+
it — a schedule rather than you.
|
|
99
100
|
|
|
100
101
|
## Definitions
|
|
101
102
|
|
|
@@ -128,8 +129,8 @@ DM is who fired the event.
|
|
|
128
129
|
- **Pre-pass fetcher**: each main routine that needs fresh mail /
|
|
129
130
|
calendar / Notion data is preceded by a lite-tier
|
|
130
131
|
`routine.fetch_window` session that fetches the relevant window and
|
|
131
|
-
POSTs observations. The main routine then
|
|
132
|
-
`<fetch_report>` block plus pending observations instead of
|
|
132
|
+
POSTs observations. The main routine then reads the resulting
|
|
133
|
+
`<fetch_report>` block plus pending observations instead of calling
|
|
133
134
|
upstream APIs itself — a cost-savings split introduced in 2026-05.
|
|
134
135
|
|
|
135
136
|
## Concrete Examples
|
|
@@ -17,7 +17,6 @@ summary: |
|
|
|
17
17
|
which actions are categorically refused.
|
|
18
18
|
section: safety
|
|
19
19
|
tags:
|
|
20
|
-
- core
|
|
21
20
|
- safety
|
|
22
21
|
- operations
|
|
23
22
|
- backends
|
|
@@ -28,7 +27,7 @@ ask_examples:
|
|
|
28
27
|
- How do I see what tools the agent is allowed to use?
|
|
29
28
|
locale: en-US
|
|
30
29
|
created: 2026-04-25
|
|
31
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-07-01
|
|
32
31
|
keywords:
|
|
33
32
|
- safety
|
|
34
33
|
- safe mode
|
|
@@ -63,7 +62,9 @@ Three layers gate what the agent can do:
|
|
|
63
62
|
|
|
64
63
|
1. **Skill `allowed-tools`** — the visible toolset for that session.
|
|
65
64
|
2. **Execution mode** — Safe (strict permission checks, sandboxes)
|
|
66
|
-
or Allow (SDK
|
|
65
|
+
or Allow (the SDK's permission prompts are bypassed, sandbox off).
|
|
66
|
+
Set per backend (the underlying agent engine — Claude, Codex,
|
|
67
|
+
Gemini, or OpenCode).
|
|
67
68
|
3. **Always-disallowed** — a hard floor. Recursive deletes, `sudo`,
|
|
68
69
|
secret-file reads / writes are denied unconditionally regardless
|
|
69
70
|
of mode, and neither a skill nor Allow mode can widen past it.
|
|
@@ -87,29 +88,31 @@ disallowed-tools floor.
|
|
|
87
88
|
permission block.
|
|
88
89
|
- **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
|
|
89
90
|
TOML. The absolute-block layer still holds in Allow mode on Claude,
|
|
90
|
-
Gemini, and OpenCode
|
|
91
|
-
mode is a binary sandbox-off switch with no hook layer the daemon can
|
|
91
|
+
Gemini, and OpenCode. Codex is the documented exception. Its Allow
|
|
92
|
+
mode is a binary sandbox-off switch, with no hook layer the daemon can
|
|
92
93
|
attach the block list to, so the dashboard warns you before you flip
|
|
93
|
-
it.
|
|
94
|
-
the others stay Safe.
|
|
94
|
+
it. You set the mode separately for each backend, so one backend can
|
|
95
|
+
run Allow while the others stay Safe.
|
|
95
96
|
- **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
|
|
96
97
|
in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
|
|
97
98
|
by config, or by allow-mode.
|
|
98
99
|
- **Risk tier**: every daemon-API operation carries one of three tiers —
|
|
99
100
|
`autonomous`, `read_sensitive`, or `approve`. *Autonomous* runs without a
|
|
100
|
-
prompt. *Read-sensitive* reads (email, calendar, notes, context files)
|
|
101
|
-
|
|
102
|
-
`enforceReadToken` is on. *Approve*
|
|
103
|
-
bearer token (the dashboard does this when you click
|
|
104
|
-
separate "notify" tier — that behaviour now lives in
|
|
105
|
-
potentially destructive
|
|
106
|
-
[Safety model](safety-model.md) for the full
|
|
101
|
+
prompt. *Read-sensitive* reads (email, calendar, notes, context files) can
|
|
102
|
+
do no more harm than autonomous ones, but they are gated by a read token
|
|
103
|
+
when `enforceReadToken` is on. *Approve* actions are blocked until you
|
|
104
|
+
confirm with a bearer token (the dashboard does this when you click
|
|
105
|
+
Approve). There is no separate "notify" tier — that behaviour now lives in
|
|
106
|
+
the skill prompts: before a potentially destructive action the agent DMs
|
|
107
|
+
you first, then proceeds. See [Safety model](safety-model.md) for the full
|
|
108
|
+
taxonomy.
|
|
107
109
|
|
|
108
110
|
## Concrete Examples
|
|
109
111
|
|
|
110
|
-
The daemon API is the agent's only write path, so most of
|
|
111
|
-
`autonomous`
|
|
112
|
-
|
|
112
|
+
The daemon API is the agent's only write path, so most of the writes it makes
|
|
113
|
+
are `autonomous` — a single choke point validates and snapshots each one. The
|
|
114
|
+
places the agent is actually stopped are the absolute-block layer and the
|
|
115
|
+
Approve tier.
|
|
113
116
|
|
|
114
117
|
| Action | What gates it |
|
|
115
118
|
|---|---|
|
|
@@ -22,7 +22,6 @@ summary: |
|
|
|
22
22
|
unchanged.)
|
|
23
23
|
section: safety
|
|
24
24
|
tags:
|
|
25
|
-
- core
|
|
26
25
|
- safety
|
|
27
26
|
- integrations
|
|
28
27
|
- audit
|
|
@@ -34,7 +33,7 @@ ask_examples:
|
|
|
34
33
|
- Where do I see what the agent has been doing?
|
|
35
34
|
locale: en-US
|
|
36
35
|
created: 2026-04-26
|
|
37
|
-
updated: 2026-
|
|
36
|
+
updated: 2026-07-01
|
|
38
37
|
keywords:
|
|
39
38
|
- deniedTools
|
|
40
39
|
- safety floor
|
|
@@ -73,9 +72,10 @@ The risk classifier has two write tiers, not three:
|
|
|
73
72
|
every connector tool call (send mail, archive, label, create event,
|
|
74
73
|
delete event, …) and for normal context writes.
|
|
75
74
|
- **Approve** — agent must present a Bearer token issued through the
|
|
76
|
-
dashboard. Reserved for posture-changing daemon configuration
|
|
77
|
-
|
|
78
|
-
disabling backends,
|
|
75
|
+
dashboard. Reserved for posture-changing daemon configuration
|
|
76
|
+
(settings that change the safety setup itself): flipping integration
|
|
77
|
+
modes, swapping the main backend, enabling/disabling backends,
|
|
78
|
+
wiping config.
|
|
79
79
|
- (`ReadSensitive` is the third tier, but it gates *reads* of personal
|
|
80
80
|
data — orthogonal to write notifications. It is unchanged.)
|
|
81
81
|
|
|
@@ -95,22 +95,23 @@ actions are:
|
|
|
95
95
|
## Why This Concept Exists
|
|
96
96
|
|
|
97
97
|
The previous Notify tier (3-tier model: Autonomous / Notify / Approve)
|
|
98
|
-
gave a *false sense* of safety
|
|
99
|
-
operator could miss the DM, and the middleware
|
|
100
|
-
|
|
101
|
-
backend's connector without ever
|
|
102
|
-
per-tool Notify policy across
|
|
103
|
-
operator-installed MCPs was
|
|
98
|
+
gave a *false sense* of safety. The action completed either way, the
|
|
99
|
+
operator could easily miss the DM, and the middleware simply could not
|
|
100
|
+
intercept native MCP calls — the agent could reach Gmail through the
|
|
101
|
+
backend's own connector without ever passing through the daemon. On top
|
|
102
|
+
of that, hand-curating a per-tool Notify policy across every path
|
|
103
|
+
(direct, cross-backend, same-backend, and operator-installed MCPs) was
|
|
104
|
+
an ever-growing maintenance trap.
|
|
104
105
|
|
|
105
106
|
The new model is honest: dangerous actions either (a) are denied at the
|
|
106
107
|
chokepoint by the operator's `deniedTools`, (b) require explicit
|
|
107
108
|
Approve (sparse, intentional, daemon-config only), or (c) happen
|
|
108
109
|
autonomously and are auditable on demand.
|
|
109
110
|
|
|
110
|
-
The
|
|
111
|
-
|
|
112
|
-
of "report to me" events.
|
|
113
|
-
**available on demand**, not pushed.
|
|
111
|
+
The core promise — the agent manages the operator's life — stays
|
|
112
|
+
intact. The operator should not have to manage the agent's own calendar
|
|
113
|
+
of "report back to me" events. Details of what the agent did are
|
|
114
|
+
**available on demand**, not pushed at you.
|
|
114
115
|
|
|
115
116
|
## Definitions
|
|
116
117
|
|
|
@@ -14,7 +14,6 @@ summary: |
|
|
|
14
14
|
to load it, and pins the exact tools the session may use.
|
|
15
15
|
section: skills
|
|
16
16
|
tags:
|
|
17
|
-
- core
|
|
18
17
|
- skills
|
|
19
18
|
- safety
|
|
20
19
|
- knowledge
|
|
@@ -28,7 +27,7 @@ ask_examples:
|
|
|
28
27
|
- Where do skill overlays live?
|
|
29
28
|
locale: en-US
|
|
30
29
|
created: 2026-04-25
|
|
31
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-07-01
|
|
32
31
|
keywords:
|
|
33
32
|
- SKILL.md
|
|
34
33
|
- allowed-tools
|
|
@@ -42,6 +41,7 @@ keywords:
|
|
|
42
41
|
related:
|
|
43
42
|
- concepts/safety-and-execution
|
|
44
43
|
- concepts/process-keys
|
|
44
|
+
- concepts/delegated-mode
|
|
45
45
|
- reference/skills
|
|
46
46
|
ui_anchors:
|
|
47
47
|
- /knowledge
|
|
@@ -66,14 +66,15 @@ A skill is a Markdown file the daemon copies into the agent's working
|
|
|
66
66
|
directory before each session. Its frontmatter declares the skill's
|
|
67
67
|
`name`, `description`, and the `allowed-tools` the session may use.
|
|
68
68
|
The agent reads `SKILL.md` at the start of every session that loads
|
|
69
|
-
that skill and
|
|
69
|
+
that skill and treats it as a contract — the rules it must follow
|
|
70
|
+
for that task.
|
|
70
71
|
|
|
71
72
|
## Why This Concept Exists
|
|
72
73
|
|
|
73
74
|
The agent runs against a real machine. Without scoped permissions, a
|
|
74
75
|
"please summarize my mail" turn could in principle invoke `Bash(rm)`,
|
|
75
76
|
post to your social accounts, or rewrite arbitrary files. Skills fix
|
|
76
|
-
that by
|
|
77
|
+
that by fitting the available tools to the task: the morning routine
|
|
77
78
|
loads the context/today/observations/schedule skills; a docs question
|
|
78
79
|
loads only `docs-search`. Tools outside the allow-list aren't even
|
|
79
80
|
visible to the model.
|
|
@@ -154,5 +155,7 @@ surfaced at **Settings → Self-learning** (`/settings/self-learning`).
|
|
|
154
155
|
`allowed-tools` is too permissive.
|
|
155
156
|
- [Process Keys](process-keys.md) — the dispatch identity that picks
|
|
156
157
|
which skill manifest to load.
|
|
158
|
+
- [Delegated Mode](delegated-mode.md) — the run mode whose sessions
|
|
159
|
+
load these skills.
|
|
157
160
|
- [Skills (Reference)](../reference/skills.md) — index of every
|
|
158
161
|
built-in skill.
|
|
@@ -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).
|