@aitne-sh/aitne 0.1.8 → 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 +218 -161
- package/agent-assets/agent-profiles/_safety.md +3 -3
- 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 +2 -2
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- 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 +13 -11
- package/agent-assets/docs/concepts/auth-health.md +47 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
- package/agent-assets/docs/concepts/costs-and-quotas.md +50 -15
- package/agent-assets/docs/concepts/delegated-mode.md +52 -13
- package/agent-assets/docs/concepts/memory-model.md +72 -32
- package/agent-assets/docs/concepts/observations.md +49 -11
- package/agent-assets/docs/concepts/process-keys.md +56 -22
- package/agent-assets/docs/concepts/routines.md +60 -33
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +42 -34
- package/agent-assets/docs/concepts/skills.md +33 -17
- package/agent-assets/docs/features/integrations/browser-history.md +195 -0
- package/agent-assets/docs/features/integrations/calendar.md +39 -29
- package/agent-assets/docs/features/integrations/git.md +18 -7
- package/agent-assets/docs/features/integrations/github.md +84 -33
- package/agent-assets/docs/features/integrations/mail.md +59 -16
- package/agent-assets/docs/features/integrations/notion.md +18 -6
- package/agent-assets/docs/features/integrations/obsidian.md +28 -5
- package/agent-assets/docs/features/lifestyle/git.md +42 -38
- package/agent-assets/docs/features/lifestyle/reading.md +50 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +76 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
- package/agent-assets/docs/features/memory-files/projects.md +71 -17
- package/agent-assets/docs/features/memory-files/roadmap.md +50 -10
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +46 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
- package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +35 -4
- package/agent-assets/docs/features/messaging/overview.md +37 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +67 -14
- package/agent-assets/docs/features/messaging/telegram.md +18 -5
- package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
- package/agent-assets/docs/features/operations/activity-and-conversations.md +44 -15
- package/agent-assets/docs/features/operations/approvals.md +48 -16
- package/agent-assets/docs/features/operations/backend-routing.md +68 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
- package/agent-assets/docs/features/operations/notifications.md +52 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
- package/agent-assets/docs/features/routines/custom-routines.md +88 -20
- package/agent-assets/docs/features/routines/evening-review.md +74 -21
- package/agent-assets/docs/features/routines/hourly-check.md +149 -29
- package/agent-assets/docs/features/routines/morning-routine.md +53 -35
- package/agent-assets/docs/features/routines/weekly-review.md +40 -21
- package/agent-assets/docs/features/wiki/commands.md +26 -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 +68 -10
- 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 +34 -23
- package/agent-assets/docs/getting-started/02-first-steps.md +13 -8
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
- package/agent-assets/docs/getting-started/04-first-day.md +38 -20
- package/agent-assets/docs/glossary.md +235 -24
- package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
- package/agent-assets/docs/guides/backup-and-restore.md +80 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +56 -25
- package/agent-assets/docs/guides/build-your-wiki.md +22 -9
- package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +64 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +28 -11
- package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
- package/agent-assets/docs/guides/install-and-run.md +48 -19
- package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
- package/agent-assets/docs/guides/migrate-machines.md +74 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
- package/agent-assets/docs/guides/pause-the-agent.md +65 -24
- package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
- package/agent-assets/docs/guides/setup-wizard.md +113 -54
- package/agent-assets/docs/guides/switch-default-backend.md +62 -16
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +26 -10
- package/agent-assets/docs/reference/api.md +143 -32
- package/agent-assets/docs/reference/cli-commands.md +38 -17
- package/agent-assets/docs/reference/config.md +224 -49
- package/agent-assets/docs/reference/disallowed-tools.md +29 -10
- package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
- package/agent-assets/docs/reference/knowledge-layout.md +620 -0
- package/agent-assets/docs/reference/process-keys.md +61 -5
- package/agent-assets/docs/reference/skills.md +38 -12
- package/agent-assets/docs/troubleshooting/auth-failed.md +48 -19
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +90 -28
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +29 -5
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
- 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 +1 -1
- 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 +2 -2
- package/agent-assets/skills/agent-create/SKILL.md +149 -0
- package/agent-assets/skills/attach/SKILL.md +2 -2
- 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 +12 -12
- package/agent-assets/skills/context/curation.json +2 -2
- package/agent-assets/skills/context/references/api.md +43 -31
- package/agent-assets/skills/context/references/required-frontmatter.md +3 -3
- package/agent-assets/skills/context/references/snapshot-files.md +6 -6
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +4 -3
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +11 -21
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +11 -21
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +11 -21
- package/agent-assets/skills/external-services/SKILL.md +3 -3
- package/agent-assets/skills/external-services/SKILL.native.claude.md +5 -5
- package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
- package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
- package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
- package/agent-assets/skills/external-services/references/obsidian.md +2 -2
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +9 -82
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +14 -5
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +8 -4
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +8 -4
- package/agent-assets/skills/mail/references/api.md +4 -2
- package/agent-assets/skills/mail/references/providers.md +1 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +9 -9
- package/agent-assets/skills/managed-tasks/references/errors.md +9 -6
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +1 -1
- package/agent-assets/skills/management-policy/SKILL.md +32 -31
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +9 -9
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +4 -4
- package/agent-assets/skills/notify/references/priority.md +9 -4
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.claude.md +10 -6
- package/agent-assets/skills/notion/SKILL.native.codex.md +9 -4
- package/agent-assets/skills/notion/SKILL.native.gemini.md +9 -4
- package/agent-assets/skills/observations/SKILL.md +24 -8
- package/agent-assets/skills/project-doc/SKILL.md +1 -1
- 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 +10 -0
- package/agent-assets/skills/reading/references/reading-taste.md +2 -2
- package/agent-assets/skills/roadmap/SKILL.md +5 -5
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +7 -7
- package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
- package/agent-assets/skills/roadmap/references/migration.md +4 -4
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +42 -34
- package/agent-assets/skills/schedule/references/batch.md +2 -2
- package/agent-assets/skills/schedule/references/errors.md +7 -4
- package/agent-assets/skills/schedule/references/model-selection.md +3 -3
- package/agent-assets/skills/schedule/references/recurrence-rule.md +1 -1
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -36
- package/agent-assets/skills/today/SKILL.md +9 -9
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
- package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
- package/agent-assets/skills/user-interview/SKILL.md +12 -9
- package/agent-assets/skills/user-interview/references/op-briefing.md +2 -2
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +8 -0
- package/agent-assets/skills/user-profile/SKILL.md +17 -17
- package/agent-assets/skills/user-profile/curation.json +2 -2
- package/agent-assets/skills/user-profile/references/character-preferences.md +2 -2
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -4
- package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
- package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
- 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 +14 -14
- package/agent-assets/task-flows/message.received.dm.md +9 -4
- package/agent-assets/task-flows/message.received.dm_first.md +3 -3
- package/agent-assets/task-flows/routine.custom.md +3 -3
- package/agent-assets/task-flows/routine.evening_review.md +8 -8
- package/agent-assets/task-flows/routine.fetch_window.md +2 -2
- package/agent-assets/task-flows/routine.hourly_check.md +16 -12
- package/agent-assets/task-flows/routine.monthly_review.md +21 -21
- package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
- package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
- 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 +10 -10
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
- package/agent-assets/task-flows/routine.weekly_review.md +93 -24
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +5 -5
- package/agent-assets/task-flows/scheduled.task.md +4 -4
- package/agent-assets/task-flows/setup.initial.md +21 -21
- package/agent-assets/task-flows/setup.update.md +2 -2
- 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/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
- 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/{rules → policies}/journal-format.md +5 -5
- 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 +13 -4
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +14 -8
- package/scripts/commands/run-now.mjs +6 -21
- 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 -58
- package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
- package/agent-assets/skills/schedule/references/recurring.md +0 -185
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
- /package/agent-assets/templates/{user → identity}/goals.md +0 -0
- /package/agent-assets/templates/{user → identity}/people.md +0 -0
- /package/agent-assets/templates/{user → identity}/personal.md +0 -0
- /package/agent-assets/templates/{user → identity}/work.md +0 -0
- /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
|
@@ -9,8 +9,9 @@ aliases:
|
|
|
9
9
|
- human in the loop
|
|
10
10
|
category: features
|
|
11
11
|
summary: |
|
|
12
|
-
|
|
13
|
-
the dashboard
|
|
12
|
+
A few high-blast-radius actions queue as approvals. The action
|
|
13
|
+
blocks until you click Approve on the dashboard Overview page;
|
|
14
|
+
the approval card stays visible there regardless of quiet hours.
|
|
14
15
|
section: operations
|
|
15
16
|
tags:
|
|
16
17
|
- core
|
|
@@ -20,18 +21,26 @@ status: stable
|
|
|
20
21
|
ask_examples:
|
|
21
22
|
- What is an approval?
|
|
22
23
|
- Why is the agent waiting for me?
|
|
24
|
+
- Where do I approve a pending action?
|
|
23
25
|
locale: en-US
|
|
24
26
|
created: 2026-04-25
|
|
25
|
-
updated: 2026-
|
|
27
|
+
updated: 2026-05-28
|
|
26
28
|
keywords:
|
|
27
29
|
- approval
|
|
28
30
|
- approve tier
|
|
29
|
-
-
|
|
31
|
+
- approval queue
|
|
30
32
|
- agent approval queue
|
|
31
33
|
- approve before action
|
|
34
|
+
- deny approval
|
|
32
35
|
related:
|
|
33
36
|
- concepts/safety-and-execution
|
|
34
37
|
- features/operations/notifications
|
|
38
|
+
ui_anchors:
|
|
39
|
+
- /
|
|
40
|
+
api_endpoints:
|
|
41
|
+
- GET /api/approvals
|
|
42
|
+
- POST /api/approvals/:id/approve
|
|
43
|
+
- POST /api/approvals/:id/deny
|
|
35
44
|
---
|
|
36
45
|
|
|
37
46
|
# Approvals
|
|
@@ -39,26 +48,49 @@ related:
|
|
|
39
48
|
## In One Sentence
|
|
40
49
|
|
|
41
50
|
A small set of high-blast-radius actions queue as approvals; the
|
|
42
|
-
agent waits for
|
|
51
|
+
agent waits for you to click **Approve** on the dashboard before it
|
|
52
|
+
proceeds.
|
|
53
|
+
|
|
54
|
+
## How It Works
|
|
55
|
+
|
|
56
|
+
A few actions are classified as *Approve* tier (see
|
|
57
|
+
[Safety and Execution](../../concepts/safety-and-execution.md)).
|
|
58
|
+
When the agent reaches one, instead of running it the daemon parks
|
|
59
|
+
the request in the approval queue:
|
|
43
60
|
|
|
44
|
-
|
|
61
|
+
1. The action **blocks** — nothing runs while it waits.
|
|
62
|
+
2. It appears in the **approval card** on the dashboard Overview
|
|
63
|
+
page (`/`).
|
|
64
|
+
3. You click **Approve** to let it run, or **Deny** to discard it.
|
|
65
|
+
4. On Approve, the queued action resumes and the agent continues.
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- Resumes when the operator approves.
|
|
67
|
+
The approval card is always shown on the Overview page while items
|
|
68
|
+
are pending — it does not respect quiet hours, so you can clear it
|
|
69
|
+
whenever you next open the dashboard.
|
|
50
70
|
|
|
51
71
|
## Where in the Dashboard
|
|
52
72
|
|
|
53
|
-
|
|
54
|
-
|
|
73
|
+
The Overview page (`/`) shows an amber **approval card** whenever
|
|
74
|
+
something is pending. The card header reports the count
|
|
75
|
+
("2 pending approvals") and each row lists:
|
|
76
|
+
|
|
77
|
+
- the action description,
|
|
78
|
+
- a badge with its type,
|
|
79
|
+
- when it was queued,
|
|
80
|
+
- **Approve** and **Deny** buttons.
|
|
81
|
+
|
|
82
|
+
Deny asks for confirmation before discarding the item.
|
|
55
83
|
|
|
56
84
|
## When Something Goes Wrong
|
|
57
85
|
|
|
58
|
-
- An approval that
|
|
59
|
-
The action expires
|
|
60
|
-
the request that
|
|
86
|
+
- **An approval that never clears:** the agent session that produced
|
|
87
|
+
it may have timed out. The action expires with the session — redo
|
|
88
|
+
the request that triggered it (for example, re-send the DM or
|
|
89
|
+
re-run the routine).
|
|
61
90
|
|
|
62
91
|
## Related
|
|
63
92
|
|
|
64
|
-
- [Safety and Execution](../../concepts/safety-and-execution.md)
|
|
93
|
+
- [Safety and Execution](../../concepts/safety-and-execution.md) —
|
|
94
|
+
how the agent decides an action needs approval.
|
|
95
|
+
- [Notifications](notifications.md) — how the agent reaches you
|
|
96
|
+
outside the dashboard.
|
|
@@ -11,12 +11,13 @@ category: features
|
|
|
11
11
|
summary: |
|
|
12
12
|
BackendRouter resolves each ProcessKey to a (main, fallback) backend
|
|
13
13
|
pair and a tier. On BackendQuotaError or BackendDecisiveFailure, the
|
|
14
|
-
main backend's session fails over to the fallback's.
|
|
14
|
+
main backend's session fails over to the fallback's mid-run.
|
|
15
15
|
section: operations
|
|
16
16
|
tags:
|
|
17
17
|
- core
|
|
18
18
|
- operations
|
|
19
19
|
- backends
|
|
20
|
+
- routing
|
|
20
21
|
status: stable
|
|
21
22
|
ask_examples:
|
|
22
23
|
- What happens when my Claude quota is exhausted?
|
|
@@ -24,7 +25,7 @@ ask_examples:
|
|
|
24
25
|
- How do fallbacks work?
|
|
25
26
|
locale: en-US
|
|
26
27
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
28
|
+
updated: 2026-05-28
|
|
28
29
|
keywords:
|
|
29
30
|
- backend routing
|
|
30
31
|
- BackendRouter
|
|
@@ -32,8 +33,21 @@ keywords:
|
|
|
32
33
|
- main fallback
|
|
33
34
|
- BackendQuotaError
|
|
34
35
|
- BackendDecisiveFailure
|
|
36
|
+
- process_backend_config
|
|
37
|
+
process_keys:
|
|
38
|
+
- message.dm
|
|
39
|
+
- agent.task
|
|
40
|
+
- delegated_task_heavy
|
|
41
|
+
ui_anchors:
|
|
42
|
+
- /settings/models
|
|
43
|
+
- /activity
|
|
44
|
+
api_endpoints:
|
|
45
|
+
- GET /api/process-config
|
|
46
|
+
- PUT /api/process-config/:processKey
|
|
47
|
+
- PUT /api/backends/main
|
|
35
48
|
related:
|
|
36
49
|
- concepts/backends-and-tiers
|
|
50
|
+
- concepts/process-keys
|
|
37
51
|
- features/operations/cost-tracking
|
|
38
52
|
---
|
|
39
53
|
|
|
@@ -41,29 +55,67 @@ related:
|
|
|
41
55
|
|
|
42
56
|
## In One Sentence
|
|
43
57
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
58
|
+
Every job carries a ProcessKey. The router resolves that key to a
|
|
59
|
+
`(main, fallback)` backend pair plus a tier — and if the main backend
|
|
60
|
+
hits a quota wall or a decisive failure, the dispatcher transitions to
|
|
61
|
+
the fallback mid-run, then DMs you that it happened.
|
|
47
62
|
|
|
48
|
-
##
|
|
63
|
+
## How It Resolves a Backend
|
|
49
64
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
65
|
+
The router never picks a model itself. The dispatcher hands it a
|
|
66
|
+
ProcessKey, and `BackendRouter` resolves the binding in this order:
|
|
67
|
+
|
|
68
|
+
1. Read the `process_backend_config` table for a per-key override
|
|
69
|
+
(`main_backend` / `main_model` / `fallback_backend` / `fallback_model`).
|
|
70
|
+
2. If no override exists, fall back to the ProcessKey's **default tier**
|
|
71
|
+
(`lite` → Haiku-class, `medium` → Sonnet-class, `high` → Opus-class)
|
|
72
|
+
and the seeded backend for that tier.
|
|
73
|
+
3. `dashboard.docs_qa` is **tier-locked to `medium`** — an operator pin
|
|
74
|
+
can't move it.
|
|
75
|
+
|
|
76
|
+
Only one ProcessKey — `delegated_task_heavy` — defaults to the `high`
|
|
77
|
+
tier, and it is opt-in (gated by the `delegatedTaskHeavyEnabled` flag).
|
|
78
|
+
No install-time surface defaults to Opus.
|
|
79
|
+
|
|
80
|
+
## What Happens on Failover
|
|
81
|
+
|
|
82
|
+
The two failover signals are `BackendQuotaError` (the backend hit a
|
|
83
|
+
usage/budget limit) and `BackendDecisiveFailure` (auth failure, model
|
|
84
|
+
unavailable, policy-denied, timeout, or turn-limit). When the main
|
|
85
|
+
backend raises either:
|
|
86
|
+
|
|
87
|
+
- The router **re-materializes the session workdir** for the fallback
|
|
88
|
+
backend — writing its instruction file (`AGENTS.md` for Codex,
|
|
89
|
+
`GEMINI.md` for Gemini, etc.) and skill set into the shared dir. Without
|
|
90
|
+
this step a Claude → Codex fallover would leave only `CLAUDE.md` and
|
|
91
|
+
`.claude/skills/`, and the fallback would run blind.
|
|
92
|
+
- The fallback then executes with the same prompt and any
|
|
93
|
+
per-session tool overrides applied to the main run.
|
|
94
|
+
- On success, you get a **low-priority DM** noting the main backend
|
|
95
|
+
failed and the fallback served the turn.
|
|
96
|
+
- If the fallback *also* fails, you get a higher-priority notification:
|
|
97
|
+
`Backend execution failed: <key> encountered <kind> on <main>, then
|
|
98
|
+
<kind> on <fallback>.` This is usually a credentials problem on both
|
|
99
|
+
sides.
|
|
54
100
|
|
|
55
101
|
## Where in the Dashboard
|
|
56
102
|
|
|
57
|
-
- **Settings → Models** is the unified surface for
|
|
58
|
-
fallback per ProcessKey.
|
|
59
|
-
- **Activity** rows show which backend actually served each
|
|
60
|
-
fallback resolution.
|
|
103
|
+
- **[Settings → Models](/settings/models)** is the unified surface for
|
|
104
|
+
picking the main and fallback backend (and tier) per ProcessKey.
|
|
105
|
+
- **[Activity](/activity)** rows show which backend actually served each
|
|
106
|
+
turn after fallback resolution, so you can see when a fallover fired.
|
|
61
107
|
|
|
62
108
|
## When Something Goes Wrong
|
|
63
109
|
|
|
64
|
-
- A `
|
|
65
|
-
|
|
110
|
+
- **A `Backend execution failed` notification** means both the main and
|
|
111
|
+
the fallback rejected the run. Check authentication for both backends
|
|
112
|
+
first — re-authorize from the dashboard if needed.
|
|
113
|
+
- **A routine ran on the "wrong" backend** is usually a fallover: the
|
|
114
|
+
main backend was over quota, so the fallback served it. The Activity
|
|
115
|
+
row will confirm which backend ran.
|
|
66
116
|
|
|
67
117
|
## Related
|
|
68
118
|
|
|
69
119
|
- [Backends and Tiers](../../concepts/backends-and-tiers.md)
|
|
120
|
+
- [Process Keys](../../concepts/process-keys.md)
|
|
121
|
+
- [Cost Tracking](./cost-tracking.md)
|
|
@@ -6,10 +6,14 @@ id: cost-tracking
|
|
|
6
6
|
aliases:
|
|
7
7
|
- analytics
|
|
8
8
|
- cost rollup
|
|
9
|
+
- spend tracking
|
|
9
10
|
category: features
|
|
10
11
|
summary: |
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
Aitne records the USD cost of every run into the local SQLite database
|
|
13
|
+
and rolls it up on the Analytics page by backend, by event type, and
|
|
14
|
+
over daily / weekly / monthly windows. The sidebar footer shows today's
|
|
15
|
+
running total, and two optional caps (daily and monthly) guard
|
|
16
|
+
autonomous spend.
|
|
13
17
|
section: operations
|
|
14
18
|
tags:
|
|
15
19
|
- core
|
|
@@ -20,46 +24,109 @@ ask_examples:
|
|
|
20
24
|
- How much did the agent cost me today?
|
|
21
25
|
- Which routines are the most expensive?
|
|
22
26
|
- How do I cap autonomous spending?
|
|
27
|
+
- What is the difference between the daily and monthly cost cap?
|
|
23
28
|
locale: en-US
|
|
24
29
|
created: 2026-04-25
|
|
25
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-05-28
|
|
26
31
|
keywords:
|
|
27
32
|
- cost tracking
|
|
28
33
|
- analytics
|
|
29
34
|
- spend
|
|
30
35
|
- per-process cost
|
|
31
36
|
- rollup
|
|
37
|
+
- cost cap
|
|
38
|
+
- guardrails
|
|
32
39
|
related:
|
|
33
40
|
- concepts/costs-and-quotas
|
|
41
|
+
- concepts/process-keys
|
|
42
|
+
- features/operations/backend-routing
|
|
43
|
+
ui_anchors:
|
|
44
|
+
- /analytics
|
|
45
|
+
- /analytics?tab=metrics
|
|
46
|
+
- /settings/models
|
|
34
47
|
config_keys:
|
|
35
48
|
- autonomousDailyCostCapUsd
|
|
49
|
+
- autonomousMonthlyCostCapUsd
|
|
50
|
+
api_endpoints:
|
|
51
|
+
- GET /api/metrics
|
|
52
|
+
- GET /api/health
|
|
36
53
|
---
|
|
37
54
|
|
|
38
55
|
# Cost Tracking
|
|
39
56
|
|
|
40
57
|
## In One Sentence
|
|
41
58
|
|
|
42
|
-
|
|
43
|
-
|
|
59
|
+
Aitne meters the USD cost of every run, stores it locally, and rolls it
|
|
60
|
+
up on the Analytics page so you can see where your spend goes — and cap it
|
|
61
|
+
if you want.
|
|
44
62
|
|
|
45
|
-
##
|
|
63
|
+
## How It Works
|
|
46
64
|
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
65
|
+
- Each agent run writes its estimated cost into the `cost_usd` column of
|
|
66
|
+
the `agent_actions` table. The estimate is `token count × backend
|
|
67
|
+
pricing` — Aitne's best guess, never a bill.
|
|
68
|
+
- All data is derived from the daemon's local SQLite database and is never
|
|
69
|
+
sent anywhere external.
|
|
70
|
+
- The day boundary for "today" is the agent day (04:00 local by default),
|
|
71
|
+
not midnight.
|
|
50
72
|
|
|
51
|
-
## Where in the Dashboard
|
|
73
|
+
## Where to Look in the Dashboard
|
|
52
74
|
|
|
53
|
-
|
|
54
|
-
- **Settings → Models → Cost Guardrails** holds
|
|
55
|
-
`autonomousDailyCostCapUsd`.
|
|
75
|
+
### Analytics page (the rollup)
|
|
56
76
|
|
|
57
|
-
|
|
77
|
+
Open **Analytics**. It has two tabs:
|
|
58
78
|
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
79
|
+
- **Cost** — per-run USD spend. A period selector switches between
|
|
80
|
+
**Daily**, **Weekly**, and **Monthly** windows, with summary cards for
|
|
81
|
+
**Today**, **Last 7 Days**, and **Last 30 Days**. Inside Cost:
|
|
82
|
+
- **Overview** — a cost-trend chart over the selected period plus a
|
|
83
|
+
**By Event Type** breakdown (which process keys cost the most).
|
|
84
|
+
- **By Backend** — totals and a trend chart split by the backend that
|
|
85
|
+
*actually executed* each run. This reflects fallbacks and Gemini
|
|
86
|
+
auto-routing, not just your configured preferred backend.
|
|
87
|
+
- **Metrics** (`/analytics?tab=metrics`) — operational health: activity
|
|
88
|
+
volume, execution breakdown, error rates, notification throughput.
|
|
89
|
+
|
|
90
|
+
Note on delegated work: only **cross-backend** delegated calls show up as
|
|
91
|
+
separate runs. Same-backend delegated/native calls roll up under the
|
|
92
|
+
parent session's totals.
|
|
93
|
+
|
|
94
|
+
### Sidebar footer (running daily total)
|
|
95
|
+
|
|
96
|
+
The left sidebar footer shows today's running spend (`health.todayCostUsd`
|
|
97
|
+
— `SUM(cost_usd)` over the current agent day). It updates as runs complete.
|
|
98
|
+
|
|
99
|
+
## Capping Autonomous Spend
|
|
100
|
+
|
|
101
|
+
**Settings → Models → Cost guardrails** holds two optional caps. Both are
|
|
102
|
+
disabled (blank) by default and apply only to **autonomous** work —
|
|
103
|
+
reactive work such as DMs and mentions always runs.
|
|
104
|
+
|
|
105
|
+
- **`autonomousDailyCostCapUsd`** (Autonomous Daily Cost Cap) — when
|
|
106
|
+
today's autonomous spend reaches the cap, the dispatcher skips
|
|
107
|
+
lower-priority routines first, using priority-based degradation:
|
|
108
|
+
- `hourly_check` — skipped at 100% of the cap
|
|
109
|
+
- `roadmap_refresh` — skipped at 120%
|
|
110
|
+
- `evening_review` — skipped at 150%
|
|
111
|
+
- `morning_routine` — last to be cut, only at 200%
|
|
112
|
+
|
|
113
|
+
This leaves headroom for the morning briefing even when you're over
|
|
114
|
+
budget.
|
|
115
|
+
|
|
116
|
+
- **`autonomousMonthlyCostCapUsd`** (Autonomous Monthly Cost Cap — alert
|
|
117
|
+
only) — a notification threshold for rolling 30-day spend. It surfaces a
|
|
118
|
+
warning at 80% and an error at 100% in the Notifications panel but does
|
|
119
|
+
**not** stop any work. Pair it with the daily cap if you want a hard
|
|
120
|
+
guardrail.
|
|
121
|
+
|
|
122
|
+
## When a Cost Number Looks Wrong
|
|
123
|
+
|
|
124
|
+
Aitne's count is its best estimate from per-call token math, not the
|
|
125
|
+
provider's invoice. If a number looks off, cross-check it against the
|
|
126
|
+
backend's own usage dashboard.
|
|
62
127
|
|
|
63
128
|
## Related
|
|
64
129
|
|
|
65
130
|
- [Costs and Quotas](../../concepts/costs-and-quotas.md)
|
|
131
|
+
- [Process Keys](../../concepts/process-keys.md)
|
|
132
|
+
- [Backend Routing](./backend-routing.md)
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
slug: features/operations/managed-chromium
|
|
4
|
+
title: Managed Chromium (B-4)
|
|
5
|
+
id: managed-chromium
|
|
6
|
+
aliases:
|
|
7
|
+
- managed chromium
|
|
8
|
+
- B-4
|
|
9
|
+
- purchase confirmation
|
|
10
|
+
- browser automation
|
|
11
|
+
- chromium automation
|
|
12
|
+
category: features
|
|
13
|
+
summary: |
|
|
14
|
+
Experimental, default-off purchase-confirmation flow. The daemon
|
|
15
|
+
spawns a managed Chromium profile to complete a vendor checkout the
|
|
16
|
+
agent has already prepared, after the operator approves with a
|
|
17
|
+
single-use DM token. Heavily gated; designed to be safe to read about
|
|
18
|
+
before you ever turn it on.
|
|
19
|
+
section: operations
|
|
20
|
+
tags:
|
|
21
|
+
- operations
|
|
22
|
+
- safety
|
|
23
|
+
- browser-automation
|
|
24
|
+
- experimental
|
|
25
|
+
status: experimental
|
|
26
|
+
ask_examples:
|
|
27
|
+
- What is B-4?
|
|
28
|
+
- Can Aitne buy things for me?
|
|
29
|
+
- What is the !~ token in my DM?
|
|
30
|
+
- How do I enable managed Chromium purchases?
|
|
31
|
+
- How do I block a site from managed Chromium?
|
|
32
|
+
locale: en-US
|
|
33
|
+
created: 2026-05-22
|
|
34
|
+
updated: 2026-05-28
|
|
35
|
+
keywords:
|
|
36
|
+
- managed chromium
|
|
37
|
+
- browser automation
|
|
38
|
+
- purchase token
|
|
39
|
+
- B-4
|
|
40
|
+
- "!~xxxxxxxx"
|
|
41
|
+
- per-site opt-in
|
|
42
|
+
- experimental danger
|
|
43
|
+
- hostname denylist
|
|
44
|
+
related:
|
|
45
|
+
- features/integrations/browser-history
|
|
46
|
+
- features/operations/approvals
|
|
47
|
+
- concepts/safety-model
|
|
48
|
+
- concepts/safety-and-execution
|
|
49
|
+
- reference/disallowed-tools
|
|
50
|
+
ui_anchors:
|
|
51
|
+
- /settings/integrations/browser-history-managed
|
|
52
|
+
- /settings/integrations/browser-history-managed/b4
|
|
53
|
+
process_keys:
|
|
54
|
+
- browser_task
|
|
55
|
+
- message.dm
|
|
56
|
+
config_keys:
|
|
57
|
+
- browserTaskHostnameDenylist
|
|
58
|
+
api_endpoints:
|
|
59
|
+
- POST /api/browser-automation/b4/enabled
|
|
60
|
+
- PATCH /api/browser-automation/sites/:siteKey/b4-config
|
|
61
|
+
- GET /api/browser-automation/purchase-tokens
|
|
62
|
+
- POST /api/browser-automation/sites/:siteKey/connect
|
|
63
|
+
- POST /api/browser-task
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
# Managed Chromium (B-4)
|
|
67
|
+
|
|
68
|
+
B-4 is the experimental purchase-confirmation flow. When you've asked
|
|
69
|
+
the agent to "buy X" or "complete the checkout", and the vendor is on
|
|
70
|
+
your B-4 allowlist, the daemon spawns a managed Chromium profile,
|
|
71
|
+
fills the cart, and pauses for an explicit one-time token from your
|
|
72
|
+
DM before clicking the final confirm. **It is default-off**, gated
|
|
73
|
+
behind every safety check the project ships, and not surfaced in the
|
|
74
|
+
public dashboard until the upstream B-3 surface (browser-history
|
|
75
|
+
research) has been stable for six weeks.
|
|
76
|
+
|
|
77
|
+
This page is written so it's safe to read whether you've enabled it
|
|
78
|
+
or not.
|
|
79
|
+
|
|
80
|
+
## What's Actually Gated
|
|
81
|
+
|
|
82
|
+
Before B-4 can run, every one of these must be true:
|
|
83
|
+
|
|
84
|
+
1. The **master toggle** `runtime_state.managed_chromium.b4_enabled`
|
|
85
|
+
is `true`. Default is `false`, set via
|
|
86
|
+
`POST /api/browser-automation/b4/enabled` with body
|
|
87
|
+
`{ enabled: true, acknowledge: true }` (Approve-tier).
|
|
88
|
+
2. You've acknowledged the **experimental-danger modal** on
|
|
89
|
+
`/settings/integrations/browser-history-managed/b4`. The modal
|
|
90
|
+
lists the failure modes and warns that the guard is bypassable if
|
|
91
|
+
the daemon or messaging platform is compromised.
|
|
92
|
+
3. At least one **primary DM channel** is set (Slack / Telegram /
|
|
93
|
+
Discord / WhatsApp). The single-use token is delivered there; the
|
|
94
|
+
dashboard never shows the raw token.
|
|
95
|
+
4. The **site is on your B-4 allowlist**. Per-site enablement happens
|
|
96
|
+
via `PATCH /api/browser-automation/sites/:siteKey/b4-config`
|
|
97
|
+
(Approve). Sites not in the allowlist cannot run a B-4 flow even
|
|
98
|
+
if the master toggle is on.
|
|
99
|
+
5. The **site is signed in** through the B-2.5 per-site sign-in
|
|
100
|
+
flow (`POST /api/browser-automation/sites/:siteKey/connect` →
|
|
101
|
+
sign in by hand in the spawned UI Chromium →
|
|
102
|
+
`POST .../finalize`). The daemon stores the profile in a
|
|
103
|
+
restricted directory the absolute-block layer protects from any
|
|
104
|
+
skill.
|
|
105
|
+
|
|
106
|
+
## Structural Defences (no hardcoded category denylist)
|
|
107
|
+
|
|
108
|
+
Earlier builds hardcoded a category denylist (banking, brokerages,
|
|
109
|
+
government, healthcare, identity / legal, payment processors). **That
|
|
110
|
+
framework-level category denylist was removed on 2026-05-27** — Aitne
|
|
111
|
+
is not a Japan-specific product and does not ship an opinionated brand
|
|
112
|
+
or category blocklist. What protects you now is structural, not a
|
|
113
|
+
category list:
|
|
114
|
+
|
|
115
|
+
1. **IP CIDR egress layer (hardcoded, not configurable).** Any
|
|
116
|
+
navigation that resolves to a private (RFC1918), loopback,
|
|
117
|
+
link-local, multicast, cloud-metadata (`169.254.169.254`), or the
|
|
118
|
+
IPv6 equivalents is denied at the egress chokepoint
|
|
119
|
+
(`shouldDenyEgress` in `egress-denylist.ts`). This is the
|
|
120
|
+
defence-in-depth against SSRF — it cannot be turned off.
|
|
121
|
+
2. **Payment-path blocker.** A URL-pattern matcher
|
|
122
|
+
(`payment-path-blocker.ts`) trips at form-submit time on
|
|
123
|
+
payment-handoff paths so the agent can't silently push a
|
|
124
|
+
transaction through.
|
|
125
|
+
3. **The B-4 token primitive itself** — no final confirm without a
|
|
126
|
+
live, matched, single-use token (see below).
|
|
127
|
+
|
|
128
|
+
**Domain-level deny is now user-managed.** If you want to keep B-4 (or
|
|
129
|
+
any browser task) away from specific hostnames, add them to
|
|
130
|
+
`browserTaskHostnameDenylist` (default empty, up to 500 entries) from
|
|
131
|
+
Dashboard → `/settings/integrations/browser-history-managed`. The list
|
|
132
|
+
ships empty.
|
|
133
|
+
|
|
134
|
+
## The Token Flow
|
|
135
|
+
|
|
136
|
+
1. The agent prepares the checkout in a managed Chromium tab and
|
|
137
|
+
pauses at the final confirm step.
|
|
138
|
+
2. The daemon mints a single-use token with the prefix `!~` followed
|
|
139
|
+
by 8 random hex characters (e.g. `!~3a1f9c7b`), inserts a
|
|
140
|
+
`browser_automation_purchase_tokens` row keyed on a server-side
|
|
141
|
+
`jti`, and DMs the token to a primary channel together with a
|
|
142
|
+
screenshot of the exact cart state.
|
|
143
|
+
3. You reply with the token on the same DM channel. The daemon
|
|
144
|
+
matches inbound text against pending tokens; a match advances the
|
|
145
|
+
flow and the agent clicks confirm.
|
|
146
|
+
4. **5-minute timeout.** If no match arrives in 5 minutes, the token
|
|
147
|
+
expires, the tab closes, and the agent reports back that the
|
|
148
|
+
purchase was abandoned.
|
|
149
|
+
5. **Raw token never leaves the table.** The dashboard's audit views
|
|
150
|
+
show `jti` + delivery state only — even a brief credential
|
|
151
|
+
compromise can't extract live tokens.
|
|
152
|
+
|
|
153
|
+
`GET /api/browser-automation/purchase-tokens` lists pending +
|
|
154
|
+
recent (Approve-tier); `DELETE
|
|
155
|
+
/api/browser-automation/purchase-tokens/:jti` cancels a pending
|
|
156
|
+
token before its timeout.
|
|
157
|
+
|
|
158
|
+
## Site Bootstrap (B-2.5)
|
|
159
|
+
|
|
160
|
+
The same site infrastructure powers anonymous reads (B-2),
|
|
161
|
+
authenticated reads (B-2.5), and B-4. Per-site state is managed by
|
|
162
|
+
`managed-chromium-sites-store.ts`; the bootstrap UI flow is:
|
|
163
|
+
|
|
164
|
+
| Step | Route |
|
|
165
|
+
|---|---|
|
|
166
|
+
| Spawn a UI Chromium window to sign in by hand | `POST /api/browser-automation/sites/:siteKey/connect` |
|
|
167
|
+
| Poll progress | `GET /api/browser-automation/sites/:siteKey/status` |
|
|
168
|
+
| Confirm signed-in, close UI window | `POST /api/browser-automation/sites/:siteKey/finalize` |
|
|
169
|
+
| Re-spawn UI Chromium reusing the profile (re-auth) | `POST /api/browser-automation/sites/:siteKey/reauth` |
|
|
170
|
+
| Kill processes + delete the profile dir | `POST /api/browser-automation/sites/:siteKey/disconnect` |
|
|
171
|
+
|
|
172
|
+
## When It Runs
|
|
173
|
+
|
|
174
|
+
| Surface | Source |
|
|
175
|
+
|---|---|
|
|
176
|
+
| Operator asks the agent to "buy X" / "checkout" via DM | `message.dm` → checkout path |
|
|
177
|
+
| Open-ended browser request (DM, dashboard, or scheduler) | `browser_task` (medium tier, Claude-only) — see `BROWSER_TASK_REDESIGN_PLAN.md` |
|
|
178
|
+
|
|
179
|
+
Proactive re-auth DMs come from the `reauth-detector` in
|
|
180
|
+
`managed-chromium-supervisor.ts`.
|
|
181
|
+
|
|
182
|
+
## Why You'd Turn It On
|
|
183
|
+
|
|
184
|
+
You wouldn't, yet. Until B-3 has been stable for six weeks, B-4 is
|
|
185
|
+
gated to project-owner self-testing. Once it opens, the typical
|
|
186
|
+
use case is recurring small purchases at vendors you trust (groceries,
|
|
187
|
+
specific subscriptions, narrow shopping windows) where the agent has
|
|
188
|
+
the cart context and you want a single tap to confirm rather than a
|
|
189
|
+
full hand-off.
|
|
190
|
+
|
|
191
|
+
## Why You Might Not
|
|
192
|
+
|
|
193
|
+
- The guard is **experimental and bypassable** if the daemon process
|
|
194
|
+
or any of your messaging platforms is compromised. A high-privilege
|
|
195
|
+
attacker on either side can pretend to be you and complete a
|
|
196
|
+
purchase.
|
|
197
|
+
- Vendor flows change. A working B-4 site today can break tomorrow if
|
|
198
|
+
the vendor restructures the checkout DOM — the agent's recovery
|
|
199
|
+
story is "abandon and DM you", but you'll still see a partial cart.
|
|
200
|
+
- There is no built-in category guard. Aitne will not refuse a
|
|
201
|
+
high-stakes site for you (banks, brokerages, government, healthcare)
|
|
202
|
+
— those decisions are yours. If you don't trust B-4 with a site,
|
|
203
|
+
simply don't add it to the per-site allowlist, or add its hostname
|
|
204
|
+
to `browserTaskHostnameDenylist`.
|
|
205
|
+
|
|
206
|
+
## Related
|
|
207
|
+
|
|
208
|
+
- [Approvals](approvals.md) — the broader Approve-tier model that
|
|
209
|
+
governs everything B-4 routes through.
|
|
210
|
+
- [Safety Model](../../concepts/safety-model.md) — the categorical
|
|
211
|
+
rules. B-4 narrows the "no financial transactions" rule to a
|
|
212
|
+
gated, screenshot-first, token-bound exception.
|
|
213
|
+
- [Safety and Execution](../../concepts/safety-and-execution.md) — Safe
|
|
214
|
+
/ Allow modes and the absolute-block layer that protects the
|
|
215
|
+
managed-Chromium profile dir from any skill.
|
|
216
|
+
- [Browser History](../integrations/browser-history.md) — separate
|
|
217
|
+
read-only integration (B-3); B-4 builds on the same site
|
|
218
|
+
registry but is a distinct surface.
|
|
219
|
+
- [Disallowed Tools](../../reference/disallowed-tools.md) — the
|
|
220
|
+
absolute-block matchers that cover managed-Chromium profile
|
|
221
|
+
directories.
|