@aitne-sh/aitne 0.1.7 → 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 (317) hide show
  1. package/README.md +256 -833
  2. package/agent-assets/agent-profiles/_safety.md +52 -20
  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 +3 -3
  6. package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
  7. package/agent-assets/agent-profiles/routine.md +4 -3
  8. package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
  9. package/agent-assets/agents/evening-review/agent.md +53 -0
  10. package/agent-assets/agents/hourly-check/agent.md +62 -0
  11. package/agent-assets/agents/monthly-review/agent.md +55 -0
  12. package/agent-assets/agents/morning-routine/agent.md +78 -0
  13. package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
  14. package/agent-assets/agents/skill-curation/agent.md +52 -0
  15. package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
  16. package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
  17. package/agent-assets/agents/weekly-review/agent.md +51 -0
  18. package/agent-assets/docs/concepts/agent-day.md +18 -11
  19. package/agent-assets/docs/concepts/auth-health.md +56 -10
  20. package/agent-assets/docs/concepts/backends-and-tiers.md +110 -41
  21. package/agent-assets/docs/concepts/costs-and-quotas.md +74 -19
  22. package/agent-assets/docs/concepts/delegated-mode.md +193 -75
  23. package/agent-assets/docs/concepts/memory-model.md +79 -34
  24. package/agent-assets/docs/concepts/observations.md +61 -11
  25. package/agent-assets/docs/concepts/process-keys.md +66 -17
  26. package/agent-assets/docs/concepts/routines.md +77 -32
  27. package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
  28. package/agent-assets/docs/concepts/safety-model.md +62 -37
  29. package/agent-assets/docs/concepts/skills.md +38 -17
  30. package/agent-assets/docs/features/integrations/browser-history.md +195 -0
  31. package/agent-assets/docs/features/integrations/calendar.md +40 -30
  32. package/agent-assets/docs/features/integrations/git.md +20 -9
  33. package/agent-assets/docs/features/integrations/github.md +93 -35
  34. package/agent-assets/docs/features/integrations/mail.md +60 -17
  35. package/agent-assets/docs/features/integrations/notion.md +51 -11
  36. package/agent-assets/docs/features/integrations/obsidian.md +35 -7
  37. package/agent-assets/docs/features/lifestyle/git.md +45 -44
  38. package/agent-assets/docs/features/lifestyle/reading.md +50 -22
  39. package/agent-assets/docs/features/lifestyle/receipts.md +66 -21
  40. package/agent-assets/docs/features/lifestyle/travel-bookings.md +91 -14
  41. package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
  42. package/agent-assets/docs/features/memory-files/projects.md +75 -15
  43. package/agent-assets/docs/features/memory-files/roadmap.md +55 -10
  44. package/agent-assets/docs/features/memory-files/schedule.md +113 -70
  45. package/agent-assets/docs/features/memory-files/today.md +47 -21
  46. package/agent-assets/docs/features/memory-files/user-profile.md +67 -31
  47. package/agent-assets/docs/features/messaging/bang-commands.md +115 -28
  48. package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
  49. package/agent-assets/docs/features/messaging/discord.md +46 -4
  50. package/agent-assets/docs/features/messaging/overview.md +40 -19
  51. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
  52. package/agent-assets/docs/features/messaging/slack.md +79 -14
  53. package/agent-assets/docs/features/messaging/telegram.md +25 -6
  54. package/agent-assets/docs/features/messaging/whatsapp.md +79 -14
  55. package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -16
  56. package/agent-assets/docs/features/operations/approvals.md +53 -15
  57. package/agent-assets/docs/features/operations/backend-routing.md +75 -16
  58. package/agent-assets/docs/features/operations/cost-tracking.md +90 -17
  59. package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
  60. package/agent-assets/docs/features/operations/notifications.md +58 -11
  61. package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
  62. package/agent-assets/docs/features/operations/schedule-approaching.md +59 -16
  63. package/agent-assets/docs/features/routines/custom-routines.md +97 -23
  64. package/agent-assets/docs/features/routines/evening-review.md +75 -22
  65. package/agent-assets/docs/features/routines/hourly-check.md +150 -30
  66. package/agent-assets/docs/features/routines/morning-routine.md +60 -33
  67. package/agent-assets/docs/features/routines/weekly-review.md +65 -20
  68. package/agent-assets/docs/features/wiki/commands.md +37 -16
  69. package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
  70. package/agent-assets/docs/features/wiki/dashboard.md +255 -0
  71. package/agent-assets/docs/features/wiki/overview.md +80 -12
  72. package/agent-assets/docs/features/wiki/search.md +248 -0
  73. package/agent-assets/docs/features/wiki/workspaces.md +254 -0
  74. package/agent-assets/docs/getting-started/01-what-is-this.md +64 -32
  75. package/agent-assets/docs/getting-started/02-first-steps.md +28 -10
  76. package/agent-assets/docs/getting-started/03-what-can-this-do.md +42 -21
  77. package/agent-assets/docs/getting-started/04-first-day.md +52 -20
  78. package/agent-assets/docs/glossary.md +285 -21
  79. package/agent-assets/docs/guides/add-a-custom-routine.md +74 -22
  80. package/agent-assets/docs/guides/backup-and-restore.md +92 -14
  81. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +62 -25
  82. package/agent-assets/docs/guides/build-your-wiki.md +33 -6
  83. package/agent-assets/docs/guides/change-which-model-handles-x.md +70 -9
  84. package/agent-assets/docs/guides/connect-a-new-mail-account.md +80 -15
  85. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -9
  86. package/agent-assets/docs/guides/import-knowledge-file.md +60 -39
  87. package/agent-assets/docs/guides/install-and-run.md +64 -19
  88. package/agent-assets/docs/guides/maintain-wiki-health.md +41 -10
  89. package/agent-assets/docs/guides/migrate-machines.md +86 -18
  90. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +119 -59
  91. package/agent-assets/docs/guides/pause-the-agent.md +71 -22
  92. package/agent-assets/docs/guides/reinstall-cleanly.md +102 -17
  93. package/agent-assets/docs/guides/setup-wizard.md +126 -56
  94. package/agent-assets/docs/guides/switch-default-backend.md +72 -17
  95. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +31 -10
  96. package/agent-assets/docs/reference/api.md +162 -23
  97. package/agent-assets/docs/reference/cli-commands.md +55 -15
  98. package/agent-assets/docs/reference/config.md +246 -39
  99. package/agent-assets/docs/reference/disallowed-tools.md +42 -10
  100. package/agent-assets/docs/reference/keyboard-shortcuts.md +47 -10
  101. package/agent-assets/docs/reference/knowledge-layout.md +620 -0
  102. package/agent-assets/docs/reference/process-keys.md +126 -20
  103. package/agent-assets/docs/reference/skills.md +62 -18
  104. package/agent-assets/docs/troubleshooting/auth-failed.md +53 -19
  105. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +96 -22
  106. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +94 -20
  107. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +77 -22
  108. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +87 -22
  109. package/agent-assets/docs/troubleshooting/observation-not-detected.md +85 -21
  110. package/agent-assets/docs/troubleshooting/quota-exhausted.md +36 -6
  111. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +128 -51
  112. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +33 -11
  113. package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
  114. package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
  115. package/agent-assets/optimizer-skills/skill-curation/SKILL.md +2 -2
  116. package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
  117. package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
  118. package/agent-assets/skills/agent-actions/SKILL.md +122 -0
  119. package/agent-assets/skills/agent-create/SKILL.md +149 -0
  120. package/agent-assets/skills/attach/SKILL.md +3 -4
  121. package/agent-assets/skills/browser-history/SKILL.md +198 -0
  122. package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
  123. package/agent-assets/skills/browser-task/SKILL.md +169 -0
  124. package/agent-assets/skills/context/SKILL.md +45 -463
  125. package/agent-assets/skills/context/curation.json +2 -2
  126. package/agent-assets/skills/context/references/api.md +232 -0
  127. package/agent-assets/skills/context/references/required-frontmatter.md +73 -0
  128. package/agent-assets/skills/context/references/snapshot-files.md +103 -0
  129. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +4 -4
  130. package/agent-assets/skills/docs-search/SKILL.md +17 -16
  131. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +14 -26
  132. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +14 -26
  133. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +14 -26
  134. package/agent-assets/skills/external-services/SKILL.md +9 -262
  135. package/agent-assets/skills/external-services/SKILL.native.claude.md +6 -7
  136. package/agent-assets/skills/external-services/SKILL.native.codex.md +8 -9
  137. package/agent-assets/skills/external-services/SKILL.native.gemini.md +5 -6
  138. package/agent-assets/skills/external-services/references/calendar-apple.md +97 -0
  139. package/agent-assets/skills/external-services/references/calendar-google.md +72 -0
  140. package/agent-assets/skills/external-services/references/calendar-outlook.md +36 -0
  141. package/agent-assets/skills/external-services/references/github.md +17 -0
  142. package/agent-assets/skills/external-services/references/obsidian.md +49 -0
  143. package/agent-assets/skills/external-services/references/skills-crud.md +27 -0
  144. package/agent-assets/skills/gmail-lifestyle/SKILL.md +151 -0
  145. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +93 -0
  146. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +75 -0
  147. package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -6
  148. package/agent-assets/skills/mail/SKILL.delegated.codex.md +9 -5
  149. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +9 -5
  150. package/agent-assets/skills/mail/SKILL.md +9 -114
  151. package/agent-assets/skills/mail/SKILL.native.claude.md +1 -1
  152. package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
  153. package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
  154. package/agent-assets/skills/mail/references/api.md +110 -0
  155. package/agent-assets/skills/mail/references/examples.md +70 -0
  156. package/agent-assets/skills/mail/references/providers.md +8 -8
  157. package/agent-assets/skills/managed-tasks/SKILL.md +472 -0
  158. package/agent-assets/skills/managed-tasks/references/errors.md +73 -0
  159. package/agent-assets/skills/managed-tasks/references/output-path.md +75 -0
  160. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +86 -0
  161. package/agent-assets/skills/management-policy/SKILL.md +54 -125
  162. package/agent-assets/skills/management-policy/curation.json +1 -1
  163. package/agent-assets/skills/management-policy/references/policy-workflow.md +101 -0
  164. package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
  165. package/agent-assets/skills/notify/SKILL.md +10 -82
  166. package/agent-assets/skills/notify/references/priority.md +65 -0
  167. package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
  168. package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
  169. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
  170. package/agent-assets/skills/notion/SKILL.md +6 -10
  171. package/agent-assets/skills/notion/SKILL.native.claude.md +11 -8
  172. package/agent-assets/skills/notion/SKILL.native.codex.md +10 -6
  173. package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -6
  174. package/agent-assets/skills/observations/SKILL.md +25 -14
  175. package/agent-assets/skills/project-doc/SKILL.md +2 -6
  176. package/agent-assets/skills/project-doc/curation.json +3 -3
  177. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
  178. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  179. package/agent-assets/skills/reading/SKILL.md +12 -2
  180. package/agent-assets/skills/reading/references/reading-taste.md +2 -2
  181. package/agent-assets/skills/roadmap/SKILL.md +43 -141
  182. package/agent-assets/skills/roadmap/curation.json +1 -1
  183. package/agent-assets/skills/roadmap/references/api.md +100 -0
  184. package/agent-assets/skills/roadmap/references/cross-check.md +80 -0
  185. package/agent-assets/skills/roadmap/references/migration.md +56 -0
  186. package/agent-assets/skills/roadmap/references/preparation-timeline.md +2 -2
  187. package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
  188. package/agent-assets/skills/schedule/SKILL.md +76 -104
  189. package/agent-assets/skills/schedule/references/batch.md +93 -0
  190. package/agent-assets/skills/schedule/references/errors.md +217 -0
  191. package/agent-assets/skills/schedule/references/model-selection.md +96 -0
  192. package/agent-assets/skills/schedule/references/recurrence-rule.md +86 -0
  193. package/agent-assets/skills/scheduled-managed-task/SKILL.md +59 -51
  194. package/agent-assets/skills/today/SKILL.md +32 -62
  195. package/agent-assets/skills/today/curation.json +3 -3
  196. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +114 -0
  197. package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
  198. package/agent-assets/skills/user-interview/SKILL.md +23 -67
  199. package/agent-assets/skills/user-interview/references/op-briefing.md +51 -0
  200. package/agent-assets/skills/user-interview/references/op-morning.md +59 -0
  201. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
  202. package/agent-assets/skills/user-profile/SKILL.md +54 -74
  203. package/agent-assets/skills/user-profile/curation.json +2 -2
  204. package/agent-assets/skills/user-profile/references/character-preferences.md +83 -0
  205. package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
  206. package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +30 -2
  207. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +0 -1
  208. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -5
  209. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +0 -1
  210. package/agent-assets/skills/wiki/wiki-graduate/SKILL.md +0 -1
  211. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +0 -1
  212. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +0 -1
  213. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +0 -1
  214. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +0 -1
  215. package/agent-assets/system-prompts/routine-fetch-window.md +78 -0
  216. package/agent-assets/system-prompts/skill-index-instruction.md +26 -0
  217. package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +20 -11
  218. package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +18 -9
  219. package/agent-assets/task-flows/_partials/capture-user-info.md +24 -0
  220. package/agent-assets/task-flows/_partials/confirm-subflow.md +68 -0
  221. package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +35 -0
  222. package/agent-assets/task-flows/_partials/dm-intent.project.md +391 -0
  223. package/agent-assets/task-flows/_partials/mail-acquire.gmail.md +20 -11
  224. package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +18 -9
  225. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +26 -15
  226. package/agent-assets/task-flows/browser_task.md +84 -0
  227. package/agent-assets/task-flows/github.assigned.md +1 -1
  228. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  229. package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
  230. package/agent-assets/task-flows/knowledge.import.md +15 -15
  231. package/agent-assets/task-flows/message.received.dm.md +20 -17
  232. package/agent-assets/task-flows/message.received.dm_first.md +11 -15
  233. package/agent-assets/task-flows/routine.custom.md +6 -4
  234. package/agent-assets/task-flows/routine.evening_review.md +46 -170
  235. package/agent-assets/task-flows/routine.fetch_window.md +19 -14
  236. package/agent-assets/task-flows/routine.hourly_check.md +27 -15
  237. package/agent-assets/task-flows/routine.hourly_check.triage.md +1 -1
  238. package/agent-assets/task-flows/routine.monthly_review.md +67 -25
  239. package/agent-assets/task-flows/routine.morning_routine_journal.md +135 -0
  240. package/agent-assets/task-flows/routine.morning_routine_today.md +673 -0
  241. package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
  242. package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
  243. package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
  244. package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
  245. package/agent-assets/task-flows/routine.roadmap_refresh.md +68 -23
  246. package/agent-assets/task-flows/routine.today_refresh.md +4 -4
  247. package/agent-assets/task-flows/routine.user_profile_sweep.md +19 -20
  248. package/agent-assets/task-flows/routine.weekly_review.md +370 -86
  249. package/agent-assets/task-flows/schedule.approaching.md +0 -1
  250. package/agent-assets/task-flows/scheduled.dm.md +13 -13
  251. package/agent-assets/task-flows/scheduled.task.md +9 -9
  252. package/agent-assets/task-flows/setup.initial.md +171 -251
  253. package/agent-assets/task-flows/setup.update.md +2 -2
  254. package/agent-assets/task-flows/wiki.ingest_url.md +1 -1
  255. package/agent-assets/templates/README.md +27 -20
  256. package/agent-assets/templates/_index.md +42 -26
  257. package/agent-assets/templates/_manifest.json +34 -99
  258. package/agent-assets/templates/{user → identity}/_index.md +1 -1
  259. package/agent-assets/templates/identity/expertise.md +9 -0
  260. package/agent-assets/templates/identity/goals.md +9 -0
  261. package/agent-assets/templates/identity/people.md +13 -0
  262. package/agent-assets/templates/identity/personal.md +9 -0
  263. package/agent-assets/templates/{user → identity}/profile.md +2 -2
  264. package/agent-assets/templates/identity/work.md +9 -0
  265. package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +2 -2
  266. package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
  267. package/agent-assets/templates/policies/_index.md +21 -0
  268. package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
  269. package/agent-assets/templates/policies/journal-format.md +168 -0
  270. package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
  271. package/agent-assets/templates/{rules → policies}/management.md +3 -3
  272. package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
  273. package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
  274. package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
  275. package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
  276. package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
  277. package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
  278. package/bin/aitne.mjs +21 -5
  279. package/package.json +5 -4
  280. package/scripts/commands/doctor.mjs +63 -5
  281. package/scripts/commands/run-now.mjs +187 -0
  282. package/scripts/commands/verify.mjs +264 -0
  283. package/scripts/lib/ports.d.mts +27 -0
  284. package/scripts/lib/ports.mjs +36 -0
  285. package/scripts/lib/read-api-token.mjs +176 -0
  286. package/scripts/start.mjs +2 -1
  287. package/agent-assets/docs/features/lifestyle/travel-time.md +0 -52
  288. package/agent-assets/docs/features/routines/monthly-review.md +0 -65
  289. package/agent-assets/skills/management-task-modify/SKILL.md +0 -203
  290. package/agent-assets/skills/management-task-register/SKILL.md +0 -330
  291. package/agent-assets/skills/management-task-stop/SKILL.md +0 -166
  292. package/agent-assets/skills/receipts/SKILL.md +0 -134
  293. package/agent-assets/skills/travel/SKILL.md +0 -132
  294. package/agent-assets/skills/travel-time/SKILL.md +0 -158
  295. package/agent-assets/task-flows/routine.morning_routine.md +0 -322
  296. package/agent-assets/task-flows/routine.morning_routine_initial.md +0 -204
  297. package/agent-assets/templates/context-index.md +0 -42
  298. package/agent-assets/templates/rules/_index.md +0 -19
  299. package/agent-assets/templates/rules/journal-format.md +0 -61
  300. package/agent-assets/templates/user/expertise.md +0 -7
  301. package/agent-assets/templates/user/goals.md +0 -7
  302. package/agent-assets/templates/user/people.md +0 -7
  303. package/agent-assets/templates/user/personal.md +0 -7
  304. package/agent-assets/templates/user/work.md +0 -7
  305. /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
  306. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
  307. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
  308. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
  309. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
  310. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
  311. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
  312. /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
  313. /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
  314. /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
  315. /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
  316. /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
  317. /package/agent-assets/templates/{today.md → state/today.md} +0 -0
