@aitne-sh/aitne 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +4 -0
  2. package/agent-assets/agent-profiles/background-task.md +8 -1
  3. package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
  4. package/agent-assets/agents/evening-review/agent.md +6 -2
  5. package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
  6. package/agent-assets/agents/morning-routine/agent.md +10 -6
  7. package/agent-assets/agents/source-librarian/agent.md +51 -0
  8. package/agent-assets/docs/concepts/agent-day.md +15 -15
  9. package/agent-assets/docs/concepts/auth-health.md +10 -7
  10. package/agent-assets/docs/concepts/backends-and-tiers.md +34 -23
  11. package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
  12. package/agent-assets/docs/concepts/delegated-mode.md +18 -18
  13. package/agent-assets/docs/concepts/memory-model.md +25 -24
  14. package/agent-assets/docs/concepts/observations.md +27 -19
  15. package/agent-assets/docs/concepts/process-keys.md +25 -26
  16. package/agent-assets/docs/concepts/routines.md +18 -17
  17. package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
  18. package/agent-assets/docs/concepts/safety-model.md +16 -15
  19. package/agent-assets/docs/concepts/skills.md +7 -4
  20. package/agent-assets/docs/features/integrations/browser-history.md +52 -47
  21. package/agent-assets/docs/features/integrations/calendar.md +7 -7
  22. package/agent-assets/docs/features/integrations/git.md +15 -13
  23. package/agent-assets/docs/features/integrations/github.md +12 -10
  24. package/agent-assets/docs/features/integrations/mail.md +47 -45
  25. package/agent-assets/docs/features/integrations/notion.md +15 -11
  26. package/agent-assets/docs/features/integrations/obsidian.md +27 -23
  27. package/agent-assets/docs/features/lifestyle/git.md +7 -8
  28. package/agent-assets/docs/features/lifestyle/reading.md +11 -8
  29. package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
  30. package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
  31. package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
  32. package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
  33. package/agent-assets/docs/features/memory-files/projects.md +13 -14
  34. package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
  35. package/agent-assets/docs/features/memory-files/schedule.md +10 -10
  36. package/agent-assets/docs/features/memory-files/today.md +18 -18
  37. package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
  38. package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
  39. package/agent-assets/docs/features/messaging/dashboard-chat.md +8 -7
  40. package/agent-assets/docs/features/messaging/discord.md +7 -5
  41. package/agent-assets/docs/features/messaging/overview.md +14 -14
  42. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
  43. package/agent-assets/docs/features/messaging/slack.md +9 -8
  44. package/agent-assets/docs/features/messaging/telegram.md +7 -7
  45. package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
  46. package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
  47. package/agent-assets/docs/features/operations/approvals.md +13 -12
  48. package/agent-assets/docs/features/operations/backend-routing.md +38 -37
  49. package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
  50. package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
  51. package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
  52. package/agent-assets/docs/features/operations/notifications.md +15 -15
  53. package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
  54. package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
  55. package/agent-assets/docs/features/routines/activity-scan.md +14 -11
  56. package/agent-assets/docs/features/routines/custom-routines.md +9 -7
  57. package/agent-assets/docs/features/routines/evening-review.md +6 -7
  58. package/agent-assets/docs/features/routines/morning-routine.md +23 -22
  59. package/agent-assets/docs/features/routines/weekly-review.md +57 -51
  60. package/agent-assets/docs/features/wiki/commands.md +28 -22
  61. package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
  62. package/agent-assets/docs/features/wiki/dashboard.md +22 -24
  63. package/agent-assets/docs/features/wiki/overview.md +17 -25
  64. package/agent-assets/docs/features/wiki/search.md +15 -17
  65. package/agent-assets/docs/features/wiki/workspaces.md +55 -56
  66. package/agent-assets/docs/getting-started/01-what-is-this.md +4 -5
  67. package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
  68. package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
  69. package/agent-assets/docs/getting-started/04-first-day.md +4 -5
  70. package/agent-assets/docs/glossary.md +21 -19
  71. package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
  72. package/agent-assets/docs/guides/backup-and-restore.md +19 -16
  73. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -62
  74. package/agent-assets/docs/guides/build-your-wiki.md +11 -12
  75. package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
  76. package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
  77. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
  78. package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
  79. package/agent-assets/docs/guides/install-and-run.md +9 -10
  80. package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
  81. package/agent-assets/docs/guides/migrate-machines.md +16 -14
  82. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +12 -13
  83. package/agent-assets/docs/guides/pause-the-agent.md +25 -25
  84. package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
  85. package/agent-assets/docs/guides/setup-wizard.md +10 -12
  86. package/agent-assets/docs/guides/switch-default-backend.md +9 -9
  87. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
  88. package/agent-assets/docs/pages/activity.md +76 -0
  89. package/agent-assets/docs/pages/agents.md +78 -0
  90. package/agent-assets/docs/pages/analytics.md +70 -0
  91. package/agent-assets/docs/pages/browser.md +73 -0
  92. package/agent-assets/docs/pages/chat.md +67 -0
  93. package/agent-assets/docs/pages/connections.md +78 -0
  94. package/agent-assets/docs/pages/git.md +73 -0
  95. package/agent-assets/docs/pages/knowledge.md +75 -0
  96. package/agent-assets/docs/pages/overview.md +90 -0
  97. package/agent-assets/docs/pages/reading.md +65 -0
  98. package/agent-assets/docs/pages/settings.md +77 -0
  99. package/agent-assets/docs/pages/tasks.md +74 -0
  100. package/agent-assets/docs/pages/wiki.md +73 -0
  101. package/agent-assets/docs/reference/api.md +18 -17
  102. package/agent-assets/docs/reference/cli-commands.md +13 -10
  103. package/agent-assets/docs/reference/config.md +40 -35
  104. package/agent-assets/docs/reference/disallowed-tools.md +18 -17
  105. package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
  106. package/agent-assets/docs/reference/knowledge-layout.md +10 -10
  107. package/agent-assets/docs/reference/process-keys.md +20 -22
  108. package/agent-assets/docs/reference/skills.md +18 -16
  109. package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
  110. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
  111. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
  112. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
  113. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
  114. package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
  115. package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
  116. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
  117. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
  118. package/agent-assets/playbooks/markdown-note.md +43 -0
  119. package/agent-assets/playbooks/monitoring.md +29 -0
  120. package/agent-assets/playbooks/research.md +47 -0
  121. package/agent-assets/skills/agent-create/SKILL.md +71 -32
  122. package/agent-assets/skills/agent-create/references/prompt-frame-extended.md +132 -0
  123. package/agent-assets/skills/agent-create/references/prompt-frame.md +125 -0
  124. package/agent-assets/skills/background-task/SKILL.md +13 -8
  125. package/agent-assets/skills/background-task-reply/SKILL.md +2 -2
  126. package/agent-assets/skills/board/SKILL.md +92 -0
  127. package/agent-assets/skills/browser-history/SKILL.md +3 -3
  128. package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
  129. package/agent-assets/skills/browser-task/SKILL.md +4 -2
  130. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
  131. package/agent-assets/skills/schedule/SKILL.md +21 -18
  132. package/agent-assets/skills/schedule/references/batch.md +1 -1
  133. package/agent-assets/skills/schedule/references/model-selection.md +1 -1
  134. package/agent-assets/skills/schedule/references/prompt-frame.md +125 -0
  135. package/agent-assets/skills/sources/SKILL.md +68 -0
  136. package/agent-assets/skills/sources/curation.json +21 -0
  137. package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
  138. package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
  139. package/agent-assets/skills/task/SKILL.md +82 -0
  140. package/agent-assets/task-flows/background_task.md +29 -3
  141. package/agent-assets/task-flows/message.received.dm.md +1 -1
  142. package/agent-assets/task-flows/routine.activity_scan.md +17 -2
  143. package/agent-assets/task-flows/routine.evening_review.md +72 -11
  144. package/agent-assets/task-flows/routine.fetch_window.md +21 -0
  145. package/agent-assets/task-flows/routine.monthly_review.md +3 -1
  146. package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
  147. package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
  148. package/agent-assets/task-flows/scheduled.dm.md +29 -16
  149. package/agent-assets/templates/_manifest.json +1 -0
  150. package/agent-assets/templates/knowledge/sources/_index.md +19 -0
  151. package/package.json +4 -4
