@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
@@ -27,7 +27,7 @@ ask_examples:
27
27
  - Why did journal/agent.md stop growing?
28
28
  locale: en-US
29
29
  created: 2026-04-25
30
- updated: 2026-05-28
30
+ updated: 2026-06-07
31
31
  keywords:
32
32
  - journal
33
33
  - retros
@@ -38,17 +38,19 @@ related:
38
38
  - features/routines/morning-routine
39
39
  - features/routines/evening-review
40
40
  - features/routines/weekly-review
41
+ - features/memory-files/agent-lessons
41
42
  - features/operations/activity-and-conversations
42
43
  - concepts/memory-model
43
44
  process_keys:
45
+ - routine.morning_routine_today
44
46
  - routine.morning_routine_journal
45
47
  - routine.evening_review
46
48
  - routine.weekly_review
47
49
  context_files:
48
50
  - journal/agent.md
49
51
  ui_anchors:
50
- - /connections/journal
51
- - /settings/journal
52
+ - /knowledge?tab=context-files
53
+ - /agents/morning-routine?tab=rulebook
52
54
  ---
53
55
 
54
56
  # journal/agent.md
@@ -68,26 +70,34 @@ of *what happened* — the journal is reflection-shaped: it captures
68
70
 
69
71
  Each entry carries:
70
72
 
71
- - A timestamp (the routine stamps an `Appended at:` line).
73
+ - A dated heading — the morning routine stamps a
74
+ `## YYYY-MM-DD morning routine` H2; the weekly and monthly retros add
75
+ a `> Appended at: YYYY-MM-DD HH:MM` line under their section header.
72
76
  - A short context line — which routine or conversation prompted it.
73
77
  - The reflection itself.
74
78
 
75
- The file lives at `~/.personal-agent/context/journal/agent.md` and
76
- grows forever. Later routines read it back to look for patterns.
79
+ The file lives at `~/.personal-agent/context/journal/agent.md`. The
80
+ day-to-day morning and ad-hoc entries accumulate indefinitely; the
81
+ daily retention rollup keeps only a rolling window of the structured
82
+ retros (the most recent 12 `## Weekly` and 24 `## Monthly` sections),
83
+ pruning older ones. Later routines read it back to look for patterns.
77
84
 
78
85
  ## Who writes it, and when
79
86
 
80
87
  Three routines append to the journal — none ever rewrites it:
81
88
 
82
- - **Morning routine** (Stage B, `routine.morning_routine_journal`) is
83
- the recurring daily writer. After the day's stages settle, the
84
- daemon appends a one-paragraph audit-trail entry assembled from the
85
- prior day's `agent_actions` stage results, retry stats, anomalies.
86
- This is the entry you'll see most often.
89
+ - **Morning routine** is the recurring daily writer — and here the
90
+ daemon itself does the writing, not an LLM stage. After the day's
91
+ stages (Stage A `routine.morning_routine_today`, Stage B
92
+ `routine.morning_routine_journal`) settle, the daemon appends a
93
+ one-paragraph audit-trail entry assembled from the run's
94
+ `agent_actions` rows — stage results, inbox stats, anomalies — plus
95
+ a one-line footprint of the prior day's actions. This is the entry
96
+ you'll see most often.
87
97
  - **Weekly review** (`routine.weekly_review`) appends the largest
88
98
  structured block: a `## Weekly YYYY-Www` retro with *What worked*,
89
99
  *What slipped on my side*, *System improvement ideas*, and agent-side
90
- metrics. It quotes prior entries to find a thread.
100
+ metrics.
91
101
  - **Evening review** (`routine.evening_review`) appends short
92
102
  bookkeeping lines — for example a one-liner each time it bumps a
93
103
  roadmap review forward, or a validation error if a roadmap write was
@@ -109,11 +119,15 @@ worth recording during reactive work.
109
119
  ### System improvement ideas
110
120
  - Add Saturday to the Weekend day-type default so weekend pushes triage.
111
121
  ### Metrics (agent side)