@@ -7,63 +7,130 @@ aliases:
7
7
  - magic phrase
8
8
  - pairing
9
9
  - owner pairing
10
+ - pair my messaging account
10
11
  category: features
11
12
  summary: |
12
- Pair your messaging account to Aitne by typing a one-time
13
- "magic phrase" the dashboard generates. The phrase binds the channel
14
- to your owner identity so impersonation is impossible.
13
+ Pair a messaging account to Aitne so the daemon knows which DM channel
14
+ belongs to you, the owner. Slack and Discord use a one-time "magic
15
+ phrase" you DM from the app; Telegram uses a QR / deep-link token;
16
+ WhatsApp links the device by scanning a QR. All of them bind the channel
17
+ to your owner identity so nobody else can impersonate you.
15
18
  section: messaging
16
19
  tags:
17
20
  - core
18
21
  - messaging
19
22
  - pairing
20
23
  - safety
24
+ - setup
21
25
  status: stable
22
- ask_examples:
23
- - How do I pair my Telegram account?
24
- - What is the magic phrase?
25
- - Can someone else impersonate me?
26
26
  locale: en-US
27
27
  created: 2026-04-25
28
- updated: 2026-04-25
28
+ updated: 2026-05-28
29
29
  keywords:
30
30
  - pairing
