@aitne-sh/aitne 0.1.11 → 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.
Files changed (151) hide show
  1. package/README.md +4 -0
  2. package/agent-assets/agent-profiles/background-task.md +8 -1
  3. package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
  4. package/agent-assets/agents/evening-review/agent.md +6 -2
  5. package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
  6. package/agent-assets/agents/morning-routine/agent.md +10 -6
  7. package/agent-assets/agents/source-librarian/agent.md +51 -0
  8. package/agent-assets/docs/concepts/agent-day.md +15 -15
  9. package/agent-assets/docs/concepts/auth-health.md +10 -7
  10. package/agent-assets/docs/concepts/backends-and-tiers.md +34 -23
  11. package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
  12. package/agent-assets/docs/concepts/delegated-mode.md +18 -18
  13. package/agent-assets/docs/concepts/memory-model.md +25 -24
  14. package/agent-assets/docs/concepts/observations.md +27 -19
  15. package/agent-assets/docs/concepts/process-keys.md +25 -26
  16. package/agent-assets/docs/concepts/routines.md +18 -17
  17. package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
  18. package/agent-assets/docs/concepts/safety-model.md +16 -15
  19. package/agent-assets/docs/concepts/skills.md +7 -4
  20. package/agent-assets/docs/features/integrations/browser-history.md +52 -47
  21. package/agent-assets/docs/features/integrations/calendar.md +7 -7
  22. package/agent-assets/docs/features/integrations/git.md +15 -13
  23. package/agent-assets/docs/features/integrations/github.md +12 -10
  24. package/agent-assets/docs/features/integrations/mail.md +47 -45
  25. package/agent-assets/docs/features/integrations/notion.md +15 -11
  26. package/agent-assets/docs/features/integrations/obsidian.md +27 -23
  27. package/agent-assets/docs/features/lifestyle/git.md +7 -8
  28. package/agent-assets/docs/features/lifestyle/reading.md +11 -8
  29. package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
  30. package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
  31. package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
  32. package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
  33. package/agent-assets/docs/features/memory-files/projects.md +13 -14
  34. package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
  35. package/agent-assets/docs/features/memory-files/schedule.md +10 -10
  36. package/agent-assets/docs/features/memory-files/today.md +18 -18
  37. package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
  38. package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
  39. package/agent-assets/docs/features/messaging/dashboard-chat.md +8 -7
  40. package/agent-assets/docs/features/messaging/discord.md +7 -5
  41. package/agent-assets/docs/features/messaging/overview.md +14 -14
  42. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
  43. package/agent-assets/docs/features/messaging/slack.md +9 -8
  44. package/agent-assets/docs/features/messaging/telegram.md +7 -7
  45. package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
  46. package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
  47. package/agent-assets/docs/features/operations/approvals.md +13 -12
  48. package/agent-assets/docs/features/operations/backend-routing.md +38 -37
  49. package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
  50. package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
  51. package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
  52. package/agent-assets/docs/features/operations/notifications.md +15 -15
  53. package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
  54. package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
  55. package/agent-assets/docs/features/routines/activity-scan.md +14 -11
  56. package/agent-assets/docs/features/routines/custom-routines.md +9 -7
  57. package/agent-assets/docs/features/routines/evening-review.md +6 -7
  58. package/agent-assets/docs/features/routines/morning-routine.md +23 -22
  59. package/agent-assets/docs/features/routines/weekly-review.md +57 -51
  60. package/agent-assets/docs/features/wiki/commands.md +28 -22
  61. package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
  62. package/agent-assets/docs/features/wiki/dashboard.md +22 -24
  63. package/agent-assets/docs/features/wiki/overview.md +17 -25
  64. package/agent-assets/docs/features/wiki/search.md +15 -17
  65. package/agent-assets/docs/features/wiki/workspaces.md +55 -56
  66. package/agent-assets/docs/getting-started/01-what-is-this.md +4 -5
  67. package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
  68. package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
  69. package/agent-assets/docs/getting-started/04-first-day.md +4 -5
  70. package/agent-assets/docs/glossary.md +21 -19
  71. package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
  72. package/agent-assets/docs/guides/backup-and-restore.md +19 -16
  73. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -62
  74. package/agent-assets/docs/guides/build-your-wiki.md +11 -12
  75. package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
  76. package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
  77. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
  78. package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
  79. package/agent-assets/docs/guides/install-and-run.md +9 -10
  80. package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
  81. package/agent-assets/docs/guides/migrate-machines.md +16 -14
  82. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +12 -13
  83. package/agent-assets/docs/guides/pause-the-agent.md +25 -25
  84. package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
  85. package/agent-assets/docs/guides/setup-wizard.md +10 -12
  86. package/agent-assets/docs/guides/switch-default-backend.md +9 -9
  87. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
  88. package/agent-assets/docs/pages/activity.md +76 -0
  89. package/agent-assets/docs/pages/agents.md +78 -0
  90. package/agent-assets/docs/pages/analytics.md +70 -0
  91. package/agent-assets/docs/pages/browser.md +73 -0
  92. package/agent-assets/docs/pages/chat.md +67 -0
  93. package/agent-assets/docs/pages/connections.md +78 -0
  94. package/agent-assets/docs/pages/git.md +73 -0
  95. package/agent-assets/docs/pages/knowledge.md +75 -0
  96. package/agent-assets/docs/pages/overview.md +90 -0
  97. package/agent-assets/docs/pages/reading.md +65 -0
  98. package/agent-assets/docs/pages/settings.md +77 -0
  99. package/agent-assets/docs/pages/tasks.md +74 -0
  100. package/agent-assets/docs/pages/wiki.md +73 -0
  101. package/agent-assets/docs/reference/api.md +18 -17
  102. package/agent-assets/docs/reference/cli-commands.md +13 -10
  103. package/agent-assets/docs/reference/config.md +40 -35
  104. package/agent-assets/docs/reference/disallowed-tools.md +18 -17
  105. package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
  106. package/agent-assets/docs/reference/knowledge-layout.md +10 -10
  107. package/agent-assets/docs/reference/process-keys.md +20 -22
  108. package/agent-assets/docs/reference/skills.md +18 -16
  109. package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
  110. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
  111. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
  112. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
  113. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
  114. package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
  115. package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
  116. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
  117. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
  118. package/agent-assets/playbooks/markdown-note.md +43 -0
  119. package/agent-assets/playbooks/monitoring.md +29 -0
  120. package/agent-assets/playbooks/research.md +47 -0
  121. package/agent-assets/skills/agent-create/SKILL.md +71 -32
  122. package/agent-assets/skills/agent-create/references/prompt-frame-extended.md +132 -0
  123. package/agent-assets/skills/agent-create/references/prompt-frame.md +125 -0
  124. package/agent-assets/skills/background-task/SKILL.md +13 -8
  125. package/agent-assets/skills/background-task-reply/SKILL.md +2 -2
  126. package/agent-assets/skills/board/SKILL.md +92 -0
  127. package/agent-assets/skills/browser-history/SKILL.md +3 -3
  128. package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
  129. package/agent-assets/skills/browser-task/SKILL.md +4 -2
  130. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
  131. package/agent-assets/skills/schedule/SKILL.md +21 -18
  132. package/agent-assets/skills/schedule/references/batch.md +1 -1
  133. package/agent-assets/skills/schedule/references/model-selection.md +1 -1
  134. package/agent-assets/skills/schedule/references/prompt-frame.md +125 -0
  135. package/agent-assets/skills/sources/SKILL.md +68 -0
  136. package/agent-assets/skills/sources/curation.json +21 -0
  137. package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
  138. package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
  139. package/agent-assets/skills/task/SKILL.md +82 -0
  140. package/agent-assets/task-flows/background_task.md +29 -3
  141. package/agent-assets/task-flows/message.received.dm.md +1 -1
  142. package/agent-assets/task-flows/routine.activity_scan.md +17 -2
  143. package/agent-assets/task-flows/routine.evening_review.md +72 -11
  144. package/agent-assets/task-flows/routine.fetch_window.md +21 -0
  145. package/agent-assets/task-flows/routine.monthly_review.md +3 -1
  146. package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
  147. package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
  148. package/agent-assets/task-flows/scheduled.dm.md +29 -16
  149. package/agent-assets/templates/_manifest.json +1 -0
  150. package/agent-assets/templates/knowledge/sources/_index.md +19 -0
  151. package/package.json +4 -4
