@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
|
@@ -29,7 +29,7 @@ ask_examples:
|
|
|
29
29
|
- Can I send the agent a voice note?
|
|
30
30
|
locale: en-US
|
|
31
31
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-06-07
|
|
33
33
|
keywords:
|
|
34
34
|
- messaging
|
|
35
35
|
- dm
|
|
@@ -53,9 +53,8 @@ related:
|
|
|
53
53
|
ui_anchors:
|
|
54
54
|
- /connections
|
|
55
55
|
- /connections/messaging
|
|
56
|
-
- /settings/connections
|
|
57
56
|
- /settings/commands
|
|
58
|
-
- /settings/
|
|
57
|
+
- /settings/hours
|
|
59
58
|
process_keys:
|
|
60
59
|
- message.dm
|
|
61
60
|
- message.mention
|
|
@@ -75,10 +74,10 @@ so you can talk to the agent the same way you'd type.
|
|
|
75
74
|
## What It Does
|
|
76
75
|
|
|
77
76
|
- **Reactive DMs**: the agent answers every direct message you send.
|
|
78
|
-
- **@-mentions (Slack
|
|
79
|
-
channel routes to the `message.mention` ProcessKey and is
|
|
80
|
-
the same way as a DM. Telegram
|
|
81
|
-
|
|
77
|
+
- **@-mentions (Slack and Discord)**: @-mentioning the agent inside a
|
|
78
|
+
shared channel routes to the `message.mention` ProcessKey and is
|
|
79
|
+
answered the same way as a DM. Telegram and WhatsApp drop all non-DM
|
|
80
|
+
traffic (no group support).
|
|
82
81
|
- **Outbound notifications**: routines and observations fire alerts
|
|
83
82
|
back through the same channel.
|
|
84
83
|
- **Voice attachments**: when the platform attaches audio (Telegram
|
|
@@ -101,8 +100,9 @@ the owner channel independently.
|
|
|
101
100
|
|
|
102
101
|
## When It Runs / How It Is Triggered
|
|
103
102
|
|
|
104
|
-
- The messaging adapter for each connected platform polls
|
|
105
|
-
|
|
103
|
+
- The messaging adapter for each connected platform long-polls
|
|
104
|
+
(Telegram) or holds a persistent WebSocket connection (Slack,
|
|
105
|
+
Discord, WhatsApp) for incoming messages.
|
|
106
106
|
- An incoming DM dispatches to the `message.dm` ProcessKey.
|
|
107
107
|
- An incoming mention dispatches to `message.mention`.
|
|
108
108
|
- Notifications fire as a side-effect of routines and observations
|
|
@@ -111,21 +111,24 @@ the owner channel independently.
|
|
|
111
111
|
## What It Outputs
|
|
112
112
|
|
|
113
113
|
- Replies in the operator's chosen messaging app.
|
|
114
|
-
- Notification messages
|
|
114
|
+
- Notification messages — suppressed during quiet hours; a pending
|
|
115
|
+
batch is deferred and delivered when the window ends (see
|
|
116
|
+
[Quiet Hours](../operations/quiet-hours.md)).
|
|
115
117
|
|
|
116
118
|
## Where in the Dashboard
|
|
117
119
|
|
|
118
120
|
- **Connections (`/connections`)** is the unified pairing page.
|
|
119
121
|
- **Connections → Messaging (`/connections/messaging`)** lists each
|
|
120
|
-
app's status, owner
|
|
122
|
+
app's status, owner pairing, and notification destinations.
|
|
121
123
|
|
|
122
124
|
## Configuration
|
|
123
125
|
|
|
124
126
|
- Per-app: bot token / OAuth, owner channel, optional default channel.
|
|
125
127
|
- Global: `primaryPlatform` (default `slack`) — the platform the agent
|
|
126
128
|
prefers for outbound notifications when more than one app is paired.
|
|
127
|
-
- Outbound rate limits and quiet hours live on `/settings/
|
|
128
|
-
(
|
|
129
|
+
- Outbound rate limits and quiet hours live on `/settings/hours`
|
|
130
|
+
("Hours & Notifications" — see
|
|
131
|
+
[Quiet Hours](../operations/quiet-hours.md)).
|
|
129
132
|
|
|
130
133
|
## When Something Goes Wrong
|
|
131
134
|
|
|
@@ -133,7 +136,7 @@ the owner channel independently.
|
|
|
133
136
|
`/connections/messaging` first (see
|
|
134
137
|
[Pairing & Magic Phrase](pairing-and-magic-phrase.md)).
|
|
135
138
|
- A **notification you expected but did not get**: check quiet hours
|
|
136
|
-
and rate limits on `/settings/
|
|
139
|
+
and rate limits on `/settings/hours`.
|
|
137
140
|
|
|
138
141
|
## Related
|
|
139
142
|
|
|
@@ -8,7 +8,7 @@ aliases:
|
|
|
8
8
|
category: features
|
|
9
9
|
summary: |
|
|
10
10
|
Pair Telegram by creating a bot via @BotFather, pasting the token
|
|
11
|
-
into Aitne, and
|
|
11
|
+
into Aitne, and scanning the pairing QR code.
|
|
12
12
|
section: messaging
|
|
13
13
|
tags:
|
|
14
14
|
- messaging
|
|
@@ -24,7 +24,7 @@ ask_examples:
|
|
|
24
24
|
- Where do I get a Telegram bot token?
|
|
25
25
|
locale: en-US
|
|
26
26
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-06-07
|
|
28
28
|
keywords:
|
|
29
29
|
- telegram
|
|
30
30
|
- telegram bot
|
|
@@ -41,7 +41,7 @@ related:
|
|
|
41
41
|
## In One Sentence
|
|
42
42
|
|
|
43
43
|
The fastest messaging app to pair: create a Telegram bot, paste the
|
|
44
|
-
token,
|
|
44
|
+
token, scan the pairing QR code.
|
|
45
45
|
|
|
46
46
|
## What It Does
|
|
47
47
|
|
|
@@ -51,7 +51,7 @@ token, type the magic phrase.
|
|
|
51
51
|
## When It Runs / How It Is Triggered
|
|
52
52
|
|
|
53
53
|
Before pairing, nothing listens. Once you paste the bot token and complete
|
|
54
|
-
|
|
54
|
+
QR / deep-link pairing, Aitne long-polls Telegram's Bot API continuously for new
|
|
55
55
|
direct messages.
|
|
56
56
|
|
|
57
57
|
## Where in the Dashboard
|
|
@@ -63,17 +63,18 @@ direct messages.
|
|
|
63
63
|
| Field | Notes |
|
|
64
64
|
|---|---|
|
|
65
65
|
| Bot Token | From @BotFather. |
|
|
66
|
-
| Owner Channel | Auto-set on successful
|
|
66
|
+
| Owner Channel | Auto-set on successful QR / deep-link pairing. |
|
|
67
67
|
|
|
68
68
|
## When Something Goes Wrong
|
|
69
69
|
|
|
70
70
|
- Bot replied to in a group instead of a DM: group chats are filtered
|
|
71
71
|
out by design; the agent only listens to direct messages.
|
|
72
|
-
- No reply at all after
|
|
73
|
-
set via @BotFather (/setname) — the daemon refuses to build the
|
|
74
|
-
link otherwise.
|
|
72
|
+
- No reply at all after scanning the QR: confirm the bot has a username
|
|
73
|
+
set via @BotFather (/setname or /newbot) — the daemon refuses to build the
|
|
74
|
+
pairing deep link otherwise.
|
|
75
75
|
- Pairing never completes: re-check the token in Connections → Messaging →
|
|
76
|
-
Telegram, then
|
|
76
|
+
Telegram, generate a fresh QR, then scan it (or tap the deep link) and press
|
|
77
|
+
START in Telegram from your own account. See
|
|
77
78
|
[Pairing & Magic Phrase](pairing-and-magic-phrase.md).
|
|
78
79
|
|
|
79
80
|
## Related
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- How do I find why a routine failed?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-06-07
|
|
30
30
|
keywords:
|
|
31
31
|
- activity
|
|
32
32
|
- conversations
|
|
@@ -61,7 +61,7 @@ detail lives one click deeper under Conversations.
|
|
|
61
61
|
|
|
62
62
|
Activity is the unified view of:
|
|
63
63
|
|
|
64
|
-
- **Routines**: morning, evening, weekly,
|
|
64
|
+
- **Routines**: morning, evening, weekly, activity-scan fires.
|
|
65
65
|
- **Reactive sessions**: DMs, dashboard chat, mentions.
|
|
66
66
|
- **Background actions**: notifications sent, mail labeled, schedule
|
|
67
67
|
files written.
|
|
@@ -104,9 +104,10 @@ Retention is unlimited locally — the SQLite database keeps every row
|
|
|
104
104
|
forever. To prune history without losing your configuration, use
|
|
105
105
|
`POST /api/system/purge-history` (it clears `agent_actions`,
|
|
106
106
|
`conversation_sessions`, and `messages` but leaves settings and the
|
|
107
|
-
context vault intact). To wipe everything, `aitne uninstall
|
|
108
|
-
|
|
109
|
-
confirmation
|
|
107
|
+
context vault intact). To wipe everything, `aitne uninstall` removes the
|
|
108
|
+
whole `~/.personal-agent` data directory after a literal `WIPE`
|
|
109
|
+
confirmation (pass `--wipe-data` to skip the prompt and wipe
|
|
110
|
+
non-interactively, or `--keep-data` to leave the directory intact).
|
|
110
111
|
|
|
111
112
|
## When Something Goes Wrong
|
|
112
113
|
|
|
@@ -24,7 +24,7 @@ ask_examples:
|
|
|
24
24
|
- Where do I approve a pending action?
|
|
25
25
|
locale: en-US
|
|
26
26
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-06-07
|
|
28
28
|
keywords:
|
|
29
29
|
- approval
|
|
30
30
|
- approve tier
|
|
@@ -83,10 +83,11 @@ Deny asks for confirmation before discarding the item.
|
|
|
83
83
|
|
|
84
84
|
## When Something Goes Wrong
|
|
85
85
|
|
|
86
|
-
- **
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
- **A stale approval you never answered:** a pending approval is
|
|
87
|
+
discarded once the agent day rolls over (the next 04:00 local
|
|
88
|
+
boundary) — it's marked skipped rather than replayed after the
|
|
89
|
+
day turns. If that happens, redo the request that triggered it
|
|
90
|
+
(for example, re-send the DM or re-run the routine).
|
|
90
91
|
|
|
91
92
|
## Related
|
|
92
93
|
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
slug: features/operations/browser-tasks
|
|
4
|
+
title: Browser Tasks
|
|
5
|
+
id: browser-tasks
|
|
6
|
+
aliases:
|
|
7
|
+
- browser tasks
|
|
8
|
+
- browser task
|
|
9
|
+
- web task
|
|
10
|
+
- browser automation tasks
|
|
11
|
+
- sandboxed browser
|
|
12
|
+
category: features
|
|
13
|
+
summary: |
|
|
14
|
+
Open-ended browser actions the agent runs for you in a sandboxed,
|
|
15
|
+
one-tab-per-task sub-agent — "send a contact form on Amazon", "check
|
|
16
|
+
the price of X". You kick a task off in DM (or schedule one); the
|
|
17
|
+
agent DMs you back for clarification or a final confirm when it needs
|
|
18
|
+
your input. The Browser Tasks page is where every run shows up, with
|
|
19
|
+
live state, a screenshot trace, and a cancel button.
|
|
20
|
+
section: operations
|
|
21
|
+
tags:
|
|
22
|
+
- operations
|
|
23
|
+
- browser-automation
|
|
24
|
+
- safety
|
|
25
|
+
status: beta
|
|
26
|
+
ask_examples:
|
|
27
|
+
- What is the Browser Tasks page?
|
|
28
|
+
- How do I start a browser task?
|
|
29
|
+
- Why is my browser task waiting for me?
|
|
30
|
+
- What do the browser-task states mean?
|
|
31
|
+
- How do I cancel a running browser task?
|
|
32
|
+
- Where do I see the screenshots from a browser task?
|
|
33
|
+
locale: en-US
|
|
34
|
+
created: 2026-06-16
|
|
35
|
+
updated: 2026-06-16
|
|
36
|
+
keywords:
|
|
37
|
+
- browser tasks
|
|
38
|
+
- browser-task
|
|
39
|
+
- sandboxed sub-agent
|
|
40
|
+
- awaiting_user
|
|
41
|
+
- final_confirm
|
|
42
|
+
- screenshot trace
|
|
43
|
+
- allowlist
|
|
44
|
+
- payment-path block
|
|
45
|
+
- cancel task
|
|
46
|
+
related:
|
|
47
|
+
- features/operations/managed-chromium
|
|
48
|
+
- features/integrations/browser-history
|
|
49
|
+
- concepts/safety-and-execution
|
|
50
|
+
- concepts/safety-model
|
|
51
|
+
ui_anchors:
|
|
52
|
+
- /browser-tasks
|
|
53
|
+
- /browser
|
|
54
|
+
process_keys:
|
|
55
|
+
- browser_task
|
|
56
|
+
config_keys:
|
|
57
|
+
- browserTaskMaxConcurrent
|
|
58
|
+
- browserTaskPendingQueueTimeoutMinutes
|
|
59
|
+
- browserTaskRespectQuietHours
|
|
60
|
+
- browserTaskHostnameDenylist
|
|
61
|
+
api_endpoints:
|
|
62
|
+
- POST /api/browser-task
|
|
63
|
+
- GET /api/browser-task
|
|
64
|
+
- GET /api/browser-task/:id
|
|
65
|
+
- GET /api/browser-task/:id/events
|
|
66
|
+
- GET /api/browser-task/:id/screenshots/:file
|
|
67
|
+
- POST /api/browser-task/:id/clarify
|
|
68
|
+
- POST /api/browser-task/:id/cancel
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
# Browser Tasks
|
|
72
|
+
|
|
73
|
+
A **browser task** is an open-ended action you ask the agent to carry
|
|
74
|
+
out on the web — "send a contact form on Amazon's contact-us page",
|
|
75
|
+
"check the price of X", "fill in this signup". Each task runs in a
|
|
76
|
+
sandboxed sub-agent with **one browser tab to itself**, under allowlist
|
|
77
|
+
enforcement, a payment-path block, and a screenshot trace. The
|
|
78
|
+
**Browser Tasks** page (`/browser-tasks`) is the operational surface
|
|
79
|
+
where every run shows up — what is queued, running, waiting on you, or
|
|
80
|
+
finished.
|
|
81
|
+
|
|
82
|
+
This is different from two neighbouring surfaces:
|
|
83
|
+
|
|
84
|
+
- **[Browser History](browser-history)** reads your *existing* Chrome
|
|
85
|
+
passively (research clusters, revisit nudges). It never drives a
|
|
86
|
+
browser.
|
|
87
|
+
- **[Managed Chromium / B-4](managed-chromium)** is the heavily-gated,
|
|
88
|
+
default-off *purchase-confirmation* flow. Browser tasks are the
|
|
89
|
+
general-purpose, non-purchasing actions; a final purchase confirm is
|
|
90
|
+
the one thing they hand off to the B-4 token primitive.
|
|
91
|
+
|
|
92
|
+
## Starting a Task
|
|
93
|
+
|
|
94
|
+
You don't start a task from this page — you ask in **DM** or `/chat`:
|
|
95
|
+
|
|
96
|
+
> "Send a contact form on Amazon's contact-us page saying my order
|
|
97
|
+
> #123 never arrived."
|
|
98
|
+
|
|
99
|
+
The agent creates the task (`POST /api/browser-task`), opens a tab, and
|
|
100
|
+
works the goal step by step. You can also **schedule** one to run later
|
|
101
|
+
(it appears here when it fires). The page itself is a read + monitor
|
|
102
|
+
surface: filter, search, open a run, or cancel it.
|
|
103
|
+
|
|
104
|
+
## Reading the Page
|
|
105
|
+
|
|
106
|
+
- **Tasks awaiting you** — a strip pinned to the top that only appears
|
|
107
|
+
when one or more tasks are blocked on your input. It links straight
|
|
108
|
+
to the run that needs you. The same signal drives the nav red-dot and
|
|
109
|
+
the persistent shell banner, so they stay in lock-step.
|
|
110
|
+
- **Filter chips** — narrow by state (`All`, `Active`, or a specific
|
|
111
|
+
state) and by **site**. `Active` means any non-terminal task.
|
|
112
|
+
- **Search** — free-text match over the task description.
|
|
113
|
+
- **Table** — one row per task: state, description (click to open the
|
|
114
|
+
run), site, originating channel, created time, and duration. Active
|
|
115
|
+
rows expose a **Cancel** button.
|
|
116
|
+
|
|
117
|
+
Click any row to open the **run detail** (`/browser-tasks/:id`): the
|
|
118
|
+
step-by-step event log and the **screenshot trace** the sub-agent
|
|
119
|
+
captured along the way.
|
|
120
|
+
|
|
121
|
+
## Task States
|
|
122
|
+
|
|
123
|
+
A task moves through a small state machine. Non-terminal states are
|
|
124
|
+
still in flight; terminal states are done.
|
|
125
|
+
|
|
126
|
+
| State | Meaning |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `pending` | Queued, not started yet. The duration cell shows queue wait and, when known, the site / global queue position. |
|
|
129
|
+
| `running` | The sub-agent is actively driving the tab. |
|
|
130
|
+
| `awaiting_user` | Paused — the agent DMed you a **clarifying question** and is waiting for your answer (`POST /api/browser-task/:id/clarify`). |
|
|
131
|
+
| `final_confirm` | Paused at a **final confirmation** gate (e.g. a submit/checkout step) waiting for your explicit go-ahead. |
|
|
132
|
+
| `completed` | Finished successfully. |
|
|
133
|
+
| `failed` | Stopped on an error; the row shows a short outcome detail. |
|
|
134
|
+
| `cancelled` | You (or the agent) cancelled it. |
|
|
135
|
+
| `timeout` | Exceeded its time budget. |
|
|
136
|
+
| `abandoned` | A pending task expired in the queue before it could start (see `browserTaskPendingQueueTimeoutMinutes`). |
|
|
137
|
+
|
|
138
|
+
When a task is `awaiting_user` or `final_confirm`, **answer in the DM
|
|
139
|
+
the agent sent you** — that is the loop that unblocks it. The dashboard
|
|
140
|
+
strip and banner are just where you notice it.
|
|
141
|
+
|
|
142
|
+
## Cancelling
|
|
143
|
+
|
|
144
|
+
Active tasks have a **Cancel** button (and `POST
|
|
145
|
+
/api/browser-task/:id/cancel`). Cancelling releases the browser context
|
|
146
|
+
immediately and DMs you a confirmation. Terminal tasks can't be
|
|
147
|
+
cancelled — there is nothing left to stop.
|
|
148
|
+
|
|
149
|
+
## Safety Model (why it's safe to let it drive)
|
|
150
|
+
|
|
151
|
+
Browser tasks inherit the project's structural browser defences — there
|
|
152
|
+
is **no hardcoded category/brand denylist**:
|
|
153
|
+
|
|
154
|
+
1. **One sandboxed tab per task.** Tasks don't share a browser context,
|
|
155
|
+
so one task can't read another's session.
|
|
156
|
+
2. **Allowlist enforcement + hostname denylist.** Navigation is
|
|
157
|
+
constrained; you manage blocked hostnames via
|
|
158
|
+
`browserTaskHostnameDenylist`.
|
|
159
|
+
3. **IP egress layer (not configurable).** Navigations that resolve to
|
|
160
|
+
private, loopback, link-local, or cloud-metadata addresses are
|
|
161
|
+
denied at the egress chokepoint — defence-in-depth against SSRF.
|
|
162
|
+
4. **Payment-path block.** A URL-pattern matcher trips at form-submit
|
|
163
|
+
time on payment-handoff paths, so a task can't silently push a
|
|
164
|
+
transaction through. An actual purchase requires the separate,
|
|
165
|
+
default-off [B-4 token flow](managed-chromium).
|
|
166
|
+
5. **Human-in-the-loop gates.** Anything ambiguous or consequential
|
|
167
|
+
surfaces as `awaiting_user` / `final_confirm` and waits for your DM.
|
|
168
|
+
|
|
169
|
+
See **[Safety and Execution](../../concepts/safety-and-execution)** and
|
|
170
|
+
the **[Safety Model](../../concepts/safety-model)** for the full
|
|
171
|
+
picture.
|
|
172
|
+
|
|
173
|
+
## Configuration
|
|
174
|
+
|
|
175
|
+
These keys live in the editable config (Settings → Infrastructure):
|
|
176
|
+
|
|
177
|
+
- `browserTaskMaxConcurrent` — how many tasks may run at once; the rest
|
|
178
|
+
queue (`pending`).
|
|
179
|
+
- `browserTaskPendingQueueTimeoutMinutes` — how long a `pending` task
|
|
180
|
+
waits before it is `abandoned`.
|
|
181
|
+
- `browserTaskRespectQuietHours` — when on, tasks defer during your
|
|
182
|
+
quiet hours rather than running overnight.
|
|
183
|
+
- `browserTaskHostnameDenylist` — hostnames a task may never navigate
|
|
184
|
+
to (user-managed; there is no shipped default brand/category list).
|
|
@@ -79,6 +79,16 @@ Open **Analytics**. It has two tabs:
|
|
|
79
79
|
- **Cost** — per-run USD spend. A period selector switches between
|
|
80
80
|
**Daily**, **Weekly**, and **Monthly** windows, with summary cards for
|
|
81
81
|
**Today**, **Last 7 Days**, and **Last 30 Days**. Inside Cost:
|
|
82
|
+
- **Today's Spend Drivers** — answers "what is costing money *right
|
|
83
|
+
now*". **Most Expensive Runs Today** lists the day's costliest runs
|
|
84
|
+
(top 15, most expensive first); click a row for the full per-run
|
|
85
|
+
detail, including the actually-billed model and cache token breakdown.
|
|
86
|
+
Next to it, **By Process Today** shows each process's share of today's
|
|
87
|
+
total, and **Today at a Glance** tracks the day's efficiency: cache
|
|
88
|
+
hit rate, autonomous spend share, failed-run spend (money paid for
|
|
89
|
+
runs that produced no result), average cost per run, and total token
|
|
90
|
+
volume. Everything here uses the agent-day boundary, so the numbers
|
|
91
|
+
reconcile with the **Today** summary card.
|
|
82
92
|
- **Overview** — a cost-trend chart over the selected period plus a
|
|
83
93
|
**By Event Type** breakdown (which process keys cost the most).
|
|
84
94
|
- **By Backend** — totals and a trend chart split by the backend that
|
|
@@ -105,7 +115,7 @@ reactive work such as DMs and mentions always runs.
|
|
|
105
115
|
- **`autonomousDailyCostCapUsd`** (Autonomous Daily Cost Cap) — when
|
|
106
116
|
today's autonomous spend reaches the cap, the dispatcher skips
|
|
107
117
|
lower-priority routines first, using priority-based degradation:
|
|
108
|
-
- `
|
|
118
|
+
- `activity_scan` — skipped at 100% of the cap
|
|
109
119
|
- `roadmap_refresh` — skipped at 120%
|
|
110
120
|
- `evening_review` — skipped at 150%
|
|
111
121
|
- `morning_routine` — last to be cut, only at 200%
|
|
@@ -31,7 +31,7 @@ ask_examples:
|
|
|
31
31
|
- How do I block a site from managed Chromium?
|
|
32
32
|
locale: en-US
|
|
33
33
|
created: 2026-05-22
|
|
34
|
-
updated: 2026-
|
|
34
|
+
updated: 2026-06-07
|
|
35
35
|
keywords:
|
|
36
36
|
- managed chromium
|
|
37
37
|
- browser automation
|
|
@@ -48,6 +48,7 @@ related:
|
|
|
48
48
|
- concepts/safety-and-execution
|
|
49
49
|
- reference/disallowed-tools
|
|
50
50
|
ui_anchors:
|
|
51
|
+
- /browser
|
|
51
52
|
- /settings/integrations/browser-history-managed
|
|
52
53
|
- /settings/integrations/browser-history-managed/b4
|
|
53
54
|
process_keys:
|
|
@@ -136,7 +137,8 @@ ships empty.
|
|
|
136
137
|
1. The agent prepares the checkout in a managed Chromium tab and
|
|
137
138
|
pauses at the final confirm step.
|
|
138
139
|
2. The daemon mints a single-use token with the prefix `!~` followed
|
|
139
|
-
by 8 random
|
|
140
|
+
by 8 random base32 characters (alphabet `A-Z2-7`, e.g.
|
|
141
|
+
`!~K7QM3ZAB`), inserts a
|
|
140
142
|
`browser_automation_purchase_tokens` row keyed on a server-side
|
|
141
143
|
`jti`, and DMs the token to a primary channel together with a
|
|
142
144
|
screenshot of the exact cart state.
|
|
@@ -23,7 +23,7 @@ ask_examples:
|
|
|
23
23
|
- How do I limit how often it notifies me?
|
|
24
24
|
locale: en-US
|
|
25
25
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
26
|
+
updated: 2026-06-10
|
|
27
27
|
keywords:
|
|
28
28
|
- notification
|
|
29
29
|
- notify
|
|
@@ -74,6 +74,14 @@ 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`) ride the same gates
|
|
78
|
+
with one difference: inside quiet hours they are **deferred, not
|
|
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
|
+
the same agent overnight coalesce into one combined DM. Outside quiet
|
|
82
|
+
hours the per-hour / per-day caps apply; a capped call is rejected
|
|
83
|
+
(`rate_limited`) rather than silently queued, so the agent can adapt.
|
|
84
|
+
|
|
77
85
|
### Safety categories always get through
|
|
78
86
|
|
|
79
87
|
Notifications tagged `security`, `deadline`, `error`, or `critical`
|
|
@@ -104,6 +112,8 @@ The agent can also emit a one-off notification via `POST /api/notify`
|
|
|
104
112
|
- **A notification you expected never arrived:** check the rate-limit
|
|
105
113
|
counters (`maxNotificationsPerHour` / `maxNotificationsPerDay`) and the
|
|
106
114
|
quiet-hours window — a non-safety alert can be suppressed by either.
|
|
115
|
+
Explicit `/api/notify` messages caught by quiet hours are not lost —
|
|
116
|
+
look for a pending scheduled DM under Schedule.
|
|
107
117
|
Safety-category alerts (`error`/`critical`/`security`/`deadline`) are
|
|
108
118
|
never suppressed, so a missing one points at delivery/pairing instead.
|
|
109
119
|
- **Too many notifications:** lower the per-hour / per-day caps or widen
|
|
@@ -25,7 +25,7 @@ ask_examples:
|
|
|
25
25
|
- Will routines still run during quiet hours?
|
|
26
26
|
locale: en-US
|
|
27
27
|
created: 2026-04-25
|
|
28
|
-
updated: 2026-
|
|
28
|
+
updated: 2026-06-10
|
|
29
29
|
keywords:
|
|
30
30
|
- quiet hours
|
|
31
31
|
- dnd
|
|
@@ -39,7 +39,7 @@ related:
|
|
|
39
39
|
- features/routines/morning-routine
|
|
40
40
|
- concepts/agent-day
|
|
41
41
|
ui_anchors:
|
|
42
|
-
- /settings/
|
|
42
|
+
- /settings/hours
|
|
43
43
|
config_keys:
|
|
44
44
|
- quietHoursStart
|
|
45
45
|
- quietHoursEnd
|
|
@@ -65,6 +65,16 @@ the window:
|
|
|
65
65
|
notification path, sees that it is quiet hours, and is logged as
|
|
66
66
|
`suppressed` — it is **dropped, not held**. You will not receive it
|
|
67
67
|
later.
|
|
68
|
+
- **An explicit agent notification (`POST /api/notify`) is deferred,
|
|
69
|
+
not dropped.** When an agent session calls the notify endpoint inside
|
|
70
|
+
the window, the full message is queued as a scheduled DM that fires
|
|
71
|
+
the moment the window ends (visible under Schedule). Repeat calls
|
|
72
|
+
from the same agent overnight coalesce into one combined DM at the
|
|
73
|
+
edge instead of a morning pile-up. `critical` priority bypasses the
|
|
74
|
+
gate and sends immediately. If you change the quiet-hours window
|
|
75
|
+
while deferred DMs are pending, they are retimed to the new window
|
|
76
|
+
end (or released immediately when the new window no longer covers
|
|
77
|
+
the current time).
|
|
68
78
|
- **A notification already in a batch queue is deferred, not dropped.**
|
|
69
79
|
Aitne batches repeat notifications of the same event type within
|
|
70
80
|
`batchIntervalMinutes`. When a batch is pending and quiet hours are
|
|
@@ -82,6 +92,20 @@ the window:
|
|
|
82
92
|
defaults — boundary `04`, quiet hours `22:00`→`08:00` — that 04:00 run
|
|
83
93
|
lands inside quiet hours, so it runs normally but its proactive output
|
|
84
94
|
is held back or suppressed like any other notification.
|
|
95
|
+
- **A custom Agent can opt its whole run out of the window.** A user
|
|
96
|
+
Agent created with `schedule.defer_in_quiet_hours: true` (the
|
|
97
|
+
"Respect quiet hours" toggle in the New Agent form) does not run
|
|
98
|
+
inside the window at all — the firing itself is pushed to the moment
|
|
99
|
+
quiet hours end, so a DM-producing Agent delivers fresh results right
|
|
100
|
+
at the edge instead of burning a 3 AM session whose message would be
|
|
101
|
+
held anyway. Each deferral is recorded in the action log
|
|
102
|
+
(`agent.task.deferred_for_quiet_hours`). The default is off, so a
|
|
103
|
+
silent file-writing Agent deliberately scheduled overnight stays put.
|
|
104
|
+
Built-in routines never defer. Scheduled browser tasks get the same
|
|
105
|
+
treatment via `browserTaskRespectQuietHours` (default on). Like
|
|
106
|
+
deferred DMs, already-deferred runs are retimed when you change the
|
|
107
|
+
quiet-hours window — shrinking or disabling it releases them at the
|
|
108
|
+
new edge instead of holding them until the old one.
|
|
85
109
|
|
|
86
110
|
## When It Runs / How It Is Triggered
|
|
87
111
|
|
|
@@ -93,11 +117,15 @@ timezone) before sending. The window may wrap midnight — the default
|
|
|
93
117
|
|
|
94
118
|
## Where in the Dashboard
|
|
95
119
|
|
|
96
|
-
**Settings →
|
|
97
|
-
shown as a red
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
120
|
+
**Settings → Hours & Notifications** (`/settings/hours`) holds
|
|
121
|
+
`quietHoursStart` and `quietHoursEnd`, shown as a red arc on the same
|
|
122
|
+
24-hour ring (dial) as the activity-scan active window — drag the red
|
|
123
|
+
handles to adjust quiet hours. The active-window band is read-only on
|
|
124
|
+
this page; the activity scan owns its hours, edited from **Agents →
|
|
125
|
+
Activity Scan** (`/agents/activity-scan`). There is **no overlap
|
|
126
|
+
validation** — quiet hours and the active window are allowed to
|
|
127
|
+
overlap, and the morning routine fires regardless of where the bands
|
|
128
|
+
sit.
|
|
101
129
|
|
|
102
130
|
## Configuration
|
|
103
131
|
|
|
@@ -111,10 +139,12 @@ regardless of where the bands sit.
|
|
|
111
139
|
|
|
112
140
|
- **You expected an important alert to wake you but nothing came.**
|
|
113
141
|
Only the safety categories (`security`, `deadline`, `error`,
|
|
114
|
-
`critical`) bypass quiet hours. A regular
|
|
115
|
-
isn't already batched is dropped, not delayed
|
|
116
|
-
|
|
117
|
-
|
|
142
|
+
`critical`) bypass quiet hours. A regular routine-output notification
|
|
143
|
+
that isn't already batched is dropped, not delayed (explicit
|
|
144
|
+
`/api/notify` messages are deferred to the window end instead). If
|
|
145
|
+
you need real-time night alerts for, say, a critical mail label,
|
|
146
|
+
either ensure that path emits a safety-category notification or
|
|
147
|
+
disable quiet hours.
|
|
118
148
|
- **A notification fired after the window ended but feels stale.**
|
|
119
149
|
Check `batchIntervalMinutes` — a long interval means a deferred batch
|
|
120
150
|
flush can lag the window end by several minutes. The deferral targets
|
|
@@ -72,7 +72,7 @@ integration mode:
|
|
|
72
72
|
- **`native` mode** — the daemon does not poll, so it reads
|
|
73
73
|
`observations` rows instead. These are posted by the agent's
|
|
74
74
|
native-mode `routine.fetch_window` pre-pass. Because that pre-pass
|
|
75
|
-
refreshes on the
|
|
75
|
+
refreshes on the activity-scan tick (~60-minute cadence), events
|
|
76
76
|
scheduled with less than ~60 minutes of lead time may miss their
|
|
77
77
|
reminder. Direct mode (5-minute poll) does not have this limit.
|
|
78
78
|
|
|
@@ -94,7 +94,7 @@ If a reminder you expected never arrived:
|
|
|
94
94
|
- Check the integration mode. Reminders fire in `direct`, `delegated`,
|
|
95
95
|
and `native` modes; only `disabled` mode suppresses them entirely.
|
|
96
96
|
- In `native` mode, short-notice events (< ~60 min lead time) can be
|
|
97
|
-
missed because observations refresh on the
|
|
97
|
+
missed because observations refresh on the activity-scan cadence.
|
|
98
98
|
|
|
99
99
|
## Related
|
|
100
100
|
|