112
- - Agent plan rows completed: 12
113
- - Did-not-fire / failed rows: 1
114
- - Observations reviewed / ignored: 18 / 4
122
+ - Routine runs (7d): 142 total / 3 failed (prev week: 150 / 5)
123
+ - Spend (7d): $4.10 (prev week: $4.80); top cost: routine.fetch_window $2.10
124
+ - Notifications (7d): 9 sent / 4 ignored (prev week sent: 11)
115
125
  ```
116
126
 
127
+ The metrics lines are copied verbatim from the `<self_performance>`
128
+ block the daemon computes and injects into the weekly session — the
129
+ review does not count anything itself.
130
+
117
131
  ## Append-only — enforced, not just convention
118
132
 
119
133
  The journal is append-only at the API layer, not merely by prompt
@@ -127,10 +141,18 @@ cannot destroy history. Writes go through the daemon context API
127
141
 
128
142
  ## Where in the dashboard
129
143
 
130
- - **ConnectionsJournal** (`/connections/journal`) is the read view
131
- of the file.
132
- - **Settings Journal** (`/settings/journal`) controls retention and
133
- which routines contribute.
144
+ - **KnowledgeContext Files** (`/knowledge?tab=context-files`) is the
145
+ read view of the file — `journal/agent` is listed among the top-level
146
+ context files. It is flagged as sensitive: entering edit mode surfaces
147
+ a "deliberately pruning noise" warning before you change anything.
148
+ - **The morning-routine agent's Rulebook tab**
149
+ (`/agents/morning-routine?tab=rulebook`)
150
+ does *not* edit this file. It hosts the daily-journal rule files —
151
+ `policies/journal-format.md` (sections, voice, frontmatter) and
152
+ `policies/journal-export.md` (redaction / inclusion rules) — both of
153
+ which the morning routine reads when synthesizing `daily/YYYY-MM-DD.md`,
154
+ not `journal/agent.md`. `/connections/journal` is a compatibility alias
155
+ that redirects here.
134
156
 
135
157
  ## Configuration
136
158
 
@@ -142,25 +164,30 @@ agent's own writes, not to you editing the file on disk.
142
164
  ## When something goes wrong
143
165
 
144
166
  - **The journal stops growing.** This usually points at the morning
145
- routine's Stage B (the daily writer) or the evening/weekly review not
167
+ routine (whose daemon-side appender writes the daily entry) or the
168
+ evening/weekly review not
146
169
  running. See [Morning Routine](../routines/morning-routine.md) and
147
170
  [Evening Review](../routines/evening-review.md).
148
171
  - **Entries look duplicated.** This usually means a routine retried
149
172
  after a backend fallback. Because writes are append-only, a retry
150
- can re-append rather than overwrite; the weekly review has an
151
- idempotency check for its own section, but it is best-effort — a
152
- manual prune is fine.
173
+ re-appends rather than overwrites the weekly review deliberately
174
+ appends a fresh section instead of editing in place. The daemon's
175
+ daily retention rollup (`rollupAgentJournal`) collapses duplicate
176
+ `## Weekly YYYY-Www` / `## Monthly YYYY-MM` keys last-write-wins
177
+ within 24 hours, so duplicates self-heal; a manual prune is fine but
178
+ rarely needed.
153
179
 
154
180
  ## Related
155
181
 
156
182
  - [Morning Routine](../routines/morning-routine.md) — the recurring
157
- daily writer (Stage B).
158
- - [Weekly Review](../routines/weekly-review.md) — the largest retro,
159
- and the main consumer that reads prior entries back.
183
+ daily writer (via the daemon-side appender).
184
+ - [Weekly Review](../routines/weekly-review.md) — the largest retro.
160
185
  - [Evening Review](../routines/evening-review.md) — appends short
161
186
  bookkeeping lines.
162
187
  - [Activity & Conversations](../operations/activity-and-conversations.md)
163
188
  — the action-shaped audit log, distinct from the reflection-shaped
164
189
  journal.
190
+ - [agent lessons](agent-lessons.md) — the directive-shaped learned-behavior
191
+ stores, distinct from this reflection-shaped diary.
165
192
  - [Memory model](../../concepts/memory-model.md) — how the journal fits