@@ -13,9 +13,7 @@ summary: |
13
13
  and the operator all read and append to it during the day.
14
14
  section: memory-files
15
15
  tags:
16
- - core
17
16
  - memory
18
- - today
19
17
  status: stable
20
18
  ask_examples:
21
19
  - What is in today.md?
@@ -23,7 +21,7 @@ ask_examples:
23
21
  - Why does today.md keep getting rewritten?
24
22
  locale: en-US
25
23
  created: 2026-04-25
26
- updated: 2026-06-07
24
+ updated: 2026-07-01
27
25
  keywords:
28
26
  - today
29
27
  - day plan
@@ -48,9 +46,10 @@ context_files:
48
46
 
49
47
  ## In One Sentence
50
48
 
51
- The single live file for the current agent day plan, log, tasks, and
52
- hand-off. The morning routine rebuilds it; everything else during the
53
- day appends to it.
49
+ The single live file for the current agent day (the window the agent
50
+ treats as "today") its plan, log, tasks, and hand-off. The morning
51
+ routine rebuilds it fresh each day; everything else during the day only
52
+ appends to it.
54
53
 
55
54
  ## What It Does
56
55
 
@@ -58,12 +57,12 @@ today.md holds six sections, written in this order:
58
57
 
59
58
  - **User Schedule** — the day's calendar events.
