@aitne-sh/aitne 0.1.9 → 0.1.10

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 (153) hide show
  1. package/README.md +36 -6
  2. package/agent-assets/docs/concepts/agent-day.md +2 -2
  3. package/agent-assets/docs/concepts/costs-and-quotas.md +4 -3
  4. package/agent-assets/docs/concepts/delegated-mode.md +5 -5
  5. package/agent-assets/docs/concepts/memory-model.md +6 -3
  6. package/agent-assets/docs/concepts/safety-model.md +19 -16
  7. package/agent-assets/docs/concepts/skills.md +2 -2
  8. package/agent-assets/docs/features/integrations/browser-history.md +9 -8
  9. package/agent-assets/docs/features/integrations/calendar.md +4 -4
  10. package/agent-assets/docs/features/integrations/mail.md +3 -2
  11. package/agent-assets/docs/features/lifestyle/git.md +3 -3
  12. package/agent-assets/docs/features/lifestyle/reading.md +15 -8
  13. package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
  14. package/agent-assets/docs/features/memory-files/agent-journal.md +30 -12
  15. package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
  16. package/agent-assets/docs/features/memory-files/projects.md +6 -4
  17. package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
  18. package/agent-assets/docs/features/messaging/overview.md +5 -5
  19. package/agent-assets/docs/features/messaging/telegram.md +10 -9
  20. package/agent-assets/docs/features/operations/activity-and-conversations.md +5 -4
  21. package/agent-assets/docs/features/operations/approvals.md +6 -5
  22. package/agent-assets/docs/features/operations/managed-chromium.md +3 -2
  23. package/agent-assets/docs/features/operations/quiet-hours.md +4 -3
  24. package/agent-assets/docs/features/routines/custom-routines.md +11 -7
  25. package/agent-assets/docs/features/routines/evening-review.md +10 -2
  26. package/agent-assets/docs/features/routines/morning-routine.md +4 -3
  27. package/agent-assets/docs/features/routines/weekly-review.md +6 -0
  28. package/agent-assets/docs/features/wiki/commands.md +4 -4
  29. package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
  30. package/agent-assets/docs/features/wiki/dashboard.md +7 -6
  31. package/agent-assets/docs/features/wiki/overview.md +3 -3
  32. package/agent-assets/docs/features/wiki/search.md +5 -5
  33. package/agent-assets/docs/features/wiki/workspaces.md +2 -2
  34. package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
  35. package/agent-assets/docs/getting-started/04-first-day.md +2 -2
  36. package/agent-assets/docs/glossary.md +4 -4
  37. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
  38. package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
  39. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
  40. package/agent-assets/docs/guides/install-and-run.md +2 -2
  41. package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
  42. package/agent-assets/docs/guides/pause-the-agent.md +9 -5
  43. package/agent-assets/docs/guides/setup-wizard.md +8 -5
  44. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
  45. package/agent-assets/docs/reference/api.md +15 -5
  46. package/agent-assets/docs/reference/cli-commands.md +3 -3
  47. package/agent-assets/docs/reference/config.md +21 -4
  48. package/agent-assets/docs/reference/disallowed-tools.md +6 -4
  49. package/agent-assets/docs/reference/knowledge-layout.md +11 -2
  50. package/agent-assets/docs/reference/process-keys.md +2 -2
  51. package/agent-assets/docs/reference/skills.md +5 -4
  52. package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
  53. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
  54. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
  55. package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
  56. package/agent-assets/skills/agent-actions/SKILL.md +23 -39
  57. package/agent-assets/skills/agent-create/SKILL.md +15 -6
  58. package/agent-assets/skills/attach/SKILL.md +8 -27
  59. package/agent-assets/skills/browser-history/SKILL.md +29 -16
  60. package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
  61. package/agent-assets/skills/browser-task/SKILL.md +22 -27
  62. package/agent-assets/skills/context/SKILL.md +23 -32
  63. package/agent-assets/skills/context/curation.json +12 -12
  64. package/agent-assets/skills/context/references/api.md +17 -17
  65. package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
  66. package/agent-assets/skills/context/references/snapshot-files.md +12 -11
  67. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
  68. package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
  69. package/agent-assets/skills/docs-search/SKILL.md +19 -31
  70. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
  71. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
  72. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
  73. package/agent-assets/skills/external-services/SKILL.native.claude.md +2 -2
  74. package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
  75. package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
  76. package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
  77. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
  78. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
  79. package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
  80. package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
  81. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
  82. package/agent-assets/skills/mail/SKILL.md +10 -18
  83. package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
  84. package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
  85. package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
  86. package/agent-assets/skills/mail/references/api.md +6 -1
  87. package/agent-assets/skills/mail/references/examples.md +2 -1
  88. package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
  89. package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
  90. package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
  91. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +6 -4
  92. package/agent-assets/skills/management-policy/SKILL.md +10 -11
  93. package/agent-assets/skills/management-policy/references/policy-workflow.md +4 -5
  94. package/agent-assets/skills/notify/SKILL.md +11 -13
  95. package/agent-assets/skills/notify/references/priority.md +28 -25
  96. package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
  97. package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
  98. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
  99. package/agent-assets/skills/notion/SKILL.md +17 -17
  100. package/agent-assets/skills/notion/SKILL.native.claude.md +1 -1
  101. package/agent-assets/skills/notion/SKILL.native.codex.md +1 -1
  102. package/agent-assets/skills/notion/SKILL.native.gemini.md +1 -1
  103. package/agent-assets/skills/observations/SKILL.md +5 -20
  104. package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
  105. package/agent-assets/skills/project-doc/SKILL.md +9 -6
  106. package/agent-assets/skills/project-doc/curation.json +3 -3
  107. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
  108. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  109. package/agent-assets/skills/reading/SKILL.md +8 -42
  110. package/agent-assets/skills/reading/references/reading-taste.md +5 -5
  111. package/agent-assets/skills/roadmap/SKILL.md +3 -19
  112. package/agent-assets/skills/roadmap/references/api.md +16 -6
  113. package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
  114. package/agent-assets/skills/roadmap/references/migration.md +8 -6
  115. package/agent-assets/skills/roadmap/references/retention.md +18 -0
  116. package/agent-assets/skills/schedule/SKILL.md +9 -26
  117. package/agent-assets/skills/schedule/references/importance.md +23 -0
  118. package/agent-assets/skills/schedule/references/recurrence-rule.md +6 -4
  119. package/agent-assets/skills/scheduled-managed-task/SKILL.md +34 -37
  120. package/agent-assets/skills/today/SKILL.md +20 -79
  121. package/agent-assets/skills/today/references/today-skeleton.md +66 -0
  122. package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
  123. package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
  124. package/agent-assets/skills/user-interview/SKILL.md +15 -90
  125. package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
  126. package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
  127. package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
  128. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
  129. package/agent-assets/skills/user-profile/SKILL.md +16 -26
  130. package/agent-assets/skills/user-profile/curation.json +3 -3
  131. package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
  132. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
  133. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
  134. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
  135. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
  136. package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
  137. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
  138. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
  139. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
  140. package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
  141. package/agent-assets/task-flows/message.received.dm.md +4 -0
  142. package/agent-assets/task-flows/message.received.dm_first.md +4 -0
  143. package/agent-assets/task-flows/routine.evening_review.md +80 -0
  144. package/agent-assets/task-flows/routine.monthly_review.md +72 -0
  145. package/agent-assets/task-flows/routine.weekly_review.md +21 -0
  146. package/agent-assets/task-flows/wiki.trace.md +1 -1
  147. package/bin/aitne.mjs +45 -11
  148. package/package.json +4 -4
  149. package/scripts/commands/doctor.mjs +11 -2
  150. package/scripts/lib/process-identity.d.mts +46 -0
  151. package/scripts/lib/process-identity.mjs +193 -0
  152. package/scripts/lib/read-api-token.mjs +1 -1
  153. package/scripts/start.mjs +14 -4
