@aitne-sh/aitne 0.1.8 → 0.1.9

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 (276) hide show
  1. package/README.md +218 -161
  2. package/agent-assets/agent-profiles/_safety.md +3 -3
  3. package/agent-assets/agent-profiles/browser-task.md +108 -0
  4. package/agent-assets/agent-profiles/conversational.md +3 -3
  5. package/agent-assets/agent-profiles/profile-importer.md +2 -2
  6. package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
  7. package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
  8. package/agent-assets/agents/evening-review/agent.md +53 -0
  9. package/agent-assets/agents/hourly-check/agent.md +62 -0
  10. package/agent-assets/agents/monthly-review/agent.md +55 -0
  11. package/agent-assets/agents/morning-routine/agent.md +78 -0
  12. package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
  13. package/agent-assets/agents/skill-curation/agent.md +52 -0
  14. package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
  15. package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
  16. package/agent-assets/agents/weekly-review/agent.md +51 -0
  17. package/agent-assets/docs/concepts/agent-day.md +13 -11
  18. package/agent-assets/docs/concepts/auth-health.md +47 -10
  19. package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
  20. package/agent-assets/docs/concepts/costs-and-quotas.md +50 -15
  21. package/agent-assets/docs/concepts/delegated-mode.md +52 -13
  22. package/agent-assets/docs/concepts/memory-model.md +72 -32
  23. package/agent-assets/docs/concepts/observations.md +49 -11
  24. package/agent-assets/docs/concepts/process-keys.md +56 -22
  25. package/agent-assets/docs/concepts/routines.md +60 -33
  26. package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
  27. package/agent-assets/docs/concepts/safety-model.md +42 -34
  28. package/agent-assets/docs/concepts/skills.md +33 -17
  29. package/agent-assets/docs/features/integrations/browser-history.md +195 -0
  30. package/agent-assets/docs/features/integrations/calendar.md +39 -29
  31. package/agent-assets/docs/features/integrations/git.md +18 -7
  32. package/agent-assets/docs/features/integrations/github.md +84 -33
  33. package/agent-assets/docs/features/integrations/mail.md +59 -16
  34. package/agent-assets/docs/features/integrations/notion.md +18 -6
  35. package/agent-assets/docs/features/integrations/obsidian.md +28 -5
  36. package/agent-assets/docs/features/lifestyle/git.md +42 -38
  37. package/agent-assets/docs/features/lifestyle/reading.md +50 -22
  38. package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
  39. package/agent-assets/docs/features/lifestyle/travel-bookings.md +76 -14
  40. package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
  41. package/agent-assets/docs/features/memory-files/projects.md +71 -17
  42. package/agent-assets/docs/features/memory-files/roadmap.md +50 -10
  43. package/agent-assets/docs/features/memory-files/schedule.md +113 -70
  44. package/agent-assets/docs/features/memory-files/today.md +46 -21
  45. package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
  46. package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
  47. package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
  48. package/agent-assets/docs/features/messaging/discord.md +35 -4
  49. package/agent-assets/docs/features/messaging/overview.md +37 -19
  50. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
  51. package/agent-assets/docs/features/messaging/slack.md +67 -14
  52. package/agent-assets/docs/features/messaging/telegram.md +18 -5
  53. package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
  54. package/agent-assets/docs/features/operations/activity-and-conversations.md +44 -15
  55. package/agent-assets/docs/features/operations/approvals.md +48 -16
  56. package/agent-assets/docs/features/operations/backend-routing.md +68 -16
  57. package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
  58. package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
  59. package/agent-assets/docs/features/operations/notifications.md +52 -11
  60. package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
  61. package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
  62. package/agent-assets/docs/features/routines/custom-routines.md +88 -20
  63. package/agent-assets/docs/features/routines/evening-review.md +74 -21
  64. package/agent-assets/docs/features/routines/hourly-check.md +149 -29
  65. package/agent-assets/docs/features/routines/morning-routine.md +53 -35
  66. package/agent-assets/docs/features/routines/weekly-review.md +40 -21
  67. package/agent-assets/docs/features/wiki/commands.md +26 -16
  68. package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
  69. package/agent-assets/docs/features/wiki/dashboard.md +255 -0
  70. package/agent-assets/docs/features/wiki/overview.md +68 -10
  71. package/agent-assets/docs/features/wiki/search.md +248 -0
  72. package/agent-assets/docs/features/wiki/workspaces.md +254 -0
  73. package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
  74. package/agent-assets/docs/getting-started/02-first-steps.md +13 -8
  75. package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
  76. package/agent-assets/docs/getting-started/04-first-day.md +38 -20
  77. package/agent-assets/docs/glossary.md +235 -24
  78. package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
  79. package/agent-assets/docs/guides/backup-and-restore.md +80 -16
  80. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +56 -25
  81. package/agent-assets/docs/guides/build-your-wiki.md +22 -9
  82. package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
  83. package/agent-assets/docs/guides/connect-a-new-mail-account.md +64 -15
  84. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +28 -11
  85. package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
  86. package/agent-assets/docs/guides/install-and-run.md +48 -19
  87. package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
  88. package/agent-assets/docs/guides/migrate-machines.md +74 -18
  89. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
  90. package/agent-assets/docs/guides/pause-the-agent.md +65 -24
  91. package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
  92. package/agent-assets/docs/guides/setup-wizard.md +113 -54
  93. package/agent-assets/docs/guides/switch-default-backend.md +62 -16
  94. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +26 -10
  95. package/agent-assets/docs/reference/api.md +143 -32
  96. package/agent-assets/docs/reference/cli-commands.md +38 -17
  97. package/agent-assets/docs/reference/config.md +224 -49
  98. package/agent-assets/docs/reference/disallowed-tools.md +29 -10
  99. package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
  100. package/agent-assets/docs/reference/knowledge-layout.md +620 -0
  101. package/agent-assets/docs/reference/process-keys.md +61 -5
  102. package/agent-assets/docs/reference/skills.md +38 -12
  103. package/agent-assets/docs/troubleshooting/auth-failed.md +48 -19
  104. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +90 -28
  105. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
  106. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
  107. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
  108. package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
  109. package/agent-assets/docs/troubleshooting/quota-exhausted.md +29 -5
  110. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
  111. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
  112. package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
  113. package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
  114. package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
  115. package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
  116. package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
  117. package/agent-assets/skills/agent-actions/SKILL.md +2 -2
  118. package/agent-assets/skills/agent-create/SKILL.md +149 -0
  119. package/agent-assets/skills/attach/SKILL.md +2 -2
  120. package/agent-assets/skills/browser-history/SKILL.md +198 -0
  121. package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
  122. package/agent-assets/skills/browser-task/SKILL.md +169 -0
  123. package/agent-assets/skills/context/SKILL.md +12 -12
  124. package/agent-assets/skills/context/curation.json +2 -2
  125. package/agent-assets/skills/context/references/api.md +43 -31
  126. package/agent-assets/skills/context/references/required-frontmatter.md +3 -3
  127. package/agent-assets/skills/context/references/snapshot-files.md +6 -6
  128. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +3 -3
  129. package/agent-assets/skills/docs-search/SKILL.md +4 -3
  130. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +11 -21
  131. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +11 -21
  132. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +11 -21
  133. package/agent-assets/skills/external-services/SKILL.md +3 -3
  134. package/agent-assets/skills/external-services/SKILL.native.claude.md +5 -5
  135. package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
  136. package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
  137. package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
  138. package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
  139. package/agent-assets/skills/external-services/references/obsidian.md +2 -2
  140. package/agent-assets/skills/gmail-lifestyle/SKILL.md +9 -82
  141. package/agent-assets/skills/mail/SKILL.delegated.claude.md +14 -5
  142. package/agent-assets/skills/mail/SKILL.delegated.codex.md +8 -4
  143. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +8 -4
  144. package/agent-assets/skills/mail/references/api.md +4 -2
  145. package/agent-assets/skills/mail/references/providers.md +1 -1
  146. package/agent-assets/skills/managed-tasks/SKILL.md +9 -9
  147. package/agent-assets/skills/managed-tasks/references/errors.md +9 -6
  148. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +1 -1
  149. package/agent-assets/skills/management-policy/SKILL.md +32 -31
  150. package/agent-assets/skills/management-policy/curation.json +1 -1
  151. package/agent-assets/skills/management-policy/references/policy-workflow.md +9 -9
  152. package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
  153. package/agent-assets/skills/notify/SKILL.md +4 -4
  154. package/agent-assets/skills/notify/references/priority.md +9 -4
  155. package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
  156. package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
  157. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
  158. package/agent-assets/skills/notion/SKILL.native.claude.md +10 -6
  159. package/agent-assets/skills/notion/SKILL.native.codex.md +9 -4
  160. package/agent-assets/skills/notion/SKILL.native.gemini.md +9 -4
  161. package/agent-assets/skills/observations/SKILL.md +24 -8
  162. package/agent-assets/skills/project-doc/SKILL.md +1 -1
  163. package/agent-assets/skills/project-doc/curation.json +3 -3
  164. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
  165. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  166. package/agent-assets/skills/reading/SKILL.md +10 -0
  167. package/agent-assets/skills/reading/references/reading-taste.md +2 -2
  168. package/agent-assets/skills/roadmap/SKILL.md +5 -5
  169. package/agent-assets/skills/roadmap/curation.json +1 -1
  170. package/agent-assets/skills/roadmap/references/api.md +7 -7
  171. package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
  172. package/agent-assets/skills/roadmap/references/migration.md +4 -4
  173. package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
  174. package/agent-assets/skills/schedule/SKILL.md +42 -34
  175. package/agent-assets/skills/schedule/references/batch.md +2 -2
  176. package/agent-assets/skills/schedule/references/errors.md +7 -4
  177. package/agent-assets/skills/schedule/references/model-selection.md +3 -3
  178. package/agent-assets/skills/schedule/references/recurrence-rule.md +1 -1
  179. package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -36
  180. package/agent-assets/skills/today/SKILL.md +9 -9
  181. package/agent-assets/skills/today/curation.json +3 -3
  182. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
  183. package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
  184. package/agent-assets/skills/user-interview/SKILL.md +12 -9
  185. package/agent-assets/skills/user-interview/references/op-briefing.md +2 -2
  186. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +8 -0
  187. package/agent-assets/skills/user-profile/SKILL.md +17 -17
  188. package/agent-assets/skills/user-profile/curation.json +2 -2
  189. package/agent-assets/skills/user-profile/references/character-preferences.md +2 -2
  190. package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
  191. package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
  192. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -4
  193. package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
  194. package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
  195. package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
  196. package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
  197. package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
  198. package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
  199. package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
  200. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
  201. package/agent-assets/task-flows/browser_task.md +84 -0
  202. package/agent-assets/task-flows/github.assigned.md +1 -1
  203. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  204. package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
  205. package/agent-assets/task-flows/knowledge.import.md +14 -14
  206. package/agent-assets/task-flows/message.received.dm.md +9 -4
  207. package/agent-assets/task-flows/message.received.dm_first.md +3 -3
  208. package/agent-assets/task-flows/routine.custom.md +3 -3
  209. package/agent-assets/task-flows/routine.evening_review.md +8 -8
  210. package/agent-assets/task-flows/routine.fetch_window.md +2 -2
  211. package/agent-assets/task-flows/routine.hourly_check.md +16 -12
  212. package/agent-assets/task-flows/routine.monthly_review.md +21 -21
  213. package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
  214. package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
  215. package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
  216. package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
  217. package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
  218. package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
  219. package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
  220. package/agent-assets/task-flows/routine.today_refresh.md +4 -4
  221. package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
  222. package/agent-assets/task-flows/routine.weekly_review.md +93 -24
  223. package/agent-assets/task-flows/schedule.approaching.md +0 -1
  224. package/agent-assets/task-flows/scheduled.dm.md +5 -5
  225. package/agent-assets/task-flows/scheduled.task.md +4 -4
  226. package/agent-assets/task-flows/setup.initial.md +21 -21
  227. package/agent-assets/task-flows/setup.update.md +2 -2
  228. package/agent-assets/templates/README.md +27 -20
  229. package/agent-assets/templates/_index.md +42 -26
  230. package/agent-assets/templates/_manifest.json +34 -99
  231. package/agent-assets/templates/{user → identity}/_index.md +1 -1
  232. package/agent-assets/templates/{user → identity}/profile.md +2 -2
  233. package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
  234. package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
  235. package/agent-assets/templates/policies/_index.md +21 -0
  236. package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
  237. package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
  238. package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
  239. package/agent-assets/templates/{rules → policies}/management.md +3 -3
  240. package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
  241. package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
  242. package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
  243. package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
  244. package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
  245. package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
  246. package/bin/aitne.mjs +13 -4
  247. package/package.json +5 -4
  248. package/scripts/commands/doctor.mjs +14 -8
  249. package/scripts/commands/run-now.mjs +6 -21
  250. package/scripts/lib/ports.d.mts +27 -0
  251. package/scripts/lib/ports.mjs +36 -0
  252. package/scripts/lib/read-api-token.mjs +176 -0
  253. package/scripts/start.mjs +2 -1
  254. package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
  255. package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
  256. package/agent-assets/skills/schedule/references/recurring.md +0 -185
  257. package/agent-assets/templates/context-index.md +0 -42
  258. package/agent-assets/templates/rules/_index.md +0 -19
  259. /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
  260. /package/agent-assets/templates/{user → identity}/goals.md +0 -0
  261. /package/agent-assets/templates/{user → identity}/people.md +0 -0
  262. /package/agent-assets/templates/{user → identity}/personal.md +0 -0
  263. /package/agent-assets/templates/{user → identity}/work.md +0 -0
  264. /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
  265. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
  266. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
  267. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
  268. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
  269. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
  270. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
  271. /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
  272. /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
  273. /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
  274. /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
  275. /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
  276. /package/agent-assets/templates/{today.md → state/today.md} +0 -0