60
59
  - **User Tasks** — today's external tasks plus agent-tracked to-dos.
61
- - **Agent Plan** — what the agent intends to work on today (each row is
62
- registered as a schedule entry by the morning routine; mid-day
63
- sessions may add rows for new signals or cancel ones whose premise
64
- changed).
65
- - **Agent Notes** — look-ahead items and date-bound memos folded in from
66
- inbox triage.
60
+ - **Agent Plan** — what the agent means to work on today. The morning
61
+ routine turns each row into a schedule entry; a later session that day
62
+ can add rows for new signals or drop a row whose reason no longer
63
+ holds.
64
+ - **Agent Notes** — upcoming items and date-specific memos pulled in from
65
+ inbox triage (the sorting of new incoming items).
67
66
  - **Agent Log** — what actually happened, appended throughout the day.
68
67
  - **Handoff** — what carries over to tomorrow.
69
68
 
@@ -73,17 +72,18 @@ today.md holds six sections, written in this order:
73
72
  rotates the previous day's file to `state/yesterday.md`).
74
73
  - The **activity scan** routes new observations into the right section
75
74
  and appends short status lines under Agent Log.
76
- - The **evening review** finalizes the file — it updates Agent Log and
75
+ - The **evening review** closes out the file — it updates Agent Log and
77
76
  the Handoff section. (The daily journal itself is written the next
78
77
  morning, from the rotated file.)
79
78
 
80
79
  ## How It Is Written
81
80
 
82
- The agent never edits today.md with a file tool. All writes go through
83
- the daemon's context API — `PUT`/`PATCH /api/context/state/today` (the
84
- canonical, class-prefixed path). A `today-write-lock` serializes writes
85
- during the morning routine: while the lock is held, a write to
86
- `state/today` must carry the `X-Lock-Id` header or it is rejected.
81
+ The agent never edits today.md with a file tool. Every write goes
82
+ through the daemon's context API — `PUT`/`PATCH /api/context/state/today`
83
+ (the canonical, class-prefixed path). A `today-write-lock` forces writes
84
+ to happen one at a time during the morning routine: while the lock is
85
+ held, any write to `state/today` must carry the `X-Lock-Id` header, or
86
+ it is rejected.
87
87
 
88
88
  ## Where in the Dashboard
89
89
 
@@ -18,8 +18,6 @@ summary: |
18
18
  section: memory-files
19
19
  tags:
20
20
  - memory
21
- - profile
22
- - core
23
21
  status: stable
24
22
  ask_examples:
25
23
  - What is identity/profile.md?
@@ -27,7 +25,7 @@ ask_examples:
27
25
  - Will the agent change my profile without asking?
28
26
  locale: en-US
29
27
  created: 2026-04-25
30
- updated: 2026-06-07
28
+ updated: 2026-07-01
31
29
  keywords:
32
30
  - user profile
33
31
  - identity/profile.md
@@ -55,19 +53,21 @@ context_files:
55
53
 
56
54
  ## In One Sentence
57
55
 
58
- A stable profile of you the agent reads it every session and
59
- silently appends durable facts you state in DMs.
56
+ A steady profile of you. The agent reads it at the start of every
57
+ session and quietly adds durable facts things that stay true, like
58
+ your role or your manager's name — that you mention in DMs.
60
59
 
61
60
  ## What It Does
62
61
 
63
62
  - Captures who you are, what you do, and who matters in your life.
64
- - Is pinned at the top of every session prompt, so the agent keeps
65
- the same baseline understanding of you turn-to-turn.
66
- - Anchors a set of companion slices in the `identity/` directory that
67
- split the dossier into topic-shaped files:
63
+ - Sits at the top of every session prompt, so the agent keeps the same
64
+ baseline understanding of you from one message to the next.
65
+ - Anchors a set of companion files — called slices in the `identity/`
66
+ directory, one per topic:
68
67
  `identity/people.md`, `identity/work.md`, `identity/expertise.md`,
69
- `identity/personal.md`, `identity/goals.md`. The agent loads these on
70
- demand instead of inlining everything into every prompt.
68
+ `identity/personal.md`, `identity/goals.md`. The agent loads these
69
+ only when it needs them, instead of packing everything into every
70
+ prompt.
71
71
 
