@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
|
@@ -12,19 +12,20 @@ aliases:
|
|
|
12
12
|
- on-demand retrospective
|
|
13
13
|
category: concepts
|
|
14
14
|
summary: |
|
|
15
|
-
Aitne's
|
|
16
|
-
actions run autonomously, a small set of posture-changing
|
|
17
|
-
require explicit Approve. The previous Notify tier (DM the
|
|
18
|
-
before / during a write) was abolished — the operator's
|
|
19
|
-
list is now the primary defense, and "what did the
|
|
20
|
-
answered on demand via `GET /api/agent/actions` instead
|
|
21
|
-
a daily digest.
|
|
15
|
+
Aitne's risk classifier dropped from three write tiers to two: most
|
|
16
|
+
actions run autonomously, and a small set of posture-changing
|
|
17
|
+
operations require explicit Approve. The previous Notify tier (DM the
|
|
18
|
+
operator before / during a write) was abolished — the operator's
|
|
19
|
+
`deniedTools` list is now the primary defense, and "what did the
|
|
20
|
+
agent do?" is answered on demand via `GET /api/agent/actions` instead
|
|
21
|
+
of pushed as a daily digest. (The read-gating `ReadSensitive` tier is
|
|
22
|
+
unchanged.)
|
|
22
23
|
section: safety
|
|
23
24
|
tags:
|
|
24
25
|
- core
|
|
25
26
|
- safety
|
|
26
27
|
- integrations
|
|
27
|
-
-
|
|
28
|
+
- audit
|
|
28
29
|
status: stable
|
|
29
30
|
ask_examples:
|
|
30
31
|
- Why doesn't the agent ask before sending an email anymore?
|
|
@@ -33,7 +34,7 @@ ask_examples:
|
|
|
33
34
|
- Where do I see what the agent has been doing?
|
|
34
35
|
locale: en-US
|
|
35
36
|
created: 2026-04-26
|
|
36
|
-
updated: 2026-
|
|
37
|
+
updated: 2026-05-28
|
|
37
38
|
keywords:
|
|
38
39
|
- deniedTools
|
|
39
40
|
- safety floor
|
|
@@ -50,10 +51,16 @@ related:
|
|
|
50
51
|
- reference/disallowed-tools
|
|
51
52
|
ui_anchors:
|
|
52
53
|
- /connections
|
|
53
|
-
- /
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
54
|
+
- /connections/mail
|
|
55
|
+
- /connections/calendar
|
|
56
|
+
- /analytics
|
|
57
|
+
api_endpoints:
|
|
58
|
+
- GET /api/agent/actions
|
|
59
|
+
- POST /api/integrations/:key/exec
|
|
60
|
+
- PATCH /api/integrations/:key
|
|
61
|
+
context_files:
|
|
62
|
+
- policies/integrations.md
|
|
63
|
+
- journal/agent.md
|
|
57
64
|
---
|
|
58
65
|
|
|
59
66
|
# Safety Model (deniedTools + Approve Tier)
|
|
@@ -121,21 +128,27 @@ of "report to me" events. Information about what the agent did is
|
|
|
121
128
|
- **`matchToolPattern`** — pattern matcher used everywhere `deniedTools`
|
|
122
129
|
is enforced. Exact match (`send_email`), prefix glob (`send_*`), or
|
|
123
130
|
bare `*`.
|
|
124
|
-
- **`/api/integrations/:key/
|
|
125
|
-
|
|
131
|
+
- **`/api/integrations/:key/exec`** — the cross-backend chokepoint
|
|
132
|
+
(task mode; the RPC-style `/invoke` route was retired 2026-05-01,
|
|
133
|
+
see `docs/design/17-delegated-mode-v2.md` §4.2). It enforces
|
|
134
|
+
`deniedTools` server-side — see the *Where the Defenses Apply* table
|
|
135
|
+
below for the exact mechanism.
|
|
126
136
|
- **`agent_actions`** — SQLite table of every agent action. Direct +
|
|
127
|
-
cross-backend rows are full-fidelity
|
|
128
|
-
|
|
137
|
+
cross-backend rows are full-fidelity (current cross-backend writes
|
|
138
|
+
emit `delegated_task.run` / `delegated_task.exec` /
|
|
139
|
+
`delegated_task.tool_step`; legacy rows from before 2026-05-01 carry
|
|
140
|
+
`delegated_proxy.invoke`). Same-backend native MCP rolls up to
|
|
141
|
+
`mcp_tool_calls` + the parent session row.
|
|
129
142
|
|
|
130
143
|
## Where the Defenses Apply
|
|
131
144
|
|
|
132
145
|
| Path | Enforcement |
|
|
133
146
|
|---|---|
|
|
134
147
|
| Direct mode (`/api/mail/*`, `/api/calendar/*`) | Route handler middleware checks `deniedTools` against the materialized skill body's `allowed-tools` list (frontmatter). |
|
|
135
|
-
| Cross-backend (`/api/integrations/:key/
|
|
136
|
-
| Same-backend native MCP — Claude | `collectSessionDeniedTools` merges the deny patterns into the SDK's `disallowedTools` array at `query()` time. |
|
|
137
|
-
| Same-backend native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 1000). |
|
|
138
|
-
| Same-backend native MCP — Codex | **Prose-only.** Codex bundles its connector apps into the binary; there is no per-tool deny config and the workspace-write sandbox does not match MCP tool calls. Skill prose lists the denied tools explicitly. Operators who require strict deny on Gmail / Calendar should pick a non-Codex DM backend or
|
|
148
|
+
| Cross-backend (`/api/integrations/:key/exec`) | Invoker filters the integration's `capabilityTools` through `deniedTools` before spawning the delegated backend so the task-mode planner can only pick from the allowed surface. A fully-denied surface short-circuits with `errorClass: "denied_tool"`; individual tool denials surface as the same error from the invoker's `resolveAllowedToolPatterns`. |
|
|
149
|
+
| Same-backend / native MCP — Claude | `collectSessionDeniedTools` merges the deny patterns into the SDK's `disallowedTools` array at `query()` time. Same code path covers both delegated same-backend and native — they share the in-session MCP surface. |
|
|
150
|
+
| Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 1000). |
|
|
151
|
+
| Same-backend / native MCP — Codex | **Prose-only.** Codex bundles its connector apps into the binary; there is no per-tool deny config and the workspace-write sandbox does not match MCP tool calls. Skill prose lists the denied tools explicitly. Operators who require strict deny on Gmail / Calendar should pick a non-Codex DM backend or route those integrations through `delegated` cross-backend mode (which IS deny-enforced at `/exec`). |
|
|
139
152
|
|
|
140
153
|
## Recommended Starter Denylists
|
|
141
154
|
|
|
@@ -211,18 +224,29 @@ When the operator asks "what did you do yesterday?" / "have you sent
|
|
|
211
224
|
anything from Gmail this week?" the agent calls:
|
|
212
225
|
|
|
213
226
|
```bash
|
|
214
|
-
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=
|
|
227
|
+
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.run&kind=delegated_task.tool_step&limit=50'
|
|
215
228
|
```
|
|
216
229
|
|
|
217
230
|
and answers in conversation. The endpoint:
|
|
218
231
|
|
|
219
232
|
- Lives at `Autonomous` tier — the agent reads only its own audit
|
|
220
233
|
trail, no operator data.
|
|
221
|
-
- Accepts `since
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
-
|
|
225
|
-
|
|
234
|
+
- Accepts `since` (ISO-8601; defaults to the last 24h if omitted),
|
|
235
|
+
`kind` (an `action_type` filter — repeat for multiple values, e.g.
|
|
236
|
+
`?kind=a&kind=b`), and `limit` (default 50, max 200).
|
|
237
|
+
- Redacts the free-text `error` / `detail` fields via the standard
|
|
238
|
+
secret-redaction utility before serializing.
|
|
239
|
+
- Returns rows from `agent_actions` only. Same-backend / native MCP
|
|
240
|
+
calls surface as their own `action_type` rows (e.g. `kind=mcp`);
|
|
241
|
+
the per-call detail lives in `mcp_tool_calls`, which this endpoint
|
|
242
|
+
does not join — query it separately if you need step-level fidelity.
|
|
243
|
+
|
|
244
|
+
Common `kind` values for the cross-backend proxy: `delegated_task.run`
|
|
245
|
+
(one row per `/exec` call), `delegated_task.exec` (the planner's
|
|
246
|
+
chosen tool), `delegated_task.tool_step` (each individual tool call
|
|
247
|
+
inside the task). The legacy `delegated_proxy.invoke` rows persist
|
|
248
|
+
from before 2026-05-01 — include them if the `since` window crosses
|
|
249
|
+
that date.
|
|
226
250
|
|
|
227
251
|
This **replaces** the rejected daily-digest pattern. Reasons:
|
|
228
252
|
|
|
@@ -231,7 +255,7 @@ This **replaces** the rejected daily-digest pattern. Reasons:
|
|
|
231
255
|
- The operator does not have to manage the agent's reporting calendar.
|
|
232
256
|
|
|
233
257
|
The optional fallback — extending the existing morning routine to
|
|
234
|
-
summarize yesterday's `agent_actions` into `agent
|
|
258
|
+
summarize yesterday's `agent_actions` into `journal/agent.md` — is
|
|
235
259
|
deferred until the on-demand path proves insufficient.
|
|
236
260
|
|
|
237
261
|
## What Stayed Approve-Tier
|
|
@@ -251,15 +275,16 @@ Approve still gates:
|
|
|
251
275
|
|
|
252
276
|
## Where You See It in the Dashboard
|
|
253
277
|
|
|
254
|
-
- **Connections → \<integration\> → Tool Permissions**
|
|
278
|
+
- **Connections → \<integration\> → Tool Permissions**
|
|
279
|
+
(e.g. `/connections/mail`, `/connections/calendar`) — the
|
|
255
280
|
`deniedTools` editor with the starter list pre-populated. Above the
|
|
256
|
-
editor, the safety guidance prose explains each entry and which
|
|
257
|
-
|
|
258
|
-
- **
|
|
259
|
-
invocations show here
|
|
260
|
-
session.
|
|
261
|
-
- **Activity
|
|
262
|
-
the same
|
|
281
|
+
editor, the safety guidance prose explains each entry and which ones
|
|
282
|
+
are recommended to keep.
|
|
283
|
+
- **Analytics** (`/analytics`) — spend and the delegated-task facet;
|
|
284
|
+
only cross-backend invocations show here, while same-backend MCP
|
|
285
|
+
rolls up under the parent session.
|
|
286
|
+
- **Activity** (`/activity`) — every action with full attribution,
|
|
287
|
+
the same audit trail the agent reads via `GET /api/agent/actions`.
|
|
263
288
|
|
|
264
289
|
## Related
|
|
265
290
|
|
|
@@ -270,5 +295,5 @@ Approve still gates:
|
|
|
270
295
|
Allow modes.
|
|
271
296
|
- Integration Delegation Framework (design) — `docs/design/14-integration-delegation.md`
|
|
272
297
|
§14.12, the deniedTools spec.
|
|
273
|
-
- Delegated Mode v2 (design) — `
|
|
298
|
+
- Delegated Mode v2 (design) — `docs/design/17-delegated-mode-v2.md` §4.5,
|
|
274
299
|
the rationale for Notify-tier abolition + the starter denylist.
|
|
@@ -17,14 +17,18 @@ tags:
|
|
|
17
17
|
- core
|
|
18
18
|
- skills
|
|
19
19
|
- safety
|
|
20
|
+
- knowledge
|
|
21
|
+
- backends
|
|
20
22
|
status: stable
|
|
21
23
|
ask_examples:
|
|
22
24
|
- What skills does the agent have?
|
|
23
25
|
- How do I add a new skill?
|
|
24
26
|
- Why does the agent refuse to run a tool?
|
|
27
|
+
- How does skill self-optimization work?
|
|
28
|
+
- Where do skill overlays live?
|
|
25
29
|
locale: en-US
|
|
26
30
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-05-
|
|
31
|
+
updated: 2026-05-28
|
|
28
32
|
keywords:
|
|
29
33
|
- SKILL.md
|
|
30
34
|
- allowed-tools
|
|
@@ -33,15 +37,25 @@ keywords:
|
|
|
33
37
|
- self-optimization
|
|
34
38
|
- skill curation
|
|
35
39
|
- overlays
|
|
40
|
+
- skill
|
|
41
|
+
- skills
|
|
36
42
|
related:
|
|
37
43
|
- concepts/safety-and-execution
|
|
38
44
|
- concepts/process-keys
|
|
39
45
|
- reference/skills
|
|
40
|
-
- features/operations/skill-self-optimization
|
|
41
46
|
ui_anchors:
|
|
42
47
|
- /knowledge
|
|
43
48
|
- /connections/mcp
|
|
44
49
|
- /settings/self-learning
|
|
50
|
+
process_keys:
|
|
51
|
+
- dashboard.docs_qa
|
|
52
|
+
- routine.skill_curation
|
|
53
|
+
config_keys:
|
|
54
|
+
- allowedToolsOverride
|
|
55
|
+
- disallowedTools
|
|
56
|
+
api_endpoints:
|
|
57
|
+
- GET /api/skills
|
|
58
|
+
- GET /api/skills/manifest/:processKey
|
|
45
59
|
---
|
|
46
60
|
|
|
47
61
|
# Skills
|
|
@@ -68,8 +82,11 @@ visible to the model.
|
|
|
68
82
|
|
|
69
83
|
- **SKILL.md**: the Markdown file that defines a single skill. Lives
|
|
70
84
|
under `agent-assets/skills/<slug>/SKILL.md` in the repo and is
|
|
71
|
-
materialized into each session workdir
|
|
72
|
-
|
|
85
|
+
materialized into each session workdir under a per-backend namespace —
|
|
86
|
+
`.claude/skills/<slug>/` for Claude, `.codex/skills/` for Codex,
|
|
87
|
+
`.gemini/skills/` for Gemini, and `.opencode/skills/` for OpenCode.
|
|
88
|
+
The frontmatter (`name`, `description`, `allowed-tools`) is byte-identical
|
|
89
|
+
across all four; only the destination directory changes.
|
|
73
90
|
- **`allowed-tools`**: a YAML list in the skill's frontmatter naming
|
|
74
91
|
tools and patterns the session may use. Patterns like
|
|
75
92
|
`Bash(curl http://localhost:8321/api/context/*)` are the daemon's
|
|
@@ -82,7 +99,7 @@ visible to the model.
|
|
|
82
99
|
|
|
83
100
|
## Concrete Examples
|
|
84
101
|
|
|
85
|
-
- `today` — read and rewrite `today.md`.
|
|
102
|
+
- `today` — read and rewrite `state/today.md`.
|
|
86
103
|
- `schedule` — produce per-date schedule files from the calendar.
|
|
87
104
|
- `mail` — search and label messages via the daemon's mail proxy.
|
|
88
105
|
- `docs-search` — read-only fetch over the docs corpus, used only by
|
|
@@ -93,25 +110,29 @@ visible to the model.
|
|
|
93
110
|
|
|
94
111
|
Skills aren't frozen. A background process — **skill curation** —
|
|
95
112
|
watches how your knowledge layout drifts (file moves, new
|
|
96
|
-
sub-folders, schema tweaks
|
|
97
|
-
proposes JSON **overlays** that update specific sections of the
|
|
113
|
+
sub-folders, schema tweaks under `identity/`, `plans/projects/`, etc.)
|
|
114
|
+
and proposes JSON **overlays** that update specific sections of the
|
|
98
115
|
relevant skill: knowledge layout, routing tables, frontmatter
|
|
99
116
|
schema, search recipes, convention notes, cross-references.
|
|
100
117
|
|
|
101
|
-
Overlays live at `<dataDir>/overlays/<
|
|
102
|
-
are merged in by the SkillsCompiler at session-init. The original
|
|
118
|
+
Overlays live at `<dataDir>/skill-curation-overlays/<slug>/<section_id>.json`
|
|
119
|
+
and are merged in by the SkillsCompiler at session-init. The original
|
|
103
120
|
`SKILL.md` files in `agent-assets/skills/` are never rewritten;
|
|
104
|
-
disabling
|
|
121
|
+
disabling self-learning (or deleting the JSON file) reverts to the
|
|
105
122
|
seed payload immediately.
|
|
106
123
|
|
|
107
124
|
The optimizer agent runs in an isolated workdir with a tightly
|
|
108
125
|
scoped toolset (`Bash(curl http://localhost:8321/api/skill-curation/*)`,
|
|
109
|
-
`Read`) and an auto-revert safety net
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
`Read`) and an auto-revert safety net: each cadence cycle the daemon
|
|
127
|
+
re-checks recently-applied overlays, and any section that has
|
|
128
|
+
accumulated *more* drift signal weight after the overlay was applied
|
|
129
|
+
than before is rolled back automatically and frozen for two cycles to
|
|
130
|
+
stop thrashing. This is the only roll-back path — there is no
|
|
131
|
+
per-proposal approve/reject API, just the on/off toggle.
|
|
112
132
|
|
|
113
|
-
|
|
114
|
-
|
|
133
|
+
Skill curation is **off by default**. The master toggle, curation
|
|
134
|
+
cadence, manual-run trigger, and the per-skill exclusion list are all
|
|
135
|
+
surfaced at **Settings → Self-learning** (`/settings/self-learning`).
|
|
115
136
|
|
|
116
137
|
## Where You See It in the Dashboard
|
|
117
138
|
|
|
@@ -131,5 +152,5 @@ for cadence, manual run, and the dashboard surface.
|
|
|
131
152
|
`allowed-tools` is too permissive.
|
|
132
153
|
- [Process Keys](process-keys.md) — the dispatch identity that picks
|
|
133
154
|
which skill manifest to load.
|
|
134
|
-
- [
|
|
135
|
-
|
|
155
|
+
- [Skills (Reference)](../reference/skills.md) — index of every
|
|
156
|
+
built-in skill.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
slug: features/integrations/browser-history
|
|
4
|
+
title: Browser History
|
|
5
|
+
id: browser-history
|
|
6
|
+
aliases:
|
|
7
|
+
- browser history
|
|
8
|
+
- browsing history
|
|
9
|
+
- research clusters
|
|
10
|
+
- reload memory
|
|
11
|
+
- B-3
|
|
12
|
+
category: features
|
|
13
|
+
summary: |
|
|
14
|
+
Local-only poller that reads the browser's own SQLite databases
|
|
15
|
+
(Chrome / Safari / Firefox / Arc), records visits as observations,
|
|
16
|
+
derives research clusters from sustained reading patterns, and
|
|
17
|
+
surfaces what you keep refreshing. Nothing leaves the daemon.
|
|
18
|
+
section: integrations
|
|
19
|
+
tags:
|
|
20
|
+
- integrations
|
|
21
|
+
- observations
|
|
22
|
+
- browser-history
|
|
23
|
+
- polling
|
|
24
|
+
- autonomous
|
|
25
|
+
status: stable
|
|
26
|
+
ask_examples:
|
|
27
|
+
- How does Aitne use my browser history?
|
|
28
|
+
- What is a research cluster?
|
|
29
|
+
- What does `!checks` show?
|
|
30
|
+
- Does my browsing data go anywhere?
|
|
31
|
+
- How do I opt out of browser history?
|
|
32
|
+
locale: en-US
|
|
33
|
+
created: 2026-05-22
|
|
34
|
+
updated: 2026-05-28
|
|
35
|
+
keywords:
|
|
36
|
+
- browser history
|
|
37
|
+
- browser history poller
|
|
38
|
+
- research cluster
|
|
39
|
+
- reload signal
|
|
40
|
+
- "!checks"
|
|
41
|
+
- "!research"
|
|
42
|
+
- shopping comparison
|
|
43
|
+
- two-option offer
|
|
44
|
+
- local-only
|
|
45
|
+
related:
|
|
46
|
+
- features/messaging/bang-commands
|
|
47
|
+
- features/integrations/notion
|
|
48
|
+
- features/operations/managed-chromium
|
|
49
|
+
- features/routines/weekly-review
|
|
50
|
+
- features/routines/morning-routine
|
|
51
|
+
ui_anchors:
|
|
52
|
+
- /settings/integrations/browser-history
|
|
53
|
+
config_keys:
|
|
54
|
+
- browserHistoryConsentAccepted
|
|
55
|
+
- browserHistoryBrowserOverrides
|
|
56
|
+
- browserHistoryCategories
|
|
57
|
+
- browserHistoryRetentionDays
|
|
58
|
+
- browserHistorySearchQueryRetentionDays
|
|
59
|
+
- browserHistoryLifecycle
|
|
60
|
+
- browserHistoryResearchDomainAllowlist
|
|
61
|
+
- browserHistoryResearchDomainDenylist
|
|
62
|
+
process_keys:
|
|
63
|
+
- routine.research_cluster_update
|
|
64
|
+
- routine.research_offer_dm
|
|
65
|
+
- routine.research_dispatch
|
|
66
|
+
- routine.research_wiki_summary
|
|
67
|
+
api_endpoints:
|
|
68
|
+
- GET /api/browser-history/status
|
|
69
|
+
- GET /api/browser-history/research-clusters
|
|
70
|
+
- POST /api/browser-history/offers/:slug/accept
|
|
71
|
+
- POST /api/browser-history/offers/:slug/decline
|
|
72
|
+
- GET /api/browser-history/reloads/weekly
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# Browser History
|
|
76
|
+
|
|
77
|
+
Aitne can read the SQLite history databases that Chrome, Safari,
|
|
78
|
+
Firefox, and Arc already maintain on disk, classify visits into
|
|
79
|
+
categories, and use the result to notice what you've been
|
|
80
|
+
researching, what you've been refreshing, and what comparison-shopping
|
|
81
|
+
windows you're in. Everything stays local — no URLs, titles, or
|
|
82
|
+
clicks leave the daemon.
|
|
83
|
+
|
|
84
|
+
## What It Does
|
|
85
|
+
|
|
86
|
+
- **Reads visits** from the browser's own history DB on a 30-min
|
|
87
|
+
cadence (per browser, per profile) and inserts them into the
|
|
88
|
+
daemon's `browser_visits` table.
|
|
89
|
+
- **Counts reloads** per `<domain>/<first-path>` into
|
|
90
|
+
`browser_reload_signals`. Surfaced via [`!checks`](../messaging/bang-commands.md)
|
|
91
|
+
for the agent-day and via the weekly review's "this week you
|
|
92
|
+
checked" block.
|
|
93
|
+
- **Derives research clusters** when a topic crosses meaningful-visits
|
|
94
|
+
/ foreground-time / distinct-domain thresholds. Clusters live in
|
|
95
|
+
`browser_research_clusters` with a slug, display name, journal at
|
|
96
|
+
`context/research/<slug>.md`, and a status (`active | dormant |
|
|
97
|
+
muted | concluded`).
|
|
98
|
+
- **Offers engagement DMs** via the Two-Option Offer pattern when a
|
|
99
|
+
cluster qualifies: pick "research dive" (parallel web research +
|
|
100
|
+
summary) or "wiki summary" (Obsidian / Notion / local context).
|
|
101
|
+
Accept paths run through `routine.research_dispatch` /
|
|
102
|
+
`routine.research_wiki_summary`; decline silences offers for 14
|
|
103
|
+
days; mute / unmute / rename / conclude via [`!research`](../messaging/bang-commands.md).
|
|
104
|
+
- **Detects shopping comparison windows** — 90-min sliding windows
|
|
105
|
+
containing ≥3 distinct ASINs surface as comparison sessions the
|
|
106
|
+
agent can summarise.
|
|
107
|
+
- **Powers the pre-morning digest** — yesterday's reading and reload
|
|
108
|
+
patterns feed the morning routine's pre-pass digest.
|
|
109
|
+
|
|
110
|
+
## Privacy and Consent
|
|
111
|
+
|
|
112
|
+
- **Default off.** The integration does not start until the operator
|
|
113
|
+
flips `browserHistoryConsentAccepted = true` on the
|
|
114
|
+
**Settings → Integrations → Browser History**
|
|
115
|
+
(`/settings/integrations/browser-history`) page. The integration only
|
|
116
|
+
supports `direct` (the daemon poller) or `disabled` — there is no
|
|
117
|
+
delegated or native mode.
|
|
118
|
+
- **Local-only.** No request leaves the daemon. The browser's
|
|
119
|
+
history file is opened read-only; the daemon never reaches into
|
|
120
|
+
cookies, login sessions, or profile dirs other than the history DB.
|
|
121
|
+
- **Per-browser opt-in.** `browserHistoryBrowserOverrides` lets you
|
|
122
|
+
enable / disable each detected browser independently and override
|
|
123
|
+
the DB path for atypical installs.
|
|
124
|
+
- **Per-category gate.** `browserHistoryCategories` controls which
|
|
125
|
+
visit categories (research / shopping / docs / media / …) get
|
|
126
|
+
ingested. Categories you exclude are dropped at ingest time, not
|
|
127
|
+
filtered later.
|
|
128
|
+
- **Retention.** `browserHistoryRetentionDays` (visits) and
|
|
129
|
+
`browserHistorySearchQueryRetentionDays` (search queries) cap the
|
|
130
|
+
on-disk window; older rows are deleted on the next ingest tick.
|
|
131
|
+
- **Domain controls.** `browserHistoryResearchDomainAllowlist` /
|
|
132
|
+
`…Denylist` filter which domains can qualify a research cluster.
|
|
133
|
+
|
|
134
|
+
## How Clusters Qualify
|
|
135
|
+
|
|
136
|
+
A research cluster qualifies when the combination of meaningful visits,
|
|
137
|
+
foreground time, and distinct domains crosses the thresholds in
|
|
138
|
+
`DEFAULT_OFFER_THRESHOLDS` (tunable via `browserHistoryLifecycle`).
|
|
139
|
+
On each tick the poller evaluates the offer triggers per active cluster
|
|
140
|
+
(`evaluateOfferTriggers`); once the **per-cluster offer rate-limit gate**
|
|
141
|
+
(`gateOfferRateLimit`) approves — this is the 14-day, per-slug offer
|
|
142
|
+
backoff, not the daemon-wide session gate that Phase 9 removed — a
|
|
143
|
+
Two-Option Offer DM is composed by the `routine.research_offer_dm`
|
|
144
|
+
process key.
|
|
145
|
+
|
|
146
|
+
Accepting either path clears every pending-offer row for that slug, so a
|
|
147
|
+
later tick cannot re-offer the same cluster.
|
|
148
|
+
|
|
149
|
+
## Owner Controls
|
|
150
|
+
|
|
151
|
+
| Surface | What it does |
|
|
152
|
+
|---|---|
|
|
153
|
+
| `!checks` | Today's top reload patterns (pure DB read, safe while paused). |
|
|
154
|
+
| `!research` | List active + dormant clusters. |
|
|
155
|
+
| `!research <slug>` | Show one cluster's detail. |
|
|
156
|
+
| `!research accept <slug>` | Enqueue `routine.research_dispatch`. |
|
|
157
|
+
| `!research wiki <slug>` | Enqueue `routine.research_wiki_summary`. |
|
|
158
|
+
| `!research decline <slug>` | Silence offers for 14 days. |
|
|
159
|
+
| `!research mute <slug>` / `unmute` | Toggle offers off (until unmute) / restore. |
|
|
160
|
+
| `!research rename <slug> <new name>` | Change display name. |
|
|
161
|
+
| `!research conclude <slug>` | Mark concluded; preserve the journal. |
|
|
162
|
+
| Natural-language reply to an offer DM | The `browser-history-respond` skill bridges into the same `/api/browser-history/offers/<slug>/{accept,decline}` call. |
|
|
163
|
+
|
|
164
|
+
## When It Runs
|
|
165
|
+
|
|
166
|
+
| Signal | Cadence | Source |
|
|
167
|
+
|---|---|---|
|
|
168
|
+
| Visit ingest | Every 30 min per browser profile | `BrowserHistoryPoller` |
|
|
169
|
+
| Cluster engagement evaluation | Same tick as visit ingest | `pipeline/offer-triggers.ts` |
|
|
170
|
+
| Shopping-comparison window scan | Same tick, 7-day lookback | `SHOPPING_COMPARISON_WINDOW_MS` constants |
|
|
171
|
+
| Nightly journal append | Agent-day boundary | `routine.research_cluster_update` (lite tier, one row per active cluster per day) |
|
|
172
|
+
| Weekly reload-memory block | Friday weekly review | `routine.weekly_review` reads `/api/browser-history/reloads/weekly` |
|
|
173
|
+
| Pre-morning digest | Morning routine pre-pass | Yesterday's reading + reloads feed the digest block |
|
|
174
|
+
|
|
175
|
+
## When Something Goes Wrong
|
|
176
|
+
|
|
177
|
+
- **The settings page shows no browsers.** Open
|
|
178
|
+
`/settings/integrations/browser-history` and run `aitne doctor` — the
|
|
179
|
+
platform detector might be failing to resolve the user's profile dir.
|
|
180
|
+
The daemon log line will name the candidate paths it tried.
|
|
181
|
+
- **A cluster keeps re-offering.** Check the `lastResearchOfferAt` /
|
|
182
|
+
`lastWikiOfferAt` columns; the rate-limit gate uses those for the
|
|
183
|
+
14-day backoff. `!research decline <slug>` stamps both fields.
|
|
184
|
+
- **`!checks` is empty.** That's the common case for a quiet day —
|
|
185
|
+
the reload signals are gated to the agent-day, not UTC.
|
|
186
|
+
|
|
187
|
+
## Related
|
|
188
|
+
|
|
189
|
+
- [Managed Chromium](../operations/managed-chromium.md) — separate
|
|
190
|
+
experimental flow for *driving* a Chromium profile (B-4), not
|
|
191
|
+
reading browser history.
|
|
192
|
+
- [Weekly Review](../routines/weekly-review.md)
|
|
193
|
+
- [Morning Routine](../routines/morning-routine.md)
|
|
194
|
+
- [Bang Commands](../messaging/bang-commands.md)
|
|
195
|
+
- [Glossary: Research Cluster](../../glossary.md#research-cluster)
|
|
@@ -10,16 +10,18 @@ aliases:
|
|
|
10
10
|
category: features
|
|
11
11
|
summary: |
|
|
12
12
|
The calendar integration pulls your events into Aitne so the
|
|
13
|
-
morning routine
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
calendar
|
|
17
|
-
|
|
13
|
+
morning routine and schedule files can reason about your day.
|
|
14
|
+
The Connections → Calendar page also picks the backend that handles
|
|
15
|
+
observed calendar changes (the Calendar Event Model card, binding
|
|
16
|
+
calendar.change) — that picker only applies when the integration runs
|
|
17
|
+
in direct mode.
|
|
18
18
|
section: integrations
|
|
19
19
|
tags:
|
|
20
|
-
-
|
|
20
|
+
- integrations
|
|
21
21
|
- calendar
|
|
22
22
|
- core
|
|
23
|
+
- observations
|
|
24
|
+
- polling
|
|
23
25
|
status: stable
|
|
24
26
|
ask_examples:
|
|
25
27
|
- How do I connect my Google Calendar?
|
|
@@ -28,10 +30,10 @@ ask_examples:
|
|
|
28
30
|
- What is the Calendar Event Model setting on the Connections page?
|
|
29
31
|
- Why is the Calendar Event Model card missing when my calendar is delegated?
|
|
30
32
|
- Will Aitne notice calendar changes while my calendar is delegated?
|
|
31
|
-
- Which model handles
|
|
33
|
+
- Which model handles detected calendar changes?
|
|
32
34
|
locale: en-US
|
|
33
35
|
created: 2026-04-25
|
|
34
|
-
updated: 2026-
|
|
36
|
+
updated: 2026-05-28
|
|
35
37
|
keywords:
|
|
36
38
|
- calendar
|
|
37
39
|
- google calendar
|
|
@@ -47,25 +49,28 @@ keywords:
|
|
|
47
49
|
related:
|
|
48
50
|
- features/routines/morning-routine
|
|
49
51
|
- features/memory-files/schedule
|
|
52
|
+
- features/operations/schedule-approaching
|
|
50
53
|
- concepts/delegated-mode
|
|
51
54
|
- concepts/process-keys
|
|
52
55
|
- concepts/observations
|
|
53
56
|
ui_anchors:
|
|
54
57
|
- /connections/calendar
|
|
55
58
|
api_endpoints:
|
|
56
|
-
- /api/calendar
|
|
59
|
+
- /api/calendar/calendars
|
|
60
|
+
- /api/calendar/events
|
|
61
|
+
- /api/calendar/freebusy
|
|
57
62
|
config_keys:
|
|
58
63
|
- calendarPollIntervalSeconds
|
|
59
64
|
process_keys:
|
|
60
65
|
- calendar.change
|
|
66
|
+
- schedule.approaching
|
|
61
67
|
---
|
|
62
68
|
|
|
63
69
|
# Calendar
|
|
64
70
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
backends planned) so Aitne can plan your day around them.
|
|
71
|
+
Aitne pulls events from one or more calendars (Google Calendar today,
|
|
72
|
+
more backends planned) so it can build today's plan around them and
|
|
73
|
+
DM you ahead of meetings that matter.
|
|
69
74
|
|
|
70
75
|
## What It Does
|
|
71
76
|
|
|
@@ -73,11 +78,13 @@ backends planned) so Aitne can plan your day around them.
|
|
|
73
78
|
- **Records observations** when events change (add / move / remove),
|
|
74
79
|
consumed by the hourly check.
|
|
75
80
|
- **Surfaces today's events** to the morning routine so they land in
|
|
76
|
-
`today.md` and the day's schedule file.
|
|
81
|
+
`state/today.md` and the day's schedule file.
|
|
77
82
|
- **Reads** events on demand for reactive turns ("am I free at 3?").
|
|
78
83
|
|
|
79
|
-
The agent can create events when the operator asks
|
|
80
|
-
|
|
84
|
+
The agent can create, move, or delete events when the operator asks
|
|
85
|
+
(`POST`/`PATCH`/`DELETE /api/calendar/events`, all Autonomous-tier — no
|
|
86
|
+
approval prompt). It does not auto-schedule on its own; it acts only on
|
|
87
|
+
an explicit request.
|
|
81
88
|
|
|
82
89
|
## When It Runs / How It Is Triggered
|
|
83
90
|
|
|
@@ -99,22 +106,24 @@ action). It does not auto-schedule on its own.
|
|
|
99
106
|
## Calendar Event Model
|
|
100
107
|
|
|
101
108
|
The Calendar Event Model picker chooses the backend and model that
|
|
102
|
-
runs when the
|
|
103
|
-
`calendar.change` ProcessKey, which fires
|
|
104
|
-
three situations:
|
|
109
|
+
runs when the **daemon-side poller detects a calendar change**. It binds
|
|
110
|
+
the `calendar.change` ProcessKey, which fires in two situations:
|
|
105
111
|
|
|
106
|
-
- An event is about to start (the operator gets an approaching-event
|
|
107
|
-
reminder).
|
|
108
112
|
- An event was added, moved, or deleted between polls (recorded as a
|
|
109
113
|
change observation; the hourly check picks it up).
|
|
110
|
-
- An event was created far in advance (long-horizon events
|
|
111
|
-
roadmap-refresh routine so `roadmap.md` can
|
|
112
|
-
timeline).
|
|
114
|
+
- An event was created far in advance (long-horizon events more than 14
|
|
115
|
+
days out nudge the roadmap-refresh routine so `plans/roadmap.md` can
|
|
116
|
+
build a preparation timeline).
|
|
117
|
+
|
|
118
|
+
Approaching-event reminders are a separate flow: they fire on the
|
|
119
|
+
`schedule.approaching` ProcessKey, not `calendar.change`, and are not
|
|
120
|
+
configured by this card. See [Schedule Approaching](../operations/schedule-approaching.md).
|
|
113
121
|
|
|
114
|
-
Light tier is the default and almost always
|
|
115
|
-
are classification
|
|
116
|
-
is whichever you picked as your main
|
|
117
|
-
override per-process here if you want a
|
|
122
|
+
Light tier (Haiku 4.5 / gpt-5.4-mini) is the default and almost always
|
|
123
|
+
sufficient — these flows are event classification at low cost, not
|
|
124
|
+
generation. The default backend is whichever you picked as your main
|
|
125
|
+
backend during setup; you can override per-process here if you want a
|
|
126
|
+
different mix.
|
|
118
127
|
|
|
119
128
|
The picker is **only meaningful when Google Calendar runs in direct
|
|
120
129
|
mode.** In delegated mode the daemon hands off all Google Calendar
|
|
@@ -157,7 +166,8 @@ rather than an env-style setting; the underlying state lives in the
|
|
|
157
166
|
## Related
|
|
158
167
|
|
|
159
168
|
- [Morning Routine](../routines/morning-routine.md)
|
|
160
|
-
- [
|
|
169
|
+
- [Schedule files](../memory-files/schedule.md)
|
|
170
|
+
- [Schedule Approaching](../operations/schedule-approaching.md)
|
|
161
171
|
- [Delegated Mode](../../concepts/delegated-mode.md)
|
|
162
|
-
- [
|
|
172
|
+
- [Process Keys](../../concepts/process-keys.md)
|
|
163
173
|
- [Observations](../../concepts/observations.md)
|