31
31
  - magic phrase
32
- - owner
32
+ - owner channel
33
+ - QR pairing
34
+ - impersonation
35
+ ask_examples:
36
+ - How do I pair my Telegram account?
37
+ - What is the magic phrase?
38
+ - Can someone else impersonate me as the owner?
39
+ - Why didn't my pairing DM work?
40
+ ui_anchors:
41
+ - /connections/messaging
33
42
  related:
34
43
  - features/messaging/overview
44
+ - features/messaging/slack
45
+ - features/messaging/telegram
46
+ - features/messaging/discord
47
+ - features/messaging/whatsapp
48
+ - troubleshooting/messaging-not-pairing
35
49
  ---
36
50
 
37
51
  # Pairing and Magic Phrase
38
52
 
39
- ## In One Sentence
53
+ ## In one sentence
54
+
55
+ The dashboard hands you a one-time secret (a typed phrase, a QR code, or
56
+ a deep link, depending on the platform); you send or scan it from the
57
+ messaging app you want to pair; the daemon records that channel as your
58
+ owner channel.
59
+
60
+ ## Why pairing exists
61
+
62
+ The agent only talks to one person — you, the owner. Pairing is how the
63
+ daemon learns which DM channel is yours.
64
+
65
+ - **Impersonation protection.** A random bot or stranger can't open a DM
66
+ and claim the owner role without the secret. Only someone who can see
67
+ the dashboard can complete the pairing.
68
+ - **One identity, many channels.** Pair Slack, Telegram, Discord, and
69
+ WhatsApp separately; all of them map to the same owner identity. A DM
70
+ to any paired channel reaches the agent, and notifications can go out on
71
+ whichever channels you've configured.
72
+
73
+ ## How each platform pairs
74
+
75
+ Pairing starts the same way everywhere — open
76
+ **Connections → Messaging** (`/connections/messaging`), find the
77
+ platform's card, and click its pairing button. What you do next depends
78
+ on the platform.
79
+
80
+ | Platform | Mechanism | What you do |
81
+ |---|---|---|
82
+ | **Slack** | Magic phrase | Dashboard shows a 4-word phrase (e.g. `apple-banana-cherry-date`). DM that phrase to the bot, by itself. |
83
+ | **Discord** | Magic phrase | Same as Slack — DM the displayed phrase to the bot. |
84
+ | **Telegram** | QR / deep link | Dashboard shows a QR code that opens a `https://t.me/<bot>?start=<token>` link. Tap **START** in Telegram. |
85
+ | **WhatsApp** | Device QR | Dashboard shows a QR code; scan it from WhatsApp on your phone (Linked Devices). |
86
+
87
+ ### The magic phrase (Slack, Discord)
40
88
 