@@ -15,10 +15,8 @@ summary: |
15
15
  the agent reads and rewrites about you.
16
16
  section: memory
17
17
  tags:
18
- - core
19
18
  - memory
20
19
  - knowledge
21
- - context
22
20
  - safety
23
21
  status: stable
24
22
  ask_examples:
@@ -29,7 +27,7 @@ ask_examples:
29
27
  - How does the daemon prevent the agent from writing to disk directly?
30
28
  locale: en-US
31
29
  created: 2026-04-25
32
- updated: 2026-06-11
30
+ updated: 2026-07-01
33
31
  keywords:
34
32
  - context
35
33
  - markdown
@@ -78,36 +76,39 @@ api_endpoints:
78
76
 
79
77
  ## TL;DR
80
78
 
81
- Aitne treats Markdown files in `~/.personal-agent/context/`
79
+ Aitne uses Markdown files in `~/.personal-agent/context/`
82
80
  as its long-term memory and SQLite
83
- (`~/.personal-agent/data/personal_agent.db`) as session-scoped state.
84
- Anything you want the agent to remember between runs lives in an MD
85
- file you can read, diff, and edit by hand. The vault is partitioned
86
- into six authority classes `identity/`, `state/`, `plans/`, `journal/`,
87
- `knowledge/`, and `policies/` each carrying its own authority and
88
- lifecycle contract. See [Knowledge Layout](../reference/knowledge-layout.md)
89
- for the canonical map.
81
+ (`~/.personal-agent/data/personal_agent.db`) for short-lived state that
82
+ only matters within a single run. Anything you want the agent to
83
+ remember between runs lives in an MD file you can open, diff, and edit
84
+ by hand. The vault (the folder that holds these files) is split into six
85
+ top-level folders`identity/`, `state/`, `plans/`, `journal/`,
86
+ `knowledge/`, and `policies/` and each one has its own rules about who
87
+ may change it and how long its contents last. See
88
+ [Knowledge Layout](../reference/knowledge-layout.md) for the full map.
90
89
 
