@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.
- package/README.md +256 -833
- package/agent-assets/agent-profiles/_safety.md +52 -20
- package/agent-assets/agent-profiles/browser-task.md +108 -0
- package/agent-assets/agent-profiles/conversational.md +3 -3
- package/agent-assets/agent-profiles/profile-importer.md +3 -3
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- package/agent-assets/agent-profiles/routine.md +4 -3
- package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
- package/agent-assets/agents/evening-review/agent.md +53 -0
- package/agent-assets/agents/hourly-check/agent.md +62 -0
- package/agent-assets/agents/monthly-review/agent.md +55 -0
- package/agent-assets/agents/morning-routine/agent.md +78 -0
- package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
- package/agent-assets/agents/skill-curation/agent.md +52 -0
- package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
- package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
- package/agent-assets/agents/weekly-review/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +18 -11
- package/agent-assets/docs/concepts/auth-health.md +56 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +110 -41
- package/agent-assets/docs/concepts/costs-and-quotas.md +74 -19
- package/agent-assets/docs/concepts/delegated-mode.md +193 -75
- package/agent-assets/docs/concepts/memory-model.md +79 -34
- package/agent-assets/docs/concepts/observations.md +61 -11
- package/agent-assets/docs/concepts/process-keys.md +66 -17
- package/agent-assets/docs/concepts/routines.md +77 -32
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +62 -37
- package/agent-assets/docs/concepts/skills.md +38 -17
- package/agent-assets/docs/features/integrations/browser-history.md +195 -0
- package/agent-assets/docs/features/integrations/calendar.md +40 -30
- package/agent-assets/docs/features/integrations/git.md +20 -9
- package/agent-assets/docs/features/integrations/github.md +93 -35
- package/agent-assets/docs/features/integrations/mail.md +60 -17
- package/agent-assets/docs/features/integrations/notion.md +51 -11
- package/agent-assets/docs/features/integrations/obsidian.md +35 -7
- package/agent-assets/docs/features/lifestyle/git.md +45 -44
- package/agent-assets/docs/features/lifestyle/reading.md +50 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +66 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +91 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
- package/agent-assets/docs/features/memory-files/projects.md +75 -15
- package/agent-assets/docs/features/memory-files/roadmap.md +55 -10
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +47 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +67 -31
- package/agent-assets/docs/features/messaging/bang-commands.md +115 -28
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +46 -4
- package/agent-assets/docs/features/messaging/overview.md +40 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +79 -14
- package/agent-assets/docs/features/messaging/telegram.md +25 -6
- package/agent-assets/docs/features/messaging/whatsapp.md +79 -14
- package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -16
- package/agent-assets/docs/features/operations/approvals.md +53 -15
- package/agent-assets/docs/features/operations/backend-routing.md +75 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +90 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
- package/agent-assets/docs/features/operations/notifications.md +58 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +59 -16
- package/agent-assets/docs/features/routines/custom-routines.md +97 -23
- package/agent-assets/docs/features/routines/evening-review.md +75 -22
- package/agent-assets/docs/features/routines/hourly-check.md +150 -30
- package/agent-assets/docs/features/routines/morning-routine.md +60 -33
- package/agent-assets/docs/features/routines/weekly-review.md +65 -20
- package/agent-assets/docs/features/wiki/commands.md +37 -16
- package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
- package/agent-assets/docs/features/wiki/dashboard.md +255 -0
- package/agent-assets/docs/features/wiki/overview.md +80 -12
- package/agent-assets/docs/features/wiki/search.md +248 -0
- package/agent-assets/docs/features/wiki/workspaces.md +254 -0
- package/agent-assets/docs/getting-started/01-what-is-this.md +64 -32
- package/agent-assets/docs/getting-started/02-first-steps.md +28 -10
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +42 -21
- package/agent-assets/docs/getting-started/04-first-day.md +52 -20
- package/agent-assets/docs/glossary.md +285 -21
- package/agent-assets/docs/guides/add-a-custom-routine.md +74 -22
- package/agent-assets/docs/guides/backup-and-restore.md +92 -14
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +62 -25
- package/agent-assets/docs/guides/build-your-wiki.md +33 -6
- package/agent-assets/docs/guides/change-which-model-handles-x.md +70 -9
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +80 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -9
- package/agent-assets/docs/guides/import-knowledge-file.md +60 -39
- package/agent-assets/docs/guides/install-and-run.md +64 -19
- package/agent-assets/docs/guides/maintain-wiki-health.md +41 -10
- package/agent-assets/docs/guides/migrate-machines.md +86 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +119 -59
- package/agent-assets/docs/guides/pause-the-agent.md +71 -22
- package/agent-assets/docs/guides/reinstall-cleanly.md +102 -17
- package/agent-assets/docs/guides/setup-wizard.md +126 -56
- package/agent-assets/docs/guides/switch-default-backend.md +72 -17
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +31 -10
- package/agent-assets/docs/reference/api.md +162 -23
- package/agent-assets/docs/reference/cli-commands.md +55 -15
- package/agent-assets/docs/reference/config.md +246 -39
- package/agent-assets/docs/reference/disallowed-tools.md +42 -10
- package/agent-assets/docs/reference/keyboard-shortcuts.md +47 -10
- package/agent-assets/docs/reference/knowledge-layout.md +620 -0
- package/agent-assets/docs/reference/process-keys.md +126 -20
- package/agent-assets/docs/reference/skills.md +62 -18
- package/agent-assets/docs/troubleshooting/auth-failed.md +53 -19
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +96 -22
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +94 -20
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +77 -22
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +87 -22
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +85 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +36 -6
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +128 -51
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +33 -11
- package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/skill-curation/SKILL.md +2 -2
- package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
- package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
- package/agent-assets/skills/agent-actions/SKILL.md +122 -0
- package/agent-assets/skills/agent-create/SKILL.md +149 -0
- package/agent-assets/skills/attach/SKILL.md +3 -4
- package/agent-assets/skills/browser-history/SKILL.md +198 -0
- package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
- package/agent-assets/skills/browser-task/SKILL.md +169 -0
- package/agent-assets/skills/context/SKILL.md +45 -463
- package/agent-assets/skills/context/curation.json +2 -2
- package/agent-assets/skills/context/references/api.md +232 -0
- package/agent-assets/skills/context/references/required-frontmatter.md +73 -0
- package/agent-assets/skills/context/references/snapshot-files.md +103 -0
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +4 -4
- package/agent-assets/skills/docs-search/SKILL.md +17 -16
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +14 -26
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +14 -26
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +14 -26
- package/agent-assets/skills/external-services/SKILL.md +9 -262
- package/agent-assets/skills/external-services/SKILL.native.claude.md +6 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +8 -9
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +5 -6
- package/agent-assets/skills/external-services/references/calendar-apple.md +97 -0
- package/agent-assets/skills/external-services/references/calendar-google.md +72 -0
- package/agent-assets/skills/external-services/references/calendar-outlook.md +36 -0
- package/agent-assets/skills/external-services/references/github.md +17 -0
- package/agent-assets/skills/external-services/references/obsidian.md +49 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +27 -0
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +151 -0
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +93 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +75 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -6
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +9 -5
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +9 -5
- package/agent-assets/skills/mail/SKILL.md +9 -114
- package/agent-assets/skills/mail/SKILL.native.claude.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/mail/references/api.md +110 -0
- package/agent-assets/skills/mail/references/examples.md +70 -0
- package/agent-assets/skills/mail/references/providers.md +8 -8
- package/agent-assets/skills/managed-tasks/SKILL.md +472 -0
- package/agent-assets/skills/managed-tasks/references/errors.md +73 -0
- package/agent-assets/skills/managed-tasks/references/output-path.md +75 -0
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +86 -0
- package/agent-assets/skills/management-policy/SKILL.md +54 -125
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +101 -0
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +10 -82
- package/agent-assets/skills/notify/references/priority.md +65 -0
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
- package/agent-assets/skills/notion/SKILL.md +6 -10
- package/agent-assets/skills/notion/SKILL.native.claude.md +11 -8
- package/agent-assets/skills/notion/SKILL.native.codex.md +10 -6
- package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -6
- package/agent-assets/skills/observations/SKILL.md +25 -14
- package/agent-assets/skills/project-doc/SKILL.md +2 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +12 -2
- package/agent-assets/skills/reading/references/reading-taste.md +2 -2
- package/agent-assets/skills/roadmap/SKILL.md +43 -141
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +100 -0
- package/agent-assets/skills/roadmap/references/cross-check.md +80 -0
- package/agent-assets/skills/roadmap/references/migration.md +56 -0
- package/agent-assets/skills/roadmap/references/preparation-timeline.md +2 -2
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +76 -104
- package/agent-assets/skills/schedule/references/batch.md +93 -0
- package/agent-assets/skills/schedule/references/errors.md +217 -0
- package/agent-assets/skills/schedule/references/model-selection.md +96 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +86 -0
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +59 -51
- package/agent-assets/skills/today/SKILL.md +32 -62
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +114 -0
- package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
- package/agent-assets/skills/user-interview/SKILL.md +23 -67
- package/agent-assets/skills/user-interview/references/op-briefing.md +51 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +59 -0
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
- package/agent-assets/skills/user-profile/SKILL.md +54 -74
- package/agent-assets/skills/user-profile/curation.json +2 -2
- package/agent-assets/skills/user-profile/references/character-preferences.md +83 -0
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +30 -2
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -5
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-graduate/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +0 -1
- package/agent-assets/system-prompts/routine-fetch-window.md +78 -0
- package/agent-assets/system-prompts/skill-index-instruction.md +26 -0
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +20 -11
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +18 -9
- package/agent-assets/task-flows/_partials/capture-user-info.md +24 -0
- package/agent-assets/task-flows/_partials/confirm-subflow.md +68 -0
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +35 -0
- package/agent-assets/task-flows/_partials/dm-intent.project.md +391 -0
- package/agent-assets/task-flows/_partials/mail-acquire.gmail.md +20 -11
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +18 -9
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +26 -15
- package/agent-assets/task-flows/browser_task.md +84 -0
- 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.workflow_run.failed.md +2 -2
- package/agent-assets/task-flows/knowledge.import.md +15 -15
- package/agent-assets/task-flows/message.received.dm.md +20 -17
- package/agent-assets/task-flows/message.received.dm_first.md +11 -15
- package/agent-assets/task-flows/routine.custom.md +6 -4
- package/agent-assets/task-flows/routine.evening_review.md +46 -170
- package/agent-assets/task-flows/routine.fetch_window.md +19 -14
- package/agent-assets/task-flows/routine.hourly_check.md +27 -15
- package/agent-assets/task-flows/routine.hourly_check.triage.md +1 -1
- package/agent-assets/task-flows/routine.monthly_review.md +67 -25
- package/agent-assets/task-flows/routine.morning_routine_journal.md +135 -0
- package/agent-assets/task-flows/routine.morning_routine_today.md +673 -0
- package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
- package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
- package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
- package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
- package/agent-assets/task-flows/routine.roadmap_refresh.md +68 -23
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +19 -20
- package/agent-assets/task-flows/routine.weekly_review.md +370 -86
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +13 -13
- package/agent-assets/task-flows/scheduled.task.md +9 -9
- package/agent-assets/task-flows/setup.initial.md +171 -251
- package/agent-assets/task-flows/setup.update.md +2 -2
- package/agent-assets/task-flows/wiki.ingest_url.md +1 -1
- package/agent-assets/templates/README.md +27 -20
- package/agent-assets/templates/_index.md +42 -26
- package/agent-assets/templates/_manifest.json +34 -99
- package/agent-assets/templates/{user → identity}/_index.md +1 -1
- package/agent-assets/templates/identity/expertise.md +9 -0
- package/agent-assets/templates/identity/goals.md +9 -0
- package/agent-assets/templates/identity/people.md +13 -0
- package/agent-assets/templates/identity/personal.md +9 -0
- package/agent-assets/templates/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/identity/work.md +9 -0
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +2 -2
- package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
- package/agent-assets/templates/policies/_index.md +21 -0
- package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
- package/agent-assets/templates/policies/journal-format.md +168 -0
- package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
- package/agent-assets/templates/{rules → policies}/management.md +3 -3
- package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
- package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
- package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
- package/bin/aitne.mjs +21 -5
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +63 -5
- package/scripts/commands/run-now.mjs +187 -0
- package/scripts/commands/verify.mjs +264 -0
- package/scripts/lib/ports.d.mts +27 -0
- package/scripts/lib/ports.mjs +36 -0
- package/scripts/lib/read-api-token.mjs +176 -0
- package/scripts/start.mjs +2 -1
- package/agent-assets/docs/features/lifestyle/travel-time.md +0 -52
- package/agent-assets/docs/features/routines/monthly-review.md +0 -65
- package/agent-assets/skills/management-task-modify/SKILL.md +0 -203
- package/agent-assets/skills/management-task-register/SKILL.md +0 -330
- package/agent-assets/skills/management-task-stop/SKILL.md +0 -166
- package/agent-assets/skills/receipts/SKILL.md +0 -134
- package/agent-assets/skills/travel/SKILL.md +0 -132
- package/agent-assets/skills/travel-time/SKILL.md +0 -158
- package/agent-assets/task-flows/routine.morning_routine.md +0 -322
- package/agent-assets/task-flows/routine.morning_routine_initial.md +0 -204
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- package/agent-assets/templates/rules/journal-format.md +0 -61
- package/agent-assets/templates/user/expertise.md +0 -7
- package/agent-assets/templates/user/goals.md +0 -7
- package/agent-assets/templates/user/people.md +0 -7
- package/agent-assets/templates/user/personal.md +0 -7
- package/agent-assets/templates/user/work.md +0 -7
- /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
- /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
- /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
- /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
- /package/agent-assets/templates/{today.md → state/today.md} +0 -0
|
@@ -7,6 +7,8 @@ aliases:
|
|
|
7
7
|
- observation
|
|
8
8
|
- polling
|
|
9
9
|
- hourly check
|
|
10
|
+
- observation queue
|
|
11
|
+
- phase 9
|
|
10
12
|
category: concepts
|
|
11
13
|
summary: |
|
|
12
14
|
Observations are change records the polling integrations write into
|
|
@@ -17,22 +19,52 @@ tags:
|
|
|
17
19
|
- core
|
|
18
20
|
- observations
|
|
19
21
|
- polling
|
|
22
|
+
- integrations
|
|
23
|
+
- routines
|
|
20
24
|
status: stable
|
|
21
25
|
ask_examples:
|
|
22
26
|
- What is an observation?
|
|
23
27
|
- Why doesn't the agent message me on every git commit?
|
|
24
28
|
- How does the hourly check use observations?
|
|
29
|
+
- Where does the routine pre-pass write observations?
|
|
25
30
|
locale: en-US
|
|
26
31
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-05-28
|
|
28
33
|
keywords:
|
|
29
34
|
- observation
|
|
35
|
+
- observations
|
|
30
36
|
- polling
|
|
31
37
|
- hourly check
|
|
32
38
|
- phase 9
|
|
39
|
+
- routine.fetch_window
|
|
40
|
+
- pre-pass
|
|
41
|
+
- AgentWriteTracker
|
|
42
|
+
- contentHash
|
|
43
|
+
- recordObservation
|
|
44
|
+
- observation queue
|
|
45
|
+
- dedupe
|
|
33
46
|
related:
|
|
34
47
|
- features/routines/hourly-check
|
|
48
|
+
- features/routines/morning-routine
|
|
35
49
|
- concepts/process-keys
|
|
50
|
+
- concepts/routines
|
|
51
|
+
- features/integrations/git
|
|
52
|
+
- features/integrations/obsidian
|
|
53
|
+
ui_anchors:
|
|
54
|
+
- /activity
|
|
55
|
+
process_keys:
|
|
56
|
+
- routine.hourly_check
|
|
57
|
+
- routine.fetch_window
|
|
58
|
+
config_keys:
|
|
59
|
+
- hourlyCheckIntervalMinutes
|
|
60
|
+
- hourlyCheckPrePassFreshnessMinutes
|
|
61
|
+
api_endpoints:
|
|
62
|
+
- POST /api/observations
|
|
63
|
+
- GET /api/observations
|
|
64
|
+
- POST /api/observations/consume
|
|
65
|
+
context_files:
|
|
66
|
+
- packages/daemon/src/core/routine-windows.ts
|
|
67
|
+
- packages/daemon/src/api/routes/observations.ts
|
|
36
68
|
---
|
|
37
69
|
|
|
38
70
|
# Observations
|
|
@@ -45,13 +77,15 @@ SQLite. A single `routine.hourly_check` consumes the queue and decides
|
|
|
45
77
|
what is worth surfacing.
|
|
46
78
|
|
|
47
79
|
Since 2026-05, observations have a **second writer**: every main
|
|
48
|
-
routine (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
80
|
+
routine (`routine.morning_routine`, `routine.today_refresh`,
|
|
81
|
+
`routine.hourly_check`, `routine.evening_review`,
|
|
82
|
+
`routine.weekly_review`) is preceded by a lite-tier
|
|
83
|
+
`routine.fetch_window` pre-pass that fetches mail / calendar / Notion
|
|
84
|
+
windows and POSTs them to `/api/observations`.
|
|
85
|
+
(`routine.monthly_review` has no pre-pass window.) The main routine
|
|
86
|
+
then reads them via the same `pending=true` queue that the polling
|
|
87
|
+
path feeds. Observation rows look identical regardless of which writer
|
|
88
|
+
produced them — the distinction is invisible to downstream consumers.
|
|
55
89
|
|
|
56
90
|
## Why This Concept Exists
|
|
57
91
|
|
|
@@ -63,6 +97,18 @@ up to something the operator should hear about.
|
|
|
63
97
|
|
|
64
98
|
## Definitions
|
|
65
99
|
|
|
100
|
+
**Two writer paths feed one queue.** Observations enter the
|
|
101
|
+
`observations` table from two places, and downstream consumers cannot
|
|
102
|
+
tell them apart:
|
|
103
|
+
|
|
104
|
+
1. **Background pollers** (Obsidian, Git, GitHub, Notion, Calendar,
|
|
105
|
+
Mail) call `recordObservation` when they detect a change.
|
|
106
|
+
2. **The pre-pass** — the lite-tier `routine.fetch_window` session
|
|
107
|
+
spawned ahead of each main routine — POSTs mail / calendar / Notion
|
|
108
|
+
windows to `/api/observations`.
|
|
109
|
+
|
|
110
|
+
Both write rows of the same shape; the consumer reads the merged queue.
|
|
111
|
+
|
|
66
112
|
- **Observation**: one row in the `observations` table.
|
|
67
113
|
- **Actor**: who caused the change. `actor='agent'` rows are filtered
|
|
68
114
|
out by the consumer (anti-loop).
|
|
@@ -76,9 +122,10 @@ up to something the operator should hear about.
|
|
|
76
122
|
session spawned by each main routine's dispatcher. Fetches a
|
|
77
123
|
per-routine window (`ROUTINE_WINDOWS` in
|
|
78
124
|
`packages/daemon/src/core/routine-windows.ts`) for each enabled
|
|
79
|
-
mail / calendar / Notion integration and POSTs
|
|
80
|
-
server computes `contentHash` from
|
|
81
|
-
unchanged item written twice in the same
|
|
125
|
+
mail / calendar / Notion integration and POSTs the results to
|
|
126
|
+
`/api/observations`. The server computes `contentHash` from
|
|
127
|
+
`(source, payload)`, so an unchanged item written twice in the same
|
|
128
|
+
cadence dedupes to a 409.
|
|
82
129
|
|
|
83
130
|
## Concrete Examples
|
|
84
131
|
|
|
@@ -94,5 +141,8 @@ up to something the operator should hear about.
|
|
|
94
141
|
## Related
|
|
95
142
|
|
|
96
143
|
- [Hourly Check](../features/routines/hourly-check.md)
|
|
144
|
+
- [Morning Routine](../features/routines/morning-routine.md)
|
|
145
|
+
- [Process Keys](./process-keys.md)
|
|
146
|
+
- [Routines](./routines.md)
|
|
97
147
|
- [Git](../features/integrations/git.md)
|
|
98
148
|
- [Obsidian](../features/integrations/obsidian.md)
|
|
@@ -16,22 +16,54 @@ section: process-keys
|
|
|
16
16
|
tags:
|
|
17
17
|
- core
|
|
18
18
|
- dispatch
|
|
19
|
+
- backends
|
|
20
|
+
- routing
|
|
19
21
|
status: stable
|
|
20
22
|
ask_examples:
|
|
21
23
|
- What is a ProcessKey?
|
|
22
24
|
- Where can I see all the ProcessKeys?
|
|
23
25
|
- How do I change which model handles a ProcessKey?
|
|
26
|
+
- What is the difference between configurable and fixed ProcessKeys?
|
|
24
27
|
locale: en-US
|
|
25
28
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-05-28
|
|
27
30
|
keywords:
|
|
28
31
|
- process key
|
|
32
|
+
- ProcessKey
|
|
29
33
|
- dispatch
|
|
30
34
|
- routing
|
|
35
|
+
- tier
|
|
36
|
+
- CONFIGURABLE_PROCESS_KEYS
|
|
37
|
+
- DEFAULT_PROCESS_TIERS
|
|
38
|
+
- REACTIVE_PROCESS_KEYS
|
|
39
|
+
- TIER_LOCKED_PROCESS_KEYS
|
|
40
|
+
- PROCESS_TO_EVENT_TYPE
|
|
41
|
+
- routine.morning_routine
|
|
42
|
+
- message.dm
|
|
43
|
+
- dashboard.chat
|
|
31
44
|
related:
|
|
32
45
|
- concepts/backends-and-tiers
|
|
33
46
|
- concepts/skills
|
|
34
47
|
- reference/process-keys
|
|
48
|
+
- features/operations/backend-routing
|
|
49
|
+
process_keys:
|
|
50
|
+
- routine.morning_routine
|
|
51
|
+
- routine.morning_routine_today
|
|
52
|
+
- routine.morning_routine_journal
|
|
53
|
+
- routine.evening_review
|
|
54
|
+
- routine.hourly_check
|
|
55
|
+
- routine.fetch_window
|
|
56
|
+
- routine.hourly_check.triage
|
|
57
|
+
- message.dm
|
|
58
|
+
- message.mention
|
|
59
|
+
- dashboard.chat
|
|
60
|
+
- dashboard.docs_qa
|
|
61
|
+
- agent.task
|
|
62
|
+
- agent.dm_task
|
|
63
|
+
- delegated_task
|
|
64
|
+
- delegated_task_heavy
|
|
65
|
+
ui_anchors:
|
|
66
|
+
- /settings/models
|
|
35
67
|
---
|
|
36
68
|
|
|
37
69
|
# ProcessKeys
|
|
@@ -54,32 +86,49 @@ those subsystems.
|
|
|
54
86
|
## Definitions
|
|
55
87
|
|
|
56
88
|
- **CONFIGURABLE_PROCESS_KEYS**: the set the operator can override per
|
|
57
|
-
backend on `/settings/models`.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- **
|
|
89
|
+
backend on `/settings/models`. The rest (`delegated_task`, `setup`,
|
|
90
|
+
`schedule.approaching`, …) use fixed defaults and are not surfaced
|
|
91
|
+
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 (including `routine.custom.<slug>`) 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`.
|
|
61
102
|
- **PROCESS_TO_EVENT_TYPE**: maps a ProcessKey to the skill manifest
|
|
62
|
-
key.
|
|
103
|
+
key, so the skills compiler can pick the right tool set.
|
|
63
104
|
|
|
64
105
|
## Concrete Examples
|
|
65
106
|
|
|
66
|
-
- Routines
|
|
107
|
+
- **Routines:** `routine.morning_routine` is the parent envelope read by
|
|
108
|
+
the pre-routine gate; the actual work runs as two parallel split keys
|
|
109
|
+
— `routine.morning_routine_today` (Stage A, today.md, medium) and
|
|
110
|
+
`routine.morning_routine_journal` (Stage B, daily journal, lite). Also
|
|
67
111
|
`routine.evening_review`, `routine.weekly_review`,
|
|
68
|
-
`routine.
|
|
69
|
-
`routine.
|
|
70
|
-
`routine.
|
|
71
|
-
-
|
|
112
|
+
`routine.hourly_check`, `routine.roadmap_refresh`,
|
|
113
|
+
`routine.today_refresh`, `routine.user_profile_sweep`.
|
|
114
|
+
`routine.morning_routine_initial` was retired (2026-05-16) — the
|
|
115
|
+
first-run branch now routes through `routine.morning_routine`.
|
|
116
|
+
- **Routine sub-jobs** (lite tier, dispatcher-spawned, not user-facing):
|
|
72
117
|
`routine.fetch_window` (pre-pass mail/calendar/Notion fetcher that
|
|
73
118
|
runs before each main routine and POSTs observations) and
|
|
74
119
|
`routine.hourly_check.triage` (Stage 2 escalate-vs-log-only gate
|
|
75
120
|
inside the hourly check).
|
|
76
|
-
- Custom routines
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
121
|
+
- **Custom routines:** `routine.custom.<slug>` (kebab-case slug;
|
|
122
|
+
defaults to medium tier).
|
|
123
|
+
- **Messaging:** `message.dm`, `message.mention`
|
|
124
|
+
- **Dashboard:** `dashboard.chat`, `dashboard.docs_qa`
|
|
125
|
+
- **Scheduled / external:** `agent.task` (recurring schedules),
|
|
80
126
|
`agent.dm_task` (DM-tone scheduled briefings),
|
|
81
|
-
`schedule.approaching`, `calendar.change`, `gmail_classify`,
|
|
82
|
-
|
|
127
|
+
`schedule.approaching`, `calendar.change`, `gmail_classify`, `setup`
|
|
128
|
+
- **Delegated work:** `delegated_task` (lite) and `delegated_task_heavy`
|
|
129
|
+
— the only high-tier key, opt-in via the `delegatedTaskHeavyEnabled`
|
|
130
|
+
config flag. No install-time surface defaults to `high`; operators
|
|
131
|
+
pin high per-row on `/settings/models`.
|
|
83
132
|
|
|
84
133
|
## Where You See It in the Dashboard
|
|
85
134
|
|
|
@@ -7,29 +7,40 @@ aliases:
|
|
|
7
7
|
- autonomous routines
|
|
8
8
|
- cron
|
|
9
9
|
- scheduled work
|
|
10
|
+
- routine pre-pass
|
|
11
|
+
- morning routine
|
|
12
|
+
- evening review
|
|
10
13
|
category: concepts
|
|
11
14
|
summary: |
|
|
12
15
|
Routines are the autonomous, scheduled tasks Aitne runs on
|
|
13
|
-
its own — morning routine, evening review, hourly check, weekly
|
|
14
|
-
|
|
16
|
+
its own — morning routine, evening review, hourly check, weekly
|
|
17
|
+
retro, plus any custom routines you define.
|
|
15
18
|
section: routines
|
|
16
19
|
tags:
|
|
17
20
|
- core
|
|
18
|
-
-
|
|
21
|
+
- routines
|
|
19
22
|
- autonomous
|
|
23
|
+
- scheduler
|
|
20
24
|
status: stable
|
|
21
25
|
ask_examples:
|
|
22
26
|
- What routines does the agent run automatically?
|
|
23
27
|
- How do I disable a routine?
|
|
24
28
|
- Can I add my own routine?
|
|
29
|
+
- What is the routine pre-pass fetcher?
|
|
30
|
+
- Which routine uses the high tier by default?
|
|
25
31
|
locale: en-US
|
|
26
32
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
33
|
+
updated: 2026-05-28
|
|
28
34
|
keywords:
|
|
29
35
|
- routine
|
|
36
|
+
- routines
|
|
30
37
|
- cron
|
|
31
38
|
- autonomous
|
|
32
39
|
- scheduler
|
|
40
|
+
- routine.fetch_window
|
|
41
|
+
- pre-pass
|
|
42
|
+
- dayBoundaryHour
|
|
43
|
+
- hourly check
|
|
33
44
|
related:
|
|
34
45
|
- features/routines/morning-routine
|
|
35
46
|
- features/routines/evening-review
|
|
@@ -37,9 +48,29 @@ related:
|
|
|
37
48
|
- features/routines/hourly-check
|
|
38
49
|
- features/routines/custom-routines
|
|
39
50
|
- concepts/process-keys
|
|
51
|
+
- concepts/observations
|
|
40
52
|
ui_anchors:
|
|
41
53
|
- /connections/routines
|
|
42
54
|
- /settings/routines
|
|
55
|
+
process_keys:
|
|
56
|
+
- routine.morning_routine
|
|
57
|
+
- routine.morning_routine_today
|
|
58
|
+
- routine.morning_routine_journal
|
|
59
|
+
- routine.evening_review
|
|
60
|
+
- routine.weekly_review
|
|
61
|
+
- routine.monthly_review
|
|
62
|
+
- routine.hourly_check
|
|
63
|
+
- routine.today_refresh
|
|
64
|
+
- routine.fetch_window
|
|
65
|
+
- routine.hourly_check.triage
|
|
66
|
+
config_keys:
|
|
67
|
+
- dayBoundaryHour
|
|
68
|
+
- hourlyCheckEnabled
|
|
69
|
+
- hourlyCheckIntervalMinutes
|
|
70
|
+
- hourlyCheckActiveStartHour
|
|
71
|
+
- hourlyCheckActiveEndHour
|
|
72
|
+
- hourlyCheckPrePassFreshnessMinutes
|
|
73
|
+
- monthlyReviewEnabled
|
|
43
74
|
---
|
|
44
75
|
|
|
45
76
|
# Routines
|
|
@@ -48,9 +79,10 @@ ui_anchors:
|
|
|
48
79
|
|
|
49
80
|
A routine is a unit of agent work that runs on a schedule, not in
|
|
50
81
|
response to a message. The morning routine fires once per agent day at
|
|
51
|
-
`dayBoundaryHour`; evening
|
|
52
|
-
|
|
53
|
-
on a
|
|
82
|
+
`dayBoundaryHour`; the evening review (18:00 daily), weekly review
|
|
83
|
+
(Friday 19:00), and optional monthly review fire on fixed schedules in
|
|
84
|
+
code; the hourly check coalesces accumulated observations on a
|
|
85
|
+
configurable cadence.
|
|
54
86
|
|
|
55
87
|
## Why This Concept Exists
|
|
56
88
|
|
|
@@ -70,45 +102,58 @@ DM is who fired the event.
|
|
|
70
102
|
a ProcessKey starting with `routine.`.
|
|
71
103
|
- **Agent day**: the 24-hour window starting at `dayBoundaryHour`
|
|
72
104
|
(default 04:00) — see [Agent Day](agent-day.md).
|
|
73
|
-
- **Catch-up**: if the daemon was offline at the trigger time,
|
|
74
|
-
|
|
75
|
-
the
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Claude). The lite (Haiku) tier
|
|
81
|
-
|
|
82
|
-
|
|
105
|
+
- **Catch-up**: if the daemon was offline at the trigger time, a
|
|
106
|
+
boot-time check re-fires any routine whose window has already
|
|
107
|
+
opened but never ran (morning routine within the agent day; evening
|
|
108
|
+
review once it is past 18:00; weekly review across Fri–Sun). It never
|
|
109
|
+
double-fires a routine that already succeeded.
|
|
110
|
+
- **Tier policy**: **no routine runs the high tier by default.** Every
|
|
111
|
+
recurring routine — morning, evening, weekly, hourly check —
|
|
112
|
+
defaults to **medium** (Sonnet on Claude). The **lite** (Haiku) tier
|
|
113
|
+
is reserved for the morning routine's Stage B and for mechanical
|
|
114
|
+
sub-jobs (the hourly-check triage gate and the pre-pass fetcher). The
|
|
115
|
+
only high-tier ProcessKey in the whole system is `delegated_task_heavy`,
|
|
116
|
+
which is opt-in and not a routine. See
|
|
117
|
+
[Backends and Tiers](backends-and-tiers.md).
|
|
118
|
+
- **Two-stage morning routine**: the morning routine runs as a parent
|
|
119
|
+
envelope `routine.morning_routine` (medium) that fans out two stages
|
|
120
|
+
in parallel — Stage A `routine.morning_routine_today` (medium, builds
|
|
121
|
+
`state/today.md`) and Stage B `routine.morning_routine_journal` (lite,
|
|
122
|
+
authors the previous day's journal). The legacy heavy-tier
|
|
123
|
+
`routine.morning_routine_initial` first-run branch was retired in
|
|
124
|
+
Phase 7 (2026-05-16); a first run is now detected inline from a
|
|
125
|
+
missing `state/yesterday.md` and handled by the same medium-tier
|
|
126
|
+
parent with a daemon-prepared `<roadmap_skeleton>` block.
|
|
83
127
|
- **Pre-pass fetcher**: each main routine that needs fresh mail /
|
|
84
128
|
calendar / Notion data is preceded by a lite-tier
|
|
85
129
|
`routine.fetch_window` session that fetches the relevant window and
|
|
86
|
-
POSTs observations. The main routine consumes the resulting
|
|
87
|
-
`<fetch_report>` block plus pending observations instead of
|
|
88
|
-
|
|
89
|
-
introduced in 2026-05.
|
|
130
|
+
POSTs observations. The main routine then consumes the resulting
|
|
131
|
+
`<fetch_report>` block plus pending observations instead of hitting
|
|
132
|
+
upstream APIs itself — a cost-savings split introduced in 2026-05.
|
|
90
133
|
|
|
91
134
|
## Concrete Examples
|
|
92
135
|
|
|
93
136
|
| ProcessKey | When | Tier |
|
|
94
137
|
|---|---|---|
|
|
95
|
-
| `routine.
|
|
96
|
-
| `routine.
|
|
97
|
-
| `routine.
|
|
138
|
+
| `routine.morning_routine` | `dayBoundaryHour` daily (parent envelope; first-run branch detected inline from missing `state/yesterday.md`) | medium |
|
|
139
|
+
| `routine.morning_routine_today` | Stage A of every morning routine (today.md synthesis + roadmap maintenance + schedule fan-out) | medium |
|
|
140
|
+
| `routine.morning_routine_journal` | Stage B of every morning routine (`journal/daily/<yesterday>.md` authoring) | lite |
|
|
98
141
|
| `routine.evening_review` | 18:00 daily (fixed) | medium |
|
|
142
|
+
| `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** (`monthlyReviewEnabled`) | medium |
|
|
99
144
|
| `routine.hourly_check` | Every `hourlyCheckIntervalMinutes` (default 60) inside the active window | medium |
|
|
100
|
-
| `routine.
|
|
101
|
-
| `routine.
|
|
102
|
-
| `routine.fetch_window` | Spawned before each routine above (except monthly) | lite |
|
|
145
|
+
| `routine.today_refresh` | On calendar drift or a dashboard "refresh today" request (not a fixed cron) | medium |
|
|
146
|
+
| `routine.fetch_window` | Spawned before each routine above that needs fresh upstream data | lite |
|
|
103
147
|
| `routine.hourly_check.triage` | Stage 2 gate of every hourly check | lite |
|
|
104
|
-
| `routine.custom.<slug>` | Operator-defined recurrence |
|
|
148
|
+
| `routine.custom.<slug>` | Operator-defined recurrence | medium (override per routine via `backend_tier`) |
|
|
105
149
|
|
|
106
150
|
## Where You See It in the Dashboard
|
|
107
151
|
|
|
108
|
-
- **Settings → Routines** is where the hourly check active window
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
152
|
+
- **Settings → Routines** is where the hourly check active window
|
|
153
|
+
(`hourlyCheckActiveStartHour` / `hourlyCheckActiveEndHour`), the
|
|
154
|
+
hourly check cadence (`hourlyCheckIntervalMinutes`), and any custom
|
|
155
|
+
routines live. Morning, evening, weekly, and monthly fire times are
|
|
156
|
+
fixed in code and not surfaced here.
|
|
112
157
|
- **Connections → Routines** is the unified view of next-fire times.
|
|
113
158
|
- **Activity** logs each routine run with its outcome.
|
|
114
159
|
|
|
@@ -19,7 +19,8 @@ section: safety
|
|
|
19
19
|
tags:
|
|
20
20
|
- core
|
|
21
21
|
- safety
|
|
22
|
-
-
|
|
22
|
+
- operations
|
|
23
|
+
- backends
|
|
23
24
|
status: stable
|
|
24
25
|
ask_examples:
|
|
25
26
|
- What is the difference between Safe and Allow mode?
|
|
@@ -27,7 +28,7 @@ ask_examples:
|
|
|
27
28
|
- How do I see what tools the agent is allowed to use?
|
|
28
29
|
locale: en-US
|
|
29
30
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-05-28
|
|
31
32
|
keywords:
|
|
32
33
|
- safety
|
|
33
34
|
- safe mode
|
|
@@ -35,18 +36,23 @@ keywords:
|
|
|
35
36
|
- absolute block
|
|
36
37
|
- disallowed tools
|
|
37
38
|
- approval
|
|
39
|
+
- execution mode
|
|
40
|
+
- risk tier
|
|
38
41
|
related:
|
|
42
|
+
- concepts/safety-model
|
|
39
43
|
- concepts/skills
|
|
40
44
|
- features/operations/approvals
|
|
41
45
|
- reference/disallowed-tools
|
|
42
46
|
ui_anchors:
|
|
43
47
|
- /settings/advanced
|
|
48
|
+
- /settings/models
|
|
44
49
|
config_keys:
|
|
45
50
|
- disallowedTools
|
|
46
51
|
- allowedToolsOverride
|
|
47
52
|
- claudeExecutionPermissionMode
|
|
48
53
|
- codexExecutionPermissionMode
|
|
49
54
|
- geminiExecutionPermissionMode
|
|
55
|
+
- opencodeExecutionPermissionMode
|
|
50
56
|
---
|
|
51
57
|
|
|
52
58
|
# Safety and Execution Modes
|
|
@@ -57,10 +63,13 @@ Three layers gate what the agent can do:
|
|
|
57
63
|
|
|
58
64
|
1. **Skill `allowed-tools`** — the visible toolset for that session.
|
|
59
65
|
2. **Execution mode** — Safe (strict permission checks, sandboxes)
|
|
60
|
-
or Allow (SDK bypass, sandbox off).
|
|
61
|
-
3. **Always-disallowed** — a hard floor. Recursive deletes, sudo
|
|
66
|
+
or Allow (SDK bypass, sandbox off). Set per-backend.
|
|
67
|
+
3. **Always-disallowed** — a hard floor. Recursive deletes, `sudo`,
|
|
62
68
|
secret-file reads / writes are denied unconditionally regardless
|
|
63
|
-
of mode.
|
|
69
|
+
of mode, and neither a skill nor Allow mode can widen past it.
|
|
70
|
+
|
|
71
|
+
A fourth idea — the **risk tier** — sits on top of the daemon API and
|
|
72
|
+
decides whether a *write* runs on its own or waits for your approval.
|
|
64
73
|
|
|
65
74
|
## Why This Concept Exists
|
|
66
75
|
|
|
@@ -72,37 +81,57 @@ disallowed-tools floor.
|
|
|
72
81
|
|
|
73
82
|
## Definitions
|
|
74
83
|
|
|
75
|
-
- **Safe mode**: the default. Strict permission checks,
|
|
76
|
-
|
|
84
|
+
- **Safe mode**: the default. Strict permission checks, plus a
|
|
85
|
+
backend-specific enforcement layer — Claude curl/jq hooks, the Codex
|
|
86
|
+
workspace-write sandbox, the Gemini whitelist TOML, and the OpenCode
|
|
87
|
+
permission block.
|
|
77
88
|
- **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
|
|
78
|
-
TOML. The absolute-block layer still holds
|
|
89
|
+
TOML. The absolute-block layer still holds in Allow mode, so the
|
|
90
|
+
destructive-ops floor never opens. Set independently per backend, so
|
|
91
|
+
one backend can run Allow while the others stay Safe.
|
|
79
92
|
- **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
|
|
80
93
|
in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
|
|
81
94
|
by config, or by allow-mode.
|
|
82
|
-
- **Risk tier**:
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
- **Risk tier**: every daemon-API operation carries one of three tiers —
|
|
96
|
+
`autonomous`, `read_sensitive`, or `approve`. *Autonomous* runs without a
|
|
97
|
+
prompt. *Read-sensitive* reads (email, calendar, notes, context files) are
|
|
98
|
+
the same blast radius as autonomous but are gated by a read token when
|
|
99
|
+
`enforceReadToken` is on. *Approve* is blocked until you confirm with a
|
|
100
|
+
bearer token (the dashboard does this when you click Approve). There is no
|
|
101
|
+
separate "notify" tier — that behaviour now lives in the skill prompts: for
|
|
102
|
+
potentially destructive actions the agent DMs you first, then proceeds. See
|
|
103
|
+
[Safety model](safety-model.md) for the full taxonomy.
|
|
85
104
|
|
|
86
105
|
## Concrete Examples
|
|
87
106
|
|
|
88
|
-
|
|
107
|
+
The daemon API is the agent's only write path, so most of its own writes are
|
|
108
|
+
`autonomous` (the memory chokepoint validates and snapshots them). The
|
|
109
|
+
absolute-block layer and Approve tier are where the agent is actually stopped.
|
|
110
|
+
|
|
111
|
+
| Action | What gates it |
|
|
89
112
|
|---|---|
|
|
90
|
-
| Read `today.md` | read |
|
|
91
|
-
| Append to `agent
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
| `chmod` on a daemon-owned file |
|
|
113
|
+
| Read `state/today.md` | `read_sensitive` (read token if `enforceReadToken`) |
|
|
114
|
+
| Append to `journal/agent.md` | `autonomous` — daemon API write |
|
|
115
|
+
| Update `plans/roadmap.md` | `autonomous`, plus a roadmap write-lock |
|
|
116
|
+
| Send a DM | `autonomous`; destructive follow-ups DM you first |
|
|
117
|
+
| Configure an automation trigger | `approve` — needs a bearer token |
|
|
118
|
+
| `chmod` on a daemon-owned file | Safe-mode disallowed (allowed in Allow mode) |
|
|
119
|
+
| Recursive delete (`rm -rf`), `sudo`, secret-file read | absolute-block (refused in both modes) |
|
|
96
120
|
|
|
97
121
|
## Where You See It in the Dashboard
|
|
98
122
|
|
|
99
|
-
- **Settings → Advanced** holds `disallowedTools
|
|
100
|
-
|
|
101
|
-
- **
|
|
123
|
+
- **Settings → Advanced** holds the `disallowedTools` and
|
|
124
|
+
`allowedToolsOverride` tool-policy lists.
|
|
125
|
+
- **Settings → Models & Cost** holds the per-backend Safe / Allow
|
|
126
|
+
**Execution Mode** switch (you can also set it in the setup wizard).
|
|
127
|
+
- **Activity** logs every absolute-blocked tool call as
|
|
128
|
+
`action_type='blocked_absolute'`.
|
|
102
129
|
- **Approvals** is where Approve-tier actions queue when they fire.
|
|
103
130
|
|
|
104
131
|
## Related
|
|
105
132
|
|
|
133
|
+
- [Safety model](safety-model.md) — the full risk-tier taxonomy and where
|
|
134
|
+
each API endpoint is classified.
|
|
106
135
|
- [Skills](skills.md) — where each session's per-task `allowed-tools` lives.
|
|
107
136
|
- [Approvals](../features/operations/approvals.md) — the operator-side
|
|
108
137
|
surface for Approve-tier actions.
|