@@ -36,7 +36,7 @@ ask_examples:
36
36
  - What is fts_wiki?
37
37
  locale: en-US
38
38
  created: 2026-05-21
39
- updated: 2026-05-28
39
+ updated: 2026-06-07
40
40
  keywords:
41
41
  - wiki search
42
42
  - fts_wiki
@@ -119,10 +119,10 @@ is the file on disk, not a row in another SQL table. This matters:
119
119
  because the source rows live in SQLite.
120
120
  - Wiki content lives on the filesystem. There's no source table to
121
121
  trigger off, so the wiki API write endpoints
122
- (`POST /api/wiki/:ws/files/:path`, `PATCH /api/wiki/:ws/files/:path`,
123
- `DELETE /api/wiki/:ws/files/:path`) call
124
- `upsertWikiFulltextRow` / `deleteWikiFulltextRow` directly after a
125
- successful disk write.
122
+ (`POST /api/wiki/:ws/files/:path`, `PATCH /api/wiki/:ws/files/:path`)
123
+ call `upsertWikiFulltextRow` directly after a successful disk write.
124
+ (`deleteWikiFulltextRow` is reached internally it's how
125
+ `upsertWikiFulltextRow` drops a `log`/`inbox` row from the index.)
126
126
 
127
127
  The schema (`packages/daemon/src/db/schema.ts`):
128
128
 
@@ -37,7 +37,7 @@ ask_examples:
37
37
  - Can two wikis live in nested folders?
38
38
  locale: en-US
39
39
  created: 2026-05-21
40
- updated: 2026-05-28
40
+ updated: 2026-06-07
41
41
  keywords:
42
42
  - wiki workspace
43
43
  - workspace
@@ -98,7 +98,7 @@ side-by-side wikis as you have distinct knowledge domains.
98
98
  |---|---|---|
99
99
  | Root path | `$PA_DATA_DIR/context/knowledge/wiki/<name>` (daemon-owned, inside the context vault) | Any path you pick (typically an existing Obsidian vault) |
100
100
  | Writes | Atomic local-fs writes | Atomic local-fs writes when permitted; Obsidian-CLI fallback for sandboxed paths |
101
- | Backup surface | `md_file_snapshots` table | git auto-commit (when the vault is git-tracked) + sibling backup mirror under `90_meta/health/pre-migrate-<date>/` |
101
+ | Backup surface | On-disk `.snapshots/<timestamp>/` tree under the workspace root | git auto-commit (when the vault is git-tracked) + sibling backup mirror under `90_meta/health/pre-migrate-<date>/` |
102
102
  | iCloud-friendly | Yes (lives in `~/.personal-agent`) | Yes via the Obsidian CLI fallback (requires the Obsidian app running) |
103
103
  | Best for | First-time users, isolated wiki, no Obsidian dependency | Power users with an existing Obsidian vault they want the agent to extend |
104
104
 
@@ -31,7 +31,7 @@ keywords:
31
31
  - dashboard onboarding
32
32
  - health pill
33
33
  created: 2026-04-27
34
- updated: 2026-05-28
34
+ updated: 2026-06-07
35
35
  related:
36
36
  - getting-started/01-what-is-this
37
37
  - getting-started/03-what-can-this-do
@@ -55,8 +55,10 @@ health pill, a paired messaging app, and a backend the agent can call.
55
55
  ## What you should see right now
56
56
 
57
57
  If the dashboard just opened, you are on `/setup` — the setup wizard.