41
- The dashboard prints a one-time phrase; you DM that phrase to the
42
- agent from the messaging app you want to pair; the daemon records the
43
- channel as your owner channel.
89
+ The dashboard generates a short, memorable phrase of four lowercase words
90
+ joined by hyphens, drawn from a 64-word list (24 bits of entropy). You DM
91
+ that exact phrase to the bot. Matching is tolerant — it ignores case,
92
+ punctuation, and emoji — but the phrase must be **sent by itself**. If you
93
+ wrap it in a sentence ("my phrase is apple-banana-cherry-date"), the agent
94
+ will reply asking you to send the phrase on its own.
44
95
 
45
- ## What It Does
96
+ The phrase is single-use and expires after **5 minutes**. If it lapses,
97
+ regenerate a fresh one from the dashboard.
46
98
 
47
- - Prevents drive-by impersonation: a bot can't open a DM and pretend
48
- to be the operator without the phrase.
49
- - Multiple paired channels (e.g. Telegram + Slack) all map to the
50
- same owner identity.
99
+ ### Token pairing (Telegram, WhatsApp)
51
100
 
52
- ## When It Runs / How It Is Triggered
101
+ Telegram and WhatsApp don't use a typed phrase:
53
102
 
54
- The phrase is generated when the operator clicks "Pair" on
55
- `/connections/messaging`. The daemon listens for the phrase from any
56
- incoming DM until paired or the phrase expires.
103
+ - **Telegram** encodes a high-entropy, single-use token in a QR / deep
104
+ link. Tapping **START** sends `/start <token>` to the bot, which
105
+ promotes you to owner. The token is matched exactly and also expires
106
+ after 5 minutes.
107
+ - **WhatsApp** uses WhatsApp's own linked-device flow — you scan a QR from
108
+ your phone to attach the daemon as a device. Set the owner phone number
109
+ first, then click **Pair device** and scan.
57
110
 