72
72
  > Older docs and exports may call these files `user/profile.md`,
73
73
  > `user/people.md`, and so on. `user/` is a legacy alias for
@@ -77,11 +77,11 @@ silently appends durable facts you state in DMs.
77
77
  ## When It Runs / How It Is Triggered
78
78
 
79
79
  - **Read continuously** — loaded at the start of every session.
80
- - **Written** silently, in the same turn, when you state a durable
81
- fact about yourself in a DM ("remember that…", "I'm a…", "my
82
- manager is…"), and during the profile sweep routine
83
- (`routine.user_profile_sweep`), which catches facts the DM-time
84
- capture missed and routes them into the appropriate
80
+ - **Written** silently, within the same reply, when you state a
81
+ durable fact about yourself in a DM ("remember that…", "I'm a…",
82
+ "my manager is…"), and during the profile sweep routine
83
+ (`routine.user_profile_sweep`), which catches facts that the
84
+ in-chat capture missed and files them into the right
85
85
  `identity/*.md` slice.
86
86
 
87
87
  The agent never edits these files directly. It writes through the
@@ -106,7 +106,7 @@ To tell the agent a durable fact about yourself, just say it in a DM:
106
106
  > remember that my manager is Priya and we sync every Monday at 10am
107
107
 
108
108
  The agent silently appends a line to the relevant slice (here
109
- `identity/people.md`) in the same turn, and recalls it in future
109
+ `identity/people.md`) right away, and recalls it in future
110
110
  sessions.
111
111
 
112
112
  ## When Something Goes Wrong
@@ -23,10 +23,8 @@ summary: |
23
23
  and list every command.
24
24
  section: messaging
25
25
  tags:
26
- - core
27
26
  - messaging
28
27
  - operations
29
- - bang-commands
30
28
  status: stable
31
29
  ask_examples:
32
30
  - How do I pause the agent from my phone?
@@ -37,7 +35,7 @@ ask_examples:
37
35
  - How do I accept a research-cluster offer?
38
36
  locale: en-US
39
37
  created: 2026-05-12
40
- updated: 2026-06-07
38
+ updated: 2026-07-01
41
39
  keywords:
42
40
  - bang command
43
41
  - "!stop"
@@ -70,10 +68,12 @@ process_keys:
70
68
 
71
69
  # Bang Commands
72
70
 
73
- DM the agent a short word starting with `!` and the daemon answers
74
- directly no LLM call, no cost, no session opened. Use them to pause,
75
- check spend, look at recent failures, manage research clusters, and
76
- list every command.
71
+ DM the agent a short word that starts with `!` the `!` symbol is
72
+ nicknamed a "bang," which is where these commands get their name and
73
+ the daemon (the always-on local background service) answers it directly.
74
+ No AI model runs, so there is no cost and no chat session is opened. Use
75
+ bang commands to pause the agent, check spend, look at recent failures,
76
+ manage research clusters, and list every command.
77
77
 
78
78
  ## Who Can Use Them
79
79
 
@@ -89,9 +89,9 @@ Pair your messaging app first; see
89
89
  | Command | What it does |
90
90
  |---|---|
91
91
  | `!help` | List every registered command — built-ins plus enabled user commands. |
92
- | `!stop` | Pause cron-driven autonomous work (activity scan, morning / evening / weekly routines, scheduled tasks). In-flight runs are **not** aborted. |
92
+ | `!stop` | Pause cron-driven (scheduled) autonomous work: activity scan, the morning / evening / weekly routines, and scheduled tasks. Runs already in progress are **not** aborted. |
93
93
  | `!start` | Resume autonomous work after `!stop`. |
94
- | `!close` | Close the active DM session for the current routing tuple so the next DM starts a fresh conversation. |
94
+ | `!close` | Close the active DM session for the current routing tuple (this platform + channel + thread) so the next DM starts a fresh conversation. |
95
95
 
96
96
  ### Tasks (detached background / browser work)
97
97
 
@@ -206,12 +206,12 @@ were hidden.
206
206
 
207
207
  ## How They Behave
208
208
 
209
- - **Exact match for atomic commands** (`!stop`, `!cost`, `!checks` —
210
- each `!cost <backend>` variant is its own exact-match entry) and
211
- **prefix match for parameterised ones**
212
- (`!research accept <slug>`, `!compile @work full`). Anything
213
- spanning newlines falls through to the agent path so a
214
- `"!stop\nignore me"` payload cannot spoof a command.
209
+ - **Exact match for atomic commands** — single words like `!stop`,
210
+ `!cost`, and `!checks`, where each `!cost <backend>` variant is its
211
+ own exact-match entry — and **prefix match for parameterised ones**
212
+ that take an argument (`!research accept <slug>`, `!compile @work
213
+ full`). Anything that spans more than one line falls through to the
214
+ agent path, so a `"!stop\nignore me"` payload cannot spoof a command.
215
215
  - **DM only.** Bangs typed into a shared channel are ignored.
