@aitne-sh/aitne 0.1.9 → 0.1.11
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.
- package/README.md +41 -11
- package/agent-assets/agent-profiles/background-task.md +53 -0
- package/agent-assets/agent-profiles/conversational.md +1 -0
- package/agent-assets/agent-profiles/routine-fetch-window.md +14 -75
- package/agent-assets/agent-profiles/routine.md +1 -1
- package/agent-assets/agents/{hourly-check → activity-scan}/agent.md +22 -17
- package/agent-assets/agents/monthly-review/agent.md +6 -5
- package/agent-assets/docs/concepts/agent-day.md +6 -7
- package/agent-assets/docs/concepts/auth-health.md +23 -20
- package/agent-assets/docs/concepts/backends-and-tiers.md +13 -9
- package/agent-assets/docs/concepts/costs-and-quotas.md +14 -12
- package/agent-assets/docs/concepts/delegated-mode.md +18 -17
- package/agent-assets/docs/concepts/memory-model.md +16 -9
- package/agent-assets/docs/concepts/observations.md +24 -20
- package/agent-assets/docs/concepts/process-keys.md +10 -9
- package/agent-assets/docs/concepts/routines.md +34 -31
- package/agent-assets/docs/concepts/safety-and-execution.md +11 -7
- package/agent-assets/docs/concepts/safety-model.md +39 -25
- package/agent-assets/docs/concepts/skills.md +12 -10
- package/agent-assets/docs/features/integrations/browser-history.md +23 -18
- package/agent-assets/docs/features/integrations/calendar.md +28 -17
- package/agent-assets/docs/features/integrations/git.md +13 -11
- package/agent-assets/docs/features/integrations/github.md +22 -14
- package/agent-assets/docs/features/integrations/mail.md +25 -22
- package/agent-assets/docs/features/integrations/notion.md +35 -11
- package/agent-assets/docs/features/integrations/obsidian.md +8 -8
- package/agent-assets/docs/features/lifestyle/git.md +27 -23
- package/agent-assets/docs/features/lifestyle/reading.md +20 -11
- package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
- package/agent-assets/docs/features/memory-files/agent-journal.md +53 -26
- package/agent-assets/docs/features/memory-files/agent-lessons.md +178 -0
- package/agent-assets/docs/features/memory-files/projects.md +11 -8
- package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
- package/agent-assets/docs/features/memory-files/schedule.md +6 -3
- package/agent-assets/docs/features/memory-files/today.md +10 -7
- package/agent-assets/docs/features/memory-files/user-profile.md +14 -9
- package/agent-assets/docs/features/messaging/bang-commands.md +21 -6
- package/agent-assets/docs/features/messaging/overview.md +17 -14
- package/agent-assets/docs/features/messaging/telegram.md +10 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +6 -5
- package/agent-assets/docs/features/operations/approvals.md +6 -5
- package/agent-assets/docs/features/operations/browser-tasks.md +184 -0
- package/agent-assets/docs/features/operations/cost-tracking.md +11 -1
- package/agent-assets/docs/features/operations/managed-chromium.md +4 -2
- package/agent-assets/docs/features/operations/notifications.md +11 -1
- package/agent-assets/docs/features/operations/quiet-hours.md +41 -11
- package/agent-assets/docs/features/operations/schedule-approaching.md +2 -2
- package/agent-assets/docs/features/routines/activity-scan.md +220 -0
- package/agent-assets/docs/features/routines/custom-routines.md +82 -134
- package/agent-assets/docs/features/routines/evening-review.md +23 -13
- package/agent-assets/docs/features/routines/morning-routine.md +7 -5
- package/agent-assets/docs/features/routines/weekly-review.md +24 -3
- package/agent-assets/docs/features/wiki/commands.md +4 -4
- package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
- package/agent-assets/docs/features/wiki/dashboard.md +7 -6
- package/agent-assets/docs/features/wiki/overview.md +3 -3
- package/agent-assets/docs/features/wiki/search.md +5 -5
- package/agent-assets/docs/features/wiki/workspaces.md +2 -2
- package/agent-assets/docs/getting-started/01-what-is-this.md +3 -3
- package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
- package/agent-assets/docs/getting-started/04-first-day.md +27 -30
- package/agent-assets/docs/glossary.md +8 -8
- package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
- package/agent-assets/docs/guides/install-and-run.md +2 -2
- package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
- package/agent-assets/docs/guides/pause-the-agent.md +27 -21
- package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
- package/agent-assets/docs/guides/setup-wizard.md +12 -6
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
- package/agent-assets/docs/reference/api.md +26 -5
- package/agent-assets/docs/reference/cli-commands.md +3 -3
- package/agent-assets/docs/reference/config.md +51 -24
- package/agent-assets/docs/reference/disallowed-tools.md +6 -4
- package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
- package/agent-assets/docs/reference/knowledge-layout.md +25 -12
- package/agent-assets/docs/reference/process-keys.md +9 -9
- package/agent-assets/docs/reference/skills.md +10 -6
- package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +32 -16
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +26 -24
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
- package/agent-assets/skills/agent-actions/SKILL.md +23 -39
- package/agent-assets/skills/agent-create/SKILL.md +26 -6
- package/agent-assets/skills/attach/SKILL.md +8 -27
- package/agent-assets/skills/background-task/SKILL.md +184 -0
- package/agent-assets/skills/background-task-reply/SKILL.md +100 -0
- package/agent-assets/skills/browser-history/SKILL.md +60 -29
- package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
- package/agent-assets/skills/browser-task/SKILL.md +33 -31
- package/agent-assets/skills/context/SKILL.md +26 -34
- package/agent-assets/skills/context/curation.json +12 -12
- package/agent-assets/skills/context/references/api.md +22 -20
- package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
- package/agent-assets/skills/context/references/snapshot-files.md +16 -15
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +19 -31
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
- package/agent-assets/skills/external-services/SKILL.native.claude.md +15 -9
- package/agent-assets/skills/external-services/SKILL.native.codex.md +11 -5
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +11 -5
- package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
- package/agent-assets/skills/mail/SKILL.md +12 -20
- package/agent-assets/skills/mail/SKILL.native.claude.md +24 -16
- package/agent-assets/skills/mail/SKILL.native.codex.md +16 -9
- package/agent-assets/skills/mail/SKILL.native.gemini.md +12 -6
- package/agent-assets/skills/mail/references/api.md +6 -1
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
- package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +26 -16
- package/agent-assets/skills/management-policy/SKILL.md +36 -28
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +30 -18
- package/agent-assets/skills/notify/SKILL.md +16 -13
- package/agent-assets/skills/notify/references/priority.md +42 -26
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.md +18 -18
- package/agent-assets/skills/notion/SKILL.native.claude.md +4 -4
- package/agent-assets/skills/notion/SKILL.native.codex.md +3 -3
- package/agent-assets/skills/notion/SKILL.native.gemini.md +3 -3
- package/agent-assets/skills/observations/SKILL.md +9 -24
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +9 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +8 -42
- package/agent-assets/skills/reading/references/reading-taste.md +5 -5
- package/agent-assets/skills/roadmap/SKILL.md +3 -19
- package/agent-assets/skills/roadmap/references/api.md +23 -8
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +8 -6
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/schedule/SKILL.md +20 -28
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +26 -16
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -46
- package/agent-assets/skills/today/SKILL.md +38 -81
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +9 -4
- package/agent-assets/skills/today/references/agent-plan-revision.md +28 -0
- package/agent-assets/skills/today/references/today-skeleton.md +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
- package/agent-assets/skills/user-interview/SKILL.md +15 -90
- package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +2 -2
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
- package/agent-assets/skills/user-profile/SKILL.md +16 -26
- package/agent-assets/skills/user-profile/curation.json +3 -3
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +47 -21
- package/agent-assets/task-flows/background_task.md +81 -0
- package/agent-assets/task-flows/git.local_ahead.stale.md +1 -1
- package/agent-assets/task-flows/git.push.detected.md +1 -1
- package/agent-assets/task-flows/git.tag.created.md +1 -1
- package/agent-assets/task-flows/github.assigned.md +1 -1
- package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
- package/agent-assets/task-flows/github.security_alert.md +1 -1
- package/agent-assets/task-flows/message.received.dm.md +11 -3
- package/agent-assets/task-flows/message.received.dm_first.md +8 -2
- package/agent-assets/task-flows/{routine.hourly_check.md → routine.activity_scan.md} +31 -23
- package/agent-assets/task-flows/{routine.hourly_check.triage.md → routine.activity_scan.triage.md} +3 -3
- package/agent-assets/task-flows/routine.evening_review.md +80 -0
- package/agent-assets/task-flows/routine.monthly_review.md +81 -8
- package/agent-assets/task-flows/routine.research_cluster_update.md +33 -19
- package/agent-assets/task-flows/routine.roadmap_refresh.md +2 -2
- package/agent-assets/task-flows/routine.today_refresh.md +1 -1
- package/agent-assets/task-flows/routine.weekly_review.md +124 -4
- package/agent-assets/task-flows/schedule.approaching.md +2 -2
- package/agent-assets/task-flows/scheduled.dm.md +77 -1
- package/agent-assets/task-flows/scheduled.task.md +7 -1
- package/agent-assets/task-flows/wiki.trace.md +1 -1
- package/agent-assets/templates/_manifest.json +2 -2
- package/agent-assets/templates/knowledge/dossiers/_index.md +1 -1
- package/agent-assets/templates/knowledge/dossiers/{hourly.md → activity-scan.md} +1 -1
- package/agent-assets/templates/policies/journal-format.md +1 -1
- package/agent-assets/templates/policies/mcp.md +1 -1
- package/agent-assets/templates/policies/routines/_index.md +1 -1
- package/agent-assets/templates/policies/routines/{hourly.md → activity-scan.md} +5 -5
- package/bin/aitne.mjs +45 -11
- package/package.json +6 -5
- package/scripts/commands/doctor.mjs +11 -2
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +1 -1
- package/scripts/start.mjs +14 -4
- package/agent-assets/docs/features/routines/hourly-check.md +0 -205
|
@@ -31,7 +31,7 @@ ask_examples:
|
|
|
31
31
|
- How does Gemini's per-day quota work?
|
|
32
32
|
locale: en-US
|
|
33
33
|
created: 2026-04-25
|
|
34
|
-
updated: 2026-
|
|
34
|
+
updated: 2026-06-07
|
|
35
35
|
keywords:
|
|
36
36
|
- cost
|
|
37
37
|
- budget
|
|
@@ -58,7 +58,7 @@ config_keys:
|
|
|
58
58
|
process_keys:
|
|
59
59
|
- routine.morning_routine
|
|
60
60
|
- routine.fetch_window
|
|
61
|
-
- routine.
|
|
61
|
+
- routine.activity_scan
|
|
62
62
|
---
|
|
63
63
|
|
|
64
64
|
# Costs and Quotas
|
|
@@ -100,7 +100,7 @@ costs so you can re-pin tiers if a routine has gotten too expensive.
|
|
|
100
100
|
The autonomous daily-cost cap (`autonomousDailyCostCapUsd`) is a
|
|
101
101
|
bumper, not a budget — once the day's autonomous spend crosses it the
|
|
102
102
|
dispatcher starts shedding the *lowest-priority* routines first
|
|
103
|
-
(
|
|
103
|
+
(activity scan), and only escalates to higher-priority ones as spend
|
|
104
104
|
climbs further; the morning routine is the last to be cut. Reactive
|
|
105
105
|
(in-the-loop) DMs and dashboard chat always pass through. A separate
|
|
106
106
|
`autonomousMonthlyCostCapUsd` is a notifications-only soft cap — it
|
|
@@ -127,7 +127,7 @@ Concretely:
|
|
|
127
127
|
against your provider account.
|
|
128
128
|
- **Subscription is fallback only.** If you skip the key, the
|
|
129
129
|
daemon runs against whatever local CLI login is present
|
|
130
|
-
(`claude`, `codex login`, `gemini
|
|
130
|
+
(`claude`, `codex login`, `gemini`). The dashboard surfaces
|
|
131
131
|
a `SubscriptionAuthWarning` banner whenever any backend is on
|
|
132
132
|
this path because most provider policies for headless /
|
|
133
133
|
programmatic agents do not extend to personal subscriptions —
|
|
@@ -145,12 +145,12 @@ register an API key on `/settings/models`.
|
|
|
145
145
|
`ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GEMINI_API_KEY` /
|
|
146
146
|
`GOOGLE_API_KEY`.
|
|
147
147
|
- **Subscription fallback**: the CLI's local login (`claude`,
|
|
148
|
-
`codex login`, `gemini
|
|
148
|
+
`codex login`, `gemini`). Used only when no API key is
|
|
149
149
|
configured. Cost behaviour then matches whatever the subscription
|
|
150
150
|
enforces (e.g. Claude's rolling 5-hour Opus window on a Max plan).
|
|
151
151
|
- **Daily cost cap**: `autonomousDailyCostCapUsd` (default unset) —
|
|
152
152
|
once the day's autonomous spend crosses it, lower-priority routines
|
|
153
|
-
are skipped first (
|
|
153
|
+
are skipped first (activity scan at 100% of the cap, the morning
|
|
154
154
|
routine only at 200%). Reactive DMs / dashboard chat keep running;
|
|
155
155
|
you can always reach the agent. Distinct from the removed
|
|
156
156
|
`maxDailyCostUsd`, which used to blanket-block reactive traffic too.
|
|
@@ -182,7 +182,7 @@ register an API key on `/settings/models`.
|
|
|
182
182
|
and the first-run branch runs on the parent
|
|
183
183
|
`routine.morning_routine` envelope (medium tier) with a
|
|
184
184
|
daemon-prepared `<roadmap_skeleton>` block.
|
|
185
|
-
- Gemini
|
|
185
|
+
- Gemini activity scan on Flash via `GEMINI_API_KEY` = ~$0.0005 per
|
|
186
186
|
fire on the paid tier; the free tier instead consumes one of a
|
|
187
187
|
fixed per-day request budget (Aitne caps Gemini at 450 requests/day
|
|
188
188
|
to match Google's free-tier daily limit — this ceiling is
|
|
@@ -196,10 +196,11 @@ register an API key on `/settings/models`.
|
|
|
196
196
|
|
|
197
197
|
In the dashboard:
|
|
198
198
|
|
|
199
|
-
- **Analytics** (`/analytics`) rolls
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
- **Sidebar
|
|
199
|
+
- **Analytics** (`/analytics`) rolls cost by backend, by ProcessKey
|
|
200
|
+
(event type), by model, and over daily / weekly / monthly periods,
|
|
201
|
+
plus a today total.
|
|
202
|
+
- **Sidebar** shows the day's running total next to the Analytics
|
|
203
|
+
entry.
|
|
203
204
|
- **Activity** event details include the per-execute cost.
|
|
204
205
|
- **Settings → Models** (`/settings/models`) exposes the per-backend
|
|
205
206
|
API-key panel and a warning banner whenever a backend is running on
|
|
@@ -207,7 +208,8 @@ In the dashboard:
|
|
|
207
208
|
|
|
208
209
|
From a DM or the terminal:
|
|
209
210
|
|
|
210
|
-
- **`!cost`** (and `!cost claude` / `!cost codex` / `!cost gemini`
|
|
211
|
+
- **`!cost`** (and `!cost claude` / `!cost codex` / `!cost gemini` /
|
|
212
|
+
`!cost opencode`)
|
|
211
213
|
DM the agent for trailing-7-day spend, broken down or per-backend.
|
|
212
214
|
- **`aitne status`** prints today's action count and spend;
|
|
213
215
|
**`aitne audit`** lists the action log (filter with `--since`,
|
|
@@ -36,7 +36,7 @@ ask_examples:
|
|
|
36
36
|
- Why don't I see a SKILL.md for Gmail in my Codex session?
|
|
37
37
|
locale: en-US
|
|
38
38
|
created: 2026-04-26
|
|
39
|
-
updated: 2026-
|
|
39
|
+
updated: 2026-06-07
|
|
40
40
|
keywords:
|
|
41
41
|
- delegated mode
|
|
42
42
|
- direct mode
|
|
@@ -100,8 +100,8 @@ backend is the same as the integration's `delegatedBackend`:
|
|
|
100
100
|
for the task-mode body shape.
|
|
101
101
|
|
|
102
102
|
`native` has no sub-cases. The integration's `nativeBackend` must equal
|
|
103
|
-
the main DM backend — `
|
|
104
|
-
`native` rows to `disabled`. From the agent's call-site view, `native`
|
|
103
|
+
the main DM backend — `cascadeNativeBindingsOnMainSwitch` cascades
|
|
104
|
+
unmatched `native` rows to `disabled`. From the agent's call-site view, `native`
|
|
105
105
|
is indistinguishable from `delegated` same-backend (both are in-session
|
|
106
106
|
MCP); the difference is who polls (no one, for `native`).
|
|
107
107
|
|
|
@@ -115,9 +115,9 @@ MCP); the difference is who polls (no one, for `native`).
|
|
|
115
115
|
|
|
116
116
|
The setup tax for direct mode (OAuth client setup in a vendor console, then
|
|
117
117
|
JSON download, then keychain seeding) is the single biggest blocker for
|
|
118
|
-
non-technical operators.
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
non-technical operators. Claude Code, Codex, and Gemini CLI all ship
|
|
119
|
+
first-party connectors to Gmail, Calendar, Drive, and more (OpenCode
|
|
120
|
+
ships none). When the operator is signed into claude.ai or ChatGPT,
|
|
121
121
|
the agent can reach those services through the backend's own MCP tools,
|
|
122
122
|
zero daemon credentials required.
|
|
123
123
|
|
|
@@ -139,9 +139,9 @@ that case the daemon spawns the other backend per call.
|
|
|
139
139
|
`/exec` proxy (cross-backend).
|
|
140
140
|
- **`native`** — daemon holds nothing AND runs no poller. The main
|
|
141
141
|
backend's MCP connector reaches the integration on-demand within the
|
|
142
|
-
agent's own turn (DM,
|
|
142
|
+
agent's own turn (DM, activity_scan, routine pre-pass). The agent
|
|
143
143
|
POSTs results to `/api/observations/batch` so the rest of the
|
|
144
|
-
observation pipeline (summarizer,
|
|
144
|
+
observation pipeline (summarizer, activity scan) still operates. See
|
|
145
145
|
`docs/design/appendices/native-integration-mode.md` for the full
|
|
146
146
|
spec, including the per-key `runtime_state.integration_flip_lock:<key>`
|
|
147
147
|
drain protocol.
|
|
@@ -152,8 +152,8 @@ that case the daemon spawns the other backend per call.
|
|
|
152
152
|
- **`nativeBackend`** — when native, which backend's connector is
|
|
153
153
|
expected. Must equal the main DM backend; changing the main backend
|
|
154
154
|
cascades unmatched `native` rows to `disabled` (the cascade is
|
|
155
|
-
|
|
156
|
-
`PUT /api/backends/main`).
|
|
155
|
+
performed by `cascadeNativeBindingsOnMainSwitch` from the
|
|
156
|
+
`PUT /api/backends/main` handler).
|
|
157
157
|
- **Same-backend** — DM session backend matches `delegatedBackend` /
|
|
158
158
|
`nativeBackend`. The daemon is not in the loop; the agent calls
|
|
159
159
|
native MCP directly. No skill body is materialized for the
|
|
@@ -193,10 +193,10 @@ When you pick `delegated`, also pick `delegatedBackend`:
|
|
|
193
193
|
is your preferred DM driver (e.g. Claude).
|
|
194
194
|
|
|
195
195
|
When you pick `native`, `nativeBackend` is fixed to your main DM
|
|
196
|
-
backend. Flipping the main backend re-targets
|
|
197
|
-
whose
|
|
198
|
-
|
|
199
|
-
|
|
196
|
+
backend. Flipping the main backend never re-targets `native` rows:
|
|
197
|
+
every row whose `nativeBackend` no longer matches the new main backend
|
|
198
|
+
cascades to `disabled` and the operator gets a DM — re-enabling
|
|
199
|
+
requires an explicit re-flip (with its live probe) on the new backend.
|
|
200
200
|
|
|
201
201
|
## Concrete Examples
|
|
202
202
|
|
|
@@ -226,7 +226,7 @@ curl -X POST http://localhost:8321/api/integrations/gmail/exec \
|
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
The daemon spawns a Codex subprocess with the `proxy.md` profile, the
|
|
229
|
-
task-mode planner picks `
|
|
229
|
+
task-mode planner picks `search_emails` from the registered
|
|
230
230
|
`capabilityTools`, runs it, and returns a structured `{messages:[…]}`
|
|
231
231
|
conforming to `outputSchema`.
|
|
232
232
|
|
|
@@ -283,8 +283,9 @@ the agent consults at session-init. It is rendered as a Markdown table:
|
|
|
283
283
|
The "Backend" column surfaces whichever binding is active for the row —
|
|
284
284
|
`delegatedBackend` for `delegated`, `nativeBackend` for `native`. For
|
|
285
285
|
`direct` and `disabled` rows it is `—`. The "Sub-tier" column annotates
|
|
286
|
-
delegated Gmail rows (`draft-only` for Claude, `full-auto` for Codex)
|
|
287
|
-
|
|
286
|
+
delegated Gmail rows (`draft-only` for Claude, `full-auto` for Codex);
|
|
287
|
+
other delegated rows show `full`, and non-delegated rows show `—`. The
|
|
288
|
+
file also includes the per-backend
|
|
288
289
|
connector support matrix and the `deniedTools` block; both are rendered
|
|
289
290
|
by `renderManagementMd` (`packages/daemon/src/core/management-md.ts`).
|
|
290
291
|
|
|
@@ -29,7 +29,7 @@ ask_examples:
|
|
|
29
29
|
- How does the daemon prevent the agent from writing to disk directly?
|
|
30
30
|
locale: en-US
|
|
31
31
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-06-11
|
|
33
33
|
keywords:
|
|
34
34
|
- context
|
|
35
35
|
- markdown
|
|
@@ -53,7 +53,7 @@ related:
|
|
|
53
53
|
- features/memory-files/projects
|
|
54
54
|
ui_anchors:
|
|
55
55
|
- /knowledge
|
|
56
|
-
- /
|
|
56
|
+
- /settings
|
|
57
57
|
context_files:
|
|
58
58
|
- state/today.md
|
|
59
59
|
- identity/profile.md
|
|
@@ -129,7 +129,8 @@ curl -X PATCH http://localhost:8321/api/context/state/today.md \
|
|
|
129
129
|
|
|
130
130
|
- `PUT /api/context/*` replaces a whole file; `PATCH` does a section op
|
|
131
131
|
(`append`, `replace`, `clear`, `clear_before`, `append_to_file`);
|
|
132
|
-
`DELETE` removes a file (permitted only
|
|
132
|
+
`DELETE` removes a file (permitted only on a few paths — user Agent
|
|
133
|
+
definitions, inbox/scratch notes, and legacy custom-routine files).
|
|
133
134
|
- Legacy bare paths (`/api/context/today.md`) still resolve — the daemon
|
|
134
135
|
rewrites them to the canonical class-prefixed form in process, so a
|
|
135
136
|
plain `curl -X PATCH` without `-L` keeps working — but new writes
|
|
@@ -153,18 +154,24 @@ curl -X PATCH http://localhost:8321/api/context/state/today.md \
|
|
|
153
154
|
synthesized by the morning routine.
|
|
154
155
|
- `plans/projects/<slug>.md` — one file per active project.
|
|
155
156
|
- `policies/management.md` — the umbrella registry: Source-of-Truth
|
|
156
|
-
bindings, Managed Tasks, an Active Policies summary.
|
|
157
|
-
|
|
157
|
+
bindings, Managed Tasks, an Active Policies summary. Injected as
|
|
158
|
+
`<management_rules>` on the wide-path flows (DMs, mentions, the
|
|
159
|
+
morning routine); a few narrow routines (the journal stage, activity
|
|
160
|
+
scan, today refresh, observer events, scheduled tasks) opt out to
|
|
161
|
+
save budget.
|
|
158
162
|
- `policies/management-captures/<slug>.md` — one file per durable management rule
|
|
159
163
|
("from now on, do X"). The daemon auto-maintains a slug index at
|
|
160
164
|
`policies/management-captures/_index.md`.
|
|
161
165
|
|
|
162
166
|
## Where You See It in the Dashboard
|
|
163
167
|
|
|
164
|
-
- **Knowledge → Context Files** lists every file with its
|
|
165
|
-
modified time
|
|
166
|
-
- **
|
|
167
|
-
|
|
168
|
+
- **Knowledge → Context Files** lists every file with its last
|
|
169
|
+
modified time and a preview.
|
|
170
|
+
- **Settings → Management Mode** shows where the vault lives (this app
|
|
171
|
+
or an Obsidian-style directory), relocates it, and surfaces vault
|
|
172
|
+
health.
|
|
173
|
+
- **Connections → Notes** is where personal note sources (your external
|
|
174
|
+
Obsidian vault, Notion) attach.
|
|
168
175
|
|
|
169
176
|
## Related
|
|
170
177
|
|
|
@@ -6,13 +6,13 @@ id: observations
|
|
|
6
6
|
aliases:
|
|
7
7
|
- observation
|
|
8
8
|
- polling
|
|
9
|
-
-
|
|
9
|
+
- activity scan
|
|
10
10
|
- observation queue
|
|
11
11
|
- phase 9
|
|
12
12
|
category: concepts
|
|
13
13
|
summary: |
|
|
14
14
|
Observations are change records the polling integrations write into
|
|
15
|
-
SQLite. The
|
|
15
|
+
SQLite. The activity scan consumes them — there is no per-change
|
|
16
16
|
notification. This pivot was the Phase 9 polling change.
|
|
17
17
|
section: observations
|
|
18
18
|
tags:
|
|
@@ -25,16 +25,16 @@ status: stable
|
|
|
25
25
|
ask_examples:
|
|
26
26
|
- What is an observation?
|
|
27
27
|
- Why doesn't the agent message me on every git commit?
|
|
28
|
-
- How does the
|
|
28
|
+
- How does the activity scan use observations?
|
|
29
29
|
- Where does the routine pre-pass write observations?
|
|
30
30
|
locale: en-US
|
|
31
31
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-06-07
|
|
33
33
|
keywords:
|
|
34
34
|
- observation
|
|
35
35
|
- observations
|
|
36
36
|
- polling
|
|
37
|
-
-
|
|
37
|
+
- activity scan
|
|
38
38
|
- phase 9
|
|
39
39
|
- routine.fetch_window
|
|
40
40
|
- pre-pass
|
|
@@ -44,7 +44,7 @@ keywords:
|
|
|
44
44
|
- observation queue
|
|
45
45
|
- dedupe
|
|
46
46
|
related:
|
|
47
|
-
- features/routines/
|
|
47
|
+
- features/routines/activity-scan
|
|
48
48
|
- features/routines/morning-routine
|
|
49
49
|
- concepts/process-keys
|
|
50
50
|
- concepts/routines
|
|
@@ -53,13 +53,14 @@ related:
|
|
|
53
53
|
ui_anchors:
|
|
54
54
|
- /activity
|
|
55
55
|
process_keys:
|
|
56
|
-
- routine.
|
|
56
|
+
- routine.activity_scan
|
|
57
57
|
- routine.fetch_window
|
|
58
58
|
config_keys:
|
|
59
|
-
-
|
|
60
|
-
-
|
|
59
|
+
- activityScanIntervalMinutes
|
|
60
|
+
- activityScanPrePassFreshnessMinutes
|
|
61
61
|
api_endpoints:
|
|
62
62
|
- POST /api/observations
|
|
63
|
+
- POST /api/observations/batch
|
|
63
64
|
- GET /api/observations
|
|
64
65
|
- POST /api/observations/consume
|
|
65
66
|
context_files:
|
|
@@ -73,15 +74,15 @@ context_files:
|
|
|
73
74
|
|
|
74
75
|
Polling integrations (Obsidian, Git, Notion, Calendar) **do not emit
|
|
75
76
|
events** when they detect changes. They write observation rows to
|
|
76
|
-
SQLite. A single `routine.
|
|
77
|
+
SQLite. A single `routine.activity_scan` consumes the queue and decides
|
|
77
78
|
what is worth surfacing.
|
|
78
79
|
|
|
79
80
|
Since 2026-05, observations have a **second writer**: every main
|
|
80
81
|
routine (`routine.morning_routine`, `routine.today_refresh`,
|
|
81
|
-
`routine.
|
|
82
|
+
`routine.activity_scan`, `routine.evening_review`,
|
|
82
83
|
`routine.weekly_review`) is preceded by a lite-tier
|
|
83
84
|
`routine.fetch_window` pre-pass that fetches mail / calendar / Notion
|
|
84
|
-
windows and POSTs them to `/api/observations`.
|
|
85
|
+
windows and POSTs them to `/api/observations/batch`.
|
|
85
86
|
(`routine.monthly_review` has no pre-pass window.) The main routine
|
|
86
87
|
then reads them via the same `pending=true` queue that the polling
|
|
87
88
|
path feeds. Observation rows look identical regardless of which writer
|
|
@@ -105,14 +106,17 @@ tell them apart:
|
|
|
105
106
|
Mail) call `recordObservation` when they detect a change.
|
|
106
107
|
2. **The pre-pass** — the lite-tier `routine.fetch_window` session
|
|
107
108
|
spawned ahead of each main routine — POSTs mail / calendar / Notion
|
|
108
|
-
windows to `/api/observations`.
|
|
109
|
+
windows to `/api/observations/batch`.
|
|
109
110
|
|
|
110
111
|
Both write rows of the same shape; the consumer reads the merged queue.
|
|
111
112
|
|
|
112
113
|
- **Observation**: one row in the `observations` table.
|
|
113
|
-
- **Actor**: who caused the change
|
|
114
|
-
|
|
115
|
-
-
|
|
114
|
+
- **Actor**: who caused the change (`user`, `agent`, or `system`). The
|
|
115
|
+
activity-scan gate filters pending rows by source, not actor —
|
|
116
|
+
pre-pass and delegated-sync rows arrive as `actor='agent'` and count
|
|
117
|
+
as real activity. The anti-loop guard lives at write time instead,
|
|
118
|
+
via `AgentWriteTracker` (below).
|
|
119
|
+
- **Activity scan**: the consumer routine. Medium tier by default
|
|
116
120
|
(Sonnet); fed by both the background polling path and the pre-pass
|
|
117
121
|
fetcher.
|
|
118
122
|
- **`AgentWriteTracker`**: the daemon component that tags
|
|
@@ -123,9 +127,9 @@ Both write rows of the same shape; the consumer reads the merged queue.
|
|
|
123
127
|
per-routine window (`ROUTINE_WINDOWS` in
|
|
124
128
|
`packages/daemon/src/core/routine-windows.ts`) for each enabled
|
|
125
129
|
mail / calendar / Notion integration and POSTs the results to
|
|
126
|
-
`/api/observations`. The server computes `contentHash` from
|
|
130
|
+
`/api/observations/batch`. The server computes `contentHash` from
|
|
127
131
|
`(source, payload)`, so an unchanged item written twice in the same
|
|
128
|
-
cadence dedupes
|
|
132
|
+
cadence dedupes as a `duplicate` instead of writing a second row.
|
|
129
133
|
|
|
130
134
|
## Concrete Examples
|
|
131
135
|
|
|
@@ -135,12 +139,12 @@ Both write rows of the same shape; the consumer reads the merged queue.
|
|
|
135
139
|
|
|
136
140
|
## Where You See It in the Dashboard
|
|
137
141
|
|
|
138
|
-
- **Activity** logs
|
|
142
|
+
- **Activity** logs activity-scan fires; the detail shows how many
|
|
139
143
|
observations were consumed.
|
|
140
144
|
|
|
141
145
|
## Related
|
|
142
146
|
|
|
143
|
-
- [
|
|
147
|
+
- [Activity Scan](../features/routines/activity-scan.md)
|
|
144
148
|
- [Morning Routine](../features/routines/morning-routine.md)
|
|
145
149
|
- [Process Keys](./process-keys.md)
|
|
146
150
|
- [Routines](./routines.md)
|
|
@@ -10,7 +10,7 @@ aliases:
|
|
|
10
10
|
category: concepts
|
|
11
11
|
summary: |
|
|
12
12
|
A ProcessKey is the agent's dispatch identity for one kind of work
|
|
13
|
-
("morning routine", "DM", "
|
|
13
|
+
("morning routine", "DM", "activity scan"). The router resolves it
|
|
14
14
|
to a backend + tier binding; the manifest map resolves it to skills.
|
|
15
15
|
section: process-keys
|
|
16
16
|
tags:
|
|
@@ -51,9 +51,9 @@ process_keys:
|
|
|
51
51
|
- routine.morning_routine_today
|
|
52
52
|
- routine.morning_routine_journal
|
|
53
53
|
- routine.evening_review
|
|
54
|
-
- routine.
|
|
54
|
+
- routine.activity_scan
|
|
55
55
|
- routine.fetch_window
|
|
56
|
-
- routine.
|
|
56
|
+
- routine.activity_scan.triage
|
|
57
57
|
- message.dm
|
|
58
58
|
- message.mention
|
|
59
59
|
- dashboard.chat
|
|
@@ -95,7 +95,7 @@ those subsystems.
|
|
|
95
95
|
autonomous.
|
|
96
96
|
- **DEFAULT_PROCESS_TIERS**: the per-key default model size — `lite`
|
|
97
97
|
(Haiku-class), `medium` (Sonnet-class), or `high` (Opus-class).
|
|
98
|
-
Unknown keys
|
|
98
|
+
Unknown keys default to `medium`.
|
|
99
99
|
- **TIER_LOCKED_PROCESS_KEYS**: keys whose tier is hard-locked and
|
|
100
100
|
cannot be overridden by an operator pin. Today this is just
|
|
101
101
|
`dashboard.docs_qa`, locked to `medium`.
|
|
@@ -109,17 +109,18 @@ those subsystems.
|
|
|
109
109
|
— `routine.morning_routine_today` (Stage A, today.md, medium) and
|
|
110
110
|
`routine.morning_routine_journal` (Stage B, daily journal, lite). Also
|
|
111
111
|
`routine.evening_review`, `routine.weekly_review`,
|
|
112
|
-
`routine.
|
|
112
|
+
`routine.activity_scan`, `routine.roadmap_refresh`,
|
|
113
113
|
`routine.today_refresh`, `routine.user_profile_sweep`.
|
|
114
114
|
`routine.morning_routine_initial` was retired (2026-05-16) — the
|
|
115
115
|
first-run branch now routes through `routine.morning_routine`.
|
|
116
116
|
- **Routine sub-jobs** (lite tier, dispatcher-spawned, not user-facing):
|
|
117
117
|
`routine.fetch_window` (pre-pass mail/calendar/Notion fetcher that
|
|
118
118
|
runs before each main routine and POSTs observations) and
|
|
119
|
-
`routine.
|
|
120
|
-
inside the
|
|
121
|
-
- **Custom routines:** `routine.custom.<slug>`
|
|
122
|
-
|
|
119
|
+
`routine.activity_scan.triage` (Stage 2 escalate-vs-log-only gate
|
|
120
|
+
inside the activity scan).
|
|
121
|
+
- **Custom routines (retired):** `routine.custom.<slug>` appears only
|
|
122
|
+
in historical Activity rows — operator-defined recurring work now
|
|
123
|
+
runs as user Agents under `agent.task`.
|
|
123
124
|
- **Messaging:** `message.dm`, `message.mention`
|
|
124
125
|
- **Dashboard:** `dashboard.chat`, `dashboard.docs_qa`
|
|
125
126
|
- **Scheduled / external:** `agent.task` (recurring schedules),
|
|
@@ -13,8 +13,8 @@ aliases:
|
|
|
13
13
|
category: concepts
|
|
14
14
|
summary: |
|
|
15
15
|
Routines are the autonomous, scheduled tasks Aitne runs on
|
|
16
|
-
its own — morning routine, evening review,
|
|
17
|
-
retro, plus any
|
|
16
|
+
its own — morning routine, evening review, activity scan, weekly
|
|
17
|
+
retro, plus any recurring user Agents you define.
|
|
18
18
|
section: routines
|
|
19
19
|
tags:
|
|
20
20
|
- core
|
|
@@ -30,7 +30,7 @@ ask_examples:
|
|
|
30
30
|
- Which routine uses the high tier by default?
|
|
31
31
|
locale: en-US
|
|
32
32
|
created: 2026-04-25
|
|
33
|
-
updated: 2026-
|
|
33
|
+
updated: 2026-06-07
|
|
34
34
|
keywords:
|
|
35
35
|
- routine
|
|
36
36
|
- routines
|
|
@@ -40,18 +40,18 @@ keywords:
|
|
|
40
40
|
- routine.fetch_window
|
|
41
41
|
- pre-pass
|
|
42
42
|
- dayBoundaryHour
|
|
43
|
-
-
|
|
43
|
+
- activity scan
|
|
44
44
|
related:
|
|
45
45
|
- features/routines/morning-routine
|
|
46
46
|
- features/routines/evening-review
|
|
47
47
|
- features/routines/weekly-review
|
|
48
|
-
- features/routines/
|
|
49
|
-
-
|
|
48
|
+
- features/routines/activity-scan
|
|
49
|
+
- guides/add-a-custom-routine
|
|
50
50
|
- concepts/process-keys
|
|
51
51
|
- concepts/observations
|
|
52
52
|
ui_anchors:
|
|
53
|
-
- /
|
|
54
|
-
- /
|
|
53
|
+
- /agents
|
|
54
|
+
- /agents/activity-scan
|
|
55
55
|
process_keys:
|
|
56
56
|
- routine.morning_routine
|
|
57
57
|
- routine.morning_routine_today
|
|
@@ -59,17 +59,18 @@ process_keys:
|
|
|
59
59
|
- routine.evening_review
|
|
60
60
|
- routine.weekly_review
|
|
61
61
|
- routine.monthly_review
|
|
62
|
-
- routine.
|
|
62
|
+
- routine.activity_scan
|
|
63
63
|
- routine.today_refresh
|
|
64
64
|
- routine.fetch_window
|
|
65
|
-
- routine.
|
|
65
|
+
- routine.activity_scan.triage
|
|
66
66
|
config_keys:
|
|
67
67
|
- dayBoundaryHour
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
68
|
+
- activityScanEnabled
|
|
69
|
+
- activityScanIntervalMinutes
|
|
70
|
+
- activityScanActiveStartHour
|
|
71
|
+
- activityScanActiveEndHour
|
|
72
|
+
- activityScanPrePassFreshnessMinutes
|
|
73
|
+
- activityScanStage2Enabled
|
|
73
74
|
- monthlyReviewEnabled
|
|
74
75
|
---
|
|
75
76
|
|
|
@@ -81,7 +82,7 @@ A routine is a unit of agent work that runs on a schedule, not in
|
|
|
81
82
|
response to a message. The morning routine fires once per agent day at
|
|
82
83
|
`dayBoundaryHour`; the evening review (18:00 daily), weekly review
|
|
83
84
|
(Friday 19:00), and optional monthly review fire on fixed schedules in
|
|
84
|
-
code; the
|
|
85
|
+
code; the activity scan coalesces accumulated observations on a
|
|
85
86
|
configurable cadence.
|
|
86
87
|
|
|
87
88
|
## Why This Concept Exists
|
|
@@ -92,7 +93,7 @@ up without being asked: it builds today, it logs to the journal, it
|
|
|
92
93
|
files a retro for the week. They are the proactive surface.
|
|
93
94
|
|
|
94
95
|
Each routine is a single ProcessKey — `routine.morning_routine`,
|
|
95
|
-
`routine.
|
|
96
|
+
`routine.activity_scan`, `routine.weekly_review`, etc. The dispatcher
|
|
96
97
|
treats them as just another event class; the only difference from a
|
|
97
98
|
DM is who fired the event.
|
|
98
99
|
|
|
@@ -108,10 +109,10 @@ DM is who fired the event.
|
|
|
108
109
|
review once it is past 18:00; weekly review across Fri–Sun). It never
|
|
109
110
|
double-fires a routine that already succeeded.
|
|
110
111
|
- **Tier policy**: **no routine runs the high tier by default.** Every
|
|
111
|
-
recurring routine — morning, evening, weekly,
|
|
112
|
+
recurring routine — morning, evening, weekly, activity scan —
|
|
112
113
|
defaults to **medium** (Sonnet on Claude). The **lite** (Haiku) tier
|
|
113
114
|
is reserved for the morning routine's Stage B and for mechanical
|
|
114
|
-
sub-jobs (the
|
|
115
|
+
sub-jobs (the activity-scan triage gate and the pre-pass fetcher). The
|
|
115
116
|
only high-tier ProcessKey in the whole system is `delegated_task_heavy`,
|
|
116
117
|
which is opt-in and not a routine. See
|
|
117
118
|
[Backends and Tiers](backends-and-tiers.md).
|
|
@@ -140,26 +141,28 @@ DM is who fired the event.
|
|
|
140
141
|
| `routine.morning_routine_journal` | Stage B of every morning routine (`journal/daily/<yesterday>.md` authoring) | lite |
|
|
141
142
|
| `routine.evening_review` | 18:00 daily (fixed) | medium |
|
|
142
143
|
| `routine.weekly_review` | Friday 19:00 (fixed, one hour after evening review) | medium |
|
|
143
|
-
| `routine.monthly_review` | Last day of month at 18:00, **default off**
|
|
144
|
-
| `routine.
|
|
144
|
+
| `routine.monthly_review` | Last day of month at 18:00, **default off** — opt in by enabling the monthly-review agent at `/agents/monthly-review` | medium |
|
|
145
|
+
| `routine.activity_scan` | Every N interval minutes (default 60) inside the active window — cadence set on `/agents/activity-scan` | medium |
|
|
145
146
|
| `routine.today_refresh` | On calendar drift or a dashboard "refresh today" request (not a fixed cron) | medium |
|
|
146
147
|
| `routine.fetch_window` | Spawned before each routine above that needs fresh upstream data | lite |
|
|
147
|
-
| `routine.
|
|
148
|
-
| `routine.custom.<slug>` |
|
|
148
|
+
| `routine.activity_scan.triage` | Stage 2 of the activity-scan gate on low-signal ticks — runs only when `activityScanStage2Enabled` is on (default off; disabled ticks escalate straight to the full check) | lite |
|
|
149
|
+
| `routine.custom.<slug>` | Legacy custom-routine recurrence — custom routines are now user Agents created on `/agents`; existing specs were converted at upgrade | medium |
|
|
149
150
|
|
|
150
151
|
## Where You See It in the Dashboard
|
|
151
152
|
|
|
152
|
-
- **
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
- **Agents** (`/agents`) is the hub: every routine is an agent card
|
|
154
|
+
showing its schedule, status, and last run. The activity scan's
|
|
155
|
+
cadence and active window are edited on `/agents/activity-scan`
|
|
156
|
+
(Definition tab → Cadence card); each routine's rulebook is edited
|
|
157
|
+
on its Rulebook tab; custom recurring work is a user agent created
|
|
158
|
+
from the same page's New Agent dialog. Morning, evening, weekly, and
|
|
159
|
+
monthly fire times are fixed in code and not editable there.
|
|
158
160
|
- **Activity** logs each routine run with its outcome.
|
|
159
161
|
|
|
160
162
|
## Related
|
|
161
163
|
|
|
162
164
|
- [Morning Routine](../features/routines/morning-routine.md)
|
|
163
165
|
- [Evening Review](../features/routines/evening-review.md)
|
|
164
|
-
- [
|
|
165
|
-
- [
|
|
166
|
+
- [Activity Scan](../features/routines/activity-scan.md)
|
|
167
|
+
- [Create a Recurring Agent](../guides/add-a-custom-routine.md)
|
|
168
|
+
- [Custom Routines (Retired)](../features/routines/custom-routines.md)
|
|
@@ -28,7 +28,7 @@ ask_examples:
|
|
|
28
28
|
- How do I see what tools the agent is allowed to use?
|
|
29
29
|
locale: en-US
|
|
30
30
|
created: 2026-04-25
|
|
31
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-06-07
|
|
32
32
|
keywords:
|
|
33
33
|
- safety
|
|
34
34
|
- safe mode
|
|
@@ -44,7 +44,7 @@ related:
|
|
|
44
44
|
- features/operations/approvals
|
|
45
45
|
- reference/disallowed-tools
|
|
46
46
|
ui_anchors:
|
|
47
|
-
- /settings/
|
|
47
|
+
- /settings/safety
|
|
48
48
|
- /settings/models
|
|
49
49
|
config_keys:
|
|
50
50
|
- disallowedTools
|
|
@@ -86,9 +86,12 @@ disallowed-tools floor.
|
|
|
86
86
|
workspace-write sandbox, the Gemini whitelist TOML, and the OpenCode
|
|
87
87
|
permission block.
|
|
88
88
|
- **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
|
|
89
|
-
TOML. The absolute-block layer still holds in Allow mode
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
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
|
|
92
|
+
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.
|
|
92
95
|
- **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
|
|
93
96
|
in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
|
|
94
97
|
by config, or by allow-mode.
|
|
@@ -120,13 +123,14 @@ absolute-block layer and Approve tier are where the agent is actually stopped.
|
|
|
120
123
|
|
|
121
124
|
## Where You See It in the Dashboard
|
|
122
125
|
|
|
123
|
-
- **Settings →
|
|
126
|
+
- **Settings → Safety** holds the `disallowedTools` and
|
|
124
127
|
`allowedToolsOverride` tool-policy lists.
|
|
125
128
|
- **Settings → Models & Cost** holds the per-backend Safe / Allow
|
|
126
129
|
**Execution Mode** switch (you can also set it in the setup wizard).
|
|
127
130
|
- **Activity** logs every absolute-blocked tool call as
|
|
128
131
|
`action_type='blocked_absolute'`.
|
|
129
|
-
- **
|
|
132
|
+
- The **Overview** page shows an approval card where Approve-tier
|
|
133
|
+
actions queue when they fire.
|
|
130
134
|
|
|
131
135
|
## Related
|
|
132
136
|
|