@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
|
autonomous spend.
|
|
17
17
|
section: operations
|
|
18
18
|
tags:
|
|
19
|
-
- core
|
|
20
19
|
- cost
|
|
21
20
|
- operations
|
|
22
21
|
status: stable
|
|
@@ -27,7 +26,7 @@ ask_examples:
|
|
|
27
26
|
- What is the difference between the daily and monthly cost cap?
|
|
28
27
|
locale: en-US
|
|
29
28
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
31
30
|
keywords:
|
|
32
31
|
- cost tracking
|
|
33
32
|
- analytics
|
|
@@ -97,9 +96,10 @@ Open **Analytics**. It has two tabs:
|
|
|
97
96
|
- **Metrics** (`/analytics?tab=metrics`) — operational health: activity
|
|
98
97
|
volume, execution breakdown, error rates, notification throughput.
|
|
99
98
|
|
|
100
|
-
Note on delegated work
|
|
101
|
-
|
|
102
|
-
parent session's
|
|
99
|
+
Note on delegated work (when a run hands part of its job to a helper
|
|
100
|
+
model): only **cross-backend** delegated calls show up as separate runs.
|
|
101
|
+
Same-backend delegated/native calls roll up under the parent session's
|
|
102
|
+
totals.
|
|
103
103
|
|
|
104
104
|
### Sidebar footer (running daily total)
|
|
105
105
|
|
|
@@ -20,8 +20,6 @@ section: operations
|
|
|
20
20
|
tags:
|
|
21
21
|
- operations
|
|
22
22
|
- safety
|
|
23
|
-
- browser-automation
|
|
24
|
-
- experimental
|
|
25
23
|
status: experimental
|
|
26
24
|
ask_examples:
|
|
27
25
|
- What is B-4?
|
|
@@ -31,7 +29,7 @@ ask_examples:
|
|
|
31
29
|
- How do I block a site from managed Chromium?
|
|
32
30
|
locale: en-US
|
|
33
31
|
created: 2026-05-22
|
|
34
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-07-01
|
|
35
33
|
keywords:
|
|
36
34
|
- managed chromium
|
|
37
35
|
- browser automation
|
|
@@ -66,16 +64,18 @@ api_endpoints:
|
|
|
66
64
|
|
|
67
65
|
# Managed Chromium (B-4)
|
|
68
66
|
|
|
69
|
-
B-4 is the experimental purchase-confirmation flow. When you
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
B-4 is the experimental purchase-confirmation flow. When you ask the
|
|
68
|
+
agent to "buy X" or "complete the checkout", and the vendor is on your
|
|
69
|
+
B-4 allowlist (the short list of sites you have explicitly approved),
|
|
70
|
+
the daemon (Aitne's always-on background service) opens a managed
|
|
71
|
+
Chromium profile, fills the cart, and then stops. It waits for a
|
|
72
|
+
one-time token that you send back in a DM (direct message) before it
|
|
73
|
+
clicks the final confirm button. **It is default-off**, sits behind
|
|
74
|
+
every safety check the project ships, and stays hidden in the public
|
|
75
|
+
dashboard until the upstream B-3 surface (browser-history research)
|
|
76
|
+
has run smoothly for six weeks.
|
|
77
|
+
|
|
78
|
+
This page is written so it's safe to read whether you've turned it on
|
|
79
79
|
or not.
|
|
80
80
|
|
|
81
81
|
## What's Actually Gated
|
|
@@ -93,16 +93,15 @@ Before B-4 can run, every one of these must be true:
|
|
|
93
93
|
3. At least one **primary DM channel** is set (Slack / Telegram /
|
|
94
94
|
Discord / WhatsApp). The single-use token is delivered there; the
|
|
95
95
|
dashboard never shows the raw token.
|
|
96
|
-
4. The **site is on your B-4 allowlist**.
|
|
97
|
-
via `PATCH /api/browser-automation/sites/:siteKey/b4-config`
|
|
98
|
-
(Approve).
|
|
99
|
-
|
|
96
|
+
4. The **site is on your B-4 allowlist**. You enable each site one at
|
|
97
|
+
a time via `PATCH /api/browser-automation/sites/:siteKey/b4-config`
|
|
98
|
+
(Approve). A site that isn't on the allowlist can't run a B-4 flow,
|
|
99
|
+
even when the master toggle is on.
|
|
100
100
|
5. The **site is signed in** through the B-2.5 per-site sign-in
|
|
101
101
|
flow (`POST /api/browser-automation/sites/:siteKey/connect` →
|
|
102
102
|
sign in by hand in the spawned UI Chromium →
|
|
103
|
-
`POST .../finalize`). The daemon
|
|
104
|
-
|
|
105
|
-
skill.
|
|
103
|
+
`POST .../finalize`). The daemon keeps the profile in a locked-down
|
|
104
|
+
directory that no skill can reach (the absolute-block layer).
|
|
106
105
|
|
|
107
106
|
## Structural Defences (no hardcoded category denylist)
|
|
108
107
|
|
|
@@ -117,8 +116,10 @@ category list:
|
|
|
117
116
|
navigation that resolves to a private (RFC1918), loopback,
|
|
118
117
|
link-local, multicast, cloud-metadata (`169.254.169.254`), or the
|
|
119
118
|
IPv6 equivalents is denied at the egress chokepoint
|
|
120
|
-
(`shouldDenyEgress` in `egress-denylist.ts`). This is the
|
|
121
|
-
defence
|
|
119
|
+
(`shouldDenyEgress` in `egress-denylist.ts`). This is the extra
|
|
120
|
+
layer of defence against SSRF (server-side request forgery, where a
|
|
121
|
+
request is tricked into reaching an internal address) — it cannot be
|
|
122
|
+
turned off.
|
|
122
123
|
2. **Payment-path blocker.** A URL-pattern matcher
|
|
123
124
|
(`payment-path-blocker.ts`) trips at form-submit time on
|
|
124
125
|
payment-handoff paths so the agent can't silently push a
|
|
@@ -14,7 +14,6 @@ summary: |
|
|
|
14
14
|
rate limits gate the flow.
|
|
15
15
|
section: operations
|
|
16
16
|
tags:
|
|
17
|
-
- core
|
|
18
17
|
- notifications
|
|
19
18
|
- operations
|
|
20
19
|
status: stable
|
|
@@ -23,7 +22,7 @@ ask_examples:
|
|
|
23
22
|
- How do I limit how often it notifies me?
|
|
24
23
|
locale: en-US
|
|
25
24
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
25
|
+
updated: 2026-07-01
|
|
27
26
|
keywords:
|
|
28
27
|
- notification
|
|
29
28
|
- notify
|
|
@@ -54,15 +53,16 @@ api_endpoints:
|
|
|
54
53
|
|
|
55
54
|
## In One Sentence
|
|
56
55
|
|
|
57
|
-
Outbound DMs the agent sends through
|
|
58
|
-
by quiet hours and rate limits.
|
|
56
|
+
Outbound DMs the agent sends you through your paired messaging app,
|
|
57
|
+
held back by quiet hours and capped by rate limits.
|
|
59
58
|
|
|
60
59
|
## What It Does
|
|
61
60
|
|
|
62
|
-
- Routines, observations, and approvals
|
|
63
|
-
- Quiet hours hold notifications until the
|
|
64
|
-
|
|
65
|
-
-
|
|
61
|
+
- Routines, observations, and approvals line up notifications to send.
|
|
62
|
+
- Quiet hours (your do-not-disturb window) hold notifications until the
|
|
63
|
+
window ends.
|
|
64
|
+
- Per-hour and per-day rate limits cap how many you get.
|
|
65
|
+
- Batching folds several small alerts of the same event type into a
|
|
66
66
|
single message.
|
|
67
67
|
|
|
68
68
|
## How a Notification Flows
|
|
@@ -74,13 +74,13 @@ by quiet hours and rate limits.
|
|
|
74
74
|
4. It is sent to the operator over `primaryPlatform` (or, when set, the
|
|
75
75
|
exact channels in `defaultNotificationPlatforms`).
|
|
76
76
|
|
|
77
|
-
Explicit agent notifications (`POST /api/notify`)
|
|
78
|
-
with one difference: inside quiet hours they are **deferred,
|
|
79
|
-
dropped** — the full message is queued as a scheduled DM that fires
|
|
80
|
-
when the window ends (visible under Schedule), and repeat sends from
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
Explicit agent notifications (`POST /api/notify`) go through the same
|
|
78
|
+
checks, with one difference: inside quiet hours they are **deferred,
|
|
79
|
+
not dropped** — the full message is queued as a scheduled DM that fires
|
|
80
|
+
when the window ends (visible under Schedule), and repeat sends from the
|
|
81
|
+
same agent overnight merge into one combined DM. Outside quiet hours the
|
|
82
|
+
per-hour / per-day caps apply; a capped call is rejected (`rate_limited`)
|
|
83
|
+
rather than silently queued, so the agent can adapt.
|
|
84
84
|
|
|
85
85
|
### Safety categories always get through
|
|
86
86
|
|
|
@@ -17,7 +17,6 @@ section: operations
|
|
|
17
17
|
tags:
|
|
18
18
|
- operations
|
|
19
19
|
- notifications
|
|
20
|
-
- core
|
|
21
20
|
status: stable
|
|
22
21
|
ask_examples:
|
|
23
22
|
- How do I stop notifications at night?
|
|
@@ -25,7 +24,7 @@ ask_examples:
|
|
|
25
24
|
- Will routines still run during quiet hours?
|
|
26
25
|
locale: en-US
|
|
27
26
|
created: 2026-04-25
|
|
28
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-07-01
|
|
29
28
|
keywords:
|
|
30
29
|
- quiet hours
|
|
31
30
|
- dnd
|
|
@@ -57,14 +56,14 @@ alerts still get through.
|
|
|
57
56
|
|
|
58
57
|
## What It Does
|
|
59
58
|
|
|
60
|
-
Quiet hours only
|
|
59
|
+
Quiet hours only affect *proactive* notifications — the messages the
|
|
60
|
+
agent starts on its own. They do not touch replies you asked for. During
|
|
61
61
|
the window:
|
|
62
62
|
|
|
63
63
|
- **A normal proactive notification is suppressed.** If nothing of the
|
|
64
|
-
same event type was sent recently, the message
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
later.
|
|
64
|
+
same event type was sent recently, the message reaches the send step,
|
|
65
|
+
finds that quiet hours are active, and is logged as `suppressed` — it
|
|
66
|
+
is **dropped, not held**. You will not receive it later.
|
|
68
67
|
- **An explicit agent notification (`POST /api/notify`) is deferred,
|
|
69
68
|
not dropped.** When an agent session calls the notify endpoint inside
|
|
70
69
|
the window, the full message is queued as a scheduled DM that fires
|
|
@@ -76,11 +75,11 @@ the window:
|
|
|
76
75
|
end (or released immediately when the new window no longer covers
|
|
77
76
|
the current time).
|
|
78
77
|
- **A notification already in a batch queue is deferred, not dropped.**
|
|
79
|
-
Aitne
|
|
80
|
-
|
|
81
|
-
active,
|
|
82
|
-
so
|
|
83
|
-
suppressed.
|
|
78
|
+
Aitne groups repeat notifications into batches (see
|
|
79
|
+
[Notifications](notifications.md) for how batching works). When a batch
|
|
80
|
+
is pending and quiet hours are active, its flush is pushed to the
|
|
81
|
+
wall-clock moment the window ends, so the combined message arrives when
|
|
82
|
+
you wake instead of being suppressed.
|
|
84
83
|
- **Reactive DMs still respond.** A direct reply to your message
|
|
85
84
|
bypasses quiet hours, rate limits, and batching entirely.
|
|
86
85
|
- **Safety-category alerts still wake you.** Notifications tagged
|
|
@@ -111,9 +110,9 @@ the window:
|
|
|
111
110
|
|
|
112
111
|
Continuously. Every proactive notification checks `quietHoursStart` and
|
|
113
112
|
`quietHoursEnd` against the current local time (in the configured
|
|
114
|
-
timezone) before sending. The window may
|
|
115
|
-
`22:00` → `08:00` is an overnight
|
|
116
|
-
(e.g. `00:00` / `00:00`)
|
|
113
|
+
timezone) before sending. The window may cross midnight — the default
|
|
114
|
+
`22:00` → `08:00` is an overnight window. Setting start equal to end
|
|
115
|
+
(e.g. `00:00` / `00:00`) turns quiet hours off.
|
|
117
116
|
|
|
118
117
|
## Where in the Dashboard
|
|
119
118
|
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- Why didn't I get a reminder before my meeting?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-07-01
|
|
30
30
|
keywords:
|
|
31
31
|
- schedule approaching
|
|
32
32
|
- pre-event reminder
|
|
@@ -49,16 +49,17 @@ Pre-event reminders fire 15 minutes before each calendar event.
|
|
|
49
49
|
|
|
50
50
|
## What It Does
|
|
51
51
|
|
|
52
|
-
- Watches upcoming calendar events and
|
|
52
|
+
- Watches upcoming calendar events and sends a notification ~15
|
|
53
53
|
minutes before each one. The lead time is fixed in
|
|
54
|
-
`imminent-event-scheduler.ts` (
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
`medium` tier.
|
|
58
|
-
-
|
|
59
|
-
the provider's stable
|
|
60
|
-
|
|
61
|
-
pruned after 24
|
|
54
|
+
`imminent-event-scheduler.ts` (there is no config key for it today).
|
|
55
|
+
- When an event is `≤ 15 minutes` away, it emits one
|
|
56
|
+
`schedule.approaching` event per item on the EventBus (the daemon's
|
|
57
|
+
internal message bus). That event is handled at the `medium` tier.
|
|
58
|
+
- To avoid duplicate reminders, it records each fired event in the
|
|
59
|
+
`imminent_event_notifications` table, keyed on the provider's stable
|
|
60
|
+
event id. The same event never fires twice across reschedules,
|
|
61
|
+
restarts, or repeated poll cycles, and rows are pruned after 24
|
|
62
|
+
hours.
|
|
62
63
|
|
|
63
64
|
## How It Is Triggered
|
|
64
65
|
|
|
@@ -71,10 +72,11 @@ integration mode:
|
|
|
71
72
|
direct mode and the delegated-sync worker in delegated mode).
|
|
72
73
|
- **`native` mode** — the daemon does not poll, so it reads
|
|
73
74
|
`observations` rows instead. These are posted by the agent's
|
|
74
|
-
native-mode `routine.fetch_window` pre-pass
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
native-mode `routine.fetch_window` pre-pass (the pre-run scan that
|
|
76
|
+
gathers fresh context). Because that pre-pass only refreshes on the
|
|
77
|
+
activity-scan tick (~60-minute cadence), an event scheduled with
|
|
78
|
+
less than ~60 minutes of lead time can miss its reminder. Direct
|
|
79
|
+
mode, which polls every 5 minutes, does not have this limit.
|
|
78
80
|
|
|
79
81
|
Cross-source dedup is automatic: snapshot and observation rows for the
|
|
80
82
|
same event share the provider's event id, so they collapse into one
|
|
@@ -20,7 +20,6 @@ tags:
|
|
|
20
20
|
- autonomous
|
|
21
21
|
- observations
|
|
22
22
|
- polling
|
|
23
|
-
- activity-scan
|
|
24
23
|
status: stable
|
|
25
24
|
ui_anchors:
|
|
26
25
|
- /agents/activity-scan
|
|
@@ -34,7 +33,7 @@ ask_examples:
|
|
|
34
33
|
- How do I tune the gate's freshness window?
|
|
35
34
|
locale: en-US
|
|
36
35
|
created: 2026-04-25
|
|
37
|
-
updated: 2026-
|
|
36
|
+
updated: 2026-07-01
|
|
38
37
|
keywords:
|
|
39
38
|
- hourly
|
|
40
39
|
- observations
|
|
@@ -70,11 +69,13 @@ config_keys:
|
|
|
70
69
|
|
|
71
70
|
# Activity Scan
|
|
72
71
|
|
|
73
|
-
A medium-tier routine that
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
A medium-tier routine that runs every interval during your active
|
|
73
|
+
hours (the daily window when the agent is allowed to work). Each run
|
|
74
|
+
empties the pending observations queue and decides whether the changes
|
|
75
|
+
that piled up are worth notifying you about or just worth logging to
|
|
76
|
+
`state/today.md`. That "decide" step is a four-layer gate, built to
|
|
77
|
+
keep quiet days quiet without missing the moment something actually
|
|
78
|
+
matters.
|
|
78
79
|
|
|
79
80
|
## When It Runs
|
|
80
81
|
|
|
@@ -89,7 +90,8 @@ The legacy `activityScan*` config keys are deprecated fallbacks (see
|
|
|
89
90
|
(recoverable — the dispatcher enqueues a `queueMorningRoutineWake`
|
|
90
91
|
self-recovery and the activity scan resumes after the morning
|
|
91
92
|
routine succeeds).
|
|
92
|
-
- **Skips** when another activity scan is
|
|
93
|
+
- **Skips** when another activity scan is already running (an atomic
|
|
94
|
+
in-flight flag stops two runs from overlapping).
|
|
93
95
|
- **Skips** when accumulated signal is below the agent's **min
|
|
94
96
|
observations** threshold and the heartbeat window
|
|
95
97
|
(`activityScanHeartbeatHours`) hasn't elapsed.
|
|
@@ -119,9 +121,10 @@ Telemetry: `agent_actions.detail.harvest_ran` /
|
|
|
119
121
|
|
|
120
122
|
### Layer 2 — Signal compute
|
|
121
123
|
|
|
122
|
-
`computeActivityScanSignals` reads the observation table mode-blind
|
|
123
|
-
it
|
|
124
|
-
`INTEGRATION_DESCRIPTORS`, never by
|
|
124
|
+
`computeActivityScanSignals` reads the observation table mode-blind
|
|
125
|
+
(it does not care which integration mode wrote a row) — it filters by
|
|
126
|
+
source-prefix sets derived from `INTEGRATION_DESCRIPTORS`, never by
|
|
127
|
+
`actor`. Signal categories
|
|
125
128
|
include unread-mail / event-change / repo-change / browser-history
|
|
126
129
|
clusters; each category produces a (count, last-seen, summary)
|
|
127
130
|
tuple. The pre-pass freshness gate from Layer 1 is what guarantees
|
|
@@ -22,7 +22,6 @@ tags:
|
|
|
22
22
|
- agents
|
|
23
23
|
- autonomous
|
|
24
24
|
- scheduler
|
|
25
|
-
- advanced
|
|
26
25
|
status: deprecated
|
|
27
26
|
ask_examples:
|
|
28
27
|
- What happened to my custom routines?
|
|
@@ -31,7 +30,7 @@ ask_examples:
|
|
|
31
30
|
- How do I create a recurring task now?
|
|
32
31
|
locale: en-US
|
|
33
32
|
created: 2026-04-25
|
|
34
|
-
updated: 2026-
|
|
33
|
+
updated: 2026-07-01
|
|
35
34
|
keywords:
|
|
36
35
|
- custom routine
|
|
37
36
|
- routine.custom.<slug>
|
|
@@ -73,19 +72,21 @@ once, at the first daemon start after the upgrade.
|
|
|
73
72
|
- Recurring work you define is now an **Agent**: a
|
|
74
73
|
`policies/agents/<slug>/agent.md` file that appears on the
|
|
75
74
|
**Agents** page (`/agents`) with its schedule, an enable toggle, run
|
|
76
|
-
metrics, execution history, and a **Run now** button —
|
|
75
|
+
metrics, execution history, and a **Run now** button — features
|
|
77
76
|
custom routines never had. See
|
|
78
77
|
[Create a Recurring Agent](../../guides/add-a-custom-routine.md).
|
|
79
78
|
|
|
80
79
|
## The One-Time Migration
|
|
81
80
|
|
|
82
|
-
|
|
83
|
-
by a
|
|
81
|
+
The first time the daemon (Aitne's background service) starts after
|
|
82
|
+
the upgrade — and only that once, guarded by a saved flag so it can
|
|
83
|
+
never run twice — every file under `policies/routines/custom/` is
|
|
84
84
|
examined:
|
|
85
85
|
|
|
86
86
|
- A **valid routine becomes a user Agent** at
|
|
87
87
|
`policies/agents/<slug>/agent.md` carrying over:
|
|
88
|
-
- the same **cron expression** (pinned to your
|
|
88
|
+
- the same **cron expression** (the schedule rule, pinned to your
|
|
89
|
+
configured timezone),
|
|
89
90
|
- the same **model tier** (`backend_tier` → the Agent's tier),
|
|
90
91
|
- the same **per-run budget** (`max_budget_usd`),
|
|
91
92
|
- the same **enabled state** — a disabled routine migrates disabled.
|
|
@@ -95,7 +96,8 @@ examined:
|
|
|
95
96
|
it came from (`Migrated from custom routine "<slug>".`).
|
|
96
97
|
- The **source file is never deleted.** It is rewritten in place with
|
|
97
98
|
`enabled: false` and a `migrated_to_agent: <slug>` marker in its
|
|
98
|
-
frontmatter, so it
|
|
99
|
+
frontmatter, so you can plainly see it no longer runs while your
|
|
100
|
+
original content is preserved.
|
|
99
101
|
|
|
100
102
|
### Collisions and invalid files
|
|
101
103
|
|
|
@@ -17,8 +17,6 @@ section: routines
|
|
|
17
17
|
tags:
|
|
18
18
|
- routines
|
|
19
19
|
- autonomous
|
|
20
|
-
- daily
|
|
21
|
-
- core
|
|
22
20
|
status: stable
|
|
23
21
|
ask_examples:
|
|
24
22
|
- When does the evening review run?
|
|
@@ -27,7 +25,7 @@ ask_examples:
|
|
|
27
25
|
- How do I disable the evening review?
|
|
28
26
|
locale: en-US
|
|
29
27
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
28
|
+
updated: 2026-07-01
|
|
31
29
|
keywords:
|
|
32
30
|
- evening review
|
|
33
31
|
- retro
|
|
@@ -89,10 +87,11 @@ rather than producing a chatty end-of-day report.
|
|
|
89
87
|
|
|
90
88
|
## When It Runs / How It Is Triggered
|
|
91
89
|
|
|
92
|
-
Every day at **18:00 local time**, exactly once. The cron
|
|
93
|
-
(`0 18 * *
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
Every day at **18:00 local time**, exactly once. The schedule — a cron
|
|
91
|
+
expression (`0 18 * * *`, the standard five-field way to write "18:00 every
|
|
92
|
+
day") — is fixed in `packages/daemon/src/core/scheduler.ts`, so you can't
|
|
93
|
+
change the fire time. Like every autonomous routine, the run is skipped
|
|
94
|
+
while the agent is paused (`!stop`) or setup is not finished.
|
|
96
95
|
|
|
97
96
|
## What It Outputs
|
|
98
97
|
|
|
@@ -16,8 +16,7 @@ section: routines
|
|
|
16
16
|
tags:
|
|
17
17
|
- routines
|
|
18
18
|
- autonomous
|
|
19
|
-
-
|
|
20
|
-
- core
|
|
19
|
+
- scheduler
|
|
21
20
|
status: stable
|
|
22
21
|
ask_examples:
|
|
23
22
|
- When does morning routine run?
|
|
@@ -26,7 +25,7 @@ ask_examples:
|
|
|
26
25
|
- What model does morning routine use?
|
|
27
26
|
locale: en-US
|
|
28
27
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
28
|
+
updated: 2026-07-01
|
|
30
29
|
keywords:
|
|
31
30
|
- morning
|
|
32
31
|
- day plan
|
|
@@ -63,9 +62,10 @@ context_files:
|
|
|
63
62
|
|
|
64
63
|
## In One Sentence
|
|
65
64
|
|
|
66
|
-
Once per agent day
|
|
67
|
-
rebuilds `state/today.md`
|
|
68
|
-
roadmap, and recent
|
|
65
|
+
Once per agent day (the daily window that starts when "today" rolls
|
|
66
|
+
over), at `dayBoundaryHour` local time, Aitne rebuilds `state/today.md`
|
|
67
|
+
and the day's schedule from your calendar, mail, roadmap, and recent
|
|
68
|
+
observations.
|
|
69
69
|
|
|
70
70
|
## What It Does
|
|
71
71
|
|
|
@@ -74,16 +74,17 @@ It runs as a **two-stage pipeline**, with both stages dispatched in
|
|
|
74
74
|
parallel:
|
|
75
75
|
|
|
76
76
|
- **Stage A** (`routine.morning_routine_today`, medium tier) rebuilds
|
|
77
|
-
`state/today.md`, walks the roadmap, fans out the day's schedule
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
`state/today.md`, walks the roadmap, fans out the day's schedule (queues
|
|
78
|
+
each of today's scheduled tasks), and reports structured metadata about
|
|
79
|
+
the run.
|
|
80
|
+
- **Stage B** (`routine.morning_routine_journal`, lite tier) writes
|
|
80
81
|
yesterday's daily journal at `journal/daily/<yesterday>.md` from a
|
|
81
|
-
daemon-prepared skeleton, then
|
|
82
|
-
|
|
82
|
+
daemon-prepared skeleton, then appends the run's audit-trail paragraph
|
|
83
|
+
to `journal/agent.md`.
|
|
83
84
|
|
|
84
|
-
Every
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
Every routine that runs over the next 24 hours reads Stage A's output, so
|
|
86
|
+
a bad morning briefing drags down the whole day. That is why Stage A stays
|
|
87
|
+
capped at the medium tier even after the split.
|
|
87
88
|
|
|
88
89
|
Within Stage A, the work proceeds in this order:
|
|
89
90
|
|
|
@@ -103,12 +104,12 @@ so a post-midnight install does not run two morning routines back-to-back.
|
|
|
103
104
|
There is no separate `morningRoutineHour` — the morning routine and the
|
|
104
105
|
agent-day rollover are the same instant.
|
|
105
106
|
|
|
106
|
-
There is no separate "initial" process key.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
Annual Goals / Quarterly Focus / Preparation Timeline facts
|
|
110
|
-
can
|
|
111
|
-
paying for a one-shot high-tier session. (The dedicated
|
|
107
|
+
There is no separate "initial" process key. Stage A detects the first
|
|
108
|
+
morning after setup on its own, from the missing `state/yesterday.md` file.
|
|
109
|
+
The daemon then injects a `<roadmap_skeleton>` block carrying the
|
|
110
|
+
pre-aggregated Annual Goals / Quarterly Focus / Preparation Timeline facts,
|
|
111
|
+
so Stage A can fill in the wizard's placeholder roadmap on the medium tier
|
|
112
|
+
instead of paying for a one-shot high-tier session. (The dedicated
|
|
112
113
|
`routine.morning_routine_initial` process key — along with its high-tier
|
|
113
114
|
seed — was retired in Phase 7, 2026-05-16; the first-run branch now flows
|
|
114
115
|
through the parent `routine.morning_routine` envelope.)
|
|
@@ -135,7 +136,7 @@ through the parent `routine.morning_routine` envelope.)
|
|
|
135
136
|
| `dayBoundaryHour` | `4` | Both the agent-day boundary and the morning-routine fire time. See [Agent Day](../../concepts/agent-day.md). |
|
|
136
137
|
| Stage A tier (`routine.morning_routine_today`) | medium (Sonnet 5) | Synthesises `state/today.md` + the day's roadmap fan-out. Adjustable per-row in Settings → Models. |
|
|
137
138
|
| Stage B tier (`routine.morning_routine_journal`) | lite (Haiku 4.5) | Authors `journal/daily/<date>.md` and the `journal/agent.md` audit paragraph. |
|
|
138
|
-
| Stage A max turns / budget | 50 turns / $
|
|
139
|
+
| Stage A max turns / budget | 50 turns / $2.00 | Per-execute envelope for `routine.morning_routine_today`. Adjustable in Settings → Models. |
|
|
139
140
|
| Stage B max turns / budget | 20 turns / $0.30 | Per-execute envelope for `routine.morning_routine_journal`. |
|
|
140
141
|
|
|
141
142
|
The parent `routine.morning_routine` key keeps its own envelope (50 turns / $2.00) for the pipeline entry point. Codex and Gemini backends scale the dollar caps by a per-tier factor (lite ×2.5, medium ×1.5); the router enforces the cap before token costs accumulate.
|