58
- ## Where in the Dashboard
111
+ ## Where in the dashboard
59
112
 
60
- - **Connections → Messaging** is the pairing surface.
113
+ **Connections → Messaging** (`/connections/messaging`) is the single
114
+ pairing surface. Each platform has its own card with a step-by-step setup
115
+ (create the app / paste tokens / pair) and a live status indicator that
116
+ flips to "paired" once the channel is bound.
61
117
 
62
- ## When Something Goes Wrong
118
+ ## When something goes wrong
63
119
 
64
- - Phrase expired: regenerate it from the dashboard.
65
- - DM was sent in a group: pairing only works in direct messages.
120
+ - **Phrase or token expired.** The window is 5 minutes. Regenerate from the
121
+ dashboard and try again.
122
+ - **"Send the pairing phrase by itself" reply.** You wrapped the phrase in
123
+ other text. Send just the four words.
124
+ - **DM was sent in a group.** Pairing — and all agent messaging — only works
125
+ in direct messages. Group chats are out of scope by design.
126
+ - **Still not pairing?** See
127
+ [Messaging not pairing](../../troubleshooting/messaging-not-pairing.md).
66
128
 
67
129
  ## Related
68
130
 
69
131
  - [Messaging Overview](overview.md)
132
+ - [Slack setup](slack.md)
133
+ - [Telegram setup](telegram.md)
134
+ - [Discord setup](discord.md)
135
+ - [WhatsApp setup](whatsapp.md)
136
+ - [Messaging not pairing (troubleshooting)](../../troubleshooting/messaging-not-pairing.md)
@@ -3,49 +3,114 @@ schema_version: 1
3
3
  slug: features/messaging/slack
4
4
  title: Slack
5
5
  id: slack
6
+ aliases:
7
+ - slack bot
8
+ - slack adapter
9
+ - slack pairing
10
+ - slack DM
6
11
  category: features
7
12
  summary: |
8
- Pair a Slack workspace by installing a bot user, pasting tokens
9
- into Aitne, and DMing the magic phrase.
13
+ Connect a Slack workspace by creating a bot app with Socket Mode,
14
+ pasting a bot token and an app-level token into Aitne, then DMing
15
+ the magic phrase to pair yourself as owner.
10
16
  section: messaging
11
17
  tags:
12
18
  - messaging
13
- - integration
19
+ - integrations
20
+ - slack
21
+ - pairing
14
22
  status: stable
15
23
  ask_examples:
16
24
  - How do I pair Slack?
25
+ - Why does the agent need two Slack tokens?
17
26
  - Can the agent listen in shared channels?
18
27
  locale: en-US
19
28
  created: 2026-04-25
20
- updated: 2026-04-25
29
+ updated: 2026-05-28
30
+ keywords:
31
+ - slack
32
+ - socket mode
33
+ - bot token
34
+ - app token
35
+ - magic phrase
36
+ - owner channel
37
+ - messaging adapter
21
38
  related:
22
39
  - features/messaging/overview
23
40
  - features/messaging/pairing-and-magic-phrase
41
+ ui_anchors:
42
+ - /connections/messaging
43
+ config_keys:
44
+ - primaryPlatform
45
+ - slackOwnerUserId
24
46
  ---
25
47
 
26
48
  # Slack
27
49
 
28
50
  ## In One Sentence
29
51
 
30
- A Slack bot user becomes the agent's surface in your workspace; DMs
31
- to the bot are owner messages, mentions in channels are mention events.
52
+ A Slack bot user becomes the agent's surface in your workspace: DMs to
53
+ the bot are owner messages, and `@`-mentions of the bot in channels are
54
+ mention events — but only from the one paired owner.
32
55
 