@@ -7,95 +7,167 @@ aliases:
7
7
  - ingest full refused
8
8
  - wiki approval pending
9
9
  - wiki dirty tree refused
10
+ - compile full uncommitted changes
10
11
  category: troubleshooting
11
12
  summary: |
12
- `!compile full` either refused with "uncommitted changes" (git
13
- pre-compile gate) or returned "Sent for approval" (cost gate).
13
+ `!compile full` stopped before running and replied with one of three
14
+ things: "uncommitted changes" (the git pre-compile gate), "Sent for
15
+ approval" (the cost gate), or "Wiki is not enabled" (no workspace).
14
16
  This entry tells you how to clear each branch.
15
- section: wiki-ingest-full-blocked
17
+ section: troubleshooting
16
18
  tags:
17
19
  - troubleshooting
18
20
  - wiki
19
21
  - cost
20
22
  - git
23
+ - approval
21
24
  status: stable
22
25
  ask_examples:
23
26
  - Why did !compile full refuse to run?
24
27
  - Where do I approve a pending wiki compile?
25
28
  - Why does !compile full want a clean git tree?
29
+ - What does "Sent for approval" mean after !compile full?
26
30
  locale: en-US
27
31
  created: 2026-05-12
28
- updated: 2026-05-12
32
+ updated: 2026-05-28
29
33
  keywords:
30
- - wiki ingest blocked
31
- - ingest cost gate
32
- - ingest approval
34
+ - wiki compile blocked
35
+ - compile cost gate
36
+ - compile approval
33
37
  - full rebuild blocked
38
+ - uncommitted changes
39
+ process_keys:
40
+ - wiki.compile
41
+ api_endpoints:
42
+ - GET /api/approvals
43
+ - POST /api/approvals/:id/approve
34
44
  related:
35
45
  - features/wiki/commands
46
+ - features/wiki/cost-and-approval
36
47
  - guides/budget-and-cost-for-wiki
37
48
  - features/wiki/overview
49
+ prerequisites:
50
+ - features/wiki/overview
38
51
  ui_anchors:
39
52
  - /settings/wiki
40
- - /approvals
53
+ - /
41
54
  ---
42
55
 
43
56
  # `!compile full` Is Blocked
44
57
 
45
58
  ## What You See
46
59
 
47
- You ran `!compile full` and the bang reply says either:
60
+ You ran `!compile full` and the bang reply was one of these. Jump to the
61
+ matching section:
62
+
63
+ - **"the external vault has uncommitted changes"** — the git pre-compile
64
+ gate. See [Uncommitted Changes](#uncommitted-changes).
65
+ - **"Sent for approval"** — the cost gate. See [Sent for
66
+ Approval](#sent-for-approval).
67
+ - **"Wiki is not enabled"** — no workspace exists. See [Not
68
+ Enabled](#not-enabled).
69
+
70
+ ## Uncommitted Changes
48
71
 
49
- - "Cannot run `!compile full` the external vault has uncommitted
50
- changes."
51
- - "Sent for approval. Open `/settings/wiki` → Approvals to confirm
52
- and the compile will start."
72
+ The full reply is:
53
73
 
54
- ## "Uncommitted Changes"
74
+ > Cannot run `!compile full` — the external vault has uncommitted
75
+ > changes. Please commit or stash first. Dirty paths: …
55
76
 
56
- This is the **git pre-compile gate** firing. Aitne refuses to start
57
- `!compile full` on an external git-tracked vault with a dirty working
58
- tree because the pre-compile snapshot it would create can no longer
59
- be a clean baseline.
77
+ This is the **git pre-compile gate** firing. Before a full rebuild,
78
+ Aitne wants to take a clean pre-compile snapshot commit so you can revert
79
+ the whole compile in one step. It refuses to start on an external
80
+ git-tracked vault whose working tree is dirty, because that snapshot
81
+ would no longer be a clean baseline.
60
82
 
61
83
  To proceed:
62
84
 
63
85
  1. `git -C <vault> status` — review the dirty paths Aitne listed.
64
86
  2. Commit or stash them: `git add -A && git commit -m "wip"` or
65
87
  `git stash -u`.
66
- 3. Re-run `!compile full`. On a clean tree Aitne runs
67
- `git add -A && git commit -m "aitne wiki: pre-compile snapshot <ts>"`
68
- automatically.
69
-
70
- If you don't want the auto-commit, disable **Auto-commit before
71
- `!compile full`** in **Settings Wiki** (only visible for
72
- git-tracked external vaults). Aitne will then run without taking a
73
- snapshot — and the approval-gate DM will explicitly say "no git
74
- backup taken".
75
-
76
- ## "Sent for Approval"
77
-
78
- The cost estimator's pessimistic bound (`2× expected`) exceeded the
79
- per-workspace approval threshold (default $2.00). To approve:
80
-
81
- 1. Open the dashboard.
82
- 2. Go to **Settings → Wiki → Approvals** (or hit the **Approvals**
83
- notification card directly).
84
- 3. Review the estimate. Click **Approve** to run, **Deny** to skip.
85
-
86
- If the estimate looks wrong, you have three levers:
87
-
88
- - **Lower the avg input tokens** — the default 1500 is conservative
89
- for short raw notes; check whether your typical raw note is
90
- smaller.
91
- - **Switch the `wiki.compile` model** to a lite tier in the
92
- per-command selector. Sonnet's per-token cost is the dominant
93
- variable.
94
- - **Raise the threshold** in **Settings Wiki** so routine
95
- recompiles don't queue an approval.
96
-
97
- ## "Not Enabled"
98
-
99
- If `!compile full` replies "Wiki is not enabled", you have no active
100
- workspace row. Run **Enable Internal Workspace** (or **Probe &
101
- Create External**) on `/settings/wiki` first.
88
+ 3. Re-run `!compile full`. On a clean tree Aitne commits the snapshot
89
+ itself (`aitne wiki: pre-compile snapshot <ts>`) before the compile
90
+ starts, and the reply echoes the short SHA.
91
+
92
+ If you don't want the auto-commit, turn off **Auto-commit before
93
+ `!compile full`** on `/settings/wiki` (the toggle only appears for
94
+ git-tracked external vaults). Aitne then runs without taking a snapshot,
95
+ and the estimate reply says `pre-compile git snapshot: disabled by
96
+ setting`.
97
+
98
+ > Internal-mode wikis are not git-tracked — they snapshot through
99
+ > `md_file_snapshots` instead, so this gate never fires for them.
100
+
101
+ ## Sent for Approval
102
+
103
+ The full reply ends with:
104
+
105
+ > Sent for approval. Open `/settings/wiki` → Approvals to confirm and the
106
+ > compile will start.
107
+
108
+ This is the **cost gate**. Before running, Aitne estimates the compile
109
+ cost (pure on-disk arithmetic — no agent session is spent). The estimate
110
+ DM looks like this:
111
+
112
+ ```
113
+ Full compile estimate for `my-wiki`:
114
+ - raw notes: 42
115
+ - est. input tokens: 51,300
116
+ - cost range: $0.08 (optimistic) $0.31 (pessimistic), expected $0.15
117
+ - approval threshold: $2.00
118
+ ```
119
+
120
+ If the **pessimistic** bound (`2× expected`) exceeds the per-workspace
121
+ approval threshold (default **$2.00**), the compile is queued for
122
+ approval instead of running.
123
+
124
+ ### Approve or Deny
125
+
126
+ The queued request shows up as a **pending approval** on the dashboard.
127
+ Open the dashboard overview (the home page `/`, also reached via the
128
+ `/approvals` shortcut) and use the **pending approvals** card:
129
+
130
+ - Click **Approve** to run the compile. Aitne re-checks the git tree and
131
+ takes the pre-compile snapshot at that moment (so declining leaves your
132
+ git log clean).
133
+ - Click **Deny** to drop it.
134
+
135
+ You can also approve from your DM channel by replying `yes` to the
136
+ request.
137
+
138
+ ### If the estimate looks too high
139
+
140
+ You have three levers, all on `/settings/wiki`:
141
+
142
+ - **Raise the threshold.** The **Approval threshold for `!compile full`**
143
+ field controls when a compile queues for approval. Bump it if routine
144
+ recompiles keep stalling on a confirmation you'd always grant.
145
+ - **Use a cheaper model.** In the **Commands & models** section, point
146
+ `wiki.compile` at a lite-tier model. It defaults to the medium tier
147
+ (Claude Sonnet 4.6), whose per-token cost is the dominant variable in
148
+ the estimate.
149
+ - **Trim the raw layer.** The estimate scans `10_raw/` and approximates
150
+ tokens per file from on-disk content, so the cost tracks the actual
151
+ size of what you're compiling. Compiling fewer or shorter raw notes
152
+ lowers the bound directly.
153
+
154
+ > The estimate is a heuristic (≈4 chars per token for prose, denser for
155
+ > CJK), bracketed `0.5×`–`2×`. It is intentionally cheap rather than
156
+ > exact — close enough to gate spend without burning a session to
157
+ > measure it.
158
+
159
+ ## Not Enabled
160
+
161
+ If the reply is:
162
+
163
+ > Wiki is not enabled. Open `/settings/wiki` and enable the internal
164
+ > wiki workspace first.
165
+
166
+ you have no active workspace row. On `/settings/wiki`, either click
167
+ **Enable internal wiki** to create the built-in workspace, or point Aitne
168
+ at an existing folder with **Use this folder** (after the path probe
169
+ passes). Then re-run `!compile full`.
170
+
171
+ If the workspace exists but is archived, the page shows a **This wiki is
172
+ archived** card — click **Re-activate wiki** there before any `!compile`
173
+ command will run.
@@ -17,6 +17,7 @@ tags:
17
17
  - troubleshooting
18
18
  - wiki
19
19
  - obsidian
20
+ - integrations
20
21
  status: stable
21
22
  ask_examples:
22
23
  - Why can't the wiki write to my Obsidian vault?
@@ -24,12 +25,18 @@ ask_examples:
24
25
  - How do I retry the write-strategy probe?
25
26
  locale: en-US
26
27
  created: 2026-05-12
27
- updated: 2026-05-12
28
+ updated: 2026-05-28
28
29
  keywords:
29
30
  - wiki write failed
30
31
  - wiki API failure
31
- - wiki write lock
32
+ - wiki write strategy
32
33
  - external vault write
34
+ - obsidian cli fallback
35
+ api_endpoints:
36
+ - /api/wiki/:workspace/health
37
+ ui_anchors:
38
+ - /settings/wiki
39
+ - /connections/knowledge
33
40
  related:
34
41
  - features/wiki/overview
35
42
  - guides/use-an-existing-obsidian-vault
@@ -40,8 +47,9 @@ related:
40
47
  ## What You See
41
48
 
42
49
  A wiki bang command (`!ingest`, `!compile`) reports a write failure in
43
- the daemon log, or the dashboard `/api/wiki/:ws/health` endpoint
44
- surfaces a non-`fs` strategy with `cliAvailable: false`.
50
+ the daemon log, or the `GET /api/wiki/:workspace/health` endpoint
51
+ (surfaced behind the dashboard's write-strategy badge) reports a
52
+ non-`fs` strategy with `cliAvailable: false`.
45
53
 
46
54
  ## Quick Checklist
47
55
 
@@ -74,14 +82,23 @@ Requirements:
74
82
 
75
83
  If any of these is missing, the daemon surfaces a structured error:
76
84
 
77
- | Error code | Meaning |
78
- |---|---|
79
- | `EWIKI_CLI_UNAVAILABLE` | Aitne's `ObsidianService` is not configured. Open `SettingsIntegrations Obsidian` and complete the pairing. |
80
- | `EWIKI_CLI_NOT_RUNNING` | Obsidian is not running. Launch the app and retry. |
85
+ | Error code | Meaning | Fix |
86
+ |---|---|---|
87
+ | `EWIKI_CLI_UNAVAILABLE` | Aitne's `ObsidianService` is not configured (the `obsidian` binary is not resolvable on `PATH`). | Open **ConnectionsKnowledge** and connect Obsidian via the Obsidian card, then confirm Obsidian 1.12+ is installed with the CLI enabled. |
88
+ | `EWIKI_CLI_NOT_RUNNING` | The CLI is configured but the Obsidian app is not running, so it cannot reach the sandboxed vault. | Launch the Obsidian app and retry. |
81
89
 
82
90
  ## Force a Re-Probe
83
91
 
84
- If you've fixed the underlying issue (granted iCloud permission,
85
- mounted the disk read-write) but the cached strategy is still `cli`,
86
- flip the dropdown in **Settings Wiki Write strategy** back to
87
- `auto`. The next write probes again and persists the fresh outcome.
92
+ The resolved strategy (`fs` or `cli`) is cached on the workspace row so
93
+ later writes skip the probe. If you've fixed the underlying issue
94
+ (granted iCloud permission, mounted the disk read-write) but the cached
95
+ strategy is still `cli`, force a fresh probe:
96
+
97
+ 1. Open **Settings → Wiki** (`/settings/wiki`) and edit the external
98
+ workspace.
99
+ 2. Set the **Write strategy** field back to **Auto (probe on first
100
+ write)**. (This field only appears for external workspaces; internal
101
+ workspaces always write via the local filesystem.)
102
+ 3. Save. The next write probes again — trying direct `fs` first and
103
+ falling back to the CLI only on `EPERM` / `EACCES` / `EROFS` /
104
+ `EBUSY` — and persists the fresh outcome.
@@ -16,7 +16,7 @@ Each is one row from `skill_curation_signals`:
16
16
  "skill_slug": "user-profile",
17
17
  "section_id": "topic-files",
18
18
  "signal_type": "structure_diff",
19
- "payload": { "sub_kind": "heading_add", "target": "user/personal.md#health-log" },
19
+ "payload": { "sub_kind": "heading_add", "target": "identity/personal.md#health-log" },
20
20
  "observed_at": 1717000000000
21
21
  }
22
22
  ```
@@ -21,7 +21,7 @@ submitting a proposal.
21
21
  "taken_at": 1717000000000,
22
22
  "files": [
23
23
  {
24
- "path": "user/profile.md",
24
+ "path": "identity/profile.md",
25
25
  "headings": ["Identity", "Work Pattern", "Learned Context"],
26
26
  "frontmatter": { "type": "profile", "owner": "shared" },
27
27
  "last_modified_at": 1716900000000
@@ -65,7 +65,7 @@ Free-text fields (`convention_notes.rule`, `routing_table.note`,
65
65
  action. Examples:
66
66
 
67
67
  - ❌ "When the user mentions a doctor visit, write to user/personal.md"
68
- - ✅ "Doctor visits are recorded under `user/personal.md ## Health Log`"
68
+ - ✅ "Doctor visits are recorded under `identity/personal.md ## Health Log`"
69
69
  - ❌ "Always include the date with the entry"
70
70
  - ✅ "Entries carry a `[YYYY-MM-DD]` prefix"
71
71
  - ❌ "Never use spaces in slugs"
@@ -0,0 +1,91 @@
1
+ # Aitne Managed Chromium — AppArmor profile
2
+ #
3
+ # MANAGED_CHROMIUM_IMPLEMENTATION_PLAN.md §5.4 / §7.4
4
+ #
5
+ # Belt-and-suspenders profile applied when AppArmor is active on the
6
+ # host. Bubblewrap / systemd-run is the primary primitive; AppArmor
7
+ # adds an OS-policy-level guard on top of the namespace isolation.
8
+ #
9
+ # Install:
10
+ # sudo install -m 0644 aitne-chromium.apparmor /etc/apparmor.d/
11
+ # sudo apparmor_parser -r /etc/apparmor.d/aitne-chromium
12
+ #
13
+ # The `aa-aitne-chromium` namespace allows multiple per-instance
14
+ # profiles (sync vs. automation) to coexist if we ever split them; for
15
+ # the B-1 surface only `sync` is active.
16
+
17
+ #include <tunables/global>
18
+
19
+ profile aa-aitne-chromium-sync flags=(attach_disconnected) {
20
+ #include <abstractions/base>
21
+ #include <abstractions/X>
22
+ #include <abstractions/dbus-session-strict>
23
+ #include <abstractions/fonts>
24
+ #include <abstractions/nameservice>
25
+ #include <abstractions/ssl_certs>
26
+
27
+ # Read-only access to the Chromium binary's installed location plus
28
+ # system libraries it needs at runtime. Allow both Debian-style and
29
+ # Fedora-style install paths.
30
+ /usr/bin/chromium r,
31
+ /usr/bin/chromium-browser r,
32
+ /usr/lib/chromium/chromium rmix,
33
+ /usr/lib64/chromium/chromium rmix,
34
+ /usr/lib{,64}/chromium/** r,
35
+ /usr/lib{,64}/x86_64-linux-gnu/** r,
36
+ /usr/share/chromium/** r,
37
+ /usr/share/fonts/** r,
38
+ /etc/chromium/** r,
39
+ /etc/passwd r,
40
+ /etc/group r,
41
+ /proc/sys/kernel/** r,
42
+ /proc/[0-9]*/stat r,
43
+ /proc/[0-9]*/status r,
44
+ /proc/[0-9]*/cmdline r,
45
+ /sys/devices/** r,
46
+
47
+ # Per-instance user data dir — the only writable persistent path. The
48
+ # path is templated in by sandbox-install.ts; until install rewrites
49
+ # this profile the rule below denies the entire chromium-sync tree.
50
+ owner @{HOME}/.personal-agent/chromium-sync/** rwk,
51
+ owner @{HOME}/.personal-agent/chromium-sync rw,
52
+
53
+ # Tempfs / runtime dirs.
54
+ owner /tmp/** rw,
55
+ owner /var/tmp/** rw,
56
+ owner @{HOME}/.cache/aitne-chromium/** rw,
57
+
58
+ # Network — Chromium itself reaches sync endpoints. Fine-grained
59
+ # filtering happens at the CDP layer in B-2.
60
+ network inet,
61
+ network inet6,
62
+ network netlink,
63
+ network unix,
64
+
65
+ # Capabilities Chromium requires (process management, scheduling).
66
+ capability sys_admin,
67
+ capability sys_ptrace,
68
+ capability sys_chroot,
69
+ capability sys_resource,
70
+ capability setuid,
71
+ capability setgid,
72
+ capability setpcap,
73
+
74
+ # No exec of foreign binaries — Chromium spawns its own helper
75
+ # processes from the same install dir via `ix`. Reject anything else.
76
+ audit deny /bin/sh x,
77
+ audit deny /bin/bash x,
78
+ audit deny /usr/bin/curl x,
79
+ audit deny /usr/bin/wget x,
80
+ audit deny /usr/bin/python* x,
81
+
82
+ # No reads of OS secret stores from inside Chromium.
83
+ audit deny /etc/shadow r,
84
+ audit deny /etc/sudoers r,
85
+ audit deny /etc/sudoers.d/** r,
86
+ audit deny @{HOME}/.aws/** r,
87
+ audit deny @{HOME}/.ssh/** r,
88
+ audit deny @{HOME}/.gnupg/** r,
89
+ audit deny @{HOME}/.config/gh/** r,
90
+ audit deny @{HOME}/.kube/** r,
91
+ }
@@ -0,0 +1,156 @@
1
+ ;; Aitne Managed Chromium — sandbox-exec profile
2
+ ;;
3
+ ;; MANAGED_CHROMIUM_IMPLEMENTATION_PLAN.md §5.4 / §7.4
4
+ ;;
5
+ ;; Deny-by-default sandbox for Chromium under macOS. Loaded via:
6
+ ;; sandbox-exec -f aitne-chromium.sb /Applications/Chromium.app/...
7
+ ;;
8
+ ;; Defence layering:
9
+ ;; - Outer ring (this file): system-call-level deny of arbitrary file
10
+ ;; reads, exec of foreign binaries, raw socket creation, etc.
11
+ ;; - Middle ring: Chromium's own multi-process renderer sandbox.
12
+ ;; - Inner ring (B-2): per-workflow CDP request interception in
13
+ ;; Playwright's `context.route` handler.
14
+ ;;
15
+ ;; The user-data-dir parameter (`%user_data_dir%`) is substituted by
16
+ ;; sandbox-install.ts at install time — sandbox-exec's parameter syntax
17
+ ;; (`(param "name")`) is awkward to template, so we ship one profile
18
+ ;; with a literal substitution before write.
19
+
20
+ (version 1)
21
+
22
+ (deny default)
23
+ (deny file-write* (with no-log))
24
+
25
+ ;; Allow forking + IPC needed for Chromium's multi-process model.
26
+ ;; `%binary_bundle%` is the resolved .app bundle root (e.g.
27
+ ;; /Applications/Chromium.app, or for a Playwright-managed install
28
+ ;; ~/Library/Caches/ms-playwright/chromium-NNNN/chrome-mac-{arm64,x64}/
29
+ ;; Google Chrome for Testing.app). The subpath covers helpers
30
+ ;; (`Chromium Helper.app`, `Google Chrome for Testing Helper.app`),
31
+ ;; crashpad_handler, and the embedded `.framework/*` bundles Chromium
32
+ ;; spawns from inside the .app at runtime. Substituted by
33
+ ;; sandbox-install.ts alongside %binary_path%.
34
+ (allow process-fork)
35
+ (allow process-exec
36
+ (literal "%binary_path%")
37
+ (subpath "%binary_bundle%")
38
+ (subpath "/Applications/Chromium.app")
39
+ (subpath "/Applications/Google Chrome.app")
40
+ (subpath "/System/Library")
41
+ (subpath "/usr/lib")
42
+ (subpath "/usr/bin"))
43
+ (allow signal (target same-sandbox))
44
+ (allow mach-priv-host-port)
45
+ (allow mach-lookup)
46
+ ;; `mach-register` is required for Chromium's `MachPortRendezvousServer`
47
+ ;; to call `bootstrap_check_in` and register its per-PID rendezvous
48
+ ;; service (`com.google.chrome.for.testing.MachPortRendezvousServer.<pid>`).
49
+ ;; Without it the browser process aborts with
50
+ ;; `FATAL:mach_port_rendezvous_mac.cc: bootstrap_check_in ...
51
+ ;; Permission denied (1100)`. The registered name embeds the PID so a
52
+ ;; compromised Chromium cannot squat a well-known name; the daemon
53
+ ;; itself reaches Chromium over CDP, not Mach, so allowing `mach-register`
54
+ ;; on the outer ring does not widen the daemon ↔ Chromium boundary.
55
+ (allow mach-register)
56
+ (allow ipc-posix-shm*)
57
+ (allow process-info-pidinfo)
58
+ (allow process-info-pidfdinfo)
59
+ (allow process-info-pidfileportinfo)
60
+ (allow process-info-setcontrol)
61
+ (allow process-info-dirtycontrol)
62
+ (allow process-info-rusage)
63
+
64
+ ;; Reads — system frameworks, fonts, locale data, the binary's own
65
+ ;; bundle. Read access to the user's general Library tree is denied;
66
+ ;; only the explicit chromium-sync/ profile dir is writable.
67
+ ;; `%binary_bundle%` covers the same .app root referenced under
68
+ ;; `process-exec` above so Chromium can load its .dylib / .pak /
69
+ ;; .icns / locale resources from inside its own bundle.
70
+ ;;
71
+ ;; The bare `(literal "/")` is mandatory on macOS 26 (Tahoe): dyld
72
+ ;; performs `file-read-data /` very early during process boot
73
+ ;; (boot_boot → CacheFinder → ignition_halt path, abort_with_reason
74
+ ;; namespace 0x23 / code 2). Without it every sandboxed arm64e child
75
+ ;; — Chromium, /usr/bin/true, anything — aborts before main() runs.
76
+ ;; `/dev/dtracehelper` is opened by libdispatch on first
77
+ ;; dispatch_queue use; benign denial, allow it to keep the kernel log
78
+ ;; clean.
79
+ (allow file-read*
80
+ (literal "/")
81
+ (literal "/dev/dtracehelper")
82
+ (subpath "%binary_bundle%")
83
+ (subpath "/Applications/Chromium.app")
84
+ (subpath "/Applications/Google Chrome.app")
85
+ (subpath "/Library/Frameworks")
86
+ (subpath "/Library/Fonts")
87
+ (subpath "/Library/Audio")
88
+ (subpath "/Library/Preferences/.GlobalPreferences.plist")
89
+ (subpath "/Library/Keychains")
90
+ (subpath "/System")
91
+ (subpath "/private/etc")
92
+ (subpath "/private/var/db/timezone")
93
+ (subpath "/private/var/folders") ;; temp / NSCachesDirectory
94
+ (subpath "/usr/lib")
95
+ (subpath "/usr/share")
96
+ (literal "/dev/null")
97
+ (literal "/dev/random")
98
+ (literal "/dev/urandom")
99
+ (literal "/dev/zero")
100
+ (literal "/dev/tty")
101
+ (literal "/etc")
102
+ (literal "/var")
103
+ (literal "/tmp")
104
+ (literal "/private/tmp"))
105
+
106
+ ;; Path-traversal metadata grant. macOS 26 no longer implicitly
107
+ ;; allows `file-read-metadata` on the parent directories of a
108
+ ;; `(subpath ...)` rule, so a `stat("/Users")` on the way down to
109
+ ;; %binary_bundle% / %user_data_dir% fails and Chromium then raises
110
+ ;; `NSInvalidArgumentException: *** -[NSBundle initWithURL:]:
111
+ ;; non-file URL argument` during framework bootstrap.
112
+ ;;
113
+ ;; Only metadata (stat / lstat) is granted — no `file-read-data`,
114
+ ;; so directory contents under the ancestors are not enumerable from
115
+ ;; this rule. The list is the union of the ancestors of
116
+ ;; %binary_bundle% and %user_data_dir%, deduped + sorted, and is
117
+ ;; expanded by sandbox-install.ts at install time. If both paths
118
+ ;; collapse to no ancestors (e.g. both at `/`) the placeholder
119
+ ;; renders to a single no-op `(literal "/")` line so the form stays
120
+ ;; syntactically valid.
121
+ (allow file-read-metadata
122
+ %ancestor_metadata_literals%)
123
+
124
+ ;; The per-instance user data dir is the only persistent path the
125
+ ;; browser can write to. sandbox-install.ts rewrites %user_data_dir%
126
+ ;; to the resolved absolute path before this file is written to
127
+ ;; PA_DATA_DIR/sandbox/aitne-chromium.sb.
128
+ (allow file-read* file-write*
129
+ (subpath "%user_data_dir%"))
130
+
131
+ ;; Temp directories Chromium needs at runtime.
132
+ (allow file-read* file-write*
133
+ (subpath "/private/var/folders")
134
+ (subpath "/tmp")
135
+ (subpath "/private/tmp"))
136
+
137
+ ;; Networking — Chromium needs general network access to reach Google
138
+ ;; sync endpoints. The fine-grained allowlist lives at the CDP layer
139
+ ;; (B-2); this is the coarse ring.
140
+ (allow network*)
141
+
142
+ ;; System info, sysctls, mach ports Chromium queries on startup.
143
+ (allow sysctl-read)
144
+ (allow system-socket)
145
+ (allow iokit-open (iokit-user-client-class "RootDomainUserClient"))
146
+ (allow iokit-open (iokit-user-client-class "IOSurfaceRootUserClient"))
147
+ (allow iokit-open (iokit-user-client-class "IOSurfaceSendRight"))
148
+ (allow iokit-open (iokit-user-client-class "IOFramebufferSharedUserClient"))
149
+ (allow iokit-open (iokit-user-client-class "IOHIDLibUserClient"))
150
+ (allow iokit-open (iokit-user-client-class "IOAudioControlUserClient"))
151
+ (allow iokit-open (iokit-user-client-class "IOAudioEngineUserClient"))
152
+
153
+ ;; Required for the Chromium UI to function when running with a window
154
+ ;; (initial sign-in bootstrap; headless instances never hit this path).
155
+ (allow user-preference-read)
156
+ (allow user-preference-write)
@@ -10,7 +10,7 @@ allowed-tools:
10
10
 
11
11
  The running session can patch structured metadata into the `agent_actions`
12
12
  row that records its own run. The daemon's morning-routine pipeline
13
- consumes that metadata to assemble `agent/journal.md` without parsing
13
+ consumes that metadata to assemble `journal/agent.md` without parsing
14
14
  your final-text output — see `docs/design/appendices/morning-routine-
15
15
  optimization.md` §"Data-flow principle: prose vs structured".
16
16
 
@@ -55,7 +55,7 @@ The morning-routine Stage A is the primary caller. Its expected shape:
55
55
  | `anomalies` | `string[]` | Free-form anomalies you encountered (e.g. "AgentPlan cardinality mismatch: today.md has 6 rows, batch had 5"). ⑥ surfaces these in agent/journal.md and `pnpm audit` filters on them. |
56
56
  | `filesTouched` | `string[]` | Paths your turn wrote to (e.g. `context/today.md`, `context/roadmap.md`). |
57
57
  | `inboxStats` | `{triaged, movedToScratch, dmConfirmsSent, secretsSkipped}` | Inbox triage counts from Step 4. All keys integers >= 0. `secretsSkipped` is collected but NOT rendered by ⑥; surface secret-skip events through `anomalies` as well so they reach the audit trail. |
58
- | `morningChecks` | `string[]` | Short labels for every Step 8 `routines/morning.md` extension check executed (e.g. `"water bottle filled"`). ⑥ joins these with `, ` into the `Checks from routines/morning.md:` bullet. Empty array → renders as `(none)`. |
58
+ | `morningChecks` | `string[]` | Short labels for every Step 8 `policies/routines/morning.md` extension check executed (e.g. `"water bottle filled"`). ⑥ joins these with `, ` into the `Checks from routines/morning.md:` bullet. Empty array → renders as `(none)`. |
59
59
  | `scheduleBatchSize` | `number` | Cardinality you observed when posting to `/api/schedule/batch`. Mirrors what was POSTed so ⑥ can detect cardinality mismatches against today.md. |
60
60
 
61
61
  The endpoint accepts any well-formed JSON object — these are the keys