@aitne-sh/aitne 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/agent-assets/agent-profiles/background-task.md +8 -1
  2. package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
  3. package/agent-assets/agents/evening-review/agent.md +6 -2
  4. package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
  5. package/agent-assets/agents/morning-routine/agent.md +7 -2
  6. package/agent-assets/agents/source-librarian/agent.md +51 -0
  7. package/agent-assets/docs/concepts/agent-day.md +15 -15
  8. package/agent-assets/docs/concepts/auth-health.md +10 -7
  9. package/agent-assets/docs/concepts/backends-and-tiers.md +21 -13
  10. package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
  11. package/agent-assets/docs/concepts/delegated-mode.md +18 -18
  12. package/agent-assets/docs/concepts/memory-model.md +25 -24
  13. package/agent-assets/docs/concepts/observations.md +27 -19
  14. package/agent-assets/docs/concepts/process-keys.md +25 -26
  15. package/agent-assets/docs/concepts/routines.md +18 -17
  16. package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
  17. package/agent-assets/docs/concepts/safety-model.md +16 -15
  18. package/agent-assets/docs/concepts/skills.md +7 -4
  19. package/agent-assets/docs/features/integrations/browser-history.md +52 -47
  20. package/agent-assets/docs/features/integrations/calendar.md +7 -7
  21. package/agent-assets/docs/features/integrations/git.md +15 -13
  22. package/agent-assets/docs/features/integrations/github.md +12 -10
  23. package/agent-assets/docs/features/integrations/mail.md +47 -45
  24. package/agent-assets/docs/features/integrations/notion.md +15 -11
  25. package/agent-assets/docs/features/integrations/obsidian.md +27 -23
  26. package/agent-assets/docs/features/lifestyle/git.md +7 -8
  27. package/agent-assets/docs/features/lifestyle/reading.md +11 -8
  28. package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
  29. package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
  30. package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
  31. package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
  32. package/agent-assets/docs/features/memory-files/projects.md +13 -14
  33. package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
  34. package/agent-assets/docs/features/memory-files/schedule.md +10 -10
  35. package/agent-assets/docs/features/memory-files/today.md +18 -18
  36. package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
  37. package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
  38. package/agent-assets/docs/features/messaging/dashboard-chat.md +7 -6
  39. package/agent-assets/docs/features/messaging/discord.md +7 -5
  40. package/agent-assets/docs/features/messaging/overview.md +14 -14
  41. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
  42. package/agent-assets/docs/features/messaging/slack.md +9 -8
  43. package/agent-assets/docs/features/messaging/telegram.md +7 -7
  44. package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
  45. package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
  46. package/agent-assets/docs/features/operations/approvals.md +13 -12
  47. package/agent-assets/docs/features/operations/backend-routing.md +38 -37
  48. package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
  49. package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
  50. package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
  51. package/agent-assets/docs/features/operations/notifications.md +15 -15
  52. package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
  53. package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
  54. package/agent-assets/docs/features/routines/activity-scan.md +14 -11
  55. package/agent-assets/docs/features/routines/custom-routines.md +9 -7
  56. package/agent-assets/docs/features/routines/evening-review.md +6 -7
  57. package/agent-assets/docs/features/routines/morning-routine.md +22 -21
  58. package/agent-assets/docs/features/routines/weekly-review.md +57 -51
  59. package/agent-assets/docs/features/wiki/commands.md +27 -21
  60. package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
  61. package/agent-assets/docs/features/wiki/dashboard.md +21 -23
  62. package/agent-assets/docs/features/wiki/overview.md +17 -25
  63. package/agent-assets/docs/features/wiki/search.md +15 -17
  64. package/agent-assets/docs/features/wiki/workspaces.md +55 -56
  65. package/agent-assets/docs/getting-started/01-what-is-this.md +3 -4
  66. package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
  67. package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
  68. package/agent-assets/docs/getting-started/04-first-day.md +4 -5
  69. package/agent-assets/docs/glossary.md +17 -16
  70. package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
  71. package/agent-assets/docs/guides/backup-and-restore.md +19 -16
  72. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +55 -62
  73. package/agent-assets/docs/guides/build-your-wiki.md +11 -12
  74. package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
  75. package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
  76. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
  77. package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
  78. package/agent-assets/docs/guides/install-and-run.md +9 -10
  79. package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
  80. package/agent-assets/docs/guides/migrate-machines.md +16 -14
  81. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +11 -12
  82. package/agent-assets/docs/guides/pause-the-agent.md +25 -25
  83. package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
  84. package/agent-assets/docs/guides/setup-wizard.md +9 -11
  85. package/agent-assets/docs/guides/switch-default-backend.md +9 -9
  86. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
  87. package/agent-assets/docs/pages/activity.md +76 -0
  88. package/agent-assets/docs/pages/agents.md +78 -0
  89. package/agent-assets/docs/pages/analytics.md +70 -0
  90. package/agent-assets/docs/pages/browser.md +73 -0
  91. package/agent-assets/docs/pages/chat.md +67 -0
  92. package/agent-assets/docs/pages/connections.md +78 -0
  93. package/agent-assets/docs/pages/git.md +73 -0
  94. package/agent-assets/docs/pages/knowledge.md +75 -0
  95. package/agent-assets/docs/pages/overview.md +90 -0
  96. package/agent-assets/docs/pages/reading.md +65 -0
  97. package/agent-assets/docs/pages/settings.md +77 -0
  98. package/agent-assets/docs/pages/tasks.md +74 -0
  99. package/agent-assets/docs/pages/wiki.md +73 -0
  100. package/agent-assets/docs/reference/api.md +18 -17
  101. package/agent-assets/docs/reference/cli-commands.md +13 -10
  102. package/agent-assets/docs/reference/config.md +40 -35
  103. package/agent-assets/docs/reference/disallowed-tools.md +18 -17
  104. package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
  105. package/agent-assets/docs/reference/knowledge-layout.md +10 -10
  106. package/agent-assets/docs/reference/process-keys.md +20 -22
  107. package/agent-assets/docs/reference/skills.md +18 -16
  108. package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
  109. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
  110. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
  111. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
  112. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
  113. package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
  114. package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
  115. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
  116. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
  117. package/agent-assets/skills/agent-create/SKILL.md +39 -5
  118. package/agent-assets/skills/background-task/SKILL.md +9 -4
  119. package/agent-assets/skills/board/SKILL.md +8 -9
  120. package/agent-assets/skills/browser-task/SKILL.md +2 -0
  121. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
  122. package/agent-assets/skills/schedule/SKILL.md +6 -5
  123. package/agent-assets/skills/sources/SKILL.md +68 -0
  124. package/agent-assets/skills/sources/curation.json +21 -0
  125. package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
  126. package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
  127. package/agent-assets/skills/task/SKILL.md +5 -2
  128. package/agent-assets/task-flows/background_task.md +29 -3
  129. package/agent-assets/task-flows/message.received.dm.md +1 -1
  130. package/agent-assets/task-flows/routine.activity_scan.md +17 -2
  131. package/agent-assets/task-flows/routine.evening_review.md +72 -11
  132. package/agent-assets/task-flows/routine.fetch_window.md +21 -0
  133. package/agent-assets/task-flows/routine.monthly_review.md +3 -1
  134. package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
  135. package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
  136. package/agent-assets/task-flows/scheduled.dm.md +8 -3
  137. package/agent-assets/templates/_manifest.json +1 -0
  138. package/agent-assets/templates/knowledge/sources/_index.md +19 -0
  139. package/package.json +4 -4