58
- The dashboard refuses to leave this page until the minimum is filled
59
- in (a backend, a messaging pair). Run through it once, top to bottom.
58
+ The dashboard sends you back to this page until the required steps are
59
+ done (Basics, Vault, a main backend, and the Customize Rules step that
60
+ saves your management rules). Messaging and the other integrations are
61
+ skippable in the wizard. Run through it once, top to bottom.
60
62
 
61
63
  ## Steps
62
64
 
@@ -52,7 +52,7 @@ context_files:
52
52
  api_endpoints:
53
53
  - POST /api/knowledge/import
54
54
  created: 2026-04-25
55
- updated: 2026-05-28
55
+ updated: 2026-06-07
56
56
  related:
57
57
  - getting-started/02-first-steps
58
58
  - getting-started/03-what-can-this-do
@@ -273,7 +273,7 @@ Shortest path from zero to that:
273
273
  - Max budget (USD): `0.20` (a generous per-execute override; the
274
274
  form default is `0.05`)
275
275
  - Description: paste the four numbered steps above verbatim.
276
- 3. **Watch the next firing in Activity** and iterate. The vault file
276
+ 3. **Watch the next firing in Agent Log** and iterate. The vault file
277
277
  at `~/.personal-agent/context/policies/routines/custom/morning-deep-prep.md`
278
278
  is a plain Markdown file: edit the `## Checks` body to refine the
279
279
  step wording, or the `cron:` field in the YAML frontmatter to
@@ -35,7 +35,7 @@ ask_examples:
35
35
  - What is an observation?
36
36
  locale: en-US
37
37
  created: 2026-04-25
38
- updated: 2026-05-28
38
+ updated: 2026-06-07
39
39
  keywords:
40
40
  - terminology
41
41
  - vocabulary
@@ -111,8 +111,8 @@ enabled as fallbacks.
111
111
  ## Browser History (B-3)
112
112
 
113
113
  Local-only history poller that reads the browser's own SQLite database
114
- (Chrome / Safari / Firefox / Arc) and records page visits as
115
- observations. Drives the **research cluster** derivation, the weekly
114
+ (Chromium-based browsers Chrome, Chromium, Edge, Brave, Comet, Atlas)
115
+ and records page visits as observations. Drives the **research cluster** derivation, the weekly
116
116
  reload-memory block, and the [`!checks`](features/messaging/bang-commands.md)
117
117
  on-demand reload tally. No content is uploaded; only URLs, titles, and
118
118
  visit timings the browser itself recorded. See
@@ -206,7 +206,7 @@ connected service: `direct | delegated | native | disabled`.
206
206
  MCP / skill harness — `outlook_mail`, `outlook_calendar`).
207
207
  - **disabled** — silence; no poller, no native handoff.
208
208
 
209
- Mode lookup goes through `getIntegrationState(db, key)`; never
209
+ Mode lookup goes through `readIntegrationState(db, key)`; never
210
210
  hardcode an integration reference outside
211
211
  `packages/shared/src/integrations.ts`. See
212
212
  [Delegated Mode](concepts/delegated-mode.md).
@@ -27,7 +27,7 @@ ask_examples:
27
27
  - What does the pre-compile snapshot do?
28
28
  locale: en-US
29
29
  created: 2026-05-12
30
- updated: 2026-05-28
30
+ updated: 2026-06-07
31
31
  keywords:
32
32
  - wiki budget
33
33
  - wiki cost
@@ -126,7 +126,7 @@ before `!compile full`** enabled, Aitne runs:
126
126
  git -C <vault> status --porcelain
127
127
  # must be empty — dirty trees refuse the operation entirely
128
128
  git -C <vault> add -A