166
193
  the wider context vault.
@@ -0,0 +1,178 @@
1
+ ---
2
+ schema_version: 1
3
+ slug: features/memory-files/agent-lessons
4
+ title: agent lessons
5
+ id: agent-lessons
6
+ aliases:
7
+ - lessons
8
+ - agent lessons
9
+ - feedback learning loop
10
+ - policies/agent-lessons.md
11
+ category: features
12
+ summary: |
13
+ The agent's learned-behavior stores — a global policies/agent-lessons.md
14
+ plus a per-agent policies/agents/<slug>/lessons.md. Your corrections and
15
+ preferences, the agent's own self-critiques, and your reactions are
16
+ captured as feedback signals, consolidated nightly into dated lessons,
17
+ re-generalized monthly, and injected back into the right executions.
18
+ section: memory-files
19
+ tags:
20
+ - memory
21
+ - feedback
22
+ - learning
23
+ - routines
24
+ status: beta
25
+ ask_examples:
26
+ - What are the agent lessons?
27
+ - Where does the agent remember my corrections?
28
+ - How does the feedback learning loop work?
29
+ - What is a provisional lesson?
30
+ - How do I tune the lesson caps?
31
+ locale: en-US
32
+ created: 2026-06-08
33
+ updated: 2026-06-07
34
+ keywords:
35
+ - lessons
36
+ - feedback
37
+ - learning loop
38
+ - corrections
39
+ - preferences
40
+ - self-critique
41
+ - provisional
42
+ related:
43
+ - features/routines/evening-review
44
+ - features/routines/weekly-review
45
+ - features/memory-files/agent-journal
46
+ - reference/knowledge-layout
47
+ process_keys:
48
+ - routine.evening_review
49
+ - routine.weekly_review
50
+ - routine.monthly_review
51
+ context_files:
52
+ - policies/agent-lessons.md
53
+ - policies/agents/<slug>/lessons.md
54
+ ui_anchors:
55
+ - /settings/lessons
56
+ ---
57
+
58
+ # agent lessons
59
+
60
+ ## In one sentence
61
+
62
+ The lesson stores are where the agent remembers how you want it to
63
+ behave: a short, dated list of learned directives that grows from your
64
+ corrections and the agent's own retros, and is fed back into the agent's
65
+ work so it stops repeating the same mistakes.
66
+
67
+ ## What they are
68
+
69
+ There are two kinds of store:
70
+
71
+ - **Global agent behavior** — `policies/agent-lessons.md`. Lessons that
72
+ apply to the agent as a whole. These are injected into your DM
73
+ conversations and into the routines that decide whether to notify you.
74
+ - **Per-agent** — `policies/agents/<slug>/lessons.md`, one per Agent
75
+ Definition. These are injected **only** into that agent's own
76
+ executions, so a lesson learned for your "weekly-report" agent never
77
+ leaks into an unrelated one.
78
+
79
+ Both live under `~/.personal-agent/context/policies/`, alongside your
80
+ other rule files, and are plain Markdown you can read or hand-edit.
81
+
82
+ Each store is a `## Lessons` section of dated bullets. A lesson looks
83
+ like:
84
+
85
+ ```
86
+ - [2026-06-07] Keep the budget section in the weekly report. <!-- ev=2 kind=correction src=explicit conf=high last=2026-06-07 -->
87
+ ```
88
+
89
+ The trailing HTML comment is bookkeeping the daemon manages: how much
90
+ evidence backs the lesson (`ev`), what kind it is (a `correction`, a
91
+ `do-more`/`do-less`, a hard `constraint`, …), how it was sourced, and
92
+ when it was last reinforced. You can ignore the comment when reading —
93
+ the prose before it is the directive.
94
+
95
+ ## How a lesson is born
96
+
97
+ You never write these files to teach the agent a lesson; the loop does
98
+ it for you. There are three ways signals enter:
99
+
100
+ - **You correct it or state a preference.** When, in a DM, you correct
101
+ the agent, tell it how you want something done, or say
102
+ stop / do-more / do-less, it records that once as a feedback signal.
103
+ This does **not** change the current reply — your correction already
104
+ lives in that conversation — but it is remembered for later.
105
+ - **The agent critiques itself.** The [weekly](../routines/weekly-review.md)
106
+ and monthly reviews post each concrete, actionable improvement idea as
107
+ a `self_critique` signal.
108
+ - **Your reactions.** Whether you replied to or ignored a proactive
109
+ message is recorded as a weaker signal.
110
+
111
+ Those raw signals don't become lessons immediately. Each night the
112
+ [evening review](../routines/evening-review.md) folds the day's
113
+ unconsumed signals into the right store as dated lessons, then marks them
114
+ consumed (it skips the step entirely when nothing pends). Once a month
115
+ the monthly review — off by default; opt in by enabling the
116
+ monthly-review agent at `/agents/monthly-review` — runs a re-generalize
117
+ pass that collapses several same-theme lessons into one higher-level
118
+ principle, keeping each store small.
119
+
120
+ ## Provisional vs. active
121
+
122
+ A new lesson is stored but is not necessarily *injected* right away. A
123
+ lesson carries a `<!-- provisional -->` marker until it has enough
124
+ corroborating evidence; provisional lessons sit in the file but are not
125
+ fed into the agent's prompts. This avoids over-fitting to a single
126
+ offhand comment.
127
+
128
+ How a lesson crosses from provisional to active:
129
+
130
+ - A behavioral or self-critique lesson must reach weighted evidence at or
131
+ above the **promotion threshold** (`feedbackPromotionThreshold`,
132
+ default 2). Evidence is weighted by source — an explicit or corrected
133
+ signal counts 1.0, a reply or self-critique 0.5, an ignore 0.25.
134
+ - An **explicit owner directive** ("always do X", "stop doing Y")
135
+ promotes on the first occurrence — it is taken at your word.
136
+ - An **ignore on its own never promotes** a lesson, and is never read as
137
+ disapproval.
138
+
139
+ ## Bounded by design
140
+
141
+ The stores can't grow without limit. Each is capped in bytes and entry
142
+ count — the global store at `feedbackLessonMaxBytesGlobal` bytes
143
+ (default 8192) / 40 entries, the per-agent stores at
144
+ `feedbackLessonMaxBytesPerAgent` (default 4096) / 20 entries. When a
145
+ store is full, the lowest-signal lessons are dropped first. Lessons that
146
+ go untouched for `feedbackLessonStaleDays` (default 60) are pruned — with
147
+ one exception: a `kind=constraint` lesson is durable and is never
148
+ stale-pruned or collapsed away. The underlying feedback signals
149
+ themselves are retained for `feedbackSignalRetentionDays` (default 180).
150
+
151
+ ## Where in the dashboard
152
+
153
+ **Settings → Lessons** (`/settings/lessons`, labelled "Lessons" with a
154
+ **Preview** badge) is the read/tune surface. From there you can view and
155
+ edit the lessons themselves and adjust every knob above:
156
+ `feedbackLearningEnabled` (the master kill-switch, on by default),
157
+ `feedbackPromotionThreshold`, the byte caps, the stale-days horizon, and
158
+ the signal retention window. Turning `feedbackLearningEnabled` off stops
159
+ both capture and consolidation.
160
+
161
+ ## Configuration
162
+
163
+ All of the loop's knobs are listed above and live on the Lessons page;
164
+ there is nothing to configure in the files themselves. Because the stores
165
+ are plain Markdown, **you** can hand-edit, prune, or remove a lesson at
166
+ any time — the loop will pick up from whatever it finds the next night.
167
+
168
+ ## Related
169
+
170
+ - [Evening Review](../routines/evening-review.md) — folds the day's
171
+ feedback signals into these stores each night.
172
+ - [Weekly Review](../routines/weekly-review.md) — posts self-critique
173
+ signals that feed the loop. The optional (off-by-default) monthly
174
+ review re-generalizes the stores once a month.
175
+ - [agent journal](agent-journal.md) — the reflection-shaped diary, a
176
+ separate file from these directive stores.
177
+ - [Knowledge layout](../../reference/knowledge-layout.md) — where the
178
+ `policies/` stores sit in the wider context vault.
@@ -25,7 +25,7 @@ ask_examples:
25
25
  - How does the agent write to a project file?