@@ -21,9 +21,7 @@ summary: |
21
21
  section: wiki
22
22
  tags:
23
23
  - wiki
24
- - search
25
- - fts
26
- - reference
24
+ - knowledge
27
25
  status: stable
28
26
  ask_examples:
29
27
  - How does !ask find the right wiki pages?
@@ -36,7 +34,7 @@ ask_examples:
36
34
  - What is fts_wiki?
37
35
  locale: en-US
38
36
  created: 2026-05-21
39
- updated: 2026-06-07
37
+ updated: 2026-07-01
40
38
  keywords:
41
39
  - wiki search
42
40
  - fts_wiki
@@ -83,9 +81,9 @@ The wiki exposes two read paths the skills use to find content:
83
81
  A short, human-readable list with one bullet per wiki page, kept
84
82
  current by every `!compile` run. Good for "give me the lay of the
85
83
  land" queries.
86
- 2. **`fts_wiki`** — a content-less SQLite FTS5 virtual table the
87
- daemon syncs on every successful disk write. Good for "find any
88
- page that mentions X" queries.
84
+ 2. **`fts_wiki`** — a full-text search index (a content-less SQLite
85
+ FTS5 virtual table) the daemon syncs on every successful disk
86
+ write. Good for "find any page that mentions X" queries.
89
87
 
90
88
  Both surfaces are read-only consumers; only `!compile` writes the
91
89
  catalogue, and only the wiki API write endpoints update `fts_wiki`.