216
216
  - **No agent cost on built-ins.** No LLM is invoked for the
217
217
  daemon-side commands; one `bang_command` row is appended to
@@ -16,7 +16,6 @@ summary: |
16
16
  messaging app.
17
17
  section: messaging
18
18
  tags:
19
- - core
20
19
  - messaging
21
20
  - dashboard
22
21
  status: stable
@@ -26,7 +25,7 @@ ask_examples:
26
25
  - Why are my dashboard chat replies different from my Telegram replies?
27
26
  locale: en-US
28
27
  created: 2026-04-25
29
- updated: 2026-05-28
28
+ updated: 2026-07-01
30
29
  keywords:
31
30
  - chat
32
31
  - dashboard
@@ -55,13 +54,14 @@ ui_anchors:
55
54
 
56
55
  ## In One Sentence
57
56
 
58
- `/chat` is a browser-mounted DM with the agent — a fully featured
59
- conversational surface separate from any paired messaging app.
57
+ `/chat` is a DM with the agent that lives in your browser — a fully
58
+ featured chat, separate from any paired messaging app.
60
59
 
61
60
  ## What It Does
62
61
 
63
- - **Real-time** message stream over SSE the same conversational
64
- experience as a paired DM, but in the browser.
62
+ - **Real-time** message stream over SSE (Server-Sent Events, a live
63
+ one-way feed from the daemon to your browser) — the same
64
+ conversational experience as a paired DM, but in the browser.
65
65
  - **Tool progress** rendered inline (which tool, which file, which
66
66
  endpoint) so you can watch the agent work.
67
67
  - **Session history** persisted to SQLite (`scope='dashboard_chat'`)
@@ -79,7 +79,7 @@ persisted under the chat session.
79
79
 
80
80
  Like a DM, `dashboard.chat` is a **reactive** ProcessKey: it runs on
81
81
  demand when you send, never on a schedule. Its default tier is
82
- **medium** (Claude Sonnet 4.6 by default) — the same tier as
82
+ **medium** (Claude Sonnet 5 by default) — the same tier as
83
83
  `message.dm`.
84
84
 
85
85
  ## Where in the Dashboard
@@ -113,3 +113,4 @@ demand when you send, never on a schedule. Its default tier is
113
113
  - [Messaging Overview](overview.md)
114
114
  - [Backends and Tiers](../../concepts/backends-and-tiers.md)
115
115
  - [Process Keys](../../concepts/process-keys.md)
116
+ - [Keyboard Shortcuts](../../reference/keyboard-shortcuts.md)
@@ -26,7 +26,7 @@ ui_anchors:
26
26
  - /connections/messaging
27
27
  locale: en-US
28
28
  created: 2026-04-25
29
- updated: 2026-05-28
29
+ updated: 2026-07-01
30
30
  keywords:
31
31
  - discord
32
32
  - bot token
@@ -44,8 +44,9 @@ related:
44
44
 
45
45
  ## In One Sentence
46
46
 
47
- A Discord bot becomes the agent's surface; pair via DM after
48
- installing the bot in the developer portal.
47
+ Aitne talks to you through a Discord bot you create. Set the bot up in
48
+ Discord's developer portal, then link it to yourself by sending it a
49
+ direct message.
49
50
 
50
51
  ## How to Set Up
51
52
 
@@ -57,8 +58,9 @@ installing the bot in the developer portal.
57
58
  DM or mention text without it.
58
59
  4. Invite the bot to any servers where you want mentions to work.
59
60
  5. Paste the token under **Connections → Messaging → Discord**.
60
- 6. DM the magic phrase from your own Discord account to complete
61
- pairing.
61
+ 6. From your own Discord account, DM the bot the magic phrase (the
62
+ short one-time pairing code Aitne shows you) to finish pairing. See
63
+ [Pairing & Magic Phrase](pairing-and-magic-phrase.md).
62
64
 
63
65
  ## What It Does
64
66
 
@@ -16,7 +16,6 @@ summary: |
16
16
  agent uses the same channel to send notifications back.
17
17
  section: messaging
18
18
  tags:
19
- - core
20
19
  - messaging
21
20
  - integrations
22
21
  - pairing
@@ -29,7 +28,7 @@ ask_examples:
29
28
  - Can I send the agent a voice note?
30
29
  locale: en-US
31
30
  created: 2026-04-25