129
- git -C <vault> commit -m "aitne wiki: pre-compile snapshot <ISO-8601-ts>"
129
+ git -C <vault> commit --allow-empty -m "aitne wiki: pre-compile snapshot <ISO-8601-ts>"
130
130
  ```
131
131
 
132
132
  before the compile session starts. The commit message is
@@ -27,7 +27,7 @@ ask_examples:
27
27
  - How do I connect an Outlook mailbox?
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
  - mail
33
33
  - imap
@@ -48,6 +48,7 @@ api_endpoints:
48
48
  - /api/config/mail/app-password
49
49
  config_keys:
50
50
  - enabledMailProviders
51
+ - mailPollIntervalSeconds
51
52
  context_files:
52
53
  - state/today.md
53
54
  ---
@@ -96,7 +97,8 @@ kind authenticates differently:
96
97
  4. Save. Registration succeeds regardless of the enabled-providers
97
98
  setting (`enabledMailProviders`); the account goes live only when
98
99
  you flip its **Enable** toggle on the mail card.
99
- 5. The first poll runs within a minute of being enabled.
100
+ 5. The account is picked up on the next mail poll tick (default every
101
+ 180 seconds, configurable via `mailPollIntervalSeconds`).
100
102
 
101
103
  ## Verification
102
104
 
@@ -30,7 +30,7 @@ ask_examples:
30
30
  - How do I run !trace against a non-default wiki workspace?
31
31
  locale: en-US
32
32
  created: 2026-05-12
33
- updated: 2026-05-28
33
+ updated: 2026-06-07
34
34
  keywords:
35
35
  - "!trace"
36
36
  - "!connect"
@@ -187,6 +187,7 @@ Every report is a regular wiki file under `30_outputs/`. You can:
187
187
  ## Cost Envelope
188
188
 
189
189
  Both commands run at Sonnet medium tier with a default $1.00
190
- spend cap per run, identical to `!ask`. The 7-day cost rollup on
191
- **Settings Wiki** breaks the spend out per command so you can
192
- see where the budget went.
190
+ spend cap per run, identical to `!ask`. The **Settings Wiki**
191
+ overview shows a single 7-day cost stat across all wiki commands;
192
+ to see per-command spend, filter the timeline on `/wiki/timeline`
193
+ by `wiki.trace` or `wiki.connect`.
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - How do I install the aitne npm package?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-28
32
+ updated: 2026-06-07
33
33
  keywords:
34
34
  - install
35
35
  - first run
@@ -60,7 +60,7 @@ through the setup wizard.
60
60
  Google (`GEMINI_API_KEY` / `GOOGLE_API_KEY`). API keys are the
61
61
  recommended and provider-supported way to run Aitne. If you skip
62
62
  the key, Aitne falls back to the corresponding CLI's local
63
- subscription login (`claude`, `codex login`, `gemini auth`); see
63
+ subscription login (`claude auth login`, `codex login`, `gemini`); see
64
64
  [Costs and Quotas](../concepts/costs-and-quotas.md) for the trade-
65
65
  offs and the provider policies that apply.
66
66
  - The CLI binary for whichever backend you pick (Claude Code, Codex
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - What is a taxonomy candidate?
29
29
  locale: en-US
30
30
  created: 2026-05-12
31
- updated: 2026-05-28
31
+ updated: 2026-06-07
32
32
  keywords:
33
33
  - wiki health
34
34
  - wiki lint
@@ -68,7 +68,7 @@ notes itself.
68
68
  ## When to Run
69
69
 
70
70
  `!lint` runs on the `wiki.lint` process key (medium tier — Sonnet
71
- by default, $1.00 budget envelope) and never changes your notes.
71
+ by default, $0.50 budget envelope) and never changes your notes.
72
72
  Run it whenever you want a snapshot of wiki health. A practical
73
73
  cadence:
74
74
 
@@ -23,7 +23,7 @@ ask_examples:
23
23
  - Can I disable everything for a week?
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
  - pause agent
29
29
  - stop agent
@@ -38,6 +38,7 @@ related:
38
38
  ui_anchors:
39
39
  - /settings/schedule
40
40
  - /settings/routines
41
+ - /agents
41
42
  config_keys:
42
43
  - hourlyCheckEnabled
43
44
  - monthlyReviewEnabled
@@ -88,10 +89,13 @@ If you want to mute specific behaviour rather than pause everything, use
88
89
  Routines still run; they just don't notify you.
89
90
 
90
91
  Morning (fires at the day boundary, default 04:00), evening (18:00),
91
- and weekly (Fri 18:00) reviews have no per-routine enable toggle in the
92
- dashboard to stop them, use `!stop` above. You can still edit each
93
- routine's instructions on `/settings/routines`, but that page does not
94
- turn them on or off.
92
+ and weekly (Fri 19:00) reviews each have a per-routine Enable/Disable
93
+ toggle on the `/agents` page open `/agents/<slug>` (e.g.
94
+ `/agents/weekly-review`) and click Disable (a stop-warning confirmation
95
+ appears for these system agents). To halt all of them at once, use
96
+ `!stop` above instead. You can still edit each routine's instructions
97
+ on `/settings/routines`, but that page does not turn the built-in
98
+ reviews on or off.
95
99
 
96
100
  ## Last resort: stop the daemon
97
101
 
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - Where do I paste my API key?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-28
32
+ updated: 2026-06-07
33
33
  keywords:
34
34
  - setup
35
35
  - wizard
@@ -58,6 +58,7 @@ ui_anchors:
58
58
  - /settings/models
59
59
  - /connections
60
60
  - /settings/routines
61
+ - /settings/schedule
61
62
  ---
62
63
 
63
64
  # Setup Wizard Walkthrough
@@ -187,10 +188,12 @@ character prompt referenced in Step 1 actually gets written.
187
188
 
188
189
  ## After the wizard
189
190
 
190
- Routines are **not** configured in the wizard. Enable and schedule the
191
- morning / evening / weekly reviews and the hourly check post-setup on
192
- `/settings/routines`. Repositories are also added after setup, from
193
- Settings Connections Repositories.
191
+ Routines are **not** configured in the wizard. Edit the per-cadence
192
+ rulebooks (morning / evening / weekly / hourly) and register custom cron
193
+ routines post-setup on `/settings/routines`; the hourly-check master
194
+ switch, active / quiet hours, and the monthly review live on
195
+ `/settings/schedule`. Repositories are also added after setup, from
196
+ Connections → Repositories.
194
197
 
195
198
  ## Verification
196
199
 
@@ -26,7 +26,7 @@ ask_examples:
26
26
  - Why is Split greyed out?
27
27
  locale: en-US
28
28
  created: 2026-05-12
29
- updated: 2026-05-28
29
+ updated: 2026-06-07
30
30
  keywords:
31
31
  - external vault
32
32
  - existing obsidian vault
@@ -68,11 +68,11 @@ vs Split**.
68
68
 
69
69
  Open **`/settings/wiki`** in the dashboard (or open `/wiki` and follow
70
70
  the **Enable Wiki** button — both land on the same page). If you have
71
- no workspace yet, the page shows two CTAs:
71
+ no workspace yet, the page shows two options:
72
72
 
73
- - **Enable Internal Workspace** — uses the daemon-owned root.
74
- - **Probe & Create External** — points at the path you choose with
75
- the folder picker.
73
+ - **Internal** → **Enable internal wiki** — uses the daemon-owned root.
74
+ - **Existing Obsidian vault** **Use this folder** — points at the
75
+ path you choose with the folder picker.
76
76
 
77
77
  ### Picking the path
78
78
 
@@ -110,7 +110,7 @@ levels:
110
110
  an existing wiki layout is detected, the wizard will surface the
111
111
  Adopt / Migrate decision in Step 3.
112
112
 
113
- The **Probe & Create External** button is greyed out while the banner
113
+ The **Use this folder** button is greyed out while the banner
114
114
  is an error so you cannot fire a workspace-create that the daemon
115
115
  already knows will fail.
116
116
 
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - How do I list registered backends?
29
29
  locale: en-US
30
30
  created: 2026-04-25
31
- updated: 2026-05-28
31
+ updated: 2026-06-08
32
32
  keywords:
33
33
  - API
34
34
  - REST
@@ -54,7 +54,7 @@ The daemon serves a single Hono app on `127.0.0.1:PA_API_PORT` (default
54
54
  `8321`). Almost all endpoints are mounted under `/api/*`; the lone
55
55
  exception is the GitHub webhook receiver, mounted at root `/webhook/github`.
56
56
  **Source of truth:** `packages/daemon/src/api/server.ts` (`createApp`)
57
- registers most route groups, with two post-compose mounts in
57
+ registers most route groups, with one post-compose mount in
58
58
  `packages/daemon/src/bootstrap/api.ts` (the docs corpus + docs-QA, wired
59
59
  only after the indexer handle exists). Each group lives in its own file
60
60
  or directory under `packages/daemon/src/api/routes/`.
@@ -93,13 +93,13 @@ callers pass it as `Authorization: Bearer <token>`.
93
93
  | Activity sources | `/api/activity-sources/*` | `activity-sources.ts` | Activity feed sources. |
94
94
  | Entities | `/api/entities/*` | `entities.ts` | Entity registry CRUD. |
95
95
  | SoT bindings | `/api/sot-bindings/*` | `sot-bindings.ts` | Source-of-truth bindings (vault ↔ daemon). |
96
- | Voice | `/api/voice/*` | `voice.ts` | Voice transcript cache + transcribe-on-demand. |
96
+ | Voice | `/api/voice/*` | `voice.ts` | Whisper model install / status / weight-removal opt-in surface for the dashboard. |
97
97
 
98
98
  ### Integrations
99
99
 
100
100
  | Group | Path | Source | Purpose |
101
101
  |---|---|---|---|
102
- | Mail | `/api/mail/*` | `mail.ts`, `mail-search.ts` | Multi-provider mail proxy (Gmail / Outlook / Yahoo / iCloud / IMAP) + FTS5 local search. |
102
+ | Mail | `/api/mail/*` | `mail/` | Multi-provider mail proxy (Gmail / Outlook / Yahoo / iCloud / IMAP) + FTS5 local search. |
103
103
  | Calendar | `/api/calendar/*` | `calendar.ts` | Google Calendar proxy. |
104
104
  | Apple Calendar | `/api/apple-calendar/*` | `apple-calendar.ts` | macOS Calendar.app bridge. |
105
105
  | Notion | `/api/notion/*` | `notion.ts` | Notion proxy. |
@@ -107,7 +107,7 @@ callers pass it as `Authorization: Bearer <token>`.
107
107
  | Git | `/api/git/*`, `/api/git-accounts/*` | `git.ts`, `git-accounts.ts`, `git-templates.ts` | Read-only git proxy (`/api/git/{log,diff,show}`), repo templates (`/api/git/templates/*`), and git-account CRUD (`/api/git-accounts/*`). |
108
108
  | Repositories | `/api/repositories/*` | `repositories.ts` | Unified repository CRUD (replaces split Git/GitHub settings). |
109
109
  | GitHub | `/api/github/*`, `POST /webhook/github` | `github.ts` | GitHub proxy and webhook receiver (mounted under `/`, not `/api`). |
110
- | Integrations | `/api/integrations/*` | `integrations.ts`, `integrations-reconcile.ts` | Integration mode CRUD (`direct \| delegated \| native \| disabled`), live probe endpoint, mode reconciliation. |
110
+ | Integrations | `/api/integrations/*` | `integrations/`, `integrations-reconcile.ts` | Integration mode CRUD (`direct \| delegated \| native \| disabled`), live probe endpoint, mode reconciliation. |
111
111
  | Delegated sync | `/api/delegated/*`, `/api/delegated-sync/*` | `delegated.ts`, `delegated-sync.ts` | Delegated worker control + opt-in cadence config. |
112
112
  | MCP | `/api/mcp/*` | `mcp.ts` | Per-session MCP materializer. |
113
113
 
@@ -129,6 +129,16 @@ callers pass it as `Authorization: Bearer <token>`.
129
129
  | Books | `/api/books/*` | `books.ts` | Reading-list CRUD. |
130
130
  | Travel bookings | `/api/travel-bookings/*` | `travel-bookings.ts` | Travel-booking CRUD. |
131
131
 
132
+ ### Feedback learning
133
+
134
+ All three routes are `RiskTier.Autonomous`. `POST /api/feedback` server-restricts `source` to `explicit` / `self_critique` — `behavioral` signals are daemon-only (written by `SignalDetector`) and a `behavioral` body returns 400.
135
+
136
+ | Group | Path | Source | Purpose |
137
+ |---|---|---|---|
138
+ | Feedback | `POST /api/feedback` | `feedback.ts` | Record an explicit or self-critique feedback signal. Dedups on `(scope_type, scope_ref, summary)` within 10 min. When `feedbackLearningEnabled=false` returns `200 {disabled:true}` without recording. |
139
+ | Feedback consume | `POST /api/feedback/consume` | `feedback.ts` | `{ids: number[], lessonRef?}` → `{consumed, notFound}`. Marks signals consumed after a consolidation pass. |
140
+ | Feedback lessons | `GET /api/feedback/lessons` | `feedback.ts` | Read-only lesson-store overview for the dashboard — global `agent` store plus every per-agent store on disk, with cap-utilisation metrics. |
141
+
132
142
  ### Docs and wiki
133
143
 
134
144
  | Group | Path | Source | Purpose |
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - How do I check my install with aitne doctor?
29
29
  locale: en-US
30
30
  created: 2026-04-27
31
- updated: 2026-05-28
31
+ updated: 2026-06-07
32
32
  keywords:
33
33
  - aitne start
34
34
  - aitne stop
@@ -95,7 +95,7 @@ needed.
95
95
  | `aitne open` | Open the dashboard root in the default browser. |
96
96
  | `aitne doctor` | Install-health checks (Node, ports, OS keychain, backend CLIs, native bindings, …). |
97
97
  | `aitne audit [--since 24h] [--type X] [--result failed]` | Show the agent action log; flags filter by time, action type, result, or backend. `--json` for machine-readable. |
98
- | `aitne run-now <job>` | Fire a daemon-internal maintenance job on demand. The only supported job today is `roadmap_maintenance`. Reads the API token from the macOS Keychain, so this command is macOS-only. |
98
+ | `aitne run-now <job>` | Fire a daemon-internal maintenance job on demand. The only supported job today is `roadmap_maintenance`. Reads the API token from the OS secret store (macOS Keychain, Windows DPAPI, Linux libsecret, or the encrypted file fallback), so it works on every supported platform. |
99
99
  | `aitne verify [target]` | Run post-launch verification for a shipped design surface (e.g. `evening-review-slimdown`). |
100
100
  | `aitne version [--json]` | Print version, Node version, install path, last build time. |
101
101
  | `aitne update [--check]` | Print the npm command to upgrade. `--check` makes one network call to compare against the latest published version. |
@@ -150,7 +150,7 @@ and the cost-gate / approval semantics.
150
150
  |---|---|---|
151
151
  | `PA_DATA_DIR` | `~/.personal-agent` | Where logs, the SQLite DB, context Markdown, and prompts live. |
152
152
  | `PA_API_PORT` | `8321` | Daemon HTTP port. |
153
- | `PA_DASHBOARD_PORT` | `3000` | Dashboard port. |
153
+ | `PA_DASHBOARD_PORT` | `8322` | Dashboard port. |
154
154
 
155
155
  All runtime state — PIDs, logs, SQLite DB, context Markdown, prompts —
156
156
  lives under `PA_DATA_DIR`, **not** inside the repo.
@@ -78,7 +78,7 @@ ui_anchors:
78
78
  - /settings/advanced
79
79
  - /settings/models
80
80
  created: 2026-04-25
81
- updated: 2026-05-28
81
+ updated: 2026-06-08
82
82
  related:
83
83
  - reference/api
84
84
  - reference/cli-commands
@@ -93,7 +93,7 @@ The full `AgentConfig` schema lives in
93
93
  `packages/shared/src/editable-config-keys.ts` govern what is editable
94
94
  and when:
95
95
 
96
- - **`EDITABLE_RUNTIME_KEY_TUPLE`** — the ~80 keys mutable at runtime
96
+ - **`EDITABLE_RUNTIME_KEY_TUPLE`** — the ~130 keys mutable at runtime
97
97
  via `PATCH /api/config`. Both the daemon and the dashboard import
98
98
  from this tuple so the accepted-key set is enforced at compile time
99
99
  in both packages.
@@ -117,7 +117,7 @@ Anything not in those tuples must be set via env or restart.
117
117
  ## Selected Keys
118
118
 
119
119
  A representative slice of `EDITABLE_RUNTIME_KEY_TUPLE` — the full list
120
- of ~80 keys is in `editable-config-keys.ts`. Names below are exact and
120
+ of ~130 keys is in `editable-config-keys.ts`. Names below are exact and
121
121
  case-sensitive.
122
122
 
123
123
  ### Identity and timezone
@@ -125,7 +125,7 @@ case-sensitive.
125
125
  | Key | Type | Notes |
126
126
  |---|---|---|
127
127
  | `agentDisplayName` | string | What the agent calls itself in DMs. |
128
- | `character` | string | Persona key (one of the entries in `agent-assets/agent-profiles/`). |
128
+ | `character` | string | Free-text user-defined communication style / persona (max 1000 chars). When non-empty, rendered as a `## Character (user-defined)` block into each backend's instruction file. The agent profile itself is selected by ProcessKey, not by this key. |
129
129
  | `timezone` | IANA tz | Empty falls back to the system tz. |
130
130
  | `dayBoundaryHour` | 0–9 | Default `4`. Controls the agent-day rollover (must be an early-morning hour). |
131
131
  | `primaryLanguage` | BCP-47 | Output language for DMs, journal, and Obsidian writes. Templates stay English-headered. |
@@ -237,6 +237,23 @@ case-sensitive.
237
237
  | `advisorEnabled` | boolean | SDK advisor toggle. |
238
238
  | `advisorModel` | string / null | Model id; default `null`. Validated against `ADVISOR_ALLOWED_MODELS`, which the SDK pins to `claude-sonnet-4-6` and `claude-opus-4-6` only. Newer Opus generations (`claude-opus-4-7`, `claude-opus-4-8`) are silently skipped by the SDK advisor path — see `docs/advisor.md`. |
239
239
 
240
+ ### Feedback learning
241
+
242
+ The feedback learning loop (capture → nightly consolidation → injection of
243
+ durable lessons). All six knobs are runtime-editable via `PATCH /api/config`,
244
+ surfaced by `GET /config`, and tunable from the dashboard `/settings/lessons`
245
+ page. Defaults and ranges below are enforced in
246
+ `packages/daemon/src/settings/runtime-settings.ts`.
247
+
248
+ | Key | Type | Notes |
249
+ |---|---|---|
250
+ | `feedbackLearningEnabled` | boolean | Default `true` (env `FEEDBACK_LEARNING_ENABLED`). Master kill-switch for the whole loop — capture, consolidation, and injection. |
251
+ | `feedbackPromotionThreshold` | 1–10 | Default `2` (env `FEEDBACK_PROMOTION_THRESHOLD`). Weighted-evidence threshold a behavioral / self-critique lesson must clear before it becomes injectable. |
252
+ | `feedbackLessonMaxBytesGlobal` | 1024–32768 | Default `8192` (env `FEEDBACK_LESSON_MAX_BYTES_GLOBAL`). Byte cap for `policies/agent-lessons.md`. |
253
+ | `feedbackLessonMaxBytesPerAgent` | 512–16384 | Default `4096` (env `FEEDBACK_LESSON_MAX_BYTES_PER_AGENT`). Byte cap for each `policies/agents/<slug>/lessons.md`. |
254
+ | `feedbackLessonStaleDays` | 7–365 | Default `60` (env `FEEDBACK_LESSON_STALE_DAYS`). Lessons whose `last=` date is older are pruned, except `kind=constraint` (durable). |
255
+ | `feedbackSignalRetentionDays` | 30–365 | Default `180` (env `FEEDBACK_SIGNAL_RETENTION_DAYS`). Consumed `feedback_signals` rows older than this are swept. |
256
+
240
257
  ## Routine Schedule Times Are Not Configurable
241
258
 
242
259
  The morning, evening, weekly, and monthly routines fire at fixed times
@@ -25,7 +25,7 @@ ask_examples:
25
25
  - Why can't the agent read my .env or SSH keys?
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
  - disallowedTools
31
31
  - deniedTools
@@ -42,8 +42,9 @@ related:
42
42
  # Disallowed Tools
43
43
 
44
44
  There are two distinct deny layers — the **absolute-block layer**
45
- (non-overridable) and the **default strict-mode list** (in `config.ts`,
46
- relaxable in Allow mode or via `allowedToolsOverride`).
45
+ (non-overridable) and the **default strict-mode list** (`DEFAULT_DISALLOWED_TOOLS`
46
+ in `src/settings/runtime-settings.ts`, relaxable in Allow mode or via
47
+ `allowedToolsOverride`).
47
48
 
48
49
  ## Absolute-block layer (cannot be widened past)
49
50
 
@@ -78,7 +79,8 @@ managed-Chromium chokepoints above).
78
79
 
79
80
  ## Default strict-mode list (relaxable)
80
81
 
81
- `config.ts > disallowedTools` ships with additional defaults that the
82
+ `DEFAULT_DISALLOWED_TOOLS` (in `src/settings/runtime-settings.ts`, the
83
+ seed for `config.disallowedTools`) ships with additional defaults that the
82
84
  operator can widen out of via `allowedToolsOverride` or by switching
83
85
  to Allow mode. These include `Bash(chmod *)`, `Bash(chown *)`,
84
86
  `Bash(git push --force *)`, `Bash(git reset --hard *)` and a handful
@@ -34,7 +34,7 @@ ask_examples:
34
34
  - Which files can the agent write to?
35
35
  locale: en-US
36
36
  created: 2026-05-18
37
- updated: 2026-05-28
37
+ updated: 2026-06-08
38
38
  keywords:
39
39
  - context
40
40
  - knowledge
@@ -182,6 +182,11 @@ the write-permission whitelist in `packages/daemon/src/api/routes/context/permis
182
182
  ├── journal-export.md Inclusion / exclusion rules for exporting journal/daily/
183
183
  ├── integrations.md Integration-mode snapshot (daemon-rendered,
184
184
  │ chokidar-watched at this new path)
185
+ ├── agent-lessons.md Feedback Learning Loop global lessons (lazy)
186
+ ├── agents/ User-authored Agent definitions (lazy)
187
+ │ └── <slug>/
188
+ │ ├── agent.md
189
+ │ └── lessons.md Per-agent Feedback Learning Loop lessons (lazy)
185
190
  ├── management-captures/ One captured policy per file
186
191
  │ ├── _index.md
187
192
  │ └── <slug>.md
@@ -237,7 +242,8 @@ runner merges that file into the reconciler block.)
237
242
  The current agent-day's working view. Daemon-managed structure:
238
243
 
239
244
  ```
240
- # Today
245
+ # YYYY-MM-DD (day-of-week) — line 1 is the canonical agent-day date
246
+ > Day type: … — parsed by every event handler
241
247
  ## User Schedule — events for the day (from calendar observers)
242
248
  ## User Tasks — what you need to do today
243
249
  ## Agent Plan — what the agent intends to do today
@@ -558,6 +564,8 @@ listed is read-only via the API.
558
564
  | `state/profile-questions` · `state/activity/*` | `PUT`, `PATCH` |
559
565
  | `identity/_index` · `identity/*` | `PUT`, `PATCH` |
560
566
  | `policies/_index` · `policies/*` (top-level files) | `PUT`, `PATCH` |
567
+ | `policies/agent-lessons` | `PUT`, `PATCH` (Feedback Learning Loop global lessons store) |
568
+ | `policies/agents/{slug}/{file}` | `PUT`, `PATCH`, `DELETE` (user-authored Agent definitions) |
561
569
  | `policies/routines/_index` · `policies/routines/*` | `PUT`, `PATCH` |
562
570
  | `policies/routines/custom/*` | `PUT`, `PATCH`, `DELETE` |
563
571
  | `plans/projects/_index` · `plans/projects/*` | `PUT`, `PATCH` |
@@ -570,6 +578,7 @@ listed is read-only via the API.
570
578
  | `state/inbox/*` · `state/scratch/*` | `PUT`, `PATCH`, `DELETE` |
571
579
  | `journal/agent` | `PUT` once (create-only), then `PATCH` (append) |
572
580
  | `policies/management-captures/_index` · `policies/management-captures/*` | `PUT`, `PATCH` |
581
+ | `research/*` | `PUT`, `PATCH` (browser-history research-cluster journals) |
573
582
 
574
583
  > Legacy URL forms (`/api/context/today.md`, `/api/context/user/profile`, `/api/context/rules/management`, `/api/context/agent/journal`, etc.) are normalized to the class-prefixed canonical paths in-process by `core/context-vault-aliases.ts` before any of the above checks run. Normalization is not a redirect (no HTTP 3xx) so legacy `curl -X PUT/PATCH` callers keep working. The alias bridge lives for one minor release after PR-6's content sweep lands. <!-- drift-allow -->
575
584
 
@@ -41,7 +41,7 @@ keywords:
41
41
  - delegated_task
42
42
  - gmail_classify
43
43
  created: 2026-04-25
44
- updated: 2026-05-28
44
+ updated: 2026-06-07
45
45
  config_keys:
46
46
  - monthlyReviewEnabled
47
47
  - delegatedTaskHeavyEnabled
@@ -80,7 +80,7 @@ The **default tier** column maps to a model size, not a specific id:
80
80
  | `routine.morning_routine_journal` | Stage B of the morning-routine pipeline — authors `journal/daily/<yesterday>.md` from the daemon-prepared journal skeleton. | lite | yes |
81
81
  | `routine.today_refresh` | Calendar-drift-triggered (calendar change touching today's items; 5-min dedup, fires ~30s later) — drift-refresh of `state/today.md` | medium | yes |
82
82
  | `routine.evening_review` | Daily at 18:00 local (fixed) | medium | yes |
83
- | `routine.weekly_review` | Friday 18:00 local (fixed) | medium | yes |
83
+ | `routine.weekly_review` | Friday 19:00 local (fixed) | medium | yes |
84
84
  | `routine.monthly_review` | Monthly cadence (gated OFF by default — kill switch `monthlyReviewEnabled` in runtime settings). The routine itself is off by default, but its backend/tier binding is still configurable. | medium | yes |
85
85
  | `routine.hourly_check` | Every `hourlyCheckIntervalMinutes` (default 60) inside the active window | medium | yes |
86
86
  | `routine.hourly_check.triage` | Stage 2 triage gate of every hourly check | lite | yes |
@@ -34,7 +34,7 @@ keywords:
34
34
  - wiki skill
35
35
  - notify skill
36
36
  created: 2026-04-25
37
- updated: 2026-05-28
37
+ updated: 2026-06-07
38
38
  ui_anchors:
39
39
  - /knowledge?tab=skills
40
40
  process_keys:
@@ -63,7 +63,8 @@ type (`browser-task`, on owner DMs). The table below is the canonical roster.
63
63
 
64
64
  | Slug | Purpose |
65
65
  |---|---|
66
- | `agent-actions` | Read the agent action log (`agent_actions` table) for retrospective audits. |
66
+ | `agent-actions` | Self-report structured metadata (dayType, anomalies, inbox stats, files-touched) into the session's own `agent_actions` row so daemon-side consumers read structured data instead of parsing prose. Loaded near the end of morning-routine / dispatcher sessions. |
67
+ | `agent-create` | Register a durable, named recurring Agent that fires on a cron cadence via `POST /api/agents`. For ongoing autonomous work (not one-time reminders → `schedule`, not background app-data fetches → `managed-tasks`). Conditional skill loaded on owner DMs / mentions when the message looks like a recurring-work request (gated by `agentCreateActiveForDm`). |
67
68
  | `attach` | Attach a generated or downloaded file to the agent's reply when the user expects a file artifact. |
68
69
  | `browser-history` | Read normalised browser activity through `/api/browser-history/*`. Used by research-cluster journal updates, accept-path dispatches, owner pulls of shopping / reload traces, and the morning research summary. Never reads browser SQLite or profile dirs directly. |
69
70
  | `browser-history-respond` | Bridge the owner's natural-language reply to a research-offer DM ("dig deeper" / "summarise") into a structured `/api/browser-history/offers/<slug>/{accept,decline}` call. |
@@ -86,7 +87,7 @@ type (`browser-task`, on owner DMs). The table below is the canonical roster.
86
87
  | `today` | Read or write `state/today.md` — morning routines, hourly checks, DMs that need a today snapshot. |
87
88
  | `user-interview` | Manage the profile-interview queue at `state/profile-questions.md`; ask one question at a time. |
88
89
  | `user-profile` | Record user facts — identity, people, work, expertise, habits, goals — into the `identity/*` slices (`profile.md`, `people.md`, `work.md`, …). |
89
- | `wiki` | Build and maintain the personal wiki workspace — `!ingest` / `!compile` / `!ask` / `!lint` / `!trace` / `!connect`. |
90
+ | `wiki-*` | Build and maintain the personal wiki workspace — `!ingest` / `!compile` / `!ask` / `!lint` / `!trace` / `!connect`. Split into per-process sub-skills under `agent-assets/skills/wiki/` (`wiki-vault-rules`, `wiki-ingest`, `wiki-compile`, `wiki-ask`, `wiki-lint`, `wiki-trace`, `wiki-connect`, `wiki-graduate`), each loaded for its matching `wiki.*` ProcessKey. |
90
91
 
91
92
  ## How skills are sourced
92
93
 
@@ -100,4 +101,4 @@ A subset of these skills' sections (knowledge layout, routing tables, search
100
101
  recipes, etc.) is refined at runtime through JSON **overlays** maintained by
101
102
  the skill-curation loop. The seed files in `agent-assets/skills/` are never
102
103
  rewritten — overlays are applied at session-init by the `SkillsCompiler` and
103
- live under `<dataDir>/overlays/<skill>/<section-id>.json`.
104
+ live under `<dataDir>/skill-curation-overlays/<slug>/<section-id>.json`.