26
26
  locale: en-US
27
27
  created: 2026-04-25
28
- updated: 2026-05-28
28
+ updated: 2026-06-07
29
29
  keywords:
30
30
  - projects
31
31
  - project file
@@ -56,8 +56,8 @@ project's lifetime.
56
56
 
57
57
  - Captures the project's purpose, status, links, and recent decisions
58
58
  in a single durable note.
59
- - Surfaces in the morning routine while the project is active and the
60
- roadmap has Preparation Timeline rows pointing at it.
59
+ - Surfaces in the morning routine while the project is active (its
60
+ `state` is not `archived`).
61
61
  - Becomes the canonical reference the agent quotes from in DMs.
62
62
 
63
63
  ## File Shape
@@ -67,9 +67,11 @@ only the minimum — `type: project`, `owner: shared`, an `updated`
67
67
  date, and an H1 title. By convention the agent also writes `slug`,
68
68
  `state`, `start`, `due`, `stakeholders`, `next_milestone`, and `tags`.
69
69
 
70
- `state` is what marks a project **active**: the dashboard's project
71
- view filters on it, and the morning routine only surfaces projects
72
- whose `state` is active.
70
+ `state` is what marks a project **active**: the Obsidian `_active.base`
71
+ Bases view filters on it (`state != "archived"`), and the morning
72
+ routine surfaces every project whose `state` is not `archived` — a
73
+ file with no `state` (or any state other than `archived`) is treated
74
+ as active and surfaced.
73
75
 