91
90
  ## Why This Concept Exists
92
91
 
93
- A long-running agent that stores meaning inside an opaque database
94
- gives you no recourse when something goes wrong. Aitne's design
95
- is the opposite: every fact the agent recalls about you, your projects,
96
- your day, or its own past behavior sits in a `.md` file you can open in
97
- any editor. Auditing, backups, and recovery are all "use git or rsync".
92
+ If a long-running agent hides everything it knows inside an opaque
93
+ database, you have no way to check or fix it when something goes wrong.
94
+ Aitne does the opposite: every fact the agent recalls about you, your
95
+ projects, your day, or its own past behavior sits in a `.md` file you
96
+ can open in any editor. Auditing, backing up, and restoring all come
97
+ down to ordinary tools — git or rsync.
98
98
 
99
99
  SQLite is reserved for the things you do not want the agent rewriting
100
- on every turn — session logs, action audit trails, observations, FTS
101
- indexes, and configuration.
100
+ on every turn — session logs, action audit trails, observations,
101
+ full-text search (FTS) indexes, and configuration.
102
102
 
103
103
  ## Definitions
104
104
 
105
105
  - **Context file**: any `.md` file under `~/.personal-agent/context/`.
106
106
  - **Authoritative memory**: the union of context files; SQLite never
107
107
  stores facts the agent treats as canonical truth about the operator.
108
- - **`AgentWriteTracker`**: the daemon component that distinguishes an
109
- agent-originated context-file write from a human edit so the
110
- Obsidian/Git observers do not loop on the agent's own output.
108
+ - **`AgentWriteTracker`**: the daemon component that tells an
109
+ agent-made context-file write apart from a human edit, so the
110
+ Obsidian/Git observers (the watchers that notice file changes) do not
111
+ loop on the agent's own output.
111
112
  - **Context API**: the daemon's `/api/context/*` endpoint, the **only**
112
113
  legal write path. The agent does not have direct `Edit` / `Write`
113
114
  permissions on the filesystem; it must go through the daemon.
@@ -115,9 +116,9 @@ indexes, and configuration.
115
116
  ## How the Agent Writes
116
117
 
117
118
  The agent has no `Edit` or `Write` tool. To change a context file it