33
56
  ## What It Does
34
57
 
35
- - Listens for DMs (owner reactive path).
36
- - Listens for `@personalagent` mentions in shared channels.
37
- - Sends notifications to the owner DM.
58
+ - Listens for **DMs** to the bot (owner reactive path).
59
+ - Listens for **`@`-mentions of the bot** in channels you've added it to.
60
+ - Sends notifications back to your owner DM.
38
61
 
39
- ## Where in the Dashboard
62
+ The adapter runs over Slack **Socket Mode** (a WebSocket), so Aitne does
63
+ not need a public inbound URL or webhook endpoint.
40
64
 
41
- - **Connections → Messaging → Slack** holds bot tokens, channel info,
42
- and the magic-phrase pairing flow.
65
+ ## Single-Owner Scope
66
+
67
+ Aitne is a single-owner agent by design. Only messages from the paired
68
+ owner are processed; everything else is dropped silently. Multi-person
69
+ DMs (`mpim`) are rejected outright, so a mention inside a group thread
70
+ never produces a reply visible to non-owners.
71
+
72
+ A channel mention only fires when the message text contains the bot's
73
+ actual user reference (e.g. `<@U0123ABCD>`, rendered as `@YourBotName`).
74
+ A plain text string like `@personalagent` is not a real Slack mention and
75
+ will not trigger anything.
76
+
77
+ ## Setup
78
+
79
+ Everything happens under **Connections → Messaging** in the dashboard
80
+ (the Slack card). There are three steps:
81
+
82
+ 1. **Create the Slack app.** Click *Open Slack app builder* — Aitne
83
+ pre-fills the manifest with the right scopes and Socket Mode enabled.
84
+ Create the app and install it to your workspace.
85
+ 2. **Paste two tokens.** Slack issues two tokens for a Socket Mode app:
86
+ - a **bot token** (`xoxb-...`) — the bot's identity and API access, and
87
+ - an **app-level token** (`xapp-...`) — authorizes the Socket Mode
88
+ WebSocket connection.
89
+
90
+ Paste both, then use *Test token* to confirm Aitne can reach the bot.
91
+ 3. **Pair with the magic phrase.** Click *Generate pairing phrase*, then
92
+ DM that exact phrase to the bot from your own Slack account. The first
93
+ account that sends the matching phrase becomes the owner. See
94
+ [Pairing and the Magic Phrase](pairing-and-magic-phrase.md) for how
95
+ the challenge works.
96
+
97
+ To route notifications to Slack by default, set Slack as your primary
98
+ platform (`primaryPlatform`). The owner's Slack user id is stored as
99
+ `slackOwnerUserId` once pairing succeeds.
43
100
 
44
101
  ## When Something Goes Wrong
45
102
 
46
- - Bot does not respond: check that the workspace bot has been added
47
- to the channel where the DM is happening.
103
+ - **Bot never responds to a DM.** Confirm both tokens are saved and *Test
104
+ token* succeeds. A failing app-level token (`xapp-`) means the Socket
105
+ Mode connection never opens, so no events arrive.
106
+ - **Mentions in a channel are ignored.** Make sure the bot has been added
107
+ to that channel, and that you're mentioning the bot itself (autocomplete
108
+ `@YourBotName`), not typing a plain word.
109
+ - **Pairing phrase isn't accepted.** Send the phrase by itself, with no
110
+ surrounding sentence — a wrapped phrase won't match. See the pairing
111
+ doc for the full rules.
48
112
 
49
113
  ## Related
50
114
 
51
115
  - [Messaging Overview](overview.md)
116
+ - [Pairing and the Magic Phrase](pairing-and-magic-phrase.md)
@@ -12,15 +12,25 @@ summary: |
12
12
  section: messaging
13
13
  tags:
14
14
  - messaging
15
- - integration
16
- - core
15
+ - integrations
16
+ - telegram
17
17
  status: stable
18
+ config_keys:
19
+ - telegramOwnerChatId
20
+ ui_anchors:
21
+ - /connections/messaging
18
22
  ask_examples:
19
23
  - How do I pair Telegram?
20
24
  - Where do I get a Telegram bot token?
21
25
  locale: en-US
22
26
  created: 2026-04-25
23
- updated: 2026-04-25
27
+ updated: 2026-05-28
28
+ keywords:
29
+ - telegram
30
+ - telegram bot
31
+ - bot token
32
+ - telegram pairing
33
+ - messaging adapter
24
34
  related:
25
35
  - features/messaging/pairing-and-magic-phrase
26
36
  - features/messaging/overview
@@ -35,12 +45,14 @@ token, type the magic phrase.
35
45
 
36
46
  ## What It Does
37
47
 
38
- - Acts as the agent's reactive surface for incoming DMs.
39
- - Receives outbound notifications.
48
+ - Acts as the agent's reactive surface for your incoming direct messages (owner DMs only — group chats are ignored).
49
+ - Delivers the agent's outbound notifications and replies back to the same Telegram chat.
40
50
 
41
51
  ## When It Runs / How It Is Triggered
42
52
 
43
- Continuously listening to Telegram's long-polling API once paired.
53
+ Before pairing, nothing listens. Once you paste the bot token and complete
54
+ magic-phrase pairing, Aitne long-polls Telegram's Bot API continuously for new
55
+ direct messages.
44
56
 
45
57
  ## Where in the Dashboard
46
58
 
@@ -57,7 +69,14 @@ Continuously listening to Telegram's long-polling API once paired.
57
69
 
58
70
  - Bot replied to in a group instead of a DM: group chats are filtered
59
71
  out by design; the agent only listens to direct messages.