@@ -139,9 +137,9 @@ CREATE VIRTUAL TABLE IF NOT EXISTS fts_wiki USING fts5(
139
137
  ```
140
138
 
141
139
  The `unicode61` tokenizer with `remove_diacritics 2` matches the
142
- mail FTS table for consistency. CJK content is handled by code-point
143
- breaking searches work for Japanese, Chinese, Korean, and
144
- mixed-script wikis.
140
+ mail FTS table for consistency. CJK (Chinese, Japanese, Korean)
141
+ content is handled by code-point breaking, so searches work across
142
+ those scripts and mixed-script wikis.
145
143
 
146
144
  ### Layer prefixes
147
145
 
@@ -157,9 +155,9 @@ The path classifier maps each on-disk file to one of six layers:
157
155
  Only four of these are actually indexed. `upsertWikiFulltextRow`
158
156
  **drops `log` and `inbox` rows** before insert: `log.md` is an
159
157
  append-only audit trail and `00_inbox/` is human-only, so indexing
160
- them would bury wiki and raw matches under log noise. So the values
161
- you ever see in `fts_wiki.layer` are `raw`, `wiki`, `output`, and
162
- `meta`.
158
+ them would bury wiki and raw matches under log noise. So the only
159
+ values you ever see in `fts_wiki.layer` are `raw`, `wiki`, `output`,
160
+ and `meta`.
163
161
 
164
162
  Searches can filter by layer to restrict the result set — e.g.
165
163
  `layer=wiki` for only canonical pages, not raw notes.
@@ -173,7 +171,7 @@ evidence. The query supports:
173
171
 
174
172
  - `q` — the search query. Each whitespace-separated token is quoted
175
173
  and joined by implicit AND, so a multi-word query narrows the
176
- result set. (Tokens are quoted to neutralise FTS5's `AND`/`OR`/
174
+ result set. (Tokens are quoted to neutralize FTS5's `AND`/`OR`/
177
175
  `NOT`/`NEAR` operator vocabulary — typing literally `rust AND go`
178
176
  matches those words, it does not parse as a boolean.)
179
177
  - `layer` — restrict to a single indexed layer (`raw` / `wiki` /
@@ -187,8 +185,8 @@ evidence. The query supports:
187
185
 
188
186
  Each result row carries `path`, `layer`, `title`, a body `snippet`
189
187
  (FTS5 `snippet()` output, `<mark>`-wrapped), `mtime` so the caller
190
- can rank by recency, and a BM25 `rank` (lower is better, `title`
191
- weighted above `body`).
188
+ can rank by recency, and a BM25 relevance `rank` (lower is better,
189
+ `title` weighted above `body`).
192
190
 
193
191
  There is no dashboard content-search bar today — the FTS surface is
194
192
  used by the agent, not the user UI. The dashboard timeline
@@ -222,7 +220,7 @@ A simplified flow for `!ask <question>`:
222
220
  question's key terms.
223
221
  2. It reads `10_raw/` notes only when the wiki pages need source
224
222
  verification.
225
- 3. The LLM synthesises an answer from the pages it pulled.
223
+ 3. The LLM synthesizes an answer from the pages it pulled.
226
224
  4. The answer is written to
227
225
  `30_outputs/<YYYY-MM-DD>-<slug>.md` (the date-prefixed output
228
226
  shape the `OUTPUT_RE` path check enforces). The file records the
@@ -24,7 +24,6 @@ tags:
24
24
  - wiki
25
25
  - workspaces
26
26
  - config
27
- - core
28
27
  status: stable
29
28
  ask_examples:
30
29
  - What is a wiki workspace?
@@ -37,7 +36,7 @@ ask_examples:
37
36
  - Can two wikis live in nested folders?
38
37
  locale: en-US
39
38
  created: 2026-05-21
40
- updated: 2026-06-07
39
+ updated: 2026-07-01
41
40
  keywords:
42
41
  - wiki workspace
43
42
  - workspace
@@ -87,10 +86,10 @@ config_keys:
87
86
  # Wiki Workspaces, Vaults, and Write Strategy
88
87
 
89
88
  A **wiki workspace** is one row in the `wiki_workspaces` table plus
90
- the directory tree it points at. Aitne ships with no active
91
- workspace; the first run of the Enable flow creates one named
92
- `default`. Phase 5 unlocked multi-workspace you can run as many
93
- side-by-side wikis as you have distinct knowledge domains.
89
+ the directory tree it points at. Aitne starts with no active
90
+ workspace. The first run of the Enable flow creates one named
91
+ `default`. You can run as many side-by-side wikis as you have
92
+ distinct knowledge domains one per subject is a common setup.
94
93
 
95
94
  ## Internal vs external mode
96
95
 
@@ -109,8 +108,8 @@ Path-collision rules apply to both modes:
109
108
  - Two wiki workspaces may not nest — neither root can be inside the other.
110
109
 
111
110
  The dashboard probe (`POST /api/wiki/workspaces/probe`) runs these
112
- checks live before the workspace row is written and surfaces a
113
- human-readable error if any rule trips.
111
+ checks live before the workspace row is written, and shows a
112
+ plain-language error if any rule is broken.
114
113
 
115
114
  ## The layered layout
116
115
 
@@ -126,19 +125,19 @@ top-level subdirectories plus a workspace-root `log.md`:
126
125
  | `90_meta/` | Wiki agent | Taxonomy (`taxonomy.md`), schemas, health reports (`90_meta/health/<date>.md`), migration records (`90_meta/health/pre-migrate-<date>/`). |
127
126
  | `log.md` | Wiki agent (append-only) | One line per write. Drives the dashboard timeline. |
128
127
 
129
- The DM agent can read wiki search and index routes, but only the
128
+ The DM agent can read the wiki search and index routes, but only the
130
129
  wiki process keys (`wiki.ingest_url`, `wiki.compile`, `wiki.ask`,
131
- `wiki.lint`, `wiki.trace`, `wiki.connect`) can write into these
132
- layers. The chokepoint is `POST /api/wiki/:workspace/files/:path`
133
- the route validates the layer the path resolves into and rejects
134
- writes to `00_inbox/` unconditionally.
130
+ `wiki.lint`, `wiki.trace`, `wiki.connect`) may write into these
131
+ layers. Every write funnels through one route,
132
+ `POST /api/wiki/:workspace/files/:path`, which checks which layer the
133
+ path lands in and always rejects writes to `00_inbox/`.
135
134
 
136
135
  ## Multi-workspace addressing
137
136
 
138
- Every wiki bang command accepts an optional `@<name>` token
139
- immediately after the bang to target a specific workspace. The token
140
- is parsed before the command's own argument parser sees the rest, so
141
- multi-word topics and comma-separated arguments work as normal:
137
+ Every wiki bang command takes an optional `@<name>` token right
138
+ after the bang to aim at a specific workspace. Aitne reads this token
139
+ before the command parses the rest of the line, so multi-word topics
140
+ and comma-separated arguments still work as usual:
142
141
 
143
142
  ```
144
143
  !compile @research full
@@ -146,15 +145,15 @@ multi-word topics and comma-separated arguments work as normal:
146
145
  !connect @research diffusion models, score matching
147
146
  ```
148
147
 
149
- Omit the token and the command targets the **default** workspace —
150
- in practice the oldest active workspace (lowest id), which is the one
151
- named `default` on a fresh install, or the next-oldest active
152
- workspace if `default` has been archived.
148
+ Leave the token off and the command targets the **default**
149
+ workspace — in practice the oldest active workspace (lowest id). That
150
+ is the one named `default` on a fresh install, or the next-oldest
151
+ active workspace if `default` has been archived.
153
152
 
154
- A workspace name after `@` must start with a letter or digit and then
155
- contain only letters, digits, `.`, `_`, or `-` (max 64 chars). An
156
- invalid token is rejected with a usage error rather than silently
157
- falling back to the default.
153
+ A workspace name after `@` must start with a letter or digit, and the
154
+ rest may contain only letters, digits, `.`, `_`, or `-` (max 64
155
+ chars). An invalid token gets a usage error rather than a silent
156
+ fall-back to the default.
158
157
 
159
158
  See [guides/multiple-wikis-for-multiple-domains](../../guides/multiple-wikis-for-multiple-domains.md)
160
159
  for a walkthrough.
@@ -172,18 +171,18 @@ write. Three values:
172
171
  running). Used for external vaults that live in sandboxed
173
172
  locations (typically iCloud-synced vaults) where direct fs writes
174
173
  fail with `EPERM` / `EACCES` / `EROFS` / `EBUSY`.
175
- - **`auto`** — the resolver tries `fs` first, falls back to `cli`
176
- on those sandbox error codes, and persists the resolved value back
177
- to the row so subsequent writes skip the probe.
174
+ - **`auto`** — tries `fs` first, falls back to `cli` on those
175
+ sandbox error codes, and saves the value it settled on back to the
176
+ row so later writes skip the check.
178
177
 
179
178
  Internal workspaces are pinned to `fs`. External workspaces start in
180
- `auto` and self-tune. You can override the resolved value from
181
- `/settings/wiki` if you need to force one path or the other (e.g. to
182
- test the CLI path on a non-sandboxed vault).
179
+ `auto` and tune themselves. You can override the resolved value from
180
+ `/settings/wiki` if you need to force one path or the other (for
181
+ example, to test the CLI path on a non-sandboxed vault).
183
182
 
184
- The resolved strategy is surfaced in the workspace API response and
185
- on the `/settings/wiki` row, so you can always see which path
186
- (`fs` or `cli`) `auto` settled on. The full design is in
183
+ The resolved strategy shows up in the workspace API response and on
184
+ the `/settings/wiki` row, so you can always see which path (`fs` or
185
+ `cli`) `auto` settled on. The full design is in
187
186
  WIKI_BUILDER_DESIGN.md §P2.B / §8.
188
187
 
189
188
  ## Dispatch mode (`parallel` / `serial`)
@@ -191,13 +190,13 @@ WIKI_BUILDER_DESIGN.md §P2.B / §8.
191
190
  `!ingest` honours the per-workspace **dispatch mode** in
192
191
  `/settings/wiki`:
193
192
 
194
- - **Parallel** (default): all URLs fan out simultaneously up to the
195
- per-URL concurrency cap (`wiki_workspaces.concurrency_cap`, default
196
- `3`, valid range 1–10). Fastest; small risk of bursting rate
197
- limits at the URL host.
198
- - **Serial**: URLs are enqueued in submitted order; each agent
199
- session starts only after the previous one completes. Slower but
200
- predictable budget and rate.
193
+ - **Parallel** (default): all URLs run at once, up to the per-URL
194
+ concurrency cap (`wiki_workspaces.concurrency_cap`, default `3`,
195
+ valid range 1–10). Fastest, with a small risk of tripping rate
196
+ limits at the URL's host.
197
+ - **Serial**: URLs run in the order you submitted them; each agent
198
+ session starts only after the previous one finishes. Slower, but
199
+ the budget and request rate stay predictable.
201
200
 
202
201
  The acknowledgement DM tells you which mode ran
203
202
  (`in parallel` / `serially`).
@@ -205,10 +204,10 @@ The acknowledgement DM tells you which mode ran
205
204
  ## Language
206
205
 
207
206
  `wiki_workspaces.language` is the workspace's content language. It
208
- defaults to `en` and is independent of `runtimeSettings.primaryLanguage`
209
- — see WIKI_BUILDER_DESIGN.md §14 Q2 for the reasoning. You can pick
210
- any language tag from the picker in `/settings/wiki`; the value is
211
- passed to the wiki skills as the target language for compiled
207
+ defaults to `en` and is separate from `runtimeSettings.primaryLanguage`
208
+ — see WIKI_BUILDER_DESIGN.md §14 Q2 for the reasoning. Pick any
209
+ language tag from the picker in `/settings/wiki`; Aitne passes that
210
+ value to the wiki skills as the target language for compiled
212
211
  articles, ask answers, and trace / connect outputs.
213
212
 
214
213
  The wiki language does **not** cascade from your primary language at
@@ -217,16 +216,16 @@ wiki in English, and vice versa.
217
216
 
218
217
  ## Archive vs delete
219
218
 
220
- - **Archive** — flips `active=0` on the row but keeps the on-disk
219
+ - **Archive** — sets `active=0` on the row but keeps the on-disk
221
220
  data and the row's metadata. Bang commands cannot target an
222
- archived workspace; the dashboard hides it from the active list
223
- but surfaces it in an "Archived" collapsible. You can unarchive by
224
- re-enabling the workspace.
225
- - **Delete** — drops the row. On-disk data is **not** removed for
226
- external workspaces (the daemon never deletes the user's vault).
227
- For internal workspaces, the disk tree is also left in place under
228
- `$PA_DATA_DIR/context/knowledge/wiki/<name>` — recover by re-creating
229
- a workspace at the same name.
221
+ archived workspace; the dashboard hides it from the active list and
222
+ tucks it into an "Archived" collapsible. Re-enable the workspace to
223
+ unarchive it.
224
+ - **Delete** — drops the row. The on-disk data is **not** removed for
225
+ external workspaces (the daemon never deletes your vault). For
226
+ internal workspaces, the disk tree is also left in place under
227
+ `$PA_DATA_DIR/context/knowledge/wiki/<name>` — to recover, create a
228
+ workspace again with the same name.
230
229
 
231
230
  ## Fields and defaults reference
232
231
 
@@ -250,5 +249,5 @@ Quick map between the dashboard knobs and the `wiki_workspaces` row:
250
249
  | Active | `active` | `1` |
251
250
 
252
251
  `dm_agent_write_enabled=0` is the safe default — the DM agent can
253
- only call the read-side wiki routes; writes happen inside dedicated
254
- `wiki.*` sessions spawned by bang commands.
252
+ only call the read-side wiki routes. Writes happen inside dedicated
253
+ `wiki.*` sessions that bang commands spawn.
@@ -18,7 +18,6 @@ summary: |
18
18
  Markdown files.
19
19
  section: getting-started
20
20
  tags:
21
- - core
22
21
  - getting-started
23
22
  - backends
24
23
  status: stable
@@ -42,7 +41,7 @@ keywords:
42
41
  - markdown memory
43
42
  - backends
44
43
  created: 2026-04-25
45
- updated: 2026-05-28
44
+ updated: 2026-07-01
46
45
  context_files:
47
46
  - state/today.md
48
47
  - plans/roadmap.md
@@ -59,7 +58,7 @@ related:
59
58
  # What is Aitne?
60
59
 
61
60
  Aitne is a local-first personal AI agent. It runs as a long-running
62
- daemon on your own machine, drives Claude Code, Codex CLI, Gemini
61
+ background program (a daemon) on your own machine, drives Claude Code, Codex CLI, Gemini
63
62
  CLI, or OpenCode (`@opencode-ai/sdk` server) via provider API keys
64
63
  you register (with the CLI's local subscription login as a
65
64
  fallback), and keeps all of its memory as plain Markdown files under
@@ -122,7 +121,7 @@ decides what (if anything) is worth telling you about.
122
121
 
123
122
  - [Mail](../features/integrations/mail.md) — Gmail, Outlook, Yahoo,
124
123
  iCloud, or any IMAP server. Searches your messages locally via
125
- FTS5. Auto-classifies into
124
+ FTS5 (SQLite's built-in full-text search). Auto-classifies into
126
125
  [reading list](../features/lifestyle/reading.md),
127
126
  [receipts](../features/lifestyle/receipts.md), and
128
127
  [travel bookings](../features/lifestyle/travel-bookings.md).
@@ -14,7 +14,6 @@ summary: |
14
14
  pair a messaging app, and arrive at a green health pill.
15
15
  section: getting-started
16
16
  tags:
17
- - core
18
17
  - getting-started
19
18
  - setup
20
19
  status: stable
@@ -31,7 +30,7 @@ keywords:
31
30
  - dashboard onboarding
32
31
  - health pill
33
32
  created: 2026-04-27
34
- updated: 2026-06-07
33
+ updated: 2026-07-01
35
34
  related:
36
35
  - getting-started/01-what-is-this
37
36
  - getting-started/03-what-can-this-do
@@ -70,19 +69,19 @@ skippable in the wizard. Run through it once, top to bottom.
70
69
  the daemon claims you as the owner. See
71
70
  [Messaging Overview](../features/messaging/overview.md) for the
72
71
  list of supported apps and what each one does well.
73
- 3. **Pick a main backend and register an API key.** Pick the LLM
72
+ 3. **Pick a main backend and register an API key.** This is the LLM
74
73
  the agent uses for "think hard" turns (Claude / Codex / Gemini /
75
- OpenCode) and paste a provider API key — the supported way to run
76
- a headless agent. If you skip the key, the daemon falls back to
77
- whatever subscription login the matching CLI already has on your
78
- machine; the dashboard surfaces a warning when this happens
79
- because most providers do not support running agents on a
80
- personal subscription. The same picker also lets you point the
74
+ OpenCode). Paste a provider API key — that is the supported way
75
+ to run the agent unattended (with no human signed in). If you skip
76
+ the key, the daemon falls back to whatever subscription login the
77
+ matching CLI already has on your machine, and the dashboard shows
78
+ a warning, because most providers do not support running agents on
79
+ a personal subscription. The same picker can instead point the
81
80
  backend at a cloud provider (Bedrock / Vertex / Foundry / Azure
82
- OpenAI / Gemini-Vertex) instead of the direct API key — the
83
- provider dropdown on `/settings/models` is the single surface for
84
- both direct keys and cloud-provider credentials. Defaults are
85
- sensible and can be changed later from `/settings/models`.
81
+ OpenAI / Gemini-Vertex) rather than a direct API key — the provider
82
+ dropdown on `/settings/models` is the single place for both direct
83
+ keys and cloud-provider credentials. The defaults are sensible, and
84
+ you can change them later from `/settings/models`.
86
85
  Background: [Backends and Tiers](../concepts/backends-and-tiers.md).
87
86
  4. **Skip integrations you do not need yet.** Mail, calendar, git,
88
87
  Notion, Obsidian are all optional and re-runnable any time from
@@ -14,7 +14,6 @@ summary: |
14
14
  granularity, with a link to the detailed feature doc for each.
15
15
  section: getting-started
16
16
  tags:
17
- - core
18
17
  - getting-started
19
18
  - routines
20
19
  - messaging
@@ -35,7 +34,7 @@ keywords:
35
34
  - wiki
36
35
  - lifestyle
37
36
  created: 2026-04-27
38
- updated: 2026-05-28
37
+ updated: 2026-07-01
39
38
  related:
40
39
  - getting-started/01-what-is-this
41
40
  - getting-started/02-first-steps
@@ -110,16 +109,17 @@ them — the agent reads what's there next time it runs.
110
109
 
111
110
  ## Build a personal wiki from what you DM
112
111
 
113
- A workspace-scoped builder turns URLs, pastes, and notes you send into a
114
- linked Markdown wiki. The raw capture, the synthesised article, and the
115
- cited answer all stay on disk and the agent only writes via the daemon
116
- API so the layout invariants hold.
112
+ Send the agent URLs, pastes, or notes and it builds them into a linked
113
+ Markdown wiki inside a dedicated workspace. The raw capture, the
114
+ synthesized article, and any cited answer all stay as files on disk. The
115
+ agent writes only through the daemon API, which keeps the folder layout
116
+ consistent.
117
117
 
118
118
  - [Wiki Overview](../features/wiki/overview.md) — the workspace concept,
119
119
  the `00_inbox` / `10_raw` / `20_wiki` / `30_outputs` layers, and the
120
120
  approval gate on full rebuilds.
121
121
  - [Wiki Commands](../features/wiki/commands.md) — `!ingest` (capture
122
- URLs), `!compile` (synthesise), `!ask` (cited Q&A), `!lint` /
122
+ URLs), `!compile` (synthesize), `!ask` (cited Q&A), `!lint` /
123
123
  `!trace` / `!connect` (audit, history, bridges), `!wiki` (status).
124
124
  - [Build Your Wiki](../guides/build-your-wiki.md) — the first-day
125
125
  walkthrough from empty workspace to first answered question.
@@ -15,7 +15,6 @@ aliases:
15
15
  - day zero
16
16
  section: getting-started
17
17
  tags:
18
- - core
19
18
  - getting-started
20
19
  - setup
21
20
  - integrations
@@ -52,7 +51,7 @@ context_files:
52
51
  api_endpoints:
53
52
  - POST /api/knowledge/import
54
53
  created: 2026-04-25
55
- updated: 2026-06-10
54
+ updated: 2026-07-01
56
55
  related:
57
56
  - getting-started/02-first-steps
58
57
  - getting-started/03-what-can-this-do
@@ -119,9 +118,9 @@ Send 3–5 DMs that read like introductions to a new assistant:
119
118
 
120
119
  The agent appends each fact to the right `identity/*.md` file (work
121
120
  facts → `identity/work.md`, people → `identity/people.md`, preferences →
122
- `identity/personal.md`, and so on). Identity-class facts (legal name,
123
- primary timezone) are deferred for your explicit confirmation
124
- rather than auto-written.
121
+ `identity/personal.md`, and so on). Identity-class facts (your legal
122
+ name, your primary timezone) wait for you to confirm them instead of
123
+ being written automatically.
125
124
 
126
125
  ### Bootstrap from ChatGPT, Gemini, or anywhere else
127
126
 
@@ -13,9 +13,7 @@ summary: |
13
13
  Single flat term list for Aitne vocabulary. Cross-references
14
14
  link to a single canonical anchor here so concept docs do not drift.
15
15
  tags:
16
- - core
17
- - reference
18
- - glossary
16
+ - knowledge
19
17
  status: stable
20
18
  ask_examples:
21
19
  - What is a ProcessKey?
@@ -35,7 +33,7 @@ ask_examples:
35
33
  - What is an observation?
36
34
  locale: en-US
37
35
  created: 2026-04-25
38
- updated: 2026-06-07
36
+ updated: 2026-07-01
39
37
  keywords:
40
38
  - terminology
41
39
  - vocabulary
@@ -102,7 +100,7 @@ and rationale.
102
100
 
103
101
  ## Backend
104
102
 
105
- One of the model providers Aitne can dispatch to: `claude`
103
+ One of the AI model providers Aitne can send work to: `claude`
106
104
  (Claude Code SDK), `codex` (Codex CLI), `gemini` (Gemini CLI), or
107
105
  `opencode` (`@opencode-ai/sdk` HTTP server). Each backend is configured
108
106
  per-installation; one is the **main backend**, and the others can be
@@ -110,12 +108,13 @@ enabled as fallbacks.
110
108
 
111
109
  ## Browser History (B-3)
112
110
 
113
- Local-only history poller that reads the browser's own SQLite database
111
+ A local-only poller that reads the browser's own SQLite history database
114
112
  (Chromium-based browsers — Chrome, Chromium, Edge, Brave, Comet, Atlas)
115
- and records page visits as observations. Drives the **research cluster** derivation, the weekly
116
- reload-memory block, and the [`!checks`](features/messaging/bang-commands.md)
117
- on-demand reload tally. No content is uploaded; only URLs, titles, and
118
- visit timings the browser itself recorded. See
113
+ and records page visits as observations. It feeds the **research cluster**
114
+ derivation, the weekly reload-memory block, and the
115
+ [`!checks`](features/messaging/bang-commands.md) on-demand reload tally.
116
+ Nothing is uploaded — only the URLs, titles, and visit timings the browser
117
+ itself already recorded. See
119
118
  [Browser History](features/integrations/browser-history.md).
120
119
 
121
120
  ## Managed Chromium (B-4)
@@ -146,8 +145,9 @@ enabled custom commands appear in `!help`. See
146
145
 
147
146
  ## Backend Router
148
147
 
149
- The component that resolves a `ProcessKey` to a concrete `(backend,
150
- model, maxTurns, maxBudgetUsd)` binding at dispatch time. Lives in
148
+ The component that turns a `ProcessKey` into a concrete `(backend,
149
+ model, maxTurns, maxBudgetUsd)` binding at dispatch time (the moment an
150
+ invocation is handed to a backend). Lives in
151
151
  `packages/daemon/src/core/backends/backend-router.ts`. Routing reads
152
152
  `process_backend_config` (per-process pins) layered over
153
153
  `backend_global_defaults` (installation-wide defaults).
@@ -160,8 +160,8 @@ matching anchor.
160
160
 
161
161
  ## Day Boundary
162
162
 
163
- The hour-of-day at which the agent day rolls over. Configured via
164
- `dayBoundaryHour` (default `4`).
163
+ The hour of the day when the agent day rolls over (when "today" starts
164
+ fresh). Configured via `dayBoundaryHour` (default `4`).
165
165
 
166
166
  ## deniedTools
167
167
 
@@ -262,7 +262,7 @@ in 2026-05 to trim morning-routine input tokens by ~24%.
262
262
 
263
263
  ## Observation
264
264
 
265
- One row in the `observations` table. A change record a polling
265
+ One row in the `observations` table. A change record that a polling
266
266
  integration (Obsidian, Git, Notion, calendar, mail, browser history)
267
267
  or a `routine.fetch_window` pre-pass wrote into SQLite. The
268
268
  `routine.activity_scan` is the consumer — there is no per-change
@@ -272,7 +272,8 @@ to break the agent-observing-its-own-writes loop. See
272
272
 
273
273
  ## ProcessKey
274
274
 
275
- The branded string identifier for a class of agent invocation, e.g.
275
+ The typed string identifier (a "branded" string in the TypeScript code)
276
+ for a class of agent invocation, e.g.
276
277
  `routine.morning_routine`, `message.dm`, `dashboard.docs_qa`. Drives
277
278
  backend selection, skill manifest, agent profile, and task-flow
278
279
  template lookup. Defined in `packages/shared/src/process-key.ts`.
@@ -18,12 +18,10 @@ summary: |
18
18
  prompt for every run; runs appear on the Agent's detail page.
19
19
  section: add-a-custom-routine
20
20
  tags:
21
- - guides
22
21
  - agents
23
22
  - routines
24
23
  - scheduler
25
24
  - autonomous
26
- - core
27
25
  status: stable
28
26
  ask_examples:
29
27
  - How do I create a recurring agent?
@@ -32,7 +30,7 @@ ask_examples:
32
30
  - Where do I see my agent's runs?
33
31
  locale: en-US
34
32
  created: 2026-04-25
35
- updated: 2026-06-10
33
+ updated: 2026-07-01
36
34
  keywords:
37
35
  - recurring agent
38
36
  - new agent
@@ -60,8 +58,8 @@ related:
60
58
 
61
59
  ## Goal
62
60
 
63
- Make the agent fire a particular kind of work on a schedule you pick
64
- as a user **Agent** you can watch, tune, and toggle from `/agents`.
61
+ Run a task you write on a schedule you pick, packaged as a user
62
+ **Agent** you can watch, tune, and toggle from `/agents`.
65
63
 
66
64
  ## Prerequisites
67
65
 
@@ -89,7 +87,7 @@ as a user **Agent** you can watch, tune, and toggle from `/agents`.
89
87
  becomes the Markdown body of `agent.md` and is the prompt the
90
88
  agent receives every time it fires.
91
89
  - An **Advanced (YAML)** toggle reveals the raw `agent.md` editor
92
- for long-tail fields the form doesn't expose (tags, tools,
90
+ for the extra fields the form doesn't expose (tags, tools,
93
91
  success criteria, error handling).
94
92
  3. Save. The dashboard writes `policies/agents/<slug>/agent.md`
95
93
  through the context vault and opens the new Agent's detail page;
@@ -114,7 +112,10 @@ curl -X POST http://localhost:8321/api/agents \
114
112
  ```
115
113
 
116
114
  - **`prompt` becomes the Agent's task prompt** — it is stored as the
117
- Markdown body of `agent.md` and sent to the agent on every run.
115
+ Markdown body of `agent.md` and sent to the agent on every run. It
116
+ must be a real task definition: an empty body or a stand-in like
117
+ `"placeholder"`/`"TODO"` is rejected as `400 invalid_definition`
118
+ (the agent would skip every run as too ambiguous to act on).
118
119
  - **`schedule`** takes one of two forms: a raw 5-field cron
119
120
  (`{ "kind": "cron", "expression": "0 11 * * 2" }`, interpreted in
120
121
  the daemon's timezone unless `schedule.timezone` is set) or a
@@ -122,8 +123,8 @@ curl -X POST http://localhost:8321/api/agents \
122
123
  "weekly", "daysOfWeek": ["tuesday"], "time": "11:00" } }`).
123
124
  `/agents` is recurring-only — a one-time task belongs on
124
125
  `POST /api/schedule` instead.
125
- - **`backend.tier`** is optional; omitted, the Agent inherits the
126
- `agent.task` process default (medium). `backend.process_key`
126
+ - **`backend.tier`** is optional; if you omit it, the Agent inherits
127
+ the `agent.task` process default (medium). `backend.process_key`
127
128
  defaults to `agent.task` — you don't need to set it.
128
129
  - **`limits`** defaults: 20 turns, $0.25 per run, 10-minute timeout.
129
130
  - Success returns `201 { "status": "created", "slug": ... }`. A taken
@@ -152,9 +153,13 @@ curl -X POST http://localhost:8321/api/agents \
152
153
  - `400 invalid_definition` — fix the fields listed in `issues`.
153
154
  - `400 one_shot_not_supported` — `/agents` is recurring-only; use
154
155
  `POST /api/schedule` for one-time work.
155
- - A prompt that hits the absolute-block guardrails: the run fires but
156
- the offending tool call is logged as `blocked_absolute` in the
157
- action log.
156
+ - **Run now** returns `409 agent_prompt_placeholder` the Agent's
157
+ stored prompt is empty or still a placeholder stub (possible for
158
+ Agents created before this was validated); write the real task into
159
+ its `agent.md` and try again.
160
+ - A prompt that trips the absolute-block guardrails — the run still
161
+ executes, but the offending tool call is logged as `blocked_absolute`
162
+ in the action log.
158
163
 
159
164
  ## Migrating From Custom Routines
160
165