118
- calls the daemon over HTTP, and every write funnels through one
119
- endpoint family so the daemon can validate, hold locks, and snapshot a
120
- backup before touching disk. Paths are class-prefixed
119
+ calls the daemon over HTTP, and every write goes through one small set
120
+ of endpoints so the daemon can validate the request, hold locks, and
121
+ save a backup snapshot before it touches disk. Paths are class-prefixed
121
122
  (`/api/context/<class>/<path>`):
122
123
 
123
124
  ```bash
@@ -16,7 +16,6 @@ summary: |
16
16
  notification. This pivot was the Phase 9 polling change.
17
17
  section: observations
18
18
  tags:
19
- - core
20
19
  - observations
21
20
  - polling
22
21
  - integrations
@@ -29,7 +28,7 @@ ask_examples:
29
28
  - Where does the routine pre-pass write observations?
30
29
  locale: en-US
31
30
  created: 2026-04-25
32
- updated: 2026-06-07
31
+ updated: 2026-07-01
33
32
  keywords:
34
33
  - observation
35
34
  - observations
@@ -50,6 +49,10 @@ related:
50
49
  - concepts/routines
51
50
  - features/integrations/git
52
51
  - features/integrations/obsidian
52
+ - features/integrations/calendar
53
+ - features/integrations/github
54
+ - features/integrations/notion
55
+ - features/integrations/browser-history
53
56
  ui_anchors:
54
57
  - /activity
55
58
  process_keys:
@@ -72,29 +75,30 @@ context_files:
72
75
 
73
76
  ## TL;DR
74
77
 
75
- Polling integrations (Obsidian, Git, Notion, Calendar) **do not emit
76
- events** when they detect changes. They write observation rows to
77
- SQLite. A single `routine.activity_scan` consumes the queue and decides
78
- what is worth surfacing.
78
+ Polling integrations (Obsidian, Git, Notion, Calendar) watch for
79
+ changes on a schedule. When they find one, they **do not emit an
80
+ event** or message you they write an *observation* row into SQLite.
81
+ A single `routine.activity_scan` reads that queue and decides what is
82
+ worth surfacing.
79
83
 
80
- Since 2026-05, observations have a **second writer**: every main
81
- routine (`routine.morning_routine`, `routine.today_refresh`,
84
+ Since 2026-05, observations have a **second writer**. Before each main
85
+ routine runs (`routine.morning_routine`, `routine.today_refresh`,
82
86
  `routine.activity_scan`, `routine.evening_review`,
83
- `routine.weekly_review`) is preceded by a lite-tier
84
- `routine.fetch_window` pre-pass that fetches mail / calendar / Notion
85
- windows and POSTs them to `/api/observations/batch`.
86
- (`routine.monthly_review` has no pre-pass window.) The main routine
87
- then reads them via the same `pending=true` queue that the polling
88
- path feeds. Observation rows look identical regardless of which writer
89
- produced them — the distinction is invisible to downstream consumers.
87
+ `routine.weekly_review`), a lite-tier `routine.fetch_window` pre-pass
88
+ fetches mail / calendar / Notion windows and POSTs them to
89
+ `/api/observations/batch`. (`routine.monthly_review` has no pre-pass
90
+ window.) The main routine then reads them through the same
91
+ `pending=true` queue that the polling path feeds. The rows look
92
+ identical no matter which writer produced them, so downstream consumers
93
+ cannot tell them apart.
90
94
 
91
95
  ## Why This Concept Exists
92
96
 
93
97
  Per-change notifications turned every routine commit, every saved
94
- note, every tiny calendar tweak into a paging event. The Phase 9
95
- pivot moved the agent away from that: changes accumulate, and once an
96
- hour the agent looks at the bag and decides whether the pattern adds
97
- up to something the operator should hear about.
98
+ note, every tiny calendar tweak into an interruption. The Phase 9
99
+ pivot moved the agent away from that: changes pile up quietly, and
100
+ once an hour the agent reviews the whole batch and decides whether the
101
+ pattern adds up to something you should hear about.
98
102
 
99
103
  ## Definitions
100
104
 
@@ -149,4 +153,8 @@ Both write rows of the same shape; the consumer reads the merged queue.
149
153
  - [Process Keys](./process-keys.md)
150
154
  - [Routines](./routines.md)
151
155
  - [Git](../features/integrations/git.md)
156
+ - [GitHub](../features/integrations/github.md)
152
157
  - [Obsidian](../features/integrations/obsidian.md)
158
+ - [Notion](../features/integrations/notion.md)
159
+ - [Calendar](../features/integrations/calendar.md)
160
+ - [Browser History](../features/integrations/browser-history.md)
@@ -14,10 +14,8 @@ summary: |
14
14
  to a backend + tier binding; the manifest map resolves it to skills.
15
15
  section: process-keys
16
16
  tags:
17
- - core
18
- - dispatch
19
- - backends
20
17
  - routing
18
+ - backends
21
19
  status: stable
22
20
  ask_examples:
23
21
  - What is a ProcessKey?
@@ -26,7 +24,7 @@ ask_examples:
26
24
  - What is the difference between configurable and fixed ProcessKeys?
27
25
  locale: en-US
28
26
  created: 2026-04-25
29
- updated: 2026-05-28
27
+ updated: 2026-07-01
30
28
  keywords:
31
29
  - process key
32
30
  - ProcessKey
@@ -70,36 +68,37 @@ ui_anchors:
70
68
 
71
69
  ## TL;DR
72
70
 
73
- A ProcessKey is a string like `routine.morning_routine` or `message.dm`
74
- that identifies one class of agent work. Every routine, every reactive
75
- event, every dashboard action is tagged with one. The router uses it
76
- to pick the backend; the skills compiler uses it to pick the tools.
71
+ A ProcessKey is a short string like `routine.morning_routine` or
72
+ `message.dm` that names one class of agent work. Every routine, every
73
+ event the agent reacts to, and every dashboard action carries one. The
74
+ router uses it to pick the backend; the skills compiler uses it to pick
75
+ the tools.
77
76
 
78
77
  ## Why This Concept Exists
79
78
 
80
- Without a stable identifier per task class, "the morning routine" and
81
- "a DM" would have to be hand-distinguished everywhere they were
82
- treated differently — pricing, retention, tool scope, auditability.
83
- The ProcessKey is the single coupling that ties dispatch to all of
84
- those subsystems.
79
+ Without a stable name for each class of task, "the morning routine" and
80
+ "a DM" would have to be told apart by hand everywhere they behave
81
+ differently — pricing, retention, tool scope, and auditing. The
82
+ ProcessKey is the one label that connects dispatch to all of those
83
+ subsystems.
85
84
 
86
85
  ## Definitions
87
86
 
88
- - **CONFIGURABLE_PROCESS_KEYS**: the set the operator can override per
87
+ - **CONFIGURABLE_PROCESS_KEYS**: the keys an operator can override per
89
88
  backend on `/settings/models`. The rest (`delegated_task`, `setup`,
90
- `schedule.approaching`, …) use fixed defaults and are not surfaced
89
+ `schedule.approaching`, …) use fixed defaults and do not appear
91
90
  there.
92
- - **REACTIVE_PROCESS_KEYS**: those tied to in-the-loop events
93
- (`message.dm`, `message.mention`, `dashboard.chat`,
94
- `dashboard.docs_qa`, `setup`, `knowledge.import`). Everything else is
95
- autonomous.
96
- - **DEFAULT_PROCESS_TIERS**: the per-key default model size — `lite`
97
- (Haiku-class), `medium` (Sonnet-class), or `high` (Opus-class).
98
- Unknown keys default to `medium`.
99
- - **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked and
100
- cannot be overridden by an operator pin. Today this is just
101
- `dashboard.docs_qa`, locked to `medium`.
102
- - **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to the skill manifest
91
+ - **REACTIVE_PROCESS_KEYS**: keys tied to events that happen while you
92
+ interact with the agent (`message.dm`, `message.mention`,
93
+ `dashboard.chat`, `dashboard.docs_qa`, `setup`, `knowledge.import`).
94
+ Everything else runs on its own (autonomous).
95
+ - **DEFAULT_PROCESS_TIERS**: the default model size for each key
96
+ `lite` (Haiku-class), `medium` (Sonnet-class), or `high`
97
+ (Opus-class). Unknown keys default to `medium`.
98
+ - **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked, so an
99
+ operator pin cannot change it. Today this is just `dashboard.docs_qa`,
100
+ locked to `medium`.
101
+ - **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to its skill manifest
103
102
  key, so the skills compiler can pick the right tool set.
104
103
 
105
104
  ## Concrete Examples
@@ -17,7 +17,6 @@ summary: |
17
17
  retro, plus any recurring user Agents you define.
18
18
  section: routines
19
19
  tags:
20
- - core
21
20
  - routines
22
21
  - autonomous
23
22
  - scheduler
@@ -30,7 +29,7 @@ ask_examples:
30
29
  - Which routine uses the high tier by default?
31
30
  locale: en-US
32
31
  created: 2026-04-25
33
- updated: 2026-06-07
32
+ updated: 2026-07-01
34
33
  keywords:
35
34
  - routine
36
35
  - routines
@@ -78,24 +77,26 @@ config_keys:
78
77
 
79
78
  ## TL;DR
80
79
 
81
- A routine is a unit of agent work that runs on a schedule, not in
82
- response to a message. The morning routine fires once per agent day at
83
- `dayBoundaryHour`; the evening review (18:00 daily), weekly review
84
- (Friday 19:00), and optional monthly review fire on fixed schedules in
85
- code; the activity scan coalesces accumulated observations on a
86
- configurable cadence.
80
+ A routine is a piece of agent work that runs on a schedule instead of
81
+ in reply to a message. The morning routine fires once per agent day
82
+ the 24-hour window that starts at `dayBoundaryHour` (04:00 by default).
83
+ The evening review (18:00 daily), weekly review (Friday 19:00), and
84
+ optional monthly review run on fixed schedules set in code. The
85
+ activity scan gathers up the observations that have piled up, on a
86
+ cadence you can configure.
87
87
 
88
88
  ## Why This Concept Exists
89
89
 
90
- The premise of Aitne is that the operator does not want to
91
- "prompt" their assistant every time. Routines are how the agent shows
92
- up without being asked: it builds today, it logs to the journal, it
93
- files a retro for the week. They are the proactive surface.
90
+ The whole idea of Aitne is that you should not have to "prompt" your
91
+ assistant every time. Routines are how the agent shows up without being
92
+ asked: it builds the day's plan, it writes to the journal, and it files
93
+ a weekly retrospective. This is the proactive side of the agent.
94
94
 
95
95
  Each routine is a single ProcessKey — `routine.morning_routine`,
96
- `routine.activity_scan`, `routine.weekly_review`, etc. The dispatcher
97
- treats them as just another event class; the only difference from a
98
- DM is who fired the event.
96
+ `routine.activity_scan`, `routine.weekly_review`, and so on. The
97
+ dispatcher treats a routine as just another kind of event; the only
98
+ thing that sets it apart from a direct message (DM) is what triggered
99
+ it — a schedule rather than you.
99
100
 
100
101
  ## Definitions
101
102
 
@@ -128,8 +129,8 @@ DM is who fired the event.
128
129
  - **Pre-pass fetcher**: each main routine that needs fresh mail /
129
130
  calendar / Notion data is preceded by a lite-tier
130
131
  `routine.fetch_window` session that fetches the relevant window and
131
- POSTs observations. The main routine then consumes the resulting
132
- `<fetch_report>` block plus pending observations instead of hitting
132
+ POSTs observations. The main routine then reads the resulting
133
+ `<fetch_report>` block plus pending observations instead of calling
133
134
  upstream APIs itself — a cost-savings split introduced in 2026-05.
134
135
 
135
136
  ## Concrete Examples
@@ -17,7 +17,6 @@ summary: |
17
17
  which actions are categorically refused.
18
18
  section: safety
19
19
  tags:
20
- - core
21
20
  - safety
22
21
  - operations
23
22
  - backends
@@ -28,7 +27,7 @@ ask_examples:
28
27
  - How do I see what tools the agent is allowed to use?
29
28
  locale: en-US
30
29
  created: 2026-04-25
31
- updated: 2026-06-07
30
+ updated: 2026-07-01
32
31
  keywords:
33
32
  - safety
34
33
  - safe mode
@@ -63,7 +62,9 @@ Three layers gate what the agent can do:
63
62
 
64
63
  1. **Skill `allowed-tools`** — the visible toolset for that session.
65
64
  2. **Execution mode** — Safe (strict permission checks, sandboxes)
66
- or Allow (SDK bypass, sandbox off). Set per-backend.
65
+ or Allow (the SDK's permission prompts are bypassed, sandbox off).
66
+ Set per backend (the underlying agent engine — Claude, Codex,
67
+ Gemini, or OpenCode).
67
68
  3. **Always-disallowed** — a hard floor. Recursive deletes, `sudo`,
68
69
  secret-file reads / writes are denied unconditionally regardless
69
70
  of mode, and neither a skill nor Allow mode can widen past it.
@@ -87,29 +88,31 @@ disallowed-tools floor.
87
88
  permission block.
88
89
  - **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
89
90
  TOML. The absolute-block layer still holds in Allow mode on Claude,
90
- Gemini, and OpenCode Codex is the documented exception: its Allow
91
- mode is a binary sandbox-off switch with no hook layer the daemon can
91
+ Gemini, and OpenCode. Codex is the documented exception. Its Allow
92
+ mode is a binary sandbox-off switch, with no hook layer the daemon can
92
93
  attach the block list to, so the dashboard warns you before you flip
93
- it. Set independently per backend, so one backend can run Allow while
94
- the others stay Safe.
94
+ it. You set the mode separately for each backend, so one backend can
95
+ run Allow while the others stay Safe.
95
96
  - **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
96
97
  in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
97
98
  by config, or by allow-mode.
98
99
  - **Risk tier**: every daemon-API operation carries one of three tiers —
99
100
  `autonomous`, `read_sensitive`, or `approve`. *Autonomous* runs without a
100
- prompt. *Read-sensitive* reads (email, calendar, notes, context files) are
101
- the same blast radius as autonomous but are gated by a read token when
102
- `enforceReadToken` is on. *Approve* is blocked until you confirm with a
103
- bearer token (the dashboard does this when you click Approve). There is no
104
- separate "notify" tier — that behaviour now lives in the skill prompts: for
105
- potentially destructive actions the agent DMs you first, then proceeds. See
106
- [Safety model](safety-model.md) for the full taxonomy.
101
+ prompt. *Read-sensitive* reads (email, calendar, notes, context files) can
102
+ do no more harm than autonomous ones, but they are gated by a read token
103
+ when `enforceReadToken` is on. *Approve* actions are blocked until you
104
+ confirm with a bearer token (the dashboard does this when you click
105
+ Approve). There is no separate "notify" tier — that behaviour now lives in
106
+ the skill prompts: before a potentially destructive action the agent DMs
107
+ you first, then proceeds. See [Safety model](safety-model.md) for the full
108
+ taxonomy.
107
109
 
108
110
  ## Concrete Examples
109
111
 
110
- The daemon API is the agent's only write path, so most of its own writes are
111
- `autonomous` (the memory chokepoint validates and snapshots them). The
112
- absolute-block layer and Approve tier are where the agent is actually stopped.
112
+ The daemon API is the agent's only write path, so most of the writes it makes
113
+ are `autonomous` a single choke point validates and snapshots each one. The
114
+ places the agent is actually stopped are the absolute-block layer and the
115
+ Approve tier.
113
116
 
114
117
  | Action | What gates it |
115
118
  |---|---|
@@ -22,7 +22,6 @@ summary: |
22
22
  unchanged.)
23
23
  section: safety
24
24
  tags:
25
- - core
26
25
  - safety
27
26
  - integrations
28
27
  - audit
@@ -34,7 +33,7 @@ ask_examples:
34
33
  - Where do I see what the agent has been doing?
35
34
  locale: en-US
36
35
  created: 2026-04-26
37
- updated: 2026-06-07
36
+ updated: 2026-07-01
38
37
  keywords:
39
38
  - deniedTools
40
39
  - safety floor
@@ -73,9 +72,10 @@ The risk classifier has two write tiers, not three:
73
72
  every connector tool call (send mail, archive, label, create event,
74
73
  delete event, …) and for normal context writes.
75
74
  - **Approve** — agent must present a Bearer token issued through the
76
- dashboard. Reserved for posture-changing daemon configuration:
77
- flipping integration modes, swapping the main backend, enabling/
78
- disabling backends, wiping config.
75
+ dashboard. Reserved for posture-changing daemon configuration
76
+ (settings that change the safety setup itself): flipping integration
77
+ modes, swapping the main backend, enabling/disabling backends,
78
+ wiping config.
79
79
  - (`ReadSensitive` is the third tier, but it gates *reads* of personal
80
80
  data — orthogonal to write notifications. It is unchanged.)
81
81
 
@@ -95,22 +95,23 @@ actions are:
95
95
  ## Why This Concept Exists
96
96
 
97
97
  The previous Notify tier (3-tier model: Autonomous / Notify / Approve)
98
- gave a *false sense* of safety: the action completed regardless, the
99
- operator could miss the DM, and the middleware was structurally unable
100
- to intercept native MCP calls (the agent could reach Gmail through the
101
- backend's connector without ever touching the daemon). Curating a
102
- per-tool Notify policy across direct + cross-backend + same-backend +
103
- operator-installed MCPs was an ever-growing maintenance trap.
98
+ gave a *false sense* of safety. The action completed either way, the
99
+ operator could easily miss the DM, and the middleware simply could not
100
+ intercept native MCP calls the agent could reach Gmail through the
101
+ backend's own connector without ever passing through the daemon. On top
102
+ of that, hand-curating a per-tool Notify policy across every path
103
+ (direct, cross-backend, same-backend, and operator-installed MCPs) was
104
+ an ever-growing maintenance trap.
104
105
 
105
106
  The new model is honest: dangerous actions either (a) are denied at the
106
107
  chokepoint by the operator's `deniedTools`, (b) require explicit
107
108
  Approve (sparse, intentional, daemon-config only), or (c) happen
108
109
  autonomously and are auditable on demand.
109
110
 
110
- The *value proposition* — the agent manages the operator's life — is
111
- preserved. The operator should not have to manage the agent's calendar
112
- of "report to me" events. Information about what the agent did is
113
- **available on demand**, not pushed.
111
+ The core promise — the agent manages the operator's life — stays
112
+ intact. The operator should not have to manage the agent's own calendar
113
+ of "report back to me" events. Details of what the agent did are
114
+ **available on demand**, not pushed at you.
114
115
 
115
116
  ## Definitions
116
117
 
@@ -14,7 +14,6 @@ summary: |
14
14
  to load it, and pins the exact tools the session may use.
15
15
  section: skills
16
16
  tags:
17
- - core
18
17
  - skills
19
18
  - safety
20
19
  - knowledge
@@ -28,7 +27,7 @@ ask_examples:
28
27
  - Where do skill overlays live?
29
28
  locale: en-US
30
29
  created: 2026-04-25
31
- updated: 2026-06-07
30
+ updated: 2026-07-01
32
31
  keywords:
33
32
  - SKILL.md
34
33
  - allowed-tools
@@ -42,6 +41,7 @@ keywords:
42
41
  related:
43
42
  - concepts/safety-and-execution
44
43
  - concepts/process-keys
44
+ - concepts/delegated-mode
45
45
  - reference/skills
46
46
  ui_anchors:
47
47
  - /knowledge
@@ -66,14 +66,15 @@ A skill is a Markdown file the daemon copies into the agent's working
66
66
  directory before each session. Its frontmatter declares the skill's
67
67
  `name`, `description`, and the `allowed-tools` the session may use.
68
68
  The agent reads `SKILL.md` at the start of every session that loads
69
- that skill and follows it as a contract.
69
+ that skill and treats it as a contract — the rules it must follow
70
+ for that task.
70
71
 
71
72
  ## Why This Concept Exists
72
73
 
73
74
  The agent runs against a real machine. Without scoped permissions, a
74
75
  "please summarize my mail" turn could in principle invoke `Bash(rm)`,
75
76
  post to your social accounts, or rewrite arbitrary files. Skills fix
76
- that by making the available toolset task-shaped: the morning routine
77
+ that by fitting the available tools to the task: the morning routine
77
78
  loads the context/today/observations/schedule skills; a docs question
78
79
  loads only `docs-search`. Tools outside the allow-list aren't even
79
80
  visible to the model.
@@ -154,5 +155,7 @@ surfaced at **Settings → Self-learning** (`/settings/self-learning`).
154
155
  `allowed-tools` is too permissive.
155
156
  - [Process Keys](process-keys.md) — the dispatch identity that picks
156
157
  which skill manifest to load.
158
+ - [Delegated Mode](delegated-mode.md) — the run mode whose sessions
159
+ load these skills.
157
160
  - [Skills (Reference)](../reference/skills.md) — index of every
158
161
  built-in skill.