74
76
  ```markdown
75
77
  ---
@@ -97,8 +99,9 @@ Read on demand. Written when the operator asks the agent to remember
97
99
  something project-specific, or when a DM expresses project intent
98
100
  (create, update status, mark done).
99
101
 
100
- The agent never edits files on disk — it has no `Edit`/`Write` tools.
101
- All project writes go through the context API:
102
+ The agent cannot edit context files on disk — a pre-write hook blocks
103
+ `Edit`/`Write` anywhere inside the context vault. All project writes go
104
+ through the context API:
102
105
 
103
106
  - `GET /api/context/list/projects` — discover existing project files.
104
107
  - `PUT /api/context/plans/projects/<slug>` — create or fully replace.
@@ -24,7 +24,7 @@ ask_examples:
24
24
  - How do I add a roadmap entry?
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
  - roadmap.md
30
30
  - roadmap
@@ -56,9 +56,10 @@ rows that the morning routine fires on the day they come due.
56
56
  - Captures long-running goals that span more than a single day, so
57
57
  they don't fall out of `state/today.md` (which is replaced fresh
58
58
  each morning).
59
- - Preparation Timeline rows like "T-7 days: book hotel" surface in
60
- the morning routine on the day each offset lands turning a far-off
61
- milestone into concrete actions at the right moment.
59
+ - Preparation Timeline rows like "2026-06-13 [notify]: book hotel"
60
+ surface in the morning routine on the day each row is dated (or once
61
+ it is overdue) — turning a far-off milestone into concrete actions at
62
+ the right moment.
62
63
  - Cross-links to project files for deeper context.
63
64
 
64
65
  ## What It Looks Like
@@ -67,25 +68,27 @@ A goal with a Preparation Timeline is just Markdown the agent reads
67
68
  each morning. For example:
68
69
 
69
70
  ```markdown
70
- ## Conference talk — 2026-06-20
71
+ ### 2026-06-20: Conference talk
71
72
 
72
73
  Goal: deliver the keynote in Tokyo.
73
74
 