32
- updated: 2026-06-07
31
+ updated: 2026-07-01
33
32
  keywords:
34
33
  - messaging
35
34
  - dm
@@ -66,17 +65,17 @@ config_keys:
66
65
 
67
66
  # Messaging Overview
68
67
 
69
- Aitne treats DMs from a paired messaging app as its primary reactive
70
- surface you message it, it answers; it messages you when a
71
- notification fires. Voice notes are transcribed locally with Whisper
68
+ Direct messages (DMs) from a paired messaging app are Aitne's main way
69
+ to talk with you: you message it, it answers; it messages you back when
70
+ a notification fires. Voice notes are transcribed locally with Whisper,
72
71
  so you can talk to the agent the same way you'd type.
73
72
 
74
73
  ## What It Does
75
74
 
76
75
  - **Reactive DMs**: the agent answers every direct message you send.
77
76
  - **@-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
77
+ shared channel routes to the `message.mention` process key and is
78
+ answered the same way as a DM. Telegram and WhatsApp ignore all non-DM
80
79
  traffic (no group support).
81
80
  - **Outbound notifications**: routines and observations fire alerts
82
81
  back through the same channel.
@@ -94,16 +93,17 @@ so you can talk to the agent the same way you'd type.
94
93
 
95
94
  Aitne serves exactly one owner. Any message that does not come from a
96
95
  paired owner channel is dropped — group chats, multi-user Slack DMs
97
- (`mpim`), and unrecognized senders never reach the agent. This is
98
- defense in depth: both the messaging adapter and the dispatcher check
99
- the owner channel independently.
96
+ (`mpim`), and unrecognized senders never reach the agent. Two layers
97
+ enforce this independently (defense in depth): the messaging adapter
98
+ and the dispatcher each check the owner channel on their own.
100
99
 
101
100
  ## When It Runs / How It Is Triggered
102
101
 
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
- - An incoming DM dispatches to the `message.dm` ProcessKey.
102
+ - The messaging adapter for each connected platform watches for
103
+ incoming messages Telegram by long-polling (repeatedly asking the
104
+ server for updates), Slack, Discord, and WhatsApp by holding an
105
+ always-open WebSocket connection.
106
+ - An incoming DM dispatches to the `message.dm` process key.
107
107
  - An incoming mention dispatches to `message.mention`.
108
108
  - Notifications fire as a side-effect of routines and observations
109
109
  reaching the notifier (subject to quiet hours and rate limits).
@@ -17,7 +17,6 @@ summary: |
17
17
  to your owner identity so nobody else can impersonate you.
18
18
  section: messaging
19
19
  tags:
20
- - core
21
20
  - messaging
22
21
  - pairing
23
22
  - safety
@@ -25,7 +24,7 @@ tags:
25
24
  status: stable
26
25
  locale: en-US
27
26
  created: 2026-04-25
28
- updated: 2026-05-28
27
+ updated: 2026-07-01
29
28
  keywords:
30
29
  - pairing
31
30
  - magic phrase
@@ -86,23 +85,24 @@ on the platform.
86
85
 
87
86
  ### The magic phrase (Slack, Discord)
88
87
 
89
- The dashboard generates a short, memorable phrase of four lowercase words
90
- joined by hyphens, drawn from a 64-word list (24 bits of entropy). You DM
91
- that exact phrase to the bot. Matching is tolerant it ignores case,
92
- punctuation, and emojibut the phrase must be **sent by itself**. If you
93
- wrap it in a sentence ("my phrase is apple-banana-cherry-date"), the agent
94
- will reply asking you to send the phrase on its own.
88
+ The dashboard generates a short, memorable phrase: four lowercase words
89
+ joined by hyphens, drawn from a 64-word list. That makes it easy to type
90
+ but hard to guess (24 bits of entropy). You DM that exact phrase to the
91
+ bot. Matching is forgiving it ignores case, punctuation, and emoji but
92
+ you have to send the phrase **by itself**. If you wrap it in a sentence
93
+ ("my phrase is apple-banana-cherry-date"), the agent replies asking you to
94
+ send just the phrase on its own.
95
95
 
96
- The phrase is single-use and expires after **5 minutes**. If it lapses,
97
- regenerate a fresh one from the dashboard.
96
+ The phrase works once and expires after **5 minutes**. If it runs out,
97
+ generate a fresh one from the dashboard.
98
98
 
99
99
  ### Token pairing (Telegram, WhatsApp)
100
100
 
101
101
  Telegram and WhatsApp don't use a typed phrase:
102
102
 
103
- - **Telegram** encodes a high-entropy, single-use token in a QR / deep
103
+ - **Telegram** hides a hard-to-guess, one-time token inside the QR / deep
104
104
  link. Tapping **START** sends `/start <token>` to the bot, which