72
+ - No reply at all after DMing the magic phrase: confirm the bot has a username
73
+ set via @BotFather (/setname) — the daemon refuses to build the pairing deep
74
+ link otherwise.
75
+ - Pairing never completes: re-check the token in Connections → Messaging →
76
+ Telegram, then DM the magic phrase from your own account. See
77
+ [Pairing & Magic Phrase](pairing-and-magic-phrase.md).
60
78
 
61
79
  ## Related
62
80
 
63
81
  - [Pairing & Magic Phrase](pairing-and-magic-phrase.md)
82
+ - [Messaging Overview](overview.md)
@@ -3,46 +3,111 @@ schema_version: 1
3
3
  slug: features/messaging/whatsapp
4
4
  title: WhatsApp
5
5
  id: whatsapp
6
+ aliases:
7
+ - whatsapp bot
8
+ - whatsapp adapter
9
+ - whatsapp pairing
10
+ - whatsapp linked device
6
11
  category: features
7
12
  summary: |
8
- Pair WhatsApp via the Cloud API or a bridge service. Once paired, DMs
9
- to the configured number are owner messages.
13
+ Link WhatsApp by scanning a QR code with your phone, the same way the
14
+ WhatsApp desktop app links. No Cloud API, business account, or webhook
15
+ is involved. Once linked, DMs to your own number are owner messages and
16
+ flow exactly like Telegram.
10
17
  section: messaging
11
18
  tags:
12
19
  - messaging
13
- - integration
20
+ - whatsapp
21
+ - integrations
22
+ - pairing
14
23
  status: stable
15
24
  ask_examples:
16
25
  - Can I use WhatsApp with Aitne?
17
- - How do I set up the WhatsApp Cloud API?
26
+ - How do I link WhatsApp by scanning a QR code?
27
+ - Why does WhatsApp say the device is unlinked?
18
28
  locale: en-US
19
29
  created: 2026-04-25
20
- updated: 2026-04-25
30
+ updated: 2026-05-28
31
+ keywords:
32
+ - whatsapp
33
+ - qr code
34
+ - linked devices
35
+ - owner phone
36
+ - e.164
37
+ - messaging adapter
38
+ - baileys
21
39
  related:
22
40
  - features/messaging/overview
41
+ - features/messaging/pairing-and-magic-phrase
42
+ config_keys:
43
+ - whatsappEnabled
44
+ - whatsappOwnerPhone
45
+ - whatsappAuthDir
46
+ ui_anchors:
47
+ - /connections/messaging
23
48
  ---
24
49
 
25
50
  # WhatsApp
26
51
 
27
52
  ## In One Sentence
28
53
 
29
- A WhatsApp Cloud API number can act as the agent's owner surface; DMs
30
- flow exactly like Telegram.
54
+ Link WhatsApp by scanning a QR code with your phone — the same flow as
55
+ WhatsApp's own desktop/web app — and DMs to your number become owner
56
+ messages that flow exactly like Telegram.
31
57
 
32
- ## What It Does
58
+ ## How It Works
33
59
 
34
- - Receives WhatsApp messages routed through the configured number.
35
- - Sends notifications back through the same channel.
60
+ Aitne connects to WhatsApp as a **linked device** (the multi-device feature
61
+ in the WhatsApp mobile app), not through the WhatsApp Cloud API or a paid
62
+ bridge such as Twilio. There is no business account, no bot token, and no
63
+ inbound webhook to expose:
36
64
 
37
- ## Where in the Dashboard
65
+ - You scan a QR code once to link the daemon as a device on your account.
66
+ - Incoming WhatsApp messages arrive over the linked-device connection.
67
+ - The agent replies and sends notifications back through the same channel.
68
+ - It is **owner-only**: only DMs involving your one configured number are
69
+ accepted. Self-DMs you send from another linked device are also accepted,
70
+ so you can talk to the agent from your own number without a second account.
71
+ All other senders are dropped.
38
72
 
39
- - **Connections → Messaging → WhatsApp**.
73
+ ## Setup
74
+
75
+ You configure WhatsApp from the dashboard — there is no `aitne` CLI command
76
+ for it.
77
+
78
+ 1. Go to **Connections → Messaging → WhatsApp**.
79
+ 2. Set the **Owner phone** in E.164 format (e.g. `+818012345678`). This is
80
+ required before you can enable WhatsApp.
81
+ 3. (Optional) Set the **Auth dir** — where the linked-device credentials are
82
+ stored. Defaults to `~/.personal-agent/whatsapp/auth`.
83
+ 4. Click **Enable WhatsApp**, then **Pair device**. A QR code appears.
84
+ 5. On your phone: open **WhatsApp → Settings → Linked Devices → Link a
85
+ device**, and scan the QR code.
86
+
87
+ Once the status shows connected, message your own number and the agent
88
+ responds.
89
+
90
+ ### Configuration keys
91
+
92
+ | Key | Meaning |
93
+ |---|---|
94
+ | `whatsappEnabled` | Master on/off (default `false`). |
95
+ | `whatsappOwnerPhone` | Owner number in E.164 format. Validated; must start with `+` and 8–15 digits. |
96
+ | `whatsappAuthDir` | Directory holding linked-device credentials. |
40
97
 
41
98
  ## When Something Goes Wrong
42
99
 
43
- - WhatsApp's webhook timed out: check that the daemon is reachable
44
- from the WhatsApp side (the simplest way is a tunnel during dev).
100
+ - **QR code expired.** Each QR is short-lived and rotates. Click **Refresh
101
+ QR** in the dashboard to get a new one, then scan it.
102
+ - **WhatsApp says the device is unlinked**, or pairing keeps failing. Click
103
+ **Reset connection** in the dashboard. This wipes the cached pairing data
104
+ in the auth dir so you can scan a fresh QR from scratch.
105
+ - **Session logged out.** If WhatsApp logs the device out (account banned,
106
+ device conflict, or you unlinked it from the phone), the connection stops
107
+ retrying and surfaces an error. Use **Reset connection**, then **Pair
108
+ device** again.
45
109
 
