@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.
Files changed (218) hide show
  1. package/README.md +41 -11
  2. package/agent-assets/agent-profiles/background-task.md +53 -0
  3. package/agent-assets/agent-profiles/conversational.md +1 -0
  4. package/agent-assets/agent-profiles/routine-fetch-window.md +14 -75
  5. package/agent-assets/agent-profiles/routine.md +1 -1
  6. package/agent-assets/agents/{hourly-check → activity-scan}/agent.md +22 -17
  7. package/agent-assets/agents/monthly-review/agent.md +6 -5
  8. package/agent-assets/docs/concepts/agent-day.md +6 -7
  9. package/agent-assets/docs/concepts/auth-health.md +23 -20
  10. package/agent-assets/docs/concepts/backends-and-tiers.md +13 -9
  11. package/agent-assets/docs/concepts/costs-and-quotas.md +14 -12
  12. package/agent-assets/docs/concepts/delegated-mode.md +18 -17
  13. package/agent-assets/docs/concepts/memory-model.md +16 -9
  14. package/agent-assets/docs/concepts/observations.md +24 -20
  15. package/agent-assets/docs/concepts/process-keys.md +10 -9
  16. package/agent-assets/docs/concepts/routines.md +34 -31
  17. package/agent-assets/docs/concepts/safety-and-execution.md +11 -7
  18. package/agent-assets/docs/concepts/safety-model.md +39 -25
  19. package/agent-assets/docs/concepts/skills.md +12 -10
  20. package/agent-assets/docs/features/integrations/browser-history.md +23 -18
  21. package/agent-assets/docs/features/integrations/calendar.md +28 -17
  22. package/agent-assets/docs/features/integrations/git.md +13 -11
  23. package/agent-assets/docs/features/integrations/github.md +22 -14
  24. package/agent-assets/docs/features/integrations/mail.md +25 -22
  25. package/agent-assets/docs/features/integrations/notion.md +35 -11
  26. package/agent-assets/docs/features/integrations/obsidian.md +8 -8
  27. package/agent-assets/docs/features/lifestyle/git.md +27 -23
  28. package/agent-assets/docs/features/lifestyle/reading.md +20 -11
  29. package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
  30. package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
  31. package/agent-assets/docs/features/memory-files/agent-journal.md +53 -26
  32. package/agent-assets/docs/features/memory-files/agent-lessons.md +178 -0
  33. package/agent-assets/docs/features/memory-files/projects.md +11 -8
  34. package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
  35. package/agent-assets/docs/features/memory-files/schedule.md +6 -3
  36. package/agent-assets/docs/features/memory-files/today.md +10 -7
  37. package/agent-assets/docs/features/memory-files/user-profile.md +14 -9
  38. package/agent-assets/docs/features/messaging/bang-commands.md +21 -6
  39. package/agent-assets/docs/features/messaging/overview.md +17 -14
  40. package/agent-assets/docs/features/messaging/telegram.md +10 -9
  41. package/agent-assets/docs/features/operations/activity-and-conversations.md +6 -5
  42. package/agent-assets/docs/features/operations/approvals.md +6 -5
  43. package/agent-assets/docs/features/operations/browser-tasks.md +184 -0
  44. package/agent-assets/docs/features/operations/cost-tracking.md +11 -1
  45. package/agent-assets/docs/features/operations/managed-chromium.md +4 -2
  46. package/agent-assets/docs/features/operations/notifications.md +11 -1
  47. package/agent-assets/docs/features/operations/quiet-hours.md +41 -11
  48. package/agent-assets/docs/features/operations/schedule-approaching.md +2 -2
  49. package/agent-assets/docs/features/routines/activity-scan.md +220 -0
  50. package/agent-assets/docs/features/routines/custom-routines.md +82 -134
  51. package/agent-assets/docs/features/routines/evening-review.md +23 -13
  52. package/agent-assets/docs/features/routines/morning-routine.md +7 -5
  53. package/agent-assets/docs/features/routines/weekly-review.md +24 -3
  54. package/agent-assets/docs/features/wiki/commands.md +4 -4
  55. package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
  56. package/agent-assets/docs/features/wiki/dashboard.md +7 -6
  57. package/agent-assets/docs/features/wiki/overview.md +3 -3
  58. package/agent-assets/docs/features/wiki/search.md +5 -5
  59. package/agent-assets/docs/features/wiki/workspaces.md +2 -2
  60. package/agent-assets/docs/getting-started/01-what-is-this.md +3 -3
  61. package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
  62. package/agent-assets/docs/getting-started/04-first-day.md +27 -30
  63. package/agent-assets/docs/glossary.md +8 -8
  64. package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
  65. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
  66. package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
  67. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
  68. package/agent-assets/docs/guides/install-and-run.md +2 -2
  69. package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
  70. package/agent-assets/docs/guides/pause-the-agent.md +27 -21
  71. package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
  72. package/agent-assets/docs/guides/setup-wizard.md +12 -6
  73. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
  74. package/agent-assets/docs/reference/api.md +26 -5
  75. package/agent-assets/docs/reference/cli-commands.md +3 -3
  76. package/agent-assets/docs/reference/config.md +51 -24
  77. package/agent-assets/docs/reference/disallowed-tools.md +6 -4
  78. package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
  79. package/agent-assets/docs/reference/knowledge-layout.md +25 -12
  80. package/agent-assets/docs/reference/process-keys.md +9 -9
  81. package/agent-assets/docs/reference/skills.md +10 -6
  82. package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
  83. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
  84. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
  85. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +32 -16
  86. package/agent-assets/docs/troubleshooting/observation-not-detected.md +26 -24
  87. package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
  88. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
  89. package/agent-assets/skills/agent-actions/SKILL.md +23 -39
  90. package/agent-assets/skills/agent-create/SKILL.md +26 -6
  91. package/agent-assets/skills/attach/SKILL.md +8 -27
  92. package/agent-assets/skills/background-task/SKILL.md +184 -0
  93. package/agent-assets/skills/background-task-reply/SKILL.md +100 -0
  94. package/agent-assets/skills/browser-history/SKILL.md +60 -29
  95. package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
  96. package/agent-assets/skills/browser-task/SKILL.md +33 -31
  97. package/agent-assets/skills/context/SKILL.md +26 -34
  98. package/agent-assets/skills/context/curation.json +12 -12
  99. package/agent-assets/skills/context/references/api.md +22 -20
  100. package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
  101. package/agent-assets/skills/context/references/snapshot-files.md +16 -15
  102. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
  103. package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
  104. package/agent-assets/skills/docs-search/SKILL.md +19 -31
  105. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
  106. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
  107. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
  108. package/agent-assets/skills/external-services/SKILL.native.claude.md +15 -9
  109. package/agent-assets/skills/external-services/SKILL.native.codex.md +11 -5
  110. package/agent-assets/skills/external-services/SKILL.native.gemini.md +11 -5
  111. package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
  112. package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
  113. package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
  114. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
  115. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
  116. package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
  117. package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
  118. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
  119. package/agent-assets/skills/mail/SKILL.md +12 -20
  120. package/agent-assets/skills/mail/SKILL.native.claude.md +24 -16
  121. package/agent-assets/skills/mail/SKILL.native.codex.md +16 -9
  122. package/agent-assets/skills/mail/SKILL.native.gemini.md +12 -6
  123. package/agent-assets/skills/mail/references/api.md +6 -1
  124. package/agent-assets/skills/mail/references/examples.md +2 -1
  125. package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
  126. package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
  127. package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
  128. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +26 -16
  129. package/agent-assets/skills/management-policy/SKILL.md +36 -28
  130. package/agent-assets/skills/management-policy/curation.json +1 -1
  131. package/agent-assets/skills/management-policy/references/policy-workflow.md +30 -18
  132. package/agent-assets/skills/notify/SKILL.md +16 -13
  133. package/agent-assets/skills/notify/references/priority.md +42 -26
  134. package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
  135. package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
  136. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
  137. package/agent-assets/skills/notion/SKILL.md +18 -18
  138. package/agent-assets/skills/notion/SKILL.native.claude.md +4 -4
  139. package/agent-assets/skills/notion/SKILL.native.codex.md +3 -3
  140. package/agent-assets/skills/notion/SKILL.native.gemini.md +3 -3
  141. package/agent-assets/skills/observations/SKILL.md +9 -24
  142. package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
  143. package/agent-assets/skills/project-doc/SKILL.md +9 -6
  144. package/agent-assets/skills/project-doc/curation.json +3 -3
  145. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
  146. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  147. package/agent-assets/skills/reading/SKILL.md +8 -42
  148. package/agent-assets/skills/reading/references/reading-taste.md +5 -5
  149. package/agent-assets/skills/roadmap/SKILL.md +3 -19
  150. package/agent-assets/skills/roadmap/references/api.md +23 -8
  151. package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
  152. package/agent-assets/skills/roadmap/references/migration.md +8 -6
  153. package/agent-assets/skills/roadmap/references/retention.md +18 -0
  154. package/agent-assets/skills/schedule/SKILL.md +20 -28
  155. package/agent-assets/skills/schedule/references/importance.md +23 -0
  156. package/agent-assets/skills/schedule/references/recurrence-rule.md +26 -16
  157. package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -46
  158. package/agent-assets/skills/today/SKILL.md +38 -81
  159. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +9 -4
  160. package/agent-assets/skills/today/references/agent-plan-revision.md +28 -0
  161. package/agent-assets/skills/today/references/today-skeleton.md +66 -0
  162. package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
  163. package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
  164. package/agent-assets/skills/user-interview/SKILL.md +15 -90
  165. package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
  166. package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
  167. package/agent-assets/skills/user-interview/references/op-morning.md +2 -2
  168. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
  169. package/agent-assets/skills/user-profile/SKILL.md +16 -26
  170. package/agent-assets/skills/user-profile/curation.json +3 -3
  171. package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
  172. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
  173. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
  174. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
  175. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
  176. package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
  177. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
  178. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
  179. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
  180. package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
  181. package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
  182. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +47 -21
  183. package/agent-assets/task-flows/background_task.md +81 -0
  184. package/agent-assets/task-flows/git.local_ahead.stale.md +1 -1
  185. package/agent-assets/task-flows/git.push.detected.md +1 -1
  186. package/agent-assets/task-flows/git.tag.created.md +1 -1
  187. package/agent-assets/task-flows/github.assigned.md +1 -1
  188. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  189. package/agent-assets/task-flows/github.security_alert.md +1 -1
  190. package/agent-assets/task-flows/message.received.dm.md +11 -3
  191. package/agent-assets/task-flows/message.received.dm_first.md +8 -2
  192. package/agent-assets/task-flows/{routine.hourly_check.md → routine.activity_scan.md} +31 -23
  193. package/agent-assets/task-flows/{routine.hourly_check.triage.md → routine.activity_scan.triage.md} +3 -3
  194. package/agent-assets/task-flows/routine.evening_review.md +80 -0
  195. package/agent-assets/task-flows/routine.monthly_review.md +81 -8
  196. package/agent-assets/task-flows/routine.research_cluster_update.md +33 -19
  197. package/agent-assets/task-flows/routine.roadmap_refresh.md +2 -2
  198. package/agent-assets/task-flows/routine.today_refresh.md +1 -1
  199. package/agent-assets/task-flows/routine.weekly_review.md +124 -4
  200. package/agent-assets/task-flows/schedule.approaching.md +2 -2
  201. package/agent-assets/task-flows/scheduled.dm.md +77 -1
  202. package/agent-assets/task-flows/scheduled.task.md +7 -1
  203. package/agent-assets/task-flows/wiki.trace.md +1 -1
  204. package/agent-assets/templates/_manifest.json +2 -2
  205. package/agent-assets/templates/knowledge/dossiers/_index.md +1 -1
  206. package/agent-assets/templates/knowledge/dossiers/{hourly.md → activity-scan.md} +1 -1
  207. package/agent-assets/templates/policies/journal-format.md +1 -1
  208. package/agent-assets/templates/policies/mcp.md +1 -1
  209. package/agent-assets/templates/policies/routines/_index.md +1 -1
  210. package/agent-assets/templates/policies/routines/{hourly.md → activity-scan.md} +5 -5
  211. package/bin/aitne.mjs +45 -11
  212. package/package.json +6 -5
  213. package/scripts/commands/doctor.mjs +11 -2
  214. package/scripts/lib/process-identity.d.mts +46 -0
  215. package/scripts/lib/process-identity.mjs +193 -0
  216. package/scripts/lib/read-api-token.mjs +1 -1
  217. package/scripts/start.mjs +14 -4
  218. 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-05-28
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/schedule
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 only)**: @-mentioning the agent inside a shared
79
- channel routes to the `message.mention` ProcessKey and is answered
80
- the same way as a DM. Telegram, Discord, and WhatsApp drop all
81
- non-DM traffic (no group support).
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 / receives
105
- webhooks for incoming messages.
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, batched during quiet hours.
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 channel, and rate limit settings.
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/schedule`
128
- (see [Quiet Hours](../operations/quiet-hours.md)).
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/schedule`.
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 DMing the magic phrase.
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-05-28
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, type the magic phrase.
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
- magic-phrase pairing, Aitne long-polls Telegram's Bot API continuously for new
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 magic-phrase pairing. |
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 DMing the magic phrase: confirm the bot has a username
73
- set via @BotFather (/setname) — the daemon refuses to build the pairing deep
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 DM the magic phrase from your own account. See
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-05-28
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, hourly fires.
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 --wipe-data`
108
- removes the whole `~/.personal-agent` data directory after a `WIPE`
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-05-28
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
- - **An approval that never clears:** the agent session that produced
87
- it may have timed out. The action expires with the session redo
88
- the request that triggered it (for example, re-send the DM or
89
- re-run the routine).
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
- - `hourly_check` — skipped at 100% of the cap
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-05-28
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 hex characters (e.g. `!~3a1f9c7b`), inserts a
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-05-28
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-05-28
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/schedule
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 → Schedule** holds `quietHoursStart` and `quietHoursEnd`,
97
- shown as a red band on the same 24-hour slider as the hourly-check
98
- active window. There is **no overlap validation**quiet hours and the
99
- active window are allowed to overlap, and the morning routine fires
100
- regardless of where the bands sit.
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 proactive notification that
115
- isn't already batched is dropped, not delayed. If you need real-time
116
- night alerts for, say, a critical mail label, either ensure that path
117
- emits a safety-category notification or disable quiet hours.
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 hourly-check tick (~60-minute cadence), events
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 hourly-check cadence.
97
+ missed because observations refresh on the activity-scan cadence.
98
98
 
99
99
  ## Related
100
100