105
- promotes you to owner. The token is matched exactly and also expires
105
+ promotes you to owner. The token has to match exactly and also expires
106
106
  after 5 minutes.
107
107
  - **WhatsApp** uses WhatsApp's own linked-device flow — you scan a QR from
108
108
  your phone to attach the daemon as a device. Set the owner phone number
@@ -17,7 +17,6 @@ section: messaging
17
17
  tags:
18
18
  - messaging
19
19
  - integrations
20
- - slack
21
20
  - pairing
22
21
  status: stable
23
22
  ask_examples:
@@ -26,7 +25,7 @@ ask_examples:
26
25
  - Can the agent listen in shared channels?
27
26
  locale: en-US
28
27
  created: 2026-04-25
29
- updated: 2026-05-28
28
+ updated: 2026-07-01
30
29
  keywords:
31
30
  - slack
32
31
  - socket mode
@@ -49,18 +48,20 @@ config_keys:
49
48
 
50
49
  ## In One Sentence
51
50
 
52
- A Slack bot user becomes the agent's surface in your workspace: DMs to
53
- the bot are owner messages, and `@`-mentions of the bot in channels are
54
- mention events but only from the one paired owner.
51
+ You add a Slack bot user to your workspace, and that bot is how you talk
52
+ to the agent: DMs you send the bot are treated as owner messages, and
53
+ `@`-mentions of the bot in channels are treated as mentions — but only
54
+ when they come from the one paired owner.
55
55
 
56
56
  ## What It Does
57
57
 
58
- - Listens for **DMs** to the bot (owner reactive path).
58
+ - Listens for **DMs** to the bot your direct messages to the agent.
59
59
  - Listens for **`@`-mentions of the bot** in channels you've added it to.
60
60
  - Sends notifications back to your owner DM.
61
61
 
62
- The adapter runs over Slack **Socket Mode** (a WebSocket), so Aitne does
63
- not need a public inbound URL or webhook endpoint.
62
+ The adapter connects to Slack over **Socket Mode**, a WebSocket (a
63
+ persistent two-way link Slack opens to Aitne). Because Slack does the
64
+ reaching-out, Aitne needs no public inbound URL or webhook endpoint.
64
65
 
65
66
  ## Single-Owner Scope
66
67
 
@@ -13,7 +13,6 @@ section: messaging
13
13
  tags:
14
14
  - messaging
15
15
  - integrations
16
- - telegram
17
16
  status: stable
18
17
  config_keys:
19
18
  - telegramOwnerChatId
@@ -24,7 +23,7 @@ ask_examples:
24
23
  - Where do I get a Telegram bot token?
25
24
  locale: en-US
26
25
  created: 2026-04-25
27
- updated: 2026-06-07
26
+ updated: 2026-07-01
28
27
  keywords:
29
28
  - telegram
30
29
  - telegram bot
@@ -45,14 +44,15 @@ token, scan the pairing QR code.
45
44
 
46
45
  ## What It Does
47
46
 
48
- - Acts as the agent's reactive surface for your incoming direct messages (owner DMs only — group chats are ignored).
49
- - Delivers the agent's outbound notifications and replies back to the same Telegram chat.
47
+ - Receives your incoming direct messages so the agent can react to them (owner DMs only — group chats are ignored).
48
+ - Sends the agent's notifications and replies back to the same Telegram chat.
50
49
 
51
50
  ## When It Runs / How It Is Triggered
52
51
 
53
- Before pairing, nothing listens. Once you paste the bot token and complete
54
- QR / deep-link pairing, Aitne long-polls Telegram's Bot API continuously for new
55
- direct messages.
52
+ Before pairing, nothing listens. Once you paste the bot token and finish pairing
53
+ (scan the QR code or tap the deep link), Aitne continuously long-polls Telegram's
54
+ Bot API — it keeps an open request that returns the moment a new direct message
55
+ arrives.
56
56
 
57
57
  ## Where in the Dashboard
58
58
 
@@ -17,7 +17,6 @@ summary: |
17
17
  section: messaging
18
18
  tags:
19
19
  - messaging
20
- - whatsapp
21
20
  - integrations
22
21
  - pairing
23
22
  status: stable
@@ -27,7 +26,7 @@ ask_examples:
27
26
  - Why does WhatsApp say the device is unlinked?
28
27
  locale: en-US
29
28
  created: 2026-04-25
30
- updated: 2026-05-28
29
+ updated: 2026-07-01
31
30
  keywords:
32
31
  - whatsapp
33
32
  - qr code
@@ -57,10 +56,11 @@ messages that flow exactly like Telegram.
57
56
 