46
110
  ## Related
47
111
 
48
112
  - [Messaging Overview](overview.md)
113
+ - [Pairing and the Magic Phrase](pairing-and-magic-phrase.md)
@@ -18,6 +18,7 @@ tags:
18
18
  - core
19
19
  - operations
20
20
  - audit
21
+ - dashboard
21
22
  status: stable
22
23
  ask_examples:
23
24
  - Where can I see what the agent did today?
@@ -25,7 +26,7 @@ ask_examples:
25
26
  - How do I find why a routine failed?
26
27
  locale: en-US
27
28
  created: 2026-04-25
28
- updated: 2026-04-25
29
+ updated: 2026-05-28
29
30
  keywords:
30
31
  - activity
31
32
  - conversations
@@ -36,6 +37,12 @@ related:
36
37
  - features/operations/notifications
37
38
  - features/operations/cost-tracking
38
39
  - features/operations/backend-routing
40
+ config_keys:
41
+ - executeTimeoutMinutes
42
+ process_keys:
43
+ - routine.morning_routine
44
+ api_endpoints:
45
+ - POST /api/system/purge-history
39
46
  ui_anchors:
40
47
  - /
41
48
  - /activity
@@ -54,7 +61,7 @@ detail lives one click deeper under Conversations.
54
61
 
55
62
  Activity is the unified view of:
56
63
 
57
- - **Routines**: morning, evening, weekly, monthly, hourly fires.
64
+ - **Routines**: morning, evening, weekly, hourly fires.
58
65
  - **Reactive sessions**: DMs, dashboard chat, mentions.
59
66
  - **Background actions**: notifications sent, mail labeled, schedule
60
67
  files written.
@@ -62,15 +69,16 @@ Activity is the unified view of:
62
69
 
63
70
  Each row links to the underlying conversation when one exists.
64
71
 
65
- ## When It Runs / How It Is Triggered
72
+ ## How It Works
66
73
 
67
- There is no trigger — Activity is a read-only projection. It is
68
- written to as a side-effect of every other event in the system
69
- (`agent_actions` / `conversation_sessions` / `messages`).
74
+ Activity has no trigger of its own it is a read-only projection.
75
+ Every other event in the system writes to it as a side effect, landing
76
+ in three SQLite tables: `agent_actions` (what happened), and
77
+ `conversation_sessions` + `messages` (what was said).
70
78
 
71
- ## What It Outputs
79
+ ## What You See
72
80
 
73
- - A timeline filterable by event type, ProcessKey, backend, outcome.
81
+ - A timeline filterable by event type, ProcessKey, backend, and outcome.
74
82
  - Per-row cost, token counts, and turn count.
75
83
  - A direct link to the message transcript for any session.
76
84
 
@@ -81,21 +89,42 @@ written to as a side-effect of every other event in the system
81
89
  - **Conversations (`/conversations/<id>`)** opens a single session's
82
90
  message-by-message transcript.
83
91
 
92
+ To read the morning routine's full reply, open Activity, filter to the
93
+ `routine.morning_routine` row, and click through to its conversation —
94
+ the transcript holds the agent's complete output, not just the summary
95
+ that reached your DM.
96
+
84
97
  ## Configuration
85
98
 
86
99
  There is nothing to configure on the Activity view itself; what shows
87
100
  up is a function of which routines are enabled and which integrations
88
- are connected. Retention is unlimited locally — the SQLite database
89
- keeps everything until you `pa stop && rm ~/.personal-agent/data/personal_agent.db`.
101
+ are connected.
102
+
103
+ Retention is unlimited locally — the SQLite database keeps every row
104
+ forever. To prune history without losing your configuration, use
105
+ `POST /api/system/purge-history` (it clears `agent_actions`,
106
+ `conversation_sessions`, and `messages` but leaves settings and the
107
+ context vault intact). To wipe everything, `aitne uninstall --wipe-data`
108
+ removes the whole `~/.personal-agent` data directory after a `WIPE`
109
+ confirmation.
90
110
 
91
111
  ## When Something Goes Wrong
92
112
 
93
- - A row showing **"timed out"** points at a backend or SDK hang.
94
- `executeTimeoutMinutes` (`/settings/models`) is the wall-clock cap.
95
- - A row showing **"fallback"** means main backend failed; check the
96
- detail for the `BackendQuotaError` / `BackendDecisiveFailure`.
97
- - A row showing **"blocked_absolute"** means the absolute-block layer
98
- refused a tool call. The detail names which tool and why.
113
+ To find why a routine failed, open Activity, filter the outcome to
114
+ **failed**, and open the offending row. Its outcome label tells you the
115
+ failure class; the linked conversation shows the exact error and the
116
+ turn it happened on.
117
+
118
+ Common outcome labels:
119
+
120
+ - **"timed out"** — a backend or SDK hang. `executeTimeoutMinutes`
121
+ (`/settings/models`) is the wall-clock cap.
122
+ - **"fallback"** — the main backend failed and routing moved to the
123
+ fallback; the detail carries the `BackendQuotaError` or
124
+ `BackendDecisiveFailure` that triggered it.
125
+ - **"blocked_absolute"** — the absolute-block layer refused a tool call.
126
+ The detail names which tool and why (logged as
127
+ `agent_actions.action_type='blocked_absolute'`).
99
128
 
100
129
  ## Related
101
130