74
- Preparation Timeline:
75
- - T-14 days: finalize slide deck
76
- - T-7 days: book hotel
77
- - T-2 days: dry run with the team
78
- - T-0: travel day
75
+ **Preparation Timeline:**
76
+ - 2026-06-06 [today]: finalize slide deck
77
+ - 2026-06-13 [notify]: book hotel
78
+ - 2026-06-18 [today]: dry run with the team
79
+ - 2026-06-20 [today]: travel day
79
80
  ```
80
81
 
81
- On 2026-06-06 the morning routine sees the `T-14` offset come due and
82
- pulls "finalize slide deck" into that day's plan; on 2026-06-13 it
83
- surfaces "book hotel", and so on.
82
+ Each Preparation Timeline row carries an absolute date and a tag
83
+ (`[notify]`, `[today]`, `[check]`, or `[schedule]`). On 2026-06-06 the
84
+ morning routine sees the `2026-06-06` row come due and pulls "finalize
85
+ slide deck" into that day's plan; on 2026-06-13 it surfaces "book
86
+ hotel", and so on.
84
87
 
85
88
  ## When It Runs / How It Is Triggered
86
89
 
87
90
  Read by the morning routine each day, which walks the roadmap and
88
- surfaces any Preparation Timeline rows whose offset fires that day.
91
+ surfaces any Preparation Timeline rows dated for that day (or overdue).
89
92
  The file is updated by the operator, or by the agent on request (for
90
93
  example via the roadmap skill or `aitne run-now roadmap_maintenance`).
91
94
 
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - How do I change which sections the daily journal includes?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-28
32
+ updated: 2026-06-10
33
33
  keywords:
34
34
  - daily journal
35
35
  - diary
@@ -43,6 +43,7 @@ related:
43
43
  - concepts/agent-day
44
44
  ui_anchors:
45
45
  - /schedule
46
+ - /agents/morning-routine?tab=rulebook
46
47
  process_keys:
47
48
  - routine.morning_routine_journal
48
49
  context_files:
@@ -122,7 +123,8 @@ do not rewrite them.
122
123
  The daily journal does **not** appear on the Schedule page — that page
123
124
  shows the scheduler's wake-ups and recurring routines, not these files.
124
125
 
125
- - **Journal settings (`/settings/journal`)** is where you shape the
126
+ - **The morning-routine agent's Rulebook tab
127
+ (`/agents/morning-routine?tab=rulebook`)** is where you shape the
126
128
  output: the Format and Export rule files control which sections
127
129
  appear, the voice, the required frontmatter, and the redaction /
128
130
  inclusion rules applied on every synthesis run. Edits take effect on
@@ -132,7 +134,8 @@ shows the scheduler's wake-ups and recurring routines, not these files.
132
134
 
133
135
  There is nothing to configure on the files themselves; they are a
134
136
  side effect of the morning routine. To change *what* gets written, edit
135
- the journal Format and Export rules at `/settings/journal`.
137
+ the journal Format and Export rules on the morning-routine agent's
138
+ Rulebook tab (`/agents/morning-routine?tab=rulebook`).
136
139
 
137
140
  Retention is unlimited — old files accumulate. A manual prune
138
141
  (`rm ~/.personal-agent/context/journal/daily/2025-*.md`) is safe.
@@ -9,7 +9,7 @@ aliases:
9
9
  category: features
10
10
  summary: |
11
11
  today.md is the live plan for the current agent day. The morning
12
- routine rebuilds it each day; the hourly check, evening review,
12
+ routine rebuilds it each day; the activity scan, evening review,
13
13
  and the operator all read and append to it during the day.
14
14
  section: memory-files
15
15
  tags:
@@ -23,7 +23,7 @@ ask_examples:
23
23
  - Why does today.md keep getting rewritten?
24
24
  locale: en-US
25
25
  created: 2026-04-25
26
- updated: 2026-05-28
26
+ updated: 2026-06-07
27
27
  keywords:
28
28
  - today
29
29
  - day plan
@@ -31,7 +31,7 @@ keywords:
31
31
  - handoff
32
32
  related:
33
33
  - features/routines/morning-routine
34
- - features/routines/hourly-check
34
+ - features/routines/activity-scan
35
35
  - features/routines/evening-review
36
36
  - features/memory-files/schedule
37
37
  - concepts/agent-day
@@ -59,7 +59,9 @@ today.md holds six sections, written in this order:
59
59
  - **User Schedule** — the day's calendar events.
60
60
  - **User Tasks** — today's external tasks plus agent-tracked to-dos.
61
61
  - **Agent Plan** — what the agent intends to work on today (each row is
62
- registered as a schedule entry by the morning routine).
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).
63
65
  - **Agent Notes** — look-ahead items and date-bound memos folded in from
64
66
  inbox triage.
65
67
  - **Agent Log** — what actually happened, appended throughout the day.
@@ -69,10 +71,11 @@ today.md holds six sections, written in this order:
69
71
 
70
72
  - The **morning routine** fully rebuilds today.md (the daemon first
71
73
  rotates the previous day's file to `state/yesterday.md`).
72
- - The **hourly check** routes new observations into the right section
74
+ - The **activity scan** routes new observations into the right section
73
75
  and appends short status lines under Agent Log.
74
76
  - The **evening review** finalizes the file — it updates Agent Log and
75
- the Handoff section before writing the daily journal.
77
+ the Handoff section. (The daily journal itself is written the next
78
+ morning, from the rotated file.)
76
79
 
77
80
  ## How It Is Written
78
81
 
@@ -94,6 +97,6 @@ during the morning routine: while the lock is held, a write to
94
97
  ## Related
95
98
 
96
99
  - [Morning routine](../routines/morning-routine.md)
97
- - [Hourly check](../routines/hourly-check.md)
100
+ - [Activity scan](../routines/activity-scan.md)
98
101
  - [Evening review](../routines/evening-review.md)
99
102
  - [schedule/ files](schedule.md)
@@ -13,7 +13,8 @@ category: features
13
13
  summary: |
14
14
  identity/profile.md is the agent's stable profile of the operator — role,
15
15
  focus areas, preferences, names of important people. The agent reads it
16
- on every session and appends only with the operator's permission.
16
+ on every session and silently appends durable facts the operator states
17
+ in DMs.
17
18
  section: memory-files
18
19
  tags:
19
20
  - memory
@@ -26,7 +27,7 @@ ask_examples:
26
27
  - Will the agent change my profile without asking?
27
28
  locale: en-US
28
29
  created: 2026-04-25
29
- updated: 2026-05-28
30
+ updated: 2026-06-07
30
31
  keywords:
31
32
  - user profile
32
33
  - identity/profile.md
@@ -54,8 +55,8 @@ context_files:
54
55
 
55
56
  ## In One Sentence
56
57
 
57
- A stable, mostly hand-edited profile of you — the agent reads it
58
- every session and appends only with explicit permission.
58
+ A stable profile of you — the agent reads it every session and
59
+ silently appends durable facts you state in DMs.
59
60
 
60
61
  ## What It Does
61
62
 
@@ -76,9 +77,12 @@ every session and appends only with explicit permission.
76
77
  ## When It Runs / How It Is Triggered
77
78
 
78
79
  - **Read continuously** — loaded at the start of every session.
79
- - **Written** only when you say "remember that…" in a DM, or during
80
- the profile sweep routine (`routine.user_profile_sweep`), which
81
- routes captured facts into the appropriate `identity/*.md` slice.
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
85
+ `identity/*.md` slice.
82
86
 
83
87
  The agent never edits these files directly. It writes through the
84
88
  daemon's context API — for example
@@ -101,8 +105,9 @@ To tell the agent a durable fact about yourself, just say it in a DM:
101
105
 
102
106
  > remember that my manager is Priya and we sync every Monday at 10am
103
107
 
104
- The agent appends a line to the relevant slice (here `identity/people.md`)
105
- after confirming, and recalls it in future sessions.
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
110
+ sessions.
106
111
 
107
112
  ## When Something Goes Wrong
108
113
 
@@ -6,6 +6,7 @@ id: bang-commands
6
6
  aliases:
7
7
  - "!stop"
8
8
  - "!start"
9
+ - "!status"
9
10
  - "!cost"
10
11
  - "!report"
11
12
  - "!help"
@@ -36,7 +37,7 @@ ask_examples:
36
37
  - How do I accept a research-cluster offer?
37
38
  locale: en-US
38
39
  created: 2026-05-12
39
- updated: 2026-05-28
40
+ updated: 2026-06-07
40
41
  keywords:
41
42
  - bang command
42
43
  - "!stop"
@@ -88,10 +89,21 @@ Pair your messaging app first; see
88
89
  | Command | What it does |
89
90
  |---|---|
90
91
  | `!help` | List every registered command — built-ins plus enabled user commands. |
91
- | `!stop` | Pause cron-driven autonomous work (hourly check, morning / evening / weekly routines, scheduled tasks). In-flight runs are **not** aborted. |
92
+ | `!stop` | Pause cron-driven autonomous work (activity scan, morning / evening / weekly routines, scheduled tasks). In-flight runs are **not** aborted. |
92
93
  | `!start` | Resume autonomous work after `!stop`. |
93
94
  | `!close` | Close the active DM session for the current routing tuple so the next DM starts a fresh conversation. |
94
95
 
96
+ ### Tasks (detached background / browser work)
97
+
98
+ These inspect and cancel the long-running detached workers (background
99
+ tasks and browser tasks). They run ahead of the agent — even while a DM
100
+ turn or a result-delivery turn is in flight — and are safe while paused.
101
+
102
+ | Command | What it does |
103
+ |---|---|
104
+ | `!status` | List the active background + browser tasks (kind, short id, state, title). Empty when nothing is running. |
105
+ | `!stop <id>` | Cancel one task by its id (the short id from `!status` is fine; any unambiguous prefix works). **Bare `!stop` (no id) pauses the whole agent** — the lifecycle command above. |
106
+
95
107
  ### Reporting (pure DB reads, safe while paused)
96
108
 
97
109
  | Command | What it does |
@@ -100,6 +112,7 @@ Pair your messaging app first; see
100
112
  | `!cost claude` · `!cost codex` · `!cost gemini` · `!cost opencode` | Spend for a single backend (one row per registered backend). |
101
113
  | `!report` | Recent agent failures (last 7 days, top groups, most recent sample). |
102
114
  | `!checks` | Today's top browser reload patterns (domain + first path segment). Pure read on `browser_reload_signals`; anchored on the agent-day (`dayBoundaryHour`). Empty state is the common case for a quiet day. |
115
+ | `!revert tuning` | Undo the most recent self-tuning config change (the one announced in a "Self-tuning (R…)" DM). Restores the previous value through the standard config chokepoint and puts the key into a 28-day re-proposal cool-down. Safe while paused. |
103
116
 
104
117
  ### Research clusters (browser-history)
105
118
 
@@ -193,9 +206,10 @@ were hidden.
193
206
 
194
207
  ## How They Behave
195
208
 
196
- - **Exact match for atomic commands** (`!stop`, `!cost`, `!checks`)
197
- and **prefix match for parameterised ones** (`!cost claude`,
198
- `!research accept <slug>`, `!compile @work full`). Anything
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
199
213
  spanning newlines falls through to the agent path so a
200
214
  `"!stop\nignore me"` payload cannot spoof a command.
201
215
  - **DM only.** Bangs typed into a shared channel are ignored.
@@ -207,7 +221,8 @@ were hidden.
207
221
  - **While paused**, any DM (bang or not) replies with the paused
208
222
  notice; only commands that opt into `runsWhilePaused` continue to
209
223
  run: `!stop`, `!start`, `!close`, `!cost` (and `!cost <backend>`),
210
- `!report`, `!help`, `!checks`, `!wiki` (status), and `!wiki help`.
224
+ `!report`, `!help`, `!checks`, `!revert tuning`, `!wiki` (status),
225
+ and `!wiki help`.
211
226
  Every other command — including **all** `!research` subcommands and
212
227
  the LLM-dispatching wiki commands (`!ingest`, `!compile`, `!ask`,
213
228
  `!lint`, `!trace`, `!connect`) — replies with a command-aware