58
57
  ## How It Works
59
58
 
60
- Aitne connects to WhatsApp as a **linked device** (the multi-device feature
61
- in the WhatsApp mobile app), not through the WhatsApp Cloud API or a paid
62
- bridge such as Twilio. There is no business account, no bot token, and no
63
- inbound webhook to expose:
59
+ Aitne connects to WhatsApp as a **linked device** the same "linked
60
+ devices" feature in the WhatsApp mobile app that powers WhatsApp Web. It does
61
+ not use the WhatsApp Cloud API or a paid bridge such as Twilio. There is no
62
+ business account, no bot token, and no inbound webhook (a public URL that
63
+ WhatsApp would call) to expose:
64
64
 
65
65
  - You scan a QR code once to link the daemon as a device on your account.
66
66
  - Incoming WhatsApp messages arrive over the linked-device connection.
@@ -15,7 +15,6 @@ summary: |
15
15
  answer "what happened" and "what was said".
16
16
  section: operations
17
17
  tags:
18
- - core
19
18
  - operations
20
19
  - audit
21
20
  - dashboard
@@ -26,7 +25,7 @@ ask_examples:
26
25
  - How do I find why a routine failed?
27
26
  locale: en-US
28
27
  created: 2026-04-25
29
- updated: 2026-06-07
28
+ updated: 2026-07-01
30
29
  keywords:
31
30
  - activity
32
31
  - conversations
@@ -53,9 +52,9 @@ ui_anchors:
53
52
 
54
53
  ## In One Sentence
55
54
 
56
- Every agent session, action, and outcome is logged to SQLite and
57
- surfaced as the Activity timeline; the matching message-by-message
58
- detail lives one click deeper under Conversations.
55
+ The agent logs every session, action, and outcome to a local SQLite
56
+ database and shows them as the Activity timeline; the matching
57
+ message-by-message detail lives one click deeper under Conversations.
59
58
 
60
59
  ## What It Does
61
60
 
@@ -71,10 +70,11 @@ Each row links to the underlying conversation when one exists.
71
70
 
72
71
  ## How It Works
73
72
 
74
- Activity has no trigger of its own — it is a read-only projection.
75
- Every other event in the system writes to it as a side effect, landing
76
- in three SQLite tables: `agent_actions` (what happened), and
77
- `conversation_sessions` + `messages` (what was said).
73
+ Activity never runs anything on its own — it only mirrors what already
74
+ happened (a read-only view). Every other event in the system writes to
75
+ it as a side effect, landing in three SQLite tables: `agent_actions`
76
+ (what happened), plus `conversation_sessions` and `messages` (what was
77
+ said).
78
78
 
79
79
  ## What You See
80
80
 
@@ -9,12 +9,11 @@ aliases:
9
9
  - human in the loop
10
10
  category: features
11
11
  summary: |
12
- A few high-blast-radius actions queue as approvals. The action
13
- blocks until you click Approve on the dashboard Overview page;
14
- the approval card stays visible there regardless of quiet hours.
12
+ A few high-impact actions queue as approvals. The action blocks
13
+ until you click Approve on the dashboard Overview page; the
14
+ approval card stays visible there regardless of quiet hours.
15
15
  section: operations
16
16
  tags:
17
- - core
18
17
  - safety
19
18
  - operations
20
19
  status: stable
@@ -24,7 +23,7 @@ ask_examples:
24
23
  - Where do I approve a pending action?
25
24
  locale: en-US
26
25
  created: 2026-04-25
27
- updated: 2026-06-07
26
+ updated: 2026-07-01
28
27
  keywords:
29
28
  - approval
30
29
  - approve tier
@@ -47,9 +46,10 @@ api_endpoints:
47
46
 
48
47
  ## In One Sentence
49
48
 
50
- A small set of high-blast-radius actions queue as approvals; the
51
- agent waits for you to click **Approve** on the dashboard before it
52
- proceeds.
49
+ A small set of high-impact actions the ones that could cause
50
+ real harm if they ran by mistake queue as approvals. The agent
51
+ waits for you to click **Approve** on the dashboard before it runs
52
+ one.
53
53
 
54
54
  ## How It Works
55
55
 
@@ -84,10 +84,11 @@ Deny asks for confirmation before discarding the item.
84
84
  ## When Something Goes Wrong
85
85
 
86
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).
87
+ discarded once the agent day rolls over the moment "today"
88
+ resets, at 04:00 local time by default. It is marked skipped
89
+ rather than replayed after the day turns. If that happens, redo
90
+ the request that triggered it (for example, re-send the DM or
91
+ re-run the routine).
91
92
 
92
93
  ## Related
93
94