From 8cead59b7b0e3edf51b8cc87ae18740a116f1a6c Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Wed, 4 Nov 2026 11:47:28 +0100 Subject: [PATCH] AIHawk: find the jobs that fit your CV and apply to them This repository is AIHawk again. Dots moved to feder-cr/invisible_dots with its history. Every day a job merges the public job databases into one (pipeline/), one row per posting, and publishes it as a release. `aihawk scan` queries it in place, so a user scrapes nothing and downloads only what the search reads. `score` judges jobs against the CV through OrcaRouter, `apply` tailors the CV and fills the form through invisible-playwright-mcp. The model never sends an application: it fills the form and names the submit control, and AIHawk clicks it after the person's yes, or by itself with --auto-submit. While the model works, a click on what would send the form and the Enter key are refused. What the CV and the answers file do not say comes back as a question, never as a guess. --- .gitattributes | 30 +- .githooks/pre-push | 151 - .github/ISSUE_TEMPLATE/01-setup.yml | 61 - .github/ISSUE_TEMPLATE/02-bug.yml | 70 - .github/ISSUE_TEMPLATE/03-feature.yml | 28 - .github/ISSUE_TEMPLATE/config.yml | 8 - .github/PULL_REQUEST_TEMPLATE.md | 17 - .github/gates-requirements.txt | 1 - .github/scripts/golden-release.mjs | 69 - .github/scripts/test-guard.mjs | 193 - .github/test-floors.json | 25 - .github/workflows/golden-image.yml | 76 - .github/workflows/jobs-database.yml | 34 + .github/workflows/publish-wiki.yml | 82 - .github/workflows/tests.yml | 318 +- .gitignore | 43 +- .npmrc | 2 - CODE_OF_CONDUCT.md | 33 - CONTRIBUTING.md | 41 - NOTICE | 11 + README.md | 124 +- SECURITY.md | 40 - THIRD_PARTY_NOTICES.md | 634 -- apps/api/package.json | 25 - apps/api/src/config.ts | 100 - apps/api/src/database.ts | 59 - apps/api/src/doctor.ts | 55 - apps/api/src/file-types.ts | 22 - apps/api/src/index.ts | 7 - apps/api/src/lock.ts | 22 - apps/api/src/server.ts | 516 - apps/api/src/start.ts | 217 - apps/api/src/vm-driver.ts | 137 - apps/api/test/api.test.ts | 779 -- apps/api/test/channels.test.ts | 234 - apps/api/test/config.test.ts | 98 - apps/api/test/doctor.test.ts | 78 - apps/api/test/file-types.test.ts | 38 - apps/api/test/guest-http.ts | 156 - apps/api/test/host-facts.ts | 8 - apps/api/test/start.test.ts | 303 - apps/api/test/vm-driver.test.ts | 272 - apps/api/test/whatsapp.test.ts | 209 - apps/api/tsconfig.json | 7 - apps/cli/package.json | 30 - apps/cli/scripts/build.mjs | 25 - apps/cli/scripts/bundle-options.d.mts | 4 - apps/cli/scripts/bundle-options.mjs | 22 - apps/cli/src/api-client.ts | 32 - apps/cli/src/cli.ts | 755 -- apps/cli/src/commands.ts | 10 - apps/cli/src/doctor/command.ts | 10 - apps/cli/src/doctor/render.ts | 22 - apps/cli/src/exit.ts | 14 - apps/cli/src/host.ts | 187 - apps/cli/src/index.ts | 1 - apps/cli/src/main.ts | 43 - apps/cli/src/secret-input.ts | 49 - apps/cli/src/serve.ts | 77 - apps/cli/src/setup/all.ts | 91 - apps/cli/src/setup/build.ts | 84 - apps/cli/src/setup/install.ts | 257 - apps/cli/src/setup/powershell.ts | 160 - apps/cli/src/setup/qemu-pin.ts | 63 - apps/cli/src/setup/setup.ts | 130 - apps/cli/src/web.ts | 164 - apps/cli/test/build.test.ts | 98 - apps/cli/test/cli.test.ts | 813 -- apps/cli/test/doctor.test.ts | 48 - apps/cli/test/install.test.ts | 234 - apps/cli/test/powershell.test.ts | 162 - apps/cli/test/qemu-pin.test.ts | 37 - apps/cli/test/secret-input.test.ts | 85 - apps/cli/test/serve.test.ts | 178 - apps/cli/test/setup-all.test.ts | 119 - apps/cli/test/setup.test.ts | 191 - apps/cli/test/web.test.ts | 234 - apps/cli/tsconfig.json | 7 - apps/scheduler/package.json | 20 - apps/scheduler/src/dispatcher.ts | 76 - apps/scheduler/src/driver.ts | 164 - apps/scheduler/src/guest-events.ts | 132 - apps/scheduler/src/inbound.ts | 301 - apps/scheduler/src/index.ts | 7 - apps/scheduler/src/lifecycle.ts | 878 -- apps/scheduler/src/scheduler.ts | 922 -- apps/scheduler/src/support.ts | 66 - apps/scheduler/src/testing.ts | 879 -- apps/scheduler/test/commit-points.test.ts | 197 - apps/scheduler/test/delivery.test.ts | 379 - apps/scheduler/test/engine-shapes.test.ts | 152 - .../upgrade/golden-b326f2a1d4fe/host.sql | 768 -- .../upgrade/golden-b326f2a1d4fe/master.key | 1 - .../test/fixtures/upgrade/make-host-state.ts | 111 - apps/scheduler/test/host-shapes.test.ts | 148 - apps/scheduler/test/scheduler.test.ts | 1506 --- apps/scheduler/test/upgrade.test.ts | 102 - apps/scheduler/tsconfig.json | 7 - apps/vm-manager/package.json | 21 - apps/vm-manager/src/accelerator-access.ts | 102 - apps/vm-manager/src/doctor.ts | 291 - apps/vm-manager/src/errors.ts | 174 - apps/vm-manager/src/guest-client.ts | 495 - apps/vm-manager/src/host-doctor.ts | 78 - apps/vm-manager/src/host.ts | 160 - apps/vm-manager/src/index.ts | 85 - apps/vm-manager/src/ports.ts | 47 - apps/vm-manager/src/powershell.ts | 33 - apps/vm-manager/src/process-file.ts | 51 - apps/vm-manager/src/qemu-args.ts | 169 - apps/vm-manager/src/runner.ts | 222 - apps/vm-manager/src/seed.ts | 131 - apps/vm-manager/src/vm-manager.ts | 863 -- .../test/accelerator-access.test.ts | 85 - apps/vm-manager/test/agentd.linux.test.ts | 179 - apps/vm-manager/test/doctor-fakes.ts | 57 - apps/vm-manager/test/doctor.test.ts | 234 - apps/vm-manager/test/fakes.ts | 245 - apps/vm-manager/test/guest-client.test.ts | 474 - apps/vm-manager/test/host-doctor.test.ts | 64 - apps/vm-manager/test/host.test.ts | 150 - apps/vm-manager/test/ports.test.ts | 22 - apps/vm-manager/test/qemu-args.test.ts | 99 - apps/vm-manager/test/runner.test.ts | 141 - apps/vm-manager/test/seed.test.ts | 114 - apps/vm-manager/test/vm-manager.test.ts | 525 - apps/vm-manager/tsconfig.json | 7 - apps/web/.gitignore | 5 - apps/web/e2e/activity.spec.ts | 164 - apps/web/e2e/channels.spec.ts | 300 - apps/web/e2e/chat.spec.ts | 298 - apps/web/e2e/computer.spec.ts | 136 - apps/web/e2e/create-dot.spec.ts | 140 - apps/web/e2e/dot-settings.spec.ts | 281 - apps/web/e2e/fixtures.ts | 55 - apps/web/e2e/harness.ts | 155 - apps/web/e2e/inbox.spec.ts | 328 - apps/web/e2e/look.ts | 47 - apps/web/e2e/offline.spec.ts | 26 - apps/web/e2e/settings.spec.ts | 141 - apps/web/e2e/shell.spec.ts | 158 - apps/web/e2e/skills.spec.ts | 34 - apps/web/e2e/tasks.spec.ts | 228 - apps/web/e2e/tsconfig.json | 10 - apps/web/next.config.ts | 37 - apps/web/package.json | 54 - apps/web/playwright.config.ts | 21 - apps/web/postcss.config.mjs | 6 - apps/web/scripts/build.mjs | 16 - apps/web/scripts/standalone.mjs | 23 - apps/web/src/app/(app)/approvals/page.tsx | 7 - .../src/app/(app)/dots/[id]/activity/page.tsx | 11 - .../app/(app)/dots/[id]/approvals/page.tsx | 8 - .../src/app/(app)/dots/[id]/channels/page.tsx | 11 - .../web/src/app/(app)/dots/[id]/chat/page.tsx | 11 - .../src/app/(app)/dots/[id]/computer/page.tsx | 12 - apps/web/src/app/(app)/dots/[id]/layout.tsx | 18 - apps/web/src/app/(app)/dots/[id]/page.tsx | 6 - .../src/app/(app)/dots/[id]/settings/page.tsx | 11 - .../src/app/(app)/dots/[id]/skills/page.tsx | 12 - .../(app)/dots/[id]/tasks/[taskId]/page.tsx | 12 - .../src/app/(app)/dots/[id]/tasks/layout.tsx | 6 - .../src/app/(app)/dots/[id]/tasks/page.tsx | 11 - .../src/app/(app)/dots/[id]/timeline/page.tsx | 7 - apps/web/src/app/(app)/inbox/page.tsx | 9 - apps/web/src/app/(app)/layout.tsx | 18 - apps/web/src/app/(app)/new/page.tsx | 8 - apps/web/src/app/(app)/page.tsx | 8 - apps/web/src/app/(app)/settings/page.tsx | 8 - apps/web/src/app/api/[...path]/route.ts | 71 - apps/web/src/app/globals.css | 116 - apps/web/src/app/layout.tsx | 40 - apps/web/src/app/not-found.tsx | 21 - apps/web/src/app/tokens.css | 88 - apps/web/src/components/DotShell.tsx | 78 - apps/web/src/components/ErrorAlert.tsx | 30 - .../src/components/activity/ActivityView.tsx | 124 - .../src/components/activity/activity-row.tsx | 60 - .../components/activity/use-activity-log.ts | 72 - .../src/components/approvals/ApprovalCard.tsx | 130 - .../components/approvals/InlineApproval.tsx | 11 - .../components/approvals/TaskApprovals.tsx | 34 - .../approvals/always-allow-dialog.tsx | 80 - .../components/approvals/approval-body.tsx | 71 - .../src/components/approvals/diff-preview.tsx | 57 - .../src/components/approvals/use-answers.ts | 85 - .../src/components/channels/ChannelsView.tsx | 71 - .../src/components/channels/channel-card.tsx | 36 - .../components/channels/linked-channel.tsx | 100 - .../src/components/channels/pairing-panel.tsx | 90 - .../src/components/channels/peers-list.tsx | 86 - .../src/components/channels/qr-connect.tsx | 193 - .../components/channels/settings-switches.tsx | 50 - .../src/components/channels/state-chip.tsx | 16 - .../src/components/channels/telegram-card.tsx | 46 - .../src/components/channels/token-form.tsx | 60 - .../src/components/channels/whatsapp-card.tsx | 56 - apps/web/src/components/chat/ChatView.tsx | 157 - .../web/src/components/chat/activity-step.tsx | 41 - apps/web/src/components/chat/activity.tsx | 113 - apps/web/src/components/chat/chat-data.tsx | 170 - apps/web/src/components/chat/composer.tsx | 88 - apps/web/src/components/chat/conversation.tsx | 65 - apps/web/src/components/chat/message.tsx | 51 - apps/web/src/components/chat/tool-status.tsx | 29 - apps/web/src/components/chat/working-row.tsx | 24 - .../src/components/computer/ComputerPanel.tsx | 34 - .../src/components/computer/ComputerView.tsx | 46 - .../components/computer/automations-note.tsx | 33 - .../src/components/computer/computer-off.tsx | 42 - .../components/computer/computer-status.tsx | 16 - .../src/components/computer/file-preview.tsx | 125 - .../web/src/components/computer/files-tab.tsx | 179 - .../src/components/computer/frame-view.tsx | 57 - .../src/components/computer/screen-tab.tsx | 21 - .../src/components/computer/screen-view.tsx | 65 - .../web/src/components/computer/usage-tab.tsx | 194 - apps/web/src/components/computer/use-frame.ts | 80 - apps/web/src/components/confirm-dialog.tsx | 64 - apps/web/src/components/copy-button.tsx | 43 - .../components/dot-settings/DotSettings.tsx | 202 - .../components/dot-settings/delete-dot.tsx | 72 - .../dot-settings/mcp-servers-panel.tsx | 251 - .../web/src/components/dot-settings/panel.tsx | 28 - .../src/components/dot-settings/panels.tsx | 135 - .../dot-settings/permissions-panel.tsx | 108 - .../components/dot-settings/review-dialog.tsx | 53 - .../src/components/dot-settings/tool-table.ts | 30 - .../src/components/dot-settings/vm-proxy.tsx | 78 - apps/web/src/components/dot/CostPill.tsx | 33 - apps/web/src/components/dot/DotHeader.tsx | 132 - apps/web/src/components/dot/DotTabs.tsx | 50 - apps/web/src/components/dot/PowerMenu.tsx | 61 - apps/web/src/components/dot/tone.ts | 28 - apps/web/src/components/dot/use-power.ts | 33 - apps/web/src/components/dot/use-ring.ts | 13 - .../src/components/elements/approval-card.tsx | 145 - apps/web/src/components/events.tsx | 149 - apps/web/src/components/home/DotCard.tsx | 87 - apps/web/src/components/home/HomePage.tsx | 102 - .../web/src/components/home/last-activity.tsx | 65 - apps/web/src/components/inbox/History.tsx | 123 - apps/web/src/components/inbox/InboxView.tsx | 65 - apps/web/src/components/inbox/NeedsYou.tsx | 252 - apps/web/src/components/inbox/filters.tsx | 57 - apps/web/src/components/inbox/use-history.ts | 85 - .../src/components/inbox/use-inbox-keys.ts | 75 - apps/web/src/components/markdown.tsx | 57 - apps/web/src/components/new-dot/Field.tsx | 180 - .../src/components/new-dot/FormSections.tsx | 143 - .../web/src/components/new-dot/NewDotPage.tsx | 146 - .../src/components/new-dot/PreflightPanel.tsx | 15 - .../src/components/new-dot/PresetPicker.tsx | 39 - .../src/components/settings/HostSettings.tsx | 109 - apps/web/src/components/setup/CheckList.tsx | 63 - apps/web/src/components/setup/KeyForm.tsx | 96 - apps/web/src/components/setup/Section.tsx | 31 - .../src/components/setup/SetupChecklist.tsx | 56 - .../src/components/setup/use-host-checks.ts | 63 - apps/web/src/components/shell/ApiStatus.tsx | 43 - apps/web/src/components/shell/AppShell.tsx | 65 - apps/web/src/components/shell/DotAvatar.tsx | 36 - apps/web/src/components/shell/Rail.tsx | 147 - apps/web/src/components/shell/StatusIcon.tsx | 30 - apps/web/src/components/shell/ThemeToggle.tsx | 45 - apps/web/src/components/shell/attention.tsx | 178 - .../src/components/shell/offline-banner.tsx | 27 - apps/web/src/components/skills/SkillsView.tsx | 93 - apps/web/src/components/tasks/TasksView.tsx | 130 - apps/web/src/components/tasks/cancel-task.tsx | 65 - .../src/components/tasks/history-table.tsx | 125 - .../src/components/tasks/new-task-dialog.tsx | 118 - apps/web/src/components/tasks/story.tsx | 107 - apps/web/src/components/tasks/task-card.tsx | 119 - apps/web/src/components/tasks/task-drawer.tsx | 150 - apps/web/src/components/tasks/task-status.tsx | 27 - apps/web/src/components/tasks/tasks-data.tsx | 205 - apps/web/src/components/tool-family-icon.ts | 14 - apps/web/src/components/ui.tsx | 75 - apps/web/src/components/ui/alert.tsx | 66 - apps/web/src/components/ui/badge.tsx | 48 - apps/web/src/components/ui/button.tsx | 64 - apps/web/src/components/ui/dialog.tsx | 159 - apps/web/src/components/ui/dropdown-menu.tsx | 257 - apps/web/src/components/ui/input.tsx | 22 - apps/web/src/components/ui/label.tsx | 10 - apps/web/src/components/ui/separator.tsx | 28 - apps/web/src/components/ui/sheet.tsx | 143 - apps/web/src/components/ui/skeleton.tsx | 14 - apps/web/src/components/ui/sonner.tsx | 41 - apps/web/src/components/ui/switch.tsx | 29 - apps/web/src/components/ui/textarea.tsx | 21 - apps/web/src/components/ui/tooltip.tsx | 61 - apps/web/src/components/view-tabs.tsx | 42 - apps/web/src/components/yaml-editor.tsx | 65 - apps/web/src/index.ts | 1 - apps/web/src/instrumentation.ts | 12 - apps/web/src/lib/activity.ts | 39 - apps/web/src/lib/agent.ts | 46 - apps/web/src/lib/api.ts | 43 - apps/web/src/lib/approval-view.ts | 293 - apps/web/src/lib/attention.ts | 120 - apps/web/src/lib/avatar.ts | 34 - apps/web/src/lib/channel-link.ts | 56 - apps/web/src/lib/channels.ts | 134 - apps/web/src/lib/chat-thread.ts | 139 - apps/web/src/lib/chat-view.ts | 46 - apps/web/src/lib/chat-window.ts | 41 - apps/web/src/lib/computer-view.ts | 43 - apps/web/src/lib/computer.ts | 146 - apps/web/src/lib/config-draft.ts | 41 - apps/web/src/lib/config-fields.ts | 225 - apps/web/src/lib/diff.ts | 52 - apps/web/src/lib/dismissed.ts | 35 - apps/web/src/lib/dot-card.ts | 32 - apps/web/src/lib/dot-form.ts | 208 - apps/web/src/lib/dot-live.ts | 114 - apps/web/src/lib/dot-title.ts | 28 - apps/web/src/lib/draft.ts | 33 - apps/web/src/lib/events/view.ts | 257 - apps/web/src/lib/failed-tasks.ts | 26 - apps/web/src/lib/favicon.ts | 13 - apps/web/src/lib/files.ts | 57 - apps/web/src/lib/format.ts | 87 - apps/web/src/lib/host-settings.ts | 34 - apps/web/src/lib/inbox.ts | 83 - apps/web/src/lib/mcp-server-form.ts | 92 - apps/web/src/lib/messages.ts | 2 - apps/web/src/lib/offline.ts | 28 - apps/web/src/lib/parent.ts | 37 - apps/web/src/lib/permission-presets.ts | 64 - apps/web/src/lib/permission-table.ts | 86 - apps/web/src/lib/preflight.ts | 86 - apps/web/src/lib/proxy.ts | 174 - apps/web/src/lib/range.ts | 17 - apps/web/src/lib/save-file.ts | 10 - apps/web/src/lib/skills-view.ts | 27 - apps/web/src/lib/steps.ts | 143 - apps/web/src/lib/task-events.ts | 99 - apps/web/src/lib/task-form.ts | 44 - apps/web/src/lib/task-view.ts | 112 - apps/web/src/lib/theme.ts | 37 - apps/web/src/lib/time.ts | 29 - apps/web/src/lib/tone.ts | 2 - apps/web/src/lib/types.ts | 27 - apps/web/src/lib/use-now.ts | 15 - apps/web/src/lib/use-theme.ts | 52 - apps/web/src/lib/use-visible-interval.ts | 56 - apps/web/src/lib/utils.ts | 8 - apps/web/src/lib/yaml.ts | 112 - apps/web/test/activity.test.ts | 66 - apps/web/test/activity.test.tsx | 283 - apps/web/test/agent.test.ts | 36 - apps/web/test/api.test.ts | 44 - apps/web/test/approval-view.test.ts | 234 - apps/web/test/approvals.test.tsx | 326 - apps/web/test/attention.test.ts | 111 - apps/web/test/avatar.test.ts | 48 - apps/web/test/buttons.test.ts | 73 - apps/web/test/channel-link.test.ts | 52 - apps/web/test/channels-page.test.tsx | 580 -- apps/web/test/channels.test.ts | 153 - apps/web/test/chat-thread.test.ts | 176 - apps/web/test/chat-view.test.ts | 42 - apps/web/test/chat-window.test.ts | 51 - apps/web/test/chat.test.tsx | 588 -- apps/web/test/computer-page.test.tsx | 360 - apps/web/test/computer-panel.test.tsx | 132 - apps/web/test/computer-view.test.ts | 38 - apps/web/test/config-draft.test.ts | 98 - apps/web/test/config-fields.test.ts | 166 - apps/web/test/diff.test.ts | 67 - apps/web/test/dot-card.test.ts | 52 - apps/web/test/dot-form.test.ts | 155 - apps/web/test/dot-live.test.ts | 134 - apps/web/test/dot-settings.test.tsx | 571 - apps/web/test/dot-shell.test.tsx | 280 - apps/web/test/dot-title.test.ts | 57 - apps/web/test/draft.test.ts | 48 - apps/web/test/event-view.test.ts | 193 - apps/web/test/files.test.ts | 71 - apps/web/test/format.test.ts | 138 - apps/web/test/home.test.tsx | 257 - apps/web/test/host-settings.test.ts | 40 - apps/web/test/inbox-model.test.ts | 167 - apps/web/test/inbox.test.tsx | 601 -- apps/web/test/markdown.test.tsx | 70 - apps/web/test/mcp-servers.test.ts | 132 - apps/web/test/new-dot.test.tsx | 323 - apps/web/test/offline.test.ts | 31 - apps/web/test/parent.test.ts | 51 - apps/web/test/permission-presets.test.ts | 60 - apps/web/test/playwright-config.test.ts | 25 - apps/web/test/preflight.test.ts | 72 - apps/web/test/proxy.test.ts | 266 - apps/web/test/screen-view.test.tsx | 32 - apps/web/test/settings.test.tsx | 209 - apps/web/test/shell.test.tsx | 319 - apps/web/test/skills.test.tsx | 107 - apps/web/test/support/browser.ts | 42 - apps/web/test/support/config.ts | 10 - apps/web/test/support/contrast.ts | 41 - apps/web/test/support/control-plane.ts | 661 -- apps/web/test/support/tokens.ts | 23 - apps/web/test/task-events.test.ts | 172 - apps/web/test/task-form.test.ts | 42 - apps/web/test/task-view.test.ts | 117 - apps/web/test/tasks.test.tsx | 537 - apps/web/test/theme.test.tsx | 139 - apps/web/test/time.test.ts | 34 - apps/web/test/tokens.test.ts | 146 - apps/web/test/use-frame.test.tsx | 58 - apps/web/test/use-resource.test.tsx | 53 - apps/web/test/use-visible-interval.test.tsx | 97 - apps/web/test/yaml.test.ts | 63 - apps/web/tsconfig.json | 35 - docs/architecture.md | 3037 ------ docs/guide.md | 842 -- docs/hero/README.md | 57 - docs/hero/build.mjs | 97 - docs/hero/cut_out.py | 88 - docs/hero/html/mobile.html | 225 - docs/hero/html/small.html | 226 - docs/hero/html/social.html | 30 - docs/hero/html/wide.html | 288 - docs/hero/photos/characters-dark.png | Bin 1389131 -> 0 bytes docs/hero/photos/characters-light.png | Bin 1431892 -> 0 bytes docs/hero/photos/characters.png | Bin 1671904 -> 0 bytes docs/hero/photos/trending.png | Bin 93907 -> 0 bytes docs/images/hero-dark.gif | Bin 2828224 -> 0 bytes docs/images/hero-light.gif | Bin 2744440 -> 0 bytes docs/images/hero-mobile-dark.gif | Bin 1738651 -> 0 bytes docs/images/hero-mobile-light.gif | Bin 1617804 -> 0 bytes docs/images/hero-small-dark.gif | Bin 1956006 -> 0 bytes docs/images/hero-small-light.gif | Bin 1786755 -> 0 bytes docs/images/social-preview.png | Bin 331799 -> 0 bytes docs/wiki/agent-memory-systems-compared.md | 134 - docs/wiki/benchmarking-agents-on-real-vms.md | 92 - docs/wiki/browser-calls-that-lead-nowhere.md | 119 - docs/wiki/compacting-at-the-models-window.md | 83 - docs/wiki/how-a-dot-remembers.md | 122 - docs/wiki/index.md | 39 - docs/wiki/mcp-servers-a-person-declares.md | 104 - docs/wiki/studies.md | 21 - docs/wiki/the-browser-servers-own-words.md | 100 - docs/wiki/token-counts-across-models.md | 76 - guest/dot-agentd/.gitignore | 1 - guest/dot-agentd/README.md | 156 - guest/dot-agentd/cmd/dot-agentd/main.go | 218 - .../cmd/dot-agentd/main_privileged_test.go | 66 - guest/dot-agentd/cmd/dot-agentd/main_test.go | 277 - guest/dot-agentd/cmd/dot-agentd/relay.go | 102 - guest/dot-agentd/cmd/dot-agentd/relay_test.go | 54 - guest/dot-agentd/go.mod | 7 - guest/dot-agentd/internal/agentd/account.go | 64 - .../internal/agentd/account_linux.go | 195 - .../internal/agentd/account_linux_test.go | 44 - .../internal/agentd/account_other.go | 17 - .../agentd/account_privileged_test.go | 242 - .../internal/agentd/account_test.go | 64 - guest/dot-agentd/internal/agentd/agent.go | 99 - guest/dot-agentd/internal/agentd/auth_test.go | 150 - guest/dot-agentd/internal/agentd/config.go | 34 - .../agentd/every_interface_linux_test.go | 64 - guest/dot-agentd/internal/agentd/exec.go | 251 - .../dot-agentd/internal/agentd/exec_other.go | 12 - guest/dot-agentd/internal/agentd/exec_test.go | 258 - guest/dot-agentd/internal/agentd/exec_unix.go | 35 - guest/dot-agentd/internal/agentd/files.go | 493 - .../internal/agentd/files_confined_test.go | 43 - .../internal/agentd/files_links_test.go | 341 - .../dot-agentd/internal/agentd/files_test.go | 235 - guest/dot-agentd/internal/agentd/frames.go | 64 - guest/dot-agentd/internal/agentd/health.go | 40 - .../dot-agentd/internal/agentd/health_test.go | 87 - .../internal/agentd/helpers_test.go | 166 - guest/dot-agentd/internal/agentd/listen.go | 75 - .../internal/agentd/listen_other.go | 9 - .../dot-agentd/internal/agentd/listen_test.go | 97 - .../dot-agentd/internal/agentd/listen_unix.go | 17 - .../internal/agentd/platform_other.go | 13 - .../internal/agentd/platform_unix.go | 14 - guest/dot-agentd/internal/agentd/proc.go | 252 - .../dot-agentd/internal/agentd/proc_linux.go | 245 - .../dot-agentd/internal/agentd/proc_other.go | 25 - .../internal/agentd/proc_relay_test.go | 155 - guest/dot-agentd/internal/agentd/proc_test.go | 242 - guest/dot-agentd/internal/agentd/proof.go | 44 - .../dot-agentd/internal/agentd/proof_test.go | 57 - .../dot-agentd/internal/agentd/proxy_test.go | 145 - guest/dot-agentd/internal/agentd/relay.go | 181 - .../dot-agentd/internal/agentd/screenshot.go | 51 - .../internal/agentd/screenshot_test.go | 68 - guest/dot-agentd/internal/agentd/server.go | 277 - guest/dot-agentd/internal/agentd/system.go | 135 - .../dot-agentd/internal/agentd/system_test.go | 142 - guest/image-builder/README.md | 168 - .../builder/build-browser-env.sh | 48 - .../image-builder/builder/build-engine-env.sh | 36 - .../builder/engine-requirements.lock | 2004 ---- .../image-builder/builder/other-browsers.txt | 29 - guest/image-builder/builder/provision.sh | 147 - guest/image-builder/builder/user-data.yaml | 49 - guest/image-builder/package.json | 19 - guest/image-builder/pins.json | 33 - guest/image-builder/runtime/dot-desktop.sh | 44 - guest/image-builder/runtime/dot-install.sh | 29 - guest/image-builder/runtime/install.sh | 121 - guest/image-builder/runtime/vmproxy.py | 110 - guest/image-builder/src/assets.ts | 58 - guest/image-builder/src/browser-release.ts | 85 - guest/image-builder/src/download.ts | 212 - guest/image-builder/src/golden.ts | 342 - guest/image-builder/src/index.ts | 40 - guest/image-builder/src/lock.ts | 15 - guest/image-builder/src/manifest.ts | 130 - guest/image-builder/src/pins.ts | 142 - guest/image-builder/src/prebuilt.ts | 147 - guest/image-builder/src/process.ts | 25 - guest/image-builder/src/publish.ts | 75 - guest/image-builder/src/python-lock.ts | 58 - guest/image-builder/src/qemu.ts | 52 - guest/image-builder/src/runtime.ts | 279 - guest/image-builder/src/seed.ts | 86 - guest/image-builder/src/serial.ts | 120 - guest/image-builder/src/versions.ts | 58 - .../test/browser-release.test.ts | 58 - guest/image-builder/test/download.test.ts | 130 - guest/image-builder/test/engine-lock.test.ts | 51 - guest/image-builder/test/fake-runner.ts | 71 - guest/image-builder/test/golden.test.ts | 334 - guest/image-builder/test/guest-files.test.ts | 420 - guest/image-builder/test/http-fixture.ts | 65 - guest/image-builder/test/manifest.test.ts | 70 - guest/image-builder/test/pins.test.ts | 75 - guest/image-builder/test/python-lock.test.ts | 38 - guest/image-builder/test/qemu.test.ts | 89 - guest/image-builder/test/runtime.test.ts | 229 - guest/image-builder/test/seed.test.ts | 116 - guest/image-builder/test/serial.test.ts | 78 - guest/image-builder/test/smoke/README.md | 182 - .../image-builder/test/smoke/browser/proxy.py | 77 - .../image-builder/test/smoke/browser/smoke.sh | 298 - .../test/smoke/fake_openrouter.py | 310 - guest/image-builder/test/smoke/host-stream.sh | 25 - guest/image-builder/test/smoke/lib.sh | 195 - .../test/smoke/prepare-engine.sh | 87 - guest/image-builder/test/smoke/run.sh | 121 - guest/image-builder/test/smoke/smoke.sh | 828 -- guest/image-builder/tsconfig.json | 7 - guest/image-builder/units/dot-agentd.service | 34 - guest/image-builder/units/dot-desktop.service | 19 - .../units/invisible-dots-agent.service | 46 - invisible_engine_dots/LICENSE | 21 - invisible_engine_dots/THIRD_PARTY_NOTICES.md | 8 - invisible_engine_dots/UPSTREAM.md | 272 - invisible_engine_dots/nanobot/__init__.py | 30 - invisible_engine_dots/nanobot/__main__.py | 4 - .../nanobot/agent/__init__.py | 1 - .../nanobot/agent/context.py | 126 - .../nanobot/agent/context_governance.py | 858 -- invisible_engine_dots/nanobot/agent/hook.py | 97 - invisible_engine_dots/nanobot/agent/memory.py | 331 - invisible_engine_dots/nanobot/agent/runner.py | 930 -- .../nanobot/agent/tools/__init__.py | 1 - .../nanobot/agent/tools/_search_content.py | 89 - .../nanobot/agent/tools/apply_patch.py | 247 - .../nanobot/agent/tools/base.py | 343 - .../nanobot/agent/tools/context.py | 40 - .../nanobot/agent/tools/cron.py | 249 - .../nanobot/agent/tools/exec_session.py | 763 -- .../nanobot/agent/tools/execution.py | 200 - .../nanobot/agent/tools/file_state.py | 151 - .../nanobot/agent/tools/filesystem.py | 898 -- .../nanobot/agent/tools/gate_types.py | 65 - .../nanobot/agent/tools/mcp.py | 1199 --- .../nanobot/agent/tools/registry.py | 188 - .../nanobot/agent/tools/schema.py | 201 - .../nanobot/agent/tools/search.py | 662 -- .../nanobot/agent/tools/shell.py | 243 - .../nanobot/agent/transcript_metadata.py | 12 - .../nanobot/cron/__init__.py | 1 - invisible_engine_dots/nanobot/cron/service.py | 634 -- invisible_engine_dots/nanobot/cron/types.py | 184 - .../nanobot/dots/__init__.py | 1 - invisible_engine_dots/nanobot/dots/browser.py | 827 -- .../nanobot/dots/browser_tools.py | 320 - invisible_engine_dots/nanobot/dots/checks.py | 110 - .../nanobot/dots/computer.py | 342 - .../nanobot/dots/conversations.py | 178 - invisible_engine_dots/nanobot/dots/engine.py | 843 -- invisible_engine_dots/nanobot/dots/gate.py | 228 - .../nanobot/dots/identity_rules.py | 114 - invisible_engine_dots/nanobot/dots/images.py | 156 - invisible_engine_dots/nanobot/dots/main.py | 255 - .../nanobot/dots/mcp_servers.py | 513 - .../nanobot/dots/memory_update.py | 287 - .../nanobot/dots/permissions.py | 341 - .../nanobot/dots/projection.py | 64 - .../nanobot/dots/protocol.py | 390 - .../nanobot/dots/provider.py | 35 - invisible_engine_dots/nanobot/dots/secrets.py | 121 - invisible_engine_dots/nanobot/dots/server.py | 456 - .../nanobot/dots/server_capture.py | 49 - .../nanobot/dots/server_interface.py | 104 - invisible_engine_dots/nanobot/dots/skills.py | 112 - invisible_engine_dots/nanobot/dots/spend.py | 130 - invisible_engine_dots/nanobot/dots/store.py | 1317 --- invisible_engine_dots/nanobot/dots/targets.py | 183 - .../nanobot/dots/transcript_outbox.py | 186 - invisible_engine_dots/nanobot/dots/turns.py | 516 - .../nanobot/providers/__init__.py | 1 - .../nanobot/providers/base.py | 1108 -- .../providers/openai_compat_provider.py | 944 -- .../nanobot/providers/prompt_count.py | 53 - .../nanobot/providers/registry.py | 32 - .../nanobot/session/__init__.py | 1 - .../nanobot/session/history_visibility.py | 20 - .../nanobot/session/manager.py | 174 - .../nanobot/session/summary.py | 58 - .../nanobot/templates/__init__.py | 0 .../templates/agent/consolidator_archive.md | 22 - .../templates/agent/max_iterations_message.md | 1 - .../nanobot/templates/agent/memory_update.md | 23 - .../nanobot/templates/agent/platform.md | 52 - .../nanobot/templates/agent/tool_contract.md | 5 - .../nanobot/utils/__init__.py | 1 - .../nanobot/utils/cancellation.py | 10 - .../nanobot/utils/dict_keys.py | 17 - .../nanobot/utils/file_diff.py | 27 - .../nanobot/utils/helpers.py | 557 - .../nanobot/utils/llm_runtime.py | 51 - .../nanobot/utils/prompt_templates.py | 35 - .../nanobot/utils/runtime.py | 79 - .../nanobot/utils/token_encoding.py | 47 - invisible_engine_dots/pyproject.toml | 90 - .../skills/invisible-playwright/SKILL.md | 36 - invisible_engine_dots/tests/conftest.py | 14 - .../tests/core/agent/__init__.py | 0 .../tests/core/agent/runner_helpers.py | 159 - .../tests/core/agent/test_consolidator.py | 483 - .../tests/core/agent/test_context_builder.py | 130 - .../core/agent/test_context_governance.py | 39 - .../tests/core/agent/test_history_replay.py | 44 - .../tests/core/agent/test_model_limits.py | 176 - .../core/agent/test_reused_tool_call_ids.py | 88 - .../tests/core/agent/test_runner_core.py | 827 -- .../tests/core/agent/test_runner_errors.py | 399 - .../core/agent/test_runner_file_reads.py | 226 - .../tests/core/agent/test_runner_gate.py | 438 - .../core/agent/test_runner_governance.py | 957 -- .../tests/core/agent/test_runner_hooks.py | 494 - .../core/agent/test_runner_injections.py | 871 -- .../tests/core/agent/test_runner_reasoning.py | 117 - .../agent/test_runner_runtime_identity.py | 74 - .../tests/core/agent/test_runner_safety.py | 45 - .../core/agent/test_runner_tool_execution.py | 285 - .../core/agent/test_runner_tool_result_cut.py | 189 - .../tests/core/cron/test_cron_active_rearm.py | 139 - .../tests/core/cron/test_cron_missed_runs.py | 295 - .../tests/core/cron/test_cron_persistence.py | 370 - .../tests/core/cron/test_cron_service.py | 811 -- .../tests/core/cron/test_cron_tool_list.py | 398 - .../cron/test_cron_tool_schema_contract.py | 100 - .../core/providers/test_cached_tokens.py | 251 - .../test_enforce_role_alternation.py | 274 - .../tests/core/providers/test_failure_text.py | 58 - .../tests/core/providers/test_llm_response.py | 63 - .../providers/test_model_limits_provider.py | 119 - .../providers/test_openai_compat_stream.py | 238 - .../providers/test_openai_compat_timeout.py | 61 - .../tests/core/providers/test_prompt_count.py | 93 - .../test_provider_default_headers.py | 60 - .../providers/test_provider_error_metadata.py | 63 - .../core/providers/test_provider_retry.py | 530 - .../test_provider_retry_after_hints.py | 16 - .../providers/test_provider_tool_arguments.py | 30 - .../core/providers/test_reasoning_content.py | 112 - .../providers/test_sanitize_surrogates.py | 163 - .../providers/test_strip_image_content.py | 172 - .../core/providers/test_usage_contract.py | 92 - .../tests/core/tools/__init__.py | 0 .../tests/core/tools/test_apply_patch_tool.py | 323 - .../tests/core/tools/test_edit_advanced.py | 423 - .../core/tools/test_edit_enhancements.py | 185 - .../core/tools/test_exec_session_timeout.py | 117 - .../core/tools/test_exec_session_tools.py | 927 -- .../tests/core/tools/test_exec_session_tty.py | 170 - .../test_file_edit_coding_enhancements.py | 254 - .../tests/core/tools/test_file_state_store.py | 29 - .../tests/core/tools/test_filesystem_tools.py | 390 - .../tests/core/tools/test_mcp_tool.py | 1810 ---- .../core/tools/test_read_enhancements.py | 290 - .../tests/core/tools/test_search_tools.py | 727 -- .../tests/core/tools/test_shell_reap.py | 420 - .../tests/core/tools/test_terminal_text.py | 128 - .../core/tools/test_tool_descriptions.py | 97 - .../tests/core/tools/test_tool_registry.py | 345 - .../tests/core/tools/test_tool_validation.py | 717 -- .../tests/core/utils/conftest.py | 13 - .../tests/core/utils/test_helpers.py | 57 - .../utils/test_length_recovery_runtime.py | 28 - .../tests/core/utils/test_strip_think.py | 332 - .../tests/core/utils/test_token_encoding.py | 163 - .../tests/core/utils/test_token_estimation.py | 177 - .../tests/dots/automation_victim.py | 42 - invisible_engine_dots/tests/dots/conftest.py | 75 - .../tests/dots/host_wire_shapes.json | 162 - .../tests/dots/test_approval_matrix.py | 263 - .../tests/dots/test_automation_catch_up.py | 183 - .../tests/dots/test_browser_manager.py | 1090 -- .../tests/dots/test_browser_tools.py | 729 -- .../tests/dots/test_call_ids.py | 203 - .../tests/dots/test_checks.py | 162 - .../tests/dots/test_computer.py | 458 - .../tests/dots/test_conversations.py | 288 - .../tests/dots/test_engine.py | 1709 --- .../tests/dots/test_exec_through_relay.py | 205 - .../tests/dots/test_fake_relay.py | 60 - invisible_engine_dots/tests/dots/test_gate.py | 395 - .../tests/dots/test_host_wire_shapes.py | 67 - .../tests/dots/test_identity_rules.py | 82 - invisible_engine_dots/tests/dots/test_main.py | 507 - .../tests/dots/test_mcp_servers.py | 285 - .../tests/dots/test_mcp_turns.py | 226 - .../tests/dots/test_memory_update.py | 350 - .../tests/dots/test_permissions.py | 468 - .../tests/dots/test_projection.py | 132 - .../tests/dots/test_protocol.py | 273 - .../tests/dots/test_provider.py | 109 - .../tests/dots/test_secrets.py | 79 - .../tests/dots/test_server.py | 941 -- .../tests/dots/test_server_interface.py | 61 - .../tests/dots/test_session_keys.py | 15 - .../tests/dots/test_skills.py | 73 - .../tests/dots/test_spend.py | 232 - .../tests/dots/test_store.py | 1014 -- .../tests/dots/test_targets.py | 116 - .../tests/dots/test_transcript_outbox.py | 611 -- .../tests/dots/test_turns.py | 1218 --- .../tests/dots/test_upgrade.py | 96 - .../tests/dots/test_wire_shapes.py | 239 - .../tests/dots/wire_shapes.json | 1030 -- invisible_engine_dots/tests/fakes/__init__.py | 1 - .../tests/fakes/allow_all_gate.py | 15 - .../tests/fakes/browser_manager.py | 38 - .../tests/fakes/dot_config.py | 25 - .../tests/fakes/engine_harness.py | 191 - .../tests/fakes/fake_mcp_server.py | 263 - .../tests/fakes/fake_relay.py | 113 - .../tests/fakes/fake_tool_server.py | 87 - .../tests/fakes/invisible_playwright_mcp.json | 415 - .../tests/fakes/local_computer.py | 204 - invisible_engine_dots/tests/fakes/run_tool.py | 31 - .../tests/fakes/scripted_provider.py | 122 - .../invisible_playwright_mcp/__init__.py | 3 - .../invisible_playwright_mcp/__main__.py | 3 - .../invisible_playwright_mcp/mcp.py | 11 - .../tests/fakes/store_queries.py | 11 - .../tests/fakes/turn_harness.py | 154 - .../golden-b326f2a1d4fe/cron-jobs.json | 31 - .../upgrade/golden-b326f2a1d4fe/engine.sql | 175 - .../fixtures/upgrade/make_engine_state.py | 96 - .../tests/test_dependencies.py | 130 - invisible_engine_dots/tests/test_imports.py | 47 - optional/whatsapp/package-lock.json | 1379 --- optional/whatsapp/package.json | 11 - package-lock.json | 9207 ----------------- package.json | 31 - packages/channels/package.json | 24 - packages/channels/src/approval-text.ts | 70 - packages/channels/src/backoff.ts | 35 - packages/channels/src/binding-secrets.ts | 22 - packages/channels/src/channel.ts | 220 - packages/channels/src/hub.ts | 624 -- packages/channels/src/index.ts | 10 - packages/channels/src/link.ts | 62 - packages/channels/src/pairing.ts | 26 - packages/channels/src/rate.ts | 24 - packages/channels/src/runner.ts | 394 - packages/channels/src/telegram/callback.ts | 35 - .../channels/src/telegram/fake-bot-api.ts | 452 - packages/channels/src/telegram/telegram.ts | 297 - packages/channels/src/testing.ts | 133 - packages/channels/src/text.ts | 28 - .../src/whatsapp-baileys/auth-state.ts | 152 - .../channels/src/whatsapp-baileys/baileys.ts | 196 - .../channels/src/whatsapp-baileys/client.ts | 212 - .../channels/src/whatsapp-baileys/fake.ts | 117 - packages/channels/src/whatsapp-baileys/jid.ts | 35 - .../channels/src/whatsapp-baileys/port.ts | 73 - .../channels/src/whatsapp-baileys/whatsapp.ts | 242 - .../channels/test-optin/auth-state.test.ts | 197 - packages/channels/test-optin/client.ts | 14 - packages/channels/test-optin/reading.test.ts | 102 - packages/channels/test-optin/sending.test.ts | 28 - packages/channels/test-optin/shape.ts | 37 - packages/channels/test/approval.test.ts | 118 - packages/channels/test/baileys.test.ts | 72 - packages/channels/test/hub-approvals.test.ts | 300 - .../channels/test/hub-commit-points.test.ts | 110 - packages/channels/test/hub-telegram.test.ts | 537 - packages/channels/test/hub-whatsapp.test.ts | 523 - packages/channels/test/hub.test.ts | 493 - packages/channels/test/telegram.test.ts | 396 - packages/channels/test/units.test.ts | 141 - .../channels/test/whatsapp-client.test.ts | 120 - packages/channels/test/whatsapp.test.ts | 329 - packages/channels/test/world.ts | 72 - packages/channels/tsconfig.json | 7 - packages/database/package.json | 23 - packages/database/scripts/runtime-files.mjs | 26 - packages/database/src/approvals.ts | 138 - packages/database/src/channels.ts | 266 - packages/database/src/computers.ts | 165 - packages/database/src/crypto.ts | 49 - packages/database/src/database.ts | 137 - packages/database/src/db.ts | 173 - packages/database/src/dots.ts | 145 - packages/database/src/events.ts | 188 - packages/database/src/inbound.ts | 186 - packages/database/src/index.ts | 25 - packages/database/src/migrate.ts | 115 - .../database/src/migrations/0001_initial.sql | 99 - .../src/migrations/0002_inbound_events.sql | 38 - .../src/migrations/0003_task_spend.sql | 6 - .../database/src/migrations/0004_channels.sql | 61 - .../src/migrations/0005_channel_prompts.sql | 16 - .../src/migrations/0006_events_task.sql | 4 - .../migrations/0007_dot_config_version.sql | 5 - .../0008_computer_next_automation.sql | 17 - .../migrations/0009_dot_keeps_its_memory.sql | 11 - .../src/migrations/0010_dot_has_no_goal.sql | 7 - .../0011_dot_has_no_browser_settings.sql | 7 - .../0012_dot_has_no_context_tokens.sql | 7 - .../src/migrations/0013_approval_used.sql | 4 - .../src/migrations/0014_states_that_exist.sql | 7 - packages/database/src/pglite.ts | 84 - packages/database/src/postgres.ts | 133 - packages/database/src/rows.ts | 20 - packages/database/src/secrets.ts | 83 - packages/database/src/tasks.ts | 311 - packages/database/src/testing.ts | 123 - packages/database/test/adapters.test.ts | 358 - packages/database/test/channels.test.ts | 210 - packages/database/test/database.test.ts | 116 - packages/database/test/repositories.test.ts | 819 -- packages/database/tsconfig.json | 7 - packages/events/package.json | 18 - packages/events/src/event-log.ts | 229 - packages/events/src/index.ts | 9 - packages/events/test/event-log.test.ts | 218 - packages/events/tsconfig.json | 7 - packages/iso/package.json | 18 - packages/iso/scripts/kernel-check.ts | 72 - packages/iso/src/encoding.ts | 106 - packages/iso/src/index.ts | 3 - packages/iso/src/names.ts | 134 - packages/iso/src/writer.ts | 541 - packages/iso/test/iso-reader.ts | 247 - packages/iso/test/names.test.ts | 48 - packages/iso/test/writer.test.ts | 239 - packages/iso/tsconfig.json | 7 - packages/sdk/package.json | 19 - packages/sdk/src/client.ts | 550 - packages/sdk/src/event-log.ts | 76 - packages/sdk/src/index.ts | 3 - packages/sdk/src/types.ts | 2 - packages/sdk/test/event-log.test.ts | 129 - packages/sdk/test/sdk.test.ts | 342 - packages/sdk/tsconfig.json | 7 - packages/shared/package.json | 25 - packages/shared/src/api-token.ts | 58 - packages/shared/src/api.ts | 346 - packages/shared/src/browser.ts | 15 - packages/shared/src/config.ts | 507 - packages/shared/src/environment.ts | 56 - packages/shared/src/events.ts | 454 - packages/shared/src/file-kinds.ts | 41 - packages/shared/src/files.ts | 121 - packages/shared/src/guest-health.ts | 90 - packages/shared/src/identity-rules.ts | 51 - packages/shared/src/ids.ts | 86 - packages/shared/src/index.ts | 10 - packages/shared/src/labels.ts | 87 - packages/shared/src/path-exists.ts | 11 - packages/shared/src/paths.ts | 125 - packages/shared/src/process.ts | 212 - packages/shared/src/protocol.ts | 560 - packages/shared/src/replace-file.ts | 41 - packages/shared/src/run-process.ts | 94 - packages/shared/src/sockets.ts | 135 - packages/shared/src/sse.ts | 99 - packages/shared/src/states.ts | 113 - packages/shared/src/stderr-logger.ts | 15 - packages/shared/src/support.ts | 54 - packages/shared/src/tools.ts | 164 - packages/shared/test/config.test.ts | 343 - packages/shared/test/events.test.ts | 268 - packages/shared/test/file-kinds.test.ts | 29 - packages/shared/test/files.test.ts | 119 - .../shared/test/fixtures/identity-rules.json | 433 - packages/shared/test/identity-rules.test.ts | 96 - packages/shared/test/ids.test.ts | 32 - packages/shared/test/labels.test.ts | 74 - packages/shared/test/mcp-servers.test.ts | 121 - packages/shared/test/paths.test.ts | 80 - packages/shared/test/process.test.ts | 108 - packages/shared/test/protocol.test.ts | 159 - packages/shared/test/replace-file.test.ts | 52 - packages/shared/test/sockets.test.ts | 112 - packages/shared/test/sse.test.ts | 78 - packages/shared/test/states.test.ts | 23 - packages/shared/test/tools.test.ts | 64 - packages/shared/tsconfig.json | 7 - pipeline/build.py | 351 + pipeline/publish.py | 79 + pyproject.toml | 68 +- src/aihawk/__init__.py | 3 + src/aihawk/__main__.py | 3 + src/aihawk/apply.py | 277 + src/aihawk/cli.py | 180 + src/aihawk/config.py | 138 + src/aihawk/database.py | 138 + src/aihawk/documents.py | 118 + src/aihawk/llm.py | 32 + src/aihawk/store.py | 111 + tests/bench/Dockerfile | 18 - tests/bench/README.md | 167 - tests/bench/author.py | 924 -- tests/bench/author_long.py | 433 - tests/bench/bridge.ts | 109 - tests/bench/dots_harbor/__init__.py | 1 - tests/bench/dots_harbor/agent.py | 53 - tests/bench/dots_harbor/bridge.py | 36 - tests/bench/dots_harbor/dockerfile.py | 120 - tests/bench/dots_harbor/environment.py | 219 - tests/bench/dots_harbor/paths.py | 37 - tests/bench/longmemeval.py | 319 - tests/bench/references/fraud_find.py | 70 - tests/bench/references/fraud_gen.py | 82 - tests/bench/references/kvserver.py | 109 - tests/bench/references/lisp.py | 402 - tests/bench/references/lisp_cases.py | 34 - tests/bench/references/perft.py | 165 - tests/bench/run.sh | 45 - tests/e2e/README.md | 238 - tests/e2e/driver.ts | 335 - tests/e2e/lib.ts | 494 - tests/e2e/linux-host/Dockerfile | 55 - tests/e2e/linux-host/prepare.sh | 32 - tests/e2e/run.ts | 1053 -- tests/e2e/scale.ts | 288 - tests/fakes.py | 56 + tests/repo/agentd-build.test.ts | 55 - tests/repo/agentd-protocol.test.ts | 73 - tests/repo/architecture-engine.test.ts | 103 - tests/repo/cli-bundle.test.ts | 60 - tests/repo/default-install-licenses.test.ts | 62 - tests/repo/e2e.test.ts | 540 - tests/repo/engine-smoke.test.ts | 172 - tests/repo/lock-licenses.ts | 41 - tests/repo/notices.test.ts | 66 - tests/repo/platform-branches.test.ts | 198 - tests/repo/readme.test.ts | 161 - tests/repo/test-guard.test.ts | 128 - tests/repo/vendored-nanobot.test.ts | 214 - tests/repo/whatsapp-optin.test.ts | 147 - tests/test_apply.py | 166 + tests/test_jobs.py | 126 + tests/test_pipeline.py | 110 + tests/test_real_browser.py | 107 + tsconfig.base.json | 21 - tsconfig.json | 20 - tsconfig.whatsapp.json | 10 - virtualization/cloud-init/meta-data.yaml.tmpl | 2 - virtualization/cloud-init/user-data.yaml.tmpl | 62 - virtualization/images/base.json | 20 - virtualization/qemu/README.md | 50 - virtualization/qemu/windows.json | 24 - vitest.config.ts | 36 - vitest.whatsapp.config.ts | 14 - 982 files changed, 2145 insertions(+), 164489 deletions(-) delete mode 100755 .githooks/pre-push delete mode 100644 .github/ISSUE_TEMPLATE/01-setup.yml delete mode 100644 .github/ISSUE_TEMPLATE/02-bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/03-feature.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/gates-requirements.txt delete mode 100644 .github/scripts/golden-release.mjs delete mode 100644 .github/scripts/test-guard.mjs delete mode 100644 .github/test-floors.json delete mode 100644 .github/workflows/golden-image.yml create mode 100644 .github/workflows/jobs-database.yml delete mode 100644 .github/workflows/publish-wiki.yml delete mode 100644 .npmrc delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md create mode 100644 NOTICE delete mode 100644 SECURITY.md delete mode 100644 THIRD_PARTY_NOTICES.md delete mode 100644 apps/api/package.json delete mode 100644 apps/api/src/config.ts delete mode 100644 apps/api/src/database.ts delete mode 100644 apps/api/src/doctor.ts delete mode 100644 apps/api/src/file-types.ts delete mode 100644 apps/api/src/index.ts delete mode 100644 apps/api/src/lock.ts delete mode 100644 apps/api/src/server.ts delete mode 100644 apps/api/src/start.ts delete mode 100644 apps/api/src/vm-driver.ts delete mode 100644 apps/api/test/api.test.ts delete mode 100644 apps/api/test/channels.test.ts delete mode 100644 apps/api/test/config.test.ts delete mode 100644 apps/api/test/doctor.test.ts delete mode 100644 apps/api/test/file-types.test.ts delete mode 100644 apps/api/test/guest-http.ts delete mode 100644 apps/api/test/host-facts.ts delete mode 100644 apps/api/test/start.test.ts delete mode 100644 apps/api/test/vm-driver.test.ts delete mode 100644 apps/api/test/whatsapp.test.ts delete mode 100644 apps/api/tsconfig.json delete mode 100644 apps/cli/package.json delete mode 100644 apps/cli/scripts/build.mjs delete mode 100644 apps/cli/scripts/bundle-options.d.mts delete mode 100644 apps/cli/scripts/bundle-options.mjs delete mode 100644 apps/cli/src/api-client.ts delete mode 100644 apps/cli/src/cli.ts delete mode 100644 apps/cli/src/commands.ts delete mode 100644 apps/cli/src/doctor/command.ts delete mode 100644 apps/cli/src/doctor/render.ts delete mode 100644 apps/cli/src/exit.ts delete mode 100644 apps/cli/src/host.ts delete mode 100644 apps/cli/src/index.ts delete mode 100644 apps/cli/src/main.ts delete mode 100644 apps/cli/src/secret-input.ts delete mode 100644 apps/cli/src/serve.ts delete mode 100644 apps/cli/src/setup/all.ts delete mode 100644 apps/cli/src/setup/build.ts delete mode 100644 apps/cli/src/setup/install.ts delete mode 100644 apps/cli/src/setup/powershell.ts delete mode 100644 apps/cli/src/setup/qemu-pin.ts delete mode 100644 apps/cli/src/setup/setup.ts delete mode 100644 apps/cli/src/web.ts delete mode 100644 apps/cli/test/build.test.ts delete mode 100644 apps/cli/test/cli.test.ts delete mode 100644 apps/cli/test/doctor.test.ts delete mode 100644 apps/cli/test/install.test.ts delete mode 100644 apps/cli/test/powershell.test.ts delete mode 100644 apps/cli/test/qemu-pin.test.ts delete mode 100644 apps/cli/test/secret-input.test.ts delete mode 100644 apps/cli/test/serve.test.ts delete mode 100644 apps/cli/test/setup-all.test.ts delete mode 100644 apps/cli/test/setup.test.ts delete mode 100644 apps/cli/test/web.test.ts delete mode 100644 apps/cli/tsconfig.json delete mode 100644 apps/scheduler/package.json delete mode 100644 apps/scheduler/src/dispatcher.ts delete mode 100644 apps/scheduler/src/driver.ts delete mode 100644 apps/scheduler/src/guest-events.ts delete mode 100644 apps/scheduler/src/inbound.ts delete mode 100644 apps/scheduler/src/index.ts delete mode 100644 apps/scheduler/src/lifecycle.ts delete mode 100644 apps/scheduler/src/scheduler.ts delete mode 100644 apps/scheduler/src/support.ts delete mode 100644 apps/scheduler/src/testing.ts delete mode 100644 apps/scheduler/test/commit-points.test.ts delete mode 100644 apps/scheduler/test/delivery.test.ts delete mode 100644 apps/scheduler/test/engine-shapes.test.ts delete mode 100644 apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/host.sql delete mode 100644 apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/master.key delete mode 100644 apps/scheduler/test/fixtures/upgrade/make-host-state.ts delete mode 100644 apps/scheduler/test/host-shapes.test.ts delete mode 100644 apps/scheduler/test/scheduler.test.ts delete mode 100644 apps/scheduler/test/upgrade.test.ts delete mode 100644 apps/scheduler/tsconfig.json delete mode 100644 apps/vm-manager/package.json delete mode 100644 apps/vm-manager/src/accelerator-access.ts delete mode 100644 apps/vm-manager/src/doctor.ts delete mode 100644 apps/vm-manager/src/errors.ts delete mode 100644 apps/vm-manager/src/guest-client.ts delete mode 100644 apps/vm-manager/src/host-doctor.ts delete mode 100644 apps/vm-manager/src/host.ts delete mode 100644 apps/vm-manager/src/index.ts delete mode 100644 apps/vm-manager/src/ports.ts delete mode 100644 apps/vm-manager/src/powershell.ts delete mode 100644 apps/vm-manager/src/process-file.ts delete mode 100644 apps/vm-manager/src/qemu-args.ts delete mode 100644 apps/vm-manager/src/runner.ts delete mode 100644 apps/vm-manager/src/seed.ts delete mode 100644 apps/vm-manager/src/vm-manager.ts delete mode 100644 apps/vm-manager/test/accelerator-access.test.ts delete mode 100644 apps/vm-manager/test/agentd.linux.test.ts delete mode 100644 apps/vm-manager/test/doctor-fakes.ts delete mode 100644 apps/vm-manager/test/doctor.test.ts delete mode 100644 apps/vm-manager/test/fakes.ts delete mode 100644 apps/vm-manager/test/guest-client.test.ts delete mode 100644 apps/vm-manager/test/host-doctor.test.ts delete mode 100644 apps/vm-manager/test/host.test.ts delete mode 100644 apps/vm-manager/test/ports.test.ts delete mode 100644 apps/vm-manager/test/qemu-args.test.ts delete mode 100644 apps/vm-manager/test/runner.test.ts delete mode 100644 apps/vm-manager/test/seed.test.ts delete mode 100644 apps/vm-manager/test/vm-manager.test.ts delete mode 100644 apps/vm-manager/tsconfig.json delete mode 100644 apps/web/.gitignore delete mode 100644 apps/web/e2e/activity.spec.ts delete mode 100644 apps/web/e2e/channels.spec.ts delete mode 100644 apps/web/e2e/chat.spec.ts delete mode 100644 apps/web/e2e/computer.spec.ts delete mode 100644 apps/web/e2e/create-dot.spec.ts delete mode 100644 apps/web/e2e/dot-settings.spec.ts delete mode 100644 apps/web/e2e/fixtures.ts delete mode 100644 apps/web/e2e/harness.ts delete mode 100644 apps/web/e2e/inbox.spec.ts delete mode 100644 apps/web/e2e/look.ts delete mode 100644 apps/web/e2e/offline.spec.ts delete mode 100644 apps/web/e2e/settings.spec.ts delete mode 100644 apps/web/e2e/shell.spec.ts delete mode 100644 apps/web/e2e/skills.spec.ts delete mode 100644 apps/web/e2e/tasks.spec.ts delete mode 100644 apps/web/e2e/tsconfig.json delete mode 100644 apps/web/next.config.ts delete mode 100644 apps/web/package.json delete mode 100644 apps/web/playwright.config.ts delete mode 100644 apps/web/postcss.config.mjs delete mode 100644 apps/web/scripts/build.mjs delete mode 100644 apps/web/scripts/standalone.mjs delete mode 100644 apps/web/src/app/(app)/approvals/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/activity/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/approvals/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/channels/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/chat/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/computer/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/layout.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/settings/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/skills/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/tasks/[taskId]/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/tasks/layout.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/tasks/page.tsx delete mode 100644 apps/web/src/app/(app)/dots/[id]/timeline/page.tsx delete mode 100644 apps/web/src/app/(app)/inbox/page.tsx delete mode 100644 apps/web/src/app/(app)/layout.tsx delete mode 100644 apps/web/src/app/(app)/new/page.tsx delete mode 100644 apps/web/src/app/(app)/page.tsx delete mode 100644 apps/web/src/app/(app)/settings/page.tsx delete mode 100644 apps/web/src/app/api/[...path]/route.ts delete mode 100644 apps/web/src/app/globals.css delete mode 100644 apps/web/src/app/layout.tsx delete mode 100644 apps/web/src/app/not-found.tsx delete mode 100644 apps/web/src/app/tokens.css delete mode 100644 apps/web/src/components/DotShell.tsx delete mode 100644 apps/web/src/components/ErrorAlert.tsx delete mode 100644 apps/web/src/components/activity/ActivityView.tsx delete mode 100644 apps/web/src/components/activity/activity-row.tsx delete mode 100644 apps/web/src/components/activity/use-activity-log.ts delete mode 100644 apps/web/src/components/approvals/ApprovalCard.tsx delete mode 100644 apps/web/src/components/approvals/InlineApproval.tsx delete mode 100644 apps/web/src/components/approvals/TaskApprovals.tsx delete mode 100644 apps/web/src/components/approvals/always-allow-dialog.tsx delete mode 100644 apps/web/src/components/approvals/approval-body.tsx delete mode 100644 apps/web/src/components/approvals/diff-preview.tsx delete mode 100644 apps/web/src/components/approvals/use-answers.ts delete mode 100644 apps/web/src/components/channels/ChannelsView.tsx delete mode 100644 apps/web/src/components/channels/channel-card.tsx delete mode 100644 apps/web/src/components/channels/linked-channel.tsx delete mode 100644 apps/web/src/components/channels/pairing-panel.tsx delete mode 100644 apps/web/src/components/channels/peers-list.tsx delete mode 100644 apps/web/src/components/channels/qr-connect.tsx delete mode 100644 apps/web/src/components/channels/settings-switches.tsx delete mode 100644 apps/web/src/components/channels/state-chip.tsx delete mode 100644 apps/web/src/components/channels/telegram-card.tsx delete mode 100644 apps/web/src/components/channels/token-form.tsx delete mode 100644 apps/web/src/components/channels/whatsapp-card.tsx delete mode 100644 apps/web/src/components/chat/ChatView.tsx delete mode 100644 apps/web/src/components/chat/activity-step.tsx delete mode 100644 apps/web/src/components/chat/activity.tsx delete mode 100644 apps/web/src/components/chat/chat-data.tsx delete mode 100644 apps/web/src/components/chat/composer.tsx delete mode 100644 apps/web/src/components/chat/conversation.tsx delete mode 100644 apps/web/src/components/chat/message.tsx delete mode 100644 apps/web/src/components/chat/tool-status.tsx delete mode 100644 apps/web/src/components/chat/working-row.tsx delete mode 100644 apps/web/src/components/computer/ComputerPanel.tsx delete mode 100644 apps/web/src/components/computer/ComputerView.tsx delete mode 100644 apps/web/src/components/computer/automations-note.tsx delete mode 100644 apps/web/src/components/computer/computer-off.tsx delete mode 100644 apps/web/src/components/computer/computer-status.tsx delete mode 100644 apps/web/src/components/computer/file-preview.tsx delete mode 100644 apps/web/src/components/computer/files-tab.tsx delete mode 100644 apps/web/src/components/computer/frame-view.tsx delete mode 100644 apps/web/src/components/computer/screen-tab.tsx delete mode 100644 apps/web/src/components/computer/screen-view.tsx delete mode 100644 apps/web/src/components/computer/usage-tab.tsx delete mode 100644 apps/web/src/components/computer/use-frame.ts delete mode 100644 apps/web/src/components/confirm-dialog.tsx delete mode 100644 apps/web/src/components/copy-button.tsx delete mode 100644 apps/web/src/components/dot-settings/DotSettings.tsx delete mode 100644 apps/web/src/components/dot-settings/delete-dot.tsx delete mode 100644 apps/web/src/components/dot-settings/mcp-servers-panel.tsx delete mode 100644 apps/web/src/components/dot-settings/panel.tsx delete mode 100644 apps/web/src/components/dot-settings/panels.tsx delete mode 100644 apps/web/src/components/dot-settings/permissions-panel.tsx delete mode 100644 apps/web/src/components/dot-settings/review-dialog.tsx delete mode 100644 apps/web/src/components/dot-settings/tool-table.ts delete mode 100644 apps/web/src/components/dot-settings/vm-proxy.tsx delete mode 100644 apps/web/src/components/dot/CostPill.tsx delete mode 100644 apps/web/src/components/dot/DotHeader.tsx delete mode 100644 apps/web/src/components/dot/DotTabs.tsx delete mode 100644 apps/web/src/components/dot/PowerMenu.tsx delete mode 100644 apps/web/src/components/dot/tone.ts delete mode 100644 apps/web/src/components/dot/use-power.ts delete mode 100644 apps/web/src/components/dot/use-ring.ts delete mode 100644 apps/web/src/components/elements/approval-card.tsx delete mode 100644 apps/web/src/components/events.tsx delete mode 100644 apps/web/src/components/home/DotCard.tsx delete mode 100644 apps/web/src/components/home/HomePage.tsx delete mode 100644 apps/web/src/components/home/last-activity.tsx delete mode 100644 apps/web/src/components/inbox/History.tsx delete mode 100644 apps/web/src/components/inbox/InboxView.tsx delete mode 100644 apps/web/src/components/inbox/NeedsYou.tsx delete mode 100644 apps/web/src/components/inbox/filters.tsx delete mode 100644 apps/web/src/components/inbox/use-history.ts delete mode 100644 apps/web/src/components/inbox/use-inbox-keys.ts delete mode 100644 apps/web/src/components/markdown.tsx delete mode 100644 apps/web/src/components/new-dot/Field.tsx delete mode 100644 apps/web/src/components/new-dot/FormSections.tsx delete mode 100644 apps/web/src/components/new-dot/NewDotPage.tsx delete mode 100644 apps/web/src/components/new-dot/PreflightPanel.tsx delete mode 100644 apps/web/src/components/new-dot/PresetPicker.tsx delete mode 100644 apps/web/src/components/settings/HostSettings.tsx delete mode 100644 apps/web/src/components/setup/CheckList.tsx delete mode 100644 apps/web/src/components/setup/KeyForm.tsx delete mode 100644 apps/web/src/components/setup/Section.tsx delete mode 100644 apps/web/src/components/setup/SetupChecklist.tsx delete mode 100644 apps/web/src/components/setup/use-host-checks.ts delete mode 100644 apps/web/src/components/shell/ApiStatus.tsx delete mode 100644 apps/web/src/components/shell/AppShell.tsx delete mode 100644 apps/web/src/components/shell/DotAvatar.tsx delete mode 100644 apps/web/src/components/shell/Rail.tsx delete mode 100644 apps/web/src/components/shell/StatusIcon.tsx delete mode 100644 apps/web/src/components/shell/ThemeToggle.tsx delete mode 100644 apps/web/src/components/shell/attention.tsx delete mode 100644 apps/web/src/components/shell/offline-banner.tsx delete mode 100644 apps/web/src/components/skills/SkillsView.tsx delete mode 100644 apps/web/src/components/tasks/TasksView.tsx delete mode 100644 apps/web/src/components/tasks/cancel-task.tsx delete mode 100644 apps/web/src/components/tasks/history-table.tsx delete mode 100644 apps/web/src/components/tasks/new-task-dialog.tsx delete mode 100644 apps/web/src/components/tasks/story.tsx delete mode 100644 apps/web/src/components/tasks/task-card.tsx delete mode 100644 apps/web/src/components/tasks/task-drawer.tsx delete mode 100644 apps/web/src/components/tasks/task-status.tsx delete mode 100644 apps/web/src/components/tasks/tasks-data.tsx delete mode 100644 apps/web/src/components/tool-family-icon.ts delete mode 100644 apps/web/src/components/ui.tsx delete mode 100644 apps/web/src/components/ui/alert.tsx delete mode 100644 apps/web/src/components/ui/badge.tsx delete mode 100644 apps/web/src/components/ui/button.tsx delete mode 100644 apps/web/src/components/ui/dialog.tsx delete mode 100644 apps/web/src/components/ui/dropdown-menu.tsx delete mode 100644 apps/web/src/components/ui/input.tsx delete mode 100644 apps/web/src/components/ui/label.tsx delete mode 100644 apps/web/src/components/ui/separator.tsx delete mode 100644 apps/web/src/components/ui/sheet.tsx delete mode 100644 apps/web/src/components/ui/skeleton.tsx delete mode 100644 apps/web/src/components/ui/sonner.tsx delete mode 100644 apps/web/src/components/ui/switch.tsx delete mode 100644 apps/web/src/components/ui/textarea.tsx delete mode 100644 apps/web/src/components/ui/tooltip.tsx delete mode 100644 apps/web/src/components/view-tabs.tsx delete mode 100644 apps/web/src/components/yaml-editor.tsx delete mode 100644 apps/web/src/index.ts delete mode 100644 apps/web/src/instrumentation.ts delete mode 100644 apps/web/src/lib/activity.ts delete mode 100644 apps/web/src/lib/agent.ts delete mode 100644 apps/web/src/lib/api.ts delete mode 100644 apps/web/src/lib/approval-view.ts delete mode 100644 apps/web/src/lib/attention.ts delete mode 100644 apps/web/src/lib/avatar.ts delete mode 100644 apps/web/src/lib/channel-link.ts delete mode 100644 apps/web/src/lib/channels.ts delete mode 100644 apps/web/src/lib/chat-thread.ts delete mode 100644 apps/web/src/lib/chat-view.ts delete mode 100644 apps/web/src/lib/chat-window.ts delete mode 100644 apps/web/src/lib/computer-view.ts delete mode 100644 apps/web/src/lib/computer.ts delete mode 100644 apps/web/src/lib/config-draft.ts delete mode 100644 apps/web/src/lib/config-fields.ts delete mode 100644 apps/web/src/lib/diff.ts delete mode 100644 apps/web/src/lib/dismissed.ts delete mode 100644 apps/web/src/lib/dot-card.ts delete mode 100644 apps/web/src/lib/dot-form.ts delete mode 100644 apps/web/src/lib/dot-live.ts delete mode 100644 apps/web/src/lib/dot-title.ts delete mode 100644 apps/web/src/lib/draft.ts delete mode 100644 apps/web/src/lib/events/view.ts delete mode 100644 apps/web/src/lib/failed-tasks.ts delete mode 100644 apps/web/src/lib/favicon.ts delete mode 100644 apps/web/src/lib/files.ts delete mode 100644 apps/web/src/lib/format.ts delete mode 100644 apps/web/src/lib/host-settings.ts delete mode 100644 apps/web/src/lib/inbox.ts delete mode 100644 apps/web/src/lib/mcp-server-form.ts delete mode 100644 apps/web/src/lib/messages.ts delete mode 100644 apps/web/src/lib/offline.ts delete mode 100644 apps/web/src/lib/parent.ts delete mode 100644 apps/web/src/lib/permission-presets.ts delete mode 100644 apps/web/src/lib/permission-table.ts delete mode 100644 apps/web/src/lib/preflight.ts delete mode 100644 apps/web/src/lib/proxy.ts delete mode 100644 apps/web/src/lib/range.ts delete mode 100644 apps/web/src/lib/save-file.ts delete mode 100644 apps/web/src/lib/skills-view.ts delete mode 100644 apps/web/src/lib/steps.ts delete mode 100644 apps/web/src/lib/task-events.ts delete mode 100644 apps/web/src/lib/task-form.ts delete mode 100644 apps/web/src/lib/task-view.ts delete mode 100644 apps/web/src/lib/theme.ts delete mode 100644 apps/web/src/lib/time.ts delete mode 100644 apps/web/src/lib/tone.ts delete mode 100644 apps/web/src/lib/types.ts delete mode 100644 apps/web/src/lib/use-now.ts delete mode 100644 apps/web/src/lib/use-theme.ts delete mode 100644 apps/web/src/lib/use-visible-interval.ts delete mode 100644 apps/web/src/lib/utils.ts delete mode 100644 apps/web/src/lib/yaml.ts delete mode 100644 apps/web/test/activity.test.ts delete mode 100644 apps/web/test/activity.test.tsx delete mode 100644 apps/web/test/agent.test.ts delete mode 100644 apps/web/test/api.test.ts delete mode 100644 apps/web/test/approval-view.test.ts delete mode 100644 apps/web/test/approvals.test.tsx delete mode 100644 apps/web/test/attention.test.ts delete mode 100644 apps/web/test/avatar.test.ts delete mode 100644 apps/web/test/buttons.test.ts delete mode 100644 apps/web/test/channel-link.test.ts delete mode 100644 apps/web/test/channels-page.test.tsx delete mode 100644 apps/web/test/channels.test.ts delete mode 100644 apps/web/test/chat-thread.test.ts delete mode 100644 apps/web/test/chat-view.test.ts delete mode 100644 apps/web/test/chat-window.test.ts delete mode 100644 apps/web/test/chat.test.tsx delete mode 100644 apps/web/test/computer-page.test.tsx delete mode 100644 apps/web/test/computer-panel.test.tsx delete mode 100644 apps/web/test/computer-view.test.ts delete mode 100644 apps/web/test/config-draft.test.ts delete mode 100644 apps/web/test/config-fields.test.ts delete mode 100644 apps/web/test/diff.test.ts delete mode 100644 apps/web/test/dot-card.test.ts delete mode 100644 apps/web/test/dot-form.test.ts delete mode 100644 apps/web/test/dot-live.test.ts delete mode 100644 apps/web/test/dot-settings.test.tsx delete mode 100644 apps/web/test/dot-shell.test.tsx delete mode 100644 apps/web/test/dot-title.test.ts delete mode 100644 apps/web/test/draft.test.ts delete mode 100644 apps/web/test/event-view.test.ts delete mode 100644 apps/web/test/files.test.ts delete mode 100644 apps/web/test/format.test.ts delete mode 100644 apps/web/test/home.test.tsx delete mode 100644 apps/web/test/host-settings.test.ts delete mode 100644 apps/web/test/inbox-model.test.ts delete mode 100644 apps/web/test/inbox.test.tsx delete mode 100644 apps/web/test/markdown.test.tsx delete mode 100644 apps/web/test/mcp-servers.test.ts delete mode 100644 apps/web/test/new-dot.test.tsx delete mode 100644 apps/web/test/offline.test.ts delete mode 100644 apps/web/test/parent.test.ts delete mode 100644 apps/web/test/permission-presets.test.ts delete mode 100644 apps/web/test/playwright-config.test.ts delete mode 100644 apps/web/test/preflight.test.ts delete mode 100644 apps/web/test/proxy.test.ts delete mode 100644 apps/web/test/screen-view.test.tsx delete mode 100644 apps/web/test/settings.test.tsx delete mode 100644 apps/web/test/shell.test.tsx delete mode 100644 apps/web/test/skills.test.tsx delete mode 100644 apps/web/test/support/browser.ts delete mode 100644 apps/web/test/support/config.ts delete mode 100644 apps/web/test/support/contrast.ts delete mode 100644 apps/web/test/support/control-plane.ts delete mode 100644 apps/web/test/support/tokens.ts delete mode 100644 apps/web/test/task-events.test.ts delete mode 100644 apps/web/test/task-form.test.ts delete mode 100644 apps/web/test/task-view.test.ts delete mode 100644 apps/web/test/tasks.test.tsx delete mode 100644 apps/web/test/theme.test.tsx delete mode 100644 apps/web/test/time.test.ts delete mode 100644 apps/web/test/tokens.test.ts delete mode 100644 apps/web/test/use-frame.test.tsx delete mode 100644 apps/web/test/use-resource.test.tsx delete mode 100644 apps/web/test/use-visible-interval.test.tsx delete mode 100644 apps/web/test/yaml.test.ts delete mode 100644 apps/web/tsconfig.json delete mode 100644 docs/architecture.md delete mode 100644 docs/guide.md delete mode 100644 docs/hero/README.md delete mode 100644 docs/hero/build.mjs delete mode 100644 docs/hero/cut_out.py delete mode 100644 docs/hero/html/mobile.html delete mode 100644 docs/hero/html/small.html delete mode 100644 docs/hero/html/social.html delete mode 100644 docs/hero/html/wide.html delete mode 100644 docs/hero/photos/characters-dark.png delete mode 100644 docs/hero/photos/characters-light.png delete mode 100644 docs/hero/photos/characters.png delete mode 100644 docs/hero/photos/trending.png delete mode 100644 docs/images/hero-dark.gif delete mode 100644 docs/images/hero-light.gif delete mode 100644 docs/images/hero-mobile-dark.gif delete mode 100644 docs/images/hero-mobile-light.gif delete mode 100644 docs/images/hero-small-dark.gif delete mode 100644 docs/images/hero-small-light.gif delete mode 100644 docs/images/social-preview.png delete mode 100644 docs/wiki/agent-memory-systems-compared.md delete mode 100644 docs/wiki/benchmarking-agents-on-real-vms.md delete mode 100644 docs/wiki/browser-calls-that-lead-nowhere.md delete mode 100644 docs/wiki/compacting-at-the-models-window.md delete mode 100644 docs/wiki/how-a-dot-remembers.md delete mode 100644 docs/wiki/index.md delete mode 100644 docs/wiki/mcp-servers-a-person-declares.md delete mode 100644 docs/wiki/studies.md delete mode 100644 docs/wiki/the-browser-servers-own-words.md delete mode 100644 docs/wiki/token-counts-across-models.md delete mode 100644 guest/dot-agentd/.gitignore delete mode 100644 guest/dot-agentd/README.md delete mode 100644 guest/dot-agentd/cmd/dot-agentd/main.go delete mode 100644 guest/dot-agentd/cmd/dot-agentd/main_privileged_test.go delete mode 100644 guest/dot-agentd/cmd/dot-agentd/main_test.go delete mode 100644 guest/dot-agentd/cmd/dot-agentd/relay.go delete mode 100644 guest/dot-agentd/cmd/dot-agentd/relay_test.go delete mode 100644 guest/dot-agentd/go.mod delete mode 100644 guest/dot-agentd/internal/agentd/account.go delete mode 100644 guest/dot-agentd/internal/agentd/account_linux.go delete mode 100644 guest/dot-agentd/internal/agentd/account_linux_test.go delete mode 100644 guest/dot-agentd/internal/agentd/account_other.go delete mode 100644 guest/dot-agentd/internal/agentd/account_privileged_test.go delete mode 100644 guest/dot-agentd/internal/agentd/account_test.go delete mode 100644 guest/dot-agentd/internal/agentd/agent.go delete mode 100644 guest/dot-agentd/internal/agentd/auth_test.go delete mode 100644 guest/dot-agentd/internal/agentd/config.go delete mode 100644 guest/dot-agentd/internal/agentd/every_interface_linux_test.go delete mode 100644 guest/dot-agentd/internal/agentd/exec.go delete mode 100644 guest/dot-agentd/internal/agentd/exec_other.go delete mode 100644 guest/dot-agentd/internal/agentd/exec_test.go delete mode 100644 guest/dot-agentd/internal/agentd/exec_unix.go delete mode 100644 guest/dot-agentd/internal/agentd/files.go delete mode 100644 guest/dot-agentd/internal/agentd/files_confined_test.go delete mode 100644 guest/dot-agentd/internal/agentd/files_links_test.go delete mode 100644 guest/dot-agentd/internal/agentd/files_test.go delete mode 100644 guest/dot-agentd/internal/agentd/frames.go delete mode 100644 guest/dot-agentd/internal/agentd/health.go delete mode 100644 guest/dot-agentd/internal/agentd/health_test.go delete mode 100644 guest/dot-agentd/internal/agentd/helpers_test.go delete mode 100644 guest/dot-agentd/internal/agentd/listen.go delete mode 100644 guest/dot-agentd/internal/agentd/listen_other.go delete mode 100644 guest/dot-agentd/internal/agentd/listen_test.go delete mode 100644 guest/dot-agentd/internal/agentd/listen_unix.go delete mode 100644 guest/dot-agentd/internal/agentd/platform_other.go delete mode 100644 guest/dot-agentd/internal/agentd/platform_unix.go delete mode 100644 guest/dot-agentd/internal/agentd/proc.go delete mode 100644 guest/dot-agentd/internal/agentd/proc_linux.go delete mode 100644 guest/dot-agentd/internal/agentd/proc_other.go delete mode 100644 guest/dot-agentd/internal/agentd/proc_relay_test.go delete mode 100644 guest/dot-agentd/internal/agentd/proc_test.go delete mode 100644 guest/dot-agentd/internal/agentd/proof.go delete mode 100644 guest/dot-agentd/internal/agentd/proof_test.go delete mode 100644 guest/dot-agentd/internal/agentd/proxy_test.go delete mode 100644 guest/dot-agentd/internal/agentd/relay.go delete mode 100644 guest/dot-agentd/internal/agentd/screenshot.go delete mode 100644 guest/dot-agentd/internal/agentd/screenshot_test.go delete mode 100644 guest/dot-agentd/internal/agentd/server.go delete mode 100644 guest/dot-agentd/internal/agentd/system.go delete mode 100644 guest/dot-agentd/internal/agentd/system_test.go delete mode 100644 guest/image-builder/README.md delete mode 100644 guest/image-builder/builder/build-browser-env.sh delete mode 100644 guest/image-builder/builder/build-engine-env.sh delete mode 100644 guest/image-builder/builder/engine-requirements.lock delete mode 100644 guest/image-builder/builder/other-browsers.txt delete mode 100644 guest/image-builder/builder/provision.sh delete mode 100644 guest/image-builder/builder/user-data.yaml delete mode 100644 guest/image-builder/package.json delete mode 100644 guest/image-builder/pins.json delete mode 100644 guest/image-builder/runtime/dot-desktop.sh delete mode 100644 guest/image-builder/runtime/dot-install.sh delete mode 100644 guest/image-builder/runtime/install.sh delete mode 100644 guest/image-builder/runtime/vmproxy.py delete mode 100644 guest/image-builder/src/assets.ts delete mode 100644 guest/image-builder/src/browser-release.ts delete mode 100644 guest/image-builder/src/download.ts delete mode 100644 guest/image-builder/src/golden.ts delete mode 100644 guest/image-builder/src/index.ts delete mode 100644 guest/image-builder/src/lock.ts delete mode 100644 guest/image-builder/src/manifest.ts delete mode 100644 guest/image-builder/src/pins.ts delete mode 100644 guest/image-builder/src/prebuilt.ts delete mode 100644 guest/image-builder/src/process.ts delete mode 100644 guest/image-builder/src/publish.ts delete mode 100644 guest/image-builder/src/python-lock.ts delete mode 100644 guest/image-builder/src/qemu.ts delete mode 100644 guest/image-builder/src/runtime.ts delete mode 100644 guest/image-builder/src/seed.ts delete mode 100644 guest/image-builder/src/serial.ts delete mode 100644 guest/image-builder/src/versions.ts delete mode 100644 guest/image-builder/test/browser-release.test.ts delete mode 100644 guest/image-builder/test/download.test.ts delete mode 100644 guest/image-builder/test/engine-lock.test.ts delete mode 100644 guest/image-builder/test/fake-runner.ts delete mode 100644 guest/image-builder/test/golden.test.ts delete mode 100644 guest/image-builder/test/guest-files.test.ts delete mode 100644 guest/image-builder/test/http-fixture.ts delete mode 100644 guest/image-builder/test/manifest.test.ts delete mode 100644 guest/image-builder/test/pins.test.ts delete mode 100644 guest/image-builder/test/python-lock.test.ts delete mode 100644 guest/image-builder/test/qemu.test.ts delete mode 100644 guest/image-builder/test/runtime.test.ts delete mode 100644 guest/image-builder/test/seed.test.ts delete mode 100644 guest/image-builder/test/serial.test.ts delete mode 100644 guest/image-builder/test/smoke/README.md delete mode 100644 guest/image-builder/test/smoke/browser/proxy.py delete mode 100644 guest/image-builder/test/smoke/browser/smoke.sh delete mode 100755 guest/image-builder/test/smoke/fake_openrouter.py delete mode 100755 guest/image-builder/test/smoke/host-stream.sh delete mode 100644 guest/image-builder/test/smoke/lib.sh delete mode 100755 guest/image-builder/test/smoke/prepare-engine.sh delete mode 100755 guest/image-builder/test/smoke/run.sh delete mode 100755 guest/image-builder/test/smoke/smoke.sh delete mode 100644 guest/image-builder/tsconfig.json delete mode 100644 guest/image-builder/units/dot-agentd.service delete mode 100644 guest/image-builder/units/dot-desktop.service delete mode 100644 guest/image-builder/units/invisible-dots-agent.service delete mode 100644 invisible_engine_dots/LICENSE delete mode 100644 invisible_engine_dots/THIRD_PARTY_NOTICES.md delete mode 100644 invisible_engine_dots/UPSTREAM.md delete mode 100644 invisible_engine_dots/nanobot/__init__.py delete mode 100644 invisible_engine_dots/nanobot/__main__.py delete mode 100644 invisible_engine_dots/nanobot/agent/__init__.py delete mode 100644 invisible_engine_dots/nanobot/agent/context.py delete mode 100644 invisible_engine_dots/nanobot/agent/context_governance.py delete mode 100644 invisible_engine_dots/nanobot/agent/hook.py delete mode 100644 invisible_engine_dots/nanobot/agent/memory.py delete mode 100644 invisible_engine_dots/nanobot/agent/runner.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/__init__.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/_search_content.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/apply_patch.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/base.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/context.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/cron.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/exec_session.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/execution.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/file_state.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/filesystem.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/gate_types.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/mcp.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/registry.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/schema.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/search.py delete mode 100644 invisible_engine_dots/nanobot/agent/tools/shell.py delete mode 100644 invisible_engine_dots/nanobot/agent/transcript_metadata.py delete mode 100644 invisible_engine_dots/nanobot/cron/__init__.py delete mode 100644 invisible_engine_dots/nanobot/cron/service.py delete mode 100644 invisible_engine_dots/nanobot/cron/types.py delete mode 100644 invisible_engine_dots/nanobot/dots/__init__.py delete mode 100644 invisible_engine_dots/nanobot/dots/browser.py delete mode 100644 invisible_engine_dots/nanobot/dots/browser_tools.py delete mode 100644 invisible_engine_dots/nanobot/dots/checks.py delete mode 100644 invisible_engine_dots/nanobot/dots/computer.py delete mode 100644 invisible_engine_dots/nanobot/dots/conversations.py delete mode 100644 invisible_engine_dots/nanobot/dots/engine.py delete mode 100644 invisible_engine_dots/nanobot/dots/gate.py delete mode 100644 invisible_engine_dots/nanobot/dots/identity_rules.py delete mode 100644 invisible_engine_dots/nanobot/dots/images.py delete mode 100644 invisible_engine_dots/nanobot/dots/main.py delete mode 100644 invisible_engine_dots/nanobot/dots/mcp_servers.py delete mode 100644 invisible_engine_dots/nanobot/dots/memory_update.py delete mode 100644 invisible_engine_dots/nanobot/dots/permissions.py delete mode 100644 invisible_engine_dots/nanobot/dots/projection.py delete mode 100644 invisible_engine_dots/nanobot/dots/protocol.py delete mode 100644 invisible_engine_dots/nanobot/dots/provider.py delete mode 100644 invisible_engine_dots/nanobot/dots/secrets.py delete mode 100644 invisible_engine_dots/nanobot/dots/server.py delete mode 100644 invisible_engine_dots/nanobot/dots/server_capture.py delete mode 100644 invisible_engine_dots/nanobot/dots/server_interface.py delete mode 100644 invisible_engine_dots/nanobot/dots/skills.py delete mode 100644 invisible_engine_dots/nanobot/dots/spend.py delete mode 100644 invisible_engine_dots/nanobot/dots/store.py delete mode 100644 invisible_engine_dots/nanobot/dots/targets.py delete mode 100644 invisible_engine_dots/nanobot/dots/transcript_outbox.py delete mode 100644 invisible_engine_dots/nanobot/dots/turns.py delete mode 100644 invisible_engine_dots/nanobot/providers/__init__.py delete mode 100644 invisible_engine_dots/nanobot/providers/base.py delete mode 100644 invisible_engine_dots/nanobot/providers/openai_compat_provider.py delete mode 100644 invisible_engine_dots/nanobot/providers/prompt_count.py delete mode 100644 invisible_engine_dots/nanobot/providers/registry.py delete mode 100644 invisible_engine_dots/nanobot/session/__init__.py delete mode 100644 invisible_engine_dots/nanobot/session/history_visibility.py delete mode 100644 invisible_engine_dots/nanobot/session/manager.py delete mode 100644 invisible_engine_dots/nanobot/session/summary.py delete mode 100644 invisible_engine_dots/nanobot/templates/__init__.py delete mode 100644 invisible_engine_dots/nanobot/templates/agent/consolidator_archive.md delete mode 100644 invisible_engine_dots/nanobot/templates/agent/max_iterations_message.md delete mode 100644 invisible_engine_dots/nanobot/templates/agent/memory_update.md delete mode 100644 invisible_engine_dots/nanobot/templates/agent/platform.md delete mode 100644 invisible_engine_dots/nanobot/templates/agent/tool_contract.md delete mode 100644 invisible_engine_dots/nanobot/utils/__init__.py delete mode 100644 invisible_engine_dots/nanobot/utils/cancellation.py delete mode 100644 invisible_engine_dots/nanobot/utils/dict_keys.py delete mode 100644 invisible_engine_dots/nanobot/utils/file_diff.py delete mode 100644 invisible_engine_dots/nanobot/utils/helpers.py delete mode 100644 invisible_engine_dots/nanobot/utils/llm_runtime.py delete mode 100644 invisible_engine_dots/nanobot/utils/prompt_templates.py delete mode 100644 invisible_engine_dots/nanobot/utils/runtime.py delete mode 100644 invisible_engine_dots/nanobot/utils/token_encoding.py delete mode 100644 invisible_engine_dots/pyproject.toml delete mode 100644 invisible_engine_dots/skills/invisible-playwright/SKILL.md delete mode 100644 invisible_engine_dots/tests/conftest.py delete mode 100644 invisible_engine_dots/tests/core/agent/__init__.py delete mode 100644 invisible_engine_dots/tests/core/agent/runner_helpers.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_consolidator.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_context_builder.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_context_governance.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_history_replay.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_model_limits.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_reused_tool_call_ids.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_core.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_errors.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_file_reads.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_gate.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_governance.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_hooks.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_injections.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_reasoning.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_runtime_identity.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_safety.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_tool_execution.py delete mode 100644 invisible_engine_dots/tests/core/agent/test_runner_tool_result_cut.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_active_rearm.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_missed_runs.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_persistence.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_service.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_tool_list.py delete mode 100644 invisible_engine_dots/tests/core/cron/test_cron_tool_schema_contract.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_cached_tokens.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_enforce_role_alternation.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_failure_text.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_llm_response.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_model_limits_provider.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_openai_compat_stream.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_openai_compat_timeout.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_prompt_count.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_provider_default_headers.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_provider_error_metadata.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_provider_retry.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_provider_retry_after_hints.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_provider_tool_arguments.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_reasoning_content.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_sanitize_surrogates.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_strip_image_content.py delete mode 100644 invisible_engine_dots/tests/core/providers/test_usage_contract.py delete mode 100644 invisible_engine_dots/tests/core/tools/__init__.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_apply_patch_tool.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_edit_advanced.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_edit_enhancements.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_exec_session_timeout.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_exec_session_tools.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_exec_session_tty.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_file_edit_coding_enhancements.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_file_state_store.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_filesystem_tools.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_mcp_tool.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_read_enhancements.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_search_tools.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_shell_reap.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_terminal_text.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_tool_descriptions.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_tool_registry.py delete mode 100644 invisible_engine_dots/tests/core/tools/test_tool_validation.py delete mode 100644 invisible_engine_dots/tests/core/utils/conftest.py delete mode 100644 invisible_engine_dots/tests/core/utils/test_helpers.py delete mode 100644 invisible_engine_dots/tests/core/utils/test_length_recovery_runtime.py delete mode 100644 invisible_engine_dots/tests/core/utils/test_strip_think.py delete mode 100644 invisible_engine_dots/tests/core/utils/test_token_encoding.py delete mode 100644 invisible_engine_dots/tests/core/utils/test_token_estimation.py delete mode 100644 invisible_engine_dots/tests/dots/automation_victim.py delete mode 100644 invisible_engine_dots/tests/dots/conftest.py delete mode 100644 invisible_engine_dots/tests/dots/host_wire_shapes.json delete mode 100644 invisible_engine_dots/tests/dots/test_approval_matrix.py delete mode 100644 invisible_engine_dots/tests/dots/test_automation_catch_up.py delete mode 100644 invisible_engine_dots/tests/dots/test_browser_manager.py delete mode 100644 invisible_engine_dots/tests/dots/test_browser_tools.py delete mode 100644 invisible_engine_dots/tests/dots/test_call_ids.py delete mode 100644 invisible_engine_dots/tests/dots/test_checks.py delete mode 100644 invisible_engine_dots/tests/dots/test_computer.py delete mode 100644 invisible_engine_dots/tests/dots/test_conversations.py delete mode 100644 invisible_engine_dots/tests/dots/test_engine.py delete mode 100644 invisible_engine_dots/tests/dots/test_exec_through_relay.py delete mode 100644 invisible_engine_dots/tests/dots/test_fake_relay.py delete mode 100644 invisible_engine_dots/tests/dots/test_gate.py delete mode 100644 invisible_engine_dots/tests/dots/test_host_wire_shapes.py delete mode 100644 invisible_engine_dots/tests/dots/test_identity_rules.py delete mode 100644 invisible_engine_dots/tests/dots/test_main.py delete mode 100644 invisible_engine_dots/tests/dots/test_mcp_servers.py delete mode 100644 invisible_engine_dots/tests/dots/test_mcp_turns.py delete mode 100644 invisible_engine_dots/tests/dots/test_memory_update.py delete mode 100644 invisible_engine_dots/tests/dots/test_permissions.py delete mode 100644 invisible_engine_dots/tests/dots/test_projection.py delete mode 100644 invisible_engine_dots/tests/dots/test_protocol.py delete mode 100644 invisible_engine_dots/tests/dots/test_provider.py delete mode 100644 invisible_engine_dots/tests/dots/test_secrets.py delete mode 100644 invisible_engine_dots/tests/dots/test_server.py delete mode 100644 invisible_engine_dots/tests/dots/test_server_interface.py delete mode 100644 invisible_engine_dots/tests/dots/test_session_keys.py delete mode 100644 invisible_engine_dots/tests/dots/test_skills.py delete mode 100644 invisible_engine_dots/tests/dots/test_spend.py delete mode 100644 invisible_engine_dots/tests/dots/test_store.py delete mode 100644 invisible_engine_dots/tests/dots/test_targets.py delete mode 100644 invisible_engine_dots/tests/dots/test_transcript_outbox.py delete mode 100644 invisible_engine_dots/tests/dots/test_turns.py delete mode 100644 invisible_engine_dots/tests/dots/test_upgrade.py delete mode 100644 invisible_engine_dots/tests/dots/test_wire_shapes.py delete mode 100644 invisible_engine_dots/tests/dots/wire_shapes.json delete mode 100644 invisible_engine_dots/tests/fakes/__init__.py delete mode 100644 invisible_engine_dots/tests/fakes/allow_all_gate.py delete mode 100644 invisible_engine_dots/tests/fakes/browser_manager.py delete mode 100644 invisible_engine_dots/tests/fakes/dot_config.py delete mode 100644 invisible_engine_dots/tests/fakes/engine_harness.py delete mode 100644 invisible_engine_dots/tests/fakes/fake_mcp_server.py delete mode 100644 invisible_engine_dots/tests/fakes/fake_relay.py delete mode 100644 invisible_engine_dots/tests/fakes/fake_tool_server.py delete mode 100644 invisible_engine_dots/tests/fakes/invisible_playwright_mcp.json delete mode 100644 invisible_engine_dots/tests/fakes/local_computer.py delete mode 100644 invisible_engine_dots/tests/fakes/run_tool.py delete mode 100644 invisible_engine_dots/tests/fakes/scripted_provider.py delete mode 100644 invisible_engine_dots/tests/fakes/server_package/invisible_playwright_mcp/__init__.py delete mode 100644 invisible_engine_dots/tests/fakes/server_package/invisible_playwright_mcp/__main__.py delete mode 100644 invisible_engine_dots/tests/fakes/server_package/invisible_playwright_mcp/mcp.py delete mode 100644 invisible_engine_dots/tests/fakes/store_queries.py delete mode 100644 invisible_engine_dots/tests/fakes/turn_harness.py delete mode 100644 invisible_engine_dots/tests/fixtures/upgrade/golden-b326f2a1d4fe/cron-jobs.json delete mode 100644 invisible_engine_dots/tests/fixtures/upgrade/golden-b326f2a1d4fe/engine.sql delete mode 100644 invisible_engine_dots/tests/fixtures/upgrade/make_engine_state.py delete mode 100644 invisible_engine_dots/tests/test_dependencies.py delete mode 100644 invisible_engine_dots/tests/test_imports.py delete mode 100644 optional/whatsapp/package-lock.json delete mode 100644 optional/whatsapp/package.json delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 packages/channels/package.json delete mode 100644 packages/channels/src/approval-text.ts delete mode 100644 packages/channels/src/backoff.ts delete mode 100644 packages/channels/src/binding-secrets.ts delete mode 100644 packages/channels/src/channel.ts delete mode 100644 packages/channels/src/hub.ts delete mode 100644 packages/channels/src/index.ts delete mode 100644 packages/channels/src/link.ts delete mode 100644 packages/channels/src/pairing.ts delete mode 100644 packages/channels/src/rate.ts delete mode 100644 packages/channels/src/runner.ts delete mode 100644 packages/channels/src/telegram/callback.ts delete mode 100644 packages/channels/src/telegram/fake-bot-api.ts delete mode 100644 packages/channels/src/telegram/telegram.ts delete mode 100644 packages/channels/src/testing.ts delete mode 100644 packages/channels/src/text.ts delete mode 100644 packages/channels/src/whatsapp-baileys/auth-state.ts delete mode 100644 packages/channels/src/whatsapp-baileys/baileys.ts delete mode 100644 packages/channels/src/whatsapp-baileys/client.ts delete mode 100644 packages/channels/src/whatsapp-baileys/fake.ts delete mode 100644 packages/channels/src/whatsapp-baileys/jid.ts delete mode 100644 packages/channels/src/whatsapp-baileys/port.ts delete mode 100644 packages/channels/src/whatsapp-baileys/whatsapp.ts delete mode 100644 packages/channels/test-optin/auth-state.test.ts delete mode 100644 packages/channels/test-optin/client.ts delete mode 100644 packages/channels/test-optin/reading.test.ts delete mode 100644 packages/channels/test-optin/sending.test.ts delete mode 100644 packages/channels/test-optin/shape.ts delete mode 100644 packages/channels/test/approval.test.ts delete mode 100644 packages/channels/test/baileys.test.ts delete mode 100644 packages/channels/test/hub-approvals.test.ts delete mode 100644 packages/channels/test/hub-commit-points.test.ts delete mode 100644 packages/channels/test/hub-telegram.test.ts delete mode 100644 packages/channels/test/hub-whatsapp.test.ts delete mode 100644 packages/channels/test/hub.test.ts delete mode 100644 packages/channels/test/telegram.test.ts delete mode 100644 packages/channels/test/units.test.ts delete mode 100644 packages/channels/test/whatsapp-client.test.ts delete mode 100644 packages/channels/test/whatsapp.test.ts delete mode 100644 packages/channels/test/world.ts delete mode 100644 packages/channels/tsconfig.json delete mode 100644 packages/database/package.json delete mode 100644 packages/database/scripts/runtime-files.mjs delete mode 100644 packages/database/src/approvals.ts delete mode 100644 packages/database/src/channels.ts delete mode 100644 packages/database/src/computers.ts delete mode 100644 packages/database/src/crypto.ts delete mode 100644 packages/database/src/database.ts delete mode 100644 packages/database/src/db.ts delete mode 100644 packages/database/src/dots.ts delete mode 100644 packages/database/src/events.ts delete mode 100644 packages/database/src/inbound.ts delete mode 100644 packages/database/src/index.ts delete mode 100644 packages/database/src/migrate.ts delete mode 100644 packages/database/src/migrations/0001_initial.sql delete mode 100644 packages/database/src/migrations/0002_inbound_events.sql delete mode 100644 packages/database/src/migrations/0003_task_spend.sql delete mode 100644 packages/database/src/migrations/0004_channels.sql delete mode 100644 packages/database/src/migrations/0005_channel_prompts.sql delete mode 100644 packages/database/src/migrations/0006_events_task.sql delete mode 100644 packages/database/src/migrations/0007_dot_config_version.sql delete mode 100644 packages/database/src/migrations/0008_computer_next_automation.sql delete mode 100644 packages/database/src/migrations/0009_dot_keeps_its_memory.sql delete mode 100644 packages/database/src/migrations/0010_dot_has_no_goal.sql delete mode 100644 packages/database/src/migrations/0011_dot_has_no_browser_settings.sql delete mode 100644 packages/database/src/migrations/0012_dot_has_no_context_tokens.sql delete mode 100644 packages/database/src/migrations/0013_approval_used.sql delete mode 100644 packages/database/src/migrations/0014_states_that_exist.sql delete mode 100644 packages/database/src/pglite.ts delete mode 100644 packages/database/src/postgres.ts delete mode 100644 packages/database/src/rows.ts delete mode 100644 packages/database/src/secrets.ts delete mode 100644 packages/database/src/tasks.ts delete mode 100644 packages/database/src/testing.ts delete mode 100644 packages/database/test/adapters.test.ts delete mode 100644 packages/database/test/channels.test.ts delete mode 100644 packages/database/test/database.test.ts delete mode 100644 packages/database/test/repositories.test.ts delete mode 100644 packages/database/tsconfig.json delete mode 100644 packages/events/package.json delete mode 100644 packages/events/src/event-log.ts delete mode 100644 packages/events/src/index.ts delete mode 100644 packages/events/test/event-log.test.ts delete mode 100644 packages/events/tsconfig.json delete mode 100644 packages/iso/package.json delete mode 100644 packages/iso/scripts/kernel-check.ts delete mode 100644 packages/iso/src/encoding.ts delete mode 100644 packages/iso/src/index.ts delete mode 100644 packages/iso/src/names.ts delete mode 100644 packages/iso/src/writer.ts delete mode 100644 packages/iso/test/iso-reader.ts delete mode 100644 packages/iso/test/names.test.ts delete mode 100644 packages/iso/test/writer.test.ts delete mode 100644 packages/iso/tsconfig.json delete mode 100644 packages/sdk/package.json delete mode 100644 packages/sdk/src/client.ts delete mode 100644 packages/sdk/src/event-log.ts delete mode 100644 packages/sdk/src/index.ts delete mode 100644 packages/sdk/src/types.ts delete mode 100644 packages/sdk/test/event-log.test.ts delete mode 100644 packages/sdk/test/sdk.test.ts delete mode 100644 packages/sdk/tsconfig.json delete mode 100644 packages/shared/package.json delete mode 100644 packages/shared/src/api-token.ts delete mode 100644 packages/shared/src/api.ts delete mode 100644 packages/shared/src/browser.ts delete mode 100644 packages/shared/src/config.ts delete mode 100644 packages/shared/src/environment.ts delete mode 100644 packages/shared/src/events.ts delete mode 100644 packages/shared/src/file-kinds.ts delete mode 100644 packages/shared/src/files.ts delete mode 100644 packages/shared/src/guest-health.ts delete mode 100644 packages/shared/src/identity-rules.ts delete mode 100644 packages/shared/src/ids.ts delete mode 100644 packages/shared/src/index.ts delete mode 100644 packages/shared/src/labels.ts delete mode 100644 packages/shared/src/path-exists.ts delete mode 100644 packages/shared/src/paths.ts delete mode 100644 packages/shared/src/process.ts delete mode 100644 packages/shared/src/protocol.ts delete mode 100644 packages/shared/src/replace-file.ts delete mode 100644 packages/shared/src/run-process.ts delete mode 100644 packages/shared/src/sockets.ts delete mode 100644 packages/shared/src/sse.ts delete mode 100644 packages/shared/src/states.ts delete mode 100644 packages/shared/src/stderr-logger.ts delete mode 100644 packages/shared/src/support.ts delete mode 100644 packages/shared/src/tools.ts delete mode 100644 packages/shared/test/config.test.ts delete mode 100644 packages/shared/test/events.test.ts delete mode 100644 packages/shared/test/file-kinds.test.ts delete mode 100644 packages/shared/test/files.test.ts delete mode 100644 packages/shared/test/fixtures/identity-rules.json delete mode 100644 packages/shared/test/identity-rules.test.ts delete mode 100644 packages/shared/test/ids.test.ts delete mode 100644 packages/shared/test/labels.test.ts delete mode 100644 packages/shared/test/mcp-servers.test.ts delete mode 100644 packages/shared/test/paths.test.ts delete mode 100644 packages/shared/test/process.test.ts delete mode 100644 packages/shared/test/protocol.test.ts delete mode 100644 packages/shared/test/replace-file.test.ts delete mode 100644 packages/shared/test/sockets.test.ts delete mode 100644 packages/shared/test/sse.test.ts delete mode 100644 packages/shared/test/states.test.ts delete mode 100644 packages/shared/test/tools.test.ts delete mode 100644 packages/shared/tsconfig.json create mode 100644 pipeline/build.py create mode 100644 pipeline/publish.py create mode 100644 src/aihawk/__init__.py create mode 100644 src/aihawk/__main__.py create mode 100644 src/aihawk/apply.py create mode 100644 src/aihawk/cli.py create mode 100644 src/aihawk/config.py create mode 100644 src/aihawk/database.py create mode 100644 src/aihawk/documents.py create mode 100644 src/aihawk/llm.py create mode 100644 src/aihawk/store.py delete mode 100644 tests/bench/Dockerfile delete mode 100644 tests/bench/README.md delete mode 100644 tests/bench/author.py delete mode 100644 tests/bench/author_long.py delete mode 100644 tests/bench/bridge.ts delete mode 100644 tests/bench/dots_harbor/__init__.py delete mode 100644 tests/bench/dots_harbor/agent.py delete mode 100644 tests/bench/dots_harbor/bridge.py delete mode 100644 tests/bench/dots_harbor/dockerfile.py delete mode 100644 tests/bench/dots_harbor/environment.py delete mode 100644 tests/bench/dots_harbor/paths.py delete mode 100644 tests/bench/longmemeval.py delete mode 100644 tests/bench/references/fraud_find.py delete mode 100644 tests/bench/references/fraud_gen.py delete mode 100644 tests/bench/references/kvserver.py delete mode 100644 tests/bench/references/lisp.py delete mode 100644 tests/bench/references/lisp_cases.py delete mode 100644 tests/bench/references/perft.py delete mode 100644 tests/bench/run.sh delete mode 100644 tests/e2e/README.md delete mode 100644 tests/e2e/driver.ts delete mode 100644 tests/e2e/lib.ts delete mode 100644 tests/e2e/linux-host/Dockerfile delete mode 100644 tests/e2e/linux-host/prepare.sh delete mode 100644 tests/e2e/run.ts delete mode 100644 tests/e2e/scale.ts create mode 100644 tests/fakes.py delete mode 100644 tests/repo/agentd-build.test.ts delete mode 100644 tests/repo/agentd-protocol.test.ts delete mode 100644 tests/repo/architecture-engine.test.ts delete mode 100644 tests/repo/cli-bundle.test.ts delete mode 100644 tests/repo/default-install-licenses.test.ts delete mode 100644 tests/repo/e2e.test.ts delete mode 100644 tests/repo/engine-smoke.test.ts delete mode 100644 tests/repo/lock-licenses.ts delete mode 100644 tests/repo/notices.test.ts delete mode 100644 tests/repo/platform-branches.test.ts delete mode 100644 tests/repo/readme.test.ts delete mode 100644 tests/repo/test-guard.test.ts delete mode 100644 tests/repo/vendored-nanobot.test.ts delete mode 100644 tests/repo/whatsapp-optin.test.ts create mode 100644 tests/test_apply.py create mode 100644 tests/test_jobs.py create mode 100644 tests/test_pipeline.py create mode 100644 tests/test_real_browser.py delete mode 100644 tsconfig.base.json delete mode 100644 tsconfig.json delete mode 100644 tsconfig.whatsapp.json delete mode 100644 virtualization/cloud-init/meta-data.yaml.tmpl delete mode 100644 virtualization/cloud-init/user-data.yaml.tmpl delete mode 100644 virtualization/images/base.json delete mode 100644 virtualization/qemu/README.md delete mode 100644 virtualization/qemu/windows.json delete mode 100644 vitest.config.ts delete mode 100644 vitest.whatsapp.config.ts diff --git a/.gitattributes b/.gitattributes index 4cee5c12..5820331b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,30 +1,2 @@ -# Everything text is stored and checked out with LF. Shell scripts, systemd -# units, cloud-init templates and the pre-push hook all end up on Linux, where a -# CRLF turns `#!/bin/sh` into `/bin/sh^M: bad interpreter` and a unit file into -# one systemd silently misreads. Git-for-Windows with core.autocrlf=true would -# otherwise convert them on checkout. * text=auto eol=lf - -.githooks/** text eol=lf -*.sh text eol=lf -*.service text eol=lf -*.timer text eol=lf -*.socket text eol=lf -*.target text eol=lf -*.env text eol=lf -# Guest files the image builder copies verbatim onto the runtime ISO or into -# the cloud-init seed, and the Go sources whose gofmt check rejects a CR. -*.tmpl text eol=lf -*.yaml text eol=lf -*.go text eol=lf -*.sql text eol=lf -guest/image-builder/** text eol=lf - -*.png binary -*.jpg binary -*.ico binary -*.iso binary -*.img binary -*.qcow2 binary -*.woff binary -*.woff2 binary +*.pdf binary diff --git a/.githooks/pre-push b/.githooks/pre-push deleted file mode 100755 index 640e2477..00000000 --- a/.githooks/pre-push +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/sh -# Pre-push gate. Two halves: -# -# 1. This repository's own suites, which the shared policy knows nothing -# about: the typecheck and vitest over the TypeScript workspace, and go -# test over dot-agentd, each counted against .github/test-floors.json. -# 2. The shared policy, `invisible_core.hooks` from the pinned invisible-core -# (.github/gates-requirements.txt): English, identity and the other checks -# declared in pyproject.toml under [tool.invisible.hooks]. That pyproject -# is configuration only; nothing here is a Python package. -# -# CI alone runs the rest of tests.yml: the engine's pytest (Linux only, see -# invisible_engine_dots), the PostgreSQL half of the pg suites, the web -# client's Playwright tests, the two smokes and the claims gate. -# -# Install once with: -# git config core.hooksPath .githooks -# Bypass a known-broken WIP push with `git push --no-verify`; that is the only -# escape hatch, and never for a branch that feeds a release. - -# No `set -e`: exit codes here have to be READ and explained, not turned into a -# silent abort. A gate that dies without a message is the worst shape of all. - -# Run from the repository root regardless of where `git push` was invoked. -cd "$(dirname "$0")/.." || exit 1 - -refuse() { - for line in "$@"; do - echo "[pre-push] $line" >&2 - done - exit 1 -} - -# git runs a hook with GIT_DIR, GIT_INDEX_FILE and friends pointing at this -# repository. A test that creates its own scratch repository would then -# address this one instead. Each suite runs in a subshell without them, and -# with stdin from /dev/null, because stdin is the list of refs being pushed -# and belongs to the policy in step 2. -without_git_env() { - ( - for name in $(env | sed -n 's/^\(GIT_[A-Za-z0-9_]*\)=.*/\1/p'); do - unset "$name" - done - "$@" - ) /dev/null 2>&1; then - refuse "REFUSED - npm is not on PATH, so the TypeScript suites cannot run." \ - "Install Node 24 and run 'npm ci' once, then push again." -fi -if [ ! -d node_modules ]; then - refuse "REFUSED - node_modules is missing. Run 'npm ci' once, then push again." -fi -# The same three gates as CI's node job: types first (vitest strips them, so -# a type error passes every test), then vitest with its report, then the -# guard that counts what ran against .github/test-floors.json, because a run -# that collected too few tests or skipped some still exits 0. -mkdir -p tmp -echo "[pre-push] npm run typecheck" -without_git_env npm run typecheck -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - npm run typecheck exited with $status. Nothing is pushed past a type error." -fi -echo "[pre-push] vitest" -without_git_env npx vitest run --reporter=default --reporter=json --outputFile=tmp/vitest-report.json -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - vitest exited with $status. Nothing is pushed past a red suite." -fi -without_git_env node .github/scripts/test-guard.mjs tmp/vitest-report.json --suite vitest -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - the vitest run did not reach this host's floor in .github/test-floors.json (see above)." -fi - -# 1b. dot-agentd. Without Go its tests cannot run here, and a push that no -# one tested is refused rather than waved through on the strength of CI. -if ! command -v go >/dev/null 2>&1; then - refuse "REFUSED - go is not on PATH, so the dot-agentd tests cannot run." \ - "Install Go (1.25 or newer, see guest/dot-agentd/go.mod) and push again." -fi -# The same checks, in the same order, as the go job in tests.yml: a file gofmt -# would rewrite, or code go vet rejects, is refused here instead of in CI. -echo "[pre-push] gofmt and go vet (guest/dot-agentd)" -unformatted=$(cd guest/dot-agentd && gofmt -l .) -if [ -n "$unformatted" ]; then - refuse "REFUSED - gofmt would rewrite these dot-agentd files:" "$unformatted" \ - "Run gofmt -w on them and push again." -fi -(cd guest/dot-agentd && without_git_env go vet ./... && without_git_env env GOOS=windows go vet ./...) -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - go vet exited with $status. Nothing is pushed past a vet error." -fi -echo "[pre-push] go test ./... (guest/dot-agentd)" -(cd guest/dot-agentd && without_git_env go test -json -count=1 ./... > ../../tmp/go-test.json) -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - go test exited with $status (its events are in tmp/go-test.json). Nothing is pushed past a red suite." -fi -without_git_env node .github/scripts/test-guard.mjs tmp/go-test.json --suite go -status=$? -if [ "$status" -ne 0 ]; then - refuse "REFUSED - the go test run did not reach this host's floor in .github/test-floors.json (see above)." -fi - -# 2. The shared policy. The interpreter is, in order: INVISIBLE_GATE_PYTHON, -# the virtual environment under tmp/ that the command below creates, then a -# python on PATH. The venv layout differs between Windows (Scripts/) and the -# rest (bin/); both are looked for, so no platform check is needed. -python_bin="" -for candidate in "$INVISIBLE_GATE_PYTHON" tmp/gates-venv/bin/python tmp/gates-venv/Scripts/python.exe python3 python py; do - [ -n "$candidate" ] || continue - if [ -x "$candidate" ] || command -v "$candidate" >/dev/null 2>&1; then - python_bin="$candidate" - break - fi -done -if [ -z "$python_bin" ]; then - refuse "REFUSED - no python on PATH, so the shared gates cannot run." \ - "Nothing must be pushed past a hook that could not check it." \ - "Set INVISIBLE_GATE_PYTHON to an interpreter and push again." -fi - -pin=$(sed -n 's/^invisible-core==\([0-9.]*\).*/\1/p' .github/gates-requirements.txt) -if [ -z "$pin" ]; then - refuse "REFUSED - .github/gates-requirements.txt does not pin invisible-core exactly." -fi - -# exec, so stdin (the refs git is pushing) reaches the policy untouched. The -# installed invisible-core must be exactly the pinned one: CI runs that -# version, and a different policy locally would pass what CI refuses. -exec "$python_bin" -c 'import sys -pin = sys.argv[1] -setup = ("python -m venv tmp/gates-venv, then tmp/gates-venv/bin/python (or " - "tmp\\gates-venv\\Scripts\\python.exe) -m pip install -r .github/gates-requirements.txt") -try: - from importlib.metadata import PackageNotFoundError, version - installed = version("invisible-core") - from invisible_core.hooks import main -except (ImportError, PackageNotFoundError) as exc: - sys.exit("[pre-push] REFUSED - cannot import invisible_core.hooks (%s).\n" - "[pre-push] Create the gates environment once: %s" % (exc, setup)) -if installed != pin: - sys.exit("[pre-push] REFUSED - invisible-core %s is installed, the repository pins %s.\n" - "[pre-push] Reinstall: %s" % (installed, pin, setup)) -sys.exit(main())' "$pin" diff --git a/.github/ISSUE_TEMPLATE/01-setup.yml b/.github/ISSUE_TEMPLATE/01-setup.yml deleted file mode 100644 index 47ccd50c..00000000 --- a/.github/ISSUE_TEMPLATE/01-setup.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Setup failure -description: "setup, doctor, the images or the server fail before you can talk to a Dot" -title: "[setup] " -labels: ["bug", "setup"] -body: - - type: markdown - attributes: - value: | - Use this when the host never gets to a working Dot. If a Dot runs but does something wrong, use the bug report. - The guide's [troubleshooting](https://github.com/feder-cr/invisible_dots/blob/main/docs/guide.md#troubleshooting) covers the common failures. - - - type: dropdown - id: os - attributes: - label: Host - options: - - Windows 11 (Windows Hypervisor Platform) - - Windows 10 - - Ubuntu 24.04 (KVM) - - Other Linux - - Other - validations: - required: true - - - type: input - id: commit - attributes: - label: Commit - description: Output of `git rev-parse --short HEAD`. - validations: - required: true - - - type: textarea - id: doctor - attributes: - label: invisible-dots doctor - description: The full output of `node apps/cli/dist/invisible-dots.mjs doctor`. - render: text - validations: - required: true - - - type: textarea - id: what - attributes: - label: What you ran and what happened - description: The command, and its output verbatim. Remove keys and personal paths. - render: text - validations: - required: true - - - type: checkboxes - id: confirm - attributes: - label: Before submitting - options: - - label: Searched existing issues. - required: true - - label: On the latest `main`. - required: true - - label: Removed keys, tokens and personal paths. - required: true diff --git a/.github/ISSUE_TEMPLATE/02-bug.yml b/.github/ISSUE_TEMPLATE/02-bug.yml deleted file mode 100644 index f31974ac..00000000 --- a/.github/ISSUE_TEMPLATE/02-bug.yml +++ /dev/null @@ -1,70 +0,0 @@ -name: Bug report -description: A Dot, the web UI, the command line, the API or a channel does something wrong -title: "[bug] " -labels: ["bug"] -body: - - type: textarea - id: what - attributes: - label: What happened - description: What you asked or did, what you expected, and what happened instead. - validations: - required: true - - - type: textarea - id: steps - attributes: - label: How to reproduce - description: The message or task you gave the Dot, or the steps in the UI or the command line. - validations: - required: true - - - type: dropdown - id: where - attributes: - label: Where - multiple: true - options: - - Web UI - - Command line - - HTTP API - - Telegram - - WhatsApp - - The Dot's computer or browser - validations: - required: true - - - type: input - id: commit - attributes: - label: Commit and host - placeholder: "a0bc3a64, Windows 11" - validations: - required: true - - - type: input - id: model - attributes: - label: Model - placeholder: z-ai/glm-5.3-flash - validations: - required: false - - - type: textarea - id: logs - attributes: - label: Logs - description: "`invisible-dots logs --tail 200 --no-follow`, and the server's output around the failure. Remove keys and personal data." - render: text - validations: - required: false - - - type: checkboxes - id: confirm - attributes: - label: Before submitting - options: - - label: Searched existing issues. - required: true - - label: Removed keys, tokens and personal data. - required: true diff --git a/.github/ISSUE_TEMPLATE/03-feature.yml b/.github/ISSUE_TEMPLATE/03-feature.yml deleted file mode 100644 index dd43ca90..00000000 --- a/.github/ISSUE_TEMPLATE/03-feature.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Feature request -description: Something a Dot, the web UI or the command line should do -title: "[feature] " -labels: ["enhancement"] -body: - - type: textarea - id: need - attributes: - label: What you want to do - description: The task or the situation, in your words. What a Dot should be able to do, not how to build it. - validations: - required: true - - - type: textarea - id: today - attributes: - label: What happens today - description: What you tried, and where it stops. - validations: - required: false - - - type: textarea - id: idea - attributes: - label: An idea of how - description: Optional. - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 98b845ae..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Security issue - url: https://github.com/feder-cr/invisible_dots/blob/main/SECURITY.md - about: Do not open a public issue; report it privately as SECURITY.md says. - - name: A site detects or blocks the browser - url: https://github.com/feder-cr/invisible_playwright/issues - about: The Dot's browser is invisible_playwright; its issues are the place for that. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 5a479254..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -## What changes - - - -## Related issues - - - -## How it was tested - - - -## Checklist - -- [ ] One logical change; tests added or updated for any change of behaviour. -- [ ] The pre-push gate passed (`git config core.hooksPath .githooks`). -- [ ] The README or `docs/` updated if what a person sees changed. diff --git a/.github/gates-requirements.txt b/.github/gates-requirements.txt deleted file mode 100644 index 57eb67fa..00000000 --- a/.github/gates-requirements.txt +++ /dev/null @@ -1 +0,0 @@ -invisible-core==34.31.0 diff --git a/.github/scripts/golden-release.mjs b/.github/scripts/golden-release.mjs deleted file mode 100644 index b93ea6da..00000000 --- a/.github/scripts/golden-release.mjs +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env node -// Puts the golden image `image build --compress` made into the shape of a release (guest/image-builder/src/prebuilt.ts): -// its manifest, the image cut in parts under the 2 GiB a release asset may hold, and release.json naming each part with -// its size and SHA-256. Prints the tag, golden-. -// -// node .github/scripts/golden-release.mjs -import { createHash } from "node:crypto"; -import { createReadStream } from "node:fs"; -import { copyFile, mkdir, open, readdir, readFile, writeFile } from "node:fs/promises"; -import { basename, join } from "node:path"; - -const PART_BYTES = 1900 * 1024 * 1024; - -const [imagesDir, outDir] = process.argv.slice(2); -if (!imagesDir || !outDir) { - console.error("usage: golden-release.mjs "); - process.exit(2); -} - -const manifests = (await readdir(imagesDir)).filter((name) => /^golden-.+\.json$/.test(name)); -if (manifests.length !== 1) { - console.error(`expected one golden manifest in ${imagesDir}, found ${manifests.length}`); - process.exit(1); -} -const manifestName = manifests[0]; -const manifest = JSON.parse(await readFile(join(imagesDir, manifestName), "utf8")); -const image = join(imagesDir, manifest.file); -await mkdir(outDir, { recursive: true }); -await copyFile(join(imagesDir, manifestName), join(outDir, manifestName)); - -const parts = []; -let out; -let hash; -let written = 0; -const whole = createHash("sha256"); -async function closePart() { - if (!out) return; - await out.close(); - parts[parts.length - 1].size = written; - parts[parts.length - 1].sha256 = hash.digest("hex"); - out = undefined; -} -for await (let chunk of createReadStream(image, { highWaterMark: 8 * 1024 * 1024 })) { - whole.update(chunk); - while (chunk.length > 0) { - if (!out) { - const name = `${basename(manifest.file)}.part${String(parts.length).padStart(2, "0")}`; - parts.push({ name, size: 0, sha256: "" }); - out = await open(join(outDir, name), "w"); - hash = createHash("sha256"); - written = 0; - } - const take = chunk.subarray(0, PART_BYTES - written); - await out.write(take); - hash.update(take); - written += take.length; - chunk = chunk.subarray(take.length); - if (written === PART_BYTES) await closePart(); - } -} -await closePart(); - -const sha256 = whole.digest("hex"); -if (sha256 !== manifest.sha256) { - console.error(`${image} hashes to ${sha256}, its manifest says ${manifest.sha256}`); - process.exit(1); -} -await writeFile(join(outDir, "release.json"), `${JSON.stringify({ inputs_digest: manifest.inputs_digest, manifest: manifestName, parts }, null, 2)}\n`); -console.log(`golden-${manifest.inputs_digest}`); diff --git a/.github/scripts/test-guard.mjs b/.github/scripts/test-guard.mjs deleted file mode 100644 index a4aecce0..00000000 --- a/.github/scripts/test-guard.mjs +++ /dev/null @@ -1,193 +0,0 @@ -// Reads a test run's report and refuses a run that only looks green. -// -// vitest, `go test` and pytest exit 0 when nothing failed, which is also what they do -// when a whole file stopped being collected, when a suite skipped itself -// because a tool or a database was missing, or when a build constraint left -// a file out. Each of those reads exactly like a pass. So the count of tests -// that really ran is checked against a floor, and every skipped test must be -// one this host is known to skip. -// -// node .github/scripts/test-guard.mjs --suite [--floors ] -// -// vitest's JSON report (--reporter=json --outputFile) for the -// vitest suites, the output of `go test -json` for "go", and a -// JUnit XML report (a file ending in .xml: pytest --junitxml for -// the Python engine, Playwright's junit reporter for the web -// client's browser tests). -// --suite the entry of the floors file to apply: vitest, postgres, whatsapp, -// go, pytest or playwright. -// --floors default .github/test-floors.json. The entry is chosen by the -// host this runs on (linux, win32), so CI and the pre-push hook -// read the same numbers from the same file. -// -// A floor entry: min_passed, allow_skipped (a regex over a skipped test's -// full name, "" for none), and require ({ regex: n }: at least n passed -// tests whose full name matches, e.g. the suites parametrized on pg). -// -// Raise the floors when tests are added; lowering one is a decision to write -// down in the commit that does it. -import { readFileSync } from "node:fs"; - -function fail(message) { - console.error(`test-guard: REFUSED - ${message}`); - process.exit(1); -} - -const args = process.argv.slice(2); -const reportPath = args.shift(); -const usage = "usage: test-guard.mjs --suite [--floors ]"; -if (!reportPath) fail(usage); -let suite; -let floorsPath = ".github/test-floors.json"; -while (args.length > 0) { - const flag = args.shift(); - const value = args.shift(); - if (value === undefined) fail(`${flag} needs a value`); - if (flag === "--suite") suite = value; - else if (flag === "--floors") floorsPath = value; - else fail(`unknown option ${flag}; ${usage}`); -} -if (!suite) fail(usage); - -let floors; -try { - floors = JSON.parse(readFileSync(floorsPath, "utf8")); -} catch (error) { - fail(`cannot read ${floorsPath}: ${error.message}`); -} -// The host this runs on picks the floor, because each host runs a different -// set (a test that needs a real Windows PowerShell, a Go file built only on -// unix). This script is a check of the test run, not product code. -const host = process.platform; -const floor = floors[suite]?.[host]; -if (!floor) fail(`${floorsPath} has no "${suite}" floor for ${host}`); -const minPassed = floor.min_passed; -if (!Number.isInteger(minPassed) || minPassed <= 0) fail(`${floorsPath} ${suite}.${host}.min_passed must be a positive integer`); -const allowSkipped = floor.allow_skipped ? new RegExp(floor.allow_skipped) : undefined; -const required = Object.entries(floor.require ?? {}).map(([pattern, min]) => ({ pattern: new RegExp(pattern), min })); - -let text; -try { - text = readFileSync(reportPath, "utf8"); -} catch (error) { - fail(`cannot read ${reportPath}: ${error.message}`); -} - -/** Every test of the run as { fullName, status, file }, status passed | failed | skipped. */ -function vitestTests() { - let report; - try { - report = JSON.parse(text); - } catch (error) { - fail(`${reportPath} is not vitest's JSON report (${error.message}); run vitest with --reporter=json --outputFile`); - } - const tests = report.testResults.flatMap((file) => - file.assertionResults.map((test) => ({ - fullName: test.fullName, - status: test.status === "passed" || test.status === "failed" ? test.status : "skipped", - file: file.name, - })), - ); - // A file that failed to load has no failed test of its own, only an error. - const broken = report.testResults - .filter((file) => file.status === "failed" && file.assertionResults.every((test) => test.status !== "failed")) - .map((file) => `${file.name} failed outside any test: ${(file.message ?? "").split("\n")[0]}`); - return { tests, broken, files: report.testResults.length }; -} - -/** The text an XML attribute value stands for. */ -function xmlText(value) { - return value - .replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16))) - .replace(/&#([0-9]+);/g, (_, dec) => String.fromCodePoint(parseInt(dec, 10))) - .replace(/</g, "<") - .replace(/>/g, ">") - .replace(/"/g, '"') - .replace(/'/g, "'") - .replace(/&/g, "&"); -} - -/** The attributes of one start tag, as an object. */ -function xmlAttributes(tag) { - const attributes = {}; - for (const match of tag.matchAll(/([\w:.-]+)="([^"]*)"/g)) attributes[match[1]] = xmlText(match[2]); - return attributes; -} - -/** - * JUnit XML, the report of pytest --junitxml: one testcase element per test. - * A testcase holding a failure or an error element failed (a module that could - * not be collected is reported as one), one holding a skipped element was - * skipped, and any other passed. The name a skip is allowed by is - * " ". - */ -function junitTests() { - if (!/]/.test(text)) fail(`${reportPath} is not a JUnit XML report; run pytest with --junitxml or Playwright with the junit reporter`); - const tests = []; - const classes = new Set(); - for (const match of text.matchAll(/]*?)(\/?)>/g)) { - const attributes = xmlAttributes(match[1]); - let body = ""; - if (match[2] !== "/") { - const end = text.indexOf("", match.index); - body = end === -1 ? "" : text.slice(match.index + match[0].length, end); - } - const status = /<(failure|error)\b/.test(body) ? "failed" : / test.status === "passed"); -const failed = tests.filter((test) => test.status === "failed"); -const skipped = tests.filter((test) => test.status === "skipped"); - -console.log(`test-guard: ${suite} on ${host}: ${passed.length} passed, ${failed.length} failed, ${skipped.length} skipped, in ${files} files`); - -const problems = [...broken]; -if (failed.length > 0) problems.push(`${failed.length} failed tests`); -if (passed.length < minPassed) problems.push(`only ${passed.length} tests passed, the floor is ${minPassed}`); -for (const test of skipped) { - if (!allowSkipped || !allowSkipped.test(test.fullName)) problems.push(`skipped without being allowed to: ${test.fullName} (${test.file})`); -} -for (const { pattern, min } of required) { - const count = passed.filter((test) => pattern.test(test.fullName)).length; - console.log(`test-guard: ${count} passed tests match ${pattern}`); - if (count < min) problems.push(`${count} passed tests match ${pattern}, at least ${min} must`); -} - -if (problems.length > 0) { - for (const problem of problems) console.error(`test-guard: ${problem}`); - fail(`${problems.length} problem(s) with this run`); -} -console.log("test-guard: ok"); diff --git a/.github/test-floors.json b/.github/test-floors.json deleted file mode 100644 index ddac8746..00000000 --- a/.github/test-floors.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "//": "What each suite must reach on each host, read by .github/scripts/test-guard.mjs in CI (tests.yml) and in the pre-push hook. Raise a floor when tests are added; lowering one is a decision to write down in the commit that does it. Linux skips only the tests that drive a real Windows PowerShell; a Windows host compiles dot-agentd's unix-only test files out and skips the two Go tests that need a Linux guest. The playwright floor is the web client's browser tests (the web job of tests.yml; the same eighty-eight run on a Windows host, which is where they are developed). The pytest floor is the Python engine's (invisible_engine_dots, the engine job of tests.yml, Linux only, nothing may skip). The whatsapp floor is the suite that needs the real WhatsApp client, an opt-in install (npm run test:whatsapp, the whatsapp-client job of tests.yml, which installs the client and runs it with PostgreSQL, so the pg runs of the auth state count); a host without PostgreSQL reaches the win32 number.", - "vitest": { - "linux": { "min_passed": 2209, "allow_skipped": "^generated PowerShell on a real Windows PowerShell " }, - "win32": { "min_passed": 2206, "allow_skipped": "" } - }, - "postgres": { - "linux": { "min_passed": 744, "allow_skipped": "", "require": { "\\bpg\\b": 295 } } - }, - "whatsapp": { - "linux": { "min_passed": 25, "allow_skipped": "", "require": { "\\bpg\\b": 9 } }, - "win32": { "min_passed": 16, "allow_skipped": "" } - }, - "go": { - "linux": { "min_passed": 120, "allow_skipped": "" }, - "win32": { "min_passed": 70, "allow_skipped": "^agentd (TestSystemRoute|TestPowerOffStartsTheCommandAndAnswers202)$" } - }, - "pytest": { - "linux": { "min_passed": 2493, "allow_skipped": "" } - }, - "playwright": { - "linux": { "min_passed": 88, "allow_skipped": "" }, - "win32": { "min_passed": 88, "allow_skipped": "" } - } -} diff --git a/.github/workflows/golden-image.yml b/.github/workflows/golden-image.yml deleted file mode 100644 index 761056b5..00000000 --- a/.github/workflows/golden-image.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: golden image - -# Builds the golden image once, here, and publishes it as the release golden-, which -# `invisible-dots image build` downloads instead of building (guest/image-builder/src/prebuilt.ts). The digest is the -# one every host computes from the pinned inputs and the newest release of the Dot's browser on the package index -# (browser-release.ts), so a host only ever takes the image of its own inputs. A digest that already has its release -# is not built again. -# -# The schedule is what makes a new release of the browser reach the hosts as a prebuilt image: no file of this -# repository changes when one is published, and the next run here finds a new digest and builds it. -on: - push: - branches: [main] - paths: - - guest/image-builder/** - - virtualization/images/** - schedule: - - cron: "17 */6 * * *" - workflow_dispatch: - -permissions: - contents: write - -concurrency: - group: golden-image - cancel-in-progress: false - -defaults: - run: - shell: bash - -jobs: - build: - name: build and publish the golden image - runs-on: ubuntu-latest - timeout-minutes: 180 - env: - INVISIBLE_DOTS_HOME: ${{ github.workspace }}/../idots-home - GH_TOKEN: ${{ github.token }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - - uses: actions/setup-go@v6 - with: - go-version-file: guest/dot-agentd/go.mod - - name: KVM for the builder VM, and QEMU - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - sudo apt-get update -qq - sudo apt-get install -y -qq --no-install-recommends qemu-system-x86 qemu-utils - - run: npm ci --no-audit --no-fund - - run: npm run build --workspace @invisible-dots/cli - # The runtime ISO, which `image build` makes first, carries dot-agentd. - - working-directory: guest/dot-agentd - run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -buildvcs=false -ldflags="-s -w" -o bin/dot-agentd ./cmd/dot-agentd - - name: the image (downloaded instead when its release exists already) - id: build - run: | - node apps/cli/dist/invisible-dots.mjs image build --compress | tee build.log - tag=$(node .github/scripts/golden-release.mjs "$INVISIBLE_DOTS_HOME/images" "$RUNNER_TEMP/release") - echo "tag=$tag" >> "$GITHUB_OUTPUT" - - name: publish - run: | - tag='${{ steps.build.outputs.tag }}' - if gh release view "$tag" >/dev/null 2>&1; then - echo "$tag is published already" - exit 0 - fi - gh release create "$tag" "$RUNNER_TEMP"/release/* \ - --title "Golden image $tag" \ - --notes "The golden image of the inputs ${tag#golden-}, built by the golden image workflow from ${GITHUB_SHA}. invisible-dots image build downloads it when a checkout's inputs have this digest. It holds Ubuntu 24.04, the software guest/image-builder/pins.json and the engine's lock name, and the release of invisible-playwright-mcp its manifest records, each under its own license (THIRD_PARTY_NOTICES.md)." diff --git a/.github/workflows/jobs-database.yml b/.github/workflows/jobs-database.yml new file mode 100644 index 00000000..90c6e85e --- /dev/null +++ b/.github/workflows/jobs-database.yml @@ -0,0 +1,34 @@ +name: job database + +# Every day: read the public job databases, merge them and publish the result as a release, which `aihawk scan` reads. +# Users never scrape anything. +on: + schedule: + - cron: "23 4 * * *" + workflow_dispatch: + +permissions: + contents: write + +concurrency: + group: job-database + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 350 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: room on disk + run: | + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL + df -h / + - run: pip install duckdb + - run: python pipeline/build.py --out work + - run: python pipeline/publish.py --out work/out --repo "$GITHUB_REPOSITORY" + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/publish-wiki.yml b/.github/workflows/publish-wiki.yml deleted file mode 100644 index 091ab5b5..00000000 --- a/.github/workflows/publish-wiki.yml +++ /dev/null @@ -1,82 +0,0 @@ -# Publishes docs/wiki/ to the GitHub wiki of this repository on every push to main that changes it. -# -# The wiki is its own git repository (.wiki.git): flat pages, no front matter, a _Sidebar.md. The render is -# invisible_playwright_mcp's own (scripts/build_wiki.py and scripts/sync_article_pixels.py, MIT, fetched at a fixed -# commit rather than copied): it strips the front matter, rewrites [x](page.md) links to the wiki's form, names -# index.md Home, builds the sidebar from parent/nav_order, and gives every page its view pixel (a release asset of -# the `article-views` release, created on first use). The wiki checkout is emptied of pages before the copy, so a -# page deleted from docs/wiki/ leaves the wiki too. -name: publish-wiki - -on: - push: - branches: [main] - paths: - - "docs/wiki/**" - - ".github/workflows/publish-wiki.yml" - workflow_dispatch: {} - -permissions: - contents: write - -concurrency: - group: publish-wiki - cancel-in-progress: true - -env: - # invisible_playwright_mcp's main on 2026-10-09: the converter this wiki is rendered with. - CONVERTER_REPO: feder-cr/invisible_playwright_mcp - CONVERTER_REF: b72e8b1937771149ed06b2ba73ccb9cb32a687f8 - -jobs: - publish-wiki: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: Fetch the converter - run: | - set -euo pipefail - mkdir -p wiki_tools - for script in build_wiki.py sync_article_pixels.py; do - curl -fsSL -o "wiki_tools/$script" \ - "https://raw.githubusercontent.com/${CONVERTER_REPO}/${CONVERTER_REF}/scripts/$script" - done - - - name: Render docs/wiki/ into wiki pages - run: python wiki_tools/build_wiki.py docs/wiki wiki_build --pixels "${{ github.repository }}" - - # Upload before the push: a page published without its asset counts nothing until the next run. - - name: Give every new page its view pixel - env: - GITHUB_TOKEN: ${{ github.token }} - run: python wiki_tools/sync_article_pixels.py --repo "${{ github.repository }}" wiki_build - - - name: Check every page carries its own pixel - run: | - python wiki_tools/sync_article_pixels.py --selftest - python wiki_tools/sync_article_pixels.py --repo "${{ github.repository }}" --check wiki_build - - - name: Publish to the wiki - env: - WIKI_PUSH_TOKEN: ${{ secrets.WIKI_TOKEN != '' && secrets.WIKI_TOKEN || github.token }} - run: | - set -euo pipefail - repo="${{ github.repository }}" - git clone "https://x-access-token:${WIKI_PUSH_TOKEN}@github.com/${repo}.wiki.git" wiki - find wiki -maxdepth 1 -name '*.md' -delete - cp wiki_build/*.md wiki/ - cd wiki - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add -A - if git diff --cached --quiet; then - echo "wiki already up to date" - else - git commit -m "docs: sync wiki from docs/wiki (${{ github.ref_name }})" - git push origin HEAD:master - fi diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3cb34411..37ddeb00 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,333 +4,43 @@ on: push: branches: [main] pull_request: - branches: [main] - workflow_dispatch: permissions: contents: read -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -defaults: - run: - shell: bash - -# `gate` is the ONLY context the branch protection requires: it depends on every -# job, so its name never drifts when the jobs change. It accepts nothing but -# success, because no job here is ever skipped on purpose and none has a paths -# filter: a skip would mean a job that did not run, which reads exactly like -# one that passed. jobs: - node: - name: typecheck, vitest and the bundle (${{ matrix.os }}) + unit: + name: lint and unit tests (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - # The floors each host must reach live in .github/test-floors.json, - # which the pre-push hook reads too. os: [ubuntu-latest, windows-latest] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - # Linux's vitest builds the real dot-agentd and drives it with the host's GuestClient - # (apps/vm-manager/test/agentd.linux.test.ts, which vitest.config.ts collects on Linux only). - - if: runner.os == 'Linux' - uses: actions/setup-go@v6 - with: - go-version-file: guest/dot-agentd/go.mod - # The module has no dependencies, so there is no go.sum to key a cache on. - cache: false - - run: npm ci --no-audit --no-fund - - run: npm run typecheck - - name: the pre-push hook parses - run: sh -n .githooks/pre-push - - name: vitest - run: npx vitest run --reporter=default --reporter=json --outputFile=vitest-report.json - # vitest's exit code cannot tell "everything passed" from "half of it - # was never collected" or "a suite skipped itself": count what ran. - - name: refuse a run with too few tests or an unexpected skip - if: always() - run: node .github/scripts/test-guard.mjs vitest-report.json --suite vitest - - name: bundle (the command, which carries the server) - run: npm run build --workspace @invisible-dots/cli - # The bundled command on a fresh home: doctor must run end to end and - # create nothing. Its exit code is not 0 here (no QEMU, no images), so - # only "it ran and printed every check" is asserted. - - name: the bundled doctor runs and creates nothing - env: - INVISIBLE_DOTS_HOME: ${{ runner.temp }}/idots-home - run: | - set +e - node apps/cli/dist/invisible-dots.mjs doctor > doctor.txt 2>&1 - code=$? - set -e - cat doctor.txt - echo "doctor exit code: $code" - grep -q "checks:" doctor.txt - test ! -e "$INVISIBLE_DOTS_HOME" - - postgres: - name: the pg adapter against PostgreSQL - runs-on: ubuntu-latest - services: - postgres: - image: postgres:18.4-alpine3.23 - env: - POSTGRES_PASSWORD: test - ports: - - 5432:5432 - options: >- - --health-cmd "pg_isready -U postgres" - --health-interval 2s - --health-timeout 5s - --health-retries 30 - env: - # With DATABASE_URL set, every suite parametrized with testAdapters() - # runs on pg as well as on PGlite. - DATABASE_URL: postgres://postgres:test@127.0.0.1:5432/postgres - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - - run: npm ci --no-audit --no-fund - - name: vitest on both adapters - run: npx vitest run packages/database packages/events packages/channels apps/api apps/scheduler --reporter=default --reporter=json --outputFile=vitest-report.json - - name: refuse a run in which the pg suites did not run - if: always() - run: node .github/scripts/test-guard.mjs vitest-report.json --suite postgres - - # The WhatsApp client (Baileys) is an opt-in install: it depends on libsignal, which is GPL-3.0, and the default - # npm install holds nothing GPL. The jobs above never install it. This one does, with the command a person runs - # (npm run whatsapp:install), to prove the adapter against the real library: the types (the real module has the - # shape the adapter writes down) and the tests that need it, on PGlite and on PostgreSQL. - whatsapp-client: - name: the WhatsApp client, opt-in (types and tests on the real library) - runs-on: ubuntu-latest - services: - postgres: - image: postgres:18.4-alpine3.23 - env: - POSTGRES_PASSWORD: test - ports: - - 5432:5432 - options: >- - --health-cmd "pg_isready -U postgres" - --health-interval 2s - --health-timeout 5s - --health-retries 30 - env: - DATABASE_URL: postgres://postgres:test@127.0.0.1:5432/postgres - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - - run: npm ci --no-audit --no-fund - - name: install the client, as a person who enables WhatsApp does - run: npm run whatsapp:install - - name: the real module has the shape the adapter writes down - run: npm run typecheck:whatsapp - - name: vitest with the real client - run: npm run test:whatsapp -- --reporter=default --reporter=json --outputFile=vitest-report.json - - name: refuse a run with too few tests or an unexpected skip - if: always() - run: node .github/scripts/test-guard.mjs vitest-report.json --suite whatsapp - - iso: - name: the Linux kernel reads our ISO images - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - - run: npm ci --no-audit --no-fund - # The unit tests read images back with our own parser; this is the - # reader a guest really uses. See packages/iso/scripts/kernel-check.ts. - - name: write, mount read-only, compare - run: | - npx tsx packages/iso/scripts/kernel-check.ts write "$RUNNER_TEMP/sample.iso" - blkid -p -o export "$RUNNER_TEMP/sample.iso" | tee blkid.txt - grep -qx "TYPE=iso9660" blkid.txt - grep -qx "LABEL=cidata" blkid.txt - mkdir -p "$RUNNER_TEMP/mnt" - sudo mount -o loop,ro "$RUNNER_TEMP/sample.iso" "$RUNNER_TEMP/mnt" - npx tsx packages/iso/scripts/kernel-check.ts verify "$RUNNER_TEMP/mnt" - sudo umount "$RUNNER_TEMP/mnt" - - go: - name: dot-agentd (gofmt, go vet, go test, static build) - runs-on: ubuntu-latest - defaults: - run: - working-directory: guest/dot-agentd - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v6 - with: - go-version-file: guest/dot-agentd/go.mod - # The module has no dependencies, so there is no go.sum to key a cache on. - cache: false - - run: test -z "$(gofmt -l .)" || { gofmt -l .; exit 1; } - - run: go vet ./... - - run: GOOS=windows go vet ./... - # go test exits 0 when a test skipped itself or a build constraint left - # a file out, so what ran is counted against the same floors file. - - uses: actions/setup-node@v4 - with: - node-version: "24" - - run: go test -json -count=1 ./... > go-test.json - - name: refuse a run with too few tests or an unexpected skip - if: always() - run: node ../../.github/scripts/test-guard.mjs go-test.json --suite go --floors ../../.github/test-floors.json - - run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -buildvcs=false -ldflags="-s -w" -o bin/dot-agentd ./cmd/dot-agentd - - run: file bin/dot-agentd | tee /dev/stderr | grep -q "ELF 64-bit LSB executable, x86-64.*statically linked" - - engine: - name: the engine (pytest) - runs-on: ubuntu-latest - defaults: - run: - working-directory: invisible_engine_dots steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - - run: python -m pip install -e ".[dev]" - - run: pytest -q --junitxml=pytest-report.xml - # pytest exits 0 when a module stopped being collected or a test skipped - # itself, so what ran is counted against the same floors file. - - uses: actions/setup-node@v4 - with: - node-version: "24" - - name: refuse a run with too few tests or an unexpected skip - if: always() - run: node ../.github/scripts/test-guard.mjs pytest-report.xml --suite pytest --floors ../.github/test-floors.json + - run: pip install -e ".[dev]" + - run: ruff check . + - run: pytest -m "not browser" - smoke: - name: the engine smoke (dot-agentd and the engine under their two users) - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - # Builds dot-agentd in golang:1.26.8, the engine's environment in ubuntu:24.04 - # the way provision.sh builds it, and runs the Dot. It exits non-zero on a - # failed or a skipped check and prints "SMOKE: N passed, F failed, S skipped". - - name: run the smoke on this checkout - run: bash guest/image-builder/test/smoke/run.sh - - browser-smoke: - name: the browser smoke (the real invisible-playwright-mcp and its Firefox, as the Dot runs them) - runs-on: ubuntu-latest - timeout-minutes: 45 - steps: - - uses: actions/checkout@v4 - # The golden image's browser built as provision.sh builds it (apt packages of pins.json, the newest - # invisible-playwright-mcp, the engine of the browser), a desktop on :0, and the Dot - # (dot-agentd and the engine under their two users) browsing pages of the container. It needs the - # network for those downloads and for the egress address of a launch. Same exit rule and summary - # line as the smoke job. - - name: run the browser smoke on this checkout - run: bash guest/image-builder/test/smoke/run.sh --suite browser - - web: - name: the web client builds and passes its browser tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: npm - - run: npm ci --no-audit --no-fund - - name: next build - run: npm run build --workspace @invisible-dots/web - - name: install the browser the tests drive - run: npx playwright install --with-deps chromium - # Each worker starts the real control plane (over a fake VM layer) and the built web client; see - # apps/web/e2e/harness.ts. The JUnit report lands in apps/web/playwright-report.xml. - - name: browser tests - run: npm run test:e2e --workspace @invisible-dots/web - # Playwright exits 0 when a spec file stopped being collected or a test skipped itself, so what ran is - # counted against the same floors file. - - name: refuse a run with too few tests or an unexpected skip - if: always() - run: node .github/scripts/test-guard.mjs apps/web/playwright-report.xml --suite playwright - - name: keep the traces of a failed run - if: failure() - uses: actions/upload-artifact@v4 - with: - name: playwright-traces - path: apps/web/test-results - if-no-files-found: ignore - - english: - name: the repository is English + browser: + name: the real browser on a real form runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - # The gate ships in the pinned invisible-core; its settings are read - # from pyproject.toml ([tool.invisible.english]). - - name: install the pinned gates - run: | - python -m pip install --upgrade pip - pip install -r .github/gates-requirements.txt - - name: check the prose - run: | - python -m invisible_core.english --selftest - python -m invisible_core.english - - claims: - name: the README promises nothing it cannot support - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: install the pinned gates - run: | - python -m pip install --upgrade pip - pip install -r .github/gates-requirements.txt - - name: check the claims - run: | - python -m invisible_core.claims --selftest - python -m invisible_core.claims + - run: pip install -e ".[dev]" + - run: sudo apt-get update -qq && sudo apt-get install -y -qq xvfb libgtk-3-0t64 libasound2t64 libdbus-glib-1-2 libxt6t64 + - run: xvfb-run -a -s "-screen 0 1920x1080x24" pytest -m browser gate: - needs: [node, postgres, whatsapp-client, iso, go, engine, smoke, browser-smoke, web, english, claims] - if: always() + name: gate runs-on: ubuntu-latest + needs: [unit, browser] + if: always() steps: - - name: refuse unless every job succeeded - env: - RESULTS: ${{ toJSON(needs) }} - run: | - echo "$RESULTS" - node -e ' - const needs = JSON.parse(process.env.RESULTS); - const names = Object.keys(needs); - if (names.length !== 11) { console.error(`expected 11 jobs, got ${names.length}`); process.exit(1); } - let ok = true; - for (const name of names) { - console.log(`${name}: ${needs[name].result}`); - if (needs[name].result !== "success") ok = false; - } - if (!ok) { console.error("a job did not succeed"); process.exit(1); } - console.log("ok"); - ' + - run: test "${{ needs.unit.result }}" = success && test "${{ needs.browser.result }}" = success diff --git a/.gitignore b/.gitignore index 86ba6965..73f27f00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,14 @@ -node_modules/ -.next/ -dist/ -coverage/ -*.tsbuildinfo -*.log -.env -.env.* - -# Go build output (guest/dot-agentd/bin/dot-agentd) -bin/ - -# Images written by local checks and builds; the real ones live in -# INVISIBLE_DOTS_HOME, never in the tree. -*.iso -*.qcow2 -*.img - -# Scratch output of local checks, and the virtual environment the pre-push -# hook creates there for the English and claims gates -/tmp/ - -# vitest's JSON report, as CI and the pre-push hook write it -vitest-report.json - -# The benchmark's tasks: tests/bench/run.sh writes them with author.py and author_long.py before every run -/tests/bench/tasks/ -/tests/bench/tasks-long/ - -# Editor and Python leftovers of the gates __pycache__/ +*.pyc .venv/ +.pytest_cache/ +.ruff_cache/ +dist/ +build/ +*.egg-info/ -# The README animation's frames: docs/hero/build.mjs writes them on every run, from the pages and photos beside it -/docs/hero/frames/ +# A search's own files: your CV, your answers and what AIHawk records. +.aihawk/ +aihawk.yaml +cv.md +answers.yaml diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 727cdb26..00000000 --- a/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -engine-strict=true -fund=false diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 127c7195..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,33 +0,0 @@ -# Code of Conduct - -This project follows the [Contributor Covenant, v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). - -## Our Pledge - -We pledge to make participation in our community a harassment-free experience for everyone. - -## Standards - -Examples of behavior that contributes to a positive environment: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community - -Examples of unacceptable behavior: - -- The use of sexualized language or imagery -- Trolling, insulting or derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information without explicit permission - -## Enforcement - -Instances of unacceptable behavior may be reported by contacting the maintainer at **federico.elia.majo@gmail.com**. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. - -The maintainer is obligated to maintain confidentiality with regard to the reporter of an incident. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 5d5b0a5a..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,41 +0,0 @@ -# Contributing to invisible_dots - -Issues and pull requests are welcome. - -## Quick links - -- **Setup or `doctor` fails?** Open a [setup report](https://github.com/feder-cr/invisible_dots/issues/new?template=01-setup.yml). -- **A Dot, the web UI or the command line misbehaves?** Open a [bug report](https://github.com/feder-cr/invisible_dots/issues/new?template=02-bug.yml). -- **Idea?** Open a [feature request](https://github.com/feder-cr/invisible_dots/issues/new?template=03-feature.yml). -- **Security issue?** Do **not** open a public issue: see [SECURITY.md](SECURITY.md). -- **A site detects or blocks the browser?** That belongs to - [invisible_playwright](https://github.com/feder-cr/invisible_playwright/issues), the Dot's browser. - -## Development - -Everything is in [the guide's development section](docs/guide.md#development-and-tests). In short: - -```sh -npm ci -npm run typecheck -npm test -git config core.hooksPath .githooks # the pre-push gate: typecheck, vitest, go test, prose checks -``` - -The engine (`invisible_engine_dots/`, `pytest`, Linux only) and dot-agentd (`guest/dot-agentd/`, `go test ./...`) -have their own suites; [docs/architecture.md](docs/architecture.md) explains every component. - -## Pull requests - -1. Branch from `main`; one logical change per PR. -2. Add or update the tests for any change of behaviour. A test that stops running fails CI: the counts are held - to `.github/test-floors.json`. -3. Write the commit message as the repository does: `area: what is now true`, for example - `scheduler: a task the claim skipped is claimed when the row is free`. -4. Update the README or `docs/` when what a person sees changes. The README promises nothing it cannot - support, and CI checks it. -5. Every check must be green before merge. - -## License - -By contributing, you agree that your contributions are licensed under the MIT License ([LICENSE](LICENSE)). diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..f1b0baff --- /dev/null +++ b/NOTICE @@ -0,0 +1,11 @@ +AIHawk includes or adapts work from these projects. + +src/aihawk/documents.py + The shape of the job report (dimensions weighed by judgment, a score from 1 to 5, posting legitimacy + judged apart from the score) is adapted from career-ops (https://github.com/santifer/career-ops), + MIT License, Copyright (c) 2026 Santiago Fernandez de Valderrama. No file was copied. + +The published job database + Is merged from the public sources named in pipeline/build.py, each with its home and licence as far as + it states one; each release's manifest.json lists them and which were read that day, and every row + names the sources that carried it. Each posting belongs to its employer and links back to the original. diff --git a/README.md b/README.md index 3a25a462..eff158fa 100644 --- a/README.md +++ b/README.md @@ -1,104 +1,50 @@ -
- - - - - - - invisible_dots, an open-source, self-hosted alternative to OpenAI Dots, Meta Muse, Grok Bot, Manus Cue and Claude Cowork. An animation of what a Dot does: asked once in its chat to save a shop's invoices every month and send the total to Telegram, it works on a computer of its own (a desktop, a terminal, files and a Firefox that keeps the shop's login), writes the steps down as a skill, asks before it adds the monthly automation, and then sends the total every month; several Dots, one computer each. - -
+# AIHawk -Open-source, self-hosted alternative to OpenAI Dots, Grok Bot. Built to be undetectable by anti-bot systems. +Find the jobs that fit your CV and apply to them. -## Quickstart +AIHawk searches a job database rebuilt every day from every public job database we know of, judges each job against your CV, writes a CV for the job, and fills in the application form in a visible browser. It sends nothing until you say yes. -You need Node 24+, Go 1.25+, Git and hardware virtualization (x86-64), plus an OpenRouter key. +```sh +pip install git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk +export ORCAROUTER_API_KEY=sk-orca-... -**Windows** (PowerShell): - -```powershell -winget install -e --id OpenJS.NodeJS.LTS; winget install -e --id GoLang.Go; winget install -e --id Git.Git -git clone https://github.com/feder-cr/invisible_dots; cd invisible_dots -npm ci; npm run build --workspace @invisible-dots/cli -node apps/cli/dist/invisible-dots.mjs setup --all -node apps/cli/dist/invisible-dots.mjs server +mkdir my-search && cd my-search +aihawk init # writes aihawk.yaml, cv.md and answers.yaml: fill them in +aihawk scan # searches the database; uses no model, scrapes nothing +aihawk score # judges the new jobs against your CV and goals +aihawk list # the best first +aihawk apply --top 5 # fills the forms and asks before each send ``` -**Linux** (Ubuntu 24.04): +## How it works -```bash -curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - && sudo apt-get install -y nodejs git && sudo snap install go --classic -git clone https://github.com/feder-cr/invisible_dots && cd invisible_dots -npm ci && npm run build --workspace @invisible-dots/cli -node apps/cli/dist/invisible-dots.mjs setup --all -node apps/cli/dist/invisible-dots.mjs server -``` - -`setup --all` installs QEMU and turns on the accelerator (KVM, or the Windows Hypervisor Platform), then builds or -downloads the Dot's images; run it again after a restart and it carries on. Then open **http://127.0.0.2:3000**, -paste your OpenRouter key and create your first Dot. Every step and its failure modes: -[the guide's quickstart](docs/guide.md#quickstart). - -## What to ask a Dot - -Anything that needs a computer and a person's judgement, for as long as it takes: - -> Open a browser identity called research, go to https://example.com and tell me the page's title and its first -> sentence. Leave the browser open. - -> Every morning, check one-way fares from Milan to Lisbon for the next two weeks, write them to -> ~/workspace/fares.csv and tell me the cheapest day. - -> Log in to the shop with the shopping identity, download this month's invoices to ~/documents, and remember where -> the invoices page is for next time. - -## What a Dot has - -| | | +| Step | What happens | |---|---| -| **[A computer of its own](docs/guide.md#what-a-dot-can-do)** | A hardware-accelerated VM with a Linux desktop and a persistent disk. It sleeps when idle and wakes for the next message, task or automation. | -| **[A browser that is not blocked](docs/guide.md#the-browser)** | [invisible_playwright_mcp](https://github.com/feder-cr/invisible_playwright_mcp): Firefox patched in C++, the fingerprint set inside the engine. Each identity keeps its own cookies and logins. | -| **[Memory and skills](docs/guide.md#what-a-dot-can-do)** | It writes its own notes and how-tos in its home folder, as Claude Code does, and reads them on the next task. | -| **[Your MCP servers](docs/guide.md#mcp-servers)** | Any MCP server you declare, a program on its computer or a URL, as in Claude Code. Its keys stay out of the config. | -| **[Permissions you set](docs/guide.md#approvals)** | Every tool belongs to a permission: allow, ask or deny. An ask waits in your Inbox, survives a restart and runs the call once. | -| **[Tasks and automations](docs/guide.md#the-web-ui)** | A queue with priorities and start times, and its own recurring jobs, for which its computer is started on time. | -| **[Many ways to reach it](docs/guide.md#talk-to-it-from-your-phone)** | Web UI, command line, HTTP API with live events, Telegram, and WhatsApp as an opt-in. | -| **[Nothing lost on a crash](docs/guide.md#how-it-works)** | A restart or a `kill -9` keeps every message and task you saw accepted, and a tool call cut short is never run twice. | +| **Find** | Queries the daily database in place, keeping the titles and locations you asked for, without downloading the whole of it. | +| **Judge** | Scores each job from 1 to 5 by reasoning about your CV against the posting, and reports the gaps. | +| **Tailor** | Reorders and rephrases your CV for the job. Every fact must already be in your CV. | +| **Apply** | Fills the form through [invisible-playwright-mcp](https://github.com/feder-cr/invisible_playwright_mcp) with what your CV and answers file say. What they do not say comes back to you as a question, never as a guess. | -## Documentation +The model never sends an application. It fills the form and names the submit button; AIHawk clicks it after your yes. A click by the model on anything that would send the form is refused. -- [Guide](docs/guide.md): install, the web UI, the command line, the browser, channels, configuration, updating -- [Architecture](docs/architecture.md): every component and why it is there -- [Troubleshooting](docs/guide.md#troubleshooting) and [development and tests](docs/guide.md#development-and-tests) +`aihawk apply --auto-submit` sends without asking. An automated application in your name can be wrong, and sites can close accounts for it: read the forms first, and use it only when you accept that. -## Related projects +## Models -**The pieces of this one.** A Dot's browser is -[invisible_playwright_mcp](https://github.com/feder-cr/invisible_playwright_mcp), on -[invisible_playwright](https://github.com/feder-cr/invisible_playwright) and -[invisible_core](https://github.com/feder-cr/invisible_core); the engine is a fork of -[nanobot](https://github.com/HKUDS/nanobot). +AIHawk talks to one gateway, [OrcaRouter](https://orcarouter.ai), with `orcarouter/auto` as the default model. Change `model` in `aihawk.yaml`, or point `base_url` at any endpoint compatible with OpenAI's API that supports tool calling and structured output. + +## Limits + +- AIHawk fills forms on Greenhouse, Lever and Ashby. Other postings are found and listed, to apply to by hand. +- Forms behind a login or a captcha come back as blocked; AIHawk does not try to get around them. +- The tailored PDF uses a Latin font, so CVs in other scripts need your own PDF. + +## Thanks + +The job database is built from the public databases listed in [NOTICE](NOTICE); each posting belongs to its employer and links back to it. The scoring rubric's shape is adapted from [career-ops](https://github.com/santifer/career-ops) (MIT). + +The Dots project that used to live here moved to [feder-cr/invisible_dots](https://github.com/feder-cr/invisible_dots). ## License -MIT, see [LICENSE](LICENSE). Third-party components and their licenses: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). - -## Disclaimer - -This project is provided as-is, with no warranties. Use it at your own risk and in compliance with the laws of your -jurisdiction. A Dot acts with your accounts and from your connection: respect the terms of the sites it visits and -their robots.txt. - ---- - -

- tests - license: MIT - status: alpha - hosts: Linux and Windows -

- -

- Built by Federico Elia -

+[MIT](LICENSE) diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index a752d756..00000000 --- a/SECURITY.md +++ /dev/null @@ -1,40 +0,0 @@ -# Security Policy - -## Supported versions - -Only `main` receives fixes: nothing is packaged yet, and you build from this repository. - -## Reporting a vulnerability - -Do not report security issues in public issues, discussions or pull requests. - -Send a report to `federico.elia.majo@gmail.com` with the subject prefix `[security][invisible_dots]`, with: - -- what the issue is and what it affects -- the steps to reproduce -- the commit (`git rev-parse --short HEAD`), the host OS and `invisible-dots doctor --json` -- a fix, if you have one - -What a Dot is and is not protected against is written down in -[the guide's security model](docs/guide.md#security-model-and-known-limits): a way around one of those guarantees -is in scope. - -## Scope - -In scope: - -- The control plane: API, scheduler, VM manager, database, web client and command line -- The guest: dot-agentd, the engine and the separation between them and the Dot's user -- The images and how they are built and downloaded - -Out of scope: - -- The Dot's browser: report to [invisible_playwright_mcp](https://github.com/feder-cr/invisible_playwright_mcp) or - [invisible_playwright](https://github.com/feder-cr/invisible_playwright) -- QEMU, Firefox and other upstream projects: report to them directly - -Not security issues: - -- A site detecting or blocking the browser: open a regular issue in - [invisible_playwright](https://github.com/feder-cr/invisible_playwright/issues) -- What a model chooses to do with permissions you set to allow diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md deleted file mode 100644 index 4b6306da..00000000 --- a/THIRD_PARTY_NOTICES.md +++ /dev/null @@ -1,634 +0,0 @@ -# Third-party notices - -The MIT license in `LICENSE` covers this repository, except: - -- everything under `invisible_engine_dots/`, a hard fork of nanobot, which - is under `invisible_engine_dots/LICENSE` and the nested notice listed in - its section below. - -That fork, the text this repository's history holds through the earlier -TypeScript engine, and the web client's files that derive from other projects -(each starts with a `Derived from` comment naming its source, and the project -has a section below) come with the notices below. The default `npm install` -holds nothing under the GPL -(the golden image's guest operating system is Ubuntu, which carries GPL software -under its own licenses, downloaded from Ubuntu's archive by whoever builds the -image: docs/architecture.md section 11.3); the -one GPL-3.0 dependency, `libsignal` of the optional WhatsApp client, is left out -of the default install and is described in the section "The opt-in WhatsApp -client and `libsignal` (GPL-3.0)". - -## Open Multi-Agent - -The earlier TypeScript engine (`guest-runtime/engine/`) was derived in part -from it. That engine is deleted; its files and its `UPSTREAM.md` (source, -version and commit) are in this repository's history, before the commit -"repo: delete the earlier TypeScript engine and agent", and this notice stays -for as long as that history does. - -```text -MIT License - -Copyright (c) Shenzhen YuanASI Technology Co., Ltd. and open-multi-agent contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## context-chef - -`@context-chef/core` 4.2.1. Open Multi-Agent's `agent/runner.ts`, as imported -into this repository's history, contained `groupIntoTurns` and -`stripMediaBlocksForSummary`, modelled on this library (the deleted engine's -`UPSTREAM.md` records the details). - -```text -MIT License - -Copyright (c) 2025 MyPrototypeWhat - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## Context compaction (OpenHands, OpenAI Codex, opencode) - -How the engine compacts a request that reaches its model's context window -(`invisible_engine_dots/nanobot/agent/context_governance.py`, `memory.py` and -`templates/agent/consolidator_archive.md`) takes from three projects: - -- the headings of the summary (USER_CONTEXT, TASK_TRACKING, COMPLETED, PENDING, - CURRENT_STATE, CODE_STATE, TESTS, CHANGES, DEPS, VERSION_CONTROL_STATUS) from - the summarizing prompt of OpenHands' software-agent-sdk - (`openhands-sdk/openhands/sdk/context/condenser/prompts/summarizing_system.j2`); -- the handoff framing of the summary and of the text that introduces it, the - person's latest messages kept as they wrote them up to 20000 tokens, and - dropping the oldest messages when the summary's own request does not fit, - from OpenAI Codex (`codex-rs/prompts/templates/compact/`, - `codex-rs/core/src/compact.rs`), under the Apache License 2.0 - (https://www.apache.org/licenses/LICENSE-2.0), with this notice: - -```text -OpenAI Codex -Copyright 2025 OpenAI -``` - -- the room kept for the answer (20000 tokens) and the thresholds for clearing old - tool results (the newest 40000 tokens kept, 20000 freed at least) from - opencode (`packages/opencode/src/session/overflow.ts` and `compaction.ts`). - -```text -MIT License - -Copyright (c) 2026 OpenHands contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -```text -MIT License - -Copyright (c) 2025 opencode - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## nanobot - -`invisible_engine_dots/` is imported from nanobot -(https://github.com/HKUDS/nanobot, commit -`f75470e72f0993dcf92accc81282adaa48b16f56`) and modified for invisible_dots. -It is a hard fork: upstream changes are not tracked or merged. Source, commit, -what the import left out and what was removed since: -`invisible_engine_dots/UPSTREAM.md`. Its -`LICENSE`, byte for byte: - -```text -MIT License - -Copyright (c) 2025-present Xubin Ren and the nanobot contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -The fork carries one further notice, which stays next to the code it covers: - -- `invisible_engine_dots/THIRD_PARTY_NOTICES.md`: says that no third-party - component is vendored in the fork. - -Its Python dependencies are not part of this repository: the golden image's -build installs them from PyPI as the wheels their publishers released, pinned -by hash in `guest/image-builder/builder/engine-requirements.lock`, each under -its own license. The runtime disk carries the fork's own source with its -`LICENSE` and `UPSTREAM.md` (`/opt/invisible-dots/engine/` in the guest). - -Two files of the web client derive from nanobot's web UI instead (the -`webui/` of the upstream repository at commit 9dc0aba, under the same license -as above): `apps/web/src/components/chat/activity-step.tsx` and -`apps/web/src/components/channels/qr-connect.tsx`. The first comment of each -says what was changed. - -## hev-socks5-tunnel (in the golden image) - -The golden image carries the static binary `hev-socks5-tunnel` 2.18.0 -(https://github.com/heiher/hev-socks5-tunnel), pinned by URL and SHA-256 in -`guest/image-builder/pins.json` and downloaded when the image is built. It -routes a Dot's VM through its VM proxy. It is MIT-licensed: - -> Copyright (c) 2022 hev -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of -> this software and associated documentation files (the "Software"), to deal in -> the Software without restriction, including without limitation the rights to -> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -> of the Software, and to permit persons to whom the Software is furnished to do -> so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all -> copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -> SOFTWARE. - -## shadcn/ui - -The primitives in `apps/web/src/components/ui/` and `apps/web/src/lib/utils.ts` -were generated from shadcn/ui (https://github.com/shadcn-ui/ui, commit -0e3abd65) and changed; each file's first comment says what changed. - -```text -MIT License - -Copyright (c) 2023 shadcn - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## OpenDots (CopilotKit) - -`apps/web/src/lib/time.ts`, `apps/web/src/lib/use-visible-interval.ts`, -`packages/shared/src/labels.ts` and -`apps/web/src/components/tasks/task-status.tsx` derive from OpenDots by CopilotKit -(https://github.com/CopilotKit/OpenDots, commit 88f2a08); each file's first -comment says what was changed. - -```text -The MIT License - -Copyright (c) Atai Barkai - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -``` - -## AI Elements (Vercel) - -`apps/web/src/components/chat/conversation.tsx` and -`apps/web/src/components/chat/tool-status.tsx` derive from AI Elements by Vercel -(https://github.com/vercel/ai-elements, commit 6a9d5b1), licensed under the Apache -License, Version 2.0, which is given once, below. Each file's first comment states -what was changed, as the license asks. - -```text -Copyright 2023 Vercel, Inc. - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2022 Joe Bell - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -``` - -## open-cowork - -`apps/web/src/components/computer/screen-view.tsx` derives from open-cowork by -Coasty (https://github.com/coasty-ai/open-cowork, commit fbbc671); its first comment -says what was changed. No asset of that project is used. - -```text -MIT License - -Copyright (c) 2026 Coasty / open-cowork contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## assistant-ui - -`apps/web/src/components/elements/approval-card.tsx` and -`apps/web/src/lib/range.ts` derive from assistant-ui -(https://github.com/assistant-ui/assistant-ui, commit 0bdf050); each file's first -comment says what was changed. - -```text -MIT License - -Copyright (c) 2026 AgentbaseAI Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## OpenDots (Shashankss1205) - -`apps/web/src/components/approvals/diff-preview.tsx` and -`apps/web/src/lib/diff.ts` derive from OpenDots by Shashank Shekhar Singh -(https://github.com/Shashankss1205/OpenDots, commit bb8db95), which includes source -previously distributed under the name Spots (Copyright (c) 2026 Spots contributors, -also MIT); each file's first comment says what was changed. No other project of the -same name is meant: the CopilotKit one has its own section above. - -```text -MIT License - -Copyright (c) 2026 Shashank Shekhar Singh - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -## The opt-in WhatsApp client and `libsignal` (GPL-3.0) - -The default `npm install` holds nothing under the GPL. The WhatsApp adapter -(`packages/channels/src/whatsapp-baileys/`) uses Baileys (MIT), a client of the -WhatsApp Web protocol, which depends on the npm package `libsignal`, under the -GNU General Public License, version 3, and so does not fit this repository's MIT -license. They are therefore not part of the default install: - -- No workspace declares Baileys, as a dependency of any kind, and the root - `package-lock.json` holds none of it or of what only it needs, so `npm ci` - installs no GPL package (`tests/repo/default-install-licenses.test.ts` scans - the lock file for licenses). -- The client lives apart, in `optional/whatsapp/`, with a `package.json` that - pins Baileys to one exact release and a `package-lock.json` with the - integrity hash of every package. A person who turns WhatsApp on installs it - with one command from the repository root: `npm run whatsapp:install` (a - clean install of that lock file, without install scripts). Installing it is - that person's choice, and what they then hold, Baileys and `libsignal`, - is under those licenses. -- The adapter loads the client from that folder, by path, only when a - connection opens and only if it is there. Otherwise it says how to enable it: - run `npm run whatsapp:install`, then start the server with - `INVISIBLE_DOTS_WHATSAPP=1`. -- The command bundle that `apps/cli/scripts/build.mjs` makes does not hold it - (the bundle has no import of it), so no build of this repository is a GPL - work. Whoever distributes a build together with an installed - `optional/whatsapp/node_modules`, which is GPL-3.0 code, has to take that into - account. - -## LGPL image libraries that Next.js may install - -The web client's framework, Next.js, lists `sharp` (an image library, -Apache-2.0) as an optional dependency, and `sharp` lists prebuilt binaries for -each platform, `@img/sharp-*` and `@img/sharp-libvips-*`, which carry libvips -under the LGPL-3.0 (`LGPL-3.0-or-later`, or `Apache-2.0 AND LGPL-3.0-or-later` -for the Windows builds). `npm ci` installs the ones that fit the host, as -optional packages. They are LGPL, not GPL, and unmodified; whoever distributes -an installation together with its `node_modules` has to meet the LGPL for them. -`tests/repo/default-install-licenses.test.ts` allows no LGPL package in the lock -file other than these. diff --git a/apps/api/package.json b/apps/api/package.json deleted file mode 100644 index 0e174c03..00000000 --- a/apps/api/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@invisible-dots/api", - "version": "0.0.0", - "private": true, - "description": "Control-plane HTTP API and SSE stream, and startServer: the control plane composed as one process (invisible-dots server).", - "license": "MIT", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "typecheck": "tsc -p tsconfig.json" - }, - "dependencies": { - "@invisible-dots/shared": "0.0.0", - "fastify": "^5.12.5", - "@invisible-dots/channels": "0.0.0", - "@invisible-dots/database": "0.0.0", - "@invisible-dots/events": "0.0.0", - "@invisible-dots/image-builder": "0.0.0", - "@invisible-dots/scheduler": "0.0.0", - "@invisible-dots/sdk": "0.0.0", - "@invisible-dots/vm-manager": "0.0.0" - } -} diff --git a/apps/api/src/config.ts b/apps/api/src/config.ts deleted file mode 100644 index a615dde2..00000000 --- a/apps/api/src/config.ts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Process settings of the control plane: the listen address, the API token - * and the master key (architecture sections 3.2 and 9.6). Both secrets live - * in INVISIBLE_DOTS_HOME/config and are created at the first start, so a new - * host needs no installer step before `invisible-dots server`. - */ -import { randomBytes } from "node:crypto"; -import { MASTER_KEY_BYTES } from "@invisible-dots/database"; -import { DEFAULT_LISTEN, ENV, readApiToken, readSecretFile, writeSecretFile, type HostPaths } from "@invisible-dots/shared"; - -/** A generated token: 32 random bytes as hex, so it survives copy and paste and any shell quoting. */ -const GENERATED_TOKEN_BYTES = 32; - -export interface ListenAddress { - host: string; - port: number; -} - -/** What differs between the settings parseListen reads. */ -export interface ListenSetting { - /** The environment variable the value came from, named in the errors. */ - variable: string; - /** The address shown as the example in the error: the setting's own default. */ - example: string; - /** Whether port 0 (the system picks one) is refused, for a server whose address the person has to be told. */ - fixedPort: boolean; -} - -export const API_LISTEN: ListenSetting = { variable: ENV.LISTEN, example: DEFAULT_LISTEN, fixedPort: false }; - -/** Parse `host:port`, `[v6]:port` or a bare port (which binds 127.0.0.1). */ -export function parseListen(value: string = DEFAULT_LISTEN, setting: ListenSetting = API_LISTEN): ListenAddress { - const text = value.trim(); - let host = "127.0.0.1"; - let portText = text; - const v6 = /^\[([^\]]+)\]:(\d+)$/.exec(text); - if (v6) { - host = v6[1]!; - portText = v6[2]!; - } else if (text.includes(":")) { - const at = text.lastIndexOf(":"); - host = text.slice(0, at); - portText = text.slice(at + 1); - } - const port = Number(portText); - if (!host || !/^\d+$/.test(portText) || port < 0 || port > 65535) { - throw new Error(`${setting.variable} must look like "${setting.example}", got "${value}"`); - } - if (setting.fixedPort && port === 0) throw new Error(`${setting.variable} needs a fixed port, got "${value}"`); - return { host, port }; -} - -export interface LoadedSecret { - value: T; - /** Where it came from: a file path or an environment variable name. */ - origin: string; - /** True when this call generated it and wrote the file. */ - created: boolean; -} - -/** - * The API token as readApiToken reads it (INVISIBLE_DOTS_TOKEN, else the - * first line of `config/api.token`); the file is generated (0600) when it - * does not exist yet. - */ -export async function loadOrCreateApiToken( - paths: HostPaths, - env: Record = process.env, -): Promise> { - const existing = await readApiToken(env, paths); - if (existing) return { ...existing, created: false }; - const path = paths.apiTokenPath; - const token = randomBytes(GENERATED_TOKEN_BYTES).toString("hex"); - await writeSecretFile(path, `${token}\n`); - return { value: token, origin: path, created: true }; -} - -/** - * The master key that encrypts secrets in the database: `config/master.key`, - * 32 raw bytes (64 hex characters are accepted too, so a key restored by - * hand works). When the file does not exist a new key is generated but NOT - * written: `created` tells the caller to check first that the database - * holds nothing encrypted under a key that was lost, and only then to call - * `saveMasterKey`. Writing it earlier would turn a missing key into a wrong - * one that the next start accepts without a word. - */ -export async function loadOrGenerateMasterKey(paths: HostPaths): Promise> { - const path = paths.masterKeyPath; - const raw = await readSecretFile(path); - if (raw === undefined) return { value: randomBytes(MASTER_KEY_BYTES), origin: path, created: true }; - if (raw.length === MASTER_KEY_BYTES) return { value: raw, origin: path, created: false }; - const hex = raw.toString("utf8").trim(); - if (new RegExp(`^[0-9a-fA-F]{${MASTER_KEY_BYTES * 2}}$`).test(hex)) return { value: Buffer.from(hex, "hex"), origin: path, created: false }; - throw new Error(`${path} must hold ${MASTER_KEY_BYTES} bytes (or ${MASTER_KEY_BYTES * 2} hexadecimal characters), found ${raw.length} bytes`); -} - -/** Write a key from `loadOrGenerateMasterKey` (0600, atomically). */ -export async function saveMasterKey(paths: HostPaths, key: Uint8Array): Promise { - await writeSecretFile(paths.masterKeyPath, key); -} diff --git a/apps/api/src/database.ts b/apps/api/src/database.ts deleted file mode 100644 index a4a6e245..00000000 --- a/apps/api/src/database.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Opening the control plane's database at start: the adapter the - * environment names (PGlite in INVISIBLE_DOTS_HOME/db, or DATABASE_URL), - * migrated, and checked against a master key that was lost. - */ -import { Database, databaseTarget, describeDatabaseTarget } from "@invisible-dots/database"; -import { errorMessage, type Logger } from "@invisible-dots/shared"; - -export interface OpenDatabaseOptions { - env: Record; - masterKey: Uint8Array; - logger: Logger; -} - -/** Open and migrate; a failure names the database and is never left half open. */ -export async function openControlPlaneDatabase(options: OpenDatabaseOptions): Promise { - const target = databaseTarget(options.env); - const where = describeDatabaseTarget(target); - // Both adapters already name the database they could not open (pg without - // its password), so the error is passed on as it is. - const db = await Database.open({ target, masterKey: options.masterKey }); - try { - // Before anything reads or writes: a second server on the same database - // (another INVISIBLE_DOTS_HOME with the same DATABASE_URL) would take - // over the first one's Dots. - if (!(await db.holdInstanceLock())) { - throw new Error(`another invisible-dots server already uses the ${where}; stop it first (one server per database)`); - } - } catch (error) { - await db.close().catch(() => {}); - throw error; - } - try { - const migrated = await db.migrate({ log: (line) => options.logger.info(line) }); - options.logger.info("database ready", { - database: where, - applied: migrated.applied.length, - total: migrated.applied.length + migrated.alreadyApplied.length, - }); - } catch (error) { - await db.close().catch(() => {}); - throw new Error(`cannot migrate the ${where}: ${errorMessage(error)}`, { cause: error }); - } - return db; -} - -/** - * Refuse a newly generated master key for a database that already holds - * values encrypted under another one: the key file was lost or deleted, - * and going on would leave every Dot token and secret unreadable. - */ -export async function assertNothingEncrypted(db: Database, masterKeyPath: string): Promise { - if (await db.holdsEncryptedValues()) { - throw new Error( - `${masterKeyPath} does not exist, but the database holds Dot tokens or secrets encrypted under a master key: ` + - `restore the original master.key (a new one cannot read them), then start again`, - ); - } -} diff --git a/apps/api/src/doctor.ts b/apps/api/src/doctor.ts deleted file mode 100644 index 16babee5..00000000 --- a/apps/api/src/doctor.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * The doctor rows only the control plane's side can read: the images a Dot - * would get now. The rest of the report is the vm-manager's `runDoctor` - * (architecture section 11.1); `startServer` serves it as `GET /api/doctor` - * and `invisible-dots doctor` runs it from the command line, both over this - * one function. - */ -import { stat } from "node:fs/promises"; -import { basename } from "node:path"; -import { manifestPathFor, verifyImage, type ImageCheck } from "@invisible-dots/image-builder"; -import type { DoctorCheck, HostPaths } from "@invisible-dots/shared"; -import { latestImage } from "./vm-driver.js"; - -/** The size and modification time of a file, or "absent": what a verdict on it depends on. */ -async function fingerprint(path: string): Promise { - const info = await stat(path).catch(() => undefined); - return info ? `${info.size}:${info.mtimeMs}` : "absent"; -} - -/** - * The doctor's image rows for one host. `verifyImage` re-hashes a whole - * multi-GB image, and the onboarding checklist asks again and again, so a - * verdict is kept for as long as the image and its manifest keep the same - * size and modification time: the hash reruns only when a file changes. The - * command line runs it once per command and loses nothing. - */ -export function createImageChecks(paths: HostPaths, verify: (image: string) => Promise = verifyImage): () => Promise { - const verdicts = new Map(); - - async function verified(image: string): Promise { - const current = `${await fingerprint(image)}|${await fingerprint(manifestPathFor(image))}`; - const known = verdicts.get(image); - if (known?.fingerprint === current) return known.check; - const check = await verify(image); - verdicts.set(image, { fingerprint: current, check }); - return check; - } - - /** The image a Dot would get now (the newest one, as the control plane picks it), checked against its manifest. */ - async function imageCheck(id: "golden-image" | "runtime-image"): Promise { - const golden = id === "golden-image"; - const label = golden ? "golden image" : "runtime ISO"; - let image: string; - try { - image = await latestImage(paths.imagesDir, golden ? "golden" : "runtime"); - } catch { - return { id, label, status: "missing", detail: `none in ${paths.imagesDir}`, fix: "invisible-dots image build" }; - } - const verdict = await verified(image); - if (verdict.ok) return { id, label, status: "ok", detail: `${basename(image)} matches its manifest` }; - return { id, label, status: "failed", detail: verdict.reason, fix: verdict.fix }; - } - - return async () => [await imageCheck("golden-image"), await imageCheck("runtime-image")]; -} diff --git a/apps/api/src/file-types.ts b/apps/api/src/file-types.ts deleted file mode 100644 index 142ece9b..00000000 --- a/apps/api/src/file-types.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * How a file of a Dot's computer is served by `GET /api/dots/:id/files`. The bytes are the Dot's own, written - * by a model that may have read hostile text, and the web server answers from the same origin as the page, so a - * file is never given a type a browser would run: images are images, text (source and markup included) is - * `text/plain`, and everything else is a download. - */ -import { fileType } from "@invisible-dots/shared"; - -export interface FileServing { - contentType: string; - /** The `Content-Disposition` header: `inline` for what a page may show, `attachment` for the rest. */ - disposition: string; -} - -/** The type and disposition for the file at `path` (a guest path). */ -export function serveFile(path: string): FileServing { - const name = path.slice(path.lastIndexOf("/") + 1); - const { kind, contentType } = fileType(name); - // The plain filename is for old clients (printable ASCII, no quote, backslash or percent); filename* carries the real one. - const plain = name.replace(/[^\x20-\x7e]|["\\%]/g, "_"); - return { contentType, disposition: `${kind === "other" ? "attachment" : "inline"}; filename="${plain}"; filename*=UTF-8''${encodeURIComponent(name)}` }; -} diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts deleted file mode 100644 index 85924b8f..00000000 --- a/apps/api/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from "./config.js"; -export * from "./database.js"; -export * from "./doctor.js"; -export * from "./lock.js"; -export * from "./server.js"; -export * from "./start.js"; -export * from "./vm-driver.js"; diff --git a/apps/api/src/lock.ts b/apps/api/src/lock.ts deleted file mode 100644 index 0cdf4e5c..00000000 --- a/apps/api/src/lock.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * One control plane per INVISIBLE_DOTS_HOME. Two servers on the same home - * would both open the embedded PGlite data directory, which has no locking - * of its own and is corrupted by a second writer, and both would start and - * stop the same QEMU processes. A lock file holding the owner's pid stops - * the second one before it touches anything; the lock itself is the shared - * pid lock of packages/shared, which also serves the image builds. - */ -import { acquirePidLock, ensurePrivateDir, type HostPaths, type PidLock, type ProcessPresence } from "@invisible-dots/shared"; - -export type ServerLock = PidLock; - -/** Take the server lock of `paths.home`, or fail naming the pid that holds it and the file to remove. */ -export async function acquireServerLock(paths: HostPaths, presence?: (pid: number) => ProcessPresence): Promise { - // The whole data directory is this user's alone, on Windows too (files.ts). - await ensurePrivateDir(paths.home); - return acquirePidLock(paths.serverLockPath, { - what: "invisible-dots server", - stopHint: `stop it first (it serves ${paths.home})`, - ...(presence ? { presence } : {}), - }); -} diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts deleted file mode 100644 index 4bb00fcd..00000000 --- a/apps/api/src/server.ts +++ /dev/null @@ -1,516 +0,0 @@ -/** - * The control-plane HTTP API of architecture section 9.6. Every route needs - * the bearer token; every error is `{ error, message }`. The handlers are - * thin: the work happens in the Scheduler. - */ -import { createHash, timingSafeEqual } from "node:crypto"; -import { TELEGRAM_TOKEN_SECRET, type ChannelHub } from "@invisible-dots/channels"; -import { StreamOverflowError } from "@invisible-dots/events"; -import { type Scheduler } from "@invisible-dots/scheduler"; -import { STREAM_ERROR_EVENT } from "@invisible-dots/sdk"; -import type { - ApprovalsAnswer, - ChannelPairingAnswer, - ChannelRecord, - ChannelsAnswer, - EveryChannelAnswer, - DoctorAnswer, - DotsAnswer, - EventsAnswer, - FilesListAnswer, - HealthResponse, - HostFacts, - IdentitiesAnswer, - MessagesAnswer, - TasksAnswer, - UsageAnswer, -} from "@invisible-dots/sdk/types"; -import { APPROVAL_LIST_LIMIT, APPROVAL_STATUSES, type ApprovalStatus, CHANNEL_KINDS, type ChannelKind, ControlPlaneError, CONVERSATION_LIST_LIMIT, type DoctorCheck, errorMessage, LIST_ORDERS, type ListOrder, type Logger, MAX_EVENT_PAGE, type McpSecretsAnswer, silentLogger, type SkillListAnswer, TASK_LIST_LIMIT, type ToolListAnswer } from "@invisible-dots/shared"; -import { doctorAnswer } from "@invisible-dots/vm-manager"; -import { serveFile } from "./file-types.js"; -import Fastify, { type FastifyInstance, type FastifyReply, type FastifyRequest } from "fastify"; -import apiPackage from "../package.json" with { type: "json" }; - -/** The version `GET /api/health` reports: this package's, as the CLI's `--version` reports its own. */ -export const API_VERSION: string = apiPackage.version; - -/** A comment line on idle SSE connections, so proxies and clients see the connection is alive. */ -export const SSE_HEARTBEAT_MS = 15_000; - -export interface ServerOptions { - scheduler: Scheduler; - channels: ChannelHub; - /** Runs the host checks of architecture section 11.1 on the machine this server runs on; `startServer` binds the real ones. */ - doctor(): Promise; - /** What `GET /api/health` says about where the state lives; `startServer` reads it from the paths and the database it opened. */ - host: HostFacts; - token: string; - logger?: Logger; - heartbeatMs?: number; -} - -type Params = { id: string; identityId: string; kind: string; peer: string }; -type Body = Record | undefined; - -function digest(value: string): Buffer { - return createHash("sha256").update(value, "utf8").digest(); -} - -function bad(message: string): ControlPlaneError { - return new ControlPlaneError(400, "invalid_request", message); -} - -/** A non-negative integer query parameter, or undefined when absent. */ -function intParam(value: unknown, name: string, max = Number.MAX_SAFE_INTEGER): number | undefined { - if (value === undefined || value === "") return undefined; - if (typeof value !== "string" || !/^\d+$/.test(value) || Number(value) > max) { - throw bad(`${name} must be a non-negative integer${max < Number.MAX_SAFE_INTEGER ? ` up to ${max}` : ""}`); - } - return Number(value); -} - -/** The `order` of a list route, which only an `order=desc` list can be paged on (`before`) from. */ -function orderParam(order: unknown, before: unknown): ListOrder | undefined { - if (order !== undefined && !(LIST_ORDERS as readonly unknown[]).includes(order)) throw bad(`order must be one of ${LIST_ORDERS.join(", ")}`); - if (before !== undefined && order !== "desc") throw bad("before pages a list in order=desc"); - return order as ListOrder | undefined; -} - -/** An ISO 8601 date-time query parameter, or undefined when absent. */ -function sinceParam(value: unknown): Date | undefined { - if (value === undefined || value === "") return undefined; - const parsed = typeof value === "string" && /^\d{4}-\d{2}-\d{2}T/.test(value) ? new Date(value) : undefined; - if (parsed === undefined || Number.isNaN(parsed.getTime())) { - throw bad("since must be an ISO 8601 timestamp such as 2026-10-05T00:00:00Z"); - } - return parsed; -} - -function channelKind(value: string): ChannelKind { - if (!(CHANNEL_KINDS as readonly string[]).includes(value)) throw bad(`no "${value}" channel: the channels are ${CHANNEL_KINDS.join(", ")}`); - return value as ChannelKind; -} - -function bodyOf(request: FastifyRequest): Record { - const body = request.body as Body; - if (body === undefined || body === null) return {}; - if (typeof body !== "object" || Array.isArray(body)) throw bad("the body must be a JSON object"); - return body; -} - -export function buildServer(options: ServerOptions): FastifyInstance { - const { scheduler, channels } = options; - const log = options.logger ?? silentLogger; - const expected = digest(options.token); - const heartbeatMs = options.heartbeatMs ?? SSE_HEARTBEAT_MS; - const streams = new Set(); - - const app = Fastify({ logger: false, bodyLimit: 1024 * 1024, return503OnClosing: true }); - - app.addHook("onRequest", async (request, reply) => { - const header = request.headers.authorization ?? ""; - const match = /^Bearer\s+(.+)$/i.exec(header); - // Comparing digests keeps the comparison constant-time whatever the length of the guess. - if (!match || !timingSafeEqual(digest(match[1]!.trim()), expected)) { - return reply - .code(401) - .header("www-authenticate", 'Bearer realm="invisible-dots"') - .send({ error: "unauthorized", message: "a valid Authorization: Bearer header is required" }); - } - }); - - app.setNotFoundHandler((request, reply) => { - void reply.code(404).send({ error: "not_found", message: `no route ${request.method} ${request.url.split("?")[0]}` }); - }); - - app.setErrorHandler((error: unknown, request, reply) => { - if (error instanceof ControlPlaneError) { - const body: Record = { error: error.code, message: error.message }; - if (error.details !== undefined) body.details = error.details; - // A busy browser is the answer a polling page expects, not a failure. - if (error.status >= 500 && error.code !== "busy") log.error("request failed", { method: request.method, url: request.url, error: error.message }); - return reply.code(error.status).send(body); - } - const e = error as { statusCode?: number; code?: string; message?: string }; - if (typeof e.statusCode === "number" && e.statusCode >= 400 && e.statusCode < 500) { - const code = e.code === "FST_ERR_CTP_INVALID_MEDIA_TYPE" ? "unsupported_media_type" : "invalid_request"; - return reply.code(e.statusCode).send({ error: code, message: e.message ?? "invalid request" }); - } - log.error("unhandled error", { method: request.method, url: request.url, error: errorMessage(error) }); - return reply.code(500).send({ error: "internal", message: errorMessage(error) }); - }); - - /** - * Answer with a server-sent event stream, the one way every stream of this API starts: headers, a heartbeat comment - * so proxies and clients see the connection is alive, and an abort when the client goes or the server closes. `body` - * writes the frames and returns when there are no more. - */ - const eventStream = async (reply: FastifyReply, controller: AbortController, body: (raw: FastifyReply["raw"]) => Promise): Promise => { - reply.hijack(); - const raw = reply.raw; - raw.writeHead(200, { - "content-type": "text/event-stream; charset=utf-8", - "cache-control": "no-store", - connection: "keep-alive", - "x-accel-buffering": "no", - }); - raw.write(": connected\n\n"); - streams.add(controller); - const heartbeat = setInterval(() => raw.write(": ping\n\n"), heartbeatMs); - heartbeat.unref(); - raw.on("close", () => controller.abort()); - try { - await body(raw); - } finally { - clearInterval(heartbeat); - streams.delete(controller); - raw.end(); - } - }; - - // Before the server stops listening and waits for its connections: a stream only ends when it is told to, so a hook that - // ran after that wait (`onClose`) would wait for the person to close the tab. - app.addHook("preClose", async () => { - for (const controller of streams) controller.abort(); - }); - - app.get("/api/health", async (): Promise => { - const { database, openrouter_configured } = await scheduler.health(); - return { status: "ok", database, version: API_VERSION, openrouter_configured, ...options.host }; - }); - - // The host report `invisible-dots doctor` prints: what is missing for a Dot to run, and the command that fixes it. It runs QEMU's accelerator probe, so it takes a moment: - // one run at a time, and a request that arrives while it runs shares its answer (the onboarding checklist re-checks and polls). - let doctorRun: Promise | undefined; - app.get("/api/doctor", (): Promise => { - doctorRun ??= options.doctor().then(doctorAnswer).finally(() => { - doctorRun = undefined; - }); - return doctorRun; - }); - - // Dots - - app.post("/api/dots", async (request, reply) => { - const dot = await scheduler.createDot(bodyOf(request).config); - return reply.code(201).send(dot); - }); - - app.get("/api/dots", async (): Promise => ({ dots: await scheduler.listDots() })); - - app.get<{ Params: Params }>("/api/dots/:id", async (request) => scheduler.requireDot(request.params.id)); - - app.patch<{ Params: Params }>("/api/dots/:id", async (request) => { - const { config, expected_config_version } = bodyOf(request); - return scheduler.updateDot(request.params.id, config, expected_config_version); - }); - - app.delete<{ Params: Params }>("/api/dots/:id", async (request, reply) => { - return reply.code(202).send(await scheduler.deleteDot(request.params.id)); - }); - - // Messages and tasks - - app.post<{ Params: Params }>("/api/dots/:id/messages", async (request, reply) => { - return reply.code(202).send(await scheduler.sendMessage(request.params.id, bodyOf(request).text)); - }); - - // The conversation pages like the event log: oldest first by default, `order=desc` the newest, `before` (the - // event id of the oldest message of the previous page) the ones older than that. - app.get<{ Params: Params; Querystring: { limit?: string; order?: unknown; before?: string } }>( - "/api/dots/:id/messages", - async (request): Promise => { - const limit = intParam(request.query.limit, "limit", CONVERSATION_LIST_LIMIT); - if (limit === 0) throw bad(`limit must be between 1 and ${CONVERSATION_LIST_LIMIT}`); - const before = intParam(request.query.before, "before"); - const order = orderParam(request.query.order, before); - return { messages: await scheduler.conversation(request.params.id, { limit, order, before }) }; - }, - ); - - app.post<{ Params: Params }>("/api/dots/:id/tasks", async (request, reply) => { - const body = bodyOf(request); - const task = await scheduler.createTask(request.params.id, { - description: body.description as string, - priority: body.priority as number | undefined, - scheduled_at: body.scheduled_at as string | undefined, - }); - return reply.code(201).send(task); - }); - - // The newest tasks first; `before` (the id of the last task of the previous page) goes on, older. - app.get<{ Params: Params; Querystring: { limit?: unknown; before?: unknown } }>("/api/dots/:id/tasks", async (request): Promise => { - const limit = intParam(request.query.limit, "limit", TASK_LIST_LIMIT); - if (limit === 0) throw bad(`limit must be between 1 and ${TASK_LIST_LIMIT}`); - const { before } = request.query; - if (before !== undefined && (typeof before !== "string" || before === "")) throw bad("before must be the id of a task"); - return { tasks: await scheduler.listTasks(request.params.id, { limit, before }) }; - }); - - // The tasks of every Dot that ended in a state after a time, the latest end first (the web's failed tasks of the day). - app.get<{ Querystring: { status?: unknown; finished_after?: unknown } }>("/api/tasks", async (request): Promise => ({ - tasks: await scheduler.listEndedTasks(request.query.status, request.query.finished_after), - })); - - app.get<{ Params: Params }>("/api/tasks/:id", async (request) => scheduler.getTask(request.params.id)); - - app.post<{ Params: Params }>("/api/tasks/:id/cancel", async (request) => scheduler.cancelTask(request.params.id)); - - // Computer - - app.get<{ Params: Params }>("/api/dots/:id/computer", async (request) => scheduler.computer(request.params.id)); - - const lifecycleRoute = (action: "start" | "stop" | "reboot") => - app.post<{ Params: Params }>(`/api/dots/:id/computer/${action}`, async (request, reply) => { - const id = request.params.id; - const answer = - action === "start" - ? await scheduler.startComputer(id) - : action === "stop" - ? await scheduler.stopComputer(id) - : await scheduler.rebootComputer(id); - return reply.code(202).send(answer); - }); - lifecycleRoute("start"); - lifecycleRoute("stop"); - lifecycleRoute("reboot"); - - app.get<{ Params: Params }>("/api/dots/:id/computer/screenshot", async (request, reply) => { - const png = await scheduler.screenshot(request.params.id); - return reply.code(200).header("content-type", "image/png").header("cache-control", "no-store").send(Buffer.from(png)); - }); - - // Browser identities - - app.get<{ Params: Params }>( - "/api/dots/:id/browser-identities", - async (request): Promise => ({ identities: await scheduler.listIdentities(request.params.id) }), - ); - - app.post<{ Params: Params }>("/api/dots/:id/browser-identities", async (request, reply) => { - const body = bodyOf(request); - const identity = await scheduler.createIdentity(request.params.id, { - name: body.name as string, - proxy: body.proxy as string | undefined, - }); - return reply.code(201).send(identity); - }); - - app.get<{ Params: Params }>("/api/dots/:id/browser-identities/:identityId", async (request) => - scheduler.getIdentity(request.params.id, request.params.identityId), - ); - - app.delete<{ Params: Params }>("/api/dots/:id/browser-identities/:identityId", async (request, reply) => { - await scheduler.deleteIdentity(request.params.id, request.params.identityId); - return reply.code(204).send(); - }); - - app.get<{ Params: Params }>("/api/dots/:id/browser-identities/:identityId/frame", async (request, reply) => { - const jpeg = await scheduler.identityFrame(request.params.id, request.params.identityId); - return reply.code(200).header("content-type", "image/jpeg").header("cache-control", "no-store").send(Buffer.from(jpeg)); - }); - - app.post<{ Params: Params }>("/api/dots/:id/browser-identities/:identityId/close", async (request, reply) => { - await scheduler.closeIdentity(request.params.id, request.params.identityId); - return reply.code(204).send(); - }); - - // The tools (its table) and the skills are the engine's, so they need the computer running - - app.get<{ Params: Params }>( - "/api/dots/:id/tools", - async (request): Promise => scheduler.listTools(request.params.id), - ); - - app.get<{ Params: Params }>( - "/api/dots/:id/skills", - async (request): Promise => ({ skills: await scheduler.listSkills(request.params.id) }), - ); - - // Channels (the hub never returns a credential, and no route here echoes one) - - app.get<{ Params: Params }>( - "/api/dots/:id/channels", - async (request): Promise => ({ channels: await channels.list(request.params.id), available: channels.kinds }), - ); - - // Every channel of every Dot, each with its Dot's id (the web's shell watches the ones that need the person). - app.get("/api/channels", async (): Promise => ({ channels: await channels.listEvery() })); - - // Link the Dot to a Telegram bot, or give the linked one a new token (a revoked token is the only way back from needs_relink). - app.put<{ Params: Params }>("/api/dots/:id/channels/telegram", async (request, reply): Promise => { - const token = bodyOf(request).token; - if (typeof token !== "string" || token.trim() === "") throw bad("token must be the bot token from @BotFather"); - const credentials = { [TELEGRAM_TOKEN_SECRET]: token.trim() }; - const linked = (await channels.list(request.params.id)).some((channel) => channel.kind === "telegram"); - if (linked) return channels.setCredentials(request.params.id, "telegram", credentials); - return reply.code(201).send(await channels.add(request.params.id, "telegram", { credentials })); - }); - - // Link WhatsApp: the channel starts and shows a code; the person scans it (the stream below) with the phone that holds the number. - app.post<{ Params: Params }>("/api/dots/:id/channels/whatsapp/link", async (request, reply): Promise => { - return reply.code(202).send(await channels.link(request.params.id, "whatsapp")); - }); - - // The codes to scan and how the link ends, as server-sent events of `ChannelLinkFrame`. The code is a way into the account for as long as it is shown: it is not stored and the reply is never cached. - app.get<{ Params: Params }>("/api/dots/:id/channels/whatsapp/qr", async (request, reply) => { - const controller = new AbortController(); - const frames = await channels.watchLink(request.params.id, "whatsapp", controller.signal); - await eventStream(reply, controller, async (raw) => { - for await (const frame of frames) raw.write(`data: ${JSON.stringify(frame)}\n\n`); - }); - }); - - app.patch<{ Params: Params }>("/api/dots/:id/channels/:kind", async (request): Promise => { - const kind = channelKind(request.params.kind); - const { settings, enabled } = bodyOf(request); - if (settings === undefined && enabled === undefined) throw bad("give settings, enabled, or both"); - if (enabled !== undefined && typeof enabled !== "boolean") throw bad("enabled must be true or false"); - let record: ChannelRecord | undefined; - if (settings !== undefined) record = await channels.setSettings(request.params.id, kind, settings); - if (enabled !== undefined) record = await channels.setEnabled(request.params.id, kind, enabled); - return record!; - }); - - app.delete<{ Params: Params }>("/api/dots/:id/channels/:kind", async (request, reply) => { - await channels.remove(request.params.id, channelKind(request.params.kind)); - return reply.code(204).send(); - }); - - app.post<{ Params: Params }>("/api/dots/:id/channels/:kind/pairing", async (request, reply): Promise => { - return reply.code(201).send(await channels.pair(request.params.id, channelKind(request.params.kind))); - }); - - app.delete<{ Params: Params }>("/api/dots/:id/channels/:kind/peers/:peer", async (request, reply) => { - await channels.removePeer(request.params.id, channelKind(request.params.kind), request.params.peer); - return reply.code(204).send(); - }); - - // Approvals - - app.get<{ Querystring: { status?: unknown; limit?: unknown; order?: unknown; before?: unknown; dot_id?: unknown } }>("/api/approvals", async (request): Promise => { - const { status, order, before, dot_id: dotId } = request.query; - if (dotId !== undefined && (typeof dotId !== "string" || dotId === "")) throw bad("dot_id must be the id or the name of one Dot"); - if (status !== undefined && typeof status !== "string") throw bad("status must be one list, comma-separated"); - const statuses = status?.split(",").map((one) => one.trim()); - if (statuses?.some((one) => !(APPROVAL_STATUSES as readonly string[]).includes(one))) { - throw bad(`status must be one or more of ${APPROVAL_STATUSES.join(", ")}`); - } - const limit = intParam(request.query.limit, "limit", APPROVAL_LIST_LIMIT); - if (limit === 0) throw bad(`limit must be between 1 and ${APPROVAL_LIST_LIMIT}`); - if (before !== undefined && (typeof before !== "string" || before === "")) throw bad("before must be the id of an approval"); - return { - approvals: await scheduler.listApprovals(statuses as ApprovalStatus[] | undefined, { limit, order: orderParam(order, before), before, dot: dotId }), - }; - }); - - for (const decision of ["approve", "reject"] as const) { - app.post<{ Params: Params }>(`/api/approvals/:id/${decision}`, async (request) => { - const { note, always } = bodyOf(request); - return scheduler.resolveApproval(request.params.id, decision, { note, always }); - }); - } - - // Events and usage - - app.get<{ Params: Params; Querystring: { since?: string } }>( - "/api/dots/:id/usage", - async (request): Promise => scheduler.usage(request.params.id, sinceParam(request.query.since)), - ); - - app.get<{ Params: Params; Querystring: { after?: string; before?: string; limit?: string; types?: unknown; tools?: unknown; task_id?: unknown; order?: unknown } }>( - "/api/dots/:id/events", - async (request): Promise => { - const after = intParam(request.query.after, "after"); - const before = intParam(request.query.before, "before"); - const limit = intParam(request.query.limit, "limit", MAX_EVENT_PAGE); - const { types, tools, task_id: taskId, order } = request.query; - if (types !== undefined && typeof types !== "string") throw bad("types must be one comma-separated list"); - if (tools !== undefined && typeof tools !== "string") throw bad("tools must be one comma-separated list"); - if (taskId !== undefined && typeof taskId !== "string") throw bad("task_id must be a single value"); - const listOrder = orderParam(order, request.query.before); - const list = (value: string | undefined) => value?.split(",").map((one) => one.trim()).filter(Boolean); - return { - events: await scheduler.listEvents(request.params.id, { - after, - before, - limit, - types: list(types), - tools: list(tools), - taskId, - order: listOrder, - }), - }; - }, - ); - - // Files of the Dot's computer, under /home/dot, read-only; they need the computer running (409 computer_stopped). - - app.get<{ Params: Params; Querystring: { path?: unknown } }>( - "/api/dots/:id/files/list", - async (request): Promise => scheduler.listFiles(request.params.id, request.query.path as string | undefined), - ); - - app.get<{ Params: Params; Querystring: { path?: unknown } }>("/api/dots/:id/files", async (request, reply) => { - const { path, content } = await scheduler.readFile(request.params.id, request.query.path); - const { contentType, disposition } = serveFile(path); - return reply - .code(200) - .header("content-type", contentType) - .header("content-disposition", disposition) - .header("x-content-type-options", "nosniff") - .header("content-security-policy", "default-src 'none'; sandbox") - .header("cache-control", "no-store") - .send(Buffer.from(content)); - }); - - app.get<{ Querystring: { dot_id?: string; after?: string } }>("/api/stream", async (request, reply) => { - const dotId = request.query.dot_id ? await scheduler.historyDotId(request.query.dot_id) : undefined; - // EventSource sends the last id it saw when it reconnects; it wins over the query. - const lastEventId = request.headers["last-event-id"]; - const after = intParam(typeof lastEventId === "string" ? lastEventId : request.query.after, "after"); - - const controller = new AbortController(); - await eventStream(reply, controller, async (raw) => { - try { - for await (const event of scheduler.events.stream(dotId === undefined ? {} : { dotId }, { after, signal: controller.signal })) { - raw.write(`id: ${event.id}\ndata: ${JSON.stringify(event)}\n\n`); - } - } catch (error) { - // The client reconnects with its last id; tell it why the server hung up. - const code = error instanceof StreamOverflowError ? "stream_overflow" : "stream_error"; - raw.write(`event: ${STREAM_ERROR_EVENT}\ndata: ${JSON.stringify({ error: code, message: errorMessage(error) })}\n\n`); - log.warn("event stream closed with an error", { error: errorMessage(error) }); - } - }); - }); - - // Secrets - - app.put("/api/secrets/openrouter", async (request) => { - const body = bodyOf(request); - return scheduler.setOpenRouterKey(body.value, body.dot_id); - }); - - // A Dot's VM proxy: write-only, the answers say only whether there is one. - app.get<{ Params: { id: string } }>("/api/dots/:id/proxy", async (request) => scheduler.vmProxy(request.params.id)); - app.put<{ Params: { id: string } }>("/api/dots/:id/proxy", async (request) => scheduler.setVmProxy(request.params.id, bodyOf(request).value)); - app.delete<{ Params: { id: string } }>("/api/dots/:id/proxy", async (request) => scheduler.setVmProxy(request.params.id, null)); - - // The secrets of a Dot's MCP servers: write-only, the answers say only which are set. - type McpSecretParams = { id: string; server: string; name: string }; - app.get<{ Params: Params }>("/api/dots/:id/mcp-secrets", async (request): Promise => scheduler.mcpSecrets(request.params.id)); - app.put<{ Params: McpSecretParams }>( - "/api/dots/:id/mcp-secrets/:server/:name", - async (request): Promise => // A PUT sets: a null value is no value (a clear is the DELETE). - scheduler.setMcpSecret(request.params.id, request.params.server, request.params.name, bodyOf(request).value ?? undefined), - ); - app.delete<{ Params: McpSecretParams }>( - "/api/dots/:id/mcp-secrets/:server/:name", - async (request): Promise => scheduler.setMcpSecret(request.params.id, request.params.server, request.params.name, null), - ); - - return app; -} - -export type { FastifyInstance, FastifyReply }; diff --git a/apps/api/src/start.ts b/apps/api/src/start.ts deleted file mode 100644 index cdef0a43..00000000 --- a/apps/api/src/start.ts +++ /dev/null @@ -1,217 +0,0 @@ -/** - * The control plane as one process (architecture section 2): the database, - * the vm-manager, the scheduler and the HTTP API, composed in the order a - * first start needs. `invisible-dots server` calls `startServer` and waits - * with `untilStopSignal`; tests call `startServer` and close the handle - * themselves. - */ -import { fileURLToPath } from "node:url"; -import { - ChannelHub, - TelegramChannelType, - WhatsAppChannelType, - whatsappClientDir, - whatsappClientProblem, - type ChannelType, -} from "@invisible-dots/channels"; -import type { Database } from "@invisible-dots/database"; -import type { HostFacts } from "@invisible-dots/sdk/types"; -import { Scheduler, type ComputerDriver, type SchedulerOptions } from "@invisible-dots/scheduler"; -import { ensureDir, ENV, errorMessage, hostPaths, type HostPaths, type Logger, prefixedStderrLogger } from "@invisible-dots/shared"; -import { hostDoctorDeps, openRouterCheck, runDoctor, type DoctorDeps } from "@invisible-dots/vm-manager"; -import { loadOrCreateApiToken, loadOrGenerateMasterKey, parseListen, saveMasterKey, type ListenAddress } from "./config.js"; -import { assertNothingEncrypted, openControlPlaneDatabase } from "./database.js"; -import { createImageChecks } from "./doctor.js"; -import { acquireServerLock } from "./lock.js"; -import { API_VERSION, buildServer, type FastifyInstance } from "./server.js"; -import { createVmDriver } from "./vm-driver.js"; - -export interface StartServerOptions { - /** Where every setting is read from; default `process.env`. */ - env?: Record; - /** Overrides INVISIBLE_DOTS_LISTEN; port 0 picks a free port (tests). */ - listen?: string; - logger?: Logger; - /** The VM layer; default the real one over QEMU. Tests pass a fake. */ - driver?: ComputerDriver; - /** Replaces single dependencies of the host report (QEMU discovery, the runner, the disk, the images); the OpenRouter row always asks the Scheduler. Tests pass fakes. */ - doctor?: Partial; - /** Passed through to the Scheduler (timers, lifecycle and dispatcher tuning). */ - scheduler?: Omit; - /** The kinds of messaging channel this server can run; default Telegram, and WhatsApp when INVISIBLE_DOTS_WHATSAPP=1. Tests pass fakes. */ - channelTypes?: readonly ChannelType[]; - /** Where the opt-in WhatsApp client is installed; default `optional/whatsapp` of the repository. Tests point it at a folder of their own. */ - whatsappClientDir?: string; -} - -/** The logger of the `invisible-dots` process: lines on stderr prefixed with its name, debug lines when INVISIBLE_DOTS_DEBUG=1. */ -export function serverLogger(env: Record = process.env): Logger { - return prefixedStderrLogger("invisible-dots", env.INVISIBLE_DOTS_DEBUG === "1"); -} - -export interface RunningServer { - /** The base URL clients use, e.g. http://127.0.0.1:8787. */ - url: string; - address: ListenAddress; - token: string; - paths: HostPaths; - /** "pglite" or "pg", as the database adapter reports it. */ - database: string; - /** Secrets this start created because they did not exist yet. */ - created: { apiToken: boolean; masterKey: boolean }; - app: FastifyInstance; - scheduler: Scheduler; - /** The messaging channels of the Dots: pairing, and the messages between a chat and its Dot. */ - channels: ChannelHub; - db: Database; - /** Stop the API, the channels, the scheduler and the database. VMs keep running. Idempotent. */ - close(): Promise; -} - -/** - * Where the opt-in WhatsApp client is installed, under the repository root. apps/api/src/start.ts and the command - * bundle apps/cli/dist/invisible-dots.mjs sit at the same depth, so the root is the same for both. - */ -const DEFAULT_CLIENT_DIR = whatsappClientDir(fileURLToPath(new URL("../../../", import.meta.url))); - -/** - * The channels a server runs when it is not told otherwise. WhatsApp is opt-in twice: its adapter is an unofficial - * client that WhatsApp can answer with a ban of the linked account, so a server that was not asked for it neither - * loads nor offers it; and its client library is not part of the default install (it is GPL-3.0 through libsignal), - * so it is installed by the person who turns WhatsApp on. - */ -export function defaultChannelTypes(env: Record, clientDir: string = DEFAULT_CLIENT_DIR): ChannelType[] { - return [new TelegramChannelType(), ...(env[ENV.WHATSAPP] === "1" ? [new WhatsAppChannelType({ baileys: { clientDir } })] : [])]; -} - -/** - * Start the control plane and resolve once the API listens. Every resource - * taken before a failure is released again, so a failed start leaves no - * lock, open database or listening socket behind. - */ -export async function startServer(options: StartServerOptions = {}): Promise { - const env = options.env ?? process.env; - const debug = env.INVISIBLE_DOTS_DEBUG === "1"; - const logger = options.logger ?? serverLogger(env); - const paths = hostPaths(env); - const listen = parseListen(options.listen ?? (env[ENV.LISTEN] || undefined)); - - const cleanup: (() => Promise)[] = []; - const unwind = async () => { - for (const step of cleanup.splice(0).reverse()) { - await step().catch((error) => logger.error("cleanup step failed", { error: errorMessage(error) })); - } - }; - - try { - const lock = await acquireServerLock(paths); - cleanup.push(() => lock.release()); - await ensureDir(paths.logsDir, 0o700); - - const [token, masterKey] = await Promise.all([loadOrCreateApiToken(paths, env), loadOrGenerateMasterKey(paths)]); - if (token.created) logger.info("created the API token", { path: token.origin }); - - const db = await openControlPlaneDatabase({ env, masterKey: masterKey.value, logger }); - cleanup.push(() => db.close()); - if (masterKey.created) { - // Only an empty database may get a new key; see loadOrGenerateMasterKey. - await assertNothingEncrypted(db, masterKey.origin); - await saveMasterKey(paths, masterKey.value); - logger.info("created the master key", { path: masterKey.origin }); - } - - const driver = options.driver ?? createVmDriver({ env, paths, logger: prefixedStderrLogger("vm-manager", debug) }); - const scheduler = new Scheduler({ - ...options.scheduler, - db, - driver, - logger: options.logger ?? prefixedStderrLogger("scheduler", debug), - }); - cleanup.push(() => scheduler.close()); - const clientDir = options.whatsappClientDir ?? DEFAULT_CLIENT_DIR; - const clientProblem = !options.channelTypes && env[ENV.WHATSAPP] === "1" ? whatsappClientProblem(clientDir) : null; - if (clientProblem) logger.warn(`${ENV.WHATSAPP}=1 is set. ${clientProblem.message}`); - // Next to the Scheduler, using only what it offers; registered after it, so it stops first. - const channels = new ChannelHub({ - db, - host: scheduler, - types: options.channelTypes ?? defaultChannelTypes(env, clientDir), - logger: options.logger ?? prefixedStderrLogger("channels", debug), - }); - cleanup.push(() => channels.close()); - const doctorDeps: DoctorDeps = { - ...hostDoctorDeps({ - env, - home: paths.home, - images: createImageChecks(paths), - openRouterKey: async () => openRouterCheck((await scheduler.health()).openrouter_configured), - }), - ...options.doctor, - }; - const facts: HostFacts = { database_kind: db.kind, data_dir: paths.home, logs_dir: paths.logsDir }; - const app = buildServer({ scheduler, channels, doctor: () => runDoctor(doctorDeps), host: facts, token: token.value, logger }); - cleanup.push(() => app.close()); - - await scheduler.start(); - await channels.start(); - await app.listen({ host: listen.host, port: listen.port }); - const bound = app.server.address(); - const address: ListenAddress = typeof bound === "object" && bound ? { host: listen.host, port: bound.port } : listen; - const host = address.host.includes(":") ? `[${address.host}]` : address.host; - const url = `http://${host}:${address.port}`; - logger.info(`invisible-dots server ${API_VERSION} listening`, { url, home: paths.home, database: db.kind }); - - let closing: Promise | null = null; - return { - url, - address, - token: token.value, - paths, - database: db.kind, - created: { apiToken: token.created, masterKey: masterKey.created }, - app, - scheduler, - channels, - db, - close: () => (closing ??= unwind()), - }; - } catch (error) { - await unwind(); - throw error; - } -} - -/** - * Every way the person or the system asks a foreground server to stop: - * Ctrl+C, a service manager, a closed terminal (SIGHUP; Node raises it on - * Windows too when the console window is closed, a few seconds before - * Windows ends the process) and Ctrl+Break on Windows (SIGBREAK). All take - * the same clean path, which closes the embedded database and releases the - * lock. They are event names Node accepts on both hosts; one that a host - * never raises simply never fires. - */ -export const STOP_SIGNALS = ["SIGINT", "SIGTERM", "SIGHUP", "SIGBREAK"] as const; - -/** - * Resolve once `close` has finished after the first stop signal; a second - * signal exits at once. `signals` is the process, or a stand-in in tests. - */ -export function untilStopSignal(close: () => Promise, logger: Logger, signals: NodeJS.EventEmitter = process): Promise { - return new Promise((resolve) => { - let stopping = false; - const onSignal = (signal: NodeJS.Signals) => { - if (stopping) { - logger.warn(`second ${signal}, exiting without waiting`); - process.exit(1); - } - stopping = true; - logger.info(`${signal} received, shutting down (VMs keep running)`); - void close().finally(() => { - for (const name of STOP_SIGNALS) signals.off(name, onSignal); - logger.info("stopped"); - resolve(); - }); - }; - for (const name of STOP_SIGNALS) signals.on(name, onSignal); - }); -} diff --git a/apps/api/src/vm-driver.ts b/apps/api/src/vm-driver.ts deleted file mode 100644 index 22b08052..00000000 --- a/apps/api/src/vm-driver.ts +++ /dev/null @@ -1,137 +0,0 @@ -/** - * The real ComputerDriver: an adapter over vm-manager's VmManager (QEMU - * started directly, sections 3.4 and 3.5). It adds the one decision - * VmManager leaves to its caller, which images a computer uses: - * - * - a new computer gets the newest `golden-.qcow2`; its overlay - * stays on that golden image for its whole life (a backing file never - * changes under a disk); - * - every start uses the newest `runtime-.iso`, so a new version of - * our code reaches a Dot with a restart (section 3.3). - */ -import { readdir } from "node:fs/promises"; -import { join } from "node:path"; -import { type ComputerDriver, type ComputerSpecInput, type ComputerState, type CreatedComputer, type GuestApi, type GuestEndpoint, type StartedComputer, type WaitForHealthOptions } from "@invisible-dots/scheduler"; -import { type HealthAnswer, type HostPaths, type ImageKind, imageLabel, imageVersionOf, type Logger, pathExists } from "@invisible-dots/shared"; -import { VmManager, type StartVmResult, type VmSpec } from "@invisible-dots/vm-manager"; - -/** Compare versions such as "2026.10.1" and "2026.9.3" numerically, part by part. */ -export function compareVersions(a: string, b: string): number { - return a.localeCompare(b, "en", { numeric: true, sensitivity: "base" }); -} - -/** The image of that kind in `dir` with the highest version, as an absolute path. */ -export async function latestImage(dir: string, kind: ImageKind): Promise { - const label = imageLabel(kind); - let names: string[]; - try { - names = await readdir(dir); - } catch (error) { - throw new Error(`cannot list the images directory ${dir}: ${(error as Error).message}`, { cause: error }); - } - const candidates = names - .map((name) => ({ name, version: imageVersionOf(kind, name) })) - .filter((c): c is { name: string; version: string } => c.version !== undefined) - .sort((x, y) => compareVersions(x.version, y.version)); - const newest = candidates.at(-1); - if (!newest) throw new Error(`no ${label} in ${dir}: build one with "invisible-dots image build"`); - return join(dir, newest.name); -} - -export const latestGoldenImage = (imagesDir: string) => latestImage(imagesDir, "golden"); -export const latestRuntimeImage = (imagesDir: string) => latestImage(imagesDir, "runtime"); - -export class VmManagerDriver implements ComputerDriver { - readonly #vm: VmManager; - readonly #imagesDir: string; - - constructor(vm: VmManager, options: { imagesDir?: string } = {}) { - this.#vm = vm; - this.#imagesDir = options.imagesDir ?? vm.paths.imagesDir; - } - - latestGolden(): Promise { - return latestGoldenImage(this.#imagesDir); - } - - latestRuntime(): Promise { - return latestRuntimeImage(this.#imagesDir); - } - - #spec(input: ComputerSpecInput, goldenImage: string, runtimeImage: string): VmSpec { - return { - dotId: input.dotId, - token: input.token, - ...(input.proxy ? { proxy: input.proxy } : {}), - goldenImage, - runtimeImage, - cpus: input.resources.cpus, - memoryMiB: input.resources.memoryMiB, - diskBytes: input.resources.diskBytes, - }; - } - - #started(result: StartVmResult, runtimeImage: string): StartedComputer { - return { guestPort: result.guestPort, pid: result.pid, runtimeImage, alreadyRunning: result.alreadyRunning }; - } - - async create(input: ComputerSpecInput): Promise { - const [golden, runtime] = await Promise.all([this.latestGolden(), this.latestRuntime()]); - await this.#vm.create(this.#spec(input, golden, runtime)); - return { goldenImage: golden, runtimeImage: runtime }; - } - - async start(input: ComputerSpecInput & { goldenImage: string }): Promise { - const runtime = await this.latestRuntime(); - const spec = this.#spec(input, input.goldenImage, runtime); - // A bigger computer.disk from a PATCH: the overlay can only grow while the VM is off. - if ((await this.#vm.state(input.dotId)).state === "STOPPED") await this.#vm.resize(spec); - return this.#started(await this.#vm.start(spec), runtime); - } - - waitForHealth(endpoint: GuestEndpoint, token: string, options: WaitForHealthOptions): Promise { - return this.#vm.waitForGuestHealth(endpoint.dotId, endpoint.port, token, { - timeoutMs: options.timeoutMs, - intervalMs: options.intervalMs, - requestTimeoutMs: options.requestTimeoutMs, - }); - } - - async stop(dotId: string, token: string): Promise<{ forced: boolean }> { - const { forced } = await this.#vm.stop(dotId, token); - return { forced }; - } - - async reboot(input: ComputerSpecInput & { goldenImage: string }): Promise { - const runtime = await this.latestRuntime(); - return this.#started(await this.#vm.reboot(this.#spec(input, input.goldenImage, runtime)), runtime); - } - - destroy(dotId: string): Promise { - return this.#vm.destroy(dotId); - } - - async state(dotId: string): Promise { - const [info, exists] = await Promise.all([this.#vm.state(dotId), pathExists(this.#vm.paths.diskPath(dotId))]); - return { - exists, - state: info.state, - pid: info.pid, - guestPort: info.guestPort, - detail: info.detail ?? null, - }; - } - - guest(endpoint: GuestEndpoint, token: string): GuestApi { - return this.#vm.guestClient(endpoint.port, token); - } - - /** VmManager holds no connection between calls, so there is nothing to release. */ - async close(): Promise {} -} - - -/** The driver `invisible-dots server` uses: VmManager over this host's QEMU and INVISIBLE_DOTS_HOME. */ -export function createVmDriver(options: { env: Record; paths: HostPaths; logger: Logger }): VmManagerDriver { - return new VmManagerDriver(new VmManager({ env: options.env, paths: options.paths, logger: options.logger })); -} diff --git a/apps/api/test/api.test.ts b/apps/api/test/api.test.ts deleted file mode 100644 index 3aee7b84..00000000 --- a/apps/api/test/api.test.ts +++ /dev/null @@ -1,779 +0,0 @@ -import type { AddressInfo } from "node:net"; -import { ChannelHub } from "@invisible-dots/channels"; -import { FakeChannelType } from "@invisible-dots/channels/testing"; -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, testAdapters, type TestDatabase } from "@invisible-dots/database/testing"; -import { Scheduler } from "@invisible-dots/scheduler"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "@invisible-dots/scheduler/testing"; -import { ApiError, InvisibleDotsClient } from "@invisible-dots/sdk"; -import { MAX_EVENT_PAGE, OPENROUTER_KEY_RULE, type DoctorCheck, type StoredEvent } from "@invisible-dots/shared"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { API_VERSION, buildServer, type FastifyInstance } from "../src/index.js"; -import { hostFacts } from "./host-facts.js"; - -const TOKEN = "test-token-0123456789abcdef"; - -/** What the host report answers on this fake host: one row that is not ok, with the command that fixes it. */ -const REPORT: DoctorCheck[] = [ - { id: "node", label: "Node", status: "ok", detail: "24.19.0" }, - { id: "qemu", label: "QEMU", status: "missing", detail: "qemu-system-x86_64 not found", fix: "invisible-dots setup" }, -]; - -const yaml = (name: string, idle = "15m") => - `name: ${name}\nmodel:\n provider: openrouter\n id: test/model\ncomputer:\n idle_timeout: ${idle}\n`; - -describe.each(testAdapters())("control-plane API (%s)", (kind) => { - let t: TestDatabase; - let db: Database; - let app: FastifyInstance; - let scheduler: Scheduler; - let channels: ChannelHub; - let driver: FakeDriver; - let clock: ManualClock; - let base: string; - let api: InvisibleDotsClient; - - beforeAll(async () => { - t = await createTestDatabase(kind); - db = t.db; - // A Dot reaches READY only with a key to push (lifecycle #push): every test that readies one needs it, so it is - // stored here and not by whichever test happened to run first. - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - driver = new FakeDriver(); - clock = new ManualClock(); - scheduler = new Scheduler({ - db, - driver, - clock, - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10 }, - dispatcher: { retryDelayMs: 0 }, - }); - channels = new ChannelHub({ db, host: scheduler, types: [new FakeChannelType()] }); - app = buildServer({ scheduler, channels, doctor: async () => REPORT, host: hostFacts(kind), token: TOKEN, heartbeatMs: 50 }); - await app.listen({ host: "127.0.0.1", port: 0 }); - base = `http://127.0.0.1:${(app.server.address() as AddressInfo).port}`; - api = new InvisibleDotsClient({ baseUrl: base, token: TOKEN }); - }); - - afterAll(async () => { - await app?.close(); - await channels?.close(); - await scheduler?.close(); - await t?.drop(); - }); - - async function readyDot(name: string, idle?: string) { - const dot = await api.createDot(yaml(name, idle)); - await waitUntilSettledReady(scheduler, driver, dot.id, name); - return dot; - } - - it("refuses requests without the right bearer token with 401 JSON", async () => { - const none = await fetch(`${base}/api/dots`); - expect(none.status).toBe(401); - expect(await none.json()).toMatchObject({ error: "unauthorized" }); - const wrong = await fetch(`${base}/api/health`, { headers: { authorization: "Bearer nope" } }); - expect(wrong.status).toBe(401); - const stream = await fetch(`${base}/api/stream`, { headers: { authorization: "Basic abc" } }); - expect(stream.status).toBe(401); - await expect(new InvisibleDotsClient({ baseUrl: base, token: "wrong-token-xxxxxxxx" }).health()).rejects.toMatchObject({ - status: 401, - code: "unauthorized", - }); - }); - - it("doctor: the host report with its verdict, only with the token", async () => { - expect((await fetch(`${base}/api/doctor`)).status).toBe(401); - expect(await api.doctor()).toEqual({ ok: false, checks: REPORT }); - }); - - it("health, unknown routes and malformed bodies answer {error, message}", async () => { - expect(await api.health()).toEqual({ status: "ok", database: "ok", version: API_VERSION, openrouter_configured: true, ...hostFacts(kind) }); - const missing = await fetch(`${base}/api/nope`, { headers: { authorization: `Bearer ${TOKEN}` } }); - expect(missing.status).toBe(404); - expect(await missing.json()).toMatchObject({ error: "not_found" }); - const broken = await fetch(`${base}/api/dots`, { - method: "POST", - headers: { authorization: `Bearer ${TOKEN}`, "content-type": "application/json" }, - body: "{not json", - }); - expect(broken.status).toBe(400); - expect(await broken.json()).toMatchObject({ error: "invalid_request" }); - }); - - it("usage: the spend the guest reported, since a moment, from the event log", async () => { - const dot = await readyDot("usage-one"); - const other = await readyDot("usage-two"); - expect(await api.usage(dot.id)).toEqual({ dot_id: dot.id, since: null, spent_usd: 0 }); - const guest = driver.guestOf(dot.id); - guest.onInbound = () => {}; - const task = await api.createTask(dot.id, { description: "costly" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - guest.emit("task.progress", { task_id: task.id, text: "step", spent_usd: 0.25 }); - guest.emit("task.completed", { task_id: task.id, summary: "done", spent_usd: 0.5 }); - guest.emit("message.assistant", { text: "hello", spent_usd: 0.125 }); - driver.guestOf(other.id).emit("message.assistant", { text: "not mine", spent_usd: 9 }); - await waitFor(async () => (await api.getTask(task.id)).status === "COMPLETED", "completed"); - await waitFor(async () => (await api.usage(dot.id)).spent_usd === 0.625, "chat answer stored"); - expect(await api.usage(dot.name)).toEqual({ dot_id: dot.id, since: null, spent_usd: 0.625 }); - expect((await api.getTask(task.id)).spent_usd).toBe(0.5); - expect((await api.listTasks(dot.id))[0]?.spent_usd).toBe(0.5); - - const future = new Date(Date.now() + 3_600_000).toISOString(); - expect(await api.usage(dot.id, { since: future })).toEqual({ dot_id: dot.id, since: future, spent_usd: 0 }); - const past = new Date(Date.now() - 3_600_000).toISOString(); - expect((await api.usage(dot.id, { since: past })).spent_usd).toBe(0.625); - }); - - it("usage: a bad since is 400, an unknown Dot 404, and a deleted Dot's history stays readable by id", async () => { - const dot = await readyDot("usage-three"); - await expect(api.usage(dot.id, { since: "yesterday" })).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(api.usage(dot.id, { since: "2026-13-45T00:00:00Z" })).rejects.toMatchObject({ status: 400 }); - await expect(api.usage("no-such-dot")).rejects.toMatchObject({ status: 404 }); - driver.guestOf(dot.id).emit("message.assistant", { text: "paid", spent_usd: 0.5 }); - await waitFor(async () => (await api.usage(dot.id)).spent_usd === 0.5, "spend stored"); - await api.deleteDot(dot.id); - await waitFor(async () => (await db.dots.get(dot.id)) === null, "deleted"); - expect(await api.usage(dot.id)).toEqual({ dot_id: dot.id, since: null, spent_usd: 0.5 }); - }); - - it("create validates the config: 400 with the issues, 409 for a taken name", async () => { - const invalid = await api.createDot({ name: "Bad Name", model: { provider: "openrouter", id: "m" } }).catch((e) => e); - expect(invalid).toBeInstanceOf(ApiError); - expect(invalid).toMatchObject({ status: 400, code: "invalid_config" }); - expect((invalid as ApiError).details).toEqual([expect.objectContaining({ path: "name" })]); - await readyDot("taken-name"); - await expect(api.createDot(yaml("taken-name"))).rejects.toMatchObject({ status: 409, code: "name_taken" }); - }); - - it("create -> READY -> task -> guest events -> COMPLETED, visible in tasks, events and the stream", async () => { - const controller = new AbortController(); - const seen: StoredEvent[] = []; - const streaming = (async () => { - for await (const event of api.stream({ signal: controller.signal })) { - seen.push(event); - if (event.type === "task.completed") break; - } - })(); - - const dot = await readyDot("flow-dot"); - expect((await api.listDots()).map((d) => d.name)).toContain("flow-dot"); - expect(await api.getDot("flow-dot")).toMatchObject({ id: dot.id, computer_state: "RUNNING" }); - const computer = await api.computer(dot.id); - expect(computer).toMatchObject({ state: "RUNNING", ready: true }); - - const task = await api.createTask("flow-dot", { description: "find the cheapest day", priority: 1 }); - expect(task.status).toBe("PENDING"); - await waitFor(async () => (await api.getTask(task.id)).status === "COMPLETED", "task COMPLETED"); - expect((await api.listTasks(dot.id)).map((x) => x.id)).toContain(task.id); - await streaming; - controller.abort(); - expect(seen.map((e) => e.type)).toEqual(expect.arrayContaining(["dot.created", "computer.started", "task.created", "task.completed"])); - - const events = await api.events(dot.id); - expect(events.find((e) => e.type === "task.completed")?.data).toMatchObject({ task_id: task.id }); - const after = events[1]!.id; - expect((await api.events(dot.id, { after, limit: 2 })).map((e) => e.id)).toEqual(events.slice(2, 4).map((e) => e.id)); - await expect(api.events(dot.id, { limit: MAX_EVENT_PAGE + 1 })).rejects.toMatchObject({ status: 400 }); - await expect(api.cancelTask(task.id)).rejects.toMatchObject({ status: 409, code: "task_finished" }); - }); - - it("events: filtered by type names and by task, together and with after and limit", async () => { - const dot = await readyDot("event-filters"); - const guest = driver.guestOf(dot.id); - const one = await api.createTask(dot.id, { description: "one" }); - const two = await api.createTask(dot.id, { description: "two" }); - // Two whole tasks, one after the other: 0.6 s on PGlite, 2.2 s on a PostgreSQL reached across WSL, past the - // default 5 s when that machine is loaded. The wait bounds liveness only. - await waitFor(async () => (await api.getTask(two.id)).status === "COMPLETED", "second task done", 15_000); - const call = { tool: "exec", permission: "exec.run", decision: "allow", ok: true, duration_ms: 5 } as const; - guest.emit("tool.called", { task_id: one.id, ...call, target: "ls" }); - guest.emit("tool.called", { ...call, target: "date" }); - guest.emit("browser.identity.created", { identity_id: "bi_shop", name: "shop" }); - await waitFor(async () => (await api.events(dot.id, { types: ["browser.identity.created"] })).length === 1, "events stored"); - - const types = (events: StoredEvent[]) => events.map((e) => e.type); - expect(types(await api.events(dot.id, { types: ["tool.called"] }))).toEqual(["tool.called", "tool.called"]); - expect(types(await api.events(dot.id, { types: ["tool.called", "browser.identity.created"] }))).toEqual(["tool.called", "tool.called", "browser.identity.created"]); - // A task's events: the host's own and the guest's, in id order; the chat's tool call belongs to no task. - const ofOne = await api.events(dot.id, { taskId: one.id }); - expect(types(ofOne)).toEqual(expect.arrayContaining(["task.created", "task.started", "task.completed", "tool.called"])); - expect(ofOne.every((e) => e.data.task_id === one.id)).toBe(true); - expect(ofOne.map((e) => e.id)).toEqual([...ofOne.map((e) => e.id)].sort((a, b) => a - b)); - expect(ofOne.filter((e) => e.type === "tool.called").map((e) => e.data.target)).toEqual(["ls"]); - expect((await api.events(dot.id, { taskId: two.id, types: ["tool.called"] })).length).toBe(0); - expect(types(await api.events(dot.id, { taskId: one.id, types: ["tool.called"] }))).toEqual(["tool.called"]); - expect((await api.events(dot.id, { taskId: one.id, limit: 1 })).length).toBe(1); - expect((await api.events(dot.id, { taskId: one.id, after: ofOne.at(-1)!.id })).length).toBe(0); - expect(await api.events(dot.id, { taskId: "task_nobody" })).toEqual([]); - - // The raw query: an empty types is no filter, a type nobody emits is refused, so is a repeated or empty parameter. - const get = async (query: string) => { - const response = await fetch(`${base}/api/dots/${dot.id}/events?${query}`, { headers: { authorization: `Bearer ${TOKEN}` } }); - return { status: response.status, body: (await response.json()) as { events?: StoredEvent[]; error?: string; message?: string } }; - }; - expect((await get("types=")).body.events!.length).toBeGreaterThan(5); - expect(await get("types=tool.called,tool.calls")).toMatchObject({ status: 400, body: { error: "invalid_request", message: "unknown event type: tool.calls" } }); - expect((await get("types=tool.called&types=browser.identity.created")).status).toBe(400); - // The Dot keeps its notes itself: a note written is no event, and asking for one is asking for a type nobody emits. - expect(await get("types=memory.written")).toMatchObject({ status: 400, body: { message: "unknown event type: memory.written" } }); - expect((await get("task_id=a&task_id=b")).status).toBe(400); - expect((await get("task_id=")).status).toBe(400); - - // Newest first, and a tool filter that narrows tool.called only: the newest browser call is found past the calls of other tools. - const browser = { ...call, tool: "browser_navigate", target: "x-1: https://example.com/" }; - guest.emit("tool.called", browser); - guest.emit("tool.called", { ...call, target: "pwd" }); - guest.emit("tool.called", { ...call, target: "whoami" }); - await waitFor(async () => (await api.events(dot.id, { types: ["tool.called"] })).length === 5, "more events stored"); - const newest = await api.events(dot.id, { types: ["tool.called"], order: "desc", limit: 2 }); - expect(newest.map((e) => e.data.target)).toEqual(["whoami", "pwd"]); - const browserCalls = await api.events(dot.id, { types: ["tool.called"], tools: ["browser_navigate", "browser_click"], order: "desc", limit: 1 }); - expect(browserCalls.map((e) => e.data.target)).toEqual(["x-1: https://example.com/"]); - expect((await api.events(dot.id, { types: ["tool.called", "browser.identity.created"], tools: ["browser_click"] })).map((e) => e.type)).toEqual(["browser.identity.created"]); - // `before` goes on, older, from the oldest event of a newest-first page, and only there. - const calls = await api.events(dot.id, { types: ["tool.called"], order: "desc", limit: 2 }); - expect((await api.events(dot.id, { types: ["tool.called"], order: "desc", limit: 2, before: calls.at(-1)!.id })).map((e) => e.data.target)).toEqual(["x-1: https://example.com/", "date"]); - expect(await get(`before=${calls.at(-1)!.id}`)).toMatchObject({ status: 400, body: { message: "before pages a list in order=desc" } }); - expect((await get("order=desc&before=-1")).status).toBe(400); - expect((await get("order=sideways")).status).toBe(400); - expect((await get("order=desc&order=asc")).status).toBe(400); - expect((await get("tools=a&tools=b")).status).toBe(400); - await expect(api.events("no-such-dot", { types: ["tool.called"] })).rejects.toMatchObject({ status: 404 }); - }); - - it("files: list and read what is under /home/dot, as the guest answers, and nothing else", async () => { - const dot = await readyDot("file-reader"); - const guest = driver.guestOf(dot.id); - const note = "# Fares\n\nCheapest day is Tuesday.\n"; - guest.putFile("/home/dot/memory/fares.md", note, new Date("2026-10-01T10:00:00Z")); - guest.putFile("/home/dot/memory/trips/rome.md", "Rome", new Date("2026-10-02T10:00:00Z")); - guest.putFile("/home/dot/workspace/shot.png", Uint8Array.from([0x89, 0x50, 0x4e, 0x47])); - guest.putFile("/home/dot/notes.txt", "hi"); - guest.putFile("/etc/passwd", "root:x:0:0"); - - expect(await api.listFiles(dot.id, "/home/dot/memory")).toEqual({ - path: "/home/dot/memory", - entries: [ - { name: "fares.md", type: "file", size: note.length, mtime: "2026-10-01T10:00:00.000Z" }, - { name: "trips", type: "dir", size: 0, mtime: "2026-10-02T10:00:00.000Z" }, - ], - }); - // Home by default, and relative or ~ paths mean the same as the absolute one. - const home = await api.listFiles(dot.id); - expect(home.path).toBe("/home/dot"); - expect(home.entries.map((e) => e.name)).toEqual(["memory", "notes.txt", "workspace"]); - expect(await api.listFiles(dot.id, "~/memory")).toEqual(await api.listFiles(dot.id, "memory/")); - - expect(new TextDecoder().decode(await api.readFile(dot.id, "/home/dot/memory/fares.md"))).toBe(note); - expect(new TextDecoder().decode(await api.readFile(dot.id, "memory/trips/rome.md"))).toBe("Rome"); - expect([...(await api.readFile(dot.id, "workspace/shot.png"))]).toEqual([0x89, 0x50, 0x4e, 0x47]); - - // Outside home, or with a .. segment: 400 before the guest is asked, whatever the guest holds. - const callsBefore = guest.calls.length; - for (const path of ["/etc/passwd", "/home", "/home/dotter/x", "../../etc/passwd", "memory/../../../etc/passwd", "/home/dot/memory/.."]) { - await expect(api.readFile(dot.id, path), path).rejects.toMatchObject({ status: 400, code: "invalid_path" }); - await expect(api.listFiles(dot.id, path), path).rejects.toMatchObject({ status: 400, code: "invalid_path" }); - } - expect(guest.calls.length).toBe(callsBefore); - const raw = (route: string, query: string) => fetch(`${base}/api/dots/${dot.id}/${route}${query}`, { headers: { authorization: `Bearer ${TOKEN}` } }); - expect((await raw("files", "")).status).toBe(400); - expect((await raw("files", "?path=")).status).toBe(400); - expect((await raw("files", "?path=a&path=b")).status).toBe(400); - expect((await raw("files/list", "?path=")).status).toBe(400); - expect((await fetch(`${base}/api/dots/${dot.id}/files?path=notes.txt`)).status).toBe(401); - - // The guest's own refusals pass through with their code. - await expect(api.readFile(dot.id, "memory/missing.md")).rejects.toMatchObject({ status: 404, code: "not_found" }); - await expect(api.listFiles(dot.id, "memory/missing")).rejects.toMatchObject({ status: 404, code: "not_found" }); - await expect(api.readFile(dot.id, "memory")).rejects.toMatchObject({ status: 400, code: "is_a_directory" }); - await expect(api.listFiles(dot.id, "notes.txt")).rejects.toMatchObject({ status: 400, code: "not_a_directory" }); - - // A link under home that leads out of it passes the path rule and is the guest's 403, with nothing of the target in the answer. - guest.putFile("/proc/4242/environ", "PROXY_PASSWORD=hunter2"); - guest.link("/home/dot/environ", "/proc/4242/environ"); - const leak = await raw("files", `?path=${encodeURIComponent("environ")}`); - expect(leak.status).toBe(403); - expect(await leak.json()).toMatchObject({ error: "outside_home" }); - await expect(api.readFile(dot.id, "environ")).rejects.toMatchObject({ status: 403, code: "outside_home" }); - }); - - it("files: a read says what it is, so the page never runs a Dot's file; a large one is refused", async () => { - const dot = await readyDot("file-types"); - const guest = driver.guestOf(dot.id); - guest.putFile("/home/dot/page.html", ""); - guest.putFile("/home/dot/pic.png", Uint8Array.from([1, 2, 3])); - guest.putFile("/home/dot/data.bin", Uint8Array.from([4, 5])); - guest.putFile("/home/dot/é \"q\".txt", "x"); - guest.putFile("/home/dot/big.bin", new Uint8Array(16 * 1024 * 1024 + 1)); - guest.putFile("/home/dot/limit.bin", new Uint8Array(16 * 1024 * 1024)); - const read = (path: string) => fetch(`${base}/api/dots/${dot.id}/files?path=${encodeURIComponent(path)}`, { headers: { authorization: `Bearer ${TOKEN}` } }); - - const html = await read("page.html"); - expect(html.headers.get("content-type")).toBe("text/plain; charset=utf-8"); - expect(html.headers.get("content-disposition")).toMatch(/^inline; filename="page\.html"/); - expect(html.headers.get("x-content-type-options")).toBe("nosniff"); - expect(html.headers.get("content-security-policy")).toBe("default-src 'none'; sandbox"); - expect(html.headers.get("cache-control")).toBe("no-store"); - expect(await html.text()).toBe(""); - expect((await read("pic.png")).headers.get("content-type")).toBe("image/png"); - const bin = await read("data.bin"); - expect(bin.headers.get("content-type")).toBe("application/octet-stream"); - expect(bin.headers.get("content-disposition")).toMatch(/^attachment; filename="data\.bin"/); - expect((await read("é \"q\".txt")).headers.get("content-disposition")).toBe( - "inline; filename=\"_ _q_.txt\"; filename*=UTF-8''%C3%A9%20%22q%22.txt", - ); - - expect((await read("limit.bin")).status).toBe(200); - const big = await read("big.bin"); - expect(big.status).toBe(413); - expect(await big.json()).toMatchObject({ error: "file_too_large" }); - await expect(api.readFile(dot.id, "big.bin")).rejects.toMatchObject({ status: 413, code: "file_too_large" }); - }); - - it("files need a running computer (409 computer_stopped) and a Dot that exists", async () => { - const dot = await readyDot("file-sleeper"); - await api.stopComputer(dot.id); - await scheduler.settle(); - await expect(api.listFiles(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(api.readFile(dot.id, "notes.txt")).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await api.startComputer(dot.id); - await waitFor(async () => (await api.computer(dot.id)).ready, "started again"); - await expect(api.listFiles("no-such-dot")).rejects.toMatchObject({ status: 404 }); - await expect(api.readFile("no-such-dot", "a")).rejects.toMatchObject({ status: 404 }); - }); - - it("a tool table that follows the permissions, and no automations route: the jobs are the Dot's own", async () => { - const dot = await readyDot("automations"); - expect((await fetch(`${base}/api/dots/${dot.id}/automations`, { headers: { authorization: `Bearer ${TOKEN}` } })).status).toBe(404); - expect((await fetch(`${base}/api/dots/${dot.id}/tools`)).status).toBe(401); - - // Tools: the table, and what the model is offered follows the permissions the config pushed. - const { tools: none, mcp_servers } = await api.listTools(dot.id); - expect(mcp_servers).toEqual([]); - expect(none.map((t) => t.name)).toEqual([ - "exec", - "read_file", - "write_file", - "cron", - "browser_identity_list", - "browser_identity_create", - ]); - // The pushed config has the defaults filled in, none of them deny: every tool is offered. - expect(none.every((t) => t.offered)).toBe(true); - await api.updateDot(dot.id, `${yaml("automations")}permissions: - computer.exec: allow - files.read: ask - files.write: deny - automations: deny -`); - await waitFor(async () => (await api.listTools(dot.id)).tools.some((t) => !t.offered), "permissions pushed"); - expect(Object.fromEntries((await api.listTools(dot.id)).tools.map((t) => [t.name, t.offered]))).toEqual({ - exec: true, - read_file: true, - write_file: false, - cron: false, - browser_identity_list: true, - browser_identity_create: true, - }); - }); - - it("the tools need a running computer (409 computer_stopped) and a Dot that exists", async () => { - const dot = await readyDot("automation-sleeper"); - await api.stopComputer(dot.id); - await scheduler.settle(); - await expect(api.listTools(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(api.listSkills(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await api.startComputer(dot.id); - await waitFor(async () => (await api.computer(dot.id)).ready, "started again"); - await expect(api.listTools("no-such-dot")).rejects.toMatchObject({ status: 404 }); - await expect(api.listSkills("no-such-dot")).rejects.toMatchObject({ status: 404 }); - }); - - it("the skills are the engine's, the built-in ones and the Dot's own, each with its whole file", async () => { - const dot = await readyDot("skilled"); - const guest = driver.guestOf(dot.id); - const own = { name: "shop-login", description: "Log in to the shop.", source: "dot" as const, path: "/home/dot/skills/shop-login/SKILL.md", content: "---\nname: shop-login\n---\n" }; - guest.skills = [...guest.skills, own]; - const skills = await api.listSkills(dot.id); - expect(skills.map((s) => [s.name, s.source])).toEqual([["invisible-playwright", "builtin"], ["shop-login", "dot"]]); - expect(skills[1]).toEqual(own); - expect((await fetch(`${base}/api/dots/${dot.id}/skills`)).status).toBe(401); - }); - - it("the stream filters by Dot and replays after an id without duplicates", async () => { - const a = await readyDot("stream-a"); - const b = await readyDot("stream-b"); - const history = await api.events(a.id); - const controller = new AbortController(); - const got: StoredEvent[] = []; - const reading = (async () => { - for await (const event of api.stream({ dotId: "stream-a", after: history[0]!.id, signal: controller.signal })) { - got.push(event); - if (event.type === "browser.identity.created") break; - } - })(); - driver.guestOf(b.id).emit("browser.identity.created", { identity_id: "bi_b", name: "b-only" }); - driver.guestOf(a.id).emit("browser.identity.created", { identity_id: "bi_a", name: "a-only" }); - await reading; - controller.abort(); - expect(got.every((e) => e.dot_id === a.id)).toBe(true); - expect(got.map((e) => e.id)).toEqual([...new Set(got.map((e) => e.id))]); - expect(got[0]?.id).toBe(history[1]?.id); - expect(got.at(-1)?.data).toMatchObject({ name: "a-only" }); - }); - - it("approval flow over HTTP", async () => { - const dot = await readyDot("asks-first"); - const guest = driver.guestOf(dot.id); - const original = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "task.created") g.requestApproval(event.data.task_id); - else return original(event, g); - }; - const task = await api.createTask(dot.id, { description: "delete an identity" }); - const pending = await waitFor( - async () => (await api.listApprovals("pending")).find((a) => a.dot_id === dot.id), - "approval pending", - ); - expect(pending.task_id).toBe(task.id); - await waitFor(async () => (await api.getTask(task.id)).status === "WAITING_APPROVAL", "task waiting"); - const rejected = await api.reject(pending.id, { note: "keep it" }); - expect(rejected).toMatchObject({ status: "rejected", note: "keep it" }); - await waitFor(async () => (await api.getTask(task.id)).status === "COMPLETED", "task resumed and completed"); - await expect(api.approve(pending.id)).rejects.toMatchObject({ status: 409, code: "already_resolved" }); - await expect(api.approve("apr_missing")).rejects.toMatchObject({ status: 404 }); - const raw = await fetch(`${base}/api/approvals?status=maybe`, { headers: { authorization: `Bearer ${TOKEN}` } }); - expect(raw.status).toBe(400); - }); - - it("approvals: several statuses at once, newest answer first, a limit that keeps the newest and a cursor", async () => { - const dot = await readyDot("asks-often"); - const guest = driver.guestOf(dot.id); - const ids = [guest.requestApproval(undefined), guest.requestApproval(undefined), guest.requestApproval(undefined)]; - await waitFor(async () => (await api.listApprovals("pending")).filter((a) => a.dot_id === dot.id).length === 3, "three pending"); - await api.reject(ids[1]!, {}); - await api.approve(ids[0]!, {}); - const mine = async (...args: Parameters) => (await api.listApprovals(...args)).filter((a) => a.dot_id === dot.id).map((a) => a.id); - // Answered, the last answered first (ids[0] after ids[1]); the one still pending is not among them. - expect(await mine(["approved", "rejected", "expired"], { order: "desc" })).toEqual([ids[0], ids[1]]); - expect(await mine(["pending", "rejected"])).toEqual([ids[1], ids[2]]); - const newestOne = await api.listApprovals(["approved", "rejected", "expired"], { order: "desc", limit: 1 }); - expect(newestOne.map((a) => a.id)).toEqual([ids[0]]); - expect((await api.listApprovals(["approved", "rejected", "expired"], { order: "desc", limit: 1, before: ids[0]! })).map((a) => a.id)).toEqual([ids[1]]); - - // Of one Dot, chosen in the database: by id or by name, and a Dot that does not exist has none. - const other = await readyDot("asks-rarely"); - const otherAsk = driver.guestOf(other.id).requestApproval(undefined); - await waitFor(async () => (await api.listApprovals("pending", { dot: other.id })).length === 1, "the other Dot's approval"); - expect((await api.listApprovals("pending", { dot: other.id })).map((a) => a.id)).toEqual([otherAsk]); - expect((await api.listApprovals("pending", { dot: "asks-rarely" })).map((a) => a.id)).toEqual([otherAsk]); - expect((await api.listApprovals(["approved", "rejected"], { dot: dot.id, order: "desc" })).map((a) => a.id)).toEqual([ids[0], ids[1]]); - expect(await api.listApprovals("pending", { dot: "dot_nobody" })).toEqual([]); - - const get = async (query: string) => (await fetch(`${base}/api/approvals?${query}`, { headers: { authorization: `Bearer ${TOKEN}` } })).status; - expect(await get("dot_id=")).toBe(400); - expect(await get(`dot_id=${dot.id}&dot_id=${other.id}`)).toBe(400); - expect(await get("status=approved,maybe")).toBe(400); - expect(await get("status=")).toBe(400); - expect(await get("status=approved&status=rejected")).toBe(400); - expect(await get("order=newest")).toBe(400); - expect(await get("limit=0")).toBe(400); - expect(await get("limit=501")).toBe(400); - expect(await get(`order=desc&before=${ids[0]}&limit=1`)).toBe(200); - expect(await get(`before=${ids[0]}`)).toBe(400); - expect(await get("order=desc&before=")).toBe(400); - }); - - it("approve with always over HTTP sets the permission in the Dot's config and pushes it", async () => { - const dot = await readyDot("always-http"); - const guest = driver.guestOf(dot.id); - const approvalId = guest.requestApproval(undefined); - await waitFor(async () => (await api.listApprovals("pending")).some((a) => a.id === approvalId), "approval pending"); - const post = (id: string, decision: string, body: unknown) => - fetch(`${base}/api/approvals/${id}/${decision}`, { - method: "POST", - headers: { authorization: `Bearer ${TOKEN}`, "content-type": "application/json" }, - body: JSON.stringify(body), - }); - expect((await post(approvalId, "approve", { always: "yes" })).status).toBe(400); - expect((await post(approvalId, "approve", { always: false })).status).toBe(400); - expect((await post(approvalId, "reject", { always: true })).status).toBe(400); - expect((await api.listApprovals("pending")).some((a) => a.id === approvalId)).toBe(true); - expect((await api.getDot(dot.id)).config.permissions).toEqual({}); - - expect(await api.approve(approvalId, { note: "yes", always: true })).toMatchObject({ status: "approved", note: "yes" }); - expect((await api.getDot(dot.id)).config.permissions["browser.identity.delete"]).toBe("allow"); - expect(guest.config?.permissions["browser.identity.delete"]).toBe("allow"); - const resolved = (await api.events(dot.id, { types: ["approval.resolved"] })).at(-1); - expect(resolved?.data).toEqual({ approval_id: approvalId, decision: "approve", note: "yes", always: true }); - await expect(api.approve(approvalId, { always: true })).rejects.toMatchObject({ status: 409, code: "already_resolved" }); - }); - - it("messages: delivered to a READY Dot and readable as a conversation", async () => { - const dot = await readyDot("talker"); - const sent = await api.sendMessage("talker", "what did you find?"); - expect(sent.delivery).toBe("delivered"); - await waitFor(async () => (await api.messages(dot.id)).length === 2, "reply"); - expect((await api.messages(dot.id)).map((m) => m.role)).toEqual(["user", "assistant"]); - await expect(api.sendMessage(dot.id, " ")).rejects.toMatchObject({ status: 400 }); - }); - - it("tasks: the newest first, a page at a time, and a cursor that goes on through the rest", async () => { - const dot = await readyDot("many-tasks"); - const other = await readyDot("other-tasks"); - const made: string[] = []; - for (const description of ["one", "two", "three", "four", "five"]) { - made.push((await api.createTask(dot.id, { description })).id); - await new Promise((resolve) => setTimeout(resolve, 5)); - } - const foreign = (await api.createTask(other.id, { description: "not mine" })).id; - const newestFirst = [...made].reverse(); - expect((await api.listTasks(dot.id)).map((t) => t.id)).toEqual(newestFirst); - const first = await api.listTasks(dot.id, { limit: 2 }); - expect(first.map((t) => t.id)).toEqual(newestFirst.slice(0, 2)); - const second = await api.listTasks(dot.id, { limit: 2, before: first.at(-1)!.id }); - expect(second.map((t) => t.id)).toEqual(newestFirst.slice(2, 4)); - expect((await api.listTasks(dot.id, { limit: 2, before: second.at(-1)!.id })).map((t) => t.id)).toEqual(newestFirst.slice(4)); - expect(await api.listTasks(dot.id, { before: made[0]! })).toEqual([]); - // Another Dot's task is no cursor here, and nothing of it is listed. - expect(await api.listTasks(dot.id, { before: foreign })).toEqual([]); - - const get = async (query: string) => (await fetch(`${base}/api/dots/${dot.id}/tasks?${query}`, { headers: { authorization: `Bearer ${TOKEN}` } })).status; - expect(await get("limit=0")).toBe(400); - expect(await get("limit=201")).toBe(400); - expect(await get("limit=x")).toBe(400); - expect(await get("before=")).toBe(400); - expect(await get("limit=200&before=nobody")).toBe(200); - }); - - it("every Dot in one read: the tasks that failed since a time, latest first, and every channel with its Dot", async () => { - const a = await readyDot("every-a"); - const b = await readyDot("every-b"); - const since = new Date(Date.now() - 1); - const failed = async (dotId: string, description: string) => { - const guest = driver.guestOf(dotId); - guest.onInbound = () => {}; - const task = await api.createTask(dotId, { description }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - guest.emit("task.failed", { task_id: task.id, error: "boom" }); - await waitFor(async () => (await api.getTask(task.id)).status === "FAILED", "failed"); - return task.id; - }; - const first = await failed(a.id, "first"); - const second = await failed(b.id, "second"); - const ours = (tasks: { id: string }[]) => tasks.map((t) => t.id).filter((id) => id === first || id === second); - expect(ours(await api.endedTasks("FAILED", since))).toEqual([second, first]); - expect(ours(await api.endedTasks("COMPLETED", since))).toEqual([]); - expect(await api.endedTasks("FAILED", new Date(Date.now() + 60_000))).toEqual([]); - const get = async (query: string) => (await fetch(`${base}/api/tasks?${query}`, { headers: { authorization: `Bearer ${TOKEN}` } })).status; - expect(await get("status=RUNNING&finished_after=2026-01-01T00:00:00Z")).toBe(400); - expect(await get("status=FAILED&finished_after=yesterday")).toBe(400); - expect(await get("status=FAILED")).toBe(400); - - await channels.add(a.id, "telegram"); - await channels.add(b.id, "telegram"); - const every = (await api.everyChannel()).filter((c) => c.dot_id === a.id || c.dot_id === b.id); - expect(every.map((c) => [c.dot_id, c.kind])).toEqual([ - [a.id, "telegram"], - [b.id, "telegram"], - ]); - expect(JSON.stringify(every)).not.toMatch(/token/i); - // The channels run until they are removed: this test stops what it started, so no later test or teardown inherits them. - await channels.remove(a.id, "telegram"); - await channels.remove(b.id, "telegram"); - expect((await api.everyChannel()).filter((c) => c.dot_id === a.id || c.dot_id === b.id)).toEqual([]); - }); - - it("messages: the newest page of a long conversation, and a cursor that goes back through the rest", async () => { - const dot = await readyDot("chatty"); - for (const [index, word] of ["one", "two", "three"].entries()) { - await api.sendMessage(dot.id, word); - await waitFor(async () => (await api.messages(dot.id)).length === 2 * (index + 1), `reply to ${word}`); - } - const all = await api.messages(dot.id); - expect(all.length).toBe(6); - // The default is the oldest first, so a limit keeps the oldest: only `order=desc` reaches the newest. - expect((await api.messages(dot.id, { limit: 2 })).map((m) => m.event_id)).toEqual(all.slice(0, 2).map((m) => m.event_id)); - const newest = await api.messages(dot.id, { order: "desc", limit: 2 }); - expect(newest.map((m) => m.event_id)).toEqual(all.slice(4).map((m) => m.event_id).reverse()); - const older = await api.messages(dot.id, { order: "desc", limit: 3, before: newest.at(-1)!.event_id }); - expect(older.map((m) => m.event_id)).toEqual(all.slice(1, 4).map((m) => m.event_id).reverse()); - expect(await api.messages(dot.id, { order: "desc", before: all[0]!.event_id })).toEqual([]); - - const get = async (query: string) => (await fetch(`${base}/api/dots/${dot.id}/messages?${query}`, { headers: { authorization: `Bearer ${TOKEN}` } })).status; - expect(await get("limit=0")).toBe(400); - expect(await get("limit=501")).toBe(400); - expect(await get("order=newest")).toBe(400); - expect(await get(`before=${all[0]!.event_id}`)).toBe(400); - expect(await get("order=desc&before=-1")).toBe(400); - expect(await get(`order=desc&before=${all[0]!.event_id}&limit=1`)).toBe(200); - }); - - it("messages: the HTTP route cannot claim a channel origin", async () => { - const dot = await readyDot("impostor"); - const origin = { channel: "telegram", binding_id: "chb_1", chat_id: "1", external_id: "2" }; - const raw = await fetch(`${base}/api/dots/${dot.id}/messages`, { - method: "POST", - headers: { authorization: `Bearer ${TOKEN}`, "content-type": "application/json" }, - body: JSON.stringify({ text: "I am Telegram", origin }), - }); - expect(raw.status).toBe(202); - await waitFor(async () => (await api.messages(dot.id)).length === 2, "reply"); - const [user] = await api.messages(dot.id); - expect(user).toMatchObject({ role: "user", text: "I am Telegram" }); - expect("origin" in user!).toBe(false); - }); - - it("browser identities and screenshots need a running computer (409 computer_stopped)", async () => { - const dot = await readyDot("browsing"); - const identity = await api.createIdentity(dot.id, { name: "Main account" }); - expect(identity.name).toBe("Main account"); - expect((await api.listIdentities(dot.id)).map((i) => i.id)).toEqual([identity.id]); - expect((await api.getIdentity(dot.id, identity.id)).id).toBe(identity.id); - await expect(api.getIdentity(dot.id, "nobody-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - const png = await api.screenshot(dot.id); - expect([...png.slice(0, 4)]).toEqual([0x89, 0x50, 0x4e, 0x47]); - await api.deleteIdentity(dot.id, identity.id); - - expect(await api.stopComputer(dot.id)).toEqual({ accepted: true }); - await scheduler.settle(); - expect((await api.computer(dot.id)).state).toBe("STOPPED"); - expect((await api.getDot(dot.id)).status).toBe("IDLE"); - await expect(api.listIdentities(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(api.createIdentity(dot.id, { name: "x" })).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(api.screenshot(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - - await api.startComputer(dot.id); - await waitFor(async () => (await api.computer(dot.id)).ready, "started again"); - }); - - it("an identity needs no proxy: a name alone, a null or a blank proxy make one with none, and a proxy is an explicit option", async () => { - const dot = await readyDot("no-proxy-needed"); - const create = async (body: Record) => { - const response = await fetch(`${base}/api/dots/${dot.id}/browser-identities`, { - method: "POST", - headers: { authorization: `Bearer ${TOKEN}`, "content-type": "application/json" }, - body: JSON.stringify(body), - }); - return { status: response.status, identity: (await response.json()) as Record }; - }; - for (const body of [{ name: "Plain" }, { name: "Null", proxy: null }, { name: "Blank", proxy: " " }]) { - const { status, identity } = await create(body); - expect(status, JSON.stringify(body)).toBe(201); - expect(identity, JSON.stringify(body)).toMatchObject({ hasProxy: false }); - } - const sdk = await api.createIdentity(dot.id, { name: "Through the SDK" }); - expect(sdk.hasProxy).toBe(false); - expect((await api.listIdentities(dot.id)).some((i) => i.hasProxy || "proxy" in i)).toBe(false); - - // The proxy is a secret: it is passed on as written, and the identity says only that it has one. - const own = await api.createIdentity(dot.id, { name: "Own exit", proxy: "socks5://user:hunter2@proxy.test:1080" }); - expect(own.hasProxy).toBe(true); - expect(own).not.toHaveProperty("proxy"); - const listed = JSON.stringify(await api.listIdentities(dot.id)); - expect(listed).not.toContain("hunter2"); - expect(listed).not.toContain("proxy.test"); - expect((await create({ name: "Number", proxy: 8080 })).status).toBe(400); - }); - - it("an MCP server's secrets are set and cleared through the API and the SDK, and no answer carries a value", async () => { - const dot = await api.createDot(`${yaml("mcp-api")}mcp_servers:\n web:\n url: https://web.example/mcp\n secrets: [Authorization]\n`); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-api"); - const route = `${base}/api/dots/${dot.id}/mcp-secrets/web/Authorization`; - expect((await fetch(route, { method: "PUT", body: JSON.stringify({ value: "x" }), headers: { "content-type": "application/json" } })).status).toBe(401); - expect((await fetch(`${base}/api/dots/${dot.id}/mcp-secrets`)).status).toBe(401); - - const set = await api.setMcpSecret(dot.id, "web", "Authorization", "Bearer api-1"); - expect(set).toEqual({ dot_id: dot.id, secrets: [{ server: "web", name: "Authorization", set: true }] }); - expect(driver.guestOf(dot.id).mcpSecrets).toEqual({ web: { Authorization: "Bearer api-1" } }); - expect(JSON.stringify(await api.mcpSecrets(dot.id))).not.toContain("api-1"); - - // A PUT with no value is refused, not taken as a clear; the DELETE clears. - const empty = await fetch(route, { method: "PUT", headers: { authorization: `Bearer ${TOKEN}`, "content-type": "application/json" }, body: JSON.stringify({ value: null }) }); - expect(empty.status).toBe(400); - expect((await api.setMcpSecret(dot.id, "web", "Authorization", null)).secrets[0]!.set).toBe(false); - await expect(api.setMcpSecret(dot.id, "nope", "Authorization", "x")).rejects.toMatchObject({ status: 404 }); - }); - - it("an identity's frame is a JPEG of an open one, and close ends it, through the API and the SDK", async () => { - const dot = await readyDot("viewing"); - const identity = await api.createIdentity(dot.id, { name: "Main account" }); - await expect(api.getIdentityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "not_open" }); - await expect(api.getIdentityFrame(dot.id, "nobody-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - - driver.guestOf(dot.id).launchIdentity(identity.id); - const jpeg = await api.getIdentityFrame(dot.id, identity.id); - expect([...jpeg]).toEqual([0xff, 0xd8, 0xff, 0xd9]); - const raw = await fetch(`${base}/api/dots/${dot.id}/browser-identities/${identity.id}/frame`, { - headers: { authorization: `Bearer ${TOKEN}` }, - }); - expect(raw.headers.get("content-type")).toBe("image/jpeg"); - expect(raw.headers.get("cache-control")).toBe("no-store"); - driver.guestOf(dot.id).identityBusy = true; - await expect(api.getIdentityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 503, code: "busy" }); - driver.guestOf(dot.id).identityBusy = false; - - await api.closeIdentity(dot.id, identity.id); - expect((await api.getIdentity(dot.id, identity.id)).status).toBe("available"); - await expect(api.getIdentityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "not_open" }); - await expect(api.closeIdentity(dot.id, "nobody-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - - await api.stopComputer(dot.id); - await scheduler.settle(); - await expect(api.getIdentityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(api.closeIdentity(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - }); - - it("sleeps after idle_timeout (fake clock) and a new task wakes it", async () => { - const dot = await readyDot("napper", "5m"); - clock.advance(6 * 60_000); - expect(await scheduler.idleCheck()).toContain(dot.id); - await scheduler.settle(); - expect((await api.computer(dot.id)).state).toBe("STOPPED"); - const task = await api.createTask(dot.id, { description: "wake up" }); - await waitFor(async () => (await api.getTask(task.id)).status === "COMPLETED", "task after wake"); - expect((await api.computer(dot.id)).state).toBe("RUNNING"); - }); - - it("the secret route refuses a key that cannot travel in a header with 400, naming the rule and never the key", async () => { - const dot = await readyDot("key-check"); - expect(await api.setOpenRouterKey("sk-or-good", dot.id)).toEqual({ pushed: 1 }); - - for (const bad of ["sk-or-v1-SECRETHEAD\nSECRETTAIL", "sk-or-v1-SECRET HEAD", "sk-or-v1-SECRETüHEAD", "SECRET\u0000HEAD"]) { - const refused = await api.setOpenRouterKey(bad, dot.id).catch((error: unknown) => error); - expect(refused).toBeInstanceOf(ApiError); - expect(refused).toMatchObject({ status: 400, code: "invalid_request" }); - expect((refused as ApiError).message).toContain(OPENROUTER_KEY_RULE); - expect((refused as ApiError).message).not.toContain("SECRET"); - } - // Nothing was stored or pushed by the refusals. - expect(await db.secrets.get(dot.id, "openrouter_api_key")).toBe("sk-or-good"); - expect(driver.guestOf(dot.id).openrouterKey).toBe("sk-or-good"); - - // A pasted key with its ends trimmed is the key. - await api.setOpenRouterKey(" sk-or-padded\n", dot.id); - expect(driver.guestOf(dot.id).openrouterKey).toBe("sk-or-padded"); - }); - - it("PATCH updates the config; DELETE removes the Dot; the secret route stores the key", async () => { - const dot = await readyDot("to-patch"); - const updated = await api.updateDot(dot.id, `${yaml("to-patch")}instructions: short answers\n`); - expect(updated.config.instructions).toBe("short answers"); - expect(driver.guestOf(dot.id).config?.instructions).toBe("short answers"); - // A save from an old read is a 409 over the wire, and a malformed read is a 400. - const body = `${yaml("to-patch")}instructions: from a stale form\n`; - await expect(api.updateDot(dot.id, body, dot.config_version)).rejects.toMatchObject({ status: 409, code: "dot_changed" }); - expect((await api.updateDot(dot.id, body, updated.config_version)).config.instructions).toBe("from a stale form"); - await expect(api.updateDot(dot.id, body, 1.5)).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - - expect(await api.setOpenRouterKey("sk-or-rotated", "to-patch")).toEqual({ pushed: 1 }); - expect(driver.guestOf(dot.id).openrouterKey).toBe("sk-or-rotated"); - await expect(api.setOpenRouterKey("")).rejects.toMatchObject({ status: 400 }); - - expect(await api.deleteDot("to-patch")).toEqual({ accepted: true }); - await scheduler.settle(); - await expect(api.getDot("to-patch")).rejects.toMatchObject({ status: 404 }); - expect((await api.events(dot.id)).at(-1)?.type).toBe("dot.deleted"); - }); -}); diff --git a/apps/api/test/channels.test.ts b/apps/api/test/channels.test.ts deleted file mode 100644 index 39a7cec0..00000000 --- a/apps/api/test/channels.test.ts +++ /dev/null @@ -1,234 +0,0 @@ -import type { AddressInfo } from "node:net"; -import { ChannelHub, TelegramChannelType } from "@invisible-dots/channels"; -import { FakeBotApi } from "@invisible-dots/channels/testing"; -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, testAdapters, type TestDatabase } from "@invisible-dots/database/testing"; -import { Scheduler } from "@invisible-dots/scheduler"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "@invisible-dots/scheduler/testing"; -import { InvisibleDotsClient } from "@invisible-dots/sdk"; -import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { buildServer, type FastifyInstance } from "../src/index.js"; -import { hostFacts } from "./host-facts.js"; - -const API_TOKEN = "test-token-0123456789abcdef"; -const BOT_TOKEN = "123456:SECRET-TOKEN-VALUE"; -const OTHER_BOT_TOKEN = "654321:OTHER-SECRET-TOKEN-VALUE"; - -const yaml = (name: string) => `name: ${name}\nmodel:\n provider: openrouter\n id: test/model\n`; - -describe.each(testAdapters())("channel routes of the control-plane API (%s)", { timeout: 60_000 }, (kind) => { - let t: TestDatabase; - let db: Database; - let bots: FakeBotApi; - let app: FastifyInstance; - let scheduler: Scheduler; - let hub: ChannelHub; - let driver: FakeDriver; - let base: string; - let api: InvisibleDotsClient; - let seq = 0; - - beforeAll(async () => { - t = await createTestDatabase(kind); - db = t.db; - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - bots = await FakeBotApi.start(); - driver = new FakeDriver(); - scheduler = new Scheduler({ - db, - driver, - clock: new ManualClock(), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10 }, - dispatcher: { retryDelayMs: 0 }, - }); - hub = new ChannelHub({ - db, - host: scheduler, - types: [new TelegramChannelType({ apiRoot: bots.apiRoot, pollSeconds: 30 })], - backoff: { initialMs: 1, maxMs: 5, jitter: 0 }, - }); - app = buildServer({ scheduler, channels: hub, doctor: async () => [], host: hostFacts(), token: API_TOKEN }); - await scheduler.start(); - await hub.start(); - await app.listen({ host: "127.0.0.1", port: 0 }); - base = `http://127.0.0.1:${(app.server.address() as AddressInfo).port}`; - api = new InvisibleDotsClient({ baseUrl: base, token: API_TOKEN }); - }, 60_000); - - beforeEach(() => { - bots.addBot(BOT_TOKEN, "dot_helper_bot"); - bots.addBot(OTHER_BOT_TOKEN, "second_bot"); - }); - - afterEach(async () => { - // A bot serves one Dot: what a test linked must not keep the next test from linking it. - for (const dot of await api.listDots()) { - for (const channel of await api.channels(dot.id)) await api.removeChannel(dot.id, channel.kind); - } - }); - - afterAll(async () => { - await app?.close(); - await hub?.close(); - await scheduler?.close(); - await bots?.close(); - await t?.drop(); - }); - - async function readyDot() { - const name = `chan-${++seq}`; - const dot = await api.createDot(yaml(name)); - await waitUntilSettledReady(scheduler, driver, dot.id, name); - return dot; - } - - /** A raw request, to see the status and the body exactly as sent. */ - async function raw(method: string, path: string, body?: unknown) { - const response = await fetch(`${base}${path}`, { - method, - headers: { authorization: `Bearer ${API_TOKEN}`, ...(body === undefined ? {} : { "content-type": "application/json" }) }, - body: body === undefined ? undefined : JSON.stringify(body), - }); - const text = await response.text(); - return { status: response.status, text, json: text ? (JSON.parse(text) as Record) : null }; - } - - it("lists nothing for a Dot without channels, and needs the API token like every route", async () => { - const dot = await readyDot(); - expect(await api.channels(dot.id)).toEqual([]); - for (const [method, path] of [ - ["GET", `/api/dots/${dot.id}/channels`], - ["PUT", `/api/dots/${dot.id}/channels/telegram`], - ["PATCH", `/api/dots/${dot.id}/channels/telegram`], - ["DELETE", `/api/dots/${dot.id}/channels/telegram`], - ["POST", `/api/dots/${dot.id}/channels/telegram/pairing`], - ["DELETE", `/api/dots/${dot.id}/channels/telegram/peers/10`], - ] as const) { - const response = await fetch(`${base}${path}`, { method }); - expect(response.status, `${method} ${path}`).toBe(401); - } - }); - - it("links a bot (201), shows its name, never returns the token, and replaces the token of a linked bot (200)", async () => { - const dot = await readyDot(); - const created = await raw("PUT", `/api/dots/${dot.name}/channels/telegram`, { token: ` ${BOT_TOKEN} ` }); - expect(created.status).toBe(201); - expect(created.json).toMatchObject({ kind: "telegram", enabled: true, account: "dot_helper_bot", peers: [], settings: { approvals: true, notify_tasks: true } }); - expect(created.text).not.toContain("SECRET-TOKEN"); - expect(await db.secrets.get(dot.id, "telegram_bot_token")).toBe(BOT_TOKEN); - - expect(JSON.stringify(await api.channels(dot.id))).not.toContain("SECRET-TOKEN"); - await waitFor(async () => (await api.channels(dot.name))[0]!.status === "connected", "connected"); - - const replaced = await raw("PUT", `/api/dots/${dot.id}/channels/telegram`, { token: OTHER_BOT_TOKEN }); - expect(replaced.status).toBe(200); - expect(replaced.json).toMatchObject({ kind: "telegram", account: "second_bot" }); - expect(replaced.text).not.toContain("SECRET-TOKEN"); - expect(await db.secrets.get(dot.id, "telegram_bot_token")).toBe(OTHER_BOT_TOKEN); - expect(await api.channels(dot.id)).toHaveLength(1); - }); - - it("pairs a person through the code, lists them, and revokes them", async () => { - const dot = await readyDot(); - await api.putTelegramChannel(dot.id, BOT_TOKEN); - await waitFor(() => bots.polling(BOT_TOKEN), "polling"); - const pairing = await api.pairChannel(dot.id, "telegram"); - expect(pairing.code).toMatch(/^[A-Z2-9]{8}$/); - expect(pairing.deep_link).toBe(`https://t.me/dot_helper_bot?start=${pairing.code}`); - expect(new Date(pairing.expires_at).getTime()).toBeGreaterThan(Date.now()); - expect((await raw("POST", `/api/dots/${dot.id}/channels/telegram/pairing`)).status).toBe(201); - - bots.say(BOT_TOKEN, `/start ${pairing.code}`, { id: 10, first_name: "Ann" }); - await waitFor(async () => (await api.channels(dot.id))[0]!.peers.length === 1, "the person to be paired"); - expect((await api.channels(dot.id))[0]!.peers[0]).toMatchObject({ peer_id: "10", role: "owner", label: "Ann" }); - - expect((await raw("DELETE", `/api/dots/${dot.id}/channels/telegram/peers/10`)).status).toBe(204); - expect((await api.channels(dot.id))[0]!.peers).toEqual([]); - await expect(api.removeChannelPeer(dot.id, "telegram", "10")).rejects.toMatchObject({ status: 404 }); - }); - - it("changes settings and pauses and resumes the channel, and refuses what is not a setting", async () => { - const dot = await readyDot(); - await api.putTelegramChannel(dot.id, BOT_TOKEN); - expect((await api.patchChannel(dot.id, "telegram", { settings: { notify_tasks: false } })).settings).toEqual({ approvals: true, notify_tasks: false, show_arguments: true }); - expect((await api.patchChannel(dot.id, "telegram", { settings: { show_arguments: false } })).settings).toEqual({ approvals: true, notify_tasks: false, show_arguments: false }); - const paused = await api.patchChannel(dot.id, "telegram", { enabled: false }); - expect(paused).toMatchObject({ enabled: false, settings: { approvals: true, notify_tasks: false } }); - await waitFor(() => !bots.polling(BOT_TOKEN), "polling to stop"); - const both = await api.patchChannel(dot.id, "telegram", { enabled: true, settings: { approvals: false } }); - expect(both).toMatchObject({ enabled: true, settings: { approvals: false, notify_tasks: false } }); - await waitFor(() => bots.polling(BOT_TOKEN), "polling again"); - - for (const body of [{}, { enabled: "yes" }, { settings: { colour: true } }, { settings: { approvals: "no" } }, { settings: [] }]) { - const refused = await raw("PATCH", `/api/dots/${dot.id}/channels/telegram`, body); - expect(refused.status, JSON.stringify(body)).toBe(400); - expect(refused.json).toMatchObject({ error: "invalid_request" }); - } - expect((await api.channels(dot.id))[0]!.settings).toEqual({ approvals: false, notify_tasks: false, show_arguments: false }); - }); - - it("unlinks: the channel stops, its token and people are deleted, and it is gone for a second try", async () => { - const dot = await readyDot(); - await api.putTelegramChannel(dot.id, BOT_TOKEN); - await waitFor(() => bots.polling(BOT_TOKEN), "polling"); - expect((await raw("DELETE", `/api/dots/${dot.id}/channels/telegram`)).status).toBe(204); - await waitFor(() => !bots.polling(BOT_TOKEN), "polling to stop"); - expect(await db.secrets.get(dot.id, "telegram_bot_token")).toBeNull(); - expect(await api.channels(dot.id)).toEqual([]); - await expect(api.removeChannel(dot.id, "telegram")).rejects.toMatchObject({ status: 404, code: "not_found" }); - await expect(api.patchChannel(dot.id, "telegram", { enabled: true })).rejects.toMatchObject({ status: 404 }); - await expect(api.pairChannel(dot.id, "telegram")).rejects.toMatchObject({ status: 404 }); - }); - - it("refuses with a status and a message that never carry the token: no token, a wrong one, a malformed one, an unreachable Telegram, a bot in use", async () => { - const dot = await readyDot(); - const other = await readyDot(); - const url = `/api/dots/${dot.id}/channels/telegram`; - const answers = [ - await raw("PUT", url, {}), - await raw("PUT", url, { token: 42 }), - await raw("PUT", url, { token: " " }), - await raw("PUT", url, { token: "999:UNKNOWN-TOKEN-VALUE" }), - await raw("PUT", url, { token: "bad token with spaces" }), - ]; - expect(answers.map((a) => a.status)).toEqual([400, 400, 400, 400, 400]); - expect(answers.map((a) => a.json?.error)).toEqual(["invalid_request", "invalid_request", "invalid_request", "invalid_credentials", "invalid_credentials"]); - expect(answers[3]!.json?.message).toMatch(/refused the bot token/); - - bots.addBot("777:UNREACHABLE-TOKEN-VALUE", "third_bot"); - bots.failNext("777:UNREACHABLE-TOKEN-VALUE", "getMe", "drop"); - const unreachable = await raw("PUT", url, { token: "777:UNREACHABLE-TOKEN-VALUE" }); - expect(unreachable.status).toBe(502); - expect(unreachable.json?.error).toBe("channel_unreachable"); - expect(unreachable.text).not.toContain("UNREACHABLE-TOKEN-VALUE"); - expect(await api.channels(dot.id)).toEqual([]); - expect(await db.secrets.get(dot.id, "telegram_bot_token")).toBeNull(); - - await api.putTelegramChannel(dot.id, BOT_TOKEN); - const inUse = await raw("PUT", `/api/dots/${other.id}/channels/telegram`, { token: BOT_TOKEN }); - expect(inUse.status).toBe(409); - expect(inUse.json?.error).toBe("account_in_use"); - expect(inUse.text).not.toContain("SECRET-TOKEN"); - expect(await api.channels(other.id)).toEqual([]); - - for (const answer of [...answers, unreachable, inUse]) expect(answer.text).not.toContain(BOT_TOKEN.split(":")[1]); - }); - - it("answers 404 for a Dot that does not exist and 400 for a channel kind that does not", async () => { - const dot = await readyDot(); - await expect(api.channels("no-such-dot")).rejects.toMatchObject({ status: 404 }); - await expect(api.putTelegramChannel("no-such-dot", BOT_TOKEN)).rejects.toMatchObject({ status: 404 }); - for (const [method, path] of [ - ["PATCH", `/api/dots/${dot.id}/channels/carrier-pigeon`], - ["DELETE", `/api/dots/${dot.id}/channels/carrier-pigeon`], - ["POST", `/api/dots/${dot.id}/channels/carrier-pigeon/pairing`], - ["DELETE", `/api/dots/${dot.id}/channels/carrier-pigeon/peers/1`], - ] as const) { - const answer = await raw(method, path, method === "PATCH" ? { enabled: true } : undefined); - expect(answer.status, `${method} ${path}`).toBe(400); - expect(answer.json?.message).toMatch(/the channels are telegram, whatsapp/); - } - // A channel this server has no adapter for yet answers like one that is not linked. - await expect(api.pairChannel(dot.id, "whatsapp")).rejects.toMatchObject({ status: 404 }); - }); -}); diff --git a/apps/api/test/config.test.ts b/apps/api/test/config.test.ts deleted file mode 100644 index 9154ec57..00000000 --- a/apps/api/test/config.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { hostPaths, type HostPaths } from "@invisible-dots/shared"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { - acquireServerLock, - loadOrCreateApiToken, - loadOrGenerateMasterKey, - parseListen, - saveMasterKey, -} from "../src/index.js"; - -let dir: string; -let paths: HostPaths; - -beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), "idots-config-")); - paths = hostPaths({ INVISIBLE_DOTS_HOME: dir }); -}); - -afterEach(async () => { - await rm(dir, { recursive: true, force: true }); -}); - -describe("server settings", () => { - it("parses the listen address", () => { - expect(parseListen()).toEqual({ host: "127.0.0.1", port: 8787 }); - expect(parseListen("0.0.0.0:9000")).toEqual({ host: "0.0.0.0", port: 9000 }); - expect(parseListen("[::1]:8787")).toEqual({ host: "::1", port: 8787 }); - expect(parseListen("8080")).toEqual({ host: "127.0.0.1", port: 8080 }); - expect(() => parseListen("localhost:http")).toThrow(/INVISIBLE_DOTS_LISTEN/); - expect(parseListen("127.0.0.1:0")).toEqual({ host: "127.0.0.1", port: 0 }); - expect(() => parseListen("localhost:http")).toThrow('INVISIBLE_DOTS_LISTEN must look like "127.0.0.1:8787", got "localhost:http"'); - }); - - it("names the setting it was asked for, with its own example, and refuses port 0 only where the setting needs a fixed port", () => { - const web = { variable: "INVISIBLE_DOTS_WEB_LISTEN", example: "127.0.0.1:3000", fixedPort: true }; - expect(parseListen("127.0.0.1:3100", web)).toEqual({ host: "127.0.0.1", port: 3100 }); - expect(() => parseListen("localhost:http", web)).toThrow('INVISIBLE_DOTS_WEB_LISTEN must look like "127.0.0.1:3000", got "localhost:http"'); - expect(() => parseListen("70000", web)).toThrow(/must look like/); - expect(() => parseListen("0", web)).toThrow('INVISIBLE_DOTS_WEB_LISTEN needs a fixed port, got "0"'); - expect(() => parseListen("127.0.0.1:0", web)).toThrow(/needs a fixed port/); - }); - - it("creates the API token once and reads it back; the environment wins; short tokens are refused", async () => { - const created = await loadOrCreateApiToken(paths, {}); - expect(created).toMatchObject({ created: true, origin: paths.apiTokenPath }); - expect(created.value).toMatch(/^[0-9a-f]{64}$/); - expect(await loadOrCreateApiToken(paths, {})).toEqual({ ...created, created: false }); - - expect(await loadOrCreateApiToken(paths, { INVISIBLE_DOTS_TOKEN: "x".repeat(32) })).toMatchObject({ - value: "x".repeat(32), - origin: "INVISIBLE_DOTS_TOKEN", - }); - await expect(loadOrCreateApiToken(paths, { INVISIBLE_DOTS_TOKEN: "short" })).rejects.toThrow(/shorter/); - await writeFile(paths.apiTokenPath, "tiny\r\n"); - await expect(loadOrCreateApiToken(paths, {})).rejects.toThrow(/shorter/); - }); - - it("generates a master key without writing it; saves it on request; accepts raw or hex keys, refuses others", async () => { - const generated = await loadOrGenerateMasterKey(paths); - expect(generated.created).toBe(true); - expect(generated.value.length).toBe(32); - await expect(readFile(paths.masterKeyPath)).rejects.toMatchObject({ code: "ENOENT" }); - - await saveMasterKey(paths, generated.value); - expect(await loadOrGenerateMasterKey(paths)).toEqual({ value: generated.value, origin: paths.masterKeyPath, created: false }); - - await writeFile(paths.masterKeyPath, `${"ab".repeat(32)}\n`); - expect((await loadOrGenerateMasterKey(paths)).value).toEqual(Buffer.from("ab".repeat(32), "hex")); - await writeFile(paths.masterKeyPath, "not a key"); - await expect(loadOrGenerateMasterKey(paths)).rejects.toThrow(/must hold 32 bytes/); - }); -}); - -describe("server lock", () => { - it("is exclusive while held, released on release, and taken over from a dead pid", async () => { - const lock = await acquireServerLock(paths); - expect(JSON.parse(await readFile(paths.serverLockPath, "utf8"))).toMatchObject({ pid: process.pid }); - await expect(acquireServerLock(paths)).rejects.toThrow(/already holds/); - await lock.release(); - await expect(readFile(paths.serverLockPath)).rejects.toMatchObject({ code: "ENOENT" }); - - await writeFile(paths.serverLockPath, "4242\n"); - await expect(acquireServerLock(paths, () => "ours")).rejects.toThrow(/pid 4242.*remove .*server\.lock/); - const taken = await acquireServerLock(paths, () => "gone"); - expect(JSON.parse(await readFile(paths.serverLockPath, "utf8"))).toMatchObject({ pid: process.pid }); - await taken.release(); - }); - - it("release leaves a lock that another server took over in place", async () => { - const lock = await acquireServerLock(paths); - await writeFile(paths.serverLockPath, "4242\n"); - await lock.release(); - expect(await readFile(paths.serverLockPath, "utf8")).toBe("4242\n"); - }); -}); diff --git a/apps/api/test/doctor.test.ts b/apps/api/test/doctor.test.ts deleted file mode 100644 index dba4f037..00000000 --- a/apps/api/test/doctor.test.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** The doctor's image rows: the verdict on an image is kept for as long as the image and its manifest are the same files. */ -import { mkdir, mkdtemp, rm, utimes, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import type { ImageCheck } from "@invisible-dots/image-builder"; -import { hostPaths } from "@invisible-dots/shared"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { createImageChecks } from "../src/index.js"; - -let home: string; - -beforeEach(async () => { - home = await mkdtemp(join(tmpdir(), "idots-doctor-")); -}); - -afterEach(async () => { - await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }); -}); - -/** Both images in the home's images directory, and a `verify` that counts the images it is asked about. */ -async function setup(answer: ImageCheck = { ok: true, manifest: {} as never }) { - const paths = hostPaths({ INVISIBLE_DOTS_HOME: home }); - await mkdir(paths.imagesDir, { recursive: true }); - const golden = join(paths.imagesDir, "golden-1.qcow2"); - const runtime = join(paths.imagesDir, "runtime-1.iso"); - for (const file of [golden, runtime]) await writeFile(file, "image"); - await writeFile(join(paths.imagesDir, "golden-1.json"), "{}"); - await writeFile(join(paths.imagesDir, "runtime-1.json"), "{}"); - const verified: string[] = []; - const checks = createImageChecks(paths, async (image) => { - verified.push(image); - return answer; - }); - return { checks, verified, golden, runtime, paths }; -} - -describe("the image rows", () => { - it("verify each image once while its files stay the same", async () => { - const { checks, verified, golden, runtime } = await setup(); - const first = await checks(); - expect(first.map((row) => [row.id, row.status])).toEqual([["golden-image", "ok"], ["runtime-image", "ok"]]); - expect(await checks()).toEqual(first); - expect(await checks()).toEqual(first); - expect(verified).toEqual([golden, runtime]); - }); - - it("verify again when the image changes, and when its manifest does", async () => { - const { checks, verified, golden, runtime, paths } = await setup(); - await checks(); - await writeFile(golden, "a different image"); - await checks(); - expect(verified).toEqual([golden, runtime, golden]); - const manifest = join(paths.imagesDir, "runtime-1.json"); - await utimes(manifest, new Date(), new Date(Date.now() + 60_000)); - await checks(); - expect(verified).toEqual([golden, runtime, golden, runtime]); - }); - - it("keep a failed verdict too, with the command that fixes it", async () => { - const { checks, verified } = await setup({ ok: false, reason: "it hashes to the wrong digest", fix: "delete it and run invisible-dots image build" }); - const rows = await checks(); - expect(rows[0]).toMatchObject({ id: "golden-image", status: "failed", detail: "it hashes to the wrong digest", fix: "delete it and run invisible-dots image build" }); - await checks(); - expect(verified).toHaveLength(2); - }); - - it("answer missing without hashing anything when there is no image", async () => { - const paths = hostPaths({ INVISIBLE_DOTS_HOME: home }); - await mkdir(paths.imagesDir, { recursive: true }); - const verified: string[] = []; - const rows = await createImageChecks(paths, async (image) => { - verified.push(image); - return { ok: false, reason: "unreachable", fix: "" }; - })(); - expect(rows.map((row) => row.status)).toEqual(["missing", "missing"]); - expect(verified).toEqual([]); - }); -}); diff --git a/apps/api/test/file-types.test.ts b/apps/api/test/file-types.test.ts deleted file mode 100644 index d1cb6eef..00000000 --- a/apps/api/test/file-types.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { serveFile } from "../src/file-types.js"; - -describe("serveFile: what a browser may be told a Dot's file is", () => { - it("serves images as images and text as plain text, inline", () => { - expect(serveFile("/home/dot/a.png")).toMatchObject({ contentType: "image/png" }); - expect(serveFile("/home/dot/a.JPG")).toMatchObject({ contentType: "image/jpeg" }); - expect(serveFile("/home/dot/a.jpeg")).toMatchObject({ contentType: "image/jpeg" }); - expect(serveFile("/home/dot/a.gif")).toMatchObject({ contentType: "image/gif" }); - expect(serveFile("/home/dot/a.webp")).toMatchObject({ contentType: "image/webp" }); - for (const name of ["a.md", "a.txt", "a.json", "a.py", "a.CSV", "a.yaml", "memory/trips/a.log"]) { - expect(serveFile(`/home/dot/${name}`), name).toMatchObject({ contentType: "text/plain; charset=utf-8" }); - expect(serveFile(`/home/dot/${name}`).disposition, name).toMatch(/^inline;/); - } - }); - - it("never serves markup or script as what it is: html, svg, xml and javascript are text", () => { - for (const name of ["a.html", "a.htm", "a.svg", "a.xml", "a.js", "a.mjs"]) { - expect(serveFile(`/home/dot/${name}`).contentType, name).toBe("text/plain; charset=utf-8"); - } - }); - - it("makes everything else a download", () => { - for (const name of ["a.bin", "a.pdf", "a.zip", "Makefile", ".bashrc", "a.", "archive.tar.gz", "a.png.exe"]) { - const served = serveFile(`/home/dot/${name}`); - expect(served.contentType, name).toBe("application/octet-stream"); - expect(served.disposition, name).toMatch(/^attachment;/); - } - }); - - it("names the file in both forms, with nothing in the plain one that could end the header value", () => { - expect(serveFile("/home/dot/memory/fares.md").disposition).toBe(`inline; filename="fares.md"; filename*=UTF-8''fares.md`); - expect(serveFile('/home/dot/é "q"\\100%.txt').disposition).toBe( - `inline; filename="_ _q__100_.txt"; filename*=UTF-8''%C3%A9%20%22q%22%5C100%25.txt`, - ); - expect(serveFile("/home/dot/a\r\nx-evil: 1.txt").disposition).not.toMatch(/[\r\n]/); - }); -}); diff --git a/apps/api/test/guest-http.ts b/apps/api/test/guest-http.ts deleted file mode 100644 index bec85977..00000000 --- a/apps/api/test/guest-http.ts +++ /dev/null @@ -1,156 +0,0 @@ -/** - * dot-agentd's HTTP surface (architecture sections 5.1 to 5.3) in front of - * the scheduler's FakeGuest, so the real GuestClient of vm-manager talks to - * it over real TCP exactly as it talks to a guest through QEMU's port - * forward. Only the routes the control plane calls are served, including - * the unauthenticated proof route, computed the guest's way. - */ -import { createHmac } from "node:crypto"; -import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http"; -import type { AddressInfo, Socket } from "node:net"; -import type { FakeGuest } from "@invisible-dots/scheduler/testing"; -import { GUEST_PROOF_CONTEXT, type SecretsRequest } from "@invisible-dots/shared"; - -export interface FakeGuestServer { - port: number; - close(): Promise; -} - -async function readJson(request: IncomingMessage): Promise { - const chunks: Buffer[] = []; - for await (const chunk of request) chunks.push(chunk as Buffer); - const text = Buffer.concat(chunks).toString("utf8"); - return text ? JSON.parse(text) : undefined; -} - -function send(response: ServerResponse, status: number, body?: unknown): void { - if (body === undefined) { - response.writeHead(status).end(); - return; - } - response.writeHead(status, { "content-type": "application/json" }).end(JSON.stringify(body)); -} - -const IDENTITIES = "/v1/agent/browser-identities"; - -/** - * Serve `guest()` (looked up per request: a test may swap the guest) on - * `port` of 127.0.0.1 (0 picks one). Every request is appended to - * `requests` as "METHOD /path". `onPowerOff` is what the guest's poweroff - * ends in: the test's QEMU exits. - */ -export async function serveFakeGuest( - guest: () => FakeGuest | undefined, - options: { port?: number; requests?: string[]; onPowerOff?: () => void } = {}, -): Promise { - const requests = options.requests ?? []; - const sockets = new Set(); - const server: Server = createServer(async (request, response) => { - const url = new URL(request.url ?? "/", "http://guest"); - requests.push(`${request.method} ${url.pathname}`); - const current = guest(); - // A powered-off VM: QEMU's forward accepts and drops, which the client sees as a reset. - if (!current?.running) { - request.socket.destroy(); - return; - } - if (request.method === "GET" && url.pathname === "/v1/proof") { - const nonce = url.searchParams.get("nonce") ?? ""; - return send(response, 200, { proof: createHmac("sha256", current.token).update(`${GUEST_PROOF_CONTEXT}${nonce}`).digest("hex") }); - } - if (request.headers.authorization !== `Bearer ${current.token}`) { - send(response, 401, { error: "unauthorized", message: "bad token" }); - return; - } - try { - const route = `${request.method} ${url.pathname}`; - if (url.pathname.startsWith(`${IDENTITIES}/`)) { - const [rawId, action] = url.pathname.slice(IDENTITIES.length + 1).split("/"); - const id = decodeURIComponent(rawId!); - if (action === "frame" && request.method === "GET") { - response.writeHead(200, { "content-type": "image/jpeg" }).end(Buffer.from(await current.getBrowserIdentityFrame(id))); - return; - } - if (action === "close" && request.method === "POST") { - await current.closeBrowserIdentity(id); - return send(response, 204); - } - if (action === undefined && request.method === "GET") return send(response, 200, await current.getBrowserIdentity(id)); - if (action === undefined && request.method === "DELETE") { - await current.deleteBrowserIdentity(id); - return send(response, 204); - } - } - switch (route) { - case "GET /v1/health": - return send(response, 200, await current.health()); - case "GET /v1/system": - return send(response, 200, await current.system()); - case "POST /v1/system/poweroff": - send(response, 202, { status: "powering_off" }); - options.onPowerOff?.(); - return; - case "GET /v1/screenshot": - response.writeHead(200, { "content-type": "image/png" }).end(Buffer.from(await current.screenshot())); - return; - case "POST /v1/agent/secrets": - await current.pushSecrets((await readJson(request)) as SecretsRequest); - return send(response, 204); - case "PUT /v1/agent/config": - await current.putConfig((await readJson(request)) as never); - return send(response, 204); - case "POST /v1/agent/events": - return send(response, 202, await current.postEvent((await readJson(request)) as never)); - case "GET /v1/agent/state": - return send(response, 200, await current.state()); - case "POST /v1/agent/prepare-sleep": - await current.prepareSleep(); - return send(response, 204); - case `GET ${IDENTITIES}`: - return send(response, 200, await current.listBrowserIdentities()); - case `POST ${IDENTITIES}`: - return send(response, 201, await current.createBrowserIdentity((await readJson(request)) as never)); - case "GET /v1/agent/events/stream": { - const controller = new AbortController(); - request.on("close", () => controller.abort()); - response.writeHead(200, { "content-type": "text/event-stream" }); - response.write(": open\n\n"); - try { - for await (const event of current.events({ after: Number(url.searchParams.get("after") ?? 0), signal: controller.signal })) { - response.write(`id: ${event.seq}\ndata: ${JSON.stringify(event)}\n\n`); - } - } catch { - // A disconnect inside the fake ends the stream; the client reconnects. - } - response.end(); - return; - } - default: - return send(response, 404, { error: "not_found", message: route }); - } - } catch (error) { - const status = (error as { status?: number }).status; - if (!status) { - request.socket.destroy(); - return; - } - send(response, status, { error: (error as { code?: string }).code ?? "error", message: (error as Error).message }); - } - }); - server.on("connection", (socket) => { - sockets.add(socket); - socket.on("close", () => sockets.delete(socket)); - }); - await new Promise((resolve, reject) => { - server.once("error", reject); - server.listen(options.port ?? 0, "127.0.0.1", () => resolve()); - }); - return { - port: (server.address() as AddressInfo).port, - close: () => - new Promise((resolve) => { - for (const socket of sockets) socket.destroy(); - server.close(() => resolve()); - }), - }; -} diff --git a/apps/api/test/host-facts.ts b/apps/api/test/host-facts.ts deleted file mode 100644 index a757ed5a..00000000 --- a/apps/api/test/host-facts.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { HostFacts } from "@invisible-dots/sdk/types"; - -/** Where a fake host keeps its state, as `GET /api/health` is to say it. */ -export const hostFacts = (kind: HostFacts["database_kind"] = "pglite"): HostFacts => ({ - database_kind: kind, - data_dir: "/srv/dots-home", - logs_dir: "/srv/dots-home/logs", -}); diff --git a/apps/api/test/start.test.ts b/apps/api/test/start.test.ts deleted file mode 100644 index 307d07c1..00000000 --- a/apps/api/test/start.test.ts +++ /dev/null @@ -1,303 +0,0 @@ -/** - * The control plane started the way `invisible-dots server` starts it, on a - * real INVISIBLE_DOTS_HOME with the embedded PGlite; only the VM layer is a - * fake. Each test gets an empty home in the system's temp directory. - */ -import { EventEmitter } from "node:events"; -import { existsSync } from "node:fs"; -import { mkdir, mkdtemp, readdir, readFile, rm, stat, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { FakeChannelType } from "@invisible-dots/channels/testing"; -import { FakeDriver, waitFor } from "@invisible-dots/scheduler/testing"; -import { InvisibleDotsClient } from "@invisible-dots/sdk"; -import { newId, parseDotConfig, permissionBitsEnforced } from "@invisible-dots/shared"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { healthyDoctor } from "../../vm-manager/test/doctor-fakes.js"; -import { startServer, STOP_SIGNALS, untilStopSignal, type RunningServer, type StartServerOptions } from "../src/index.js"; - -const quiet = { debug() {}, info() {}, warn() {}, error() {} }; - -let home: string; -const running: RunningServer[] = []; - -beforeEach(async () => { - home = await mkdtemp(join(tmpdir(), "idots-home-")); -}); - -afterEach(async () => { - await Promise.all(running.splice(0).map((s) => s.close())); - await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }); -}); - -/** An environment with nothing but the home: no DATABASE_URL, so PGlite; no token variable. */ -function envFor(dir: string, extra: Record = {}): Record { - return { INVISIBLE_DOTS_HOME: dir, ...extra }; -} - -async function start(options: StartServerOptions = {}): Promise { - const server = await startServer({ - env: envFor(home), - listen: "127.0.0.1:0", - logger: quiet, - driver: new FakeDriver(), - scheduler: { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000 }, - ...options, - }); - running.push(server); - return server; -} - -describe("stopping on a signal", { timeout: 120_000 }, () => { - it("closes the database and releases the lock on every way a terminal or a service stops it", async () => { - // Closing the console window (SIGHUP, also on Windows) and Ctrl+Break (SIGBREAK) included. - expect([...STOP_SIGNALS]).toEqual(["SIGINT", "SIGTERM", "SIGHUP", "SIGBREAK"]); - for (const signal of STOP_SIGNALS) { - const server = await startServer({ - env: envFor(home), - listen: "127.0.0.1:0", - logger: quiet, - driver: new FakeDriver(), - scheduler: { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000 }, - }); - const signals = new EventEmitter(); - const done = untilStopSignal(() => server.close(), quiet, signals); - expect(existsSync(join(home, "server.lock"))).toBe(true); - signals.emit(signal, signal); - await done; - expect(existsSync(join(home, "server.lock")), signal).toBe(false); - expect(signals.eventNames()).toEqual([]); - } - }); -}); - -describe("stopping while a page is open", { timeout: 120_000 }, () => { - it("ends the live streams a browser holds and closes: a stop does not wait for the person to close the tab", async () => { - const server = await start(); - const controller = new AbortController(); - const headers = { authorization: `Bearer ${server.token}` }; - const stream = await fetch(`${server.url}/api/stream`, { headers, signal: controller.signal }); - expect(stream.status).toBe(200); - const reading = stream.body!.getReader().read(); - - const closed = server.close().then(() => "closed" as const); - const outcome = await Promise.race([closed, new Promise<"waiting">((resolve) => setTimeout(() => resolve("waiting"), 15_000))]); - controller.abort(); - expect(outcome).toBe("closed"); - // The stream the client held ended: its read answers (the end of the body) and does not hang. - await expect(Promise.race([reading.then(() => "ended"), new Promise((resolve) => setTimeout(() => resolve("hung"), 2_000))])).resolves.toBe("ended"); - running.splice(running.indexOf(server), 1); - }); -}); - -async function stopped(server: RunningServer): Promise { - running.splice(running.indexOf(server), 1); - await server.close(); -} - -// A first PGlite start runs initdb on disk, which takes seconds on a slow machine. -describe("startServer on an empty INVISIBLE_DOTS_HOME", { timeout: 120_000 }, () => { - it("creates api.token and master.key, opens PGlite in db/, and serves the API with that token", async () => { - const server = await start(); - expect(server.database).toBe("pglite"); - expect(server.created).toEqual({ apiToken: true, masterKey: true }); - - const tokenFile = await readFile(join(home, "config", "api.token"), "utf8"); - expect(tokenFile).toBe(`${server.token}\n`); - expect(server.token).toMatch(/^[0-9a-f]{64}$/); - const key = await readFile(join(home, "config", "master.key")); - expect(key.length).toBe(32); - expect((await readdir(join(home, "db"))).length).toBeGreaterThan(0); - if (permissionBitsEnforced()) { - expect((await stat(join(home, "config", "api.token"))).mode & 0o777).toBe(0o600); - expect((await stat(join(home, "config", "master.key"))).mode & 0o777).toBe(0o600); - expect((await stat(join(home, "config"))).mode & 0o777).toBe(0o700); - } - - const api = new InvisibleDotsClient({ baseUrl: server.url, token: server.token }); - expect(await api.health()).toMatchObject({ - status: "ok", - database: "ok", - openrouter_configured: false, - database_kind: "pglite", - data_dir: home, - logs_dir: join(home, "logs"), - }); - await api.setOpenRouterKey("sk-or-first"); - expect(await api.health()).toMatchObject({ openrouter_configured: true }); - const refused = await fetch(`${server.url}/api/health`, { headers: { authorization: "Bearer wrong-token-0123456789" } }); - expect(refused.status).toBe(401); - - await stopped(server); - await expect(stat(server.paths.serverLockPath)).rejects.toMatchObject({ code: "ENOENT" }); - }); - - it("serves the host report: the machine's rows, this home's images, and the OpenRouter row from its own Scheduler", async () => { - // The machine (QEMU, the accelerator, the disk) is faked; the images, the home and the key are this server's own. - const { findQemu, run, accelerator, acceleratorAccess, freeSpace } = healthyDoctor().deps; - const server = await start({ doctor: { findQemu, run, accelerator, acceleratorAccess, freeSpace } }); - const api = new InvisibleDotsClient({ baseUrl: server.url, token: server.token }); - - const before = await api.doctor(); - expect(before.checks.map((c) => c.id)).toEqual(["node", "qemu", "qemu-img", "accelerator", "accelerator-probe", "disk", "golden-image", "runtime-image", "openrouter"]); - expect(before.ok).toBe(false); - const row = (id: string) => before.checks.find((c) => c.id === id); - expect(row("qemu")?.status).toBe("ok"); - expect(row("golden-image")).toMatchObject({ status: "missing", detail: `none in ${server.paths.imagesDir}`, fix: "invisible-dots image build" }); - expect(row("runtime-image")?.status).toBe("missing"); - expect(row("openrouter")).toMatchObject({ status: "missing", detail: "no key stored", fix: "invisible-dots secret openrouter" }); - - await api.setOpenRouterKey("sk-or-first"); - expect((await api.doctor()).checks.find((c) => c.id === "openrouter")).toEqual({ id: "openrouter", label: "OpenRouter key", status: "ok", detail: "stored" }); - }); - - it("runs one host report at a time: requests that arrive while it runs share its answer", async () => { - // The accelerator probe is the slow row; the onboarding checklist asks again and again. - const base = healthyDoctor().deps; - let probes = 0; - let release: () => void = () => {}; - const gate = new Promise((resolve) => { - release = resolve; - }); - const acceleratorAccess = async () => { - probes += 1; - await gate; - return base.acceleratorAccess(); - }; - const server = await start({ doctor: { ...base, acceleratorAccess } }); - const api = new InvisibleDotsClient({ baseUrl: server.url, token: server.token }); - let arrived = 0; - server.app.server.on("request", (request: { url?: string }) => { - if (request.url === "/api/doctor") arrived += 1; - }); - - const together = Promise.all([api.doctor(), api.doctor(), api.doctor()]); - await waitFor(() => probes === 1 && arrived === 3, "all three requests at the server while the probe is held"); - // A request's hooks and handler run on promises once it has arrived: one turn of the event loop has them joined. - await new Promise((resolve) => setImmediate(resolve)); - release(); - const [first, second, third] = await together; - expect(probes).toBe(1); - expect(second).toEqual(first); - expect(third).toEqual(first); - - // Once it has answered, the next request runs it again. - await api.doctor(); - expect(probes).toBe(2); - }); - - it("a restart keeps the token, the key and the data", async () => { - const first = await start(); - await first.db.secrets.put("global", "openrouter_api_key", "sk-or-kept"); - const token = first.token; - await stopped(first); - - const second = await start(); - expect(second.created).toEqual({ apiToken: false, masterKey: false }); - expect(second.token).toBe(token); - expect(await second.db.secrets.openRouterKey("dot_none")).toBe("sk-or-kept"); - }); - - it("starts the channels stored in the database with the server and stops them when it closes", async () => { - const first = await start({ channelTypes: [new FakeChannelType()] }); - const dotId = newId("dot"); - await first.db.dots.insert({ - id: dotId, - config: parseDotConfig("name: channeled\nmodel:\n provider: openrouter\n id: test/model\n"), - status: "IDLE", - }); - await first.channels.add(dotId, "telegram"); - await stopped(first); - - const type = new FakeChannelType(); - const second = await start({ channelTypes: [type] }); - const channel = await waitFor(() => type.channels.at(-1)?.sink && type.channels.at(-1), "the stored channel to run"); - expect(await second.channels.list(dotId)).toHaveLength(1); - await stopped(second); - expect(channel.sink).toBeNull(); - }); - - it("refuses a second server on the same home while the first runs", async () => { - const first = await start(); - // In one process the second start is caught by the lock's own record of what it holds. - await expect(start()).rejects.toThrow(/already holds the invisible-dots server lock/); - const api = new InvisibleDotsClient({ baseUrl: first.url, token: first.token }); - expect(await api.health()).toMatchObject({ status: "ok" }); - }); - - it("takes over the lock of a server that died", async () => { - await writeFile(join(home, "server.lock"), "999999999\n"); - const server = await start(); - expect(JSON.parse(await readFile(server.paths.serverLockPath, "utf8"))).toMatchObject({ pid: process.pid }); - }); - - it("refuses to start when master.key is gone but the database holds encrypted values, and writes no new key", async () => { - const first = await start(); - await first.db.secrets.put("global", "openrouter_api_key", "sk-or-locked"); - await stopped(first); - await rm(join(home, "config", "master.key")); - - await expect(start()).rejects.toThrow(/master\.key/); - await expect(stat(join(home, "config", "master.key"))).rejects.toMatchObject({ code: "ENOENT" }); - // The failed start released everything it took: a later start can take the lock. - await expect(stat(join(home, "server.lock"))).rejects.toMatchObject({ code: "ENOENT" }); - }); - - it("INVISIBLE_DOTS_TOKEN replaces the token file and none is written", async () => { - const token = "env-token-0123456789abcdef"; - const server = await start({ env: envFor(home, { INVISIBLE_DOTS_TOKEN: token }) }); - expect(server.token).toBe(token); - expect(server.created.apiToken).toBe(false); - await expect(stat(join(home, "config", "api.token"))).rejects.toMatchObject({ code: "ENOENT" }); - }); - - it("a failed start releases the lock and the database", async () => { - await expect(start({ listen: "not-an-address:http" })).rejects.toThrow(/INVISIBLE_DOTS_LISTEN/); - await expect(start({ env: envFor(home, { INVISIBLE_DOTS_TOKEN: "short" }) })).rejects.toThrow(/shorter/); - await expect(stat(join(home, "server.lock"))).rejects.toMatchObject({ code: "ENOENT" }); - const server = await start(); - expect(server.database).toBe("pglite"); - }); - - it("with INVISIBLE_DOTS_WHATSAPP=1 and no WhatsApp client installed, starts anyway and says in the log how to install it", async () => { - const warnings: string[] = []; - const logger = { ...quiet, warn: (message: string) => void warnings.push(message) }; - const server = await start({ env: envFor(home, { INVISIBLE_DOTS_WHATSAPP: "1" }), logger, whatsappClientDir: join(home, "no-client") }); - expect(warnings.filter((m) => m.includes("WhatsApp client is not installed"))).toHaveLength(1); - expect(warnings.join("\n")).toContain("npm run whatsapp:install"); - expect(server.channels.kinds).toEqual(["telegram", "whatsapp"]); - const api = new InvisibleDotsClient({ baseUrl: server.url, token: server.token }); - expect(await api.health()).toMatchObject({ status: "ok" }); - }); - - it("with INVISIBLE_DOTS_WHATSAPP=1 and a client that is not the pinned release, starts anyway and says in the log which releases differ", async () => { - const client = join(home, "client"); - await mkdir(join(client, "node_modules", "baileys"), { recursive: true }); - await writeFile(join(client, "package.json"), JSON.stringify({ dependencies: { baileys: "1.2.4" } })); - await writeFile(join(client, "node_modules", "baileys", "package.json"), JSON.stringify({ name: "baileys", version: "1.2.3", main: "index.js" })); - await writeFile(join(client, "node_modules", "baileys", "index.js"), ""); - const warnings: string[] = []; - const logger = { ...quiet, warn: (message: string) => void warnings.push(message) }; - const server = await start({ env: envFor(home, { INVISIBLE_DOTS_WHATSAPP: "1" }), logger, whatsappClientDir: client }); - const line = warnings.filter((m) => m.includes("WhatsApp")); - expect(line).toHaveLength(1); - expect(line[0]).toContain("1.2.3"); - expect(line[0]).toContain("1.2.4"); - expect(line[0]).toContain("npm run whatsapp:install"); - expect(server.channels.kinds).toEqual(["telegram", "whatsapp"]); - }); - - it("says nothing of the WhatsApp client when WhatsApp is not asked for, or when the client is there", async () => { - const client = join(home, "client"); - await mkdir(join(client, "node_modules", "baileys"), { recursive: true }); - await writeFile(join(client, "package.json"), JSON.stringify({ dependencies: { baileys: "1.2.3" } })); - await writeFile(join(client, "node_modules", "baileys", "package.json"), JSON.stringify({ name: "baileys", version: "1.2.3", main: "index.js" })); - await writeFile(join(client, "node_modules", "baileys", "index.js"), ""); - const warnings: string[] = []; - const logger = { ...quiet, warn: (message: string) => void warnings.push(message) }; - const first = await start({ logger, whatsappClientDir: join(home, "no-client") }); - await stopped(first); - await start({ env: envFor(home, { INVISIBLE_DOTS_WHATSAPP: "1" }), logger, whatsappClientDir: client }); - expect(warnings.filter((m) => m.includes("WhatsApp"))).toEqual([]); - }); -}); diff --git a/apps/api/test/vm-driver.test.ts b/apps/api/test/vm-driver.test.ts deleted file mode 100644 index 7532acb7..00000000 --- a/apps/api/test/vm-driver.test.ts +++ /dev/null @@ -1,272 +0,0 @@ -/** - * VmManagerDriver over the real VmManager. QEMU is vm-manager's own fake at - * the process boundary (it parses the real argv); qemu-img is a fake runner; - * the guest is a FakeGuest behind real HTTP on the port VmManager picked and - * passed to the "QEMU", listening only while that QEMU runs, as QEMU's - * forward does; its poweroff stops the QEMU. The last test runs the whole - * Scheduler on top of it. - */ -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { createTestDatabase, type TestDatabase } from "@invisible-dots/database/testing"; -import { Scheduler } from "@invisible-dots/scheduler"; -import { FAKE_MAX_IDENTITIES, FakeGuest, waitFor } from "@invisible-dots/scheduler/testing"; -import { computerResources, hostPaths, type HostPaths, parseDotConfig, prefixedStderrLogger, silentLogger } from "@invisible-dots/shared"; -import { VmManager } from "@invisible-dots/vm-manager"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { FakeQemuHost, FakeRunner, type FakeVm } from "../../vm-manager/test/fakes.js"; -import { compareVersions, latestImage, VmManagerDriver } from "../src/index.js"; -import { serveFakeGuest, type FakeGuestServer } from "./guest-http.js"; - -const DOT = "dot_01k6h3w2ze8m4qv7r1xk9bntc5"; -const QEMU = { system: "/opt/qemu/bin/qemu-system-x86_64", img: "/opt/qemu/bin/qemu-img" }; -const TOKEN = "dot-token-0123456789"; - -/** - * The fake QEMU host whose forward is a fake guest server on the guest port - * of the argv, up from the spawn until the process ends: the guest boots and - * powers off together with its VM, with the token of its seed. - */ -class GuestQemuHost extends FakeQemuHost { - /** Guest requests of every VM, as "METHOD /path", in order. */ - readonly requests: string[] = []; - readonly #servers = new Map(); - - constructor( - private readonly guest: () => FakeGuest | undefined, - private readonly replaceGuest: (guest: FakeGuest) => void, - ) { - super(); - } - - protected override async openForward(vm: FakeVm): Promise { - if (this.guest()?.token !== vm.token) this.replaceGuest(new FakeGuest(vm.token)); - this.guest()?.boot(); - const server = await serveFakeGuest(() => this.guest(), { - port: vm.guestPort, - requests: this.requests, - onPowerOff: () => setTimeout(() => this.terminate(vm), 5), - }); - this.#servers.set(vm.pid, server); - } - - protected override closeForward(vm: FakeVm): void { - this.guest()?.powerOff(); - void this.#servers.get(vm.pid)?.close(); - this.#servers.delete(vm.pid); - } - - async closeAll(): Promise { - await Promise.all([...this.#servers.values()].map((s) => s.close())); - this.#servers.clear(); - } -} - -let root: string; -let paths: HostPaths; -let diskSize: number; -let runner: FakeRunner; -let guest: FakeGuest | undefined; -let host: GuestQemuHost; - -function manager(): VmManager { - return new VmManager({ - paths, - logger: silentLogger, - qemu: QEMU, - accelerator: "kvm", - runner, - processes: host, - pollIntervalMs: 1, - startSettleMs: 1, - shutdownTimeoutMs: 200, - killTimeoutMs: 100, - startTimeoutMs: 1_000, - }); -} - -function input(dotId = DOT, disk = "40gb") { - const config = parseDotConfig({ name: "drv", model: { provider: "openrouter", id: "m" }, computer: { disk } }); - return { dotId, token: TOKEN, resources: computerResources(config) }; -} - -beforeEach(async () => { - root = await mkdtemp(join(tmpdir(), "idots-drv-")); - paths = hostPaths({ INVISIBLE_DOTS_HOME: root }); - await mkdir(paths.imagesDir, { recursive: true }); - for (const name of ["golden-2026.9.0.qcow2", "golden-2026.10.0.qcow2", "runtime-1.2.iso", "runtime-1.10.iso", "noise.txt"]) { - await writeFile(join(paths.imagesDir, name), name); - } - diskSize = 0; - runner = new FakeRunner(async (_command, args) => { - if (args[0] === "create") { - diskSize = Number(args.at(-1)); - await writeFile(args.at(-2)!, "qcow2"); - } - if (args[0] === "info") return { stdout: JSON.stringify({ "virtual-size": diskSize, format: "qcow2" }), stderr: "" }; - if (args[0] === "resize") diskSize = Number(args.at(-1)); - return undefined; - }); - guest = new FakeGuest(TOKEN); - host = new GuestQemuHost( - () => guest, - (next) => { - guest = next; - }, - ); -}); - -afterEach(async () => { - guest?.powerOff(); - await host.closeAll(); - await rm(root, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 }); -}); - -describe("image selection", () => { - it("compares versions numerically", () => { - expect(compareVersions("2026.10.1", "2026.9.3")).toBeGreaterThan(0); - expect(compareVersions("1.2", "1.10")).toBeLessThan(0); - }); - - it("picks the newest golden image and runtime ISO, and names the command that builds one", async () => { - const driver = new VmManagerDriver(manager()); - expect(await driver.latestGolden()).toBe(join(paths.imagesDir, "golden-2026.10.0.qcow2")); - expect(await driver.latestRuntime()).toBe(join(paths.imagesDir, "runtime-1.10.iso")); - await expect(latestImage(join(root, "missing"), "golden")).rejects.toThrow(/cannot list/); - await rm(join(paths.imagesDir, "runtime-1.2.iso")); - await rm(join(paths.imagesDir, "runtime-1.10.iso")); - await expect(driver.latestRuntime()).rejects.toThrow(/no runtime ISO .*invisible-dots image build/); - }); -}); - -describe("VmManagerDriver over VmManager", () => { - it("create, start, health, stop, start again on a grown disk, reboot to a new process, destroy", async () => { - const driver = new VmManagerDriver(manager()); - expect(await driver.state(DOT)).toEqual({ exists: false, state: "STOPPED", pid: null, guestPort: null, detail: null }); - - const created = await driver.create(input()); - expect(created).toEqual({ - goldenImage: join(paths.imagesDir, "golden-2026.10.0.qcow2"), - runtimeImage: join(paths.imagesDir, "runtime-1.10.iso"), - }); - const started = await driver.start({ ...input(), goldenImage: created.goldenImage }); - expect(started).toMatchObject({ alreadyRunning: false, runtimeImage: created.runtimeImage }); - expect(await driver.state(DOT)).toMatchObject({ exists: true, state: "RUNNING", pid: started.pid, guestPort: started.guestPort }); - const argv = host.spawned.at(-1)!.args; - // The newest runtime ISO is the one attached. - expect(argv.some((arg) => arg.includes("runtime-1.10.iso"))).toBe(true); - - const endpoint = { dotId: DOT, port: started.guestPort }; - const health = await driver.waitForHealth(endpoint, TOKEN, { timeoutMs: 2_000, intervalMs: 5, requestTimeoutMs: 1_000 }); - expect(health).toMatchObject({ agentd: "ok", agent: { status: "ok" } }); - await driver.guest(endpoint, TOKEN).pushSecrets({ openrouter_api_key: "sk-or-x", mcp_secrets: { time: { TOKEN: "t-1" } } }); - expect(guest?.mcpSecrets).toEqual({ time: { TOKEN: "t-1" } }); - expect(guest?.openrouterKey).toBe("sk-or-x"); - // Another token cannot check the guest's proof, so it is never sent; waiting does not help. - await expect(driver.guest(endpoint, "wrong-token-0000").health()).rejects.toMatchObject({ code: "guest_unproven" }); - await expect(driver.waitForHealth(endpoint, "wrong-token-0000", { timeoutMs: 2_000, intervalMs: 5, requestTimeoutMs: 1_000 })).rejects.toMatchObject({ - code: "guest_unproven", - }); - - // Identities through the real client, with the agent's own rules: a bad request and the limit come back as the guest's 4xx. - const client = driver.guest(endpoint, TOKEN); - const identity = await client.createBrowserIdentity({ name: "Shop" }); - expect((await client.listBrowserIdentities()).identities.map((i) => i.id)).toEqual([identity.id]); - expect((await client.getBrowserIdentity(identity.id)).name).toBe("Shop"); - await expect(client.createBrowserIdentity({ name: "proxied", proxy: 8080 as never })).rejects.toMatchObject({ status: 400, code: "invalid" }); - const more = []; - for (let n = 1; n < FAKE_MAX_IDENTITIES; n++) more.push(await client.createBrowserIdentity({ name: `extra-${n}` })); - await expect(client.createBrowserIdentity({ name: "one-too-many" })).rejects.toMatchObject({ status: 409, code: "limit" }); - for (const made of [identity, ...more]) await client.deleteBrowserIdentity(made.id); - - expect(await driver.stop(DOT, TOKEN)).toEqual({ forced: false }); - expect(host.requests).toContain("POST /v1/system/poweroff"); - // Like QEMU's forward, the guest port is gone with the process. - await expect(driver.guest(endpoint, TOKEN).health()).rejects.toMatchObject({ code: "ECONNREFUSED" }); - expect(await driver.state(DOT)).toMatchObject({ exists: true, state: "STOPPED", pid: null, guestPort: null }); - - // A PATCH made computer.disk bigger: the next start grows the overlay first. - await driver.start({ ...input(DOT, "60gb"), goldenImage: created.goldenImage }); - expect(runner.lines().some((line) => line.includes(" resize ") && line.endsWith(String(60 * 1024 ** 3)))).toBe(true); - - const before = (await driver.state(DOT)).pid; - const rebooted = await driver.reboot({ ...input(DOT, "60gb"), goldenImage: created.goldenImage }); - expect(rebooted.pid).not.toBe(before); - expect(rebooted.alreadyRunning).toBe(false); - - await driver.destroy(DOT); - expect(await driver.state(DOT)).toMatchObject({ exists: false, state: "STOPPED" }); - }); - - it("waitForHealth fails at once when QEMU is gone instead of waiting out the timeout", async () => { - const driver = new VmManagerDriver(manager()); - const created = await driver.create(input()); - const started = await driver.start({ ...input(), goldenImage: created.goldenImage }); - guest!.bootPolls = Number.MAX_SAFE_INTEGER; - const waiting = driver.waitForHealth({ dotId: DOT, port: started.guestPort }, TOKEN, { timeoutMs: 60_000, intervalMs: 5, requestTimeoutMs: 1_000 }); - host.terminate([...host.vms.values()][0]!); - await expect(waiting).rejects.toThrow(/not running any more/); - }); -}); - -describe("Scheduler over VmManagerDriver", () => { - let t: TestDatabase; - - beforeEach(async () => { - t = await createTestDatabase("pglite"); - await t.db.secrets.put("global", "openrouter_api_key", "sk-or-real-path"); - }); - - afterEach(async () => { - await t.drop(); - }); - - function scheduler(): Scheduler { - return new Scheduler({ - db: t.db, - driver: new VmManagerDriver(manager()), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 5_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0 }, - dispatchIntervalMs: 60_000, - idleCheckIntervalMs: 60_000, - ...(process.env.IDOTS_TEST_DEBUG ? { logger: prefixedStderrLogger("scheduler", true) } : {}), - }); - } - - it("create -> READY -> task over HTTP -> sleep -> restart of the control plane -> wake", { timeout: 30_000 }, async () => { - let s = scheduler(); - const yaml = "name: real-path\nmodel:\n provider: openrouter\n id: m\n"; - const dot = await s.createDot(yaml); - await waitFor(async () => (await t.db.dots.get(dot.id))?.status === "READY", "READY", 10_000); - const computer = await t.db.computers.get(dot.id); - expect(computer).toMatchObject({ state: "RUNNING", vm_name: `invisible-dot-${dot.id}` }); - expect(computer?.guest_port).toBe((await new VmManagerDriver(manager()).state(dot.id)).guestPort); - expect(computer?.pid).toEqual(expect.any(Number)); - expect(guest?.openrouterKey).toBe("sk-or-real-path"); - expect(guest?.config?.name).toBe("real-path"); - - const task = await s.createTask(dot.id, { description: "over http" }); - await waitFor(async () => (await t.db.tasks.get(task.id))?.status === "COMPLETED", "task COMPLETED over HTTP", 10_000); - - // A control plane restart: QEMU keeps running and the new process adopts it from its pid file. - await s.close(); - const spawnedBefore = host.spawned.length; - s = scheduler(); - await s.start(); - await waitFor(() => s.lifecycle.isReady(dot.id), "READY after restart", 10_000); - expect(host.spawned.length).toBe(spawnedBefore); - - await s.lifecycle.stop(dot.id, "idle"); - expect(host.requests).toContain("POST /v1/agent/prepare-sleep"); - expect(host.requests).toContain("POST /v1/system/poweroff"); - expect(await t.db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", guest_port: null, pid: null }); - expect([...host.vms.values()]).toHaveLength(0); - expect(host.killed).toEqual([]); - - const wake = await s.createTask(dot.id, { description: "after sleep" }); - await waitFor(async () => (await t.db.tasks.get(wake.id))?.status === "COMPLETED", "task after wake", 10_000); - expect(host.spawned.length).toBe(spawnedBefore + 1); - await s.close(); - }); -}); diff --git a/apps/api/test/whatsapp.test.ts b/apps/api/test/whatsapp.test.ts deleted file mode 100644 index d56c3fa6..00000000 --- a/apps/api/test/whatsapp.test.ts +++ /dev/null @@ -1,209 +0,0 @@ -/** - * The WhatsApp routes of the control-plane API: starting a link, the stream of codes to scan, and what a server - * that does not run WhatsApp (the default: it is opt-in) says. The channel is the real one on a fake connection. - */ -import type { AddressInfo } from "node:net"; -import { ChannelHub, WhatsAppChannelType } from "@invisible-dots/channels"; -import { FakeChannelType, FakeWhatsAppConnector } from "@invisible-dots/channels/testing"; -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, testAdapters, type TestDatabase } from "@invisible-dots/database/testing"; -import { Scheduler } from "@invisible-dots/scheduler"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "@invisible-dots/scheduler/testing"; -import { InvisibleDotsClient } from "@invisible-dots/sdk"; -import type { ChannelLinkFrame } from "@invisible-dots/shared"; -import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; -import { buildServer, defaultChannelTypes, type FastifyInstance } from "../src/index.js"; -import { hostFacts } from "./host-facts.js"; - -const API_TOKEN = "test-token-0123456789abcdef"; -const NUMBER = "15550001111"; -const yaml = (name: string) => `name: ${name}\nmodel:\n provider: openrouter\n id: test/model\n`; - -describe.each(testAdapters())("WhatsApp routes of the control-plane API (%s)", { timeout: 60_000 }, (kind) => { - let t: TestDatabase; - let db: Database; - let app: FastifyInstance; - let plain: FastifyInstance; - let scheduler: Scheduler; - let hub: ChannelHub; - let plainHub: ChannelHub; - let driver: FakeDriver; - let connector: FakeWhatsAppConnector; - let base: string; - let plainBase: string; - let api: InvisibleDotsClient; - let seq = 0; - - beforeAll(async () => { - t = await createTestDatabase(kind); - db = t.db; - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - driver = new FakeDriver(); - scheduler = new Scheduler({ - db, - driver, - clock: new ManualClock(), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10 }, - dispatcher: { retryDelayMs: 0 }, - }); - connector = new FakeWhatsAppConnector(); - hub = new ChannelHub({ - db, - host: scheduler, - types: [new FakeChannelType(), new WhatsAppChannelType({ connector: () => connector, pauseMs: () => 0 })], - backoff: { initialMs: 1, maxMs: 5, jitter: 0 }, - }); - app = buildServer({ scheduler, channels: hub, doctor: async () => [], host: hostFacts(), token: API_TOKEN, heartbeatMs: 50 }); - // The server as it is when WhatsApp was not asked for: Telegram only. It never starts a binding. - plainHub = new ChannelHub({ db, host: scheduler, types: [new FakeChannelType()] }); - plain = buildServer({ scheduler, channels: plainHub, doctor: async () => [], host: hostFacts(), token: API_TOKEN }); - await scheduler.start(); - await hub.start(); - await app.listen({ host: "127.0.0.1", port: 0 }); - await plain.listen({ host: "127.0.0.1", port: 0 }); - base = `http://127.0.0.1:${(app.server.address() as AddressInfo).port}`; - plainBase = `http://127.0.0.1:${(plain.server.address() as AddressInfo).port}`; - api = new InvisibleDotsClient({ baseUrl: base, token: API_TOKEN }); - }, 60_000); - - afterEach(async () => { - for (const dot of await api.listDots()) { - for (const channel of await api.channels(dot.id)) await api.removeChannel(dot.id, channel.kind); - } - connector.connections.length = 0; - }); - - afterAll(async () => { - await app?.close(); - await plain?.close(); - await hub?.close(); - await scheduler?.close(); - await t?.drop(); - }); - - async function readyDot() { - const name = `wa-${++seq}`; - const dot = await api.createDot(yaml(name)); - await waitUntilSettledReady(scheduler, driver, dot.id, name); - return dot; - } - - async function raw(origin: string, method: string, path: string) { - const response = await fetch(`${origin}${path}`, { method, headers: { authorization: `Bearer ${API_TOKEN}` } }); - const text = await response.text(); - return { status: response.status, text, json: text ? (JSON.parse(text) as Record) : null }; - } - - async function linkedDot() { - const dot = await readyDot(); - await api.linkWhatsApp(dot.id); - await waitFor(() => connector.connections.length === 1, "the connection"); - connector.current.open(NUMBER); - await waitFor(async () => (await api.channels(dot.id))[0]?.status === "connected", "connected"); - return dot; - } - - it("needs the API token like every route", async () => { - const dot = await readyDot(); - for (const [method, path] of [ - ["POST", `/api/dots/${dot.id}/channels/whatsapp/link`], - ["GET", `/api/dots/${dot.id}/channels/whatsapp/qr`], - ] as const) { - expect((await fetch(`${base}${path}`, { method })).status, `${method} ${path}`).toBe(401); - } - }); - - it("lists the kinds this server runs next to the Dot's channels", async () => { - const dot = await readyDot(); - expect(await api.channelsOverview(dot.id)).toEqual({ channels: [], available: ["telegram", "whatsapp"] }); - const plainAnswer = await raw(plainBase, "GET", `/api/dots/${dot.id}/channels`); - expect(plainAnswer.json).toEqual({ channels: [], available: ["telegram"] }); - }); - - it("is off unless the server was started with it, and says how to turn it on", async () => { - const dot = await readyDot(); - const link = await raw(plainBase, "POST", `/api/dots/${dot.id}/channels/whatsapp/link`); - expect(link.status).toBe(400); - expect(link.json).toMatchObject({ error: "invalid_request", message: expect.stringContaining("INVISIBLE_DOTS_WHATSAPP=1") }); - expect((await raw(plainBase, "GET", `/api/dots/${dot.id}/channels/whatsapp/qr`)).status).toBe(400); - }); - - it("starts a link with 202 and the record of a channel that waits, and streams the codes and the end", async () => { - const dot = await readyDot(); - const started = await raw(base, "POST", `/api/dots/${dot.id}/channels/whatsapp/link`); - expect(started.status).toBe(202); - expect(started.json).toMatchObject({ kind: "whatsapp", enabled: true, status: "connecting", account: null, peers: [] }); - - const frames: ChannelLinkFrame[] = []; - const controller = new AbortController(); - const reading = (async () => { - for await (const frame of api.whatsappLink(dot.id, { signal: controller.signal })) frames.push(frame); - })(); - await waitFor(() => connector.connections.length === 1, "the connection"); - await waitFor(() => frames.length === 1, "the first frame"); - connector.current.showCode("2@first"); - await waitFor(() => frames.length === 2, "the first code"); - connector.current.showCode("2@second"); - connector.current.open(NUMBER); - await reading; - expect(frames).toEqual([{ state: "waiting" }, { state: "code", code: "2@first" }, { state: "code", code: "2@second" }, { state: "linked", account: NUMBER }]); - expect(await api.channels(dot.id)).toMatchObject([{ kind: "whatsapp", status: "connected", account: NUMBER }]); - }); - - it("answers the stream as an uncached event stream with a heartbeat, and never writes a code anywhere else", async () => { - const dot = await readyDot(); - await api.linkWhatsApp(dot.id); - await waitFor(() => connector.connections.length === 1, "the connection"); - connector.current.showCode("2@SECRET-CODE-TO-SCAN"); - const controller = new AbortController(); - const response = await fetch(`${base}/api/dots/${dot.id}/channels/whatsapp/qr`, { headers: { authorization: `Bearer ${API_TOKEN}` }, signal: controller.signal }); - expect(response.status).toBe(200); - expect(response.headers.get("content-type")).toMatch(/^text\/event-stream/); - expect(response.headers.get("cache-control")).toBe("no-store"); - const reader = response.body!.pipeThrough(new TextDecoderStream()).getReader(); - let text = ""; - while (!text.includes(": ping")) text += (await reader.read()).value ?? ""; - expect(text).toContain(": connected"); - expect(text).toContain(`data: ${JSON.stringify({ state: "code", code: "2@SECRET-CODE-TO-SCAN" })}`); - controller.abort(); - await reader.cancel().catch(() => {}); - expect(JSON.stringify(await api.channels(dot.id))).not.toContain("SECRET-CODE-TO-SCAN"); - expect(JSON.stringify(await api.events(dot.id))).not.toContain("SECRET-CODE-TO-SCAN"); - }); - - it("is a 404 before anything is linked, as JSON and not as a stream", async () => { - const dot = await readyDot(); - const qr = await raw(base, "GET", `/api/dots/${dot.id}/channels/whatsapp/qr`); - expect(qr.status).toBe(404); - expect(qr.json).toMatchObject({ error: "not_found" }); - expect((await raw(base, "GET", `/api/dots/nothing-here/channels/whatsapp/qr`)).status).toBe(404); - expect((await raw(base, "POST", `/api/dots/nothing-here/channels/whatsapp/link`)).status).toBe(404); - }); - - it("refuses to link a channel that is linked", async () => { - const dot = await linkedDot(); - const again = await raw(base, "POST", `/api/dots/${dot.id}/channels/whatsapp/link`); - expect(again.status).toBe(409); - expect(again.json).toMatchObject({ error: "already_linked" }); - const frames: ChannelLinkFrame[] = []; - for await (const frame of api.whatsappLink(dot.id)) frames.push(frame); - expect(frames).toEqual([{ state: "linked", account: NUMBER }]); - }); - - it("pairs with a link and the words to send, and removes the channel with everything it kept", async () => { - const dot = await linkedDot(); - await db.secrets.put(dot.id, "whatsapp_creds", "identity"); - const pairing = await api.pairChannel(dot.id, "whatsapp"); - expect(pairing.deep_link).toBe(`https://wa.me/${NUMBER}?text=pair%20${pairing.code}`); - expect(pairing.message).toBe(`pair ${pairing.code}`); - await api.removeChannel(dot.id, "whatsapp"); - expect(await api.channels(dot.id)).toEqual([]); - expect(await db.secrets.get(dot.id, "whatsapp_creds")).toBeNull(); - }); - - it("runs WhatsApp only when INVISIBLE_DOTS_WHATSAPP=1, and Telegram always", () => { - expect(defaultChannelTypes({}).map((type) => type.kind)).toEqual(["telegram"]); - expect(defaultChannelTypes({ INVISIBLE_DOTS_WHATSAPP: "0" }).map((type) => type.kind)).toEqual(["telegram"]); - expect(defaultChannelTypes({ INVISIBLE_DOTS_WHATSAPP: "1" }).map((type) => type.kind)).toEqual(["telegram", "whatsapp"]); - }); -}); diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json deleted file mode 100644 index 31a061f4..00000000 --- a/apps/api/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] -} diff --git a/apps/cli/package.json b/apps/cli/package.json deleted file mode 100644 index ad1c22b8..00000000 --- a/apps/cli/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@invisible-dots/cli", - "version": "0.0.0", - "private": true, - "description": "The invisible-dots command: setup, doctor, image build, server, and the API client commands.", - "license": "MIT", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "typecheck": "tsc -p tsconfig.json", - "build": "node scripts/build.mjs", - "dev": "tsx src/main.ts" - }, - "dependencies": { - "@invisible-dots/api": "0.0.0", - "@invisible-dots/image-builder": "0.0.0", - "@invisible-dots/sdk": "0.0.0", - "@invisible-dots/shared": "0.0.0", - "@invisible-dots/vm-manager": "0.0.0", - "qrcode": "1.5.4" - }, - "bin": { - "invisible-dots": "dist/invisible-dots.mjs" - }, - "devDependencies": { - "@types/qrcode": "1.5.6" - } -} diff --git a/apps/cli/scripts/build.mjs b/apps/cli/scripts/build.mjs deleted file mode 100644 index 901c9a7f..00000000 --- a/apps/cli/scripts/build.mjs +++ /dev/null @@ -1,25 +0,0 @@ -// Bundles the invisible-dots command into one ESM file that plain node runs -// (the workspace packages are TypeScript sources). `invisible-dots server` -// is in the same bundle, so the database's run-time files go next to it. -// The pinned Windows QEMU installer (virtualization/qemu/windows.json) is -// imported as JSON and so is inside the bundle. -import { mkdirSync, rmSync } from "node:fs"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { build } from "esbuild"; -import { copyDatabaseRuntimeFiles } from "../../../packages/database/scripts/runtime-files.mjs"; -import { BUNDLE_OPTIONS } from "./bundle-options.mjs"; - -const root = dirname(dirname(fileURLToPath(import.meta.url))); -const dist = join(root, "dist"); -rmSync(dist, { recursive: true, force: true }); -mkdirSync(dist, { recursive: true }); - -await build({ - ...BUNDLE_OPTIONS, - entryPoints: [join(root, "src", "main.ts")], - outfile: join(dist, "invisible-dots.mjs"), - logLevel: "info", -}); - -copyDatabaseRuntimeFiles(dist); diff --git a/apps/cli/scripts/bundle-options.d.mts b/apps/cli/scripts/bundle-options.d.mts deleted file mode 100644 index 4fbb3d13..00000000 --- a/apps/cli/scripts/bundle-options.d.mts +++ /dev/null @@ -1,4 +0,0 @@ -import type { BuildOptions } from "esbuild"; - -/** The esbuild options of the invisible-dots bundle (bundle-options.mjs). */ -export declare const BUNDLE_OPTIONS: BuildOptions; diff --git a/apps/cli/scripts/bundle-options.mjs b/apps/cli/scripts/bundle-options.mjs deleted file mode 100644 index 5b85646e..00000000 --- a/apps/cli/scripts/bundle-options.mjs +++ /dev/null @@ -1,22 +0,0 @@ -// The esbuild options of the invisible-dots bundle, shared by scripts/build.mjs and tests/repo/cli-bundle.test.ts, -// which bundles a real Telegram call with them: what breaks only once bundled is caught there, not by a person. -export const BUNDLE_OPTIONS = { - bundle: true, - platform: "node", - format: "esm", - target: "node24", - sourcemap: true, - // Classes and functions keep their names. esbuild renames one whose name another module also uses (AbortSignal - // became AbortSignal2), and node-fetch, under grammY, recognizes a signal by its constructor's name: renamed, every - // Telegram call failed as "Network request for 'getMe' failed!", in the bundle only. - keepNames: true, - // pg loads its optional native binding with require(); it is never installed here. - // The opt-in WhatsApp client (Baileys, which depends on libsignal, GPL-3.0) is not in the bundle either: the adapter - // loads it at run time from optional/whatsapp/ by path (packages/channels/src/whatsapp-baileys/client.ts), so no - // import of it is in the bundle's graph, and a bundle that held it would be a GPL work. - external: ["pg-native"], - banner: { - // CommonJS dependencies inside an ESM bundle still call require(). - js: "#!/usr/bin/env node\nimport { createRequire as __createRequire } from 'node:module';\nconst require = __createRequire(import.meta.url);", - }, -}; diff --git a/apps/cli/src/api-client.ts b/apps/cli/src/api-client.ts deleted file mode 100644 index cf01bbbd..00000000 --- a/apps/cli/src/api-client.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** How the CLI reaches the API: its URL and its token, from the environment or INVISIBLE_DOTS_HOME. */ -import { InvisibleDotsClient } from "@invisible-dots/sdk"; -import { ApiTokenError, DEFAULT_LISTEN, ENV, hostPaths, readApiToken } from "@invisible-dots/shared"; - -export const DEFAULT_URL = `http://${DEFAULT_LISTEN}`; - -/** No usable token: the person has to start the server once or set the variable. */ -export class AuthSetupError extends Error {} - -export function apiUrl(env: Record): string { - return env[ENV.URL]?.trim() || DEFAULT_URL; -} - -/** The token as the server reads it (shared readApiToken): INVISIBLE_DOTS_TOKEN, else the first line of api.token. */ -export async function resolveToken(env: Record): Promise { - let token; - try { - token = await readApiToken(env); - } catch (error) { - if (error instanceof ApiTokenError) throw new AuthSetupError(`no usable API token: ${error.message}`); - throw error; - } - if (!token) { - const path = hostPaths(env).apiTokenPath; - throw new AuthSetupError(`no API token: ${path} does not exist yet; start the server once (invisible-dots server) or set ${ENV.TOKEN}`); - } - return token.value; -} - -export async function connectApi(env: Record, fetchImpl?: typeof fetch): Promise { - return new InvisibleDotsClient({ baseUrl: apiUrl(env), token: await resolveToken(env), fetch: fetchImpl }); -} diff --git a/apps/cli/src/cli.ts b/apps/cli/src/cli.ts deleted file mode 100644 index 7b657cde..00000000 --- a/apps/cli/src/cli.ts +++ /dev/null @@ -1,755 +0,0 @@ -/** - * The `invisible-dots` command line. `run` takes its arguments and its world - * (output streams, stdin, environment, fetch, the host commands) as - * parameters, so the tests drive it in-process against a fake server and - * fake host commands. - * - * Two kinds of command live here: the host commands of architecture - * section 11 (setup, doctor, image build, server), which act on this - * machine, and the API client commands, which talk to a running server. - */ -import { readFile, writeFile } from "node:fs/promises"; -import { resolve } from "node:path"; -import { parseArgs } from "node:util"; -import QRCode from "qrcode"; -import { ApiError, readRecentEvents, type ApprovalRecord, type DotSummary, type InvisibleDotsClient, type TaskRecord } from "@invisible-dots/sdk"; -import { - accountLabel, - CHANNEL_KINDS, - COMPUTER_STOPPED, - DEFAULT_WEB_LISTEN, - ENV, - MAX_EVENT_PAGE, - permissionPhrase, - toolLabel, - type ChannelKind, - type ChannelRecord, - type ComputerAnswer, - type McpSecretsAnswer, - type StoredEvent, - type ToolListAnswer, -} from "@invisible-dots/shared"; -import { STORE_OPENROUTER_KEY } from "@invisible-dots/vm-manager"; -import cliPackage from "../package.json" with { type: "json" }; -import { apiUrl, AuthSetupError, connectApi, DEFAULT_URL } from "./api-client.js"; -import { addTelegramChannel } from "./commands.js"; -import { EXIT } from "./exit.js"; - -export { DEFAULT_URL } from "./api-client.js"; -export { EXIT } from "./exit.js"; - -/** The version of this package, which the bundle carries inside it (esbuild inlines the JSON). */ -export const CLI_VERSION: string = cliPackage.version; - -/** How many tasks `status` shows: the newest, which is all it asks the server for. */ -const STATUS_TASKS = 10; - -/** - * The commands that act on this host. The real ones (host.ts) load QEMU - * discovery, the image builder and the whole control plane, so they are - * imported only when one of them runs; tests pass fakes. - */ -/** `image build`: whether the golden image may be downloaded instead of built, and whether it is written compressed. */ -export interface ImageBuildOptions { - download: boolean; - compress: boolean; -} - -export interface HostCommands { - doctor(options: { json: boolean }, io: CliIo): Promise; - setup(io: CliIo): Promise; - /** `setup --all`: setup, the builds and `image build` in one run that can be run again (setup/all.ts). */ - setupAll(io: CliIo): Promise; - imageBuild(io: CliIo, options?: ImageBuildOptions): Promise; - server(io: CliIo, options: { web: boolean }): Promise; -} - -export interface CliIo { - stdout: (text: string) => void; - stderr: (text: string) => void; - /** All of standard input, as text: for input that is piped in. */ - readStdin: () => Promise; - /** - * One line of a secret typed in the terminal, with the echo off, so it stays out of the scrollback. Enter ends it - * on every host; the end-of-input key differs (Ctrl-D on Linux, Ctrl-Z then Enter on Windows), so nothing a person - * types depends on it. It rejects when the person cancels (Ctrl-C). - */ - readSecret: () => Promise; - stdinIsTTY: boolean; - env: Record; - cwd: string; - fetch?: typeof fetch; - /** Aborted on Ctrl-C, to end `logs` and stop `image build`. */ - signal?: AbortSignal; - /** Default: the real host commands. */ - host?: HostCommands; -} - -class UsageError extends Error {} - -export const USAGE = `invisible-dots - control your Dots - -Getting this host ready (the same commands on Linux and Windows): - invisible-dots setup --all everything in one run, in order: the guest daemon, QEMU and its accelerator, the web client, the images; - run it again after a restart or a failure and it carries on - invisible-dots setup just QEMU and its accelerator (may ask for administrator rights once) - invisible-dots doctor [--json] check everything; one line per check and the command that fixes a failure - invisible-dots image build [--no-download] [--compress] - the runtime ISO, and the golden image: downloaded when one is published for - these inputs, built here otherwise (--no-download: always build; --compress: - a compressed qcow2, as the published one is) - invisible-dots server [--no-web] run the control plane and the web client in the foreground (--no-web: the control plane only) - -Using the server: - invisible-dots init [file] [--force] write a sample Dot config (default dot.yaml), check the server - invisible-dots create create a Dot from a YAML config - invisible-dots update replace the Dot's config with a YAML config; refused if it was changed since this command read it - invisible-dots delete --yes delete the Dot: its computer, its disk with everything on it, and its channels (cannot be undone) - invisible-dots list list Dots - invisible-dots status show a Dot, its computer and its recent tasks - invisible-dots message send a chat message - invisible-dots task [--priority N] [--at ISO-8601] - queue a task - invisible-dots tasks list a Dot's tasks - invisible-dots cancel cancel a task that has not finished - invisible-dots computer start|stop|reboot - invisible-dots browser identities list the Dot's browser identities - invisible-dots mcp list the MCP servers the Dot's config declares: where each is on its computer, and which secrets are set - invisible-dots approvals [--all] list pending approvals (--all: every approval, the newest first) - invisible-dots approve [--note text] [--always] - --always also allows that permission for the Dot from now on - invisible-dots reject [--note text] - invisible-dots secret openrouter [--dot ] - store the OpenRouter key: asked for in a terminal, read from stdin when piped (never from arguments) - invisible-dots secret proxy --dot [--clear] - set the Dot's VM proxy (socks5://user:pass@host:port), used from its next start; asked for like the key; --clear removes it - invisible-dots secret mcp --dot [--clear] - set a secret an MCP server of the Dot names (an environment variable or a header, e.g. "Bearer "); asked for like the key; --clear removes it - invisible-dots channel add telegram --dot - link the Dot to a Telegram bot: the token from @BotFather is asked for in a terminal, read from stdin when piped (never from arguments) - invisible-dots channel link whatsapp --dot - link a WhatsApp number (opt-in on the server, unofficial, a ban of the account is possible): shows a code to scan in WhatsApp > Linked devices - invisible-dots channel list [--dot ] list channels (of every Dot without --dot) with their status and paired people - invisible-dots channel pair telegram|whatsapp --dot - print a one-time link (valid 10 minutes) that pairs your Telegram or WhatsApp account to the Dot - invisible-dots channel remove telegram|whatsapp --dot - unlink: the token (or the linked device's keys) and the paired people are deleted - invisible-dots logs [--tail N] [--no-follow] - print recent events, then follow new ones - - is a Dot name or id. Add --json for machine-readable output. invisible-dots --version prints the version. - -Environment: - ${ENV.HOME} the data directory (default ~/.invisible-dots) - ${ENV.WEB_LISTEN} where the web client listens, host:port (default ${DEFAULT_WEB_LISTEN}) - ${ENV.QEMU_DIR} the one directory QEMU is looked for in, when set (otherwise the official installer's directory, then PATH) - ${ENV.URL} server URL (default ${DEFAULT_URL}) - ${ENV.TOKEN} API token (default: the first line of <${ENV.HOME}>/config/api.token) - -Exit codes: 0 ok; 1 the server reported an error, a doctor check is not ok or a setup step failed; -2 usage error; 3 server unreachable; 4 missing or refused token; 5 restart the computer, then run doctor (or setup --all again). -`; - -export const SAMPLE_DOT = `# A Dot configuration (docs/architecture.md, section 7). -name: my-first-dot # lowercase letters, digits and '-', up to 40 -instructions: > - Be concise. Write findings to files in ~/workspace. -model: - provider: openrouter - id: z-ai/glm-5.3-flash # any OpenRouter model id -computer: - cpu: 2 - memory: 4gb - disk: 40gb - idle_timeout: 15m # sleep after 15 minutes with nothing to do; 0 = never -permissions: - computer.exec: allow - browser.identity.delete: ask -limits: - max_steps_per_task: 60 - max_cost_per_task_usd: 1.00 -`; - -const OPTIONS = { - json: { type: "boolean" }, - force: { type: "boolean" }, - priority: { type: "string" }, - at: { type: "string" }, - note: { type: "string" }, - always: { type: "boolean" }, - dot: { type: "string" }, - tail: { type: "string" }, - "no-follow": { type: "boolean" }, - "no-web": { type: "boolean" }, - "no-download": { type: "boolean" }, - compress: { type: "boolean" }, - all: { type: "boolean" }, - clear: { type: "boolean" }, - yes: { type: "boolean" }, - help: { type: "boolean", short: "h" }, - version: { type: "boolean", short: "v" }, -} as const; - -/** - * Whether Ctrl-C asks the command to stop (through `io.signal`) instead of ending the process at once: `logs` ends - * cleanly, and `image build`, alone or as the last step of `setup --all`, kills its builder VM first. `server` installs - * its own handlers. - */ -export function interruptIsAsked(argv: string[]): boolean { - try { - const { positionals, values } = parseArgs({ args: argv, options: OPTIONS, allowPositionals: true, strict: false }); - return positionals[0] === "logs" || positionals[0] === "image" || (positionals[0] === "setup" && values.all === true); - } catch { - return false; - } -} - -/** The command word of an argument list, so main.ts can decide what Ctrl-C does before `run` starts. */ -export function commandOf(argv: string[]): string | undefined { - try { - return parseArgs({ args: argv, options: OPTIONS, allowPositionals: true, strict: false }).positionals[0]; - } catch { - return undefined; - } -} - -function noArguments(args: string[], command: string): void { - if (args.length > 0) throw new UsageError(`${command} takes no arguments, got "${args.join(" ")}"`); -} - -function need(args: string[], index: number, what: string): string { - const value = args[index]; - if (value === undefined || value === "") throw new UsageError(`missing ${what}`); - return value; -} - -function pad(rows: string[][]): string { - const widths: number[] = []; - for (const row of rows) row.forEach((cell, i) => (widths[i] = Math.max(widths[i] ?? 0, cell.length))); - return rows.map((row) => row.map((cell, i) => (i === row.length - 1 ? cell : cell.padEnd(widths[i]!))).join(" ")).join("\n") + "\n"; -} - -function oneLine(text: string, max = 60): string { - const flat = text.replace(/\s+/g, " ").trim(); - return flat.length > max ? `${flat.slice(0, max - 3)}...` : flat; -} - -/** What `status` says about the Dot's automations: when the next one is due, or that the person's stop has paused them (when one was due: a Dot with none has nothing to pause). */ -function nextAutomation(computer: ComputerAnswer): string { - if (computer.stop_reason === "user" && computer.next_automation_at !== null) return "paused: the computer was stopped by you (start it to resume)"; - return computer.next_automation_at ?? "none due"; -} - -export function formatEvent(event: StoredEvent): string { - const { guest_event_id: _id, guest_ts: _ts, ...data } = event.data; - const detail = Object.keys(data).length > 0 ? ` ${JSON.stringify(data)}` : ""; - return `${event.created_at} #${event.id} ${event.type}${detail}`; -} - -function taskRows(tasks: TaskRecord[]): string { - if (tasks.length === 0) return "no tasks\n"; - return pad([ - ["ID", "STATUS", "PRIORITY", "CREATED", "DESCRIPTION"], - ...tasks.map((t) => [t.id, t.status, String(t.priority), t.created_at, oneLine(t.description)]), - ]); -} - -function dotRows(dots: DotSummary[]): string { - if (dots.length === 0) return "no Dots yet: create one with invisible-dots create \n"; - return pad([ - ["NAME", "STATUS", "COMPUTER", "MODEL", "ID"], - ...dots.map((d) => [d.name, d.status, d.computer_state ?? "-", d.config.model.id, d.id]), - ]); -} - -/** How a person is told to finish a pairing on each channel: Telegram's link opens the bot with a Start button, WhatsApp's opens a chat with the words ready to send. */ -const PAIRING_WORDS: Record = { - telegram: { action: "press Start", to: "the bot" }, - whatsapp: { action: "press Send", to: "the number" }, -}; - -function channelRows(rows: { dot: string; channel: ChannelRecord }[]): string { - if (rows.length === 0) return "no channels: link one with invisible-dots channel add telegram --dot \n"; - return pad([ - ["DOT", "CHANNEL", "STATUS", "ACCOUNT", "PEOPLE", "NOTE"], - ...rows.map(({ dot, channel: c }) => [ - dot, - c.kind, - c.enabled ? c.status : "paused", - accountLabel(c.kind, c.account) ?? "-", - c.peers.length === 0 ? "-" : c.peers.map((p) => p.label).join(", "), - c.status_detail ? oneLine(c.status_detail, 80) : "", - ]), - ]); -} - -/** The approvals in the words of the web client's approval card: the Dot by its name, what it wants to do, the permission with its risk. */ -function approvalRows(approvals: ApprovalRecord[], dotNames: ReadonlyMap): string { - return pad([ - ["ID", "STATUS", "DOT", "WANTS TO", "PERMISSION", "REASON"], - // A Dot that was deleted has no name any more: its id is what is left of it. - ...approvals.map((a) => [a.id, a.status, dotNames.get(a.dot_id) ?? a.dot_id, toolLabel(a.tool).ask, permissionPhrase(a.permission), oneLine(a.reason)]), - ]); -} - -/** A Dot config read from a YAML file named on the command line. */ -async function readConfigFile(io: CliIo, path: string): Promise { - const file = resolve(io.cwd, path); - try { - return await readFile(file, "utf8"); - } catch (error) { - throw new UsageError(`cannot read ${file}: ${(error as NodeJS.ErrnoException).code ?? (error as Error).message}`); - } -} - -/** The newest `count` events of the Dot's log, oldest first: read from the end, a page at a time, never from its start. */ -async function newestEvents(client: InvisibleDotsClient, dotId: string, count: number): Promise { - const found: StoredEvent[] = []; - let before: number | undefined; - while (found.length < count) { - const want = Math.min(count - found.length, MAX_EVENT_PAGE); - const page = await readRecentEvents(client, dotId, { count: want, before }); - found.unshift(...page); - if (page.length < want) break; - before = page[0]!.id; - } - return found; -} - -/** One line of a secret, from the terminal (echo off) or from stdin: never from the arguments, which end up in shell history and ps. */ -async function secretFromInput(io: CliIo, what: { prompt: string; noun: string; command: string; spaces?: true }): Promise { - if (io.stdinIsTTY) io.stderr(`paste the ${what.prompt}, then press Enter:\n`); - const value = (io.stdinIsTTY ? await io.readSecret() : await io.readStdin()).trim(); - if (!value) throw new UsageError(`no ${what.noun} given; run "${what.command}" in a terminal and paste it, or pipe it in`); - // A header's value may be "Bearer "; a key or a proxy never has a space, and a line break is never part of one. - if (what.spaces ? /[\r\n]/.test(value) : /\s/.test(value)) { - throw new UsageError(`the ${what.noun} on stdin contains ${what.spaces ? "a line break" : "whitespace"}; pass only the ${what.noun}`); - } - return value; -} - -function mcpRows(tools: ToolListAnswer | null, secrets: McpSecretsAnswer): string { - const servers = new Set([...(tools?.mcp_servers ?? []).map((server) => server.name), ...secrets.secrets.map((secret) => secret.server)]); - if (servers.size === 0 && tools !== null) return "no MCP servers\n"; - const state = (name: string) => { - if (tools === null) return "computer stopped"; - const server = tools.mcp_servers.find((s) => s.name === name); - if (server === undefined) return "-"; - return server.state === "connected" ? `connected, ${server.tools} tools` : server.state === "failed" ? `failed: ${oneLine(server.error ?? "", 80)}` : server.state; - }; - const secretsOf = (name: string) => - secrets.secrets.filter((secret) => secret.server === name).map((secret) => `${secret.name}${secret.set ? "" : " (not set)"}`).join(", ") || "-"; - return pad([["SERVER", "STATE", "SECRETS"], ...[...servers].map((name) => [name, state(name), secretsOf(name)])]); -} - -function channelKind(value: string): ChannelKind { - if (!(CHANNEL_KINDS as readonly string[]).includes(value)) throw new UsageError(`unknown channel "${value}": use ${CHANNEL_KINDS.join(" or ")}`); - return value as ChannelKind; -} - -export async function run(argv: string[], io: CliIo): Promise { - let parsed; - try { - parsed = parseArgs({ args: argv, options: OPTIONS, allowPositionals: true, strict: true }); - } catch (error) { - io.stderr(`invisible-dots: ${(error as Error).message}\nRun "invisible-dots --help" for usage.\n`); - return EXIT.usage; - } - const { values, positionals } = parsed; - if (values.version) { - io.stdout(`${CLI_VERSION}\n`); - return EXIT.ok; - } - const [command, ...args] = positionals; - if (values.help || !command || command === "help") { - io.stdout(USAGE); - return command || values.help ? EXIT.ok : EXIT.usage; - } - - const baseUrl = apiUrl(io.env); - const out = (value: unknown, text: string) => io.stdout(values.json ? `${JSON.stringify(value, null, 2)}\n` : text); - let client: InvisibleDotsClient | undefined; - const api = async () => (client ??= await connectApi(io.env, io.fetch)); - const host = async (): Promise => io.host ?? (await import("./host.js")).realHostCommands(); - - try { - switch (command) { - case "setup": - noArguments(args, "setup"); - return values.all === true ? await (await host()).setupAll(io) : await (await host()).setup(io); - case "doctor": - noArguments(args, "doctor"); - return await (await host()).doctor({ json: values.json === true }, io); - case "image": { - const what = need(args, 0, "build"); - if (what !== "build") throw new UsageError(`unknown image subcommand "${what}": use build`); - noArguments(args.slice(1), "image build"); - return await (await host()).imageBuild(io, { download: values["no-download"] !== true, compress: values.compress === true }); - } - case "server": - noArguments(args, "server"); - return await (await host()).server(io, { web: values["no-web"] !== true }); - case "init": { - const file = resolve(io.cwd, args[0] ?? "dot.yaml"); - try { - await writeFile(file, SAMPLE_DOT, { flag: values.force ? "w" : "wx" }); - } catch (error) { - if ((error as NodeJS.ErrnoException).code === "EEXIST") { - io.stderr(`invisible-dots: ${file} already exists; use --force to overwrite it\n`); - return EXIT.failed; - } - throw error; - } - io.stdout(`wrote ${file}\n`); - const health = await (await api()).health(); - io.stdout(`server ${baseUrl} is reachable (version ${health.version}, database ${health.database})\n`); - io.stdout(`edit the file, then: invisible-dots create ${args[0] ?? "dot.yaml"}\n`); - return EXIT.ok; - } - case "create": { - const yaml = await readConfigFile(io, need(args, 0, "")); - const dot = await (await api()).createDot(yaml); - out(dot, `created Dot ${dot.name} (${dot.id}); its computer is being provisioned.\nfollow it with: invisible-dots logs ${dot.name}\n`); - return EXIT.ok; - } - case "update": { - const name = need(args, 0, ""); - const yaml = await readConfigFile(io, need(args, 1, "")); - if (args.length > 2) throw new UsageError("update takes a Dot and one YAML file"); - const c = await api(); - // The version read here makes the save conditional: a config changed meanwhile (in the web client, by an - // "always allow") is a 409 and nothing is saved, instead of being overwritten unseen. - const current = await c.getDot(name); - const dot = await c.updateDot(current.id, yaml, current.config_version); - out(dot, `updated Dot ${dot.name} (config version ${dot.config_version})\n`); - return EXIT.ok; - } - case "delete": { - const name = need(args, 0, ""); - noArguments(args.slice(1), "delete "); - if (values.yes !== true) { - throw new UsageError( - `delete destroys Dot ${name}'s computer and its disk, with every file, memory note and browser identity on them, and its channels; it cannot be undone. To do it: invisible-dots delete ${name} --yes`, - ); - } - const c = await api(); - const dot = await c.getDot(name); - const answer = await c.deleteDot(dot.id); - out(answer, `deleting Dot ${dot.name}; what it did stays in its log: invisible-dots logs ${dot.id}\n`); - return EXIT.ok; - } - case "list": { - const dots = await (await api()).listDots(); - out(dots, dotRows(dots)); - return EXIT.ok; - } - case "status": { - const name = need(args, 0, ""); - const c = await api(); - const [dot, computer, tasks] = await Promise.all([c.getDot(name), c.computer(name), c.listTasks(name, { limit: STATUS_TASKS })]); - const text = - pad([ - ["name", dot.name], - ["id", dot.id], - ["status", dot.status + (dot.error ? ` (${dot.error})` : "")], - ["model", dot.config.model.id], - ["computer", `${computer.state}${computer.ready ? ", ready" : ""}${computer.last_error ? ` (last error: ${computer.last_error})` : ""}`], - ["resources", `${dot.config.computer.cpu} cpu, ${dot.config.computer.memory} memory, ${dot.config.computer.disk} disk, idle_timeout ${dot.config.computer.idle_timeout}`], - ["last active", computer.last_active_at ?? "never"], - ["next automation", nextAutomation(computer)], - ]) + - "\n" + - taskRows(tasks); - out({ dot, computer, tasks }, text); - return EXIT.ok; - } - case "message": { - const name = need(args, 0, ""); - const text = args.slice(1).join(" "); - if (!text.trim()) throw new UsageError("missing "); - const answer = await (await api()).sendMessage(name, text); - out( - answer, - answer.delivery === "delivered" - ? `message delivered (${answer.message_id})\n` - : `message queued (${answer.message_id}): the Dot's computer is starting and gets it once READY\n`, - ); - return EXIT.ok; - } - case "task": { - const name = need(args, 0, ""); - const description = args.slice(1).join(" "); - if (!description.trim()) throw new UsageError("missing "); - let priority: number | undefined; - if (values.priority !== undefined) { - priority = Number(values.priority); - if (!Number.isInteger(priority)) throw new UsageError("--priority must be an integer"); - } - if (values.at !== undefined && Number.isNaN(new Date(values.at).getTime())) { - throw new UsageError("--at must be an ISO 8601 time, e.g. 2026-10-03T08:00:00Z"); - } - const task = await (await api()).createTask(name, { - description, - ...(priority !== undefined ? { priority } : {}), - ...(values.at !== undefined ? { scheduled_at: new Date(values.at).toISOString() } : {}), - }); - out(task, `queued task ${task.id}\n`); - return EXIT.ok; - } - case "tasks": { - const tasks = await (await api()).listTasks(need(args, 0, "")); - out(tasks, taskRows(tasks)); - return EXIT.ok; - } - case "cancel": { - const id = need(args, 0, ""); - noArguments(args.slice(1), "cancel "); - const task = await (await api()).cancelTask(id); - out(task, `task ${task.id} ${task.status}\n`); - return EXIT.ok; - } - case "computer": { - const name = need(args, 0, ""); - const action = need(args, 1, "start|stop|reboot"); - const c = await api(); - if (action === "start") await c.startComputer(name); - else if (action === "stop") await c.stopComputer(name); - else if (action === "reboot") await c.rebootComputer(name); - else throw new UsageError(`unknown computer action "${action}": use start, stop or reboot`); - const note = action === "stop" ? `automations are paused while the computer is stopped; resume them with: invisible-dots computer ${name} start\n` : ""; - out({ accepted: true }, `${action} requested; follow it with: invisible-dots logs ${name}\n${note}`); - return EXIT.ok; - } - case "browser": { - const name = need(args, 0, ""); - const what = need(args, 1, "identities"); - if (what !== "identities") throw new UsageError(`unknown browser subcommand "${what}": use identities`); - const identities = await (await api()).listIdentities(name); - out( - identities, - identities.length === 0 - ? "no browser identities\n" - : pad([ - ["ID", "NAME", "STATUS", "LAST USED", "PROXY"], - ...identities.map((i) => [i.id, i.name, i.status, i.lastUsedAt ?? "never", i.hasProxy ? "yes" : "-"]), - ]), - ); - return EXIT.ok; - } - case "approvals": { - const c = await api(); - // With --all the newest come first, as in the web client's history, so the cap of the list drops the oldest and - // never the newest; the pending ones come oldest first, the one that has waited longest on top. - const [approvals, dots] = await Promise.all([values.all ? c.listApprovals(undefined, { order: "desc" }) : c.listApprovals("pending"), c.listDots()]); - out( - approvals, - approvals.length === 0 ? (values.all ? "no approvals\n" : "no pending approvals\n") : approvalRows(approvals, new Map(dots.map((d) => [d.id, d.name]))), - ); - return EXIT.ok; - } - case "approve": - case "reject": { - const id = need(args, 0, ""); - const c = await api(); - if (values.always && command === "reject") throw new UsageError("--always applies to approve, not to reject"); - const note = values.note === undefined ? {} : { note: values.note }; - const approval = - command === "approve" - ? await c.approve(id, { ...note, ...(values.always ? { always: true as const } : {}) }) - : await c.reject(id, note); - out(approval, `approval ${approval.id} ${approval.status}\n`); - return EXIT.ok; - } - case "mcp": { - const name = need(args, 0, ""); - const c = await api(); - const secrets = await c.mcpSecrets(name); - let tools: ToolListAnswer | null = null; - try { - tools = await c.listTools(name); - } catch (error) { - // A stopped computer has no engine to ask where the servers are; their secrets are the host's. - if (!(error instanceof ApiError && error.code === COMPUTER_STOPPED)) throw error; - } - out({ mcp_servers: tools?.mcp_servers ?? null, secrets: secrets.secrets }, mcpRows(tools, secrets)); - return EXIT.ok; - } - case "secret": { - const kind = need(args, 0, "openrouter|proxy|mcp"); - if (kind === "mcp") { - if (values.dot === undefined || values.dot === "") throw new UsageError("missing --dot "); - const server = need(args, 1, ""); - const secretName = need(args, 2, ""); - if (args.length > 3) throw new UsageError("the secret is read from stdin, never from arguments (they end up in shell history and ps)"); - const command = `invisible-dots secret mcp --dot ${values.dot} ${server} ${secretName}`; - const value = values.clear ? null : await secretFromInput(io, { prompt: `value of ${secretName} for the MCP server ${server}`, noun: "secret", command, spaces: true }); - const result = await (await api()).setMcpSecret(values.dot, server, secretName, value); - out(result, `${secretName} of the MCP server ${server} ${value === null ? "cleared" : "stored"} for Dot ${result.dot_id}; a running Dot starts the server again with it\n`); - return EXIT.ok; - } - if (kind === "proxy") { - if (values.dot === undefined || values.dot === "") throw new UsageError("missing --dot "); - if (args.length > 1) throw new UsageError("the proxy is read from stdin, never from arguments (they end up in shell history and ps)"); - const proxy = values.clear ? null : await secretFromInput(io, { prompt: "VM proxy (socks5://user:pass@host:port)", noun: "proxy", command: `invisible-dots secret proxy --dot ${values.dot}` }); - const result = await (await api()).setVmProxy(values.dot, proxy); - out(result, result.proxy ? `VM proxy stored for Dot ${result.dot_id}; it is used from the Dot's next start\n` : `Dot ${result.dot_id} goes out directly from its next start\n`); - return EXIT.ok; - } - if (kind !== "openrouter") throw new UsageError(`unknown secret "${kind}": openrouter, proxy or mcp`); - if (args.length > 1) { - throw new UsageError("the key is read from stdin, never from arguments (they end up in shell history and ps)"); - } - const key = await secretFromInput(io, { prompt: "OpenRouter API key", noun: "key", command: STORE_OPENROUTER_KEY }); - const result = await (await api()).setOpenRouterKey(key, values.dot); - out( - result, - `OpenRouter key stored ${values.dot ? `for Dot ${values.dot}` : "for every Dot"}; pushed to ${result.pushed} running Dot${result.pushed === 1 ? "" : "s"}\n`, - ); - return EXIT.ok; - } - case "channel": { - const what = need(args, 0, "add|link|list|pair|remove"); - const dotName = () => { - if (values.dot === undefined || values.dot === "") throw new UsageError("missing --dot "); - return values.dot; - }; - switch (what) { - case "add": { - const kind = need(args, 1, "telegram"); - if (kind !== "telegram") { - throw new UsageError(`cannot add "${kind}" with a token: only telegram is supported there; WhatsApp is linked with "invisible-dots channel link whatsapp --dot "`); - } - if (args.length > 2) throw new UsageError("the token is read from stdin, never from arguments (they end up in shell history and ps)"); - const name = dotName(); - const token = await secretFromInput(io, { prompt: "Telegram bot token from @BotFather", noun: "token", command: addTelegramChannel(name) }); - const channel = await (await api()).putTelegramChannel(name, token); - out( - channel, - `linked Telegram bot @${channel.account ?? "?"} to Dot ${name}\n` + - `next: invisible-dots channel pair telegram --dot ${name}\n` + - "note: Telegram chats are not end-to-end encrypted; Telegram can read what you and the Dot write there.\n", - ); - return EXIT.ok; - } - case "link": { - const kind = need(args, 1, "whatsapp"); - if (kind !== "whatsapp") throw new UsageError(`cannot link "${kind}" by scanning a code: only whatsapp is linked that way; telegram takes a token ("invisible-dots channel add telegram --dot ")`); - if (args.length > 2) throw new UsageError("channel link takes only the channel and --dot "); - const name = dotName(); - const c = await api(); - await c.linkWhatsApp(name); - io.stderr( - "WhatsApp: this links the number as a device of a personal account through an unofficial client, which WhatsApp can answer by banning the account. Use a number of its own, not the one you live on.\n" + - "On the phone: WhatsApp > Settings > Linked devices > Link a device, then scan the code below (it is replaced every few seconds).\n", - ); - for await (const frame of c.whatsappLink(name, { signal: io.signal })) { - if (values.json) io.stdout(`${JSON.stringify(frame)}\n`); - if (frame.state === "code") { - if (!values.json) io.stdout(`${await QRCode.toString(frame.code, { type: "terminal", small: true })}\n`); - } else if (frame.state === "linked") { - if (!values.json) { - io.stdout(`linked WhatsApp${frame.account ? ` number ${accountLabel("whatsapp", frame.account)}` : ""} to Dot ${name}\nnext: invisible-dots channel pair whatsapp --dot ${name}\n`); - } - return EXIT.ok; - } else if (frame.state === "failed") { - io.stderr(`invisible-dots: ${frame.detail}\n`); - return EXIT.failed; - } else if (frame.detail && !values.json) { - io.stderr(`${frame.detail}; trying again\n`); - } - } - io.stderr("invisible-dots: stopped before the link finished\n"); - return EXIT.failed; - } - case "list": { - noArguments(args.slice(1), "channel list"); - const c = await api(); - const dots = values.dot === undefined ? await c.listDots() : [await c.getDot(values.dot)]; - const rows = (await Promise.all(dots.map(async (d) => (await c.channels(d.id)).map((channel) => ({ dot: d.name, channel }))))).flat(); - out(rows, channelRows(rows)); - return EXIT.ok; - } - case "pair": { - const kind = channelKind(need(args, 1, "telegram")); - const name = dotName(); - const pairing = await (await api()).pairChannel(name, kind); - out( - pairing, - pairing.deep_link - ? `open this link on the device where you use ${kind}, then ${PAIRING_WORDS[kind].action} (valid until ${pairing.expires_at}):\n ${pairing.deep_link}\nor send ${PAIRING_WORDS[kind].to}: ${pairing.message}\n` - : `pairing code ${pairing.code}, valid until ${pairing.expires_at}\n`, - ); - return EXIT.ok; - } - case "remove": { - const kind = channelKind(need(args, 1, "telegram")); - const name = dotName(); - await (await api()).removeChannel(name, kind); - out({ removed: true }, `unlinked ${kind} from Dot ${name}: ${kind === "whatsapp" ? "the linked device's keys" : "its token"} and paired people are deleted\n`); - return EXIT.ok; - } - default: - throw new UsageError(`unknown channel subcommand "${what}": use add, link, list, pair or remove`); - } - } - case "logs": { - const name = need(args, 0, ""); - const tail = values.tail === undefined ? 20 : Number(values.tail); - if (!Number.isInteger(tail) || tail < 0) throw new UsageError("--tail must be a non-negative integer"); - const c = await api(); - const dot = await c.getDot(name).catch((error: unknown) => { - // A deleted Dot's events stay readable by id. - if (error instanceof ApiError && error.status === 404 && name.includes("_")) return { id: name }; - throw error; - }); - // The newest `tail` events, and at least the newest one, which following goes on from. - const recent = await newestEvents(c, dot.id, Math.max(tail, 1)); - const last = recent.at(-1)?.id ?? 0; - for (const event of recent.slice(recent.length - tail)) io.stdout(values.json ? `${JSON.stringify(event)}\n` : `${formatEvent(event)}\n`); - if (values["no-follow"]) return EXIT.ok; - for await (const event of c.stream({ - dotId: dot.id, - after: last, - signal: io.signal, - onReconnect: ({ error }) => io.stderr(`connection lost (${error.message}), reconnecting...\n`), - })) { - io.stdout(values.json ? `${JSON.stringify(event)}\n` : `${formatEvent(event)}\n`); - } - return EXIT.ok; - } - default: - throw new UsageError(`unknown command "${command}"`); - } - } catch (error) { - if (error instanceof UsageError) { - io.stderr(`invisible-dots: ${error.message}\nRun "invisible-dots --help" for usage.\n`); - return EXIT.usage; - } - if (error instanceof AuthSetupError) { - io.stderr(`invisible-dots: ${error.message}\n`); - return EXIT.auth; - } - if (error instanceof ApiError) { - if (error.status === 0) { - io.stderr(`invisible-dots: ${error.message}\nIs the server running (invisible-dots server)? Set ${ENV.URL} if it listens elsewhere.\n`); - return EXIT.unreachable; - } - if (error.status === 401) { - io.stderr(`invisible-dots: the server refused the API token (401); check ${ENV.TOKEN} or api.token\n`); - return EXIT.auth; - } - io.stderr(`invisible-dots: ${error.message} [${error.status} ${error.code}]\n`); - const details = error.details; - if (Array.isArray(details)) { - for (const issue of details as { path?: string; message?: string }[]) { - io.stderr(` ${issue.path ? `${issue.path}: ` : ""}${issue.message ?? ""}\n`); - } - } - return EXIT.failed; - } - // Ctrl-C is how `logs` ends; for every other command it is an interruption. - if (io.signal?.aborted && command === "logs") return EXIT.ok; - io.stderr(`invisible-dots: ${(error as Error).message}\n`); - return EXIT.failed; - } -} diff --git a/apps/cli/src/commands.ts b/apps/cli/src/commands.ts deleted file mode 100644 index e4e96877..00000000 --- a/apps/cli/src/commands.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Command lines this command prints as the fix for something, kept in one - * place so doctor, setup and the usage errors never tell the person two - * different things. Each works as printed in a POSIX shell and in Windows - * PowerShell alike: no redirection, nothing to quote. The ones the vm-manager's - * doctor report names too (setup, the OpenRouter key) are in its errors.ts. - */ - -/** Links a Dot to a Telegram bot: in a terminal it asks for the token, one line; piped, it reads standard input. */ -export const addTelegramChannel = (dot: string): string => `invisible-dots channel add telegram --dot ${dot}`; diff --git a/apps/cli/src/doctor/command.ts b/apps/cli/src/doctor/command.ts deleted file mode 100644 index dca2642d..00000000 --- a/apps/cli/src/doctor/command.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** `invisible-dots doctor`: the report on stdout, exit code 0 only when every check is ok (section 11.1). */ -import { EXIT } from "../exit.js"; -import { allOk, doctorAnswer, runDoctor, type DoctorDeps } from "@invisible-dots/vm-manager"; -import { renderReport } from "./render.js"; - -export async function doctorCommand(deps: DoctorDeps, options: { json: boolean }, out: (text: string) => void): Promise { - const results = await runDoctor(deps); - out(options.json ? `${JSON.stringify(doctorAnswer(results), null, 2)}\n` : renderReport(results)); - return allOk(results) ? EXIT.ok : EXIT.failed; -} diff --git a/apps/cli/src/doctor/render.ts b/apps/cli/src/doctor/render.ts deleted file mode 100644 index 93f726b2..00000000 --- a/apps/cli/src/doctor/render.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** The doctor report as text: one line per check, a fix line under each that is not ok, and a count. */ -import type { DoctorCheck } from "@invisible-dots/shared"; - -const STATUS_WIDTH = "missing".length + 2; - -export function renderReport(results: readonly DoctorCheck[]): string { - const labelWidth = Math.max(...results.map((r) => r.label.length)) + 2; - const indent = " ".repeat(STATUS_WIDTH + labelWidth); - const lines: string[] = []; - for (const r of results) { - lines.push(`${r.status.padEnd(STATUS_WIDTH)}${r.label.padEnd(labelWidth)}${r.detail}`); - if (r.status !== "ok" && r.fix) lines.push(`${indent}fix: ${r.fix}`); - } - const count = (status: DoctorCheck["status"]) => results.filter((r) => r.status === status).length; - const ok = count("ok"); - lines.push( - ok === results.length - ? `all ${results.length} checks ok` - : `${results.length} checks: ${ok} ok, ${count("missing")} missing, ${count("failed")} failed`, - ); - return `${lines.join("\n")}\n`; -} diff --git a/apps/cli/src/exit.ts b/apps/cli/src/exit.ts deleted file mode 100644 index 9fbd4ea5..00000000 --- a/apps/cli/src/exit.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** Exit codes of `invisible-dots`: what went wrong, for scripts. */ -export const EXIT = { - ok: 0, - /** The server answered with an error, a doctor check is not ok, or a setup step failed. */ - failed: 1, - /** Wrong command line. */ - usage: 2, - /** The server could not be reached. */ - unreachable: 3, - /** No API token, or the server refused it. */ - auth: 4, - /** setup enabled something that works only after Windows restarts. */ - restart: 5, -} as const; diff --git a/apps/cli/src/host.ts b/apps/cli/src/host.ts deleted file mode 100644 index 920acebf..00000000 --- a/apps/cli/src/host.ts +++ /dev/null @@ -1,187 +0,0 @@ -/** - * The real host commands: the doctor, setup, image build and server of - * architecture section 11, wired to the real machine. Everything decided - * here comes from the package that owns it: QEMU discovery, the accelerator - * and the doctor report from the vm-manager, image verification and building - * from the image builder (the doctor's image rows through the API), the - * control plane from the API, paths from shared. This file only connects - * them; it holds no platform branch (those are in setup/install.ts and the - * vm-manager's accelerator-access.ts). - * - * cli.ts imports this module only when a host command runs, so the API - * client commands never load QEMU discovery, the image builder or the - * database. - */ -import { randomBytes } from "node:crypto"; -import { mkdtemp, readFile, rm } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { createImageChecks, parseListen, serverLogger, startServer, untilStopSignal } from "@invisible-dots/api"; -import { - buildGoldenImage, - buildRuntimeIso, - defaultRuntimeInputs, - fetchVerified, - type ProcessRunner, -} from "@invisible-dots/image-builder"; -import { allowlistedEnvironment, currentUserSid, hostPaths, type DoctorCheck } from "@invisible-dots/shared"; -import { - accelerator, - findQemu, - firstLine, - hostAccessDeps, - hostDoctorDeps, - NodeCommandRunner, - openRouterCheck, - runProcess, - startProcess, - type DoctorDeps, -} from "@invisible-dots/vm-manager"; -import windowsQemuPinJson from "../../../virtualization/qemu/windows.json" with { type: "json" }; -import { connectApi } from "./api-client.js"; -import type { CliIo, HostCommands, ImageBuildOptions } from "./cli.js"; -import { doctorCommand } from "./doctor/command.js"; -import { EXIT } from "./exit.js"; -import { runSetupAll } from "./setup/all.js"; -import { buildAgent, buildWeb, type BuildDeps } from "./setup/build.js"; -import { currentUserIsRoot, type InstallDeps } from "./setup/install.js"; -import { parseWindowsQemuPin } from "./setup/qemu-pin.js"; -import { serve } from "./serve.js"; -import { prepareHost, runSetup, type SetupDeps } from "./setup/setup.js"; -import { locateWebBuild, startWebServer } from "./web.js"; - -/** - * Whether the running server holds an OpenRouter key. The key lives in the - * database, and the embedded PGlite database belongs to the one server - * process that has it open (a second opener would corrupt it), so doctor - * asks the server instead of reading the database. - */ -async function openRouterKey(env: Record, fetchImpl?: typeof fetch): Promise { - const base = { id: "openrouter", label: "OpenRouter key" } as const; - let health: unknown; - try { - health = await (await connectApi(env, fetchImpl)).health(); - } catch (error) { - return { - ...base, - status: "failed", - detail: `cannot tell while the server is not reachable (${firstLine((error as Error).message)})`, - fix: "start it with: invisible-dots server, then run invisible-dots doctor again", - }; - } - const configured = (health as { openrouter_configured?: unknown }).openrouter_configured; - if (typeof configured === "boolean") return openRouterCheck(configured); - return { ...base, status: "failed", detail: "the server's /api/health does not report openrouter_configured", fix: "update the server" }; -} - -function doctorDeps(io: CliIo): DoctorDeps { - const paths = hostPaths(io.env); - return { - ...hostDoctorDeps({ env: io.env, home: paths.home, images: createImageChecks(paths), openRouterKey: () => openRouterKey(io.env, io.fetch) }), - webBuild: () => locateWebBuild(REPO_ROOT), - }; -} - -function setupDeps(io: CliIo): SetupDeps { - return { doctor: doctorDeps(io), install: installDeps(io), out: io.stdout }; -} - -function buildDeps(io: CliIo): BuildDeps { - return { - run: runProcess, - env: io.env, - repoRoot: REPO_ROOT, - node: process.execPath, - webBuilt: async () => (await locateWebBuild(REPO_ROOT)).missing === undefined, - }; -} - -function installDeps(io: CliIo): InstallDeps { - const log = (line: string) => io.stdout(`${line}\n`); - return { - ...hostAccessDeps(io.env), - log, - readText: (path) => readFile(path, "utf8"), - isRoot: currentUserIsRoot(), - windowsQemuPin: () => parseWindowsQemuPin(windowsQemuPinJson), - userSid: () => currentUserSid(io.env), - uniqueName: () => randomBytes(16).toString("hex"), - makeTempDir: () => mkdtemp(join(tmpdir(), "invisible-dots-setup-")), - removeDir: (path) => rm(path, { recursive: true, force: true }), - download: async (pin, dest) => { - await fetchVerified({ url: pin.url, sha256: pin.sha256 }, dest, { log, ...(io.fetch ? { fetch: io.fetch } : {}) }); - }, - }; -} - -/** The image builder's process boundary: the host's one runner, the same one the vm-manager uses for qemu-img. */ -const commands = new NodeCommandRunner(); -const processRunner: ProcessRunner = { - run: (command, args, options) => commands.run(command, args, options), - spawn: (command, args, options) => startProcess(command, args, { cwd: options.cwd, env: allowlistedEnvironment(process.env) }), -}; - -/** - * The repository root. apps/cli/src/host.ts and the bundle - * apps/cli/dist/invisible-dots.mjs sit at the same depth, so this holds for - * both. The image builder's own default would point inside apps/cli once - * bundled, so its guest files are named here (the engine's source is named by - * defaultRuntimeInputs, from this same root). - */ -const REPO_ROOT = fileURLToPath(new URL("../../../", import.meta.url)); -const IMAGE_BUILDER_DIR = join(REPO_ROOT, "guest", "image-builder"); - -/** - * The runtime ISO first: it takes seconds and fails at once when the agent - * bundle or dot-agentd has not been built, before an hour of golden image - * provisioning. - */ -async function imageBuild(io: CliIo, options: ImageBuildOptions = { download: true, compress: false }): Promise { - const log = (line: string) => io.stdout(`${line}\n`); - const paths = hostPaths(io.env); - const runtime = await buildRuntimeIso({ paths, log, assetRoot: IMAGE_BUILDER_DIR, inputs: defaultRuntimeInputs(REPO_ROOT) }); - log(`${runtime.created ? "built" : "already built"}: ${runtime.iso}`); - const qemu = await findQemu(io.env); - const golden = await buildGoldenImage({ - qemu, - accelerator: accelerator(), - runner: processRunner, - paths, - assetRoot: IMAGE_BUILDER_DIR, - log, - ...(options.download ? {} : { prebuilt: false as const }), - ...(options.compress ? { compress: true } : {}), - ...(io.fetch ? { fetch: io.fetch } : {}), - ...(io.signal ? { signal: io.signal } : {}), - }); - log(`${golden.created ? "ready" : "already there"}: ${golden.image}`); - return EXIT.ok; -} - -export function realHostCommands(): HostCommands { - return { - doctor: (options, io) => doctorCommand(doctorDeps(io), options, io.stdout), - setup: (io) => runSetup(setupDeps(io)), - setupAll: (io) => { - const builds = buildDeps(io); - return runSetupAll({ - out: io.stdout, - agent: () => buildAgent(builds), - host: () => prepareHost(setupDeps(io)), - web: () => buildWeb(builds), - images: () => imageBuild(io), - env: io.env, - ...(io.signal ? { signal: io.signal } : {}), - }); - }, - imageBuild, - server: async (io, options) => { - await serve( - { env: io.env, logger: serverLogger(io.env), web: options.web, repoRoot: REPO_ROOT }, - { startServer, untilStopSignal, parseListen, startWebServer }, - ); - return EXIT.ok; - }, - }; -} diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts deleted file mode 100644 index e4029e93..00000000 --- a/apps/cli/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./cli.js"; diff --git a/apps/cli/src/main.ts b/apps/cli/src/main.ts deleted file mode 100644 index a969256d..00000000 --- a/apps/cli/src/main.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** The `invisible-dots` executable: wires `run` to the real process. */ -import { commandOf, interruptIsAsked, run } from "./cli.js"; -import { readSecretLine } from "./secret-input.js"; - -async function readStdin(): Promise { - const chunks: Buffer[] = []; - for await (const chunk of process.stdin) chunks.push(chunk as Buffer); - return Buffer.concat(chunks).toString("utf8"); -} - - -const argv = process.argv.slice(2); -const command = commandOf(argv); -const controller = new AbortController(); - -// What Ctrl-C does depends on the command. `logs` ends cleanly. `image build` -// (and `setup --all`, which ends with it) is asked to stop, so it can kill its -// builder VM, and a second Ctrl-C exits at once. `server` installs its own -// handlers (it closes the database before exiting). Every other command keeps -// Node's default: exit immediately. -if (interruptIsAsked(argv)) { - process.on("SIGINT", () => { - if (controller.signal.aborted) process.exit(130); - controller.abort(); - }); -} - -const code = await run(argv, { - stdout: (text) => process.stdout.write(text), - stderr: (text) => process.stderr.write(text), - readStdin, - readSecret: () => readSecretLine(process.stdin, process.stderr), - stdinIsTTY: Boolean(process.stdin.isTTY), - env: process.env, - cwd: process.cwd(), - signal: controller.signal, -}); -process.exitCode = code; -// After a clean stop the server has nothing left to say, but a database or -// VM-manager handle may still hold the event loop; the server's own bin -// exits the same way. Other commands end naturally, which lets piped output -// flush on Windows, where pipe writes are asynchronous. -if (command === "server") process.exit(code); diff --git a/apps/cli/src/secret-input.ts b/apps/cli/src/secret-input.ts deleted file mode 100644 index a6e81378..00000000 --- a/apps/cli/src/secret-input.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * One line a person types in the terminal that must not show: an API key or a bot token pasted at a prompt. The - * terminal's own echo would leave it in the scrollback and in any session recording, so the line is read through a - * readline whose output is a stream that swallows what it is given: readline still handles the keys (backspace, - * Ctrl-U, paste) and the terminal is in raw mode, but nothing of the value is written back to the screen. - */ -import { createInterface } from "node:readline"; -import { Writable, type Readable } from "node:stream"; - -/** What a terminal's input is to this reader: a stream that may be put in raw mode. */ -export type TerminalInput = Readable & { isTTY?: boolean; setRawMode?: (mode: boolean) => unknown }; - -/** The person pressed Ctrl-C at the prompt. */ -export class SecretInputCancelled extends Error { - constructor() { - super("cancelled"); - } -} - -/** - * Read one line from `input` with the echo off, then write one newline to `output` (Enter was not echoed either, - * and the next line of output must not follow the prompt on the same line). The line is returned as typed; an end - * of input before Enter returns what was typed so far. - */ -export function readSecretLine(input: TerminalInput, output: Pick): Promise { - return new Promise((resolve, reject) => { - const swallowed = new Writable({ - write(_chunk, _encoding, done) { - done(); - }, - }); - const lines = createInterface({ input, output: swallowed, terminal: true, historySize: 0 }); - let line = ""; - let settled = false; - const finish = (settle: () => void) => { - if (settled) return; - settled = true; - lines.close(); - output.write("\n"); - settle(); - }; - lines.once("line", (text) => { - line = text; - finish(() => resolve(line)); - }); - lines.once("SIGINT", () => finish(() => reject(new SecretInputCancelled()))); - lines.once("close", () => finish(() => resolve(line))); - }); -} diff --git a/apps/cli/src/serve.ts b/apps/cli/src/serve.ts deleted file mode 100644 index 8ac11ecb..00000000 --- a/apps/cli/src/serve.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * `invisible-dots server`: the control plane and, next to it, the web client, - * in the foreground until a stop signal. The order is the contract: the - * signal handlers are installed as soon as the control plane listens (a - * Ctrl+C while the web client is starting must still close the database), - * and a stop closes the web client first, then the control plane. - */ -import type { ListenAddress, ListenSetting, StartServerOptions } from "@invisible-dots/api"; -import { DEFAULT_WEB_LISTEN, ENV, type HostPaths, type Logger } from "@invisible-dots/shared"; -import { locateWebBuild, type WebServer, type WebServerOptions } from "./web.js"; - -/** What `serve` needs from the packages that own the processes; tests pass fakes. */ -export interface ServeDeps { - startServer(options: StartServerOptions): Promise<{ url: string; paths: HostPaths; close(): Promise }>; - untilStopSignal(close: () => Promise, logger: Logger, signals?: NodeJS.EventEmitter): Promise; - parseListen(value: string, setting: ListenSetting): ListenAddress; - startWebServer(options: WebServerOptions): Promise; -} - -export interface ServeOptions { - env: Record; - logger: Logger; - /** Serve the web client too (`--no-web` turns it off). */ - web: boolean; - /** The repository (or install) root the web build is found under. */ - repoRoot: string; - /** The process, or a stand-in in tests. */ - signals?: NodeJS.EventEmitter; -} - -/** The web client's listen address: its own default shown in the error, and a port the person can be told. */ -const WEB_LISTEN: ListenSetting = { variable: ENV.WEB_LISTEN, example: DEFAULT_WEB_LISTEN, fixedPort: true }; - -export async function serve(options: ServeOptions, deps: ServeDeps): Promise { - const { env, logger } = options; - // Parsed before anything starts, so a bad INVISIBLE_DOTS_WEB_LISTEN fails the command at once. - const webListen = options.web ? deps.parseListen(env[ENV.WEB_LISTEN]?.trim() || DEFAULT_WEB_LISTEN, WEB_LISTEN) : undefined; - const server = await deps.startServer({ env, logger }); - logger.info(`API token in ${server.paths.apiTokenPath}; stop with Ctrl+C (Dots keep running)`); - - const starting = new AbortController(); - let web: Promise = Promise.resolve(undefined); - const stopped = deps.untilStopSignal( - async () => { - starting.abort(); - try { - await (await web)?.stop(); - } finally { - await server.close(); - } - }, - logger, - options.signals, - ); - - if (webListen) { - // Assigned in the same tick the handlers were installed, so a stop always finds the start it has to end. - web = (async () => { - try { - const started = await deps.startWebServer({ - build: await locateWebBuild(options.repoRoot), - listen: webListen, - apiUrl: server.url, - env, - signal: starting.signal, - onUnexpectedExit: (message) => logger.warn(`${message}; the control plane keeps running`), - }); - logger.info(`web client at ${started.url}`); - return started; - } catch (error) { - if (!starting.signal.aborted) logger.warn(`web client not started: ${(error as Error).message}; the control plane keeps running`); - return undefined; - } - })(); - } - await stopped; -} diff --git a/apps/cli/src/setup/all.ts b/apps/cli/src/setup/all.ts deleted file mode 100644 index 4bb2f69a..00000000 --- a/apps/cli/src/setup/all.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * `invisible-dots setup --all`: everything the quick start did by hand after `npm ci`, in order, as one command that - * can be run again. Each step is the code of the command that owns it (the guest daemon and web client builds in - * build.ts, QEMU and its accelerator in setup.ts, `image build` in host.ts) and skips what is already done, so a run - * that stopped, for a restart, a new login or a failure, is continued by running the same command again. - * - * The one step that needs administrator rights stays one step: it is `setup`'s, which asks once. It comes second, - * after the quick daemon build that finds a missing Go before anything is changed, and before the long builds, so a - * restart it asks for costs nothing already done. - */ -import { DEFAULT_WEB_LISTEN, ENV } from "@invisible-dots/shared"; -import { EXIT } from "../exit.js"; -import type { StepResult } from "./build.js"; -import type { HostOutcome } from "./setup.js"; - -/** The command this prints wherever the person has to come back: the same one, which continues. */ -export const SETUP_ALL_COMMAND = "invisible-dots setup --all"; - -export interface SetupAllDeps { - out(text: string): void; - /** Build dot-agentd. */ - agent(): Promise; - /** Get QEMU and its accelerator ready (`setup`). */ - host(): Promise; - /** Build the web client unless it is built. */ - web(): Promise; - /** `image build`: the exit code, or a rejection with the reason. */ - images(): Promise; - env: Record; - /** Aborted by Ctrl-C. Checked between steps: only `image build` can stop in the middle of one. */ - signal?: AbortSignal; -} - -/** The address the web client listens on: the setting, or its default. */ -export function webAddress(env: Record): string { - return `http://${env[ENV.WEB_LISTEN]?.trim() || DEFAULT_WEB_LISTEN}`; -} - -const STEPS = 4; - -export async function runSetupAll(deps: SetupAllDeps): Promise { - const { out } = deps; - const heading = (n: number, text: string) => out(`\n[${n}/${STEPS}] ${text}\n`); - const interrupted = () => deps.signal?.aborted === true; - const stopped = (lines: readonly string[]) => { - for (const line of lines) out(` ${line}\n`); - out(`\nStopped. Nothing after this step was run. Once it is fixed, run ${SETUP_ALL_COMMAND} again: it skips what is done.\n`); - return EXIT.failed; - }; - out(`${SETUP_ALL_COMMAND}: ${STEPS} steps. Each skips what is already done, so run it again after anything that stops it.\n`); - - heading(1, "the guest daemon dot-agentd (Go builds it)"); - const agent = await deps.agent(); - if (!agent.ok) return stopped(agent.lines); - for (const line of agent.lines) out(` ${line}\n`); - if (interrupted()) return stopped(["interrupted"]); - - heading(2, "QEMU and its accelerator (the `setup` command: it asks for administrator rights once, and only if something is missing)"); - const host = await deps.host(); - if (!host.ready) { - if (host.code === EXIT.restart) { - out(`\nRestart the computer now, then run ${SETUP_ALL_COMMAND} again from this folder: it carries on with step 3.\n`); - } else if (host.code !== EXIT.usage) { - out(`\nStopped. When what is listed above is done (log out and in again if it says so), run ${SETUP_ALL_COMMAND} again: it skips what is done.\n`); - } - return host.code; - } - - if (interrupted()) return stopped(["interrupted"]); - heading(3, "the web client"); - const web = await deps.web(); - if (!web.ok) return stopped(web.lines); - for (const line of web.lines) out(` ${line}\n`); - if (interrupted()) return stopped(["interrupted"]); - - heading(4, "the guest images (what `invisible-dots image build` does: the golden image is downloaded when one is published for these inputs)"); - try { - const code = await deps.images(); - if (code !== EXIT.ok) return stopped([`image build ended with exit code ${code}`]); - } catch (error) { - return stopped([`image build stopped: ${(error as Error).message}`]); - } - - out(` -This computer is ready. To use it: - 1. start the server and leave it running: invisible-dots server - 2. open ${webAddress(deps.env)} in your browser - 3. the page asks for your OpenRouter key, then lets you create your first Dot. -`); - return EXIT.ok; -} diff --git a/apps/cli/src/setup/build.ts b/apps/cli/src/setup/build.ts deleted file mode 100644 index 9cadfb49..00000000 --- a/apps/cli/src/setup/build.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * The two builds the quick start used to ask for by hand, as steps of `invisible-dots setup --all`: the guest - * daemon dot-agentd (Go) and the web client (Next). What each one runs is owned elsewhere (the image builder names the - * Go command, apps/web/scripts/build.mjs is the web build); this file runs it and says what happened. Both go - * through the host's one process runner, with an argument array and never a shell. - */ -import { agentdBuildCommand, defaultRuntimeInputs } from "@invisible-dots/image-builder"; -import { WEB_BUILD_COMMAND, type Runner, type RunResult } from "@invisible-dots/vm-manager"; -import { webBuildScript } from "../web.js"; - -/** A step either went through (and says what it did) or stopped the run (and says what to do). */ -export interface StepResult { - ok: boolean; - lines: string[]; -} - -export interface BuildDeps { - run: Runner; - /** The environment the builds start from; the Go build adds its own variables. */ - env: Record; - repoRoot: string; - /** The program that runs the web build script: the node running this command. */ - node: string; - /** Whether the web client is built completely (`locateWebBuild`). */ - webBuilt(): Promise; -} - -/** - * How to get Go: both hosts' commands in one line, so that no platform check is needed to choose one. setup never - * runs it (the Windows installer and snap each ask for administrator rights of their own, and setup asks once). - */ -export const GO_INSTALL_HINT = "install it: on Windows `winget install -e --id GoLang.Go`, on Linux `sudo snap install go --classic`, or see https://go.dev/dl"; - -/** Go downloads its toolchain when go.mod asks for a newer one, and compiles the daemon from a cold cache. */ -const AGENT_TIMEOUT_MS = 15 * 60_000; -const WEB_TIMEOUT_MS = 30 * 60_000; -const STDERR_LINES = 10; - -function why(answer: RunResult, limit: number): string { - if (answer.timedOut) return `it did not finish within ${limit / 60_000} minutes`; - return answer.startError?.message ?? `exit code ${answer.code ?? answer.signal}`; -} - -/** - * Builds dot-agentd. Always run, never skipped: Go keeps its own build cache, so an unchanged daemon takes seconds, - * and the image builder turns the same bytes into "already built". - */ -export async function buildAgent(deps: BuildDeps): Promise { - const build = agentdBuildCommand(deps.repoRoot); - const answer = await deps.run(build.command, build.args, { env: { ...deps.env, ...build.env }, timeoutMs: AGENT_TIMEOUT_MS }); - if (answer.startError?.code === "ENOENT") { - return { - ok: false, - lines: [ - "Go is not installed, or is not on PATH: the guest daemon dot-agentd is written in Go", - GO_INSTALL_HINT, - "then open a new terminal (the installer changes PATH) and run: invisible-dots setup --all", - ], - }; - } - if (answer.code !== 0 || answer.timedOut) { - const tail = answer.stderr.trim().split(/\r?\n/).slice(-STDERR_LINES); - return { ok: false, lines: [`building dot-agentd failed (${why(answer, AGENT_TIMEOUT_MS)}):`, ...tail.filter((line) => line.trim() !== "").map((line) => ` ${line}`)] }; - } - return { ok: true, lines: [`built ${defaultRuntimeInputs(deps.repoRoot).agentdBinary}`] }; -} - -/** Builds the web client unless it is complete already (a rebuild after an update is the command this prints). */ -export async function buildWeb(deps: BuildDeps): Promise { - if (await deps.webBuilt()) return { ok: true, lines: [`already built; after an update, build it again with: ${WEB_BUILD_COMMAND}`] }; - // The output is the person's to see: a Next build takes minutes and prints its progress. - const answer = await deps.run(deps.node, [webBuildScript(deps.repoRoot)], { - env: deps.env, - inheritStdio: true, - timeoutMs: WEB_TIMEOUT_MS, - }); - if (answer.code !== 0 || answer.timedOut) { - return { ok: false, lines: [`building the web client failed (${why(answer, WEB_TIMEOUT_MS)}; its output is above)`, `after fixing it, run: invisible-dots setup --all`] }; - } - if (!(await deps.webBuilt())) { - return { ok: false, lines: [`the web client build finished but its server files are not where invisible-dots looks (apps/web/.next/standalone); build it with: ${WEB_BUILD_COMMAND}`] }; - } - return { ok: true, lines: ["built the web client"] }; -} diff --git a/apps/cli/src/setup/install.ts b/apps/cli/src/setup/install.ts deleted file mode 100644 index bc757569..00000000 --- a/apps/cli/src/setup/install.ts +++ /dev/null @@ -1,257 +0,0 @@ -/** - * The CLI's platform split (architecture section 1.1), and the only place in - * apps/cli that asks which operating system it runs on: how QEMU and the - * accelerator are installed, the distribution's package with sudo on Linux, - * one UAC prompt on Windows that enables the HypervisorPlatform feature and - * runs the official QEMU installer silently. How the accelerator is READ - * (/dev/kvm, the feature state) is the vm-manager's `checkAcceleratorAccess`, - * which the API's doctor route runs too. - * - * Everything else `setup` and `doctor` do is the same code on both hosts. - */ -// The Windows branch builds Windows paths whatever host the tests run on. -import { win32 } from "node:path"; -import { ENV } from "@invisible-dots/shared"; -import { - checkKvmDevice, - firstLine, - HYPERVISOR_PLATFORM_FEATURE, - MIN_QEMU_VERSION_TEXT, - officialQemuDir, - powershellArgs, - powershellPath, - UNSUPPORTED_FIX, - type AccessDeps, -} from "@invisible-dots/vm-manager"; -import { - ELEVATED_RESULT_FILE, - elevatedSetupScript, - type ElevatedScriptOptions, - elevationLauncherScript, - parseElevatedResult, - RESTART_REQUIRED_EXIT_CODE, - UNSAFE_WORK_DIR_EXIT_CODE, -} from "./powershell.js"; -import { installerFileName, type WindowsQemuPin } from "./qemu-pin.js"; - -export const APT_PACKAGES = ["qemu-system-x86", "qemu-utils"] as const; - -/** The UAC prompt waits for a person, and the installer copies a few hundred MiB. */ -const ELEVATED_TIMEOUT_MS = 60 * 60 * 1000; - -export interface InstallDeps extends AccessDeps { - log(line: string): void; - readText(path: string): Promise; - /** Linux: whether setup runs as root (see `currentUserIsRoot`), which it refuses. */ - isRoot: boolean; - /** Windows: the pinned installer, read only when QEMU has to be installed. */ - windowsQemuPin(): WindowsQemuPin; - makeTempDir(): Promise; - removeDir(path: string): Promise; - /** Downloads `pin.url` to `dest` as the normal user and rejects unless it hashes to `pin.sha256`. */ - download(pin: WindowsQemuPin, dest: string): Promise; - /** Windows: the security identifier of the user running setup. */ - userSid(): Promise; - /** A name no one can guess, for the elevated session's own directory. */ - uniqueName(): string; -} - -/** - * Whether this process runs as root. getuid exists only on POSIX hosts, so - * on Windows the answer is false: there setup never runs as an - * administrator, it asks for one prompt instead. - */ -export function currentUserIsRoot(): boolean { - return process.getuid?.() === 0; -} - -/** - * Why setup must not go on, or null. As root on Linux it would check - * /dev/kvm for root instead of for the person who runs the server, report - * the accelerator ready, and that person's first Dot would then fail; - * setup calls sudo itself for the one step that needs it, as Windows asks - * for one prompt. - */ -export function setupRefusal(deps: Pick): string | null { - if (deps.platform === "linux" && deps.isRoot) { - return "run invisible-dots setup as the user who runs the server, not as root: it calls sudo itself for the step that needs it"; - } - return null; -} - -export interface InstallRequest { - /** qemu-system-x86_64 or qemu-img is missing or too old. */ - installQemu: boolean; - /** The accelerator check answered `missing`. */ - enableAccelerator: boolean; -} - -export type InstallOutcome = - /** Installed; doctor should now see QEMU and the accelerator. */ - | { kind: "done"; lines: string[] } - /** Installed, but Windows must restart before the accelerator works. */ - | { kind: "restart"; lines: string[] } - /** The person has to run something setup does not run itself. */ - | { kind: "manual"; lines: string[] } - | { kind: "failed"; lines: string[] }; - -/** Installs what doctor found missing, the way this host installs things. */ -export async function installHostPrerequisites(request: InstallRequest, deps: InstallDeps): Promise { - if (deps.platform === "linux") return installOnLinux(request, deps); - if (deps.platform === "win32") return installOnWindows(request, deps); - return { kind: "failed", lines: [`${deps.platform} hosts are not supported: ${UNSUPPORTED_FIX}`] }; -} - -// Linux - -export interface OsRelease { - id: string; - idLike: string[]; - prettyName?: string; -} - -/** /etc/os-release, the fields that say which package manager the distribution uses. */ -export function parseOsRelease(text: string): OsRelease { - const fields: Record = {}; - for (const line of text.split(/\r?\n/)) { - const match = /^([A-Z_]+)=(.*)$/.exec(line.trim()); - if (match) fields[match[1]!] = match[2]!.replace(/^(["'])(.*)\1$/, "$2"); - } - return { - id: (fields.ID ?? "").toLowerCase(), - idLike: (fields.ID_LIKE ?? "").toLowerCase().split(/\s+/).filter(Boolean), - ...(fields.PRETTY_NAME ? { prettyName: fields.PRETTY_NAME } : {}), - }; -} - -export type PackageManager = { kind: "apt" } | { kind: "print"; line: string }; - -/** - * apt is run; other package managers only get their line printed, because a - * wrong package name on a distribution nobody tested would install the wrong - * thing with root rights. - */ -export function packageManagerFor(os: OsRelease): PackageManager { - const family = [os.id, ...os.idLike]; - if (family.some((id) => id === "debian" || id === "ubuntu")) return { kind: "apt" }; - if (family.some((id) => id === "fedora" || id === "rhel" || id === "centos")) { - return { kind: "print", line: "sudo dnf install -y qemu-system-x86 qemu-img" }; - } - if (family.includes("arch")) return { kind: "print", line: "sudo pacman -S --needed qemu-system-x86 qemu-img" }; - return { kind: "print", line: `install qemu-system-x86_64 and qemu-img (QEMU ${MIN_QEMU_VERSION_TEXT} or newer) with your distribution's package manager` }; -} - -async function installOnLinux(request: InstallRequest, deps: InstallDeps): Promise { - const manual: string[] = []; - if (request.installQemu) { - const os = parseOsRelease(await deps.readText("/etc/os-release").catch(() => "")); - const manager = packageManagerFor(os); - if (manager.kind === "apt") { - // Never run as root (setupRefusal), so sudo is always the way to the one root step. - const argv = ["sudo", "apt-get", "install", "-y", ...APT_PACKAGES]; - deps.log(`$ ${argv.join(" ")}`); - const answer = await deps.run(argv[0]!, argv.slice(1), { inheritStdio: true }); - if (answer.code !== 0) { - const why = answer.startError?.message ?? `exit code ${answer.code ?? answer.signal}`; - return { kind: "failed", lines: [`${argv.join(" ")} failed (${why})`] }; - } - } else { - manual.push(`QEMU is not installed by setup on ${os.prettyName ?? (os.id || "this distribution")}; run:`, ` ${manager.line}`); - } - } - - const access = await checkKvmDevice(deps); - if (access.status !== "ok") manual.push(`${access.detail}; fix:`, ` ${access.fix}`); - return manual.length > 0 ? { kind: "manual", lines: manual } : { kind: "done", lines: [] }; -} - -// Windows - -async function installOnWindows(request: InstallRequest, deps: InstallDeps): Promise { - if (!request.installQemu && !request.enableAccelerator) return { kind: "done", lines: [] }; - const work = await deps.makeTempDir(); - // The elevated session's own directory; it checks this is directly under the real ProgramData. - const programData = deps.env.ProgramData ?? deps.env.PROGRAMDATA ?? "C:\\ProgramData"; - const elevatedDir = win32.join(programData, `invisible-dots-setup-${deps.uniqueName()}`); - try { - let installer: ElevatedScriptOptions["installer"]; - if (request.installQemu) { - const pin = deps.windowsQemuPin(); - const path = win32.join(work, installerFileName(pin)); - deps.log(`downloading the official QEMU ${pin.version} installer: ${pin.url}`); - await deps.download(pin, path); - deps.log(`verified its SHA-256 (${pin.sha256})`); - installer = { path, sha256: pin.sha256, silentArgs: pin.silentArgs }; - } - - const userSid = await deps.userSid(); - const steps = [ - ...(request.enableAccelerator ? [`enable the ${HYPERVISOR_PLATFORM_FEATURE} feature (dism)`] : []), - ...(installer ? ["run the QEMU installer silently"] : []), - ]; - deps.log(`asking for administrator rights once, to ${steps.join(" and ")}`); - const elevated = elevatedSetupScript({ - enableHypervisorPlatform: request.enableAccelerator, - ...(installer ? { installer } : {}), - workDir: elevatedDir, - userSid, - }); - const powershell = powershellPath(deps.env); - const launch = await deps.run(powershell, powershellArgs(elevationLauncherScript(powershell, elevated)), { timeoutMs: ELEVATED_TIMEOUT_MS }); - - const text = await deps.readText(win32.join(elevatedDir, ELEVATED_RESULT_FILE)).catch(() => undefined); - if (text === undefined) { - if (launch.code === UNSAFE_WORK_DIR_EXIT_CODE) { - return { - kind: "failed", - lines: [`the elevated step could not create its own directory ${elevatedDir} for administrators only, so it ran nothing; run setup again`], - }; - } - const why = firstLine(launch.stderr) || (launch.timedOut ? "it did not finish within an hour" : `exit code ${launch.code}`); - const declined = /cancel/i.test(launch.stderr); - return { - kind: "failed", - lines: [ - declined - ? "administrator rights were not granted (the prompt was declined); nothing was changed" - : `the elevated step did not report back: ${why}`, - ], - }; - } - return interpretElevatedResult(text, deps.env); - } finally { - await deps.removeDir(elevatedDir).catch(() => undefined); - await deps.removeDir(work).catch(() => undefined); - } -} - -/** What the elevated session's result file means for the person. */ -export function interpretElevatedResult(text: string, env: Record = {}): InstallOutcome { - let result; - try { - result = parseElevatedResult(text); - } catch (error) { - return { kind: "failed", lines: [`the elevated step wrote an unreadable result: ${(error as Error).message}`] }; - } - if (result.error) return { kind: "failed", lines: [`the elevated step failed: ${result.error}`] }; - const lines: string[] = []; - if (result.installer_exit_code === 0) { - lines.push("QEMU installed"); - // The installer reuses the directory of an earlier QEMU, which may be one invisible-dots does not search. - const official = officialQemuDir(env); - // Windows paths compared as Windows does: either separator, any case, no trailing one. - const trim = (dir: string) => dir.replace(/[\\/]+/g, "\\").replace(/\\$/, "").toLowerCase(); - if (result.install_dir && (!official || trim(result.install_dir) !== trim(official))) { - lines.push(`it went to ${result.install_dir}, where an earlier QEMU was installed: set ${ENV.QEMU_DIR}=${result.install_dir} so invisible-dots uses it`); - } - } - if (result.dism_exit_code === RESTART_REQUIRED_EXIT_CODE) { - lines.push( - `the ${HYPERVISOR_PLATFORM_FEATURE} feature is enabled; Windows must restart before it works`, - "restart Windows, then run: invisible-dots doctor", - ); - return { kind: "restart", lines }; - } - if (result.dism_exit_code === 0) lines.push(`the ${HYPERVISOR_PLATFORM_FEATURE} feature is enabled`); - return { kind: "done", lines }; -} diff --git a/apps/cli/src/setup/powershell.ts b/apps/cli/src/setup/powershell.ts deleted file mode 100644 index 96f58c84..00000000 --- a/apps/cli/src/setup/powershell.ts +++ /dev/null @@ -1,160 +0,0 @@ -/** - * The PowerShell that `invisible-dots setup` runs on Windows (architecture - * section 11.2). Pure text generation, so the tests pin every line that will - * run with administrator rights. - * - * Scripts travel as -EncodedCommand (base64 of UTF-16LE), never as a file: - * nothing on disk can be swapped between generating the elevated script and - * the UAC prompt, and no argument needs quoting rules beyond PowerShell's own. - */ - -import { encodeCommand, HYPERVISOR_PLATFORM_FEATURE, powershellArgs } from "@invisible-dots/vm-manager"; - -/** dism's "succeeded, restart required". */ -export const RESTART_REQUIRED_EXIT_CODE = 3010; - -/** - * A PowerShell single-quoted string literal. PowerShell also treats the - * typographic quotes U+2018 to U+201B as single quotes, so they are doubled too. - */ -export function psQuote(value: string): string { - return `'${value.replace(/['\u2018\u2019\u201A\u201B]/g, "$&$&")}'`; -} - -export interface ElevatedScriptOptions { - enableHypervisorPlatform: boolean; - /** The downloaded and verified QEMU installer; omitted when QEMU is already installed. */ - installer?: { path: string; sha256: string; silentArgs: readonly string[] }; - /** - * A directory that does not exist yet, directly under the system's - * ProgramData. The elevated session creates it for administrators and - * SYSTEM alone (the person running setup may read it) and keeps in it - * everything it runs or writes: the installer's copy and the result. - */ - workDir: string; - /** The security identifier of the person running setup, who reads the result and then removes `workDir`. */ - userSid: string; -} - -/** The file in `workDir` the elevated session writes what happened to, as JSON. */ -export const ELEVATED_RESULT_FILE = "result.json"; - -/** The elevated session's exit code when it could not create its private directory, so nothing ran. */ -export const UNSAFE_WORK_DIR_EXIT_CODE = 2; - -/** - * The elevated session. It records each exit code in a JSON file the - * non-elevated setup reads back, because the exit code of an elevated - * process is all Start-Process hands back and it cannot carry both steps. - * - * Nothing it runs or writes is in a place the normal user can change: a - * program running as that user could swap an installer between its hash - * check and its start, plant a DLL next to it, or turn the result file into - * a link to anywhere. So the installer is copied into a new directory under - * ProgramData that only administrators and SYSTEM can write, created with - * that ACL in one step and checked to be empty; the COPY is hashed and run, - * from that directory; the result is written there. dism is found through - * the system directory Windows reports, never an environment variable the - * user can set. - */ -export function elevatedSetupScript(options: ElevatedScriptOptions): string { - const unsafe = UNSAFE_WORK_DIR_EXIT_CODE; - const lines = [ - "# invisible-dots setup: the one step that needs administrator rights (architecture section 11.2).", - "$ErrorActionPreference = 'Stop'", - "$result = [ordered]@{ dism_exit_code = $null; installer_exit_code = $null; install_dir = $null; error = $null }", - `$work = ${psQuote(options.workDir)}`, - `$user = New-Object System.Security.Principal.SecurityIdentifier ${psQuote(options.userSid)}`, - "function New-Rule($sid, $rights) { New-Object System.Security.AccessControl.FileSystemAccessRule($sid, $rights, 'ContainerInherit,ObjectInherit', 'None', 'Allow') }", - `if ((Split-Path -Parent $work) -ne [Environment]::GetFolderPath('CommonApplicationData')) { exit ${unsafe} }`, - "$acl = New-Object System.Security.AccessControl.DirectorySecurity", - "$acl.SetAccessRuleProtection($true, $false)", - "$acl.AddAccessRule((New-Rule (New-Object System.Security.Principal.SecurityIdentifier 'S-1-5-32-544') 'FullControl'))", - "$acl.AddAccessRule((New-Rule (New-Object System.Security.Principal.SecurityIdentifier 'S-1-5-18') 'FullControl'))", - "$acl.AddAccessRule((New-Rule $user 'ReadAndExecute'))", - `if (Test-Path -LiteralPath $work) { exit ${unsafe} }`, - "[void][System.IO.Directory]::CreateDirectory($work, $acl)", - `if (-not ((Get-Acl -LiteralPath $work).AreAccessRulesProtected) -or (@(Get-ChildItem -LiteralPath $work -Force).Count -ne 0)) { exit ${unsafe} }`, - "try {", - ]; - if (options.enableHypervisorPlatform) { - lines.push( - " $dism = Join-Path ([Environment]::SystemDirectory) 'dism.exe'", - ` & $dism /online /enable-feature /featurename:${HYPERVISOR_PLATFORM_FEATURE} /all /norestart`, - " $result.dism_exit_code = $LASTEXITCODE", - ` if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne ${RESTART_REQUIRED_EXIT_CODE}) { throw "dism exited with code $LASTEXITCODE" }`, - ); - } - if (options.installer) { - lines.push( - " $installer = Join-Path $work 'qemu-setup.exe'", - ` Copy-Item -LiteralPath ${psQuote(options.installer.path)} -Destination $installer`, - " $hash = (Get-FileHash -LiteralPath $installer -Algorithm SHA256).Hash.ToLowerInvariant()", - ` if ($hash -ne ${psQuote(options.installer.sha256.toLowerCase())}) { throw "the QEMU installer is not the one that was verified (its SHA-256 is $hash)" }`, - ` $setup = Start-Process -FilePath $installer -ArgumentList ${options.installer.silentArgs.map(psQuote).join(",")} -WorkingDirectory $work -Wait -PassThru`, - " $result.installer_exit_code = $setup.ExitCode", - ' if ($setup.ExitCode -ne 0) { throw "the QEMU installer exited with code $($setup.ExitCode)" }', - " $result.install_dir = (Get-ItemProperty -LiteralPath 'HKLM:\\Software\\qemu64' -ErrorAction SilentlyContinue).Install_Dir", - ); - } - lines.push( - "} catch {", - " $result.error = $_.Exception.Message", - "}", - "Remove-Item -LiteralPath (Join-Path $work 'qemu-setup.exe') -Force -ErrorAction SilentlyContinue", - `[System.IO.File]::WriteAllText((Join-Path $work ${psQuote(ELEVATED_RESULT_FILE)}), ($result | ConvertTo-Json -Compress))`, - "# Nothing in it runs any more: setup, as the normal user, reads the result and removes the directory.", - "$done = Get-Acl -LiteralPath $work", - "$done.AddAccessRule((New-Rule $user 'FullControl'))", - "Set-Acl -LiteralPath $work -AclObject $done", - "", - ); - return lines.join("\r\n"); -} - -/** - * The non-elevated launcher: ONE Start-Process -Verb RunAs -Wait, so the - * person sees exactly one UAC prompt. Declining it makes Start-Process throw, - * which is reported on stderr and as exit code 1. - */ -export function elevationLauncherScript(powershell: string, elevatedScript: string): string { - const args = powershellArgs(elevatedScript).map(psQuote).join(","); - return [ - "$ErrorActionPreference = 'Stop'", - "try {", - ` $elevated = Start-Process -FilePath ${psQuote(powershell)} -Verb RunAs -Wait -PassThru -ArgumentList ${args}`, - " exit $elevated.ExitCode", - "} catch {", - " [Console]::Error.WriteLine($_.Exception.Message)", - " exit 1", - "}", - "", - ].join("\r\n"); -} - -export interface ElevatedResult { - dism_exit_code: number | null; - installer_exit_code: number | null; - /** Where the installer put QEMU, as its own registry value says. */ - install_dir: string | null; - error: string | null; -} - -/** The result file, written by Windows PowerShell; tolerates a byte order mark. */ -export function parseElevatedResult(text: string): ElevatedResult { - const value = JSON.parse(text.replace(/^\uFEFF/, "")) as Record; - const code = (key: string): number | null => { - const v = value[key]; - if (v === null || v === undefined) return null; - if (typeof v !== "number" || !Number.isInteger(v)) throw new Error(`${key} is not an exit code: ${JSON.stringify(v)}`); - return v; - }; - const error = value.error; - const installDir = value.install_dir; - return { - dism_exit_code: code("dism_exit_code"), - installer_exit_code: code("installer_exit_code"), - install_dir: typeof installDir === "string" && installDir.trim() !== "" ? installDir.trim() : null, - error: typeof error === "string" && error.length > 0 ? error : null, - }; -} diff --git a/apps/cli/src/setup/qemu-pin.ts b/apps/cli/src/setup/qemu-pin.ts deleted file mode 100644 index 9a885148..00000000 --- a/apps/cli/src/setup/qemu-pin.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * The QEMU version `setup` installs on Windows, pinned in - * virtualization/qemu/windows.json (architecture sections 2 and 11.2): the - * official installer's URL, its SHA-256 and the arguments that run it - * silently. The project never redistributes QEMU; the pin only says which - * official bytes are acceptable and how to run them. Fields this file does - * not read (size, SHA-512, the provenance notes) are for the person who - * updates the pin. - */ - -export interface WindowsQemuPin { - version: string; - url: string; - sha256: string; - /** Passed to the installer in the elevated session, e.g. ["/S"] for NSIS. */ - silentArgs: string[]; -} - -export const WINDOWS_QEMU_PIN_FILE = "virtualization/qemu/windows.json"; - -/** Validates the pin file, so a typo stops setup before anything is downloaded or elevated. */ -export function parseWindowsQemuPin(value: unknown, origin = WINDOWS_QEMU_PIN_FILE): WindowsQemuPin { - if (typeof value !== "object" || value === null) throw new Error(`${origin}: expected a JSON object`); - const record = value as Record; - const text = (key: string): string => { - const v = record[key]; - if (typeof v !== "string" || v.trim() === "") throw new Error(`${origin}: "${key}" must be a non-empty string`); - return v.trim(); - }; - const version = text("version"); - const url = text("url"); - const sha256 = text("sha256").toLowerCase(); - if (!/^\d+\.\d+/.test(version)) throw new Error(`${origin}: "version" must start with major.minor, got "${version}"`); - let parsed: URL; - try { - parsed = new URL(url); - } catch { - throw new Error(`${origin}: "url" is not a URL: "${url}"`); - } - if (parsed.protocol !== "https:") throw new Error(`${origin}: "url" must use https, got "${url}"`); - if (!/^[0-9a-f]{64}$/.test(sha256)) throw new Error(`${origin}: "sha256" must be 64 hexadecimal characters`); - const silent = record.silent_args; - // Without its silent switch the installer opens a wizard in the elevated session and setup waits on it forever. - if (!Array.isArray(silent) || silent.length === 0 || !silent.every((a) => typeof a === "string" && a.trim() !== "")) { - throw new Error(`${origin}: "silent_args" must be a non-empty list of strings, e.g. ["/S"]`); - } - return { version, url, sha256, silentArgs: silent.map((a: string) => a.trim()) }; -} - -/** - * The file name the installer is saved under: the URL's own name when it is - * a plain .exe name, else a fixed one. It ends up inside a PowerShell string - * and a Windows path, so nothing but letters, digits, ".", "_" and "-" is kept. - */ -export function installerFileName(pin: WindowsQemuPin): string { - let last = ""; - try { - last = decodeURIComponent(new URL(pin.url).pathname.split("/").pop() ?? ""); - } catch { - // A malformed escape in the URL: fall back to the fixed name below. - } - return /^[A-Za-z0-9._-]+\.exe$/i.test(last) ? last : `qemu-${pin.version.replace(/[^A-Za-z0-9.-]/g, "")}-setup.exe`; -} diff --git a/apps/cli/src/setup/setup.ts b/apps/cli/src/setup/setup.ts deleted file mode 100644 index c396a896..00000000 --- a/apps/cli/src/setup/setup.ts +++ /dev/null @@ -1,130 +0,0 @@ -/** - * `invisible-dots setup` (architecture section 11.2): run doctor, install - * only what is missing for QEMU and its accelerator, then check again. The - * rest of doctor's list (images, the web client, the OpenRouter key) has its own commands, - * which setup names at the end instead of running. - */ -import type { DoctorCheck, DoctorCheckId } from "@invisible-dots/shared"; -import { allOk, runDoctor, STORE_OPENROUTER_KEY, WEB_BUILD_COMMAND, type DoctorDeps } from "@invisible-dots/vm-manager"; -import { renderReport } from "../doctor/render.js"; -import { EXIT } from "../exit.js"; -import { installHostPrerequisites, setupRefusal, type InstallDeps, type InstallOutcome, type InstallRequest } from "./install.js"; - -/** The checks setup is responsible for; it succeeds when these are ok. */ -export const SETUP_CHECKS: readonly DoctorCheckId[] = ["qemu", "qemu-img", "accelerator", "accelerator-probe"]; - -export interface SetupDeps { - doctor: DoctorDeps; - install: InstallDeps; - out(text: string): void; - /** Default: the platform module's installHostPrerequisites; tests pass a fake. */ - installPrerequisites?: (request: InstallRequest, deps: InstallDeps) => Promise; -} - -function byId(results: readonly DoctorCheck[]): Map { - return new Map(results.map((r) => [r.id, r])); -} - -function setupReady(results: readonly DoctorCheck[]): boolean { - const checks = byId(results); - return SETUP_CHECKS.every((id) => checks.get(id)?.status === "ok"); -} - -/** What is left after QEMU and the accelerator, as the commands that do it. */ -export function nextSteps(results: readonly DoctorCheck[]): string[] { - const checks = byId(results); - const steps: string[] = []; - if (checks.get("golden-image")?.status !== "ok" || checks.get("runtime-image")?.status !== "ok") steps.push("invisible-dots image build"); - // The row is optional (`DoctorDeps.webBuild`): a report without it has no client to build. - const web = checks.get("web"); - if (web && web.status !== "ok") steps.push(WEB_BUILD_COMMAND); - if (checks.get("openrouter")?.status !== "ok") { - steps.push("invisible-dots server (keep it running, then in another terminal:)"); - steps.push(STORE_OPENROUTER_KEY); - } else { - steps.push("invisible-dots server"); - } - return steps; -} - -function printOutcome(outcome: InstallOutcome, out: (text: string) => void): void { - for (const line of outcome.lines) out(`${line}\n`); -} - -/** What `prepareHost` ends with: the doctor report once QEMU and the accelerator are ready, or the exit code of the run that could not get them ready. */ -export type HostOutcome = { ready: true; results: readonly DoctorCheck[] } | { ready: false; code: number }; - -/** - * The work of `setup`, up to QEMU and its accelerator being ready: the one place that does it, run by `setup` itself - * and as a step of `setup --all`. It prints what it does; what to do next is the caller's to say. - */ -export async function prepareHost(deps: SetupDeps): Promise { - const { out } = deps; - const refusal = setupRefusal(deps.install); - if (refusal) { - out(`${refusal}\n`); - return { ready: false, code: EXIT.usage }; - } - out("checking this host first (invisible-dots doctor):\n\n"); - const before = await runDoctor(deps.doctor); - out(`${renderReport(before)}\n`); - - const checks = byId(before); - const status = (id: DoctorCheckId) => checks.get(id)?.status; - const request = { - installQemu: status("qemu") !== "ok" || status("qemu-img") !== "ok", - enableAccelerator: status("accelerator") === "missing", - }; - - if (setupReady(before)) { - out("QEMU and its accelerator are ready; nothing to install.\n"); - return { ready: true, results: before }; - } - if (!request.installQemu && !request.enableAccelerator) { - out("setup cannot fix this by installing something:\n"); - for (const id of SETUP_CHECKS) { - const check = checks.get(id); - if (check && check.status !== "ok") out(` ${check.label}: ${check.detail}${check.fix ? `\n fix: ${check.fix}` : ""}\n`); - } - return { ready: false, code: EXIT.failed }; - } - let outcome: InstallOutcome; - try { - outcome = await (deps.installPrerequisites ?? installHostPrerequisites)(request, deps.install); - } catch (error) { - outcome = { kind: "failed", lines: [(error as Error).message] }; - } - printOutcome(outcome, out); - if (outcome.kind === "restart") return { ready: false, code: EXIT.restart }; - if (outcome.kind === "failed") { - out("setup stopped; nothing after the failed step was run.\n"); - return { ready: false, code: EXIT.failed }; - } - if (outcome.kind === "manual") { - out("then run: invisible-dots doctor\n"); - return { ready: false, code: EXIT.failed }; - } - out("\nchecking again:\n\n"); - const after = await runDoctor(deps.doctor); - out(`${renderReport(after)}\n`); - if (!setupReady(after)) { - out("QEMU or its accelerator is still not usable; see the fix lines above.\n"); - return { ready: false, code: EXIT.failed }; - } - return { ready: true, results: after }; -} - -export async function runSetup(deps: SetupDeps): Promise { - const outcome = await prepareHost(deps); - return outcome.ready ? finish(outcome.results, deps.out) : outcome.code; -} - -function finish(results: readonly DoctorCheck[], out: (text: string) => void): number { - if (allOk(results)) { - out("this host is ready: invisible-dots server\n"); - } else { - out("QEMU is ready. Next:\n"); - for (const step of nextSteps(results)) out(` ${step}\n`); - } - return EXIT.ok; -} diff --git a/apps/cli/src/web.ts b/apps/cli/src/web.ts deleted file mode 100644 index 21752e98..00000000 --- a/apps/cli/src/web.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * The web client as a child of `invisible-dots server` (architecture section - * 9.7): the built Next standalone server, started on its own loopback port and - * stopped with the control plane. The web client is a companion, never a - * dependency: when it cannot start, the control plane and the command line go - * on without it, and the server says why. - */ -import { stat } from "node:fs/promises"; -import { dirname, join } from "node:path"; -import { abortableSleep, allowlistedEnvironment, BASE_CHILD_ENV_VARS, ENV } from "@invisible-dots/shared"; -import { startProcess, WEB_BUILD_COMMAND, type StartedProcess, type StartProcessOptions, type WebBuild } from "@invisible-dots/vm-manager"; - -/** - * Where `npm run build --workspace @invisible-dots/web` leaves the server - * (apps/web/scripts/standalone.mjs writes it there: Next puts the standalone - * tree under .next/standalone and the app at its own path inside it, because - * the workspace root is the tracing root) and the static files it serves. - */ -const ENTRY = ["apps", "web", ".next", "standalone", "apps", "web", "server.js"] as const; -const STATIC = ["apps", "web", ".next", "standalone", "apps", "web", ".next", "static"] as const; - -/** The script `npm run build --workspace @invisible-dots/web` runs, which `setup --all` runs with node itself. */ -export function webBuildScript(repoRoot: string): string { - return join(repoRoot, "apps", "web", "scripts", "build.mjs"); -} - -export async function locateWebBuild(repoRoot: string): Promise { - const entry = join(repoRoot, ...ENTRY); - for (const path of [entry, join(repoRoot, ...STATIC)]) { - if (!(await stat(path).catch(() => undefined))) return { entry, missing: path }; - } - return { entry, missing: undefined }; -} - -export class WebStartError extends Error {} - -export interface WebServer { - /** The address the person opens, e.g. http://127.0.0.1:3000. */ - url: string; - /** Stop the child; resolves once it has exited. Idempotent. */ - stop(): Promise; -} - -export interface WebServerOptions { - build: WebBuild; - /** A fixed port: the person has to know where to go (parseListen refuses port 0 for this setting). */ - listen: { host: string; port: number }; - /** The control plane's address, where the web server's proxy sends `/api`. */ - apiUrl: string; - /** The server's own environment: only what the web server needs is passed on. */ - env: Record; - /** Called once if the child exits while the server runs on. */ - onUnexpectedExit: (message: string) => void; - /** Ends the wait for the child to answer, e.g. on Ctrl+C during startup. */ - signal?: AbortSignal; - start?: (command: string, args: readonly string[], options: StartProcessOptions) => StartedProcess; - /** How long the child gets to answer its first request. */ - readyTimeoutMs?: number; - /** How long the child gets to exit after SIGTERM before it is killed. */ - stopTimeoutMs?: number; -} - -const READY_TIMEOUT_MS = 30_000; -const STOP_TIMEOUT_MS = 10_000; -const READY_POLL_MS = 100; - -/** - * The environment of the web server. Not the server's own: it may hold - * DATABASE_URL with its password. The web server gets what it reads: where - * to listen (Next's PORT and HOSTNAME), where the API is, which data - * directory holds `api.token` (read on every request, so a rotated token - * takes effect), the API token itself only when the server was given it that - * way, and the extra host names its Host check allows. `parentPid` is the - * server's own pid: the web server exits when that process is gone, so a - * `kill -9` of the server does not leave it holding the port. - */ -export function webEnvironment(options: Pick & { parentPid: number }): Record { - const { env, listen, apiUrl, parentPid } = options; - return { - ...allowlistedEnvironment(env, [...BASE_CHILD_ENV_VARS, ENV.HOME, ENV.TOKEN, ENV.WEB_ALLOWED_HOSTS]), - [ENV.URL]: apiUrl, - [ENV.WEB_PARENT_PID]: String(parentPid), - PORT: String(listen.port), - HOSTNAME: listen.host, - }; -} - -function urlOf(listen: { host: string; port: number }): string { - return `http://${listen.host.includes(":") ? `[${listen.host}]` : listen.host}:${listen.port}`; -} - -/** Whether anything answers HTTP at `url`. */ -function answers(url: string): Promise { - return fetch(url, { redirect: "manual", signal: AbortSignal.timeout(2000) }).then( - (response) => response.body?.cancel().then(() => true, () => true) ?? true, - () => false, - ); -} - -/** - * Start the web server and resolve once it answers a request. Throws - * WebStartError, with the child already gone, when the build is incomplete, - * the child exits first (a port in use ends here), it does not answer in time - * or `signal` aborts. - */ -export async function startWebServer(options: WebServerOptions): Promise { - const { build, listen } = options; - if (build.missing) { - throw new WebStartError(`the web client is not built (${build.missing} does not exist); build it with: ${WEB_BUILD_COMMAND}`); - } - if (options.signal?.aborted) throw new WebStartError("stopped before the web client started"); - const url = urlOf(listen); - // Something else answering there would make the wait below succeed for the wrong server. - if (await answers(url)) { - throw new WebStartError(`${url} is already in use; free the port or set ${ENV.WEB_LISTEN} to another host:port`); - } - // The server script chdirs into its own directory, so that is where it starts: never the server's directory. - const env = webEnvironment({ ...options, parentPid: process.pid }); - const child = (options.start ?? startProcess)(process.execPath, [build.entry], { cwd: dirname(build.entry), env }); - - let exited = false; - let started = false; - let stopping = false; - let exitText = ""; - const exit = new Promise((resolve) => { - child.onExit((code, signal, error) => { - exited = true; - const why = error?.message ?? (code === null ? `signal ${signal}` : `exit code ${code}`); - exitText = `the web server exited (${why})${child.stderrTail().trim() ? `: ${child.stderrTail().trim().split(/\r?\n/).slice(-3).join(" | ")}` : ""}`; - if (started && !stopping) options.onUnexpectedExit(exitText); - resolve(); - }); - }); - // The server's own hard exit (a second Ctrl+C) must not leave the child holding the port. - const killAtExit = () => child.kill("SIGKILL"); - process.on("exit", killAtExit); - - const stop = async () => { - if (stopping) return exit; - stopping = true; - process.off("exit", killAtExit); - child.kill("SIGTERM"); - const grace = setTimeout(() => child.kill("SIGKILL"), options.stopTimeoutMs ?? STOP_TIMEOUT_MS); - await exit; - clearTimeout(grace); - }; - - const deadline = Date.now() + (options.readyTimeoutMs ?? READY_TIMEOUT_MS); - try { - for (;;) { - if (options.signal?.aborted) throw new WebStartError("stopped while the web client was starting"); - if (exited) throw new WebStartError(exitText); - if (Date.now() > deadline) throw new WebStartError(`the web server did not answer at ${url} within ${(options.readyTimeoutMs ?? READY_TIMEOUT_MS) / 1000} s`); - if ((await answers(url)) && !exited) { - started = true; - return { url, stop }; - } - await abortableSleep(READY_POLL_MS, options.signal); - } - } catch (error) { - await stop(); - throw error; - } -} diff --git a/apps/cli/test/build.test.ts b/apps/cli/test/build.test.ts deleted file mode 100644 index 3dc7541d..00000000 --- a/apps/cli/test/build.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { agentdBuildCommand, defaultRuntimeInputs } from "@invisible-dots/image-builder"; -import { WEB_BUILD_COMMAND } from "@invisible-dots/vm-manager"; -import { fakeRunner, type Answer } from "../../vm-manager/test/doctor-fakes.js"; -import { buildAgent, buildWeb, GO_INSTALL_HINT, type BuildDeps } from "../src/setup/build.js"; -import { webBuildScript } from "../src/web.js"; - -const REPO = "/repo"; - -function deps(respond: (command: string, args: readonly string[]) => Answer, options: { built?: boolean[] } = {}) { - const runner = fakeRunner(respond); - const built = [...(options.built ?? [false, true])]; - const result: BuildDeps = { - run: runner.run, - env: { PATH: "/usr/bin", HOME: "/home/someone" }, - repoRoot: REPO, - node: "/usr/bin/node", - webBuilt: async () => built.length > 1 ? built.shift()! : built[0]!, - }; - return { deps: result, calls: runner.calls }; -} - -describe("the guest daemon build", () => { - it("runs the image builder's go build command with its linux/amd64 environment added to the caller's", async () => { - const { deps: d, calls } = deps(() => ({})); - const step = await buildAgent(d); - const build = agentdBuildCommand(REPO); - expect(calls).toHaveLength(1); - expect(calls[0]!.command).toBe("go"); - expect(calls[0]!.args).toEqual(build.args); - expect(calls[0]!.options.env).toEqual({ PATH: "/usr/bin", HOME: "/home/someone", CGO_ENABLED: "0", GOOS: "linux", GOARCH: "amd64" }); - expect(step).toEqual({ ok: true, lines: [`built ${defaultRuntimeInputs(REPO).agentdBinary}`] }); - }); - - it("asks for Go, with both hosts' install commands, when it is not installed, and to open a new terminal", async () => { - const missing = Object.assign(new Error("spawn go ENOENT"), { code: "ENOENT" }); - const { deps: d } = deps(() => ({ code: null, startError: missing })); - const step = await buildAgent(d); - expect(step.ok).toBe(false); - expect(step.lines).toContain(GO_INSTALL_HINT); - expect(GO_INSTALL_HINT).toContain("winget install -e --id GoLang.Go"); - expect(GO_INSTALL_HINT).toContain("sudo snap install go --classic"); - expect(step.lines.join("\n")).toContain("open a new terminal"); - expect(step.lines.join("\n")).toContain("invisible-dots setup --all"); - }); - - it("shows the end of the compiler's complaint when the build fails", async () => { - const stderr = Array.from({ length: 30 }, (_, i) => `error line ${i}`).join("\n"); - const { deps: d } = deps(() => ({ code: 1, stderr })); - const step = await buildAgent(d); - expect(step.ok).toBe(false); - expect(step.lines[0]).toBe("building dot-agentd failed (exit code 1):"); - expect(step.lines).toHaveLength(11); - expect(step.lines.at(-1)).toBe(" error line 29"); - }); - - it("reports a build that ran out of time", async () => { - const { deps: d } = deps(() => ({ code: null, timedOut: true })); - expect((await buildAgent(d)).lines[0]).toBe("building dot-agentd failed (it did not finish within 15 minutes):"); - }); -}); - -describe("the web client build", () => { - it("skips a client that is built, and says how to build it again", async () => { - const { deps: d, calls } = deps(() => ({}), { built: [true] }); - const step = await buildWeb(d); - expect(calls).toEqual([]); - expect(step.ok).toBe(true); - expect(step.lines[0]).toContain(WEB_BUILD_COMMAND); - }); - - it("runs the web build script with node, no shell, Next's telemetry off and the person's terminal for its output", async () => { - const { deps: d, calls } = deps(() => ({})); - const step = await buildWeb(d); - expect(step).toEqual({ ok: true, lines: ["built the web client"] }); - expect(calls).toHaveLength(1); - expect(calls[0]!.command).toBe("/usr/bin/node"); - expect(calls[0]!.args).toEqual([webBuildScript(REPO)]); - expect(calls[0]!.options.env).toMatchObject({ PATH: "/usr/bin" }); - expect(calls[0]!.options.inheritStdio).toBe(true); - }); - - it("stops with the command to run again when the build fails", async () => { - const { deps: d } = deps(() => ({ code: 1 })); - const step = await buildWeb(d); - expect(step.ok).toBe(false); - expect(step.lines[0]).toBe("building the web client failed (exit code 1; its output is above)"); - expect(step.lines[1]).toContain("invisible-dots setup --all"); - }); - - it("does not call a build done whose server files are not there", async () => { - const { deps: d } = deps(() => ({}), { built: [false] }); - const step = await buildWeb(d); - expect(step.ok).toBe(false); - expect(step.lines[0]).toContain("not where invisible-dots looks"); - expect(step.lines[0]).toContain(WEB_BUILD_COMMAND); - }); -}); diff --git a/apps/cli/test/cli.test.ts b/apps/cli/test/cli.test.ts deleted file mode 100644 index 6bd3605c..00000000 --- a/apps/cli/test/cli.test.ts +++ /dev/null @@ -1,813 +0,0 @@ -import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http"; -import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import type { AddressInfo } from "node:net"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { parseDotConfig } from "@invisible-dots/shared"; -import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import cliPackage from "../package.json" with { type: "json" }; -import { commandOf, EXIT, interruptIsAsked, run, SAMPLE_DOT, type CliIo, type HostCommands } from "../src/index.js"; - -const TOKEN = "cli-test-token-0123456789"; - -interface Recorded { - method: string; - path: string; - query: URLSearchParams; - body: unknown; -} - -const now = "2026-10-02T08:00:00.000Z"; -const dot = { - id: "dot_01abc", - name: "fare-watch", - config: { - name: "fare-watch", - model: { provider: "openrouter", id: "test/model" }, - computer: { cpu: 2, memory: "4gb", disk: "40gb", idle_timeout: "15m" }, - }, - status: "READY", - error: null, - config_version: 1, - created_at: now, - updated_at: now, - computer_state: "RUNNING", -}; -const computer = { - dot_id: dot.id, - vm_name: "invisible-dot-dot_01abc", - guest_port: 40123, - pid: 4242, - state: "RUNNING", - golden_image: null, - runtime_image: null, - event_cursor: 3, - last_active_at: now, - next_automation_at: "2030-01-01T09:00:00.000Z", - stop_reason: null, - last_error: null, - updated_at: now, - ready: true, -}; -const task = { - id: "task_01", - dot_id: dot.id, - description: "find the cheapest day", - priority: 0, - status: "COMPLETED", - created_at: now, - scheduled_at: null, - started_at: now, - finished_at: now, - summary: "tuesday", - error: null, -}; -const channel = { - kind: "telegram", - enabled: true, - status: "connected", - status_detail: null, - account: "dot_helper_bot", - settings: { approvals: true, notify_tasks: true, show_arguments: true }, - peers: [{ peer_id: "10", role: "owner", label: "Ann (@ann)", created_at: now }], - created_at: now, -}; -let events = Array.from({ length: 5 }, (_, i) => ({ - id: i + 1, - dot_id: dot.id, - type: i % 2 ? "agent.state" : "automation.next_run", - data: i % 2 ? { state: "IDLE", guest_event_id: "x", guest_ts: now } : { next_run_at_ms: null }, - source: "guest", - guest_seq: i + 1, - created_at: now, -})); - -let server: Server; -let base: string; -const requests: Recorded[] = []; -let stopped = false; -let stoppedByPerson = false; -/** The Dot has no automation due: the engine reported none. */ -let noAutomationDue = false; -/** What the fake server answers about WhatsApp. */ -let whatsappLinked = false; -let whatsappOff = false; -let linkFrames: { state: string; [key: string]: unknown }[] = []; -/** The config_version the fake server holds: an update that expects another one is the 409 of a concurrent change. */ -let configVersion = 1; -/** Another client saves the Dot's config between a read and the PATCH that follows it. */ -let savedMeanwhile = false; - -function send(res: ServerResponse, status: number, body?: unknown) { - res.writeHead(status, { "content-type": "application/json" }); - res.end(body === undefined ? undefined : JSON.stringify(body)); -} - -async function handle(req: IncomingMessage, res: ServerResponse) { - const url = new URL(req.url ?? "/", "http://x"); - const chunks: Buffer[] = []; - for await (const chunk of req) chunks.push(chunk as Buffer); - const text = Buffer.concat(chunks).toString("utf8"); - const body = text ? JSON.parse(text) : undefined; - requests.push({ method: req.method ?? "", path: url.pathname, query: url.searchParams, body }); - if (req.headers.authorization !== `Bearer ${TOKEN}`) return send(res, 401, { error: "unauthorized", message: "bad token" }); - const route = `${req.method} ${url.pathname}`; - const byName = (p: string) => p.replace("/fare-watch", `/${dot.id}`); - switch (byName(route)) { - case "GET /api/health": - return send(res, 200, { status: "ok", database: "ok", version: "9.9.9" }); - case "POST /api/dots": - if (typeof body?.config === "string" && body.config.includes("Bad Name")) { - return send(res, 400, { - error: "invalid_config", - message: "invalid Dot configuration: name: must be lowercase", - details: [{ path: "name", message: "must be lowercase" }], - }); - } - return send(res, 201, { ...dot, status: "CREATING" }); - case "GET /api/dots": - return send(res, 200, { dots: [dot] }); - case `GET /api/dots/${dot.id}`: - return send(res, 200, { ...dot, config_version: configVersion }); - case `PATCH /api/dots/${dot.id}`: - if (savedMeanwhile) configVersion++; - if (body?.expected_config_version !== configVersion) return send(res, 409, { error: "dot_changed", message: "the Dot's config changed since it was read" }); - return send(res, 200, { ...dot, config_version: configVersion + 1 }); - case `DELETE /api/dots/${dot.id}`: - return send(res, 202, { accepted: true }); - case "POST /api/tasks/task_02/cancel": - return send(res, 200, { ...task, id: "task_02", status: "CANCELLED" }); - case "POST /api/tasks/task_01/cancel": - return send(res, 409, { error: "task_finished", message: "task task_01 is already COMPLETED" }); - case `GET /api/dots/${dot.id}/computer`: - return send(res, 200, { ...(stoppedByPerson ? { ...computer, state: "STOPPED", stop_reason: "user", ready: false } : computer), ...(noAutomationDue ? { next_automation_at: null } : {}) }); - case `GET /api/dots/${dot.id}/tasks`: - return send(res, 200, { tasks: [task] }); - case `POST /api/dots/${dot.id}/tasks`: - return send(res, 201, { ...task, id: "task_02", status: "PENDING", description: body.description }); - case `POST /api/dots/${dot.id}/messages`: - return send(res, 202, { message_id: "msg_1", event_id: 9, delivery: "queued" }); - case `POST /api/dots/${dot.id}/computer/start`: - case `POST /api/dots/${dot.id}/computer/stop`: - case `POST /api/dots/${dot.id}/computer/reboot`: - return send(res, 202, { accepted: true }); - case `GET /api/dots/${dot.id}/browser-identities`: - if (stopped) return send(res, 409, { error: "computer_stopped", message: "the computer of Dot fare-watch is STOPPED; start it first" }); - return send(res, 200, { - identities: [ - { id: "shop-abc123", name: "Shop", createdAt: now, lastUsedAt: null, status: "available", profilePath: "/p", hasProxy: false }, - { id: "work-def456", name: "Work", createdAt: now, lastUsedAt: null, status: "available", profilePath: "/q", hasProxy: true }, - ], - }); - case "GET /api/approvals": - return send(res, 200, { - approvals: [{ id: "apr_1", dot_id: dot.id, task_id: null, tool: "browser_identity_delete", permission: "browser.identity.delete", arguments: {}, reason: "cleanup", status: "pending", note: null, created_at: now, resolved_at: null }], - }); - case "POST /api/approvals/apr_1/approve": - return send(res, 200, { id: "apr_1", status: "approved", note: body?.note ?? null }); - case "POST /api/approvals/apr_1/reject": - return send(res, 200, { id: "apr_1", status: "rejected", note: body?.note ?? null }); - case "PUT /api/secrets/openrouter": - return send(res, 200, { pushed: 2 }); - case `GET /api/dots/${dot.id}/mcp-secrets`: - return send(res, 200, { dot_id: dot.id, secrets: [{ server: "web", name: "Authorization", set: false }] }); - case `PUT /api/dots/${dot.id}/mcp-secrets/web/Authorization`: - return send(res, 200, { dot_id: dot.id, secrets: [{ server: "web", name: "Authorization", set: true }] }); - case `DELETE /api/dots/${dot.id}/mcp-secrets/web/Authorization`: - return send(res, 200, { dot_id: dot.id, secrets: [{ server: "web", name: "Authorization", set: false }] }); - case `GET /api/dots/${dot.id}/tools`: - if (stopped) return send(res, 409, { error: "computer_stopped", message: "the computer of Dot fare-watch is STOPPED; start it first" }); - return send(res, 200, { - tools: [], - mcp_servers: [ - { name: "time", state: "connected", error: null, tools: 2 }, - { name: "web", state: "failed", error: "its secret Authorization is not set", tools: 0 }, - ], - }); - case `GET /api/dots/${dot.id}/channels`: - return send(res, 200, { channels: whatsappLinked ? [channel, { ...channel, kind: "whatsapp", account: "15550001111", peers: [] }] : [channel] }); - case `PUT /api/dots/${dot.id}/channels/telegram`: - if (body?.token === "9:REFUSED-TOKEN-VALUE") { - return send(res, 400, { error: "invalid_credentials", message: "Telegram refused the bot token: it is wrong, or it was revoked in @BotFather. Paste a current token." }); - } - return send(res, 201, channel); - case `POST /api/dots/${dot.id}/channels/telegram/pairing`: - return send(res, 201, { code: "ABCD2345", deep_link: "https://t.me/dot_helper_bot?start=ABCD2345", message: "/start ABCD2345", expires_at: "2026-10-02T08:10:00.000Z" }); - case `POST /api/dots/${dot.id}/channels/whatsapp/pairing`: - if (whatsappLinked) { - return send(res, 201, { code: "WXYZ6789", deep_link: "https://wa.me/15550001111?text=pair%20WXYZ6789", message: "pair WXYZ6789", expires_at: "2026-10-02T08:10:00.000Z" }); - } - return send(res, 201, { code: "WXYZ6789", deep_link: null, message: "pair WXYZ6789", expires_at: "2026-10-02T08:10:00.000Z" }); - case `POST /api/dots/${dot.id}/channels/whatsapp/link`: - if (whatsappOff) return send(res, 400, { error: "invalid_request", message: 'no "whatsapp" channel: it is off: set INVISIBLE_DOTS_WHATSAPP=1 and restart the server to turn it on' }); - return send(res, 202, { ...channel, kind: "whatsapp", status: "connecting", account: null, peers: [] }); - case `GET /api/dots/${dot.id}/channels/whatsapp/qr`: - res.writeHead(200, { "content-type": "text/event-stream" }); - res.write(": connected\n\n"); - for (const frame of linkFrames) res.write(`data: ${JSON.stringify(frame)}\n\n`); - if (linkFrames.at(-1)?.state === "linked" || linkFrames.at(-1)?.state === "failed") return res.end(); - return; // left open, like the real stream - case `DELETE /api/dots/${dot.id}/channels/telegram`: - case `DELETE /api/dots/${dot.id}/channels/whatsapp`: - return send(res, 204); - case `GET /api/dots/${dot.id}/events`: { - // The route's paging: after and before bound the ids, order=desc gives the newest first, limit keeps that many. - const after = Number(url.searchParams.get("after") ?? 0); - const before = Number(url.searchParams.get("before") ?? Infinity); - const kept = events.filter((e) => e.id > after && e.id < before); - const ordered = url.searchParams.get("order") === "desc" ? [...kept].reverse() : kept; - return send(res, 200, { events: ordered.slice(0, Number(url.searchParams.get("limit") ?? 1000)) }); - } - case "GET /api/stream": { - res.writeHead(200, { "content-type": "text/event-stream" }); - const after = Number(url.searchParams.get("after") ?? 0); - res.write(": connected\n\n"); - const live = { ...events[0]!, id: after + 1, type: "task.completed", data: { task_id: "task_02", summary: "done" } }; - res.write(`id: ${live.id}\ndata: ${JSON.stringify(live)}\n\n`); - return; // left open, like the real stream - } - default: - return send(res, 404, { error: "not_found", message: `no route ${route}` }); - } -} - -let configDir: string; - -beforeAll(async () => { - server = createServer((req, res) => void handle(req, res)); - await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); - base = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; - configDir = await mkdtemp(join(tmpdir(), "idots-cli-")); -}); - -afterAll(async () => { - server.closeAllConnections(); - await new Promise((resolve) => server.close(() => resolve())); - await rm(configDir, { recursive: true, force: true }); -}); - -beforeEach(() => { - requests.length = 0; - stopped = false; - stoppedByPerson = false; - noAutomationDue = false; - whatsappLinked = false; - whatsappOff = false; - linkFrames = []; - configVersion = 1; - savedMeanwhile = false; -}); - -async function cli( - argv: string[], - options: { env?: Record; stdin?: string; line?: string; tty?: boolean; signal?: AbortSignal; host?: HostCommands } = {}, -) { - let stdout = ""; - let stderr = ""; - const io: CliIo = { - stdout: (t) => (stdout += t), - stderr: (t) => (stderr += t), - readStdin: async () => options.stdin ?? "", - readSecret: async () => options.line ?? "", - stdinIsTTY: options.tty ?? false, - env: { INVISIBLE_DOTS_URL: base, INVISIBLE_DOTS_TOKEN: TOKEN, INVISIBLE_DOTS_HOME: configDir, ...options.env }, - cwd: configDir, - ...(options.signal ? { signal: options.signal } : {}), - ...(options.host ? { host: options.host } : {}), - }; - const code = await run(argv, io); - return { code, stdout, stderr }; -} - -describe("usage", () => { - it("prints help with exit 0, and exit 2 with no command, an unknown command or an unknown flag", async () => { - expect((await cli(["--help"])).code).toBe(EXIT.ok); - const none = await cli([]); - expect(none.code).toBe(EXIT.usage); - expect(none.stdout).toContain("invisible-dots setup"); - expect((await cli(["launch"])).stderr).toMatch(/unknown command "launch"/); - expect((await cli(["list", "--bogus"])).code).toBe(EXIT.usage); - expect((await cli(["status"])).stderr).toMatch(/missing /); - expect((await cli(["--version"])).stdout).toBe(`${cliPackage.version}\n`); - }); -}); - -describe("server and token", () => { - it("reads the token from /config/api.token when INVISIBLE_DOTS_TOKEN is unset", async () => { - await mkdir(join(configDir, "config"), { recursive: true }); - await writeFile(join(configDir, "config", "api.token"), `${TOKEN}\n`); - const result = await cli(["list"], { env: { INVISIBLE_DOTS_TOKEN: "" } }); - expect(result.code).toBe(EXIT.ok); - await rm(join(configDir, "config"), { recursive: true }); - }); - - it("exit 4 without a token or with a refused one, exit 3 when the server is unreachable", async () => { - const missing = await cli(["list"], { env: { INVISIBLE_DOTS_TOKEN: "", INVISIBLE_DOTS_HOME: join(configDir, "none") } }); - expect(missing.code).toBe(EXIT.auth); - expect(missing.stderr).toMatch(/no API token: .*api\.token does not exist yet; start the server once/); - const refused = await cli(["list"], { env: { INVISIBLE_DOTS_TOKEN: "wrong-token-123456789" } }); - expect(refused.code).toBe(EXIT.auth); - expect(refused.stderr).toMatch(/refused the API token/); - const down = await cli(["list"], { env: { INVISIBLE_DOTS_URL: "http://127.0.0.1:1" } }); - expect(down.code).toBe(EXIT.unreachable); - expect(down.stderr).toMatch(/cannot reach the invisible_dots API/); - }); -}); - -describe("commands", () => { - it("init writes the sample, checks the server and refuses to overwrite without --force", async () => { - const first = await cli(["init", "sample.yaml"]); - expect(first.code).toBe(EXIT.ok); - expect(first.stdout).toMatch(/is reachable \(version 9\.9\.9/); - expect(await readFile(join(configDir, "sample.yaml"), "utf8")).toBe(SAMPLE_DOT); - const again = await cli(["init", "sample.yaml"]); - expect(again.code).toBe(EXIT.failed); - expect(again.stderr).toMatch(/already exists/); - expect((await cli(["init", "sample.yaml", "--force"])).code).toBe(EXIT.ok); - }); - - it("writes a sample the host accepts as it is: every key of it is one the schema knows", () => { - expect(parseDotConfig(SAMPLE_DOT).name).toBe("my-first-dot"); - }); - - it("create sends the YAML text and prints validation details on 400", async () => { - await writeFile(join(configDir, "good.yaml"), SAMPLE_DOT); - const ok = await cli(["create", "good.yaml"]); - expect(ok.code).toBe(EXIT.ok); - expect(ok.stdout).toMatch(/created Dot fare-watch/); - expect(requests.find((r) => r.method === "POST")?.body).toEqual({ config: SAMPLE_DOT }); - - await writeFile(join(configDir, "bad.yaml"), "name: Bad Name\n"); - const bad = await cli(["create", "bad.yaml"]); - expect(bad.code).toBe(EXIT.failed); - expect(bad.stderr).toMatch(/\[400 invalid_config\]/); - expect(bad.stderr).toMatch(/name: must be lowercase/); - expect((await cli(["create", "missing.yaml"])).code).toBe(EXIT.usage); - }); - - it("list, status and tasks print tables, and --json prints the data", async () => { - const list = await cli(["list"]); - expect(list.stdout).toMatch(/^NAME\s+STATUS\s+COMPUTER/); - expect(list.stdout).toContain("fare-watch READY"); - const json = await cli(["list", "--json"]); - expect(JSON.parse(json.stdout)[0].id).toBe(dot.id); - const status = await cli(["status", "fare-watch"]); - expect(status.code).toBe(EXIT.ok); - expect(status.stdout).toMatch(/computer\s+RUNNING, ready/); - expect(status.stdout).toMatch(/next automation\s+2030-01-01T09:00:00.000Z/); - expect(status.stdout).toContain("task_01"); - // It shows the newest ten tasks, and asks for ten. - expect(requests.find((r) => r.path === "/api/dots/fare-watch/tasks")?.query.get("limit")).toBe("10"); - expect((await cli(["tasks", "fare-watch"])).stdout).toContain("COMPLETED"); - }); - - it("status does not say paused for a Dot the person stopped that has no automation due", async () => { - stoppedByPerson = true; - noAutomationDue = true; - const status = await cli(["status", "fare-watch"]); - expect(status.stdout).toMatch(/next automation\s+none due/); - expect(status.stdout).not.toMatch(/paused/); - }); - - it("status says the automations are paused while the person's stop lasts, and stop says so when it is asked for", async () => { - stoppedByPerson = true; - const status = await cli(["status", "fare-watch"]); - expect(status.stdout).toMatch(/computer\s+STOPPED/); - expect(status.stdout).toMatch(/next automation\s+paused: the computer was stopped by you \(start it to resume\)/); - expect(status.stdout).not.toContain("2030-01-01T09:00:00.000Z"); - - const stop = await cli(["computer", "fare-watch", "stop"]); - expect(stop.stdout).toMatch(/automations are paused while the computer is stopped; resume them with: invisible-dots computer fare-watch start/); - expect((await cli(["computer", "fare-watch", "start"])).stdout).not.toMatch(/paused/); - }); - - it("message and task send what was typed", async () => { - const message = await cli(["message", "fare-watch", "how", "is", "it", "going?"]); - expect(message.stdout).toMatch(/message queued/); - expect(requests.at(-1)?.body).toEqual({ text: "how is it going?" }); - const queued = await cli(["task", "fare-watch", "check", "Lisbon", "--priority", "3", "--at", "2030-01-01T08:00:00Z"]); - expect(queued.code).toBe(EXIT.ok); - expect(requests.at(-1)?.body).toEqual({ description: "check Lisbon", priority: 3, scheduled_at: "2030-01-01T08:00:00.000Z" }); - expect((await cli(["task", "fare-watch", "x", "--priority", "high"])).code).toBe(EXIT.usage); - expect((await cli(["message", "fare-watch"])).code).toBe(EXIT.usage); - }); - - it("computer actions, and browser identities with the server's 409 shown", async () => { - for (const action of ["start", "stop", "reboot"]) { - expect((await cli(["computer", "fare-watch", action])).code).toBe(EXIT.ok); - expect(requests.at(-1)?.path).toBe(`/api/dots/fare-watch/computer/${action}`); - } - expect((await cli(["computer", "fare-watch", "pause"])).code).toBe(EXIT.usage); - const listed = (await cli(["browser", "fare-watch", "identities"])).stdout; - expect(listed).toContain("shop-abc123"); - // The identity has no proxy of its own, the normal case: the column says none instead of asking for one; one that has a - // proxy says only that. - expect(listed).toMatch(/shop-abc123\s+Shop\s+available\s+never\s+-\s*$/m); - expect(listed).toMatch(/work-def456\s+Work\s+available\s+never\s+yes\s*$/m); - stopped = true; - const conflict = await cli(["browser", "fare-watch", "identities"]); - expect(conflict.code).toBe(EXIT.failed); - expect(conflict.stderr).toMatch(/start it first \[409 computer_stopped\]/); - }); - - it("approvals, approve and reject", async () => { - const pending = await cli(["approvals"]); - expect(pending.stdout).toContain("apr_1"); - const listed = requests.find((r) => r.path === "/api/approvals"); - expect(listed?.query.get("status")).toBe("pending"); - expect(listed?.query.get("order")).toBeNull(); - // The Dot by its name, and the question and the permission in the web client's words. - expect(pending.stdout.split("\n")[0]).toMatch(/^ID\s+STATUS\s+DOT\s+WANTS TO\s+PERMISSION\s+REASON$/); - expect(pending.stdout).toMatch(/apr_1\s+pending\s+fare-watch\s+delete a browser identity\s+Delete browser identities \(high risk\)\s+cleanup/); - requests.length = 0; - await cli(["approvals", "--all"]); - const all = requests.find((r) => r.path === "/api/approvals"); - expect(all?.query.get("status")).toBeNull(); - // The newest first, so the cap of the list drops the oldest and never the newest. - expect(all?.query.get("order")).toBe("desc"); - const approved = await cli(["approve", "apr_1", "--note", "fine"]); - expect(approved.stdout).toBe("approval apr_1 approved\n"); - expect(requests.at(-1)?.body).toEqual({ note: "fine" }); - expect((await cli(["reject", "apr_1"])).stdout).toBe("approval apr_1 rejected\n"); - expect(requests.at(-1)?.body).toEqual({}); - await cli(["approve", "apr_1", "--always"]); - expect(requests.at(-1)?.body).toEqual({ always: true }); - await cli(["approve", "apr_1", "--always", "--note", "ok"]); - expect(requests.at(-1)?.body).toEqual({ note: "ok", always: true }); - const refused = await cli(["reject", "apr_1", "--always"]); - expect(refused.code).toBe(EXIT.usage); - expect(refused.stderr).toContain("--always applies to approve"); - }); - - it("secret openrouter reads the key from stdin only", async () => { - const stored = await cli(["secret", "openrouter"], { stdin: "sk-or-v1-abc\n" }); - expect(stored.code).toBe(EXIT.ok); - expect(stored.stdout).toMatch(/pushed to 2 running Dots/); - expect(requests.at(-1)?.body).toEqual({ value: "sk-or-v1-abc" }); - await cli(["secret", "openrouter", "--dot", "fare-watch"], { stdin: "sk-or-v1-abc" }); - expect(requests.at(-1)?.body).toEqual({ value: "sk-or-v1-abc", dot_id: "fare-watch" }); - const inArgs = await cli(["secret", "openrouter", "sk-or-v1-abc"]); - expect(inArgs.code).toBe(EXIT.usage); - expect(inArgs.stderr).toMatch(/never from arguments/); - expect((await cli(["secret", "openrouter"], { stdin: " " })).code).toBe(EXIT.usage); - }); - - it("secret mcp reads the value from stdin only, keeps a space a header needs, and --clear removes it", async () => { - const stored = await cli(["secret", "mcp", "--dot", "fare-watch", "web", "Authorization"], { stdin: "Bearer tok-1\n" }); - expect(stored.code).toBe(EXIT.ok); - expect(stored.stdout).toContain("Authorization of the MCP server web stored"); - expect(requests.at(-1)).toMatchObject({ method: "PUT", body: { value: "Bearer tok-1" } }); - expect(stored.stdout).not.toContain("tok-1"); - const cleared = await cli(["secret", "mcp", "--dot", "fare-watch", "web", "Authorization", "--clear"]); - expect(cleared.stdout).toContain("cleared"); - expect(requests.at(-1)?.method).toBe("DELETE"); - const inArgs = await cli(["secret", "mcp", "--dot", "fare-watch", "web", "Authorization", "tok-1"]); - expect(inArgs.code).toBe(EXIT.usage); - expect(inArgs.stderr).toMatch(/never from arguments/); - expect((await cli(["secret", "mcp", "web", "Authorization"], { stdin: "x" })).stderr).toContain("missing --dot"); - }); - - it("mcp lists the declared servers with where each is and which secrets are set, and still the secrets of a stopped Dot", async () => { - const listed = await cli(["mcp", "fare-watch"]); - expect(listed.code).toBe(EXIT.ok); - expect(listed.stdout).toMatch(/time\s+connected, 2 tools\s+-/); - expect(listed.stdout).toMatch(/web\s+failed: its secret Authorization is not set\s+Authorization \(not set\)/); - stopped = true; - try { - const off = await cli(["mcp", "fare-watch"]); - expect(off.code).toBe(EXIT.ok); - expect(off.stdout).toMatch(/web\s+computer stopped\s+Authorization \(not set\)/); - } finally { - stopped = false; - } - }); - - it("secret openrouter in a terminal reads one line, which Enter ends on every host", async () => { - // A terminal never reaches end of input by itself, and the key that ends it differs by host: - // only the line is read, so the command never waits for it. - const typed = await cli(["secret", "openrouter"], { - tty: true, - line: "sk-or-v1-typed", - stdin: "never read: a terminal does not end", - }); - expect(typed.code).toBe(EXIT.ok); - expect(typed.stderr).toBe("paste the OpenRouter API key, then press Enter:\n"); - expect(typed.stderr).not.toMatch(/Ctrl/); - expect(requests.at(-1)?.body).toEqual({ value: "sk-or-v1-typed" }); - const empty = await cli(["secret", "openrouter"], { tty: true, line: "" }); - expect(empty.code).toBe(EXIT.usage); - // The hint is a command that runs as printed in PowerShell too: no "<" redirection. - expect(empty.stderr).toContain('run "invisible-dots secret openrouter" in a terminal'); - expect(empty.stderr).not.toContain("<"); - }); - - it("channel add reads the token from stdin or one line of a terminal, never from arguments, and never prints it", async () => { - const piped = await cli(["channel", "add", "telegram", "--dot", "fare-watch"], { stdin: "123456:SECRET-TOKEN-VALUE\n" }); - expect(piped.code).toBe(EXIT.ok); - expect(requests.at(-1)).toMatchObject({ method: "PUT", path: `/api/dots/fare-watch/channels/telegram`, body: { token: "123456:SECRET-TOKEN-VALUE" } }); - expect(piped.stdout).toContain("linked Telegram bot @dot_helper_bot to Dot fare-watch\n"); - expect(piped.stdout).toContain("next: invisible-dots channel pair telegram --dot fare-watch\n"); - expect(piped.stdout).toMatch(/not end-to-end encrypted/); - expect(piped.stdout + piped.stderr).not.toContain("SECRET-TOKEN"); - - const typed = await cli(["channel", "add", "telegram", "--dot", "fare-watch"], { tty: true, line: "123456:TYPED-TOKEN-VALUE", stdin: "never read" }); - expect(typed.code).toBe(EXIT.ok); - expect(typed.stderr).toBe("paste the Telegram bot token from @BotFather, then press Enter:\n"); - expect(requests.at(-1)?.body).toEqual({ token: "123456:TYPED-TOKEN-VALUE" }); - - const inArgs = await cli(["channel", "add", "telegram", "123456:SECRET-TOKEN-VALUE", "--dot", "fare-watch"]); - expect(inArgs.code).toBe(EXIT.usage); - expect(inArgs.stderr).toMatch(/never from arguments/); - expect(inArgs.stderr).not.toContain("SECRET-TOKEN"); - const empty = await cli(["channel", "add", "telegram", "--dot", "fare-watch"], { tty: true, line: "" }); - expect(empty.code).toBe(EXIT.usage); - expect(empty.stderr).toContain('run "invisible-dots channel add telegram --dot fare-watch" in a terminal'); - expect((await cli(["channel", "add", "telegram"], { stdin: "123456:SECRET-TOKEN-VALUE" })).stderr).toMatch(/missing --dot /); - expect((await cli(["channel", "add", "whatsapp", "--dot", "fare-watch"])).stderr).toMatch(/only telegram is supported/); - const json = await cli(["channel", "add", "telegram", "--dot", "fare-watch", "--json"], { stdin: "123456:SECRET-TOKEN-VALUE" }); - expect(JSON.parse(json.stdout)).toMatchObject({ kind: "telegram", account: "dot_helper_bot" }); - }); - - it("channel add shows what the server said about a refused token, without the token", async () => { - const refused = await cli(["channel", "add", "telegram", "--dot", "fare-watch"], { stdin: "9:REFUSED-TOKEN-VALUE" }); - expect(refused.code).toBe(EXIT.failed); - expect(refused.stderr).toMatch(/refused the bot token.*\[400 invalid_credentials\]/); - expect(refused.stderr).not.toContain("REFUSED-TOKEN-VALUE"); - }); - - it("channel list prints a table of every Dot's channels, or one Dot's, and --json the data", async () => { - const all = await cli(["channel", "list"]); - expect(all.code).toBe(EXIT.ok); - expect(all.stdout.split("\n")[0]).toMatch(/^DOT\s+CHANNEL\s+STATUS\s+ACCOUNT\s+PEOPLE\s+NOTE/); - expect(all.stdout).toMatch(/fare-watch\s+telegram\s+connected\s+@dot_helper_bot\s+Ann \(@ann\)/); - const one = await cli(["channel", "list", "--dot", "fare-watch"]); - expect(one.stdout).toBe(all.stdout); - expect(JSON.parse((await cli(["channel", "list", "--json"])).stdout)).toEqual([{ dot: "fare-watch", channel }]); - expect((await cli(["channel", "list", "extra"])).code).toBe(EXIT.usage); - }); - - it("channel pair prints the link and the code, or only the code where a channel has no link", async () => { - const paired = await cli(["channel", "pair", "telegram", "--dot", "fare-watch"]); - expect(paired.code).toBe(EXIT.ok); - expect(paired.stdout).toBe( - "open this link on the device where you use telegram, then press Start (valid until 2026-10-02T08:10:00.000Z):\n https://t.me/dot_helper_bot?start=ABCD2345\nor send the bot: /start ABCD2345\n", - ); - expect((await cli(["channel", "pair", "whatsapp", "--dot", "fare-watch"])).stdout).toBe("pairing code WXYZ6789, valid until 2026-10-02T08:10:00.000Z\n"); - expect((await cli(["channel", "pair", "carrier-pigeon", "--dot", "fare-watch"])).stderr).toMatch(/unknown channel "carrier-pigeon": use telegram or whatsapp/); - expect((await cli(["channel", "pair", "telegram"])).stderr).toMatch(/missing --dot /); - }); - - it("channel remove unlinks, and an unknown subcommand is a usage error", async () => { - const removed = await cli(["channel", "remove", "telegram", "--dot", "fare-watch"]); - expect(removed.code).toBe(EXIT.ok); - expect(removed.stdout).toBe("unlinked telegram from Dot fare-watch: its token and paired people are deleted\n"); - expect(requests.at(-1)).toMatchObject({ method: "DELETE", path: "/api/dots/fare-watch/channels/telegram" }); - expect((await cli(["channel", "remove", "whatsapp", "--dot", "fare-watch"])).stdout).toBe("unlinked whatsapp from Dot fare-watch: the linked device's keys and paired people are deleted\n"); - expect((await cli(["channel", "remove", "telegram"])).code).toBe(EXIT.usage); - expect((await cli(["channel", "mute"])).stderr).toMatch(/unknown channel subcommand "mute": use add, link, list, pair or remove/); - expect((await cli(["channel"])).stderr).toMatch(/missing add\|link\|list\|pair\|remove/); - }); - - it("channel link whatsapp warns of the risk, shows each code as a QR for the terminal and ends when the number is linked", async () => { - linkFrames = [{ state: "waiting" }, { state: "code", code: "2@first-code" }, { state: "code", code: "2@second-code" }, { state: "linked", account: "15550001111" }]; - const linked = await cli(["channel", "link", "whatsapp", "--dot", "fare-watch"]); - expect(linked.code).toBe(EXIT.ok); - expect(requests.map((r) => `${r.method} ${r.path}`).slice(-2)).toEqual(["POST /api/dots/fare-watch/channels/whatsapp/link", "GET /api/dots/fare-watch/channels/whatsapp/qr"]); - expect(linked.stderr).toContain("can answer by banning the account"); - expect(linked.stderr).toContain("Linked devices"); - // Two codes, drawn with the block characters of a terminal QR, and never printed as text. - expect(linked.stdout.match(/█|▀|▄/g)?.length ?? 0).toBeGreaterThan(100); - expect(linked.stdout).not.toContain("2@first-code"); - expect(linked.stdout).toContain("linked WhatsApp number +15550001111 to Dot fare-watch\nnext: invisible-dots channel pair whatsapp --dot fare-watch\n"); - }); - - it("channel link whatsapp exits with the reason when the link fails, and says what the server said when WhatsApp is off", async () => { - linkFrames = [{ state: "waiting" }, { state: "failed", detail: "The link was not completed: the code expired. Start linking again." }]; - const failed = await cli(["channel", "link", "whatsapp", "--dot", "fare-watch"]); - expect(failed.code).toBe(EXIT.failed); - expect(failed.stderr).toContain("invisible-dots: The link was not completed: the code expired. Start linking again.\n"); - - whatsappOff = true; - const off = await cli(["channel", "link", "whatsapp", "--dot", "fare-watch"]); - expect(off.code).toBe(EXIT.failed); - expect(off.stderr).toContain("INVISIBLE_DOTS_WHATSAPP=1"); - }); - - it("channel link whatsapp --json prints the frames, code included, as lines of JSON", async () => { - linkFrames = [{ state: "code", code: "2@first-code" }, { state: "linked", account: "15550001111" }]; - const json = await cli(["channel", "link", "whatsapp", "--dot", "fare-watch", "--json"]); - expect(json.code).toBe(EXIT.ok); - expect(json.stdout.trim().split("\n").map((line) => JSON.parse(line))).toEqual(linkFrames); - }); - - it("channel link takes only whatsapp and a Dot, and channel add points WhatsApp to link", async () => { - expect((await cli(["channel", "link", "telegram", "--dot", "fare-watch"])).stderr).toMatch(/only whatsapp is linked that way/); - expect((await cli(["channel", "link", "whatsapp"])).stderr).toMatch(/missing --dot /); - expect((await cli(["channel", "link", "whatsapp", "extra", "--dot", "fare-watch"])).code).toBe(EXIT.usage); - expect((await cli(["channel", "add", "whatsapp", "--dot", "fare-watch"])).stderr).toContain('invisible-dots channel link whatsapp --dot '); - }); - - it("channel pair gives WhatsApp's link and words once the number is known, and list shows the number with a plus", async () => { - whatsappLinked = true; - const paired = await cli(["channel", "pair", "whatsapp", "--dot", "fare-watch"]); - expect(paired.stdout).toBe( - "open this link on the device where you use whatsapp, then press Send (valid until 2026-10-02T08:10:00.000Z):\n https://wa.me/15550001111?text=pair%20WXYZ6789\nor send the number: pair WXYZ6789\n", - ); - const list = await cli(["channel", "list", "--dot", "fare-watch"]); - expect(list.stdout).toMatch(/fare-watch\s+telegram\s+connected\s+@dot_helper_bot/); - expect(list.stdout).toMatch(/fare-watch\s+whatsapp\s+connected\s+\+15550001111/); - }); - - it("logs prints the tail without follow, and follows the stream until interrupted", async () => { - const tail = await cli(["logs", "fare-watch", "--tail", "2", "--no-follow"]); - expect(tail.code).toBe(EXIT.ok); - const lines = tail.stdout.trim().split("\n"); - expect(lines).toHaveLength(2); - expect(lines[0]).toMatch(/#4 agent\.state \{"state":"IDLE"\}$/); - // The log is read from its end, the newest two in one request, not paged from its start. - const reads = requests.filter((r) => r.path === `/api/dots/${dot.id}/events`); - expect(reads.map((r) => [r.query.get("order"), r.query.get("limit"), r.query.get("after")])).toEqual([["desc", "2", null]]); - - const controller = new AbortController(); - let output = ""; - const io: CliIo = { - stdout: (t) => { - output += t; - if (t.includes("task.completed")) controller.abort(); - }, - stderr: () => {}, - readStdin: async () => "", - readSecret: async () => "", - stdinIsTTY: false, - env: { INVISIBLE_DOTS_URL: base, INVISIBLE_DOTS_TOKEN: TOKEN }, - cwd: configDir, - signal: controller.signal, - }; - expect(await run(["logs", "fare-watch", "--tail", "1"], io)).toBe(EXIT.ok); - expect(output).toMatch(/#5 automation\.next_run/); - expect(output).toMatch(/#6 task\.completed/); - const stream = requests.find((r) => r.path === "/api/stream"); - expect(stream?.query.get("after")).toBe("5"); - expect(stream?.query.get("dot_id")).toBe(dot.id); - }); - - it("logs --tail 0 prints nothing old and follows from the newest event, which it reads alone", async () => { - const quiet = await cli(["logs", "fare-watch", "--tail", "0", "--no-follow"]); - expect(quiet.code).toBe(EXIT.ok); - expect(quiet.stdout).toBe(""); - expect(requests.filter((r) => r.path === `/api/dots/${dot.id}/events`).map((r) => r.query.get("limit"))).toEqual(["1"]); - }); - - it("logs --tail beyond a page reads the newest pages from the end, older one by one, and stops at the start of the log", async () => { - const saved = events; - events = Array.from({ length: 2500 }, (_, i) => ({ ...saved[0]!, id: i + 1 })); - try { - const tail = await cli(["logs", "fare-watch", "--tail", "2200", "--no-follow"]); - const lines = tail.stdout.trim().split("\n"); - expect(lines).toHaveLength(2200); - expect(lines[0]).toContain("#301 "); - expect(lines.at(-1)).toContain("#2500 "); - const reads = requests.filter((r) => r.path === `/api/dots/${dot.id}/events`); - expect(reads.map((r) => [r.query.get("limit"), r.query.get("before")])).toEqual([ - ["1000", null], - ["1000", "1501"], - ["200", "501"], - ]); - requests.length = 0; - expect((await cli(["logs", "fare-watch", "--tail", "9000", "--no-follow"])).stdout.trim().split("\n")).toHaveLength(2500); - expect(requests.filter((r) => r.path === `/api/dots/${dot.id}/events`)).toHaveLength(3); - } finally { - events = saved; - } - }); - - it("cancel cancels a task, and shows the server's 409 for one that has finished", async () => { - const cancelled = await cli(["cancel", "task_02"]); - expect(cancelled.code).toBe(EXIT.ok); - expect(cancelled.stdout).toBe("task task_02 CANCELLED\n"); - expect(requests.at(-1)).toMatchObject({ method: "POST", path: "/api/tasks/task_02/cancel" }); - const finished = await cli(["cancel", "task_01"]); - expect(finished.code).toBe(EXIT.failed); - expect(finished.stderr).toMatch(/already COMPLETED \[409 task_finished\]/); - expect((await cli(["cancel"])).stderr).toMatch(/missing /); - }); - - it("delete refuses without --yes and says what it destroys, and deletes with it", async () => { - const refused = await cli(["delete", "fare-watch"]); - expect(refused.code).toBe(EXIT.usage); - expect(refused.stderr).toContain("cannot be undone"); - expect(refused.stderr).toContain("invisible-dots delete fare-watch --yes"); - expect(requests).toHaveLength(0); - const deleted = await cli(["delete", "fare-watch", "--yes"]); - expect(deleted.code).toBe(EXIT.ok); - expect(requests.at(-1)).toMatchObject({ method: "DELETE", path: `/api/dots/${dot.id}` }); - expect(deleted.stdout).toBe(`deleting Dot fare-watch; what it did stays in its log: invisible-dots logs ${dot.id}\n`); - }); - - it("update sends the YAML with the config version it read, so a change made meanwhile is a 409 and nothing is saved", async () => { - await writeFile(join(configDir, "changed.yaml"), SAMPLE_DOT); - configVersion = 4; - const updated = await cli(["update", "fare-watch", "changed.yaml"]); - expect(updated.code).toBe(EXIT.ok); - expect(updated.stdout).toBe("updated Dot fare-watch (config version 5)\n"); - expect(requests.at(-1)).toMatchObject({ method: "PATCH", path: `/api/dots/${dot.id}`, body: { config: SAMPLE_DOT, expected_config_version: 4 } }); - - // The web client saved between this command's read and its write. - savedMeanwhile = true; - const raced = await cli(["update", "fare-watch", "changed.yaml"]); - expect(raced.code).toBe(EXIT.failed); - expect(raced.stderr).toMatch(/\[409 dot_changed\]/); - expect((await cli(["update", "fare-watch", "missing.yaml"])).code).toBe(EXIT.usage); - expect((await cli(["update", "fare-watch"])).stderr).toMatch(/missing /); - }); -}); - -describe("host commands", () => { - function fakeHost() { - const calls: string[] = []; - const host: HostCommands = { - doctor: async (options, io) => { - calls.push(`doctor json=${options.json}`); - io.stdout("all 10 checks ok\n"); - return EXIT.ok; - }, - setup: async () => { - calls.push("setup"); - return EXIT.restart; - }, - setupAll: async () => { - calls.push("setup --all"); - return EXIT.ok; - }, - imageBuild: async () => { - calls.push("image build"); - return EXIT.failed; - }, - server: async (_io, options) => { - calls.push(`server web=${options.web}`); - return EXIT.ok; - }, - }; - return { host, calls }; - } - - it("routes setup, doctor, image build and server, and returns their exit codes", async () => { - const { host, calls } = fakeHost(); - expect((await cli(["doctor"], { host })).stdout).toBe("all 10 checks ok\n"); - expect((await cli(["doctor", "--json"], { host })).code).toBe(EXIT.ok); - expect((await cli(["setup"], { host })).code).toBe(EXIT.restart); - expect((await cli(["setup", "--all"], { host })).code).toBe(EXIT.ok); - expect((await cli(["image", "build"], { host })).code).toBe(EXIT.failed); - expect((await cli(["server"], { host })).code).toBe(EXIT.ok); - expect((await cli(["server", "--no-web"], { host })).code).toBe(EXIT.ok); - expect(calls).toEqual(["doctor json=false", "doctor json=true", "setup", "setup --all", "image build", "server web=true", "server web=false"]); - // None of them needs the API or its token. - expect(requests).toHaveLength(0); - }); - - it("refuses stray arguments with exit 2, and reports a host command that throws with exit 1", async () => { - const { host, calls } = fakeHost(); - expect((await cli(["image"], { host })).stderr).toMatch(/missing build/); - expect((await cli(["image", "pull"], { host })).stderr).toMatch(/unknown image subcommand "pull"/); - expect((await cli(["image", "build", "now"], { host })).code).toBe(EXIT.usage); - expect((await cli(["setup", "x"], { host })).code).toBe(EXIT.usage); - expect((await cli(["setup", "--all", "x"], { host })).code).toBe(EXIT.usage); - expect((await cli(["doctor", "all"], { host })).stderr).toMatch(/doctor takes no arguments/); - expect(calls).toEqual([]); - - host.server = async () => { - throw new Error("another invisible-dots server (pid 42) is already running"); - }; - const failed = await cli(["server"], { host }); - expect(failed.code).toBe(EXIT.failed); - expect(failed.stderr).toBe("invisible-dots: another invisible-dots server (pid 42) is already running\n"); - }); - - it("lists both channels where a command takes either", async () => { - const help = (await cli(["--help"])).stdout; - expect(help).toContain("invisible-dots channel pair telegram|whatsapp --dot "); - expect(help).toContain("invisible-dots channel remove telegram|whatsapp --dot "); - }); - - it("lists setup --all in the help, first among the host commands", async () => { - const help = (await cli(["--help"])).stdout; - expect(help).toMatch(/invisible-dots setup --all .*everything in one run/); - expect(help.indexOf("setup --all")).toBeLessThan(help.indexOf("invisible-dots setup ")); - }); - - it("asks the process to stop on Ctrl-C only for logs, image build and setup --all", () => { - expect(interruptIsAsked(["logs", "fare-watch"])).toBe(true); - expect(interruptIsAsked(["image", "build"])).toBe(true); - expect(interruptIsAsked(["setup", "--all"])).toBe(true); - expect(interruptIsAsked(["--all", "setup"])).toBe(true); - expect(interruptIsAsked(["setup"])).toBe(false); - expect(interruptIsAsked(["server"])).toBe(false); - expect(interruptIsAsked(["approvals", "--all"])).toBe(false); - }); - - it("finds the command word for main.ts wherever the flags are", () => { - expect(commandOf(["--json", "doctor"])).toBe("doctor"); - expect(commandOf(["logs", "fare-watch", "--tail", "3"])).toBe("logs"); - expect(commandOf(["--help"])).toBeUndefined(); - }); -}); diff --git a/apps/cli/test/doctor.test.ts b/apps/cli/test/doctor.test.ts deleted file mode 100644 index a35a8159..00000000 --- a/apps/cli/test/doctor.test.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { DoctorCheck } from "@invisible-dots/shared"; -import { describe, expect, it } from "vitest"; -import { doctorAnswer } from "@invisible-dots/vm-manager"; -import { FOUND, healthyDoctor, QEMU_IMG } from "../../vm-manager/test/doctor-fakes.js"; -import { doctorCommand } from "../src/doctor/command.js"; -import { renderReport } from "../src/doctor/render.js"; -import { EXIT } from "../src/exit.js"; - -const find = (results: DoctorCheck[], id: DoctorCheck["id"]) => results.find((r) => r.id === id)!; - -describe("doctor report", () => { - const sample: DoctorCheck[] = [ - { id: "node", label: "Node", status: "ok", detail: "24.19.0" }, - { id: "qemu", label: "QEMU", status: "missing", detail: "qemu-system-x86_64 not found", fix: "invisible-dots setup" }, - { id: "disk", label: "data directory", status: "failed", detail: "1.0 GiB free at /data", fix: "free some space" }, - { id: "openrouter", label: "OpenRouter key", status: "ok", detail: "stored" }, - ]; - - it("prints one aligned line per check, a fix line under each that is not ok, and a count", () => { - expect(renderReport(sample)).toBe( - [ - "ok Node 24.19.0", - "missing QEMU qemu-system-x86_64 not found", - " fix: invisible-dots setup", - "failed data directory 1.0 GiB free at /data", - " fix: free some space", - "ok OpenRouter key stored", - "4 checks: 2 ok, 1 missing, 1 failed", - "", - ].join("\n"), - ); - expect(renderReport([sample[0]!, sample[3]!]).endsWith("all 2 checks ok\n")).toBe(true); - }); - - it("exits 0 only when every check is ok, and prints JSON with --json", async () => { - let text = ""; - expect(await doctorCommand(healthyDoctor().deps, { json: false }, (t) => (text += t))).toBe(EXIT.ok); - expect(text.endsWith("all 9 checks ok\n")).toBe(true); - - let json = ""; - const missing = healthyDoctor({ findQemu: async () => ({ ...FOUND, img: undefined }) }).deps; - expect(await doctorCommand(missing, { json: true }, (t) => (json += t))).toBe(EXIT.failed); - const parsed = JSON.parse(json) as { ok: boolean; checks: DoctorCheck[] }; - expect(parsed.ok).toBe(false); - expect(find(parsed.checks, "qemu-img")).toMatchObject({ status: "missing", fix: "invisible-dots setup" }); - expect(QEMU_IMG).toBe(FOUND.img); - }); -}); diff --git a/apps/cli/test/install.test.ts b/apps/cli/test/install.test.ts deleted file mode 100644 index ec2a0034..00000000 --- a/apps/cli/test/install.test.ts +++ /dev/null @@ -1,234 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { - installHostPrerequisites, - interpretElevatedResult, - packageManagerFor, - parseOsRelease, - setupRefusal, - type InstallDeps, -} from "../src/setup/install.js"; -import { encodeCommand, powershellArgs } from "@invisible-dots/vm-manager"; -import { elevatedSetupScript, elevationLauncherScript } from "../src/setup/powershell.js"; -import type { WindowsQemuPin } from "../src/setup/qemu-pin.js"; -import { fakeRunner, type Answer } from "../../vm-manager/test/doctor-fakes.js"; - -const PS = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"; -const PIN: WindowsQemuPin = { - version: "10.0.0", - url: "https://qemu.weilnetz.de/w64/2025/qemu-w64-setup-20250422.exe", - sha256: "b".repeat(64), - silentArgs: ["/S"], -}; -const UBUNTU = 'PRETTY_NAME="Ubuntu 24.04.3 LTS"\nNAME="Ubuntu"\nID=ubuntu\nID_LIKE=debian\n'; - -function errno(code: string): NodeJS.ErrnoException { - return Object.assign(new Error(`${code}: /dev/kvm`), { code }); -} - -interface HostOptions { - platform: NodeJS.Platform; - respond?: (command: string, args: readonly string[]) => Answer; - kvm?: string; - osRelease?: string; - isRoot?: boolean; - /** What the elevated session leaves in its result file; undefined writes nothing. */ - elevatedResult?: string; -} - -function fakeHost(options: HostOptions) { - const logs: string[] = []; - const downloads: { pin: WindowsQemuPin; dest: string }[] = []; - const removed: string[] = []; - const work = "C:\\Users\\someone\\AppData\\Local\\Temp\\invisible-dots-setup-x1"; - const elevatedDir = "C:\\ProgramData\\invisible-dots-setup-0123abcd"; - const runner = fakeRunner((command, args) => options.respond?.(command, args) ?? {}); - const deps: InstallDeps = { - platform: options.platform, - env: { SystemRoot: "C:\\Windows", ProgramData: "C:\\ProgramData", ProgramW6432: "C:\\Program Files" }, - run: runner.run, - openReadWrite: async () => { - if (options.kvm) throw errno(options.kvm); - }, - log: (line) => logs.push(line), - readText: async (path) => { - if (path === "/etc/os-release" && options.osRelease !== undefined) return options.osRelease; - if (path === `${elevatedDir}\\result.json` && options.elevatedResult !== undefined) return options.elevatedResult; - throw errno("ENOENT"); - }, - isRoot: options.isRoot ?? false, - windowsQemuPin: () => PIN, - makeTempDir: async () => work, - removeDir: async (path) => { - removed.push(path); - }, - download: async (pin, dest) => { - downloads.push({ pin, dest }); - }, - userSid: async () => "S-1-5-21-1-2-3-1001", - uniqueName: () => "0123abcd", - }; - return { deps, calls: runner.calls, logs, downloads, removed, work, elevatedDir }; -} - -describe("an unsupported host", () => { - it("is refused by setup's install step", async () => { - expect((await installHostPrerequisites({ installQemu: true, enableAccelerator: false }, fakeHost({ platform: "darwin" }).deps)).kind).toBe("failed"); - }); -}); - -describe("Linux install", () => { - it("runs sudo apt-get install on apt systems with the terminal handed over, then checks /dev/kvm", async () => { - const host = fakeHost({ platform: "linux", osRelease: UBUNTU }); - const outcome = await installHostPrerequisites({ installQemu: true, enableAccelerator: false }, host.deps); - expect(outcome).toEqual({ kind: "done", lines: [] }); - expect(host.calls).toEqual([{ command: "sudo", args: ["apt-get", "install", "-y", "qemu-system-x86", "qemu-utils"], options: { inheritStdio: true } }]); - expect(host.logs).toEqual(["$ sudo apt-get install -y qemu-system-x86 qemu-utils"]); - }); - - it("reports a failed apt-get", async () => { - const host = fakeHost({ platform: "linux", osRelease: "ID=debian\n", respond: () => ({ code: 100 }) }); - const outcome = await installHostPrerequisites({ installQemu: true, enableAccelerator: false }, host.deps); - expect(host.calls[0]).toMatchObject({ command: "sudo", args: ["apt-get", "install", "-y", "qemu-system-x86", "qemu-utils"] }); - expect(outcome).toEqual({ kind: "failed", lines: ["sudo apt-get install -y qemu-system-x86 qemu-utils failed (exit code 100)"] }); - }); - - it("refuses root on Linux only: Windows setup never runs as an administrator", () => { - expect(setupRefusal({ platform: "linux", isRoot: true })).toMatch(/not as root/); - expect(setupRefusal({ platform: "linux", isRoot: false })).toBeNull(); - expect(setupRefusal({ platform: "win32", isRoot: false })).toBeNull(); - }); - - it("only prints the dnf or pacman line elsewhere, and still checks /dev/kvm", async () => { - const host = fakeHost({ platform: "linux", osRelease: 'ID=fedora\nPRETTY_NAME="Fedora Linux 42"\n', kvm: "EACCES" }); - const outcome = await installHostPrerequisites({ installQemu: true, enableAccelerator: false }, host.deps); - expect(host.calls).toEqual([]); - expect(outcome).toEqual({ - kind: "manual", - lines: [ - "QEMU is not installed by setup on Fedora Linux 42; run:", - " sudo dnf install -y qemu-system-x86 qemu-img", - "/dev/kvm exists but this user cannot open it read-write; fix:", - " sudo usermod -aG kvm $USER, then log out and in again (a new login is needed for the group to apply)", - ], - }); - }); - - it("prints usermod and the new login when only /dev/kvm is not accessible", async () => { - const outcome = await installHostPrerequisites({ installQemu: false, enableAccelerator: true }, fakeHost({ platform: "linux", kvm: "EACCES" }).deps); - expect(outcome.kind).toBe("manual"); - expect(outcome.lines.join("\n")).toContain("sudo usermod -aG kvm $USER"); - expect(outcome.lines.join("\n")).toContain("a new login is needed"); - }); - - it("reads the package manager from ID and ID_LIKE", () => { - expect(parseOsRelease(UBUNTU)).toEqual({ id: "ubuntu", idLike: ["debian"], prettyName: "Ubuntu 24.04.3 LTS" }); - expect(packageManagerFor(parseOsRelease("ID=linuxmint\nID_LIKE=\"ubuntu debian\"\n"))).toEqual({ kind: "apt" }); - expect(packageManagerFor(parseOsRelease("ID=rocky\nID_LIKE=\"rhel centos fedora\"\n"))).toMatchObject({ line: "sudo dnf install -y qemu-system-x86 qemu-img" }); - expect(packageManagerFor(parseOsRelease("ID=endeavouros\nID_LIKE=arch\n"))).toMatchObject({ line: "sudo pacman -S --needed qemu-system-x86 qemu-img" }); - expect(packageManagerFor(parseOsRelease("ID=gentoo\n"))).toMatchObject({ kind: "print" }); - expect(packageManagerFor(parseOsRelease(""))).toMatchObject({ kind: "print" }); - }); -}); - -describe("Windows install", () => { - it("downloads and verifies the pinned installer, then runs dism and the installer in ONE elevated session; 3010 means restart", async () => { - const host = fakeHost({ platform: "win32", elevatedResult: '\uFEFF{"dism_exit_code":3010,"installer_exit_code":0,"error":null}' }); - const outcome = await installHostPrerequisites({ installQemu: true, enableAccelerator: true }, host.deps); - - const installer = `${host.work}\\qemu-w64-setup-20250422.exe`; - expect(host.downloads).toEqual([{ pin: PIN, dest: installer }]); - const elevated = elevatedSetupScript({ - enableHypervisorPlatform: true, - installer: { path: installer, sha256: PIN.sha256, silentArgs: ["/S"] }, - workDir: host.elevatedDir, - userSid: "S-1-5-21-1-2-3-1001", - }); - expect(host.calls).toEqual([{ command: PS, args: powershellArgs(elevationLauncherScript(PS, elevated)), options: { timeoutMs: 3_600_000 } }]); - const launcher = Buffer.from(host.calls[0]!.args.at(-1)!, "base64").toString("utf16le"); - expect(launcher).toContain(`-Verb RunAs -Wait -PassThru`); - expect(launcher).toContain(encodeCommand(elevated)); - - expect(outcome).toEqual({ - kind: "restart", - lines: [ - "QEMU installed", - "the HypervisorPlatform feature is enabled; Windows must restart before it works", - "restart Windows, then run: invisible-dots doctor", - ], - }); - // The elevated session's own directory goes too, once its result was read. - expect(host.removed).toEqual([host.elevatedDir, host.work]); - expect(host.logs).toEqual([ - `downloading the official QEMU 10.0.0 installer: ${PIN.url}`, - `verified its SHA-256 (${PIN.sha256})`, - "asking for administrator rights once, to enable the HypervisorPlatform feature (dism) and run the QEMU installer silently", - ]); - }); - - it("enables only the feature without downloading anything when QEMU is already installed", async () => { - const host = fakeHost({ platform: "win32", elevatedResult: '{"dism_exit_code":0,"installer_exit_code":null,"error":null}' }); - const outcome = await installHostPrerequisites({ installQemu: false, enableAccelerator: true }, host.deps); - expect(host.downloads).toEqual([]); - const launcher = Buffer.from(host.calls[0]!.args.at(-1)!, "base64").toString("utf16le"); - const elevated = Buffer.from(/'-EncodedCommand','([^']+)'/.exec(launcher)![1]!, "base64").toString("utf16le"); - expect(elevated).toContain("/featurename:HypervisorPlatform"); - expect(elevated).not.toContain("$installer"); - expect(outcome).toEqual({ kind: "done", lines: ["the HypervisorPlatform feature is enabled"] }); - }); - - it("installs only QEMU when the feature is already on", async () => { - const host = fakeHost({ platform: "win32", elevatedResult: '{"dism_exit_code":null,"installer_exit_code":0,"error":null}' }); - expect(await installHostPrerequisites({ installQemu: true, enableAccelerator: false }, host.deps)).toEqual({ kind: "done", lines: ["QEMU installed"] }); - expect(host.downloads).toHaveLength(1); - }); - - it("reports a declined UAC prompt, a failure inside the elevated session, and a download that does not verify", async () => { - const declined = fakeHost({ platform: "win32", respond: () => ({ code: 1, stderr: "This operation was canceled by the user.\r\n" }) }); - expect(await installHostPrerequisites({ installQemu: false, enableAccelerator: true }, declined.deps)).toEqual({ - kind: "failed", - lines: ["administrator rights were not granted (the prompt was declined); nothing was changed"], - }); - expect(declined.removed).toEqual([declined.elevatedDir, declined.work]); - - const inside = fakeHost({ platform: "win32", elevatedResult: '{"dism_exit_code":50,"installer_exit_code":null,"error":"dism exited with code 50"}' }); - expect(await installHostPrerequisites({ installQemu: false, enableAccelerator: true }, inside.deps)).toEqual({ - kind: "failed", - lines: ["the elevated step failed: dism exited with code 50"], - }); - - const tampered = fakeHost({ platform: "win32" }); - tampered.deps.download = async () => { - throw new Error("https://example.invalid/q.exe hashes to 00, but the pin is bb"); - }; - await expect(installHostPrerequisites({ installQemu: true, enableAccelerator: true }, tampered.deps)).rejects.toThrow(/but the pin is/); - expect(tampered.calls).toEqual([]); - expect(tampered.removed).toEqual([tampered.elevatedDir, tampered.work]); - }); - - it("interprets the result file", () => { - expect(interpretElevatedResult("not json").kind).toBe("failed"); - expect(interpretElevatedResult('{"dism_exit_code":3010,"installer_exit_code":null,"error":null}').kind).toBe("restart"); - }); - - it("names the directory to set when the installer reused an earlier one invisible-dots does not search", () => { - const env = { ProgramW6432: "C:\\Program Files" }; - const installedIn = (dir: string) => JSON.stringify({ dism_exit_code: null, installer_exit_code: 0, install_dir: dir, error: null }); - // The official directory (with the trailing separator the registry value has) needs nothing more. - expect(interpretElevatedResult(installedIn("C:\\Program Files\\qemu\\"), env)).toEqual({ - kind: "done", - lines: ["QEMU installed"], - }); - expect(interpretElevatedResult(installedIn("D:\\Tools\\qemu"), env)).toEqual({ - kind: "done", - lines: ["QEMU installed", "it went to D:\\Tools\\qemu, where an earlier QEMU was installed: set INVISIBLE_DOTS_QEMU_DIR=D:\\Tools\\qemu so invisible-dots uses it"], - }); - }); - - it("says the elevated step ran nothing when it could not make its own directory safely", async () => { - const host = fakeHost({ platform: "win32", respond: () => ({ code: 2 }) }); - expect(await installHostPrerequisites({ installQemu: false, enableAccelerator: true }, host.deps)).toEqual({ - kind: "failed", - lines: [`the elevated step could not create its own directory ${host.elevatedDir} for administrators only, so it ran nothing; run setup again`], - }); - }); -}); diff --git a/apps/cli/test/powershell.test.ts b/apps/cli/test/powershell.test.ts deleted file mode 100644 index f0d3abb0..00000000 --- a/apps/cli/test/powershell.test.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { existsSync } from "node:fs"; -import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { encodeCommand, HYPERVISOR_PLATFORM_STATE_SCRIPT, powershellArgs, powershellPath, runProcess } from "@invisible-dots/vm-manager"; -import { elevatedSetupScript, elevationLauncherScript, parseElevatedResult, psQuote } from "../src/setup/powershell.js"; - -const SHA = "a".repeat(64); - -const WORK = "C:\\ProgramData\\invisible-dots-setup-0123abcd"; -const SID = "S-1-5-21-1-2-3-1001"; - -describe("generated PowerShell", () => { - it("runs dism and a verified COPY of the installer in one elevated session, from a directory only administrators can change", () => { - const script = elevatedSetupScript({ - enableHypervisorPlatform: true, - installer: { path: "C:\\Users\\O'Brien\\AppData\\Local\\Temp\\idots-1\\qemu-w64-setup-20250422.exe", sha256: SHA.toUpperCase(), silentArgs: ["/S"] }, - workDir: WORK, - userSid: SID, - }); - expect(script.split("\r\n")).toEqual([ - "# invisible-dots setup: the one step that needs administrator rights (architecture section 11.2).", - "$ErrorActionPreference = 'Stop'", - "$result = [ordered]@{ dism_exit_code = $null; installer_exit_code = $null; install_dir = $null; error = $null }", - "$work = 'C:\\ProgramData\\invisible-dots-setup-0123abcd'", - "$user = New-Object System.Security.Principal.SecurityIdentifier 'S-1-5-21-1-2-3-1001'", - "function New-Rule($sid, $rights) { New-Object System.Security.AccessControl.FileSystemAccessRule($sid, $rights, 'ContainerInherit,ObjectInherit', 'None', 'Allow') }", - // Under the real ProgramData (not one an environment variable names), new, protected and empty. - "if ((Split-Path -Parent $work) -ne [Environment]::GetFolderPath('CommonApplicationData')) { exit 2 }", - "$acl = New-Object System.Security.AccessControl.DirectorySecurity", - "$acl.SetAccessRuleProtection($true, $false)", - "$acl.AddAccessRule((New-Rule (New-Object System.Security.Principal.SecurityIdentifier 'S-1-5-32-544') 'FullControl'))", - "$acl.AddAccessRule((New-Rule (New-Object System.Security.Principal.SecurityIdentifier 'S-1-5-18') 'FullControl'))", - "$acl.AddAccessRule((New-Rule $user 'ReadAndExecute'))", - "if (Test-Path -LiteralPath $work) { exit 2 }", - "[void][System.IO.Directory]::CreateDirectory($work, $acl)", - "if (-not ((Get-Acl -LiteralPath $work).AreAccessRulesProtected) -or (@(Get-ChildItem -LiteralPath $work -Force).Count -ne 0)) { exit 2 }", - "try {", - // dism through the system directory Windows reports, never $env:SystemRoot. - " $dism = Join-Path ([Environment]::SystemDirectory) 'dism.exe'", - " & $dism /online /enable-feature /featurename:HypervisorPlatform /all /norestart", - " $result.dism_exit_code = $LASTEXITCODE", - ' if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 3010) { throw "dism exited with code $LASTEXITCODE" }', - // The copy is what is hashed and what runs, in the directory nobody else can write. - " $installer = Join-Path $work 'qemu-setup.exe'", - " Copy-Item -LiteralPath 'C:\\Users\\O''Brien\\AppData\\Local\\Temp\\idots-1\\qemu-w64-setup-20250422.exe' -Destination $installer", - " $hash = (Get-FileHash -LiteralPath $installer -Algorithm SHA256).Hash.ToLowerInvariant()", - ` if ($hash -ne '${SHA}') { throw "the QEMU installer is not the one that was verified (its SHA-256 is $hash)" }`, - " $setup = Start-Process -FilePath $installer -ArgumentList '/S' -WorkingDirectory $work -Wait -PassThru", - " $result.installer_exit_code = $setup.ExitCode", - ' if ($setup.ExitCode -ne 0) { throw "the QEMU installer exited with code $($setup.ExitCode)" }', - " $result.install_dir = (Get-ItemProperty -LiteralPath 'HKLM:\\Software\\qemu64' -ErrorAction SilentlyContinue).Install_Dir", - "} catch {", - " $result.error = $_.Exception.Message", - "}", - "Remove-Item -LiteralPath (Join-Path $work 'qemu-setup.exe') -Force -ErrorAction SilentlyContinue", - // The result goes into the same private directory, never into one the user can redirect. - "[System.IO.File]::WriteAllText((Join-Path $work 'result.json'), ($result | ConvertTo-Json -Compress))", - "# Nothing in it runs any more: setup, as the normal user, reads the result and removes the directory.", - "$done = Get-Acl -LiteralPath $work", - "$done.AddAccessRule((New-Rule $user 'FullControl'))", - "Set-Acl -LiteralPath $work -AclObject $done", - "", - ]); - expect(script).not.toContain("$env:"); - }); - - it("leaves out the step that is not needed", () => { - const onlyFeature = elevatedSetupScript({ enableHypervisorPlatform: true, workDir: WORK, userSid: SID }); - expect(onlyFeature).toContain("dism.exe"); - expect(onlyFeature).not.toContain("$installer ="); - const onlyQemu = elevatedSetupScript({ enableHypervisorPlatform: false, installer: { path: "C:\\t\\q.exe", sha256: SHA, silentArgs: ["/S"] }, workDir: WORK, userSid: SID }); - expect(onlyQemu).not.toContain("dism.exe"); - expect(onlyQemu).toContain("-ArgumentList '/S'"); - }); - - it("asks for elevation with one Start-Process -Verb RunAs -Wait and passes the script encoded", () => { - const elevated = "Write-Output 'hi'"; - const launcher = elevationLauncherScript("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", elevated); - expect(launcher.split("\r\n")).toEqual([ - "$ErrorActionPreference = 'Stop'", - "try {", - ` $elevated = Start-Process -FilePath 'C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe' -Verb RunAs -Wait -PassThru -ArgumentList '-NoProfile','-NonInteractive','-ExecutionPolicy','Bypass','-EncodedCommand','${encodeCommand(elevated)}'`, - " exit $elevated.ExitCode", - "} catch {", - " [Console]::Error.WriteLine($_.Exception.Message)", - " exit 1", - "}", - "", - ]); - expect(launcher.match(/Start-Process/g)).toHaveLength(1); - expect(Buffer.from(encodeCommand(elevated), "base64").toString("utf16le")).toBe(elevated); - }); - - it("quotes every kind of single quote PowerShell recognises", () => { - expect(psQuote("plain")).toBe("'plain'"); - expect(psQuote("it's")).toBe("'it''s'"); - expect(psQuote("a\u2019b\u2018c")).toBe("'a\u2019\u2019b\u2018\u2018c'"); - }); - - it("reads the result file, with or without a byte order mark", () => { - expect(parseElevatedResult('\uFEFF{"dism_exit_code":3010,"installer_exit_code":0,"error":null}')).toEqual({ - dism_exit_code: 3010, - installer_exit_code: 0, - install_dir: null, - error: null, - }); - expect(parseElevatedResult('{"dism_exit_code":null,"installer_exit_code":0,"install_dir":"D:\\\\q","error":null}').install_dir).toBe("D:\\q"); - expect(parseElevatedResult('{"dism_exit_code":null,"installer_exit_code":null,"error":"boom"}').error).toBe("boom"); - expect(() => parseElevatedResult('{"dism_exit_code":"x"}')).toThrow(/not an exit code/); - }); -}); - -/* - * The same scripts run through the real Windows PowerShell where it exists: - * the parser must accept every generated script, and the non-elevated parts - * (quoting, the hash check, the result file) must behave as the code above - * assumes. Nothing here elevates or changes the system. - */ -const windowsPowerShell = powershellPath(process.env); -const hasPowerShell = existsSync(windowsPowerShell); - -// Each test starts Windows PowerShell a few times; under a parallel suite one start can take seconds. -describe.skipIf(!hasPowerShell)("generated PowerShell on a real Windows PowerShell", { timeout: 120_000 }, () => { - let dir: string; - beforeAll(async () => { - // A quote and a space in the path: the cases quoting has to survive. - dir = await mkdtemp(join(tmpdir(), "idots ps'q-")); - }); - afterAll(async () => { - await rm(dir, { recursive: true, force: true }); - }); - - const ps = (script: string) => runProcess(windowsPowerShell, powershellArgs(script), { timeoutMs: 60_000 }); - - it("parses every generated script without errors", async () => { - const elevated = elevatedSetupScript({ enableHypervisorPlatform: true, installer: { path: join(dir, "q.exe"), sha256: SHA, silentArgs: ["/S"] }, workDir: WORK, userSid: SID }); - for (const script of [elevated, elevationLauncherScript(windowsPowerShell, elevated), HYPERVISOR_PLATFORM_STATE_SCRIPT]) { - const check = `$errors = $null; [void][System.Management.Automation.Language.Parser]::ParseInput(${psQuote(script)}, [ref]$null, [ref]$errors); $errors.Count`; - const result = await ps(check); - expect(result.stderr).toBe(""); - expect(result.stdout.trim()).toBe("0"); - } - }); - - it("runs nothing when its directory would not be directly under the real ProgramData", async () => { - // A directory the normal user chose (here a temporary one): the session stops before it creates or runs anything. - const installer = join(dir, "qemu-setup.exe"); - await writeFile(installer, "not the verified bytes"); - const workDir = join(dir, "elevated"); - const run = await ps(elevatedSetupScript({ enableHypervisorPlatform: false, installer: { path: installer, sha256: SHA, silentArgs: ["/S"] }, workDir, userSid: SID })); - expect(run.code).toBe(2); - expect(existsSync(workDir)).toBe(false); - }); - - it("reads the HypervisorPlatform state without administrator rights", async () => { - const result = await ps(HYPERVISOR_PLATFORM_STATE_SCRIPT); - expect(result.code).toBe(0); - expect(result.stdout.trim()).toMatch(/^[1-4]?$/); - }); -}); diff --git a/apps/cli/test/qemu-pin.test.ts b/apps/cli/test/qemu-pin.test.ts deleted file mode 100644 index 88da4579..00000000 --- a/apps/cli/test/qemu-pin.test.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { readFile } from "node:fs/promises"; -import { describe, expect, it } from "vitest"; -import { installerFileName, parseWindowsQemuPin } from "../src/setup/qemu-pin.js"; - -describe("Windows QEMU pin", () => { - const good = { version: "10.0.0", url: "https://qemu.weilnetz.de/w64/2025/qemu-w64-setup-20250422.exe", sha256: "AB".repeat(32), silent_args: ["/S"] }; - - it("accepts a version, an https URL and a SHA-256, and normalises the hash", () => { - expect(parseWindowsQemuPin(good)).toEqual({ version: good.version, url: good.url, sha256: "ab".repeat(32), silentArgs: ["/S"] }); - }); - - it("accepts the pin file in this repository", async () => { - const pin = parseWindowsQemuPin(JSON.parse(await readFile(new URL("../../../virtualization/qemu/windows.json", import.meta.url), "utf8"))); - expect(pin.url.startsWith("https://")).toBe(true); - expect(installerFileName(pin)).toMatch(/\.exe$/); - }); - - it("refuses a pin without its silent switch", () => { - expect(() => parseWindowsQemuPin({ ...good, silent_args: [] })).toThrow(/"silent_args" must be a non-empty list/); - expect(() => parseWindowsQemuPin({ ...good, silent_args: undefined })).toThrow(/silent_args/); - }); - - it("refuses anything that would make setup download the wrong bytes", () => { - expect(() => parseWindowsQemuPin(null)).toThrow(/expected a JSON object/); - expect(() => parseWindowsQemuPin({ ...good, url: "http://qemu.weilnetz.de/x.exe" })).toThrow(/must use https/); - expect(() => parseWindowsQemuPin({ ...good, sha256: "abc" })).toThrow(/64 hexadecimal/); - expect(() => parseWindowsQemuPin({ ...good, version: "" })).toThrow(/"version" must be a non-empty string/); - expect(() => parseWindowsQemuPin({ ...good, version: "latest" })).toThrow(/major\.minor/); - expect(() => parseWindowsQemuPin({ ...good, url: "not a url" })).toThrow(/not a URL/); - }); - - it("saves the installer under its own plain name, or a fixed one", () => { - expect(installerFileName(parseWindowsQemuPin(good))).toBe("qemu-w64-setup-20250422.exe"); - expect(installerFileName(parseWindowsQemuPin({ ...good, url: "https://example.org/download?id=7" }))).toBe("qemu-10.0.0-setup.exe"); - expect(installerFileName(parseWindowsQemuPin({ ...good, url: "https://example.org/a%27b.exe" }))).toBe("qemu-10.0.0-setup.exe"); - }); -}); diff --git a/apps/cli/test/secret-input.test.ts b/apps/cli/test/secret-input.test.ts deleted file mode 100644 index 235e1385..00000000 --- a/apps/cli/test/secret-input.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * The line a person pastes at a prompt (an OpenRouter key, a bot token) is read with the echo off. The tests play the - * terminal: a stream that says it is a TTY, takes raw mode and records what is written to the screen. - */ -import { createInterface } from "node:readline"; -import { PassThrough, Writable } from "node:stream"; -import { describe, expect, it } from "vitest"; -import { readSecretLine, SecretInputCancelled, type TerminalInput } from "../src/secret-input.js"; - -function terminal() { - const input = new PassThrough() as PassThrough & TerminalInput & { raw: boolean[] }; - input.isTTY = true; - input.raw = []; - input.setRawMode = (mode: boolean) => void input.raw.push(mode); - const screen: string[] = []; - const output = { write: (text: string) => (screen.push(String(text)), true) }; - return { input, output, screen: () => screen.join("") }; -} - -const KEY = "sk-or-v1-0123456789abcdef0123456789abcdef"; - -describe("a secret typed at a prompt", () => { - it("would show on the screen if the line were read by a readline that writes there (so the checks below can fail)", async () => { - const t = terminal(); - const echoed: string[] = []; - const screen = new Writable({ - write(chunk, _encoding, done) { - echoed.push(String(chunk)); - done(); - }, - }); - const lines = createInterface({ input: t.input, output: screen, terminal: true }); - const line = new Promise((resolve) => lines.once("line", resolve)); - t.input.write(`${KEY}\r`); - await line; - lines.close(); - expect(echoed.join("")).toContain(KEY); - }); - - it("is read as typed, and nothing of it is written to the screen, not as it is typed and not after", async () => { - const t = terminal(); - const read = readSecretLine(t.input, t.output); - t.input.write(KEY); - t.input.write("\r"); - expect(await read).toBe(KEY); - // Only the newline that Enter would have echoed: the next line of output does not follow the prompt. - expect(t.screen()).toBe("\n"); - expect(t.screen()).not.toContain("sk-or"); - }); - - it("is read when it arrives in pieces, as a paste does, and keeps what backspace did not take", async () => { - const t = terminal(); - const read = readSecretLine(t.input, t.output); - t.input.write("123456:AA"); - t.input.write("BBxx\u007f\u007fCC"); - t.input.write("\n"); - expect(await read).toBe("123456:AABBCC"); - expect(t.screen()).toBe("\n"); - }); - - it("is given up at Ctrl-C, with nothing of what was typed shown", async () => { - const t = terminal(); - const read = readSecretLine(t.input, t.output); - t.input.write("half of a key"); - t.input.write("\u0003"); - await expect(read).rejects.toBeInstanceOf(SecretInputCancelled); - expect(t.screen()).not.toContain("half"); - }); - - it("returns what was typed when the input ends before Enter", async () => { - const t = terminal(); - const read = readSecretLine(t.input, t.output); - t.input.write("abc"); - t.input.end(); - expect(await read).toBe("abc"); - }); - - it("puts the terminal back as it found it", async () => { - const t = terminal(); - const read = readSecretLine(t.input, t.output); - t.input.write("x\r"); - await read; - expect(t.input.raw.at(-1)).toBe(false); - }); -}); diff --git a/apps/cli/test/serve.test.ts b/apps/cli/test/serve.test.ts deleted file mode 100644 index 25a3c7fa..00000000 --- a/apps/cli/test/serve.test.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { EventEmitter } from "node:events"; -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { parseListen } from "@invisible-dots/api"; -import type { HostPaths } from "@invisible-dots/shared"; -import { serve, type ServeDeps } from "../src/serve.js"; -import type { WebServer, WebServerOptions } from "../src/web.js"; - -let repoRoot: string; - -beforeEach(async () => { - repoRoot = await mkdtemp(join(tmpdir(), "idots-serve-")); -}); - -afterEach(() => rm(repoRoot, { recursive: true, force: true })); - -async function buildWeb() { - const app = join(repoRoot, "apps", "web", ".next", "standalone", "apps", "web"); - await mkdir(join(app, ".next", "static"), { recursive: true }); - await writeFile(join(app, "server.js"), ""); -} - -/** The control plane and the web server as fakes that record what happened to them, in order. */ -function harness(over: { webStart?: (options: WebServerOptions) => Promise } = {}) { - const log: string[] = []; - const lines: string[] = []; - const signals = new EventEmitter(); - const webOptions: WebServerOptions[] = []; - const logger = { - debug() {}, - info: (m: string) => lines.push(`info ${m}`), - warn: (m: string) => lines.push(`warn ${m}`), - error: (m: string) => lines.push(`error ${m}`), - }; - let stopped!: () => void; - const deps: ServeDeps = { - startServer: async (options) => { - log.push(`server start env=${options.env ? "given" : "none"}`); - return { - url: "http://127.0.0.1:8787", - paths: { apiTokenPath: "/home/x/.invisible-dots/config/api.token" } as HostPaths, - close: async () => { - log.push("server close"); - }, - }; - }, - untilStopSignal: (close, _logger, emitter) => - new Promise((resolve) => { - stopped = resolve; - emitter?.once("SIGINT", () => void close().then(resolve)); - }), - parseListen, - startWebServer: - over.webStart ?? - (async (options) => { - webOptions.push(options); - log.push("web start"); - return { - url: `http://${options.listen.host}:${options.listen.port}`, - stop: async () => { - log.push("web stop"); - }, - }; - }), - }; - const run = (options: { web: boolean; env?: Record }) => - serve({ env: options.env ?? {}, logger, web: options.web, repoRoot, signals }, deps); - return { run, log, lines, signals, webOptions, release: () => stopped?.() }; -} - -/** Waits until the check holds: serve starts its parts asynchronously, and a fixed wait loses that race on a loaded machine. */ -const until = (check: () => void) => vi.waitFor(check, { timeout: 5_000, interval: 5 }); - -describe("serve", () => { - it("starts the control plane, then the web client on the default address pointed at it, and stops them in the other order", async () => { - await buildWeb(); - const h = harness(); - const running = h.run({ web: true }); - await until(() => expect(h.log).toEqual(["server start env=given", "web start"])); - expect(h.webOptions[0]).toMatchObject({ listen: { host: "127.0.0.2", port: 3000 }, apiUrl: "http://127.0.0.1:8787" }); - expect(h.webOptions[0]!.build.missing).toBeUndefined(); - expect(h.lines).toContain("info API token in /home/x/.invisible-dots/config/api.token; stop with Ctrl+C (Dots keep running)"); - expect(h.lines).toContain("info web client at http://127.0.0.2:3000"); - h.signals.emit("SIGINT"); - await running; - expect(h.log).toEqual(["server start env=given", "web start", "web stop", "server close"]); - }); - - it("listens where INVISIBLE_DOTS_WEB_LISTEN says", async () => { - await buildWeb(); - const h = harness(); - const running = h.run({ web: true, env: { INVISIBLE_DOTS_WEB_LISTEN: "127.0.0.1:3100" } }); - await until(() => expect(h.webOptions[0]?.listen).toEqual({ host: "127.0.0.1", port: 3100 })); - h.signals.emit("SIGINT"); - await running; - }); - - it("fails before starting anything when INVISIBLE_DOTS_WEB_LISTEN is malformed", async () => { - const h = harness(); - await expect(h.run({ web: true, env: { INVISIBLE_DOTS_WEB_LISTEN: "three-thousand" } })).rejects.toThrow(/INVISIBLE_DOTS_WEB_LISTEN must look like/); - expect(h.log).toEqual([]); - }); - - it("names the web client's own default, not the API's, when INVISIBLE_DOTS_WEB_LISTEN is malformed", async () => { - const h = harness(); - await expect(h.run({ web: true, env: { INVISIBLE_DOTS_WEB_LISTEN: "three-thousand" } })).rejects.toThrow( - 'INVISIBLE_DOTS_WEB_LISTEN must look like "127.0.0.2:3000", got "three-thousand"', - ); - }); - - it("fails before starting anything when INVISIBLE_DOTS_WEB_LISTEN names port 0", async () => { - const h = harness(); - await expect(h.run({ web: true, env: { INVISIBLE_DOTS_WEB_LISTEN: "127.0.0.1:0" } })).rejects.toThrow( - 'INVISIBLE_DOTS_WEB_LISTEN needs a fixed port, got "127.0.0.1:0"', - ); - expect(h.log).toEqual([]); - }); - - it("does not start the web client with --no-web, and does not read INVISIBLE_DOTS_WEB_LISTEN", async () => { - await buildWeb(); - const h = harness(); - const running = h.run({ web: false, env: { INVISIBLE_DOTS_WEB_LISTEN: "garbage" } }); - // Running: it waits for the stop signal. - await until(() => expect(h.signals.listenerCount("SIGINT")).toBe(1)); - h.signals.emit("SIGINT"); - await running; - expect(h.log).toEqual(["server start env=given", "server close"]); - }); - - it("keeps the control plane running, and says why, when the web client cannot start", async () => { - const h = harness({ - webStart: async () => { - throw new Error("http://127.0.0.1:3000 is already in use"); - }, - }); - const running = h.run({ web: true }); - await until(() => expect(h.lines).toContain("warn web client not started: http://127.0.0.1:3000 is already in use; the control plane keeps running")); - expect(h.log).toEqual(["server start env=given"]); - h.signals.emit("SIGINT"); - await running; - expect(h.log).toEqual(["server start env=given", "server close"]); - }); - - it("closes the control plane on Ctrl+C while the web client is still starting, and ends that start", async () => { - let aborted = false; - let starting = false; - const h = harness({ - webStart: (options) => - new Promise((_resolve, reject) => { - starting = true; - options.signal!.addEventListener("abort", () => { - aborted = true; - reject(new Error("stopped while the web client was starting")); - }); - }), - }); - await buildWeb(); - const running = h.run({ web: true }); - await until(() => expect(starting).toBe(true)); - h.signals.emit("SIGINT"); - await running; - expect(aborted).toBe(true); - expect(h.log).toEqual(["server start env=given", "server close"]); - // Ending the start is what the person asked for, not a failure to report. - expect(h.lines.filter((line) => line.startsWith("warn"))).toEqual([]); - }); - - it("names the missing build in the web start it hands over, so the warning carries the fix", async () => { - const h = harness(); - const running = h.run({ web: true }); - await until(() => expect(h.webOptions).toHaveLength(1)); - expect(h.webOptions[0]!.build.missing).toBe(h.webOptions[0]!.build.entry); - h.signals.emit("SIGINT"); - await running; - }); -}); diff --git a/apps/cli/test/setup-all.test.ts b/apps/cli/test/setup-all.test.ts deleted file mode 100644 index 029c95ca..00000000 --- a/apps/cli/test/setup-all.test.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { DEFAULT_WEB_LISTEN, ENV } from "@invisible-dots/shared"; -import { EXIT } from "../src/exit.js"; -import { runSetupAll, SETUP_ALL_COMMAND, webAddress, type SetupAllDeps } from "../src/setup/all.js"; -import type { StepResult } from "../src/setup/build.js"; -import type { HostOutcome } from "../src/setup/setup.js"; - -const DONE: StepResult = { ok: true, lines: ["done"] }; - -/** A run of `setup --all` against fake steps; `calls` is the order they ran in. */ -async function all(overrides: Partial = {}) { - let text = ""; - const calls: string[] = []; - const deps: SetupAllDeps = { - out: (t) => (text += t), - agent: async () => (calls.push("agent"), { ok: true, lines: ["built /repo/guest/dot-agentd/bin/dot-agentd"] }), - host: async () => (calls.push("host"), { ready: true, results: [] } satisfies HostOutcome), - web: async () => (calls.push("web"), DONE), - images: async () => (calls.push("images"), EXIT.ok), - env: {}, - ...overrides, - }; - const code = await runSetupAll(deps); - return { code, text, calls }; -} - -describe("setup --all", () => { - it("runs the guest daemon, QEMU, the web client and the images in that order, then says how to open the web client", async () => { - const result = await all(); - expect(result.code).toBe(EXIT.ok); - expect(result.calls).toEqual(["agent", "host", "web", "images"]); - expect(result.text).toMatch(/\[1\/4\] the guest daemon[\s\S]*\[2\/4\] QEMU[\s\S]*\[3\/4\] the web client[\s\S]*\[4\/4\] the guest images/); - expect(result.text).toContain("built /repo/guest/dot-agentd/bin/dot-agentd"); - expect(result.text).toContain("1. start the server and leave it running: invisible-dots server"); - expect(result.text).toContain(`2. open http://${DEFAULT_WEB_LISTEN} in your browser\n`); - expect(result.text).not.toMatch(/sign in|api\.token/); - expect(result.text).toContain("OpenRouter key"); - }); - - it("names the address the web client is configured to listen on", async () => { - expect(webAddress({})).toBe("http://127.0.0.2:3000"); - expect(webAddress({ [ENV.WEB_LISTEN]: " 127.0.0.1:4100 " })).toBe("http://127.0.0.1:4100"); - expect(webAddress({ [ENV.WEB_LISTEN]: "" })).toBe("http://127.0.0.2:3000"); - const result = await all({ env: { [ENV.WEB_LISTEN]: "127.0.0.1:4100" } }); - expect(result.text).toContain("open http://127.0.0.1:4100 in your browser"); - }); - - it("stops at a missing Go before it changes anything on the host, and says to run the same command again", async () => { - const result = await all({ agent: async () => ({ ok: false, lines: ["Go is not installed", "install it with: winget install -e --id GoLang.Go"] }) }); - expect(result.code).toBe(EXIT.failed); - expect(result.calls).toEqual([]); - expect(result.text).toContain(" install it with: winget install -e --id GoLang.Go\n"); - expect(result.text).toContain(`run ${SETUP_ALL_COMMAND} again: it skips what is done`); - expect(result.text).not.toContain("This computer is ready"); - }); - - it("stops with exit code 5 where Windows must restart, runs no later step, and says the same command carries on", async () => { - const result = await all({ host: async () => ({ ready: false, code: EXIT.restart }) }); - expect(result.code).toBe(EXIT.restart); - expect(result.text).toContain(`Restart the computer now, then run ${SETUP_ALL_COMMAND} again from this folder: it carries on with step 3.`); - expect(result.text).not.toContain("[3/4]"); - expect(result.text).not.toContain("This computer is ready"); - }); - - it("stops where QEMU or the accelerator cannot be made ready (a new login on Linux), keeping setup's own exit code", async () => { - const result = await all({ host: async () => ({ ready: false, code: EXIT.failed }) }); - expect(result.code).toBe(EXIT.failed); - expect(result.calls).toEqual(["agent"]); - expect(result.text).toContain("log out and in again if it says so"); - expect(result.text).toContain(`run ${SETUP_ALL_COMMAND} again`); - }); - - it("adds nothing to setup's refusal to run as root", async () => { - const result = await all({ host: async () => ({ ready: false, code: EXIT.usage }) }); - expect(result.code).toBe(EXIT.usage); - expect(result.text).not.toContain("Restart"); - expect(result.text).not.toContain("Stopped"); - }); - - it("stops at a web build that failed, before the long image build", async () => { - const calls: string[] = []; - const result = await all({ - web: async () => ({ ok: false, lines: ["building the web client failed (exit code 1; its output is above)"] }), - images: async () => (calls.push("images"), EXIT.ok), - }); - expect(result.code).toBe(EXIT.failed); - expect(calls).toEqual([]); - expect(result.text).toContain("building the web client failed"); - }); - - it("reports an image build that failed or threw, and how to continue", async () => { - const failed = await all({ images: async () => EXIT.failed }); - expect(failed.code).toBe(EXIT.failed); - expect(failed.text).toContain("image build ended with exit code 1"); - const threw = await all({ - images: async () => { - throw new Error("the download of the Ubuntu image failed"); - }, - }); - expect(threw.code).toBe(EXIT.failed); - expect(threw.text).toContain("image build stopped: the download of the Ubuntu image failed"); - expect(threw.text).toContain(`run ${SETUP_ALL_COMMAND} again`); - expect(threw.text).not.toContain("This computer is ready"); - }); - - it("stops between steps once Ctrl-C was pressed", async () => { - const controller = new AbortController(); - const result = await all({ - signal: controller.signal, - host: async () => { - controller.abort(); - return { ready: true, results: [] }; - }, - }); - expect(result.code).toBe(EXIT.failed); - expect(result.calls).toEqual(["agent"]); - expect(result.text).toContain("interrupted"); - }); -}); diff --git a/apps/cli/test/setup.test.ts b/apps/cli/test/setup.test.ts deleted file mode 100644 index c619c0b3..00000000 --- a/apps/cli/test/setup.test.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { describe, expect, it } from "vitest"; -import type { DoctorCheck } from "@invisible-dots/shared"; -import { WEB_BUILD_COMMAND, type DoctorDeps } from "@invisible-dots/vm-manager"; -import { EXIT } from "../src/exit.js"; -import type { InstallDeps, InstallOutcome, InstallRequest } from "../src/setup/install.js"; -import { nextSteps, prepareHost, runSetup } from "../src/setup/setup.js"; -import { FOUND, healthyDoctor } from "../../vm-manager/test/doctor-fakes.js"; - -const MISSING_QEMU = async () => ({ searched: ["PATH"] }); -const FEATURE_OFF: DoctorCheck = { id: "accelerator", label: "accelerator", status: "missing", detail: "the HypervisorPlatform feature is disabled", fix: "invisible-dots setup" }; - -/** - * A setup run against fakes. `install` stands in for the platform module: - * it records the request and may change what the second doctor run sees, - * the way a real installation would. - */ -async function setup(options: { - doctor: Partial; - outcome?: InstallOutcome; - afterInstall?: Partial; -}) { - let text = ""; - const requests: InstallRequest[] = []; - const { deps: doctor } = healthyDoctor(options.doctor); - const install = { - platform: "win32", - } as unknown as InstallDeps; - const code = await runSetup({ - doctor, - install, - out: (t) => (text += t), - installPrerequisites: async (request) => { - requests.push(request); - Object.assign(doctor, options.afterInstall ?? {}); - return options.outcome ?? { kind: "done", lines: [] }; - }, - }); - return { code, text, requests }; -} - -describe("setup", () => { - it("refuses to run as root on Linux, before it checks or installs anything", async () => { - let text = ""; - let asked = false; - const { deps: doctor, calls } = healthyDoctor(); - const code = await runSetup({ - doctor, - install: { platform: "linux", isRoot: true } as unknown as InstallDeps, - out: (t) => (text += t), - installPrerequisites: async () => { - asked = true; - return { kind: "done", lines: [] }; - }, - }); - expect(code).toBe(EXIT.usage); - expect(text).toMatch(/as the user who runs the server, not as root: it calls sudo itself/); - expect(asked).toBe(false); - expect(calls).toEqual([]); - }); - - it("installs nothing when QEMU and the accelerator are ready, and names what is left", async () => { - const result = await setup({ - doctor: { images: async () => [{ id: "golden-image", label: "golden image", status: "missing", detail: "none", fix: "invisible-dots image build" }, { id: "runtime-image", label: "runtime ISO", status: "ok", detail: "ok" }] }, - }); - expect(result.code).toBe(EXIT.ok); - expect(result.requests).toEqual([]); - expect(result.text).toContain("QEMU and its accelerator are ready; nothing to install."); - expect(result.text).toContain(" invisible-dots image build\n"); - }); - - it("asks for QEMU and the feature together, then checks again and succeeds", async () => { - const result = await setup({ - doctor: { findQemu: MISSING_QEMU, acceleratorAccess: async () => FEATURE_OFF }, - outcome: { kind: "done", lines: ["QEMU installed", "the HypervisorPlatform feature is enabled"] }, - afterInstall: { findQemu: async () => FOUND, acceleratorAccess: async () => ({ id: "accelerator", label: "accelerator", status: "ok", detail: "enabled" }) }, - }); - expect(result.requests).toEqual([{ installQemu: true, enableAccelerator: true }]); - expect(result.code).toBe(EXIT.ok); - expect(result.text).toContain("QEMU installed\n"); - expect(result.text).toContain("checking again:"); - expect(result.text).toContain("this host is ready: invisible-dots server\n"); - }); - - it("leaves the feature alone when the probe shows WHPX already works", async () => { - const result = await setup({ doctor: { acceleratorAccess: async () => FEATURE_OFF } }); - expect(result.requests).toEqual([]); - expect(result.code).toBe(EXIT.ok); - }); - - it("stops with exit 5 when Windows must restart", async () => { - const { deps } = healthyDoctor(); - const versions = deps.run; - const result = await setup({ - doctor: { - acceleratorAccess: async () => FEATURE_OFF, - run: async (command, args, options) => - args.includes("-accel") ? { code: 1, signal: null, stdout: "", stderr: "WHPX: No accelerator found, hr=80370102\n", timedOut: false } : versions(command, args, options), - }, - outcome: { kind: "restart", lines: ["restart Windows, then run: invisible-dots doctor"] }, - }); - expect(result.requests).toEqual([{ installQemu: false, enableAccelerator: true }]); - expect(result.code).toBe(EXIT.restart); - expect(result.text).not.toContain("checking again"); - expect(result.text.trimEnd().endsWith("restart Windows, then run: invisible-dots doctor")).toBe(true); - }); - - it("exits 1 on a failed or manual step, and when the second check still fails", async () => { - const failed = await setup({ doctor: { findQemu: MISSING_QEMU }, outcome: { kind: "failed", lines: ["the elevated step failed: boom"] } }); - expect(failed.code).toBe(EXIT.failed); - expect(failed.text).toContain("the elevated step failed: boom\nsetup stopped"); - - const manual = await setup({ doctor: { findQemu: MISSING_QEMU }, outcome: { kind: "manual", lines: [" sudo dnf install -y qemu-system-x86 qemu-img"] } }); - expect(manual.code).toBe(EXIT.failed); - expect(manual.text).toContain("then run: invisible-dots doctor"); - - const still = await setup({ doctor: { findQemu: MISSING_QEMU } }); - expect(still.code).toBe(EXIT.failed); - expect(still.text).toContain("QEMU or its accelerator is still not usable"); - }); - - it("does not try to install anything when only the probe fails", async () => { - const { deps } = healthyDoctor(); - const versions = deps.run; - const result = await setup({ - doctor: { - run: async (command, args, options) => - args.includes("-accel") ? { code: 1, signal: null, stdout: "", stderr: "WHPX: No accelerator found, hr=00000000\n", timedOut: false } : versions(command, args, options), - }, - }); - expect(result.code).toBe(EXIT.failed); - expect(result.requests).toEqual([]); - expect(result.text).toContain("setup cannot fix this by installing something:\n accelerator probe: qemu-system-x86_64 -accel kvm -cpu host,-vmx,-svm -machine q35 failed: WHPX: No accelerator found"); - }); - - it("names the server and the key as the next steps while they are missing", () => { - const missingKey: DoctorCheck[] = [ - { id: "golden-image", label: "golden image", status: "ok", detail: "" }, - { id: "runtime-image", label: "runtime ISO", status: "ok", detail: "" }, - { id: "web", label: "web client", status: "ok", detail: "" }, - { id: "openrouter", label: "OpenRouter key", status: "failed", detail: "" }, - ]; - expect(nextSteps(missingKey)).toEqual([ - "invisible-dots server (keep it running, then in another terminal:)", - // One command for both hosts: "<" is a parser error in Windows PowerShell. - "invisible-dots secret openrouter", - ]); - }); - - it("names the web build as a next step while the web client is not built", () => { - const notBuilt: DoctorCheck[] = [ - { id: "golden-image", label: "golden image", status: "ok", detail: "" }, - { id: "runtime-image", label: "runtime ISO", status: "ok", detail: "" }, - { id: "web", label: "web client", status: "missing", detail: "", fix: WEB_BUILD_COMMAND }, - { id: "openrouter", label: "OpenRouter key", status: "ok", detail: "" }, - ]; - expect(nextSteps(notBuilt)).toEqual(["npm run build --workspace @invisible-dots/web", "invisible-dots server"]); - }); - - it("names no web build when the report has no web row: the host is not asked to check a client", () => { - const noWebRow: DoctorCheck[] = [ - { id: "golden-image", label: "golden image", status: "ok", detail: "" }, - { id: "runtime-image", label: "runtime ISO", status: "ok", detail: "" }, - { id: "openrouter", label: "OpenRouter key", status: "ok", detail: "" }, - ]; - expect(nextSteps(noWebRow)).toEqual(["invisible-dots server"]); - }); - describe("prepareHost, the part of setup that setup --all runs as its second step", () => { - const install = { platform: "win32" } as unknown as InstallDeps; - - it("hands back the report once QEMU is ready and leaves what to do next to its caller", async () => { - let text = ""; - const { deps: doctor } = healthyDoctor(); - const outcome = await prepareHost({ doctor, install, out: (t) => (text += t) }); - expect(outcome.ready).toBe(true); - expect(outcome.ready && outcome.results.map((r) => r.id)).toContain("accelerator"); - expect(text).toContain("QEMU and its accelerator are ready; nothing to install."); - expect(text).not.toContain("this host is ready"); - expect(text).not.toContain("Next:"); - }); - - it("hands back setup's exit code when it cannot get the host ready", async () => { - const { deps: doctor } = healthyDoctor({ findQemu: MISSING_QEMU, acceleratorAccess: async () => FEATURE_OFF }); - const restart = await prepareHost({ doctor, install, out: () => undefined, installPrerequisites: async () => ({ kind: "restart", lines: [] }) }); - expect(restart).toEqual({ ready: false, code: EXIT.restart }); - const failed = await prepareHost({ doctor, install, out: () => undefined, installPrerequisites: async () => ({ kind: "failed", lines: [] }) }); - expect(failed).toEqual({ ready: false, code: EXIT.failed }); - const root = await prepareHost({ doctor, install: { platform: "linux", isRoot: true } as unknown as InstallDeps, out: () => undefined }); - expect(root).toEqual({ ready: false, code: EXIT.usage }); - }); - }); -}); diff --git a/apps/cli/test/web.test.ts b/apps/cli/test/web.test.ts deleted file mode 100644 index 32e5bcb3..00000000 --- a/apps/cli/test/web.test.ts +++ /dev/null @@ -1,234 +0,0 @@ -import { spawn } from "node:child_process"; -import { realpathSync } from "node:fs"; -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { createServer } from "node:net"; -import { tmpdir } from "node:os"; -import { dirname, join } from "node:path"; -import { fileURLToPath, pathToFileURL } from "node:url"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { locateWebBuild, startWebServer, webEnvironment, WebStartError, type WebServer, type WebServerOptions } from "../src/web.js"; - -let root: string; -let started: WebServer[] = []; - -beforeEach(async () => { - root = await mkdtemp(join(tmpdir(), "idots-web-")); -}); - -afterEach(async () => { - await Promise.all(started.map((web) => web.stop())); - started = []; - await rm(root, { recursive: true, force: true }); -}); - -/** A server script that answers every request with the environment it was started with. */ -const ECHO_SERVER = ` -import { createServer } from "node:http"; -createServer((req, res) => { - res.setHeader("content-type", "application/json"); - res.end(JSON.stringify({ env: process.env, cwd: process.cwd() })); -}).listen(Number(process.env.PORT), process.env.HOSTNAME); -`; - -async function script(source: string): Promise { - const entry = join(root, "server.mjs"); - await writeFile(entry, source); - return entry; -} - -async function freePort(): Promise { - return new Promise((resolve) => { - const probe = createServer(); - probe.listen(0, "127.0.0.1", () => { - const port = (probe.address() as { port: number }).port; - probe.close(() => resolve(port)); - }); - }); -} - -async function start(entry: string, over: Partial = {}) { - const port = await freePort(); - const exits: string[] = []; - const web = await startWebServer({ - build: { entry, missing: undefined }, - listen: { host: "127.0.0.1", port }, - apiUrl: "http://127.0.0.1:8787", - env: { PATH: process.env.PATH }, - onUnexpectedExit: (message) => exits.push(message), - ...over, - }); - started.push(web); - return { web, port, exits }; -} - -describe("locateWebBuild", () => { - it("names the server script and the first file of the build that is missing", async () => { - const empty = await locateWebBuild(root); - expect(empty.entry).toBe(join(root, "apps", "web", ".next", "standalone", "apps", "web", "server.js")); - expect(empty.missing).toBe(empty.entry); - - const app = join(root, "apps", "web", ".next", "standalone", "apps", "web"); - await mkdir(app, { recursive: true }); - await writeFile(join(app, "server.js"), ""); - expect((await locateWebBuild(root)).missing).toBe(join(app, ".next", "static")); - - await mkdir(join(app, ".next", "static"), { recursive: true }); - expect((await locateWebBuild(root)).missing).toBeUndefined(); - }); -}); - -describe("webEnvironment", () => { - it("passes on where to listen and the API, the data directory and what the Host check allows, and nothing else", () => { - const env = webEnvironment({ - env: { - PATH: "/bin", - INVISIBLE_DOTS_HOME: "/data", - INVISIBLE_DOTS_WEB_ALLOWED_HOSTS: "dots.example", - DATABASE_URL: "postgres://user:secret@db/dots", - OPENROUTER_API_KEY: "sk-secret", - INVISIBLE_DOTS_URL: "http://elsewhere:1", - }, - listen: { host: "127.0.0.1", port: 3000 }, - apiUrl: "http://127.0.0.1:8787", - parentPid: 4242, - }); - expect(env).toEqual({ - PATH: "/bin", - INVISIBLE_DOTS_HOME: "/data", - INVISIBLE_DOTS_WEB_ALLOWED_HOSTS: "dots.example", - INVISIBLE_DOTS_URL: "http://127.0.0.1:8787", - INVISIBLE_DOTS_WEB_PARENT_PID: "4242", - PORT: "3000", - HOSTNAME: "127.0.0.1", - }); - }); - - it("passes the API token only when the server was given it in its environment", () => { - const env = webEnvironment({ - env: { INVISIBLE_DOTS_TOKEN: "token-from-the-environment" }, - listen: { host: "127.0.0.1", port: 3000 }, - apiUrl: "http://127.0.0.1:8787", - parentPid: 4242, - }); - expect(env.INVISIBLE_DOTS_TOKEN).toBe("token-from-the-environment"); - }); -}); - -describe("startWebServer", { timeout: 30_000 }, () => { - it("starts the script on the listen address with the web environment and answers at its url", async () => { - const entry = await script(ECHO_SERVER); - const { web, port } = await start(entry, { env: { PATH: process.env.PATH, DATABASE_URL: "postgres://user:secret@db/dots" } }); - expect(web.url).toBe(`http://127.0.0.1:${port}`); - const body = (await (await fetch(web.url)).json()) as { env: Record; cwd: string }; - expect(body.env.PORT).toBe(String(port)); - expect(body.env.HOSTNAME).toBe("127.0.0.1"); - expect(body.env.INVISIBLE_DOTS_URL).toBe("http://127.0.0.1:8787"); - expect(body.env.INVISIBLE_DOTS_WEB_PARENT_PID).toBe(String(process.pid)); - expect(body.env.DATABASE_URL).toBeUndefined(); - // It runs in its own directory, never the server's. - expect(realpathSync.native(body.cwd)).toBe(realpathSync.native(root)); - }); - - it("stops the child: nothing answers afterwards, and a second stop is harmless", async () => { - const entry = await script(ECHO_SERVER); - const { web, exits } = await start(entry); - await web.stop(); - await web.stop(); - await expect(fetch(web.url, { signal: AbortSignal.timeout(1000) })).rejects.toThrow(); - expect(exits).toEqual([]); - }); - - it("reports a child that exits later, once", async () => { - const entry = await script(` - import { createServer } from "node:http"; - createServer((req, res) => res.end("ok")).listen(Number(process.env.PORT), process.env.HOSTNAME); - setTimeout(() => { console.error("out of memory"); process.exit(7); }, 1500); - `); - const { exits } = await start(entry); - await expect.poll(() => exits.length, { timeout: 10_000 }).toBe(1); - expect(exits[0]).toBe("the web server exited (exit code 7): out of memory"); - }); - - it("fails with the child's own words when it exits before it answers", async () => { - const entry = await script(`console.error("Error: listen EADDRINUSE"); process.exit(1);`); - await expect(start(entry)).rejects.toThrow(new WebStartError("the web server exited (exit code 1): Error: listen EADDRINUSE")); - }); - - it("refuses a port something already answers on, instead of waiting on the wrong server", async () => { - const other = await script(ECHO_SERVER); - const { web, port } = await start(other); - await expect(start(other, { listen: { host: "127.0.0.1", port } })).rejects.toThrow( - `${web.url} is already in use; free the port or set INVISIBLE_DOTS_WEB_LISTEN to another host:port`, - ); - }); - - it("fails and kills the child when it does not answer in time", async () => { - const entry = await script(`setInterval(() => {}, 1000);`); - await expect(start(entry, { readyTimeoutMs: 600, stopTimeoutMs: 2000 })).rejects.toThrow(/did not answer at http:\/\/127\.0\.0\.1:\d+ within 0\.6 s/); - }); - - it("stops waiting when the signal aborts, and leaves no child", async () => { - const entry = await script(`setInterval(() => {}, 1000);`); - const controller = new AbortController(); - setTimeout(() => controller.abort(), 300); - await expect(start(entry, { signal: controller.signal })).rejects.toThrow("stopped while the web client was starting"); - }); - - it("does not start at all when the build is incomplete", async () => { - await expect(start("/nowhere/server.js", { build: { entry: "/nowhere/server.js", missing: "/nowhere/server.js" } })).rejects.toThrow( - "the web client is not built (/nowhere/server.js does not exist); build it with: npm run build --workspace @invisible-dots/web", - ); - }); -}); - -describe("a server that is killed outright", { timeout: 60_000 }, () => { - const here = dirname(fileURLToPath(import.meta.url)); - const watcher = pathToFileURL(join(here, "..", "..", "web", "src", "lib", "parent.ts")).href; - const webModule = pathToFileURL(join(here, "..", "src", "web.ts")).href; - - it("does not leave the web server holding its port: it exits once its parent is gone", async () => { - // Windows ends a Node child with its parent on its own (libuv puts children in a job object), so the - // orphan this guards against is a POSIX one; the web server's own exit is what keeps both the same. - // What the web build's instrumentation.ts does with the pid it is given, around a plain HTTP server. - const entry = await script(` - import { createServer } from "node:http"; - import { exitWhenParentGone, parentPidFrom } from ${JSON.stringify(watcher)}; - createServer((req, res) => res.end("ok")).listen(Number(process.env.PORT), process.env.HOSTNAME); - const exists = (pid) => { try { process.kill(pid, 0); return true; } catch (error) { return error.code === "EPERM"; } }; - const parentPid = parentPidFrom(process.env.INVISIBLE_DOTS_WEB_PARENT_PID); - if (parentPid !== undefined) exitWhenParentGone(parentPid, { exists, onGone: () => process.exit(0), intervalMs: 100 }); - `); - const port = await freePort(); - // The server stand-in: a process that starts the web server and then waits to be killed. - const parentScript = join(root, "parent.mjs"); - await writeFile( - parentScript, - ` - import { startWebServer } from ${JSON.stringify(webModule)}; - const web = await startWebServer({ - build: { entry: ${JSON.stringify(entry)}, missing: undefined }, - listen: { host: "127.0.0.1", port: ${port} }, - apiUrl: "http://127.0.0.1:8787", - env: { PATH: process.env.PATH }, - onUnexpectedExit: () => undefined, - }); - console.log(web.url); - setInterval(() => {}, 1000); - `, - ); - const parent = spawn(process.execPath, ["--import", "tsx", parentScript], { stdio: ["ignore", "pipe", "inherit"], cwd: join(here, "..") }); - try { - const url = await new Promise((resolve, reject) => { - parent.once("exit", () => reject(new Error("the stand-in server exited before the web server answered"))); - parent.stdout.once("data", (chunk: Buffer) => resolve(chunk.toString().trim())); - }); - expect((await fetch(url)).status).toBe(200); - parent.kill("SIGKILL"); - await expect - .poll(() => fetch(url, { signal: AbortSignal.timeout(500) }).then(() => "still answering", () => "gone"), { timeout: 15_000, interval: 200 }) - .toBe("gone"); - } finally { - parent.kill("SIGKILL"); - } - }); -}); diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json deleted file mode 100644 index 31a061f4..00000000 --- a/apps/cli/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] -} diff --git a/apps/scheduler/package.json b/apps/scheduler/package.json deleted file mode 100644 index c8df55a2..00000000 --- a/apps/scheduler/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@invisible-dots/scheduler", - "version": "0.0.0", - "private": true, - "description": "Task dispatcher: wakes Dots on work and puts them to sleep when idle.", - "license": "MIT", - "type": "module", - "exports": { - ".": "./src/index.ts", - "./testing": "./src/testing.ts" - }, - "scripts": { - "typecheck": "tsc -p tsconfig.json" - }, - "dependencies": { - "@invisible-dots/shared": "0.0.0", - "@invisible-dots/database": "0.0.0", - "@invisible-dots/events": "0.0.0" - } -} diff --git a/apps/scheduler/src/dispatcher.ts b/apps/scheduler/src/dispatcher.ts deleted file mode 100644 index a17e67ac..00000000 --- a/apps/scheduler/src/dispatcher.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Hands PENDING tasks to their Dots (section 9.2): claim one task per idle - * Dot with SKIP LOCKED. The claim stores the task's `task.created` in the - * inbound outbox in the same transaction; sending it, waking the Dot first - * when it sleeps, and failing the task when it cannot be delivered, is the - * inbound delivery's job (inbound.ts). - */ -import type { Database } from "@invisible-dots/database"; -import { errorMessage, type Clock, type Logger } from "@invisible-dots/shared"; - -// A claim skips a row another transaction holds (SKIP LOCKED); such holds last as long as one guest event's -// transaction. A pass that claimed nothing while a task could be claimed comes back this soon, this many times; -// past that the scheduler's timer finds the task. -const SKIPPED_RETRY_MS = 25; -const SKIPPED_RETRIES = 40; - -export class Dispatcher { - #running: Promise | null = null; - #again = false; - - constructor( - private readonly db: Database, - private readonly clock: Clock, - private readonly log: Logger, - /** Called with the Dot of every claimed task: its task.created is waiting in the outbox. */ - private readonly deliver: (dotId: string) => void, - ) {} - - /** - * Claim every task that can run now. Calls that arrive while a pass is - * running schedule one more pass instead of running concurrently, so one - * dispatcher never races itself. Resolves when the pass is over. - */ - dispatch(): Promise { - if (this.#running) { - this.#again = true; - return this.#running; - } - this.#running = (async () => { - try { - let skipped = 0; - do { - this.#again = false; - for (;;) { - const ts = this.clock.now().toISOString(); - const claimed = await this.db.transaction((tx) => tx.tasks.claimNext(ts)); - if (!claimed) break; - skipped = 0; - this.log.info("task claimed", { taskId: claimed.task.id, dotId: claimed.task.dot_id }); - this.deliver(claimed.task.dot_id); - } - if (!this.#again && skipped < SKIPPED_RETRIES && (await this.db.tasks.hasClaimable())) { - skipped++; - this.#again = true; - await new Promise((resolve) => setTimeout(resolve, SKIPPED_RETRY_MS)); - } - } while (this.#again); - } catch (error) { - this.log.error("dispatch pass failed", { error: errorMessage(error) }); - } finally { - this.#running = null; - } - })(); - return this.#running; - } - - /** Whether a pass is running. */ - get busy(): boolean { - return this.#running !== null; - } - - /** Wait for the current pass (tests and shutdown). */ - async settle(): Promise { - while (this.#running) await this.#running; - } -} diff --git a/apps/scheduler/src/driver.ts b/apps/scheduler/src/driver.ts deleted file mode 100644 index 4144689c..00000000 --- a/apps/scheduler/src/driver.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * What the control plane needs from the VM layer. The real implementation - * is an adapter over @invisible-dots/vm-manager (apps/api/src/vm-driver.ts); - * tests use the in-process fakes of `./testing.js`. - */ -import type { - AgentStateAnswer, - BrowserIdentity, - BrowserIdentityListAnswer, - ComputerResources, - CreateBrowserIdentityRequest, - DotRuntimeConfig, - FileListAnswer, - HealthAnswer, - InboundEvent, - OutboundEvent, - RefusedEvent, - SecretsRequest, - SystemAnswer, - SkillListAnswer, - ToolListAnswer, - VmState, -} from "@invisible-dots/shared"; - -/** - * The guest routes the control plane calls (sections 5.2 and 5.3). The - * method names and shapes are those of vm-manager's GuestClient, which - * satisfies this interface as it is. Failed calls throw an error carrying a - * numeric `status` (0 when the guest could not be reached) and, when the - * guest sent one, its `{ error }` code as `code`. - */ -export interface GuestApi { - health(options?: { timeoutMs?: number; signal?: AbortSignal }): Promise; - system(): Promise; - pushSecrets(secrets: SecretsRequest): Promise; - putConfig(config: DotRuntimeConfig): Promise; - postEvent(event: InboundEvent): Promise; - state(): Promise; - listBrowserIdentities(): Promise; - createBrowserIdentity(body: CreateBrowserIdentityRequest): Promise; - getBrowserIdentity(id: string): Promise; - deleteBrowserIdentity(id: string): Promise; - /** The JPEG of an open identity's window; 409 `not_open` when it is closed, 503 `busy` while a call holds it. */ - getBrowserIdentityFrame(id: string): Promise; - /** End the identity's browser and keep its profile; closing a closed identity is not an error. */ - closeBrowserIdentity(id: string): Promise; - listTools(): Promise; - listSkills(): Promise; - prepareSleep(timeoutMs?: number): Promise; - screenshot(): Promise; - /** The bytes of a file; a file larger than `maxBytes` is refused with status 413 and code `FILE_TOO_LARGE`. */ - readFile(path: string, options?: { maxBytes?: number }): Promise; - listFiles(path: string): Promise; - /** - * The outbound event stream after `after`. It reconnects by itself on - * network errors and ends only when `signal` aborts or it hits an error - * that waiting cannot fix (a refused token). A message that is not an - * event the host knows is not yielded: `onRefused` is awaited for it, in - * order with the events, and the stream goes on past it. - */ - events(options: { after?: number; signal?: AbortSignal; onRefused?: (info: RefusedEvent) => void | Promise }): AsyncIterable; -} - -export interface ComputerSpecInput { - dotId: string; - /** The Dot token in clear; it goes into the seed (section 4.2). */ - token: string; - /** The Dot's VM proxy in clear, absent for a direct exit; it goes into the seed with the token. */ - proxy?: string; - resources: ComputerResources; -} - -export interface CreatedComputer { - /** The golden image the overlay is backed by; recorded, because it can never change for this disk. */ - goldenImage: string; - runtimeImage: string; -} - -export interface StartedComputer { - /** The host port on 127.0.0.1 that QEMU forwards to the guest's port 1024 (section 3.5). */ - guestPort: number; - /** The QEMU process. */ - pid: number; - runtimeImage: string; - /** The VM was already running; nothing was spawned and `guestPort` is the one it runs with. */ - alreadyRunning: boolean; -} - -/** What the VM layer sees of one Dot's VM: its disk, its pid file and its QEMU process (section 3.4). */ -export interface ComputerState { - /** Whether the Dot's disk exists, that is whether the VM was ever created and not destroyed. */ - exists: boolean; - /** - * RUNNING while the Dot's QEMU process runs, STOPPED when it does not, - * ERROR when a live pid cannot be proven to be that QEMU. Whether the guest - * inside is up is guest health, which the READY procedure checks. - */ - state: VmState; - /** The pid of the live QEMU process, null when there is none. */ - pid: number | null; - /** - * The host port forwarded to the guest, from the pid file written when - * QEMU was spawned, so it is right even when the database row is not; - * null when not running. - */ - guestPort: number | null; - /** Why the state is ERROR, for logs and error messages. */ - detail: string | null; -} - -/** Where a guest is reached: the forwarded port recorded in the `computers` row (section 5.1). */ -export interface GuestEndpoint { - dotId: string; - port: number; -} - -export interface WaitForHealthOptions { - timeoutMs: number; - intervalMs: number; - /** Timeout of each health request. */ - requestTimeoutMs: number; -} - -export interface ComputerDriver { - /** Overlay and seed (section 9.4 up to `write seed.iso`). Safe to retry. */ - create(spec: ComputerSpecInput): Promise; - /** Pick a guest port and spawn QEMU detached (sections 3.4 and 3.5). */ - start(spec: ComputerSpecInput & { goldenImage: string }): Promise; - /** - * Poll `GET /v1/health` until dot-agentd and the agent both report ok. - * Fails at once on a refused token (status 401) and when the VM's QEMU - * process exits, and after `timeoutMs` otherwise. - */ - waitForHealth(endpoint: GuestEndpoint, token: string, options: WaitForHealthOptions): Promise; - /** - * `POST /v1/system/poweroff` through the guest channel with the Dot's - * token, then the QEMU process is killed after the grace period (section 9.5). - */ - stop(dotId: string, token: string): Promise<{ forced: boolean }>; - /** - * A full stop and start, so the guest shuts down cleanly and new resources - * and a new runtime ISO apply. The guest port changes. - */ - reboot(spec: ComputerSpecInput & { goldenImage: string }): Promise; - /** Stop the VM if it runs and remove its directory with the disk. */ - destroy(dotId: string): Promise; - /** From the pid file and the process, never from the database: this is what reconciliation compares against. */ - state(dotId: string): Promise; - guest(endpoint: GuestEndpoint, token: string): GuestApi; - /** Release what this process holds. VMs keep running. */ - close(): Promise; -} - -/** The HTTP status a failed guest call carried, or 0 when the guest was not reached. */ -export function guestErrorStatus(error: unknown): number { - const status = (error as { status?: unknown })?.status; - return typeof status === "number" ? status : 0; -} - -/** The `{ error }` code of a failed guest call, when there was one. */ -export function guestErrorCode(error: unknown): string | undefined { - const code = (error as { code?: unknown })?.code; - return typeof code === "string" && !/^E[A-Z]+$/.test(code) ? code : undefined; -} diff --git a/apps/scheduler/src/guest-events.ts b/apps/scheduler/src/guest-events.ts deleted file mode 100644 index e830eaa0..00000000 --- a/apps/scheduler/src/guest-events.ts +++ /dev/null @@ -1,132 +0,0 @@ -/** - * What a guest event changes on the host besides the event log: task rows (state, summary, error, spend), - * approval rows, the Dot's status, the time of its next automation, and the MCP servers of its config. - */ -import type { Repositories } from "@invisible-dots/database"; -import { - isMcpServerName, - parseDotConfig, - parseMcpServerEntry, - resolvePermission, - TERMINAL_TASK_STATES, - type AgentState, - type DotRecord, - type DotState, - type HostEventDataMap, - type OutboundEvent, - type PermissionName, -} from "@invisible-dots/shared"; - -/** - * The Dot status for an agent state. READY means the computer is up and the - * agent is IDLE; DONE is the short step before IDLE (section 8.1) and still - * counts as working. - */ -export function dotStatusForAgent(state: AgentState): DotState { - switch (state) { - case "IDLE": - return "READY"; - case "WAITING_APPROVAL": - return "WAITING_APPROVAL"; - default: - return "RUNNING"; - } -} - -/** Dot states the agent's own reports never override: they are set by the control plane. */ -const STICKY_DOT_STATES: readonly DotState[] = ["CREATING", "ERROR", "IDLE"]; - -export interface AppliedGuestEvent { - /** A task reached a terminal state, so the Dot may take the next one. */ - taskSettled: boolean; - /** The Dot's config changed (an MCP server it added): it is pushed to the guest once the transaction commits. */ - reconfigured?: DotRecord; - /** What the host logs of it, in the same transaction: `dot.updated`, or why it refused (`mcp.server.refused`). */ - hostEvents?: HostEventOf[]; -} - -type HostEventOf = { [K in keyof HostEventDataMap]: { type: K; data: HostEventDataMap[K] } }[keyof HostEventDataMap]; - -/** The tool of the engine that asks to add an MCP server; its approvals are the person's consent to one. */ -export const ADD_MCP_SERVER_TOOL = "add_mcp_server"; -const ADD_PERMISSION: PermissionName = "mcp.servers.add"; - -/** - * A Dot added an MCP server to its own config. The config is the host's, so the host decides again what the engine - * decided: the permission allows it, or the person approved a call of exactly these arguments, and that approval is - * used up here, so it adds one server once. The entry is checked by the config's own schema first (a call refused for - * it keeps its approval), and a name already declared is not replaced. The server's own permission is left to its - * default, ask, so each of its tools still asks until the person allows it. - */ -async function addMcpServer(tx: Repositories, dotId: string, args: Record): Promise { - const name = typeof args.name === "string" ? args.name : ""; - const refuse = (reason: string): AppliedGuestEvent => ({ taskSettled: false, hostEvents: [{ type: "mcp.server.refused", data: { name, reason } }] }); - const dot = await tx.dots.get(dotId); - if (!dot) return refuse("the Dot no longer exists"); - const decision = resolvePermission(dot.config, ADD_PERMISSION); - if (decision === "deny") return refuse(`the Dot's config denies ${ADD_PERMISSION}`); - if (!isMcpServerName(name)) return refuse(`"${name}" is not an MCP server's name`); - if (name in dot.config.mcp_servers) return refuse(`the Dot's config already declares an MCP server "${name}"`); - const { name: _name, reason: _reason, ...entry } = args; - const parsed = parseMcpServerEntry(entry); - if (!parsed.ok) return refuse(parsed.problem); - const config = parseDotConfig({ ...dot.config, mcp_servers: { ...dot.config.mcp_servers, [name]: parsed.server } }); - let approvalId: string | undefined; - if (decision === "ask") { - const approval = await tx.approvals.useApproved(dotId, ADD_MCP_SERVER_TOOL, args); - if (!approval) return refuse(`${ADD_PERMISSION} asks, and no unused approval of exactly these arguments was given`); - approvalId = approval.id; - } - const reconfigured = await tx.dots.updateConfig(dotId, config); - if (!reconfigured) return refuse("the Dot no longer exists"); - const added = { name: dot.name, mcp_server_added: name, ...(approvalId && { approval_id: approvalId }) }; - return { taskSettled: false, reconfigured, hostEvents: [{ type: "dot.updated", data: added }] }; -} - -/** The spend a task event reports (architecture section 5.4), onto the task's row; events without it change nothing. */ -async function recordTaskSpend(tx: Repositories, dotId: string, data: { task_id: string; spent_usd?: number }): Promise { - if (data.spent_usd !== undefined) await tx.tasks.recordSpend(data.task_id, dotId, data.spent_usd); -} - -/** Apply one newly stored guest event inside the transaction that stored it. */ -export async function applyGuestEvent(tx: Repositories, dotId: string, event: OutboundEvent): Promise { - switch (event.type) { - case "agent.state": { - const dot = await tx.dots.get(dotId); - if (dot && !STICKY_DOT_STATES.includes(dot.status)) { - const next = dotStatusForAgent(event.data.state); - if (next !== dot.status) await tx.dots.setStatus(dotId, next); - } - return { taskSettled: false }; - } - case "task.started": - await tx.tasks.transition(event.data.task_id, "RUNNING", { dotId }); - return { taskSettled: false }; - case "task.progress": - await recordTaskSpend(tx, dotId, event.data); - return { taskSettled: false }; - case "task.completed": - await recordTaskSpend(tx, dotId, event.data); - return { taskSettled: (await tx.tasks.transition(event.data.task_id, "COMPLETED", { summary: event.data.summary, dotId })) !== null }; - case "task.failed": - await recordTaskSpend(tx, dotId, event.data); - return { taskSettled: (await tx.tasks.transition(event.data.task_id, "FAILED", { error: event.data.error, dotId })) !== null }; - case "automation.next_run": - // The guest's report of when its earliest automation is due, so a stopped computer is started shortly before it. - await tx.computers.setNextAutomation(dotId, event.data.next_run_at_ms); - return { taskSettled: false }; - case "approval.requested": { - // A request for a task that already ended (cancelled while the guest - // was asking) is kept for the record but never listed as pending. - const task = event.data.task_id ? await tx.tasks.get(event.data.task_id) : null; - const ended = task !== null && task.dot_id === dotId && TERMINAL_TASK_STATES.includes(task.status); - await tx.approvals.insertRequested(dotId, event.data, ended ? "expired" : "pending"); - if (event.data.task_id && !ended) await tx.tasks.transition(event.data.task_id, "WAITING_APPROVAL", { dotId }); - return { taskSettled: false }; - } - case "mcp.server.added": - return addMcpServer(tx, dotId, event.data.arguments); - default: - return { taskSettled: false }; - } -} diff --git a/apps/scheduler/src/inbound.ts b/apps/scheduler/src/inbound.ts deleted file mode 100644 index d0aa41dd..00000000 --- a/apps/scheduler/src/inbound.ts +++ /dev/null @@ -1,301 +0,0 @@ -/** - * Delivery of host to guest events (sections 5.4 and 9.5) from the durable - * outbox in `inbound_events`. Whatever the control plane decides to tell a - * guest (a claimed task, a message, an approval, a cancel) is stored first, - * in the transaction that decided it; this class only sends what is stored. - * - * Per Dot, one flush runs at a time and sends the pending rows in order, - * stopping at the first failure so a later event never overtakes an earlier - * one. A Dot that is not READY is woken first. A row is marked delivered - * only on the guest's 202; the guest keeps every event id it accepted, so a - * row whose send had an unknown outcome (a timeout, a reset connection) is - * simply sent again. Every READY transition flushes the Dot again, so - * nothing waits for a timer once the guest is back. - */ -import { TASK_ENDED_BEFORE_DELIVERY, type Database, type InboundRecord } from "@invisible-dots/database"; -import type { EventLog } from "@invisible-dots/events"; -import { guestErrorCode, guestErrorStatus } from "./driver.js"; -import type { Lifecycle } from "./lifecycle.js"; -import { errorMessage, type Clock, type Logger } from "@invisible-dots/shared"; - -export interface InboundDeliveryOptions { - /** Failed sends with a known outcome before a task.created gives its task up as FAILED. */ - maxDeliveryAttempts: number; - /** Delay before a failed row is retried, multiplied by its number of failures. */ - retryDelayMs: number; -} - -export const DEFAULT_INBOUND_OPTIONS: InboundDeliveryOptions = { - maxDeliveryAttempts: 3, - retryDelayMs: 30_000, -}; - -export interface InboundDeliveryDeps { - db: Database; - events: EventLog; - lifecycle: Lifecycle; - clock: Clock; - logger: Logger; - /** Resolves once a Dot that is still being provisioned is (successfully or not). */ - provisioned: (dotId: string) => Promise; - /** A task reached a terminal state here: the dispatcher may have work to hand out. */ - onTaskSettled: () => void; - options?: Partial; -} - -/** - * Whether a failed send certainly did NOT hand the event to the guest: the - * guest answered with an error, or nothing listened on the guest port. A - * timeout or a dropped connection may have delivered it, so it is not - * counted against the row. - */ -function knownUndelivered(error: unknown): boolean { - return guestErrorStatus(error) >= 400 || (error as { code?: unknown })?.code === "ECONNREFUSED"; -} - -/** Rolls back a give-up whose task ended before it: the task keeps that end and logs no failure. */ -class TaskAlreadyEnded extends Error {} - -export class InboundDelivery { - readonly #db: Database; - readonly #events: EventLog; - readonly #lifecycle: Lifecycle; - readonly #clock: Clock; - readonly #log: Logger; - readonly #provisioned: (dotId: string) => Promise; - readonly #onTaskSettled: () => void; - readonly #opts: InboundDeliveryOptions; - readonly #flushing = new Map>(); - readonly #again = new Set(); - readonly #timers = new Set(); - /** Dots whose deliveries wait for something that has to reach the guest first (`hold`). */ - readonly #holds = new Map; release: () => void }>(); - #closed = false; - - constructor(deps: InboundDeliveryDeps) { - this.#db = deps.db; - this.#events = deps.events; - this.#lifecycle = deps.lifecycle; - this.#clock = deps.clock; - this.#log = deps.logger; - this.#provisioned = deps.provisioned; - this.#onTaskSettled = deps.onTaskSettled; - this.#opts = { ...DEFAULT_INBOUND_OPTIONS, ...deps.options }; - } - - get maxDeliveryAttempts(): number { - return this.#opts.maxDeliveryAttempts; - } - - /** - * Send nothing to the Dot's guest until the returned function is called. For a caller that stores a row and - * then has to do something to the guest that the row's meaning depends on: the config an approval's "always - * allow" changed has to be there before the guest hears the approval, or the approved call's next use of the - * permission is asked again. Take the hold before the row is stored: a flush that is already running - * waits for it before every row it sends, so no later flush or timer can overtake the work. Several holds - * on one Dot add up. The hold is in memory: after a restart, the guest's next READY does what the caller - * would have done. - */ - hold(dotId: string): () => void { - let entry = this.#holds.get(dotId); - if (!entry) { - let release!: () => void; - const open = new Promise((resolve) => { - release = resolve; - }); - entry = { holders: 0, open, release }; - this.#holds.set(dotId, entry); - } - entry.holders++; - const held = entry; - let released = false; - return () => { - if (released) return; - released = true; - if (--held.holders === 0) { - this.#holds.delete(dotId); - held.release(); - } - }; - } - - async #unheld(dotId: string): Promise { - for (let entry = this.#holds.get(dotId); entry; entry = this.#holds.get(dotId)) await entry.open; - } - - /** - * Send the Dot's pending rows. A call while a flush runs makes that flush - * look once more when it is done, so nothing stored meanwhile is missed. - * Resolves when no flush of the Dot is running any more. - */ - kick(dotId: string): Promise { - if (this.#closed) return Promise.resolve(); - const running = this.#flushing.get(dotId); - if (running) { - this.#again.add(dotId); - return running; - } - const flush = (async () => { - try { - do { - this.#again.delete(dotId); - await this.#flush(dotId); - } while (this.#again.has(dotId) && !this.#closed); - } catch (error) { - this.#log.error("inbound delivery failed", { dotId, error: errorMessage(error) }); - } finally { - this.#flushing.delete(dotId); - } - })(); - this.#flushing.set(dotId, flush); - return flush; - } - - /** Kick every Dot whose oldest pending row is due for another try (the periodic pass and the start). */ - async kickDue(): Promise { - for (const dotId of await this.#db.inbound.dueDots(this.#opts.maxDeliveryAttempts)) void this.kick(dotId); - } - - /** Whether any flush is running. */ - get busy(): boolean { - return this.#flushing.size > 0; - } - - /** Whether a flush of the Dot is running. */ - isFlushing(dotId: string): boolean { - return this.#flushing.has(dotId); - } - - /** Wait for every flush running now (tests and shutdown). */ - async settle(): Promise { - while (this.#flushing.size > 0) await Promise.allSettled([...this.#flushing.values()]); - } - - close(): void { - this.#closed = true; - for (const timer of this.#timers) clearTimeout(timer); - this.#timers.clear(); - } - - async #flush(dotId: string): Promise { - await this.#unheld(dotId); - let rows = await this.#db.inbound.pending(dotId); - if (rows.length === 0) return; - await this.#provisioned(dotId); - try { - await this.#lifecycle.ensureReady(dotId); - } catch (error) { - await this.#notReady(dotId, rows, error); - return; - } - // Rows stored while the Dot woke up are sent in the same pass. - rows = await this.#db.inbound.pending(dotId); - for (const row of rows) { - await this.#unheld(dotId); - if (this.#closed) return; - if ((await this.#db.inbound.beginSend(row.event.id)) === "skip") { - this.#log.info("inbound event not sent: its task ended first", { dotId, id: row.event.id, type: row.event.type }); - continue; - } - try { - await (await this.#lifecycle.guest(dotId)).postEvent(row.event); - } catch (error) { - this.#lifecycle.markSuspect(dotId); - await this.#sendFailed(row, error); - return; - } - await this.#db.inbound.markDelivered(row.event.id); - await this.#db.computers.touch(dotId, this.#clock.now()); - this.#log.info("inbound event delivered", { dotId, id: row.event.id, type: row.event.type }); - } - } - - /** The Dot could not be made READY: every pending row had one more failed attempt. */ - async #notReady(dotId: string, rows: InboundRecord[], error: unknown): Promise { - const reason = errorMessage(error); - this.#log.warn("inbound events wait: the Dot is not READY", { dotId, pending: rows.length, error: reason }); - for (const row of rows) await this.#countFailure(row, reason); - } - - async #sendFailed(row: InboundRecord, error: unknown): Promise { - const reason = errorMessage(error); - if (!knownUndelivered(error)) { - // The guest may hold it: never counted, sent again with the same id. - this.#log.warn("inbound event outcome unknown, will send it again", { dotId: row.dot_id, id: row.event.id, error: reason }); - const retryAt = this.#retryAt(1); - await this.#db.inbound.postpone(row.event.id, reason, retryAt); - this.#schedule(row.dot_id, this.#opts.retryDelayMs); - return; - } - const status = guestErrorStatus(error); - if (status >= 400 && status < 500) { - // The guest refused this event as such: sending it again cannot change that. - const code = guestErrorCode(error) ?? String(status); - this.#log.error("the guest refused an inbound event; it is dropped", { dotId: row.dot_id, id: row.event.id, error: reason }); - await this.#giveUp(row, `refused by the guest (${code}): ${reason}`); - return; - } - await this.#countFailure(row, reason); - } - - async #countFailure(row: InboundRecord, reason: string): Promise { - const failures = await this.#db.inbound.recordFailure(row.event.id, reason, this.#retryAt(row.failures + 1)); - if (failures >= this.#opts.maxDeliveryAttempts) { - if (row.event.type === "task.created") { - await this.#giveUp(row, `could not be delivered to the Dot after ${failures} attempts: ${reason}`); - } else { - // A message or a decision is never given up: the next READY sends it. - this.#log.warn("inbound event waits for the next READY", { dotId: row.dot_id, id: row.event.id, failures }); - } - return; - } - this.#schedule(row.dot_id, this.#opts.retryDelayMs * failures); - } - - /** - * Drop a row for good; a task.created takes its task with it, logged as `task.failed` in the same transaction like - * every task state change. A task that ended meanwhile (cancelled) keeps its end: only the row is dropped. - */ - async #giveUp(row: InboundRecord, reason: string): Promise { - const taskId = row.event.type === "task.created" ? row.task_id : null; - if (taskId) { - const logged = await this.#db - .transaction(async (tx) => { - // The event first: its insert takes the event-order lock (database events.ts). - const event = await this.#events.appendHostIn(tx, row.dot_id, "task.failed", { task_id: taskId, error: reason }); - if (!(await tx.tasks.transition(taskId, "FAILED", { error: reason }))) throw new TaskAlreadyEnded(); - await tx.inbound.drop(row.event.id, reason); - return event; - }) - .catch((error: unknown) => { - if (error instanceof TaskAlreadyEnded) return null; - throw error; - }); - if (logged) { - this.#events.publish(logged); - this.#log.error("task delivery failed for good", { taskId, error: reason }); - this.#onTaskSettled(); - return; - } - } - await this.#db.inbound.drop(row.event.id, reason); - } - - /** scheduled_at style: compared with the database's now(), so a zero delay is "no date" rather than this host's now. */ - #retryAt(failures: number): Date | null { - const delay = this.#opts.retryDelayMs * failures; - return delay > 0 ? new Date(Date.now() + delay) : null; - } - - #schedule(dotId: string, delayMs: number): void { - if (this.#closed) return; - const timer = setTimeout(() => { - this.#timers.delete(timer); - void this.kick(dotId); - }, delayMs); - timer.unref(); - this.#timers.add(timer); - } -} - -export { TASK_ENDED_BEFORE_DELIVERY }; diff --git a/apps/scheduler/src/index.ts b/apps/scheduler/src/index.ts deleted file mode 100644 index 4d6571a4..00000000 --- a/apps/scheduler/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from "./dispatcher.js"; -export * from "./driver.js"; -export * from "./guest-events.js"; -export * from "./inbound.js"; -export * from "./lifecycle.js"; -export * from "./scheduler.js"; -export * from "./support.js"; diff --git a/apps/scheduler/src/lifecycle.ts b/apps/scheduler/src/lifecycle.ts deleted file mode 100644 index 64872c0c..00000000 --- a/apps/scheduler/src/lifecycle.ts +++ /dev/null @@ -1,878 +0,0 @@ -/** - * The life of a Dot's computer on the host: create (section 9.4), the READY - * procedure (9.3), sleep and wake (9.5), reboot, delete, the guest event - * pump, and reconciliation with the running QEMU processes (found through - * their pid files) after a control plane restart. - * - * Every operation that changes a computer's state runs under a per-Dot lock, - * so a wake and an idle sleep of the same Dot can never interleave. A Dot is - * in `#ready` only between a completed READY procedure and the moment an - * operation under that lock takes it out again, so anything that skips the - * lock because the Dot is READY (a delivery, a push) can only meet a stop - * that has not started yet: every stop takes the Dot out of `#ready` first. - */ -import { VM_PROXY_NAME, type Database, type Repositories } from "@invisible-dots/database"; -import type { EventLog } from "@invisible-dots/events"; -import { - COMPUTER_STOPPED, - computerIsUp, - computerResources, - PREPARE_SLEEP_TIMEOUT_MS, - toRuntimeConfig, - type DotState, - type HealthAnswer, - type HostEventDataMap, - type HostEventType, - type OutboundEvent, - type RefusedEvent, - type StopReason, - type StoredEvent, - type VmState, -} from "@invisible-dots/shared"; -import { guestErrorCode, guestErrorStatus, type ComputerDriver, type ComputerSpecInput, type ComputerState, type GuestApi } from "./driver.js"; -import { applyGuestEvent, dotStatusForAgent, type AppliedGuestEvent } from "./guest-events.js"; -import { abortableSleep, ControlPlaneError, errorMessage, type Clock, type Logger } from "@invisible-dots/shared"; -import { BackgroundWork, KeyedMutex } from "./support.js"; - -export interface LifecycleOptions { - /** How long a started VM may take to pass the READY procedure. Default 10 minutes (a first boot runs cloud-init). */ - readyTimeoutMs: number; - /** Interval between health polls while waiting for READY. Default 2 s. */ - healthPollMs: number; - /** Per-request timeout of a health poll. Default 5 s. */ - healthRequestTimeoutMs: number; - /** First retry delay of the event pump after a failure; doubles up to `pumpMaxRetryMs`. */ - pumpRetryMs: number; - pumpMaxRetryMs: number; - /** Time the agent gets to flush its state before a shutdown (section 9.5). Default PREPARE_SLEEP_TIMEOUT_MS of packages/shared, which the engine's own steps fit inside. */ - prepareSleepTimeoutMs: number; - /** - * How long before an automation is due a stopped computer is started, and how close to one a running computer is - * kept awake (section 9.5). It is the time a start takes to reach READY with some to spare; the passes that look - * for the Dots to start run every few seconds, so the computer is up between this long and a pass before the run. - * Default 90 s. - */ - automationWakeLeadMs: number; -} - -export const DEFAULT_LIFECYCLE_OPTIONS: LifecycleOptions = { - readyTimeoutMs: 10 * 60_000, - healthPollMs: 2_000, - healthRequestTimeoutMs: 5_000, - pumpRetryMs: 1_000, - pumpMaxRetryMs: 30_000, - prepareSleepTimeoutMs: PREPARE_SLEEP_TIMEOUT_MS, - automationWakeLeadMs: 90_000, -}; - -export interface LifecycleDeps { - db: Database; - events: EventLog; - driver: ComputerDriver; - clock: Clock; - logger: Logger; - options?: Partial; - /** Called when a task reached a terminal state or a Dot became READY: the dispatcher may have work to hand out. */ - onWorkPossible?: () => void; - /** Called every time a Dot becomes READY: what waits in its inbound outbox can go now. */ - onReady?: (dotId: string) => void; -} - -/** Why a stop is asked for: the idle sleep, or the person (`exited` is only ever recorded, never asked for). */ -export type StopRequest = Exclude; - -/** Part of the error a Dot gets when READY failed only for want of a key; setting a key retries those Dots. */ -export const MISSING_KEY_MESSAGE = "no OpenRouter API key is configured"; - -/** The READY procedure failed; the message says which step and why. */ -export class NotReadyError extends ControlPlaneError { - constructor(dotId: string, message: string) { - super(503, "computer_not_ready", `Dot ${dotId}: ${message}`); - this.name = "NotReadyError"; - } -} - -/** - * A failed guest call described by its status and code only. Used where the - * request carried a secret: the error text of a guest or a proxy may echo - * the body, and this message goes into logs, `dots.error` and the event log. - */ -function describeWithoutBody(error: unknown): string { - const status = guestErrorStatus(error); - const code = guestErrorCode(error) ?? (error as { code?: unknown })?.code; - return status === 0 ? `the guest was not reached${typeof code === "string" ? ` (${code})` : ""}` : `status ${status}${typeof code === "string" ? `, ${code}` : ""}`; -} - -/** Store a host event through the transaction a change is made in (`Lifecycle.#commit`). */ -type HostLog = (dotId: string, type: K, data: HostEventDataMap[K]) => Promise; - -export class Lifecycle { - readonly #db: Database; - readonly #events: EventLog; - readonly #driver: ComputerDriver; - readonly #clock: Clock; - readonly #log: Logger; - readonly #opts: LifecycleOptions; - readonly #onWorkPossible: () => void; - readonly #onReady: (dotId: string) => void; - readonly #mutex = new KeyedMutex(); - /** Pushes of the key and the config to a READY guest, one at a time per Dot, so the last one sent is the newest. */ - readonly #pushes = new KeyedMutex(); - /** Bumped by every change of what a guest must hold; READY completes only on an unchanged generation. */ - readonly #generation = new Map(); - /** Dots whose READY procedure completed since their computer last started. */ - readonly #ready = new Set(); - readonly #pumps = new Map(); - readonly #pumpDone = new Map>(); - readonly #background: BackgroundWork; - #closed = false; - - constructor(deps: LifecycleDeps) { - this.#db = deps.db; - this.#events = deps.events; - this.#driver = deps.driver; - this.#clock = deps.clock; - this.#log = deps.logger; - this.#background = new BackgroundWork(this.#log); - this.#opts = { ...DEFAULT_LIFECYCLE_OPTIONS, ...deps.options }; - this.#onWorkPossible = deps.onWorkPossible ?? (() => {}); - this.#onReady = deps.onReady ?? (() => {}); - } - - isReady(dotId: string): boolean { - return this.#ready.has(dotId); - } - - /** Whether a lifecycle operation is queued or running for the Dot. */ - isBusy(dotId: string): boolean { - return this.#mutex.isBusy(dotId); - } - - /** - * The guest of a running computer, reached through the port recorded at its - * start. The port is read for every call: it changes with every start. - */ - async guest(dotId: string): Promise { - const computer = await this.#db.computers.get(dotId); - if (!computer) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} has no computer`); - if (computer.guest_port === null) { - throw new ControlPlaneError(409, COMPUTER_STOPPED, `the computer of Dot ${dotId} is ${computer.state}, it has no guest port`); - } - return this.#driver.guest({ dotId, port: computer.guest_port }, await this.#db.computers.token(dotId)); - } - - /** - * Run `write` in one transaction, and publish what it logged after COMMIT, in order. A change of state and the host - * events that tell it commit together or not at all: a control plane killed between two writes leaves the state it - * was in before the change (which recovery knows how to finish), never a state nobody was told of. `log` stores a host - * event through the transaction. Like every transaction that inserts events and changes other rows, `write` logs first - * and writes its rows after (the event insert takes the event-order lock, database events.ts). - */ - async #commit(write: (tx: Repositories, log: HostLog) => Promise): Promise { - const { value, logged } = await this.#db.transaction(async (tx) => { - const logged: StoredEvent[] = []; - const log: HostLog = async (dotId, type, data) => { - logged.push(await this.#events.appendHostIn(tx, dotId, type, data)); - }; - return { value: await write(tx, log), logged }; - }); - for (const event of logged) this.#events.publish(event); - return value; - } - - /** Log `computer.state` when the computer's row holds another state now; the caller writes the row after its events. */ - async #logState(tx: Repositories, log: HostLog, dotId: string, state: VmState): Promise { - if ((await tx.computers.get(dotId))?.state !== state) await log(dotId, "computer.state", { state }); - } - - /** Log `dot.updated` for the status ERROR (the other statuses are told by the events of what caused them); the caller writes the row after its events. */ - async #logDotStatus(tx: Repositories, log: HostLog, dotId: string, status: DotState, error: string | null): Promise { - const dot = status === "ERROR" ? await tx.dots.get(dotId) : null; - if (dot) await log(dotId, "dot.updated", { name: dot.name, status, error }); - } - - async #setVmState(dotId: string, state: VmState, lastError?: string | null, stopReason?: StopReason): Promise { - await this.#commit(async (tx, log) => { - await this.#logState(tx, log, dotId, state); - await tx.computers.setState(dotId, state, lastError, stopReason); - }); - } - - async #setDotStatus(dotId: string, status: DotState, error: string | null = null): Promise { - await this.#commit(async (tx, log) => { - await this.#logDotStatus(tx, log, dotId, status, error); - await tx.dots.setStatus(dotId, status, error); - }); - } - - /** - * The computer is up: its process, its images and its state RUNNING, with `computer.state` and `computer.started`, - * in one write. From here on the guest is reached through this port. - */ - async #recordStarted( - dotId: string, - started: { guestPort: number; pid: number; runtimeImage: string }, - goldenImage: string, - extra: Record, - ): Promise { - await this.#commit(async (tx, log) => { - await this.#logState(tx, log, dotId, "RUNNING"); - await log(dotId, "computer.started", { guest_port: started.guestPort, runtime_image: started.runtimeImage, ...extra }); - await tx.computers.setProcess(dotId, { guestPort: started.guestPort, pid: started.pid }); - await tx.computers.setImages(dotId, goldenImage, started.runtimeImage); - await tx.computers.setState(dotId, "RUNNING", null); - }); - } - - /** The computer and the Dot are in ERROR for `message`, with `computer.state` and `dot.updated`, in one write. */ - async #recordError(dotId: string, message: string): Promise { - await this.#commit(async (tx, log) => { - await this.#logState(tx, log, dotId, "ERROR"); - await this.#logDotStatus(tx, log, dotId, "ERROR", message); - await tx.computers.setState(dotId, "ERROR", message); - await tx.dots.setStatus(dotId, "ERROR", message); - }); - } - - /** - * The computer is off: no process, the state STOPPED with the reason, `computer.state` and `computer.stopped`, and - * the Dot idle, in one write. Recovery, which finds a computer off that was not recorded as such, leaves a Dot that - * is disabled or in ERROR as it is (`keepFailedDot`). - */ - async #recordStopped(dotId: string, reason: StopReason, forced: boolean, keepFailedDot = false): Promise { - await this.#commit(async (tx, log) => { - await this.#logState(tx, log, dotId, "STOPPED"); - await log(dotId, "computer.stopped", { reason, forced }); - const dot = await tx.dots.get(dotId); - await tx.computers.setProcess(dotId, null); - await tx.computers.setState(dotId, "STOPPED", null, reason); - if (dot && !(keepFailedDot && dot.status === "ERROR")) await tx.dots.setStatus(dotId, "IDLE", null); - }); - } - - /** Record a lifecycle failure on both rows, log it, and rethrow it. */ - async #fail(dotId: string, step: string, error: unknown): Promise { - const message = `${step} failed: ${errorMessage(error)}`; - this.#log.error(message, { dotId }); - await this.#recordError(dotId, message).catch(() => {}); - throw error instanceof ControlPlaneError ? error : new ControlPlaneError(502, "computer_error", `Dot ${dotId}: ${message}`); - } - - async #spec(dotId: string): Promise { - const [dot, computer] = await Promise.all([this.#db.dots.get(dotId), this.#db.computers.get(dotId)]); - if (!dot || !computer) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} has no computer`); - const proxy = await this.#db.secrets.get(dotId, VM_PROXY_NAME); - return { - dotId, - token: await this.#db.computers.token(dotId), - ...(proxy ? { proxy } : {}), - resources: computerResources(dot.config), - goldenImage: computer.golden_image, - state: computer.state, - }; - } - - /** Section 9.4: provision the computer of a Dot inserted as CREATING, start it and bring it to READY. */ - provision(dotId: string): Promise { - return this.#mutex.run(dotId, async () => { - const spec = await this.#spec(dotId); - this.#log.info("provisioning computer", { dotId }); - let created; - try { - created = await this.#driver.create(spec); - } catch (error) { - return this.#fail(dotId, "create", error); - } - await this.#db.computers.setImages(dotId, created.goldenImage, created.runtimeImage); - await this.#startLocked(dotId); - }); - } - - /** - * Make sure the Dot can take work: start a stopped computer, finish the - * READY procedure of a running one that is not READY yet. Resolves once - * READY; throws (and leaves the Dot in ERROR) when that fails. - */ - async ensureReady(dotId: string): Promise { - if (this.#ready.has(dotId)) return; - await this.#mutex.run(dotId, () => this.#ensureReadyLocked(dotId)); - } - - async #ensureReadyLocked(dotId: string): Promise { - if (this.#ready.has(dotId)) return; - const computer = await this.#db.computers.get(dotId); - if (!computer) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} has no computer`); - if (computer.state === "DELETING") throw new ControlPlaneError(409, "dot_deleting", `Dot ${dotId} is being deleted`); - if (computer.state === "PROVISIONING") { - throw new ControlPlaneError(409, "dot_provisioning", `Dot ${dotId} is still being provisioned`); - } - const vm = await this.#driver.state(dotId); - if (vm.state === "RUNNING" && vm.guestPort !== null) { - await this.#adoptRunning(dotId, { ...vm, guestPort: vm.guestPort }); - } else { - await this.#startLocked(dotId); - } - } - - /** - * Start a stopped computer for an automation that is due, if it still is one: the pass that chose it read the - * database before this turn of the per-Dot lock came, and the person may have stopped the computer since (a stop - * that is not started for its automations), or the guest reported another time. The rule is read again, under the - * lock, from the same place the pass read it (`stoppedDotsWithAutomationDue`); true when the computer was started. - */ - async wakeForAutomation(dotId: string): Promise { - if (this.#ready.has(dotId)) return false; - return this.#mutex.run(dotId, async () => { - if (!(await this.stoppedDotsWithAutomationDue()).includes(dotId)) return false; - await this.#ensureReadyLocked(dotId); - return true; - }); - } - - async #startLocked(dotId: string): Promise { - const spec = await this.#spec(dotId); - if (!spec.goldenImage) { - return this.#fail(dotId, "start", new Error("the computer has no golden image recorded; it was never created")); - } - await this.#setVmState(dotId, "STARTING"); - let started; - try { - started = await this.#driver.start({ ...spec, goldenImage: spec.goldenImage }); - } catch (error) { - await this.#db.computers.setProcess(dotId, null).catch(() => {}); - return this.#fail(dotId, "start", error); - } - await this.#recordStarted(dotId, started, spec.goldenImage, started.alreadyRunning ? { already_running: true } : {}); - await this.#readyProcedure(dotId); - } - - /** - * A running VM this process did not start (after a control plane restart, - * or after a failed READY). Its port and pid are what QEMU and its pid - * file say now; the row is brought in line with them when it differs. - */ - async #adoptRunning(dotId: string, vm: ComputerState & { guestPort: number }): Promise { - const computer = await this.#db.computers.get(dotId); - const pid = vm.pid ?? computer?.pid ?? null; - if (pid === null) { - return this.#fail(dotId, "attach to the running computer", new Error("QEMU runs but neither its pid file nor the database names its pid")); - } - if (computer?.guest_port !== vm.guestPort || computer?.pid !== pid) { - this.#log.info("recording the running VM's process", { dotId, guestPort: vm.guestPort, pid }); - await this.#db.computers.setProcess(dotId, { guestPort: vm.guestPort, pid }); - } - await this.#setVmState(dotId, "RUNNING", null); - await this.#readyProcedure(dotId); - } - - #generationOf(dotId: string): number { - return this.#generation.get(dotId) ?? 0; - } - - /** - * Push what the guest must hold: the OpenRouter key and the secrets the - * config's MCP servers name (memory only in the guest, so lost with every - * agent restart), then the runtime config, all read from the database now. - * The one place that does this, for READY, for a changed key, secret or - * config, and after an agent restart. - */ - async #push(dotId: string, guest: GuestApi): Promise { - const key = await this.#db.secrets.openRouterKey(dotId); - if (!key) throw new NotReadyError(dotId, `${MISSING_KEY_MESSAGE}; set one with PUT /api/secrets/openrouter`); - const dot = await this.#db.dots.get(dotId); - if (!dot) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} not found`); - const mcpSecrets = await this.#db.secrets.mcpSecrets(dotId, dot.config.mcp_servers); - try { - await guest.pushSecrets({ openrouter_api_key: key, mcp_secrets: mcpSecrets }); - } catch (error) { - // Never the guest's own words here: whatever answered may have echoed a secret. - throw new Error(`the guest did not take the OpenRouter key and the MCP secrets (${describeWithoutBody(error)})`); - } - await guest.putConfig(toRuntimeConfig(dot.config)); - } - - /** - * Section 9.3: wait for dot-agentd and the agent, push the OpenRouter key, - * push the runtime config, then require the agent to report the key and - * every self-check. Only then is the Dot READY and its events pumped. - */ - async #readyProcedure(dotId: string): Promise { - const computer = await this.#db.computers.get(dotId); - if (computer?.guest_port == null) { - return this.#fail(dotId, "READY", new Error("the computer has no guest port recorded")); - } - // A pump of an earlier start reads a port that is gone and never comes back on its own. - await this.#stopPump(dotId); - const endpoint = { dotId, port: computer.guest_port }; - const token = await this.#db.computers.token(dotId); - const guest = this.#driver.guest(endpoint, token); - let health: HealthAnswer; - try { - health = await this.#driver.waitForHealth(endpoint, token, { - timeoutMs: this.#opts.readyTimeoutMs, - intervalMs: this.#opts.healthPollMs, - requestTimeoutMs: this.#opts.healthRequestTimeoutMs, - }); - } catch (error) { - if ((error as { status?: unknown }).status === 401) { - return this.#fail(dotId, "READY", new Error("the guest refused the Dot token (401)")); - } - return this.#fail(dotId, "READY (waiting for the guest)", error); - } - - let agentState; - for (;;) { - const generation = this.#generationOf(dotId); - try { - await this.#push(dotId, guest); - health = await guest.health({ timeoutMs: this.#opts.healthRequestTimeoutMs }); - } catch (error) { - return this.#fail(dotId, error instanceof NotReadyError ? "READY" : "READY (secret and config push)", error); - } - const problems: string[] = []; - if (health.agent.status !== "ok") problems.push(`agent status ${health.agent.status}`); - else { - if (!health.agent.openrouter_configured) problems.push("the agent does not report the OpenRouter key as configured"); - const checks = health.agent.checks; - if (!checks) problems.push("the agent reports no self-checks"); - else { - if (!checks.filesystem_writable) problems.push("filesystem not writable"); - if (!checks.network_reachable) problems.push("network not reachable"); - if (!checks.browser_installed) problems.push("browser layer not installed"); - } - } - if (problems.length > 0) { - return this.#fail(dotId, "READY", new NotReadyError(dotId, problems.join("; "))); - } - try { - agentState = await guest.state(); - } catch (error) { - return this.#fail(dotId, "READY (agent state)", error); - } - // A key or a config stored while this procedure pushed was refused by - // syncGuest (the Dot was not READY yet): push again, then decide. - // The comparison and the add below run without an await between them. - if (this.#generationOf(dotId) === generation) break; - this.#log.info("key or config changed during READY, pushing again", { dotId }); - } - this.#ready.add(dotId); - await this.#db.computers.touch(dotId, this.#clock.now()); - // The status comes from the state snapshot before the pump starts, so a - // pumped agent.state, which is newer than the snapshot, always wins. - await this.#setDotStatus(dotId, dotStatusForAgent(agentState.state)); - this.#startPump(dotId); - this.#log.info("dot ready", { dotId, agent: agentState.state }); - this.#onReady(dotId); - this.#onWorkPossible(); - } - - /** - * Take the Dot out of READY before anything that ends its computer's run: - * from here on every delivery and every push goes through the per-Dot - * lock, which the caller holds. A push already on its way is waited for. - * Returns whether the Dot was READY. - */ - async #leaveReady(dotId: string): Promise { - const wasReady = this.#ready.delete(dotId); - await this.#pushes.run(dotId, async () => {}); - return wasReady; - } - - /** - * Whether an idle sleep may still go ahead, read again under the per-Dot - * lock: the Dot is READY with an IDLE agent and has no work. Work that - * arrived after the idle check (a claimed task, a message, an approval) - * is pending in the database by now, also when its send is in flight. - */ - async #stillIdle(dotId: string): Promise { - const [dot, computer] = await Promise.all([this.#db.dots.get(dotId), this.#db.computers.get(dotId)]); - if (dot?.status !== "READY" || computer?.state !== "RUNNING") return false; - return !(await this.keepsAwake(dotId)); - } - - /** - * Whether the Dot has something that makes an idle sleep pointless (section 9.5): work (`tasks.hasWork`), or an - * automation due within the wake lead time, past ones included (the guest makes a missed run when it starts, and a - * computer put to sleep now would be started again at once). - */ - async keepsAwake(dotId: string): Promise { - const now = this.#clock.now(); - if (await this.#db.tasks.hasWork(dotId, now)) return true; - const dueAt = (await this.#db.computers.get(dotId))?.next_automation_at; - return dueAt != null && Date.parse(dueAt) <= now.getTime() + this.#opts.automationWakeLeadMs; - } - - /** - * The Dots whose computer is stopped and has an automation due within the wake lead time: the ones to start so - * their guest is ready when the run is due (or, for a run already missed, makes it as it starts). - */ - stoppedDotsWithAutomationDue(): Promise { - return this.#db.computers.stoppedWithAutomationBy(new Date(this.#clock.now().getTime() + this.#opts.automationWakeLeadMs)); - } - - /** - * Put the Dot to sleep, or stop it on the user's request (section 9.5). The reason is recorded with the computer: a - * computer the person stopped is not started for its automations until the person starts it again, also when it was - * already asleep. - */ - stop(dotId: string, reason: StopRequest): Promise { - return this.#mutex.run(dotId, () => this.#stopLocked(dotId, reason, true)); - } - - /** - * The stop, with the per-Dot lock held. An idle stop that is asked for now checks again that the Dot is idle - * (`recheckIdle`); one that recovery finds half done does not: the shutdown began before the control plane went - * down, the guest may already have taken prepare-sleep, and calling it off would leave a computer that runs without - * being READY. It is finished, and the pass wakes the computer if the work that came meanwhile needs it. - */ - async #stopLocked(dotId: string, reason: StopRequest, recheckIdle: boolean): Promise { - const computer = await this.#db.computers.get(dotId); - if (!computer) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} has no computer`); - if (computer.state === "STOPPED") { - // The person's stop of a computer that is asleep: it is not started for its automations from now on, which every - // view of the computer (its automations note) learns from the event, as it learns of any other stop. - if (reason === "user" && computer.stop_reason !== "user") { - await this.#commit(async (tx, log) => { - await log(dotId, "computer.stopped", { reason, forced: false }); - await tx.computers.setState(dotId, "STOPPED", undefined, "user"); - }); - } - return; - } - if (computer.state === "DELETING" || computer.state === "PROVISIONING") { - throw new ControlPlaneError(409, "invalid_state", `Dot ${dotId} cannot be stopped while ${computer.state}`); - } - const wasReady = await this.#leaveReady(dotId); - if (reason === "idle" && recheckIdle && !(await this.#stillIdle(dotId))) { - if (wasReady) this.#ready.add(dotId); - this.#log.info("idle sleep called off: work arrived meanwhile", { dotId }); - return; - } - this.#log.info("stopping computer", { dotId, reason }); - await this.#setVmState(dotId, "STOPPING", undefined, reason); - if (wasReady) { - try { - const guest = await this.guest(dotId); - await guest.prepareSleep(this.#opts.prepareSleepTimeoutMs); - } catch (error) { - // The shutdown still happens: the guest flushes its own state on SIGTERM too. - this.#log.warn("prepare-sleep failed, shutting down anyway", { dotId, error: errorMessage(error) }); - } - } - await this.#stopPump(dotId); - let result; - try { - result = await this.#driver.stop(dotId, await this.#db.computers.token(dotId)); - } catch (error) { - return this.#fail(dotId, "stop", error); - } - await this.#recordStopped(dotId, reason, result.forced); - } - - /** - * A reboot is a clean stop and a start of the same VM (the agent flushes - * its state first, as before a sleep), so a new runtime ISO and new - * resources apply. The port changes; the READY procedure runs against the - * new one. - */ - reboot(dotId: string): Promise { - return this.#mutex.run(dotId, async () => { - const computer = await this.#db.computers.get(dotId); - if (!computer) throw new ControlPlaneError(404, "not_found", `Dot ${dotId} has no computer`); - if (!computerIsUp(computer.state)) { - throw new ControlPlaneError(409, COMPUTER_STOPPED, `Dot ${dotId} cannot be rebooted while ${computer.state}`); - } - const spec = await this.#spec(dotId); - if (!spec.goldenImage) { - return this.#fail(dotId, "reboot", new Error("the computer has no golden image recorded; it was never created")); - } - if (await this.#leaveReady(dotId)) { - try { - await (await this.guest(dotId)).prepareSleep(this.#opts.prepareSleepTimeoutMs); - } catch (error) { - this.#log.warn("prepare-sleep before reboot failed, rebooting anyway", { dotId, error: errorMessage(error) }); - } - } - await this.#stopPump(dotId); - await this.#setVmState(dotId, "STARTING"); - let started; - try { - started = await this.#driver.reboot({ ...spec, goldenImage: spec.goldenImage }); - } catch (error) { - await this.#db.computers.setProcess(dotId, null).catch(() => {}); - return this.#fail(dotId, "reboot", error); - } - await this.#recordStarted(dotId, started, spec.goldenImage, { reboot: true }); - await this.#readyProcedure(dotId); - }); - } - - /** Destroy the VM and its disk, then remove the Dot's rows (the event log keeps its history). */ - remove(dotId: string): Promise { - return this.#mutex.run(dotId, async () => { - const dot = await this.#db.dots.get(dotId); - if (!dot) return; - await this.#setVmState(dotId, "DELETING"); - await this.#leaveReady(dotId); - await this.#stopPump(dotId); - try { - await this.#driver.destroy(dotId); - } catch (error) { - return this.#fail(dotId, "delete", error); - } - await this.#commit(async (tx, log) => { - await log(dotId, "dot.deleted", { name: dot.name }); - await tx.dots.delete(dotId); - }); - this.#log.info("dot deleted", { dotId, name: dot.name }); - }); - } - - /** - * The key or the config the guest must hold changed (a PATCH, a new key, - * an agent that restarted and lost its key): push both to a READY guest - * now. A Dot that is not READY gets them from its READY procedure, which - * sees the change through the generation and pushes again if it was - * already past its own push. True when this call pushed. A push that fails - * may mean the guest is gone, so the Dot is suspect (`markSuspect`): its next - * delivery checks READY again, which pushes both again. - */ - async syncGuest(dotId: string): Promise { - this.#generation.set(dotId, this.#generationOf(dotId) + 1); - if (!this.#ready.has(dotId)) return false; - return this.#pushes.run(dotId, async () => { - if (!this.#ready.has(dotId)) return false; - try { - await this.#push(dotId, await this.guest(dotId)); - } catch (error) { - this.markSuspect(dotId); - throw error; - } - return true; - }); - } - - readyDots(): string[] { - return [...this.#ready]; - } - - /** A failed call means the guest may be gone: the next delivery re-checks READY instead of trusting it. */ - markSuspect(dotId: string): void { - this.#ready.delete(dotId); - } - - /** Whether work this class started in the background is still running. */ - get busy(): boolean { - return this.#background.busy; - } - - /** Wait for the work this class started in the background (tests and shutdown). */ - async settle(): Promise { - await this.#background.settle(); - } - - #startPump(dotId: string): void { - if (this.#pumps.has(dotId) || this.#closed) return; - const controller = new AbortController(); - this.#pumps.set(dotId, controller); - const done = this.#pump(dotId, controller.signal).finally(() => { - if (this.#pumps.get(dotId) === controller) this.#pumps.delete(dotId); - if (this.#pumpDone.get(dotId) === done) this.#pumpDone.delete(dotId); - }); - this.#pumpDone.set(dotId, done); - } - - async #stopPump(dotId: string): Promise { - this.#pumps.get(dotId)?.abort(); - await this.#pumpDone.get(dotId); - } - - /** - * Consume the guest's outbound stream from the stored cursor. Every event - * is stored, applied and the cursor advanced in ONE transaction, so a crash - * between two events loses nothing and applies nothing twice. On a failure - * the loop starts over from the cursor in the database, unless the VM's - * QEMU is gone: then the pump ends and the computer is recorded as stopped. - */ - async #pump(dotId: string, signal: AbortSignal): Promise { - let delay = this.#opts.pumpRetryMs; - while (!signal.aborted) { - try { - const computer = await this.#db.computers.get(dotId); - if (!computer) return; - const guest = await this.guest(dotId); - this.#log.debug("event pump connecting", { dotId, after: computer.event_cursor }); - for await (const event of guest.events({ after: computer.event_cursor, signal, onRefused: (info) => this.#refused(dotId, info) })) { - if (signal.aborted) return; - await this.handleGuestEvent(dotId, event); - delay = this.#opts.pumpRetryMs; - } - if (signal.aborted) return; - this.#log.warn("guest event stream ended", { dotId }); - } catch (error) { - if (signal.aborted) return; - this.#log.warn("event pump failed, retrying", { dotId, error: errorMessage(error), retryMs: delay }); - } - if (await this.#qemuGone(dotId)) { - this.#background.run("recording a VM that stopped by itself", dotId, () => this.#exited(dotId)); - return; - } - await abortableSleep(delay, signal); - delay = Math.min(delay * 2, this.#opts.pumpMaxRetryMs); - } - } - - async #qemuGone(dotId: string): Promise { - try { - return (await this.#driver.state(dotId)).state === "STOPPED"; - } catch { - return false; - } - } - - /** - * The QEMU of a READY Dot exited without a stop from the control plane: the - * guest powered itself off, or QEMU crashed or was killed. The computer is - * recorded as stopped; when the Dot still has work (`keepsAwake`: a task, or - * an automation due within the wake lead time), it is started again so its - * guest picks that work up (section 9.5). - */ - async #exited(dotId: string): Promise { - const recorded = await this.#mutex.run(dotId, async () => { - const computer = await this.#db.computers.get(dotId); - // A stop, reboot or start under the lock already dealt with it. - if (computer?.state !== "RUNNING" || !(await this.#qemuGone(dotId))) return false; - this.#ready.delete(dotId); - await this.#stopPump(dotId); - this.#log.warn("the VM stopped without being asked to", { dotId }); - await this.#recordStopped(dotId, "exited", false); - return true; - }); - if (recorded && (await this.keepsAwake(dotId))) { - this.#log.info("the Dot still has work, starting its computer again", { dotId }); - this.#background.run("restart after an unexpected stop", dotId, () => this.ensureReady(dotId)); - } - } - - /** - * The guest sent a message the host's schema refused. It is not stored as the guest's event (it is not one), but it is - * not lost with a log line either: a `guest.event.refused` host event says that it happened and what was wrong, and - * the cursor moves past it in the same transaction, so a reconnect does not read it again. An engine and a host that - * disagree on an event would otherwise leave the Dot with a state nobody can see (an approval that is never shown). - */ - async #refused(dotId: string, info: RefusedEvent): Promise { - const now = this.#clock.now(); - const stored = await this.#db.transaction(async (tx) => { - const logged = await this.#events.appendHostIn(tx, dotId, "guest.event.refused", info); - if (info.seq !== null) await tx.computers.advanceCursor(dotId, info.seq, now); - return logged; - }); - this.#events.publish(stored); - } - - /** Store and apply one guest event; exported for recovery tools and tests. */ - async handleGuestEvent(dotId: string, event: OutboundEvent): Promise { - const now = this.#clock.now(); - const { stored, applied, logged } = await this.#db.transaction(async (tx) => { - // The event first: its insert takes the event-order lock (events.ts). - const stored = await this.#events.appendGuest(tx, dotId, event); - await tx.computers.advanceCursor(dotId, event.seq, now); - const applied: AppliedGuestEvent = stored ? await applyGuestEvent(tx, dotId, event) : { taskSettled: false }; - const logged: StoredEvent[] = []; - for (const host of applied.hostEvents ?? []) logged.push(await this.#events.appendHostIn(tx, dotId, host.type, host.data)); - return { stored, applied, logged }; - }); - if (stored) this.#events.publish(stored); - for (const event of logged) this.#events.publish(event); - if (applied.taskSettled) this.#onWorkPossible(); - if (applied.reconfigured) { - // The Dot added an MCP server to its config: the guest gets the config (and the secrets it names) now. - this.#background.run("pushing the config with the MCP server the Dot added", dotId, () => this.syncGuest(dotId)); - } - if (stored && event.type === "agent.started") { - // The agent process restarted inside a running VM: it lost the key it keeps in memory. - this.#background.run("pushing the key again after an agent restart", dotId, () => this.syncGuest(dotId)); - } - return stored; - } - - /** - * After a control plane restart: bring the database in line with the QEMU - * processes that are actually running (pid files and process liveness, - * never the rows), - * finish interrupted operations, and run the READY procedure for every - * computer that is still running. Returns once each Dot's recovery has - * started; the slow parts continue in the background. - */ - async recover(): Promise[]> { - const background: Promise[] = []; - const track = (dotId: string, what: string, work: Promise) => - background.push(work.catch((error) => this.#log.error(`recovery: ${what} failed`, { dotId, error: errorMessage(error) }))); - - for (const computer of await this.#db.computers.list()) { - const dotId = computer.dot_id; - if (computer.state === "PROVISIONING") { - this.#log.info("recovery: resuming provisioning", { dotId }); - track(dotId, "provisioning", this.provision(dotId)); - continue; - } - if (computer.state === "DELETING") { - this.#log.info("recovery: resuming deletion", { dotId }); - track(dotId, "deletion", this.remove(dotId)); - continue; - } - let vm; - try { - vm = await this.#driver.state(dotId); - } catch (error) { - this.#log.error("recovery: cannot read the VM state", { dotId, error: errorMessage(error) }); - continue; - } - if (!vm.exists) { - await this.#db.computers.setProcess(dotId, null); - await this.#recordError(dotId, "the VM disk is missing"); - continue; - } - if (vm.state === "RUNNING") { - if (computer.state === "STOPPING") { - this.#log.info("recovery: finishing an interrupted stop", { dotId }); - // The reason the stop was asked for was recorded with STOPPING; setting RUNNING clears it. - await this.#db.computers.setState(dotId, "RUNNING"); - const reason = computer.stop_reason === "idle" ? "idle" : "user"; - track(dotId, "stop", this.#mutex.run(dotId, () => this.#stopLocked(dotId, reason, false))); - } else if (vm.guestPort === null) { - await this.#recordError(dotId, "QEMU runs but has no forward to the guest port, so the guest cannot be reached"); - } else { - // The port comes from the pid file, so a row that missed it (the - // control plane stopped between the spawn and the update) is - // corrected here; the READY procedure then checks the guest. - const running = { ...vm, guestPort: vm.guestPort }; - this.#log.info("recovery: reattaching to a running computer", { dotId, was: computer.state, pid: vm.pid }); - track(dotId, "reattach", this.#mutex.run(dotId, () => this.#adoptRunning(dotId, running))); - } - } else if (vm.state === "STOPPED") { - if (computer.state !== "STOPPED") { - this.#log.info("recovery: computer is off", { dotId, was: computer.state }); - // A stop that was under way keeps its reason; a VM that went off with the control plane down exited by itself. - // Either way the stop is told now: the control plane went down before it could. - await this.#recordStopped(dotId, computer.stop_reason ?? "exited", false, true); - } else if (computer.guest_port !== null || computer.pid !== null) { - await this.#db.computers.setProcess(dotId, null); - } - } else { - await this.#recordError(dotId, `the VM is ${vm.state}${vm.detail ? `: ${vm.detail}` : ""}`); - } - } - return background; - } - - /** Stop every pump and release the driver's host resources. VMs keep running. */ - async close(): Promise { - this.#closed = true; - this.#background.close(); - for (const controller of this.#pumps.values()) controller.abort(); - await Promise.all(this.#pumpDone.values()); - await this.settle(); - await this.#driver.close(); - } -} diff --git a/apps/scheduler/src/scheduler.ts b/apps/scheduler/src/scheduler.ts deleted file mode 100644 index 5fc78b5b..00000000 --- a/apps/scheduler/src/scheduler.ts +++ /dev/null @@ -1,922 +0,0 @@ -/** - * The control plane's operations, one method per thing the API can ask for. - * The API is a thin HTTP layer over this class; everything that touches the - * database, the VM layer or a guest happens here. - */ -import { randomBytes } from "node:crypto"; -import { DotChangedError, DotNameTakenError, GLOBAL_SCOPE, mcpSecretName, OPENROUTER_KEY_NAME, VM_PROXY_NAME, type Database } from "@invisible-dots/database"; -import { EventLog, USER_MESSAGE_EVENT } from "@invisible-dots/events"; -import type { - AcceptedAnswer, - ApprovalRecord, - ComputerAnswer, - ConversationMessage, - CreateTaskRequest, - DotRecord, - DotSummary, - MessageAnswer, - TaskRecord, - UsageAnswer, -} from "@invisible-dots/shared"; -import { - APPROVAL_NOTE_MAX, - checkHomePath, - checkMcpSecret, - checkOpenRouterKey, - COMPUTER_STOPPED, - ControlPlaneError, - computerIsUp, - computerResources, - CONVERSATION_LIST_LIMIT, - DotConfigError, - errorMessage, - isIdentityAnswer, - isStoredEventType, - MAX_HOST_FILE_BYTES, - newId, - notFound, - parseDotConfig, - parseMessageOrigin, - mcpServerNames, - parseSize, - permissionNames, - silentLogger, - systemClock, - TASK_CANCELLED_SYSTEM_EVENT, - TERMINAL_TASK_STATES, - vmName, - type ApprovalStatus, - type BrowserIdentity, - type Clock, - type CreateBrowserIdentityRequest, - type DotConfig, - type FilesListAnswer, - type InboundEvent, - type ListOrder, - type Logger, - type McpSecretsAnswer, - type MessageOrigin, - type StoredEvent, - type SystemAnswer, - type Skill, - type TaskState, - type ToolListAnswer, -} from "@invisible-dots/shared"; -import { Dispatcher } from "./dispatcher.js"; -import { guestErrorCode, guestErrorStatus, type ComputerDriver, type GuestApi } from "./driver.js"; -import { InboundDelivery, type InboundDeliveryOptions } from "./inbound.js"; -import { Lifecycle, MISSING_KEY_MESSAGE, type LifecycleOptions } from "./lifecycle.js"; -import { BackgroundWork } from "./support.js"; - -export interface SchedulerOptions { - db: Database; - driver: ComputerDriver; - events?: EventLog; - clock?: Clock; - logger?: Logger; - /** How often PENDING tasks are looked for besides the immediate pass on every change. Default 5 s. */ - dispatchIntervalMs?: number; - /** How often idle Dots are looked for. Default 30 s. */ - idleCheckIntervalMs?: number; - lifecycle?: Partial; - /** How inbound events (tasks, messages, approvals) are retried, and when a task's delivery gives up. */ - dispatcher?: Partial; -} - -const TOKEN_BYTES = 32; - -/** A path the files routes may read, normalized; the 400 of the rule of `checkHomePath` otherwise. */ -function homePath(raw: unknown): string { - const checked = checkHomePath(raw); - if (!checked.ok) throw new ControlPlaneError(400, "invalid_path", checked.problem); - return checked.path; -} - -export class Scheduler { - readonly db: Database; - readonly events: EventLog; - readonly lifecycle: Lifecycle; - readonly dispatcher: Dispatcher; - /** Sends what is stored for the guests in `inbound_events`, waking Dots that sleep. */ - readonly inbound: InboundDelivery; - readonly #clock: Clock; - readonly #log: Logger; - readonly #dispatchIntervalMs: number; - readonly #idleCheckIntervalMs: number; - readonly #background: BackgroundWork; - readonly #provisioning = new Map>(); - readonly #timers: NodeJS.Timeout[] = []; - #started = false; - - constructor(options: SchedulerOptions) { - this.db = options.db; - this.#clock = options.clock ?? systemClock; - this.#log = options.logger ?? silentLogger; - this.#background = new BackgroundWork(this.#log); - this.events = - options.events ?? new EventLog(options.db.events, (line) => this.#log.warn(line)); - this.#dispatchIntervalMs = options.dispatchIntervalMs ?? 5_000; - this.#idleCheckIntervalMs = options.idleCheckIntervalMs ?? 30_000; - this.lifecycle = new Lifecycle({ - db: options.db, - events: this.events, - driver: options.driver, - clock: this.#clock, - logger: this.#log, - options: options.lifecycle, - onWorkPossible: () => void this.dispatcher.dispatch(), - onReady: (dotId) => void this.inbound.kick(dotId), - }); - this.inbound = new InboundDelivery({ - db: options.db, - events: this.events, - lifecycle: this.lifecycle, - clock: this.#clock, - logger: this.#log, - provisioned: async (dotId) => { - await this.#provisioning.get(dotId)?.catch(() => {}); - }, - onTaskSettled: () => void this.dispatcher.dispatch(), - options: options.dispatcher, - }); - this.dispatcher = new Dispatcher(options.db, this.#clock, this.#log, (dotId) => void this.inbound.kick(dotId)); - } - - /** - * Recover from the previous run, then start the timers. Nothing is - * requeued: a task claimed before the restart still has its task.created - * in the outbox, and the guest ignores it if an earlier send reached it. - */ - async start(): Promise { - if (this.#started) return; - this.#started = true; - for (const work of await this.lifecycle.recover()) this.#background.track(work); - this.#background.track(this.pass()); - const every = (ms: number, fn: () => Promise) => { - const timer = setInterval(() => void fn().catch((e) => this.#log.error("timer failed", { error: errorMessage(e) })), ms); - timer.unref(); - this.#timers.push(timer); - }; - every(this.#dispatchIntervalMs, () => this.pass()); - every(this.#idleCheckIntervalMs, () => this.idleCheck()); - } - - /** - * One round of looking for work (section 9.5): claim due tasks, send the - * inbound rows whose retry time came, wake stopped Dots whose new work - * waits behind a task their guest has not finished, and wake the ones whose - * next automation is due within the wake lead time. - */ - async pass(): Promise { - await this.dispatcher.dispatch(); - await this.inbound.kickDue(); - for (const dotId of await this.db.tasks.stoppedDotsWithBlockedWork()) { - if (this.lifecycle.isBusy(dotId)) continue; - this.#log.info("waking a stopped Dot: new work waits behind its unfinished task", { dotId }); - this.#background.run("wake for blocked work", dotId, () => this.lifecycle.ensureReady(dotId)); - } - for (const dotId of await this.lifecycle.stoppedDotsWithAutomationDue()) { - if (this.lifecycle.isBusy(dotId)) continue; - this.#log.info("waking a stopped Dot: an automation is due", { dotId }); - this.#background.run("wake for an automation", dotId, () => this.lifecycle.wakeForAutomation(dotId)); - } - } - - /** Stop the timers and the event pumps and wait for in-flight work. VMs keep running. */ - async close(): Promise { - for (const timer of this.#timers.splice(0)) clearInterval(timer); - this.inbound.close(); - await this.settle().catch(() => {}); - await this.lifecycle.close(); - } - - /** Wait until every background operation started so far has finished (used by tests and shutdown). */ - async settle(): Promise { - for (;;) { - await this.dispatcher.settle(); - await this.inbound.settle(); - await this.lifecycle.settle(); - if (!this.#background.busy) { - // Each of the three may have started work in another while it settled. - if (!this.dispatcher.busy && !this.inbound.busy && !this.lifecycle.busy) return; - continue; - } - await this.#background.settle(); - } - } - - // Dots - - async requireDot(idOrName: string): Promise { - const dot = await this.db.dots.resolve(idOrName); - if (!dot) throw notFound("Dot", idOrName); - return dot; - } - - listDots(): Promise { - return this.db.dots.list(); - } - - #parseConfig(input: unknown): DotConfig { - if (input === undefined || input === null) { - throw new ControlPlaneError(400, "invalid_request", "the body needs a config: YAML text or an object"); - } - try { - return parseDotConfig(input); - } catch (error) { - if (error instanceof DotConfigError) throw new ControlPlaneError(400, "invalid_config", error.message, error.issues); - throw error; - } - } - - /** - * Section 9.4: insert the Dot as CREATING with its computer row and a new - * token in one transaction, then provision it in the background (overlay, - * seed, port, QEMU, READY). - */ - async createDot(configInput: unknown): Promise { - const config = this.#parseConfig(configInput); - const id = newId("dot"); - const token = randomBytes(TOKEN_BYTES).toString("base64url"); - let dot: DotRecord; - try { - const created = await this.db.transaction(async (tx) => { - // The events first: their insert takes the event-order lock (database events.ts). They commit with the rows. - const logged = [ - await this.events.appendHostIn(tx, id, "dot.created", { name: config.name }), - await this.events.appendHostIn(tx, id, "computer.state", { state: "PROVISIONING" }), - ]; - const record = await tx.dots.insert({ id, config, status: "CREATING" }); - await tx.computers.insert({ dotId: id, vmName: vmName(id), state: "PROVISIONING", token }); - return { record, logged }; - }); - dot = created.record; - for (const event of created.logged) this.events.publish(event); - } catch (error) { - if (error instanceof DotNameTakenError) throw new ControlPlaneError(409, "name_taken", error.message); - throw error; - } - this.#log.info("dot created", { dotId: id, name: config.name }); - const provisioning = this.lifecycle.provision(id); - this.#provisioning.set(id, provisioning); - this.#background.run("provisioning", id, () => - provisioning.finally(() => { - this.#provisioning.delete(id); - }), - ); - return dot; - } - - /** - * Replace the Dot's config. `expectedConfigVersion` (the `config_version` of the Dot as the caller read it) makes the - * save conditional: when the config changed since (the person answered "Always allow" in another view, another - * save), it is a 409 `dot_changed` and nothing is written, so a form opened before cannot silently undo what - * happened after. A change of the Dot's status (a task turn, an approval waiting) is not a change of the config. - */ - async updateDot(idOrName: string, configInput: unknown, expectedConfigVersion?: unknown): Promise { - if (expectedConfigVersion !== undefined && (typeof expectedConfigVersion !== "number" || !Number.isInteger(expectedConfigVersion) || expectedConfigVersion < 1)) { - throw new ControlPlaneError(400, "invalid_request", "expected_config_version must be the config_version of the Dot, a positive integer"); - } - const current = await this.requireDot(idOrName); - const config = this.#parseConfig(configInput); - if (parseSize(config.computer.disk) < parseSize(current.config.computer.disk)) { - throw new ControlPlaneError( - 409, - "disk_shrink", - `computer.disk cannot shrink from ${current.config.computer.disk} to ${config.computer.disk}: the filesystem on it would be destroyed`, - ); - } - let saved: { updated: DotRecord; logged: StoredEvent }; - try { - saved = await this.db.transaction(async (tx) => { - // The event first (database events.ts); it commits with the config it tells of, or neither does. - const logged = await this.events.appendHostIn(tx, current.id, "dot.updated", { name: config.name }); - const updated = await tx.dots.updateConfig(current.id, config, expectedConfigVersion); - if (!updated) throw notFound("Dot", idOrName); - // A secret of a server the config no longer declares, or no longer names, goes with it. - await tx.secrets.deleteUndeclaredMcpSecrets(current.id, config.mcp_servers); - return { updated, logged }; - }); - } catch (error) { - if (error instanceof DotChangedError) { - throw new ControlPlaneError(409, "dot_changed", `Dot ${current.name} changed after you read it: read it again and apply the change to what it is now`); - } - if (error instanceof DotNameTakenError) throw new ControlPlaneError(409, "name_taken", error.message); - throw error; - } - this.events.publish(saved.logged); - await this.#pushToGuest(saved.updated); - return saved.updated; - } - - /** - * The Dot's saved config changed (a PATCH, an "always allow"; `dot.updated` was logged with the change), or a secret of - * its MCP servers did: push the secrets and the config to the guest. A failed push does not fail the change: the Dot - * is suspect then (`syncGuest`), and both are pushed again on its next READY. - */ - async #pushToGuest(dot: DotRecord): Promise { - try { - await this.lifecycle.syncGuest(dot.id); - } catch (error) { - this.#log.warn("saved, but the push to the guest failed; it is pushed again on the next READY", { - dotId: dot.id, - error: errorMessage(error), - }); - } - } - - async deleteDot(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - this.#background.run("deletion", dot.id, () => this.lifecycle.remove(dot.id)); - return { accepted: true }; - } - - // Messages - - /** - * Log the message and store it for the guest in one transaction, so a - * message the person saw accepted always reaches the Dot, also across a - * failed wake or a control plane restart. `origin` names the channel chat - * the message came from; it is kept in the event log (the one place a reply - * is routed back by) and never sent to the guest. Only code inside the - * control plane passes one: the HTTP route does not take it. - */ - async sendMessage(idOrName: string, text: unknown, origin?: MessageOrigin): Promise { - if (typeof text !== "string" || text.trim() === "") { - throw new ControlPlaneError(400, "invalid_request", "text must be a non-empty string"); - } - if (origin !== undefined && parseMessageOrigin(origin) === null) { - throw new ControlPlaneError(400, "invalid_request", "origin must be a channel, a binding id, a chat id and an external id"); - } - const dot = await this.requireDot(idOrName); - const messageId = newId("msg"); - const event: InboundEvent<"user.message"> = { - id: messageId, - type: "user.message", - ts: this.#clock.now().toISOString(), - data: { text }, - }; - const stored = await this.db.transaction(async (tx) => { - // The event first: its insert takes the event-order lock (database events.ts). A channel message - // already logged is not stored again, so what a redelivery finds is exactly what the first delivery - // committed: the message and its queue row together, or neither. - const logged = await this.events.appendUserMessageIn(tx, dot.id, { message_id: messageId, text, ...(origin && { origin }) }); - if (logged) await tx.inbound.enqueue(dot.id, event); - return logged; - }); - if (!stored) return this.#answerRedelivery(dot.id, origin!); - this.events.publish(stored); - const delivery = await this.#deliver(dot.id, event.id); - return { message_id: messageId, event_id: stored.id, delivery }; - } - - /** The answer for a channel message that was already handed to the Dot: the same message, delivered if it is not yet. */ - async #answerRedelivery(dotId: string, origin: MessageOrigin): Promise { - const logged = await this.events.userMessageOfOrigin(dotId, origin.binding_id, origin.external_id); - const messageId = logged?.data.message_id; - if (!logged || typeof messageId !== "string") throw new Error(`a channel message is stored twice but cannot be found: ${origin.binding_id}`); - return { message_id: messageId, event_id: logged.id, delivery: await this.#deliver(dotId, messageId) }; - } - - /** - * The Dot's one conversation, oldest first; `order: "desc"` the newest first, and `before` (the event id of the - * oldest message of the previous page) pages on, older, from there. A page holds at most CONVERSATION_LIST_LIMIT. - */ - async conversation(idOrName: string, page: { limit?: number; order?: ListOrder; before?: number } = {}): Promise { - const dot = await this.requireDot(idOrName); - const events = await this.events.query({ - dotId: dot.id, - types: [USER_MESSAGE_EVENT, "message.assistant"], - limit: page.limit ?? CONVERSATION_LIST_LIMIT, - order: page.order, - before: page.before, - }); - return events.map((e) => { - // StoredEvent.type lists the contract's event types; the user side is logged as USER_MESSAGE_EVENT. - const user = (e.type as string) === USER_MESSAGE_EVENT; - const origin = user ? parseMessageOrigin(e.data.origin) : null; - return { - event_id: e.id, - role: user ? "user" : "assistant", - text: String(e.data.text ?? ""), - in_reply_to: typeof e.data.in_reply_to === "string" ? e.data.in_reply_to : null, - ...(origin && { origin }), - created_at: e.created_at, - }; - }); - } - - /** - * Send what is stored for the Dot. A READY Dot gets it before this - * returns ("delivered"); otherwise it is sent once the Dot is woken, in the - * background ("queued"), and stays stored until then. - */ - async #deliver(dotId: string, eventId: string): Promise<"delivered" | "queued"> { - if (!this.lifecycle.isReady(dotId)) { - void this.inbound.kick(dotId); - return "queued"; - } - await this.inbound.kick(dotId); - return (await this.db.inbound.get(eventId))?.delivered_at ? "delivered" : "queued"; - } - - // Tasks - - async createTask(idOrName: string, body: Partial): Promise { - const dot = await this.requireDot(idOrName); - if (typeof body.description !== "string" || body.description.trim() === "") { - throw new ControlPlaneError(400, "invalid_request", "description must be a non-empty string"); - } - if (body.priority !== undefined && (!Number.isInteger(body.priority) || Math.abs(body.priority) > 1_000_000)) { - throw new ControlPlaneError(400, "invalid_request", "priority must be an integer from -1000000 to 1000000"); - } - let scheduledAt: Date | null = null; - if (body.scheduled_at !== undefined && body.scheduled_at !== null) { - scheduledAt = new Date(body.scheduled_at); - if (typeof body.scheduled_at !== "string" || Number.isNaN(scheduledAt.getTime())) { - throw new ControlPlaneError(400, "invalid_request", "scheduled_at must be an ISO 8601 timestamp"); - } - } - const id = newId("task"); - const { description } = body; - const priority = body.priority ?? 0; - const { task, logged } = await this.db.transaction(async (tx) => { - // The event first (database events.ts); it commits with the task it tells of, or neither does. - const logged = await this.events.appendHostIn(tx, dot.id, "task.created", { task_id: id, description, priority }); - const task = await tx.tasks.insert({ id, dotId: dot.id, description, priority, scheduledAt }); - return { task, logged }; - }); - this.events.publish(logged); - void this.dispatcher.dispatch(); - return task; - } - - /** The Dot's tasks, the newest created first, at most TASK_LIST_LIMIT a page; `before` (the id of the last task of the previous page) goes on, older. */ - async listTasks(idOrName: string, page: { limit?: number; before?: string } = {}): Promise { - const dot = await this.requireDot(idOrName); - return this.db.tasks.listByDot(dot.id, page); - } - - /** The tasks of every Dot that ended in a terminal `status` after `after`, the latest end first: one read for all of them. */ - async listEndedTasks(status: unknown, after: unknown): Promise { - if (!TERMINAL_TASK_STATES.includes(status as TaskState)) { - throw new ControlPlaneError(400, "invalid_request", `status must be one of ${TERMINAL_TASK_STATES.join(", ")}`); - } - const since = typeof after === "string" ? new Date(after) : new Date(Number.NaN); - if (Number.isNaN(since.getTime())) throw new ControlPlaneError(400, "invalid_request", "finished_after must be an ISO 8601 time"); - return this.db.tasks.listEnded(status as TaskState, since); - } - - async getTask(id: string): Promise { - const task = await this.db.tasks.get(id); - if (!task) throw notFound("task", id); - return task; - } - - /** - * Cancel a task. A PENDING one simply never runs. Otherwise, in the same - * transaction: when no send of its task.created ever began, that event is - * dropped and the guest never hears of the task; when one began, the - * guest may hold the task, so `system.event { name: "task.cancelled" }` - * is stored behind it and reaches the guest even if it sleeps now (the - * contract has no dedicated inbound cancel). The previous state comes from - * the update itself, never from an earlier read. - */ - async cancelTask(id: string): Promise { - const task = await this.getTask(id); - if (TERMINAL_TASK_STATES.includes(task.status)) { - throw new ControlPlaneError(409, "task_finished", `task ${id} is already ${task.status}`); - } - const { logged, cancelled, tellGuest } = await this.db.transaction(async (tx) => { - // The event first: its insert takes the event-order lock (database events.ts). - const logged = await this.events.appendHostIn(tx, task.dot_id, "task.cancelled", { task_id: id }); - const moved = await tx.tasks.transition(id, "CANCELLED", { error: "cancelled by the user" }); - if (!moved) throw new ControlPlaneError(409, "task_finished", `task ${id} finished meanwhile`); - let tellGuest = false; - if (moved.previous !== "PENDING" && !(await tx.inbound.dropUnsent(id, "the task was cancelled before it was delivered"))) { - const event: InboundEvent<"system.event"> = { - id: newId("evt"), - type: "system.event", - ts: this.#clock.now().toISOString(), - data: { name: TASK_CANCELLED_SYSTEM_EVENT, data: { task_id: id } }, - }; - await tx.inbound.enqueue(task.dot_id, event, { taskId: id }); - tellGuest = true; - } - return { logged, cancelled: moved.task, tellGuest }; - }); - this.events.publish(logged); - if (tellGuest) void this.inbound.kick(task.dot_id); - void this.dispatcher.dispatch(); - return cancelled; - } - - // Computer - - async computer(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - const computer = await this.db.computers.get(dot.id); - if (!computer) throw notFound("computer of Dot", idOrName); - const ready = this.lifecycle.isReady(dot.id); - let system: SystemAnswer | null = null; - if (ready) { - // Live figures are a convenience of this answer: a guest that is slow or - // briefly unreachable must not turn the whole route into an error. - try { - system = await (await this.lifecycle.guest(dot.id)).system(); - } catch (error) { - this.#log.debug("live system figures unavailable", { dotId: dot.id, error: errorMessage(error) }); - } - } - return { ...computer, ready, system }; - } - - async startComputer(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - if (dot.computer_state === "PROVISIONING" || dot.computer_state === "DELETING") { - throw new ControlPlaneError(409, "invalid_state", `the computer is ${dot.computer_state}`); - } - this.#background.run("start", dot.id, () => this.lifecycle.ensureReady(dot.id)); - return { accepted: true }; - } - - async stopComputer(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - if (dot.computer_state === "PROVISIONING" || dot.computer_state === "DELETING") { - throw new ControlPlaneError(409, "invalid_state", `the computer is ${dot.computer_state}`); - } - this.#background.run("stop", dot.id, () => this.lifecycle.stop(dot.id, "user")); - return { accepted: true }; - } - - async rebootComputer(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - if (!computerIsUp(dot.computer_state)) { - throw new ControlPlaneError(409, COMPUTER_STOPPED, `the computer is ${dot.computer_state ?? "missing"}`); - } - this.#background.run("reboot", dot.id, () => this.lifecycle.reboot(dot.id)); - return { accepted: true }; - } - - /** A guest for a Dot whose computer is running; 409 computer_stopped otherwise (section 9.6). */ - async #runningGuest(idOrName: string): Promise<{ dotId: string; guest: GuestApi }> { - const dot = await this.requireDot(idOrName); - if (!computerIsUp(dot.computer_state)) { - throw new ControlPlaneError( - 409, - COMPUTER_STOPPED, - `the computer of Dot ${dot.name} is ${dot.computer_state ?? "missing"}; start it first`, - ); - } - return { dotId: dot.id, guest: await this.lifecycle.guest(dot.id) }; - } - - /** - * Run a guest call and turn its failure into an API error: the guest's own 4xx passes through, and so do the - * engine's coded identity answers that are not 4xx (`IDENTITY_ERROR_STATUS` of packages/shared: `busy` and the browser's own failures): a coded answer is the engine - * speaking, not a silence, so the UI can tell a busy or crashed browser from an unreachable computer. - */ - async #guestCall(dotId: string, what: string, call: () => Promise): Promise { - try { - return await call(); - } catch (error) { - const status = guestErrorStatus(error); - const code = guestErrorCode(error); - if ((status >= 400 && status < 500 && status !== 401) || isIdentityAnswer(code, status)) { - throw new ControlPlaneError(status, code ?? "guest_error", errorMessage(error)); - } - this.#log.warn("guest call failed", { dotId, what, error: errorMessage(error) }); - throw new ControlPlaneError(502, "guest_unavailable", `${what}: the Dot's computer did not answer: ${errorMessage(error)}`); - } - } - - async screenshot(idOrName: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return this.#guestCall(dotId, "screenshot", () => guest.screenshot()); - } - - /** The files of a directory under /home/dot, as dot-agentd lists them; `path` defaults to home itself. */ - async listFiles(idOrName: string, path: string = "~"): Promise { - const checked = homePath(path); - const { dotId, guest } = await this.#runningGuest(idOrName); - const { entries } = await this.#guestCall(dotId, "list files", () => guest.listFiles(checked)); - return { path: checked, entries }; - } - - /** The bytes of a file under /home/dot; a file larger than MAX_HOST_FILE_BYTES is a 413. */ - async readFile(idOrName: string, path: unknown): Promise<{ path: string; content: Uint8Array }> { - const checked = homePath(path); - const { dotId, guest } = await this.#runningGuest(idOrName); - const content = await this.#guestCall(dotId, "read a file", () => guest.readFile(checked, { maxBytes: MAX_HOST_FILE_BYTES })); - return { path: checked, content }; - } - - async listIdentities(idOrName: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return (await this.#guestCall(dotId, "list browser identities", () => guest.listBrowserIdentities())).identities; - } - - async createIdentity(idOrName: string, body: Partial): Promise { - if (typeof body.name !== "string" || body.name.trim() === "") { - throw new ControlPlaneError(400, "invalid_request", "name must be a non-empty string"); - } - if (body.proxy != null && typeof body.proxy !== "string") { - throw new ControlPlaneError(400, "invalid_request", "proxy must be a string"); - } - const { dotId, guest } = await this.#runningGuest(idOrName); - const request: CreateBrowserIdentityRequest = { name: body.name, ...(body.proxy ? { proxy: body.proxy } : {}) }; - return this.#guestCall(dotId, "create a browser identity", () => guest.createBrowserIdentity(request)); - } - - async getIdentity(idOrName: string, identityId: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return this.#guestCall(dotId, "get a browser identity", () => guest.getBrowserIdentity(identityId)); - } - - async deleteIdentity(idOrName: string, identityId: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - await this.#guestCall(dotId, "delete a browser identity", () => guest.deleteBrowserIdentity(identityId)); - } - - /** The JPEG of an open identity's window: 409 `not_open` when it is closed, 503 `busy` while a call holds it. */ - async identityFrame(idOrName: string, identityId: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return this.#guestCall(dotId, "get the frame of a browser identity", () => guest.getBrowserIdentityFrame(identityId)); - } - - async closeIdentity(idOrName: string, identityId: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - await this.#guestCall(dotId, "close a browser identity", () => guest.closeBrowserIdentity(identityId)); - } - - // The tools and the skills: the Dot's engine keeps both, read through the computer - - /** - * The Dot's tools, each with the permission it exercises and whether the model is offered it now, and the MCP servers - * its config declares with where each is (connecting, connected, failed and why). - */ - async listTools(idOrName: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return this.#guestCall(dotId, "list tools", () => guest.listTools()); - } - - /** The Dot's skills, the built-in ones and its own, each with its whole file. */ - async listSkills(idOrName: string): Promise { - const { dotId, guest } = await this.#runningGuest(idOrName); - return (await this.#guestCall(dotId, "list skills", () => guest.listSkills())).skills; - } - - // Approvals - - /** The approvals of one status or several (every one when omitted); `page` is what the approvals repository's `list` takes. */ - async listApprovals( - status?: ApprovalStatus | readonly ApprovalStatus[], - page: { limit?: number; order?: ListOrder; before?: string; dot?: string } = {}, - ): Promise { - const { dot, ...rest } = page; - // Of one Dot (by id or name; the history of a deleted Dot is read by id, as the event log's is), in the database. - return this.db.approvals.list({ status, ...rest, ...(dot === undefined ? {} : { dotId: await this.historyDotId(dot) }) }); - } - - /** - * Record the decision, move the task back to RUNNING and store the - * `approval.received` for the guest, in one transaction: a decision the - * person saw accepted always reaches the guest, also when the Dot sleeps - * and its wake fails or the control plane restarts first. - * - * `always` (an approval only) is "allow this from now on": in the same - * transaction `permissions[]` becomes `allow` in - * the Dot's config, and the config is pushed to the guest before the answer - * is delivered, so what the approved call does next is not asked again: the - * Dot's deliveries are held (`InboundDelivery.hold`) from before the commit - * until the push is over, so no flush overtakes it. A push that fails does - * not fail the answer; the guest gets the config on its next READY. An - * answer that loses the race for the approval (409) changes nothing. - */ - async resolveApproval( - id: string, - decision: "approve" | "reject", - answer: { note?: unknown; always?: unknown } = {}, - ): Promise { - if (answer.note !== undefined && typeof answer.note !== "string") { - throw new ControlPlaneError(400, "invalid_request", "note must be a string"); - } - if (answer.always !== undefined && answer.always !== true) { - throw new ControlPlaneError(400, "invalid_request", "always must be true"); - } - const note = answer.note as string | undefined; - const always = answer.always as true | undefined; - if (note !== undefined && note.length > APPROVAL_NOTE_MAX) { - throw new ControlPlaneError(400, "invalid_request", `note must be at most ${APPROVAL_NOTE_MAX} characters`); - } - if (always && decision !== "approve") { - throw new ControlPlaneError(400, "invalid_request", "always applies to an approval, not to a rejection"); - } - const existing = await this.db.approvals.get(id); - if (!existing) throw notFound("approval", id); - const event: InboundEvent<"approval.received"> = { - id: newId("evt"), - type: "approval.received", - ts: this.#clock.now().toISOString(), - data: { approval_id: id, decision, ...(note !== undefined ? { note } : {}) }, - }; - // From its commit on, any flush may send the answer: the Dot's deliveries wait until the config that "always" - // changed has reached the guest, so the approved call's next use of the permission is not asked again. - const release = always ? this.inbound.hold(existing.dot_id) : undefined; - let resolved: ApprovalRecord; - try { - const stored = await this.db.transaction(async (tx) => { - // The event first: its insert takes the event-order lock (database events.ts). - const logged = await this.events.appendHostIn(tx, existing.dot_id, "approval.resolved", { - approval_id: id, - decision, - ...(existing.task_id !== null ? { task_id: existing.task_id } : {}), - ...(note !== undefined ? { note } : {}), - ...(always ? { always } : {}), - }); - // "Always allow" changes the Dot's config: that is told by the event of every config change, in the same commit. - const dot = always ? await tx.dots.get(existing.dot_id) : null; - if (always && !dot) throw notFound("Dot", existing.dot_id); - // The permission of an MCP server the config no longer declares has nothing left to allow. - if (dot && !permissionNames(dot.config).includes(existing.permission as never)) { - throw new ControlPlaneError(409, "permission_gone", `the Dot's config no longer has the permission ${existing.permission}, so it cannot be allowed always`); - } - const updated = dot ? await this.events.appendHostIn(tx, existing.dot_id, "dot.updated", { name: dot.name }) : null; - const resolved = await tx.approvals.resolve(id, decision === "approve" ? "approved" : "rejected", note ?? null); - if (!resolved) { - const current = await tx.approvals.get(id); - throw new ControlPlaneError(409, "already_resolved", `approval ${id} is already ${current?.status ?? existing.status}`); - } - const reconfigured = always ? await tx.dots.setPermission(resolved.dot_id, resolved.permission, "allow") : null; - if (always && !reconfigured) throw notFound("Dot", resolved.dot_id); - if (resolved.task_id) await tx.tasks.transition(resolved.task_id, "RUNNING", { dotId: resolved.dot_id }); - await tx.inbound.enqueue(resolved.dot_id, event); - return { logged: [logged, ...(updated ? [updated] : [])], resolved, reconfigured }; - }); - resolved = stored.resolved; - for (const logged of stored.logged) this.events.publish(logged); - if (stored.reconfigured) await this.#pushToGuest(stored.reconfigured); - } finally { - release?.(); - } - await this.#deliver(resolved.dot_id, event.id); - return resolved; - } - - // Events and secrets - - /** The id of a Dot whose history is read: a deleted Dot's history stays readable by id. */ - async historyDotId(idOrName: string): Promise { - const dot = await this.db.dots.resolve(idOrName); - const dotId = dot?.id ?? (idOrName.includes("_") ? idOrName : undefined); - if (!dotId) throw notFound("Dot", idOrName); - return dotId; - } - - /** - * The Dot's events, oldest first: those after an id, of these types (an unknown type name is a 400, so a typo - * does not look like a quiet Dot) and of this task. - */ - async listEvents( - idOrName: string, - filter: { after?: number; before?: number; limit?: number; types?: readonly string[]; tools?: readonly string[]; taskId?: string; order?: ListOrder } = {}, - ): Promise { - const unknown = filter.types?.filter((type) => !isStoredEventType(type)) ?? []; - if (unknown.length > 0) throw new ControlPlaneError(400, "invalid_request", `unknown event type: ${unknown.join(", ")}`); - if (filter.taskId === "") throw new ControlPlaneError(400, "invalid_request", "task_id must not be empty"); - const types = filter.types === undefined || filter.types.length === 0 ? undefined : filter.types; - const tools = filter.tools === undefined || filter.tools.length === 0 ? undefined : filter.tools; - return this.events.query({ dotId: await this.historyDotId(idOrName), after: filter.after, before: filter.before, limit: filter.limit, types, tools, taskId: filter.taskId, order: filter.order }); - } - - /** The model spend the Dot's guest reported since `since` (every event when omitted), from the event log. */ - async usage(idOrName: string, since?: Date): Promise { - const dotId = await this.historyDotId(idOrName); - return { dot_id: dotId, since: since?.toISOString() ?? null, spent_usd: await this.db.events.spentUsd(dotId, since) }; - } - - /** - * Set or clear a Dot's VM proxy (`socks5://[user:password@]host:port`; null or blank clears it). The VM uses it from - * its next start: the seed is written at every start. The answer never carries the value. - */ - async setVmProxy(idOrName: string, value: unknown): Promise<{ dot_id: string; proxy: boolean }> { - const dot = await this.requireDot(idOrName); - if (value === null || value === undefined || (typeof value === "string" && value.trim() === "")) { - await this.db.secrets.delete(dot.id, VM_PROXY_NAME); - return { dot_id: dot.id, proxy: false }; - } - if (typeof value !== "string" || !/^socks5:\/\/\S+$/.test(value.trim())) { - throw new ControlPlaneError(400, "invalid_request", "proxy must be a socks5:// URL"); - } - await this.db.secrets.put(dot.id, VM_PROXY_NAME, value.trim()); - return { dot_id: dot.id, proxy: true }; - } - - /** Whether a Dot has a VM proxy; never its value. */ - async vmProxy(idOrName: string): Promise<{ dot_id: string; proxy: boolean }> { - const dot = await this.requireDot(idOrName); - return { dot_id: dot.id, proxy: (await this.db.secrets.get(dot.id, VM_PROXY_NAME)) !== null }; - } - - /** Every secret the Dot's MCP servers name, and whether each is set; never a value. */ - async mcpSecrets(idOrName: string): Promise { - const dot = await this.requireDot(idOrName); - const set = await this.db.secrets.mcpSecrets(dot.id, dot.config.mcp_servers); - const secrets = mcpServerNames(dot.config).flatMap((server) => - dot.config.mcp_servers[server]!.secrets.map((name) => ({ server, name, set: set[server]?.[name] !== undefined })), - ); - return { dot_id: dot.id, secrets }; - } - - /** - * Set the value of a secret an MCP server of the Dot's config names, or clear it with null, and push the secrets to - * the guest when it runs: the server starts again with it. A secret the config does not name is refused, so none is - * stored that the config would not keep. The answer never carries a value. - */ - async setMcpSecret(idOrName: string, server: string, name: string, value: unknown): Promise { - const dot = await this.requireDot(idOrName); - const declared = dot.config.mcp_servers[server]; - if (!declared) throw new ControlPlaneError(404, "not_found", `Dot ${dot.name} declares no MCP server "${server}"`); - if (!declared.secrets.includes(name)) { - throw new ControlPlaneError(404, "not_found", `the MCP server "${server}" of Dot ${dot.name} names no secret "${name}"`); - } - if (value === null) { - await this.db.secrets.delete(dot.id, mcpSecretName(server, name)); - } else { - const checked = checkMcpSecret(value); - if (!checked.ok) throw new ControlPlaneError(400, "invalid_request", checked.problem); - await this.db.secrets.put(dot.id, mcpSecretName(server, name), checked.value); - } - await this.#pushToGuest(dot); - return this.mcpSecrets(dot.id); - } - - /** Store the OpenRouter key (global or per Dot) and push it to the READY guests it applies to. */ - async setOpenRouterKey(value: unknown, dotIdOrName?: unknown): Promise<{ pushed: number }> { - const checked = checkOpenRouterKey(value); - if (!checked.ok) throw new ControlPlaneError(400, "invalid_request", checked.problem); - let scope = GLOBAL_SCOPE; - if (dotIdOrName !== undefined && dotIdOrName !== null) { - if (typeof dotIdOrName !== "string") throw new ControlPlaneError(400, "invalid_request", "dot_id must be a string"); - scope = (await this.requireDot(dotIdOrName)).id; - } - await this.db.secrets.put(scope, OPENROUTER_KEY_NAME, checked.key); - let pushed = 0; - // Every Dot it applies to, READY or not: one whose READY is under way must notice the change too. - const targets = scope === GLOBAL_SCOPE ? (await this.db.dots.list()).map((d) => d.id) : [scope]; - for (const dotId of targets) { - try { - if (await this.lifecycle.syncGuest(dotId)) pushed++; - } catch (error) { - this.#log.warn("could not push the new OpenRouter key", { dotId, error: errorMessage(error) }); - } - } - // Dots that failed READY only for want of a key can be retried now. - for (const dot of await this.db.dots.list()) { - const missedKey = dot.error?.includes(MISSING_KEY_MESSAGE) ?? false; - if (dot.status === "ERROR" && missedKey && (scope === GLOBAL_SCOPE || scope === dot.id)) { - this.#background.run("READY after a new key", dot.id, () => this.lifecycle.ensureReady(dot.id)); - } - } - return { pushed }; - } - - // Idle sleep (section 9.5) - - /** - * Put every Dot to sleep that is READY with an IDLE agent, has no work - * (no due or active task, nothing waiting to reach its guest, no automation - * due within the wake lead time), and was not active for its `idle_timeout`. - * Returns the ids of the Dots it started stopping; the stop checks all of it - * again under the Dot's lock and is called off when work arrived meanwhile. - */ - async idleCheck(): Promise { - const now = this.#clock.now(); - const sleeping: string[] = []; - for (const dotId of this.lifecycle.readyDots()) { - if (this.lifecycle.isBusy(dotId) || this.inbound.isFlushing(dotId)) continue; - const [dot, computer] = await Promise.all([this.db.dots.get(dotId), this.db.computers.get(dotId)]); - if (!dot || !computer || computer.state !== "RUNNING" || dot.status !== "READY") continue; - const timeout = computerResources(dot.config).idleTimeoutMs; - if (timeout === null) continue; - const lastActive = new Date(computer.last_active_at ?? computer.updated_at).getTime(); - if (now.getTime() - lastActive < timeout) continue; - if (await this.lifecycle.keepsAwake(dotId)) continue; - this.#log.info("dot idle, going to sleep", { dotId, idleMs: now.getTime() - lastActive }); - sleeping.push(dotId); - this.#background.run("idle sleep", dotId, () => this.lifecycle.stop(dotId, "idle")); - } - return sleeping; - } - - /** The database answers, and whether the global OpenRouter key is stored (and decrypts). */ - async health(): Promise<{ database: "ok"; openrouter_configured: boolean }> { - let key: string | null; - try { - key = await this.db.secrets.get(GLOBAL_SCOPE, OPENROUTER_KEY_NAME); - } catch (error) { - throw new ControlPlaneError(503, "database_unavailable", `the database did not answer: ${errorMessage(error)}`); - } - return { database: "ok", openrouter_configured: key !== null }; - } -} diff --git a/apps/scheduler/src/support.ts b/apps/scheduler/src/support.ts deleted file mode 100644 index 96e15aff..00000000 --- a/apps/scheduler/src/support.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** The scheduler's own building blocks: a per-key lock, and the work it starts without waiting for it. */ -import { errorMessage, type Logger } from "@invisible-dots/shared"; - -/** - * Serializes work per key: lifecycle operations on one Dot (create, start, - * stop, reboot, delete) run one after the other, operations on different - * Dots run in parallel. - */ -export class KeyedMutex { - readonly #tails = new Map>(); - - run(key: string, fn: () => Promise): Promise { - const previous = this.#tails.get(key) ?? Promise.resolve(); - const result = previous.then(fn, fn); - const tail = result.catch(() => {}); - this.#tails.set(key, tail); - void tail.then(() => { - if (this.#tails.get(key) === tail) this.#tails.delete(key); - }); - return result; - } - - isBusy(key: string): boolean { - return this.#tails.has(key); - } -} - -/** - * Work a caller starts without waiting for it (a provisioning, a stop, a push to a guest): its failure is logged, - * since nobody awaits it, and `settle` waits until all of it has finished (tests and shutdown). After `close` nothing - * new starts. - */ -export class BackgroundWork { - readonly #pending = new Set>(); - #closed = false; - - constructor(private readonly log: Logger) {} - - /** Start `work`; a failure is logged as " failed" with the Dot. */ - run(what: string, dotId: string, work: () => Promise): void { - if (this.#closed) return; - this.track(work().catch((error) => this.log.error(`${what} failed`, { dotId, error: errorMessage(error) }))); - } - - /** Count a promise as background work until it settles; it is returned as it is, for a caller that awaits it. */ - track(work: Promise): Promise { - const tracked = work.finally(() => this.#pending.delete(tracked)); - tracked.catch(() => {}); - this.#pending.add(tracked); - return work; - } - - /** Whether any of it is still running. */ - get busy(): boolean { - return this.#pending.size > 0; - } - - /** Wait until all of it has finished, including work started meanwhile. */ - async settle(): Promise { - while (this.#pending.size > 0) await Promise.allSettled([...this.#pending]); - } - - close(): void { - this.#closed = true; - } -} diff --git a/apps/scheduler/src/testing.ts b/apps/scheduler/src/testing.ts deleted file mode 100644 index 6ab5c763..00000000 --- a/apps/scheduler/src/testing.ts +++ /dev/null @@ -1,879 +0,0 @@ -/** - * In-process stand-ins for the VM layer and the guest agent, used by the - * scheduler and API tests. FakeGuest follows the guest protocol of - * architecture section 5: health that comes up after a boot, a key held in - * memory only (lost on every reboot and every agent restart), `agent.started` - * at every start of the agent, inbound events accepted once per id, an - * outbox with monotonically increasing `seq` replayed after a cursor, and - * browser identities under the same rules as the real agent's, and a small - * file system (`putFile`) served through the files routes with the real - * daemon's errors, the automations its engine runs (`putAutomation`) and a small tool table. - */ -import { crc32, deflateSync } from "node:zlib"; -import { - checkIdentityRequest, - IDENTITY_ERROR_STATUS, - FILE_TOO_LARGE, - mcpPermission, - mcpServerNames, - GUEST_PATHS, - IdentityRequestError, - newId, - newIdentityId, - pollGuestHealth, - type AgentState, - type AgentStateAnswer, - type BrowserIdentity, - type BrowserIdentityListAnswer, - type CreateBrowserIdentityRequest, - type DotRuntimeConfig, - type FileEntry, - type FileListAnswer, - type GuestChecks, - type HealthAnswer, - type IdentityErrorCode, - type InboundEvent, - type OutboundEvent, - type OutboundEventDataMap, - type OutboundEventType, - type PermissionName, - type RefusedEvent, - type SecretsRequest, - type SystemAnswer, - type ToolInfo, - type Skill, - type SkillListAnswer, - type ToolListAnswer, - type VmState, -} from "@invisible-dots/shared"; -import type { - ComputerDriver, - ComputerSpecInput, - ComputerState, - CreatedComputer, - GuestApi, - GuestEndpoint, - StartedComputer, - WaitForHealthOptions, -} from "./driver.js"; - -/** The fake desktop's size: a picture a browser draws with real proportions, so a page that shows it is laid out as it will be. */ -const FAKE_DESKTOP = { width: 1280, height: 800 } as const; - -/** - * A job of the fake's engine, with the fields of nanobot's CronJob that decide when it runs and that a test reads back. - * The host never lists the jobs (they are the Dot's, made and changed through its cron tool); it hears only when the - * earliest is next due (`automation.next_run`). - */ -export interface FakeAutomation { - id: string; - name: string; - enabled: boolean; - schedule: { kind: "at" | "every" | "cron"; at_ms?: number; every_ms?: number; expr?: string; tz?: string }; - message: string; - next_run_at_ms: number | null; - last_run_at_ms: number | null; - last_status: "ok" | "error" | "skipped" | null; - last_error: string | null; - delete_after_run: boolean; - created_at_ms: number; -} - -let desktop: Uint8Array | undefined; - -/** A real PNG of the fake desktop, one flat colour, made once. */ -function desktopPng(): Uint8Array { - if (desktop) return desktop; - const { width, height } = FAKE_DESKTOP; - const stride = 1 + width * 3; - const raw = Buffer.alloc(stride * height); - for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) raw.set([24, 32, 48], y * stride + 1 + x * 3); - const chunk = (type: string, data: Buffer) => { - const head = Buffer.alloc(8); - head.writeUInt32BE(data.length, 0); - head.write(type, 4, "latin1"); - const crc = Buffer.alloc(4); - crc.writeUInt32BE(crc32(Buffer.concat([head.subarray(4), data])), 0); - return Buffer.concat([head, data, crc]); - }; - const ihdr = Buffer.alloc(13); - ihdr.writeUInt32BE(width, 0); - ihdr.writeUInt32BE(height, 4); - ihdr[8] = 8; // bits per channel - ihdr[9] = 2; // RGB - desktop = new Uint8Array(Buffer.concat([Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]), chunk("IHDR", ihdr), chunk("IDAT", deflateSync(raw)), chunk("IEND", Buffer.alloc(0))])); - return desktop; -} - -/** The error shape of vm-manager's GuestRequestError: a status (0 = unreachable) and the guest's code. */ -/** The most browser identities the engine keeps (`DEFAULT_MAX_IDENTITIES` in nanobot/dots/main.py). */ -export const FAKE_MAX_IDENTITIES = 20; - -export class FakeGuestError extends Error { - constructor( - readonly status: number, - message: string, - readonly code?: string, - ) { - super(message); - this.name = "FakeGuestError"; - } -} - -export type InboundHandler = (event: InboundEvent, guest: FakeGuest) => void | Promise; - -/** - * The default agent: a task runs at once and completes; a message gets an - * answer; an approval resumes and completes the task it belongs to. - */ -export const completeEverything: InboundHandler = (event, guest) => { - switch (event.type) { - case "task.created": - guest.emit("agent.state", { state: "THINKING" }); - guest.emit("task.started", { task_id: event.data.task_id }); - guest.emit("task.completed", { task_id: event.data.task_id, summary: `done: ${event.data.description}` }); - guest.emit("agent.state", { state: "IDLE" }); - break; - case "user.message": - guest.emit("message.assistant", { text: `echo: ${event.data.text}`, in_reply_to: event.id }); - break; - case "approval.received": { - const pending = guest.pendingApproval; - guest.pendingApproval = null; - guest.emit("agent.state", { state: "EXECUTING" }); - if (pending?.task_id) { - guest.emit("task.completed", { task_id: pending.task_id, summary: `approval ${event.data.decision}d` }); - } - guest.emit("agent.state", { state: "IDLE" }); - break; - } - default: - break; - } -}; - -export class FakeGuest implements GuestApi { - /** Whether the VM is powered on; every call fails as unreachable when it is not. */ - running = false; - /** Health polls answered with agent "starting" after each boot before it reports "ok". */ - bootPolls = 1; - #pollsSinceBoot = 0; - #bootedAt = 0; - agentState: AgentState = "IDLE"; - openrouterKey: string | null = null; - /** The MCP servers' secrets the host pushed last, by server and name. */ - mcpSecrets: SecretsRequest["mcp_secrets"] = {}; - config: DotRuntimeConfig | null = null; - checks: GuestChecks = { filesystem_writable: true, network_reachable: true, browser_installed: true }; - readonly outbox: OutboundEvent[] = []; - readonly inbound: InboundEvent[] = []; - readonly identities = new Map(); - /** The files of the guest by absolute path; directories exist where a file is under them (and home always). */ - readonly files = new Map(); - /** Symbolic links of the guest: the absolute path of the link to its target (an absolute path). */ - readonly links = new Map(); - /** The automations of the Dot by id (its cron tool made them). */ - readonly automations = new Map(); - /** - * The tools the fake's engine has: the real table's shape, a few rows; `offered` follows the permissions of the - * config, as the engine's `offered_tools` does. - */ - readonly tools: Omit[] = [ - { name: "exec", permission: "computer.exec", description: "Run a shell command on the computer." }, - { name: "read_file", permission: "files.read", description: "Read a file." }, - { name: "write_file", permission: "files.write", description: "Write a file." }, - { name: "cron", permission: "automations", description: "Schedule reminders and recurring tasks." }, - { name: "browser_identity_list", permission: "browser.identity.list", description: "List the browser identities." }, - { name: "browser_identity_create", permission: "browser.identity.create", description: "Create a browser identity." }, - ]; - /** - * The tools each declared MCP server serves, by server; a server of the config with none here serves none. A server - * named in `mcpFailures` is failed with that error instead, as the engine reports a server it could not start. - */ - readonly mcpTools = new Map[]>(); - readonly mcpFailures = new Map(); - /** The skills the fake's engine shows: one built-in by default, as the real one ships; a test adds the Dot's own. */ - skills: Skill[] = [ - { - name: "invisible-playwright", - description: "Use the Dot's browser for any task on a website.", - source: "builtin", - path: "/opt/invisible-dots/engine/skills/invisible-playwright/SKILL.md", - content: "---\nname: invisible-playwright\ndescription: Use the Dot's browser for any task on a website.\n---\n\n# The browser\n", - }, - ]; - readonly calls: string[] = []; - pendingApproval: { approval_id: string; task_id?: string } | null = null; - onInbound: InboundHandler = completeEverything; - /** While set, a frame of an open identity answers 503 `busy`, as when a call of the Dot holds the browser. */ - identityBusy = false; - /** While set, a frame of an open identity answers with this code and its status of the shared table, as when the engine's browser fails. */ - identityFault: IdentityErrorCode | null = null; - /** When set, `postEvent` fails with it once. */ - failNextPost: Error | null = null; - boots = 0; - /** The guest's clock, in ms since the epoch: what its engine compares the jobs' times with at a boot. */ - now: () => number = () => Date.now(); - #seq = 0; - /** Messages the guest sent that the host will refuse, each after the `seq` of the last event the guest had written when it was sent. */ - #refusals: { info: RefusedEvent; after: number }[] = []; - #wakers = new Set<() => void>(); - #streams = new Set(); - - constructor(readonly token: string) {} - - boot(): void { - this.running = true; - this.boots++; - this.#pollsSinceBoot = 0; - this.#bootedAt = Date.now(); - this.openrouterKey = null; - this.mcpSecrets = {}; - this.agentState = "IDLE"; - this.emit("agent.started", {}); - this.#catchUp(); - } - - /** - * What the engine does at a start (CronService.start): a job whose time came while the computer was off runs once, - * late, and moves on (a recurring job counts its next run from now, a one-time one is over), then the engine reports - * the earliest next run when it differs from what the host was last told. - */ - #catchUp(): void { - const now = this.now(); - for (const job of [...this.automations.values()]) { - if (!job.enabled || job.next_run_at_ms === null || job.next_run_at_ms > now) continue; - const ran = { ...job, last_run_at_ms: now, last_status: "ok" as const, last_error: null }; - if (job.schedule.kind === "at") { - if (job.delete_after_run) this.automations.delete(job.id); - else this.automations.set(job.id, { ...ran, enabled: false, next_run_at_ms: null }); - } else { - const every = job.schedule.kind === "every" ? (job.schedule.every_ms ?? 60_000) : 24 * 3_600_000; - this.automations.set(job.id, { ...ran, next_run_at_ms: now + every }); - } - } - this.#reportNextRun(); - } - - /** - * The agent process restarts inside a running VM (systemd after a crash): - * its key is gone, its event stream drops, and it announces its start. - */ - restartAgent(): void { - this.agentRestarts++; - this.openrouterKey = null; - this.mcpSecrets = {}; - this.disconnectStreams(); - this.emit("agent.started", {}); - } - - agentRestarts = 0; - - powerOff(): void { - this.running = false; - this.disconnectStreams(); - } - - /** End every open event stream, as a dropped connection would. */ - disconnectStreams(): void { - for (const controller of this.#streams) controller.abort(); - this.#streams.clear(); - this.#wake(); - } - - #wake(): void { - for (const w of [...this.#wakers]) w(); - } - - #openIdentities(): BrowserIdentity[] { - return [...this.identities.values()].filter((identity) => identity.status === "open"); - } - - /** The Dot opens an identity's browser (the engine does it for a tool call; the host only observes it). */ - launchIdentity(id: string): void { - const identity = this.identities.get(id); - if (!identity) throw new Error(`no identity ${id}`); - this.identities.set(id, { ...identity, status: "open", lastUsedAt: new Date().toISOString() }); - this.emit("browser.identity.launched", { identity_id: id, name: identity.name }); - } - - #reachable(what: string): void { - this.calls.push(what); - if (!this.running) { - if (this.#rebootDelayMs !== null) { - setTimeout(() => this.boot(), this.#rebootDelayMs); - this.#rebootDelayMs = null; - } - throw new FakeGuestError(0, `${what}: connect ECONNREFUSED (the VM is off)`, "ECONNREFUSED"); - } - } - - #rebootDelayMs: number | null = null; - - /** - * Power off and come back `delayMs` after the first call that finds the - * guest down. A real reboot is seconds of downtime that a poll always sees; - * booting on a plain timer instead would let a slow test machine miss it. - */ - reboot(delayMs: number): void { - this.powerOff(); - this.#rebootDelayMs = delayMs; - } - - /** Append an outbound event to the outbox, as the agent does before streaming it. */ - emit(type: T, data: OutboundEventDataMap[T]): OutboundEvent { - if (type === "agent.state") this.agentState = (data as { state: AgentState }).state; - if (type === "approval.requested") { - const d = data as OutboundEventDataMap["approval.requested"]; - this.pendingApproval = { approval_id: d.approval_id, ...(d.task_id ? { task_id: d.task_id } : {}) }; - this.agentState = "WAITING_APPROVAL"; - } - const event = { seq: ++this.#seq, id: newId("evt"), type, ts: new Date().toISOString(), data } as OutboundEvent; - this.outbox.push(event); - this.#wake(); - return event; - } - - /** - * The engine writes an event of this type that the host's schema does not take: it has a `seq` (the next one) and the - * stream carries it, but the host refuses it. What follows is stored as usual. - */ - writeUnreadable(type: string, problem: string): void { - this.#refusals.push({ info: { seq: ++this.#seq, type, problem }, after: this.outbox.at(-1)?.seq ?? 0 }); - this.#wake(); - } - - /** The stream carries a message that is not JSON, so it has no `seq` and no type to name. */ - sendGarbage(problem: string): void { - this.#refusals.push({ info: { seq: null, type: null, problem }, after: this.outbox.at(-1)?.seq ?? 0 }); - this.#wake(); - } - - /** Ask for an approval from inside a task, as the policy engine does on `ask`. */ - requestApproval( - taskId: string | undefined, - tool = "browser_identity_delete", - permission: PermissionName = "browser.identity.delete", - args: Record = { identity_id: "shop-abc123" }, - ): string { - const approvalId = newId("apr"); - this.emit("agent.state", { state: "WAITING_APPROVAL" }); - this.emit("approval.requested", { - approval_id: approvalId, - ...(taskId ? { task_id: taskId } : {}), - tool, - permission, - arguments: args, - reason: "the tool needs approval", - }); - return approvalId; - } - - async health(): Promise { - this.#reachable("health"); - this.#pollsSinceBoot++; - // A real guest has been up for several seconds by the time its agent answers. - const uptime = 5 + Math.floor((Date.now() - this.#bootedAt) / 1000); - if (this.#pollsSinceBoot <= this.bootPolls) { - return { agentd: "ok", agent: { status: "down" }, uptime_s: uptime }; - } - return { - agentd: "ok", - agent: { - status: "ok", - state: this.agentState, - openrouter_configured: this.openrouterKey !== null, - browser: { identities: this.identities.size, open: this.#openIdentities().length }, - checks: { ...this.checks }, - }, - uptime_s: uptime, - }; - } - - async system(): Promise { - this.#reachable("system"); - return { - hostname: "invisible-dot-fake", - uptime_s: 5 + Math.floor((Date.now() - this.#bootedAt) / 1000), - cpus: 2, - mem_total_bytes: 4 * 1024 ** 3, - mem_available_bytes: 3 * 1024 ** 3, - disk_total_bytes: 40 * 1024 ** 3, - disk_free_bytes: 35 * 1024 ** 3, - }; - } - - async pushSecrets(secrets: SecretsRequest): Promise { - this.#reachable("pushSecrets"); - this.openrouterKey = secrets.openrouter_api_key; - this.mcpSecrets = structuredClone(secrets.mcp_secrets); - } - - - /** While set, `putConfig` waits for it (a slow push), and the config is stored when it resolves. */ - configPushGate: Promise | null = null; - - async putConfig(config: DotRuntimeConfig): Promise { - this.#reachable("putConfig"); - await this.configPushGate; - this.config = config; - } - - async postEvent(event: InboundEvent): Promise<{ accepted: true }> { - this.#reachable(`postEvent:${event.type}`); - if (this.failNextPost) { - const error = this.failNextPost; - this.failNextPost = null; - throw error; - } - // Like the agent's inbox: an id it already accepted is accepted again and ignored. - if (this.inbound.some((e) => e.id === event.id)) return { accepted: true }; - this.inbound.push(event); - await this.onInbound(event, this); - return { accepted: true }; - } - - async state(): Promise { - this.#reachable("state"); - return { state: this.agentState, current_task_id: null, pending_approval: null }; - } - - async listBrowserIdentities(): Promise { - this.#reachable("listBrowserIdentities"); - return { identities: [...this.identities.values()] }; - } - - async createBrowserIdentity(body: CreateBrowserIdentityRequest): Promise { - this.#reachable("createBrowserIdentity"); - let checked: { name: string; proxy?: string }; - try { - // The agent's own rules, with the engine's own limit (DEFAULT_MAX_IDENTITIES in nanobot/dots/main.py). - checked = checkIdentityRequest(body, this.identities.size, FAKE_MAX_IDENTITIES); - } catch (error) { - if (error instanceof IdentityRequestError) throw new FakeGuestError(error.code === "limit" ? 409 : 400, error.message, error.code); - throw error; - } - const id = newIdentityId(checked.name); - const identity: BrowserIdentity = { - id, - name: checked.name, - createdAt: new Date().toISOString(), - lastUsedAt: null, - status: "available", - profilePath: `/home/dot/browsers/${id}/profile`, - hasProxy: checked.proxy !== undefined, - }; - this.identities.set(id, identity); - this.emit("browser.identity.created", { identity_id: id, name: checked.name }); - return identity; - } - - async getBrowserIdentity(id: string): Promise { - this.#reachable("getBrowserIdentity"); - const identity = this.identities.get(id); - if (!identity) throw new FakeGuestError(404, `identity ${id} not found`, "not_found"); - return identity; - } - - async deleteBrowserIdentity(id: string): Promise { - this.#reachable("deleteBrowserIdentity"); - const identity = this.identities.get(id); - if (!identity) throw new FakeGuestError(404, `identity ${id} not found`, "not_found"); - this.identities.delete(id); - this.emit("browser.identity.deleted", { identity_id: id, name: identity.name }); - } - - async getBrowserIdentityFrame(id: string): Promise { - this.#reachable("getBrowserIdentityFrame"); - const identity = this.identities.get(id); - if (!identity) throw new FakeGuestError(404, `no browser identity "${id}"`, "not_found"); - if (identity.status !== "open") { - throw new FakeGuestError(409, `identity ${id} is not open; call browser_identity_launch first`, "not_open"); - } - if (this.identityBusy) { - throw new FakeGuestError(IDENTITY_ERROR_STATUS.busy, `browser identity "${id}" is busy with a call; ask again in a moment`, "busy"); - } - if (this.identityFault) { - throw new FakeGuestError(IDENTITY_ERROR_STATUS[this.identityFault], `browser identity "${id}" failed: ${this.identityFault}`, this.identityFault); - } - // The JPEG markers of an empty image: enough for a content check. - return Uint8Array.from([0xff, 0xd8, 0xff, 0xd9]); - } - - async closeBrowserIdentity(id: string): Promise { - this.#reachable("closeBrowserIdentity"); - const identity = this.identities.get(id); - if (!identity) throw new FakeGuestError(404, `no browser identity "${id}"`, "not_found"); - if (identity.status !== "open") return; - this.identities.set(id, { ...identity, status: "available" }); - this.emit("browser.identity.closed", { identity_id: id, name: identity.name }); - } - - /** Give the Dot an automation (its cron tool made it). */ - putAutomation(automation: FakeAutomation): void { - this.automations.set(automation.id, automation); - this.#reportNextRun(); - } - - /** Take an automation away (its cron tool removed it). */ - removeAutomation(id: string): void { - this.automations.delete(id); - this.#reportNextRun(); - } - - /** - * What the engine does after every change of its jobs: tell the host, with an `automation.next_run` event, when the - * earliest enabled one is due (null when none is), once per change (also at a boot, when a run made - * late moved it: a boot with nothing changed reports nothing, the engine has told the host what it has to). - */ - #reportNextRun(): void { - const due = [...this.automations.values()].flatMap((a) => (a.enabled && a.next_run_at_ms !== null ? [a.next_run_at_ms] : [])); - const next = due.length > 0 ? Math.min(...due) : null; - if (next === this.#reportedNextRun) return; - this.#reportedNextRun = next; - this.emit("automation.next_run", { next_run_at_ms: next }); - } - - #reportedNextRun: number | null = null; - - async listTools(): Promise { - this.#reachable("listTools"); - const permissions: Record = this.config?.permissions ?? {}; - const offered = (tool: Omit): boolean => - this.config !== null && (permissions[tool.permission] === "allow" || permissions[tool.permission] === "ask"); - const servers = this.config ? mcpServerNames(this.config) : []; - const connected = servers.filter((name) => !this.mcpFailures.has(name)); - const mcpTools = connected.flatMap((name) => (this.mcpTools.get(name) ?? []).map((tool) => ({ ...tool, permission: mcpPermission(name) }))); - return { - tools: [...this.tools, ...mcpTools].map((tool) => ({ ...tool, offered: offered(tool) })), - mcp_servers: servers.map((name) => { - const error = this.mcpFailures.get(name); - return error === undefined - ? { name, state: "connected" as const, error: null, tools: this.mcpTools.get(name)?.length ?? 0 } - : { name, state: "failed" as const, error, tools: 0 }; - }), - }; - } - - async listSkills(): Promise { - this.#reachable("listSkills"); - return { skills: [...this.skills] }; - } - - /** Put a file in the guest's file system (the Dot wrote it). */ - putFile(path: string, content: string | Uint8Array, mtime: Date = new Date()): void { - this.files.set(path, { content: typeof content === "string" ? new TextEncoder().encode(content) : content, mtime }); - } - - /** A symbolic link at `path` leading to `target` (absolute). */ - link(path: string, target: string): void { - this.links.set(path, target); - } - - /** - * What dot-agentd's TCP listener does with a path: follow the symbolic links, and refuse (403 `outside_home`) a - * real location that is not under home. The host's file routes always reach the guest through that listener. - */ - #realPath(path: string): string { - let real = path; - for (let hops = 0; ; hops++) { - if (hops > 40) throw new FakeGuestError(500, `${path}: too many levels of symbolic links`, "io_error"); - const key = [...this.links.keys()].filter((link) => real === link || real.startsWith(`${link}/`)).sort((a, b) => b.length - a.length)[0]; - if (key === undefined) break; - real = this.links.get(key)! + real.slice(key.length); - } - if (real !== GUEST_PATHS.home && !real.startsWith(`${GUEST_PATHS.home}/`)) { - throw new FakeGuestError(403, `the path leads outside ${GUEST_PATHS.home}`, "outside_home"); - } - return real; - } - - #isDirectory(path: string): boolean { - return path === GUEST_PATHS.home || [...this.files.keys()].some((file) => file.startsWith(`${path}/`)); - } - - async readFile(asked: string, options: { maxBytes?: number } = {}): Promise { - this.#reachable("readFile"); - const path = this.#realPath(asked); - if (this.#isDirectory(path)) throw new FakeGuestError(400, `${path} is a directory; use /v1/files/list`, "is_a_directory"); - const file = this.files.get(path); - if (!file) throw new FakeGuestError(404, `open ${path}: no such file or directory`, "not_found"); - if (options.maxBytes !== undefined && file.content.length > options.maxBytes) { - throw new FakeGuestError(413, `the answer is larger than ${options.maxBytes} bytes`, FILE_TOO_LARGE); - } - return file.content; - } - - async listFiles(asked: string): Promise { - this.#reachable("listFiles"); - const path = this.#realPath(asked); - if (this.files.has(path)) throw new FakeGuestError(400, `${path} is not a directory`, "not_a_directory"); - if (!this.#isDirectory(path)) throw new FakeGuestError(404, `stat ${path}: no such file or directory`, "not_found"); - const entries = new Map(); - for (const [file, { content, mtime }] of this.files) { - if (!file.startsWith(`${path}/`)) continue; - const [name, ...rest] = file.slice(path.length + 1).split("/"); - const modified = mtime.toISOString(); - const known = entries.get(name!); - if (rest.length > 0) entries.set(name!, { name: name!, type: "dir", size: 0, mtime: known && known.mtime > modified ? known.mtime : modified }); - else entries.set(name!, { name: name!, type: "file", size: content.length, mtime: modified }); - } - return { entries: [...entries.values()].sort((a, b) => (a.name < b.name ? -1 : 1)) }; - } - - async prepareSleep(): Promise { - this.#reachable("prepareSleep"); - } - - async screenshot(): Promise { - this.#reachable("screenshot"); - return desktopPng(); - } - - /** The outbox after `after`, then every new event, until aborted or disconnected. */ - async *events(options: { after?: number; signal?: AbortSignal; onRefused?: (info: RefusedEvent) => void | Promise }): AsyncGenerator { - this.#reachable("events"); - const own = new AbortController(); - this.#streams.add(own); - let after = options.after ?? 0; - const handed = new Set(); - try { - for (;;) { - if (options.signal?.aborted) return; - if (own.signal.aborted) throw new FakeGuestError(0, "event stream disconnected"); - // A refused message is handed over when its turn comes (after the events written before it), as the real - // stream does, and a reconnect resumes after its `seq`. - const refusal = this.#refusals.find((r) => !handed.has(r) && !this.outbox.some((e) => e.seq > after && e.seq <= r.after)); - if (refusal) { - handed.add(refusal); - if (refusal.info.seq !== null && refusal.info.seq <= after) continue; - await options.onRefused?.(refusal.info); - if (refusal.info.seq !== null) after = refusal.info.seq; - continue; - } - const next = this.outbox.find((e) => e.seq > after); - if (next) { - after = next.seq; - yield next; - continue; - } - await new Promise((resolve) => { - const done = () => { - this.#wakers.delete(done); - options.signal?.removeEventListener("abort", done); - resolve(); - }; - this.#wakers.add(done); - options.signal?.addEventListener("abort", done, { once: true }); - }); - } - } finally { - this.#streams.delete(own); - } - } -} - -interface FakeVm { - state: VmState; - guestPort: number | null; - pid: number | null; - token: string; -} - -export type DriverOperation = "create" | "start" | "stop" | "reboot" | "destroy"; - -/** The first port FakeDriver hands out; far from anything a test binds, and never really bound. */ -const FAKE_FIRST_PORT = 47_000; - -/** - * A ComputerDriver that keeps its "VMs" in memory and boots a FakeGuest in - * each. Like QEMU with a fresh port forward, every start gets a new port, - * and a guest is reached only through the port its VM runs with now. - */ -export class FakeDriver implements ComputerDriver { - readonly vms = new Map(); - readonly guests = new Map(); - readonly calls: string[] = []; - readonly #failures = new Map(); - #nextPort = FAKE_FIRST_PORT; - #nextPid = 9_000; - /** Applied to every new guest, e.g. to install a custom agent behaviour. */ - configureGuest: (guest: FakeGuest) => void = () => {}; - rebootDelayMs = 30; - goldenImage = "images/golden-test.qcow2"; - runtimeImage = "images/runtime-test.iso"; - - /** Make the next `times` calls of `operation` fail with `error`. */ - failNext(operation: DriverOperation, error: Error = new Error(`${operation} failed (injected)`), times = 1): void { - this.#failures.set(operation, { error, times }); - } - - #enter(operation: DriverOperation, dotId: string): void { - this.calls.push(`${operation}:${dotId}`); - const failure = this.#failures.get(operation); - if (failure) { - if (--failure.times <= 0) this.#failures.delete(operation); - throw failure.error; - } - } - - guestOf(dotId: string): FakeGuest { - const guest = this.guests.get(dotId); - if (!guest) throw new Error(`no fake guest for ${dotId}`); - return guest; - } - - /** Power a VM off behind the control plane's back, as a crash or a host reboot would. */ - crash(dotId: string): void { - const vm = this.vms.get(dotId); - if (vm) Object.assign(vm, { state: "STOPPED", guestPort: null, pid: null }); - this.guests.get(dotId)?.powerOff(); - } - - async create(spec: ComputerSpecInput): Promise { - this.#enter("create", spec.dotId); - if (!this.vms.has(spec.dotId)) this.vms.set(spec.dotId, { state: "STOPPED", guestPort: null, pid: null, token: spec.token }); - if (!this.guests.has(spec.dotId)) { - const guest = new FakeGuest(spec.token); - this.configureGuest(guest); - this.guests.set(spec.dotId, guest); - } - return { goldenImage: this.goldenImage, runtimeImage: this.runtimeImage }; - } - - async start(spec: ComputerSpecInput & { goldenImage: string }): Promise { - this.#enter("start", spec.dotId); - const vm = this.vms.get(spec.dotId); - if (!vm) throw new Error(`the disk of ${spec.dotId} does not exist`); - if (vm.state === "RUNNING" && vm.guestPort !== null && vm.pid !== null) { - return { guestPort: vm.guestPort, pid: vm.pid, runtimeImage: this.runtimeImage, alreadyRunning: true }; - } - Object.assign(vm, { state: "RUNNING", guestPort: this.#nextPort++, pid: this.#nextPid++ }); - this.guestOf(spec.dotId).boot(); - return { guestPort: vm.guestPort!, pid: vm.pid!, runtimeImage: this.runtimeImage, alreadyRunning: false }; - } - - async stop(dotId: string, token: string) { - this.#enter("stop", dotId); - // Like dot-agentd: the poweroff needs the Dot's token. - if (this.vms.get(dotId) && token !== this.vms.get(dotId)!.token) throw new FakeGuestError(401, "unauthorized", "unauthorized"); - this.crash(dotId); - return { forced: false }; - } - - /** Like the real one: the guest goes down, comes back a moment later, and the port changes. */ - async reboot(spec: ComputerSpecInput & { goldenImage: string }): Promise { - this.#enter("reboot", spec.dotId); - const vm = this.vms.get(spec.dotId); - if (!vm) throw new Error(`the disk of ${spec.dotId} does not exist`); - Object.assign(vm, { state: "RUNNING", guestPort: this.#nextPort++, pid: this.#nextPid++ }); - this.guestOf(spec.dotId).reboot(this.rebootDelayMs); - return { guestPort: vm.guestPort!, pid: vm.pid!, runtimeImage: this.runtimeImage, alreadyRunning: false }; - } - - /** vm-manager's rule and loop (pollGuestHealth), with "QEMU exited" as the check, as VmManager has. */ - async waitForHealth(endpoint: GuestEndpoint, token: string, options: WaitForHealthOptions): Promise { - const source = { address: `fake:${endpoint.port}`, health: (o: { timeoutMs?: number }) => this.guest(endpoint, token).health(o) }; - return pollGuestHealth(source, { - timeoutMs: options.timeoutMs, - intervalMs: options.intervalMs, - requestTimeoutMs: options.requestTimeoutMs, - check: () => { - if (this.vms.get(endpoint.dotId)?.state !== "RUNNING") throw new Error(`QEMU of ${endpoint.dotId} is not running any more`); - }, - }); - } - - async destroy(dotId: string) { - this.#enter("destroy", dotId); - this.guests.get(dotId)?.powerOff(); - this.vms.delete(dotId); - this.guests.delete(dotId); - } - - async state(dotId: string): Promise { - const vm = this.vms.get(dotId); - if (!vm) return { exists: false, state: "STOPPED", pid: null, guestPort: null, detail: null }; - return { exists: true, state: vm.state, pid: vm.pid, guestPort: vm.guestPort, detail: vm.state === "RUNNING" ? "running" : null }; - } - - guest(endpoint: GuestEndpoint, token: string): GuestApi { - const vm = this.vms.get(endpoint.dotId); - const guest = this.guests.get(endpoint.dotId); - const refuse = (status: number, message: string, code?: string) => - new Proxy({} as GuestApi, { - // Not a thenable: `await` on the client must not call "then" and hang. - get: (_target, property) => - property === "then" - ? undefined - : async () => { - throw new FakeGuestError(status, message, code); - }, - }); - // A port the VM no longer runs with reaches nothing, like a stale forward after a restart. - if (!vm || !guest || vm.guestPort !== endpoint.port) { - return refuse(0, `connect ECONNREFUSED 127.0.0.1:${endpoint.port}`, "ECONNREFUSED"); - } - // Every call is refused, like dot-agentd answering 401 to a wrong token. - if (token !== guest.token) return refuse(401, "unauthorized", "unauthorized"); - return guest; - } - - async close() {} -} - -/** Poll until `predicate` holds; fails with `what` after `timeoutMs`. */ -export async function waitFor( - predicate: () => T | Promise, - what: string, - timeoutMs = 5_000, - intervalMs = 10, -): Promise> { - const deadline = Date.now() + timeoutMs; - for (;;) { - const value = await predicate(); - if (value) return value as NonNullable; - if (Date.now() > deadline) throw new Error(`timed out waiting for ${what}`); - await new Promise((resolve) => setTimeout(resolve, intervalMs)); - } -} - -/** - * Wait until the Dot is READY and doing nothing: no lifecycle operation - * under its lock, every event its fake guest emitted so far stored by the - * pump, and what READY and those events started in the background done too - * (the flush of its outbox, the push an agent.started asks for). A test that - * starts earlier races that work: an idle check skips a Dot whose outbox is - * being flushed, and a guest event stored later counts as activity, which is - * right in a server and a coin toss in a test. - */ -export async function waitUntilSettledReady( - scheduler: { - db: { dots: { get(id: string): Promise<{ status: string } | null> }; computers: { get(id: string): Promise<{ event_cursor: number } | null> } }; - lifecycle: { isBusy(id: string): boolean }; - settle(): Promise; - }, - driver: FakeDriver, - dotId: string, - what: string, -): Promise { - // A Dot's creation is dozens of queries: against a Postgres across WSL on a loaded host that has taken over 5 s. - await waitFor(async () => (await scheduler.db.dots.get(dotId))?.status === "READY" && !scheduler.lifecycle.isBusy(dotId), `${what} READY`, 15_000); - const lastSeq = driver.guestOf(dotId).outbox.at(-1)?.seq ?? 0; - await waitFor(async () => ((await scheduler.db.computers.get(dotId))?.event_cursor ?? 0) >= lastSeq, `${what}'s guest events stored`, 15_000); - await scheduler.settle(); -} - -/** A clock tests move by hand. */ -export class ManualClock { - #now: number; - constructor(start: Date = new Date()) { - this.#now = start.getTime(); - } - now(): Date { - return new Date(this.#now); - } - advance(ms: number): void { - this.#now += ms; - } -} diff --git a/apps/scheduler/test/commit-points.test.ts b/apps/scheduler/test/commit-points.test.ts deleted file mode 100644 index ffe657c2..00000000 --- a/apps/scheduler/test/commit-points.test.ts +++ /dev/null @@ -1,197 +0,0 @@ -/** - * A change of state and the host event that tells it commit together or not at all. The control plane can be killed - * (kill -9, a power cut) between any two statements; a transaction cannot be half done, so what is left is the state it - * was in before the change, which recovery knows how to finish, never a state nobody was told of. - * - * Each test plays the kill by making the last write of the change throw (`killedAt`, database/testing): the process - * dies there, and whatever was written before it in the same transaction must not have been committed. The events - * checked are those the change would have logged. - */ -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, killedAt, type TestDatabase } from "@invisible-dots/database/testing"; -import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; -import { Scheduler } from "../src/index.js"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "../src/testing.js"; - -const yaml = (name: string) => `name: ${name}\nmodel:\n provider: openrouter\n id: test/model\n`; - -describe("the commit points of the host", () => { - let t: TestDatabase; - let db: Database; - const open: Scheduler[] = []; - - beforeAll(async () => { - t = await createTestDatabase("pglite"); - db = t.db; - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - }); - - afterEach(async () => { - await Promise.all(open.splice(0).map((s) => s.close())); - }); - - afterAll(async () => { - await t?.drop(); - }); - - function make(driver: FakeDriver, over: Database = db) { - const scheduler = new Scheduler({ - db: over, - driver, - clock: new ManualClock(), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0, maxDeliveryAttempts: 2 }, - dispatchIntervalMs: 60_000, - idleCheckIntervalMs: 60_000, - }); - open.push(scheduler); - return scheduler; - } - - const typesOf = async (dotId: string, ...types: string[]) => (await db.events.list({ dotId, types })).map((e) => e.type); - - it("a stop killed at its last write leaves the computer STOPPING and says nothing of a stop; recovery finishes it, and tells of it once", async () => { - const driver = new FakeDriver(); - const killed = killedAt(db, "dots", "setStatus"); - const first = make(driver, killed.db); - const dot = await first.createDot(yaml("killed-stop")); - await waitUntilSettledReady(first, driver, dot.id, "killed-stop"); - const before = (await typesOf(dot.id, "computer.stopped")).length; - - killed.kill(); - await first.stopComputer(dot.id); - await first.settle(); - - // Before the change the stop's rows were four statements, so the state was STOPPED, the Dot's status old and no event. - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPING", stop_reason: "user" }); - expect((await db.events.list({ dotId: dot.id, types: ["computer.state"] })).map((e) => e.data.state)).not.toContain("STOPPED"); - expect(await typesOf(dot.id, "computer.stopped")).toHaveLength(before); - - // The control plane starts again: the interrupted stop is finished, and told once. - killed.revive(); - await first.close(); - open.splice(open.indexOf(first), 1); - const second = make(driver); - await second.start(); - await second.settle(); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", stop_reason: "user", pid: null, guest_port: null }); - expect(await db.events.list({ dotId: dot.id, types: ["computer.stopped"] })).toHaveLength(before + 1); - expect((await db.events.list({ dotId: dot.id, types: ["computer.state"] })).map((e) => e.data.state).filter((state) => state === "STOPPED")).toHaveLength(1); - expect((await db.dots.get(dot.id))?.status).toBe("IDLE"); - }); - - it("a deletion killed at its last write leaves the Dot, and no dot.deleted; the event and the Dot go together", async () => { - const driver = new FakeDriver(); - const killed = killedAt(db, "dots", "delete"); - const scheduler = make(driver, killed.db); - const dot = await scheduler.createDot(yaml("killed-delete")); - await waitUntilSettledReady(scheduler, driver, dot.id, "killed-delete"); - - killed.kill(); - await scheduler.deleteDot(dot.id); - await scheduler.settle(); - expect(await db.dots.get(dot.id)).not.toBeNull(); - expect(await typesOf(dot.id, "dot.deleted")).toEqual([]); - - killed.revive(); - await scheduler.deleteDot(dot.id); - await scheduler.settle(); - expect(await db.dots.get(dot.id)).toBeNull(); - expect(await typesOf(dot.id, "dot.deleted")).toEqual(["dot.deleted"]); - }); - - it("a Dot killed at its second insert is not created and is not announced", async () => { - const killed = killedAt(db, "computers", "insert"); - const scheduler = make(new FakeDriver(), killed.db); - killed.kill(); - await expect(scheduler.createDot(yaml("killed-create"))).rejects.toThrow(/killed at computers.insert/); - expect(await db.dots.resolve("killed-create")).toBeNull(); - expect((await db.events.list({ types: ["dot.created"] })).filter((e) => e.data.name === "killed-create")).toEqual([]); - - killed.revive(); - const dot = await scheduler.createDot(yaml("killed-create")); - expect(await typesOf(dot.id, "dot.created", "computer.state")).toEqual(["dot.created", "computer.state"]); - }); - - it("a task killed at its insert is not announced, and an announced one exists", async () => { - const driver = new FakeDriver(); - const killed = killedAt(db, "tasks", "insert"); - const scheduler = make(driver, killed.db); - const dot = await scheduler.createDot(yaml("killed-task")); - await waitUntilSettledReady(scheduler, driver, dot.id, "killed-task"); - - killed.kill(); - await expect(scheduler.createTask(dot.id, { description: "never stored" })).rejects.toThrow(/killed at tasks.insert/); - expect(await typesOf(dot.id, "task.created")).toEqual([]); - - killed.revive(); - const task = await scheduler.createTask(dot.id, { description: "stored" }); - await waitFor(async () => (await typesOf(dot.id, "task.created")).length === 1, "the event of the task"); - expect((await db.events.list({ dotId: dot.id, types: ["task.created"] }))[0]!.data.task_id).toBe(task.id); - }); - - it("a task given up killed at its last write is neither FAILED nor told; given up whole, it is both", async () => { - const driver = new FakeDriver(); - const killed = killedAt(db, "inbound", "drop"); - const scheduler = make(driver, killed.db); - const dot = await scheduler.createDot(yaml("killed-give-up")); - await waitUntilSettledReady(scheduler, driver, dot.id, "killed-give-up"); - await scheduler.lifecycle.stop(dot.id, "user"); - driver.failNext("start", new Error("qemu-system-x86_64 exited: boom"), 3); - const failures = async (taskId: string) => - (await db.query<{ failures: number }>("SELECT failures FROM inbound_events WHERE task_id = $1", [taskId])).rows[0]?.failures ?? 0; - - killed.kill(); - const task = await scheduler.createTask(dot.id, { description: "undeliverable" }); - await waitFor(async () => (await failures(task.id)) >= 2, "its attempts used up"); - await scheduler.settle(); - expect((await db.tasks.get(task.id))?.status).toBe("RUNNING"); - expect(await typesOf(dot.id, "task.failed")).toEqual([]); - - // The next attempt gives it up whole: the state and its event in one commit. - killed.revive(); - await scheduler.inbound.kick(dot.id); - expect((await db.tasks.get(task.id))?.status).toBe("FAILED"); - expect(await typesOf(dot.id, "task.failed")).toEqual(["task.failed"]); - }); - - it("a config killed at its save is not announced, and a saved one is, in the same commit", async () => { - const driver = new FakeDriver(); - const killed = killedAt(db, "dots", "updateConfig"); - const scheduler = make(driver, killed.db); - const dot = await scheduler.createDot(yaml("killed-config")); - await waitUntilSettledReady(scheduler, driver, dot.id, "killed-config"); - const before = (await typesOf(dot.id, "dot.updated")).length; - - killed.kill(); - await expect(scheduler.updateDot(dot.id, `${yaml("killed-config")}instructions: be brief\n`)).rejects.toThrow(/killed at dots.updateConfig/); - expect(await typesOf(dot.id, "dot.updated")).toHaveLength(before); - expect((await db.dots.get(dot.id))?.config.instructions).toBeUndefined(); - - killed.revive(); - await scheduler.updateDot(dot.id, `${yaml("killed-config")}instructions: be brief\n`); - expect(await typesOf(dot.id, "dot.updated")).toHaveLength(before + 1); - expect((await db.dots.get(dot.id))?.config.instructions).toBe("be brief"); - }); - - it("the person's stop of a computer that is asleep is told, so that every view learns the automations will not wake it", async () => { - const driver = new FakeDriver(); - const scheduler = make(driver); - const dot = await scheduler.createDot(yaml("asleep-then-stopped")); - await waitUntilSettledReady(scheduler, driver, dot.id, "asleep-then-stopped"); - await scheduler.lifecycle.stop(dot.id, "idle"); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", stop_reason: "idle" }); - const stops = async () => (await db.events.list({ dotId: dot.id, types: ["computer.stopped"] })).map((e) => e.data); - expect(await stops()).toEqual([{ reason: "idle", forced: false }]); - - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", stop_reason: "user" }); - expect(await stops()).toEqual([{ reason: "idle", forced: false }, { reason: "user", forced: false }]); - - // Asked again, it changes nothing and says nothing more. - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - expect(await stops()).toHaveLength(2); - }); -}); diff --git a/apps/scheduler/test/delivery.test.ts b/apps/scheduler/test/delivery.test.ts deleted file mode 100644 index 5028078e..00000000 --- a/apps/scheduler/test/delivery.test.ts +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Races and failures around getting work to a guest: what is stored for a - * guest survives a failed wake and a restart, a cancel never loses to a - * slow wake, a sleep never swallows work, and what the guest must hold (its - * key, its config) is pushed again whenever it may have lost it. - */ -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, testAdapters, type TestDatabase } from "@invisible-dots/database/testing"; -import type { InboundEvent, OutboundEvent, SecretsRequest } from "@invisible-dots/shared"; -import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; -import { Scheduler, type SchedulerOptions } from "../src/index.js"; -import { type Logger } from "@invisible-dots/shared"; -import type { GuestApi, GuestEndpoint } from "../src/index.js"; -import { FakeDriver, FakeGuest, FakeGuestError, ManualClock, waitFor, waitUntilSettledReady } from "../src/testing.js"; - -const yaml = (name: string, instructions = "keep watch") => - `name: ${name}\ninstructions: ${instructions}\nmodel:\n provider: openrouter\n id: test/model\ncomputer:\n idle_timeout: 10m\n`; - -const KEY = "sk-or-delivery-test-key-0123456789"; - -/** A gate a fake waits on until the test opens it. */ -function gate(): { wait: Promise; open(): void; reached: Promise; arrive(): void } { - let open!: () => void; - let arrive!: () => void; - const wait = new Promise((resolve) => (open = resolve)); - const reached = new Promise((resolve) => (arrive = resolve)); - return { wait, open, reached, arrive }; -} - -const received = (guest: FakeGuest, type: InboundEvent["type"]) => guest.inbound.filter((e) => e.type === type); - -describe.each(testAdapters())("delivery to guests (%s)", (kind) => { - let t: TestDatabase; - let db: Database; - const open: Scheduler[] = []; - - beforeAll(async () => { - t = await createTestDatabase(kind); - db = t.db; - await db.secrets.put("global", "openrouter_api_key", KEY); - }); - - afterEach(async () => { - await Promise.all(open.splice(0).map((s) => s.close())); - }); - - afterAll(async () => { - await t?.drop(); - }); - - function make(driver: FakeDriver = new FakeDriver(), extra: Partial = {}) { - const clock = new ManualClock(); - const scheduler = new Scheduler({ - db, - driver, - clock, - dispatchIntervalMs: 60_000, - idleCheckIntervalMs: 60_000, - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0, maxDeliveryAttempts: 2 }, - ...extra, - }); - open.push(scheduler); - drivers.set(scheduler, driver); - return { scheduler, driver, clock }; - } - - const drivers = new Map(); - const driverOf = (s: Scheduler) => drivers.get(s)!; - - async function readyDot(s: Scheduler, name: string) { - const dot = await s.createDot(yaml(name)); - await waitUntilSettledReady(s, driverOf(s), dot.id, name); - return dot; - } - - /** A guest that asks for an approval inside every task. */ - function asksForApproval(guest: FakeGuest): void { - const original = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "task.created") { - g.emit("task.started", { task_id: event.data.task_id }); - g.requestApproval(event.data.task_id); - } else { - return original(event, g); - } - }; - } - - it("an approval for a sleeping Dot whose wake fails is kept and reaches the guest at the next READY", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "approve-later"); - const guest = driver.guestOf(dot.id); - asksForApproval(guest); - const task = await scheduler.createTask(dot.id, { description: "needs a yes" }); - const approval = await waitFor(async () => (await scheduler.listApprovals("pending")).find((a) => a.task_id === task.id), "pending approval"); - await scheduler.lifecycle.stop(dot.id, "user"); - - driver.failNext("start", new Error("QEMU exited (injected)")); - await scheduler.resolveApproval(approval.id, "approve"); - await scheduler.settle(); - expect(received(guest, "approval.received")).toHaveLength(0); - expect((await db.inbound.pending(dot.id)).map((r) => r.event.type)).toEqual(["approval.received"]); - - await scheduler.startComputer(dot.id); - await waitFor(() => received(guest, "approval.received").length === 1, "approval delivered after the next READY"); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task completed"); - expect(await db.inbound.pending(dot.id)).toEqual([]); - }); - - it("a message stored before a restart is delivered by the next control plane", async () => { - const driver = new FakeDriver(); - const first = make(driver).scheduler; - const dot = await readyDot(first, "restart-chat"); - await first.lifecycle.stop(dot.id, "user"); - driver.failNext("start", new Error("QEMU exited (injected)")); - const answer = await first.sendMessage(dot.id, "are you there?"); - expect(answer.delivery).toBe("queued"); - await first.close(); - open.splice(open.indexOf(first), 1); - - const { scheduler } = make(driver); - await scheduler.start(); - await scheduler.startComputer(dot.id); - const guest = driver.guestOf(dot.id); - await waitFor(() => received(guest, "user.message").some((e) => e.id === answer.message_id), "message delivered"); - await waitFor(async () => (await scheduler.conversation(dot.id)).length === 2, "reply"); - }); - - it("a task cancelled while its Dot wakes is never sent to the guest", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "cancel-early"); - await scheduler.lifecycle.stop(dot.id, "user"); - const guest = driver.guestOf(dot.id); - guest.bootPolls = 40; - const task = await scheduler.createTask(dot.id, { description: "never mind" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "RUNNING", "claimed"); - expect(scheduler.lifecycle.isReady(dot.id)).toBe(false); - await scheduler.cancelTask(task.id); - await waitFor(() => scheduler.lifecycle.isReady(dot.id), "woken anyway"); - await scheduler.settle(); - expect((await db.tasks.get(task.id))?.status).toBe("CANCELLED"); - expect(received(guest, "task.created")).toHaveLength(0); - // Nothing to cancel on a guest that never heard of the task. - expect(received(guest, "system.event")).toHaveLength(0); - }); - - it("a task cancelled after its send began is cancelled on the guest too", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "cancel-late"); - const guest = driver.guestOf(dot.id); - guest.onInbound = (event, g) => { - if (event.type === "task.created") g.emit("task.started", { task_id: event.data.task_id }); - }; - const task = await scheduler.createTask(dot.id, { description: "long job" }); - await waitFor(() => received(guest, "task.created").length === 1, "delivered"); - await scheduler.cancelTask(task.id); - await waitFor(() => received(guest, "system.event").length === 1, "cancel delivered"); - expect(received(guest, "system.event")[0]?.data).toMatchObject({ name: "task.cancelled", data: { task_id: task.id } }); - }); - - it("an idle sleep never swallows a task that arrives while the agent prepares to sleep", async () => { - const { scheduler, driver, clock } = make(); - const dot = await readyDot(scheduler, "light-sleeper"); - const guest = driver.guestOf(dot.id); - const bootsAtReceipt: number[] = []; - const complete = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "task.created") bootsAtReceipt.push(g.boots); - return complete(event, g); - }; - const sleeping = gate(); - const prepare = guest.prepareSleep.bind(guest); - guest.prepareSleep = async () => { - sleeping.arrive(); - await sleeping.wait; - return prepare(); - }; - clock.advance(11 * 60_000); - expect(await scheduler.idleCheck()).toEqual([dot.id]); - await sleeping.reached; - const task = await scheduler.createTask(dot.id, { description: "just in time" }); - await scheduler.dispatcher.dispatch(); - // Give a send that does not wait for the stop every chance to happen; a - // correct one waits for the Dot's lock, so nothing arrives in this window. - await waitFor(() => received(guest, "task.created").length > 0, "a send during prepare-sleep", 300).catch(() => undefined); - expect(received(guest, "task.created")).toHaveLength(0); - sleeping.open(); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task completed after the wake"); - // Received once, by the guest of the next boot: never by the one that was powering off. - expect(bootsAtReceipt).toEqual([2]); - expect((await db.computers.get(dot.id))?.state).toBe("RUNNING"); - }); - - it("an idle sleep is called off when work was stored after the idle check", async () => { - const { scheduler, driver, clock } = make(); - const dot = await readyDot(scheduler, "called-off"); - const guest = driver.guestOf(dot.id); - // Work the idle check did not see: a message stored straight into the outbox. - clock.advance(11 * 60_000); - const message: InboundEvent<"user.message"> = { id: "msg_late", type: "user.message", ts: new Date().toISOString(), data: { text: "hi" } }; - await db.inbound.enqueue(dot.id, message); - const stop = scheduler.lifecycle.stop(dot.id, "idle"); - await stop; - expect((await db.computers.get(dot.id))?.state).toBe("RUNNING"); - expect(guest.calls).not.toContain("prepareSleep"); - expect(scheduler.lifecycle.isReady(dot.id)).toBe(true); - }); - - it("a stopped Dot with an unfinished task is woken for a new task", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "blocked"); - const guest = driver.guestOf(dot.id); - guest.onInbound = (event, g) => { - if (event.type === "task.created") g.emit("task.started", { task_id: event.data.task_id }); - }; - const first = await scheduler.createTask(dot.id, { description: "unfinished" }); - await waitFor(() => received(guest, "task.created").length === 1, "first delivered"); - await scheduler.lifecycle.stop(dot.id, "user"); - await scheduler.createTask(dot.id, { description: "waits behind it" }); - await scheduler.pass(); - await waitFor(() => scheduler.lifecycle.isReady(dot.id), "woken for the new task"); - expect((await db.tasks.get(first.id))?.status).toBe("RUNNING"); - }); - - it("a send that reached the guest but timed out is sent again, accepted once, and never fails the task", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "slow-ack"); - const guest = driver.guestOf(dot.id); - const post = guest.postEvent.bind(guest); - let timeouts = 3; - guest.postEvent = async (event) => { - await post(event); - if (event.type === "task.created" && timeouts-- > 0) throw new FakeGuestError(0, "no answer within 30000 ms"); - return { accepted: true }; - }; - const task = await scheduler.createTask(dot.id, { description: "acknowledged late" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "completed"); - expect(received(guest, "task.created")).toHaveLength(1); - expect((await db.tasks.runs(task.id)).map((r) => r.outcome)).toEqual(["completed"]); - }); - - it("a cancelled task leaves no pending approval, and a late request for it is never pending", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "expiring"); - const guest = driver.guestOf(dot.id); - asksForApproval(guest); - const task = await scheduler.createTask(dot.id, { description: "asks then gets cancelled" }); - const approval = await waitFor(async () => (await scheduler.listApprovals("pending")).find((a) => a.task_id === task.id), "pending"); - await scheduler.cancelTask(task.id); - expect((await scheduler.listApprovals("pending")).map((a) => a.id)).not.toContain(approval.id); - expect((await db.approvals.get(approval.id))?.status).toBe("expired"); - await expect(scheduler.resolveApproval(approval.id, "approve")).rejects.toMatchObject({ status: 409, code: "already_resolved" }); - - const late = guest.requestApproval(task.id); - await waitFor(async () => (await db.approvals.get(late)) !== null, "late request stored"); - expect((await db.approvals.get(late))?.status).toBe("expired"); - }); - - it("an agent that restarts inside a running VM gets its key again", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "phoenix"); - const guest = driver.guestOf(dot.id); - expect(guest.openrouterKey).toBe(KEY); - guest.restartAgent(); - expect(guest.openrouterKey).toBeNull(); - await waitFor(() => guest.openrouterKey === KEY, "key pushed again after the restart"); - expect(guest.config?.name).toBe("phoenix"); - }); - - it("a config changed while the Dot passes READY reaches the guest", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "late-config"); - const guest = driver.guestOf(dot.id); - // The boot's agent.started is stored, and the push it starts in the - // background has finished (it runs after the event's transaction, so the - // cursor alone does not say so), so nothing but READY pushes from here on. - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === guest.outbox.at(-1)?.seq, "boot events stored"); - await scheduler.lifecycle.settle(); - const pushing = gate(); - const putConfig = guest.putConfig.bind(guest); - let held = false; - guest.putConfig = async (config) => { - if (!held) { - held = true; - pushing.arrive(); - await pushing.wait; - } - return putConfig(config); - }; - // A READY procedure on the running VM (as after a failed call or a control plane restart). - scheduler.lifecycle.markSuspect(dot.id); - const ready = scheduler.lifecycle.ensureReady(dot.id); - await pushing.reached; - const update = await scheduler.updateDot(dot.id, yaml("late-config", "a brand new instruction")); - expect(update.config.instructions).toBe("a brand new instruction"); - pushing.open(); - await ready; - expect(guest.config?.instructions).toBe("a brand new instruction"); - }); - - it("a guest that echoes the key in a failed secret push never puts it in the log, the rows or the events", async () => { - const lines: string[] = []; - const record = (level: string) => (message: string, fields?: Record) => lines.push(`${level} ${message} ${JSON.stringify(fields ?? {})}`); - const logger: Logger = { debug: record("debug"), info: record("info"), warn: record("warn"), error: record("error") }; - const driver = new FakeDriver(); - driver.configureGuest = (g) => { - g.pushSecrets = async (secrets: SecretsRequest) => { - throw new FakeGuestError(502, `upstream said: bad request body {"openrouter_api_key":"${secrets.openrouter_api_key}"}`); - }; - }; - const { scheduler } = make(driver, { logger }); - const dot = await scheduler.createDot(yaml("echoes")); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "ERROR", "ERROR"); - await scheduler.settle(); - const dotRow = await db.dots.get(dot.id); - const computer = await db.computers.get(dot.id); - const events = await db.events.list({ dotId: dot.id }); - expect(dotRow?.error).toMatch(/did not take the OpenRouter key and the MCP secrets \(status 502\)/); - for (const text of [dotRow?.error ?? "", computer?.last_error ?? "", JSON.stringify(events), lines.join("\n")]) { - expect(text).not.toContain(KEY); - expect(text).not.toContain(KEY.slice(0, 12)); - } - }); - - it("a VM that dies is recorded as stopped, and a new task runs on a new port with a working event pump", async () => { - /** Like the real guest client: an event stream bound to the port it was opened on, reconnecting forever. */ - class StalePortDriver extends FakeDriver { - override guest(endpoint: GuestEndpoint, token: string): GuestApi { - const inner = super.guest(endpoint, token); - const vms = this.vms; - return new Proxy(inner, { - get: (target, property) => { - if (property === "then") return undefined; - if (property !== "events") { - const value: unknown = Reflect.get(target, property); - return typeof value === "function" ? value.bind(target) : value; - } - return async function* (options: { after?: number; signal?: AbortSignal }): AsyncGenerator { - while (!options.signal?.aborted) { - if (vms.get(endpoint.dotId)?.guestPort === endpoint.port) { - try { - yield* target.events(options); - } catch { - // reconnects, as GuestClient does on a reset - } - } - await new Promise((resolve) => setTimeout(resolve, 5)); - } - }; - }, - }); - } - } - const driver = new StalePortDriver(); - const { scheduler } = make(driver); - const dot = await readyDot(scheduler, "lazarus"); - const before = (await db.computers.get(dot.id))?.guest_port; - driver.crash(dot.id); - const task = await scheduler.createTask(dot.id, { description: "after the crash" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task completed on the new boot"); - expect((await db.computers.get(dot.id))?.guest_port).not.toBe(before); - }); - - it("a VM that powers itself off with a task in progress is started again", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "self-stopper"); - const guest = driver.guestOf(dot.id); - guest.onInbound = (event, g) => { - if (event.type === "task.created") g.emit("task.started", { task_id: event.data.task_id }); - }; - await scheduler.createTask(dot.id, { description: "keeps going" }); - await waitFor(() => received(guest, "task.created").length === 1, "delivered"); - const boots = guest.boots; - driver.crash(dot.id); - await waitFor(async () => (await db.events.list({ dotId: dot.id, types: ["computer.stopped"] })).some((e) => e.data.reason === "exited"), "stop recorded"); - await waitFor(() => guest.boots === boots + 1 && scheduler.lifecycle.isReady(dot.id), "started again"); - }); -}); diff --git a/apps/scheduler/test/engine-shapes.test.ts b/apps/scheduler/test/engine-shapes.test.ts deleted file mode 100644 index 397ae751..00000000 --- a/apps/scheduler/test/engine-shapes.test.ts +++ /dev/null @@ -1,152 +0,0 @@ -/** - * The engine's answer to `GET /tools` and the data of every event it writes, against the host's description of them. The engine's own - * test (`invisible_engine_dots/tests/dots/test_wire_shapes.py`) writes what it really answers, and one event of each - * type and each set of keys its own writers produce, into `wire_shapes.json`; here that file is parsed with the - * schemas of `packages/shared` and the host's fake guest is held to the same answers, so neither side can move a key, - * or a rule of what the model is offered, without a suite failing. The host's schemas strip a key they do not know - * and the host drops an event they refuse, so an event must come out of its parse exactly as it went in. - */ -import { readFileSync } from "node:fs"; -import { fileURLToPath } from "node:url"; -import { - MAX_RUN_AT_MS, - mcpServerStatusSchema, - OUTBOUND_EVENT_TYPES, - parseDotConfig, - parseOutboundEvent, - PERMISSIONS, - skillSchema, - toolInfoSchema, - toRuntimeConfig, - type DotRuntimeConfig, -} from "@invisible-dots/shared"; -import { describe, expect, it } from "vitest"; -import { FakeGuest, type FakeAutomation } from "../src/testing.js"; - -interface OfferingCase { - permissions: Record; - offered: string[]; - tools: unknown[]; -} - -const shapes = JSON.parse( - readFileSync(fileURLToPath(new URL("../../../invisible_engine_dots/tests/dots/wire_shapes.json", import.meta.url)), "utf8"), -) as { - limits: { max_run_at_ms: number }; - outbound_events: { type: string; data: Record }[]; - tool_offering: OfferingCase[]; - mcp: { tools: unknown[]; mcp_servers: unknown[] }; - skills: unknown[]; -}; - -const baseConfig = toRuntimeConfig(parseDotConfig("name: shapes\nmodel:\n provider: openrouter\n id: test/model\n")); - -function configFor(offering: OfferingCase): DotRuntimeConfig { - return { - ...baseConfig, - permissions: offering.permissions as DotRuntimeConfig["permissions"], - }; -} - -describe("what the engine answers, as the host describes it", () => { - it("the last time the engine lets an automation run is the last time the host's schemas accept", () => { - expect(shapes.limits.max_run_at_ms).toBe(MAX_RUN_AT_MS); - const nextRun = (next_run_at_ms: number) => ({ seq: 1, id: "evt_x", type: "automation.next_run", ts: "2026-10-06T09:00:00.000Z", data: { next_run_at_ms } }); - expect(parseOutboundEvent(nextRun(MAX_RUN_AT_MS)).data).toEqual({ next_run_at_ms: MAX_RUN_AT_MS }); - expect(() => parseOutboundEvent(nextRun(MAX_RUN_AT_MS + 1))).toThrow(); - expect(new Date(MAX_RUN_AT_MS).toISOString()).toBe("9999-12-31T23:59:59.999Z"); - }); - - it("every outbound event the engine writes comes out of the host's parse as it went in: none is refused and no key is stripped", () => { - for (const [index, { type, data }] of shapes.outbound_events.entries()) { - const event = { seq: index + 1, id: `evt_${index}`, type, ts: "2026-10-06T09:00:00.000Z", data }; - expect(parseOutboundEvent(event).data, JSON.stringify(event)).toEqual(data); - } - // One of every type the contract names, so a type the engine writes and the host does not know (or the reverse) is seen. - expect([...new Set(shapes.outbound_events.map((event) => event.type))].sort()).toEqual([...OUTBOUND_EVENT_TYPES].sort()); - }); - - it("a key the schema does not know is stripped by the parse, which the check above sees, and a key it needs and the engine lacks is refused", () => { - const called = shapes.outbound_events.find((event) => event.type === "tool.called")!; - const around = (event: { type: string; data: Record }, data: Record) => ({ seq: 1, id: "evt_x", type: event.type, ts: "2026-10-06T09:00:00.000Z", data }); - expect(parseOutboundEvent(around(called, { ...called.data, renamed_by_the_engine: true })).data).not.toEqual({ ...called.data, renamed_by_the_engine: true }); - const { tool: _tool, ...withoutTool } = called.data; - expect(() => parseOutboundEvent(around(called, withoutTool))).toThrow(); - }); - - it("the optional keys of the events are all written by the engine: a terminal, an interrupted call, a task's calls, an approval with and without a task, a reply to a message, the spend", () => { - const keys = (type: string) => shapes.outbound_events.filter((event) => event.type === type).map((event) => Object.keys(event.data).sort().join()); - expect(keys("tool.called")).toEqual(expect.arrayContaining(["decision,duration_ms,ok,permission,target,tool,tty", "decision,duration_ms,interrupted,ok,permission,target,task_id,tool"])); - expect(keys("approval.requested")).toEqual(expect.arrayContaining(["approval_id,arguments,permission,reason,task_id,tool", "approval_id,arguments,permission,reason,tool"])); - expect(keys("message.assistant")).toEqual(["in_reply_to,spent_usd,text"]); - expect(keys("task.progress")).toEqual(["spent_usd,task_id,text"]); - expect(keys("task.failed")).toEqual(["error,spent_usd,task_id"]); - expect(keys("task.completed")).toEqual(["spent_usd,summary,task_id"]); - }); - - it("the host's fake guest writes the automation events as the engine does", async () => { - const written = shapes.outbound_events.filter((event) => event.type === "automation.next_run"); - expect(written.map((event) => event.data.next_run_at_ms)).toEqual([1_790_000_000_000, null]); - const guest = new FakeGuest("token-for-shapes"); - guest.running = true; - const row: FakeAutomation = { - id: "job_every", - name: "check the shop", - enabled: true, - schedule: { kind: "every", every_ms: 3_600_000 }, - message: "look at the orders", - next_run_at_ms: 1_790_000_000_000, - last_run_at_ms: null, - last_status: null, - last_error: null, - delete_after_run: false, - created_at_ms: 1_789_990_000_000, - }; - guest.putAutomation(row); - expect(guest.outbox.map((event) => ({ type: event.type, data: event.data }))).toEqual([written[0]]); - guest.removeAutomation(row.id); - expect(guest.outbox.map((event) => ({ type: event.type, data: event.data }))).toEqual(written); - }); - - it("every skill the engine shows parses with the skill schema, and a key it lacks or has extra is refused", () => { - expect(shapes.skills.map((row) => (row as { name: string }).name)).toContain("invisible-playwright"); - for (const row of shapes.skills) expect(skillSchema.safeParse(row).error?.issues, JSON.stringify(row)).toBeUndefined(); - const first = shapes.skills[0] as Record; - const { content: _content, ...missing } = first; - expect(skillSchema.safeParse(missing).success).toBe(false); - expect(skillSchema.safeParse({ ...first, renamed_key: 1 }).success).toBe(false); - }); - - it("every tool row the engine shows parses with the tool schema, in the order of its table, under a permission the host knows", () => { - for (const offering of shapes.tool_offering) { - for (const row of offering.tools) expect(toolInfoSchema.safeParse(row).error?.issues, JSON.stringify(row)).toBeUndefined(); - const names = (offering.tools as { name: string }[]).map((row) => row.name); - expect(names).toEqual((shapes.tool_offering[0]!.tools as { name: string }[]).map((row) => row.name)); - expect((offering.tools as { permission: string }[]).every((row) => PERMISSIONS.includes(row.permission as never))).toBe(true); - } - }); - - it("what the engine says of the MCP servers a config declares parses with the host's schemas: their tools under `mcp.`, their states", () => { - expect(shapes.mcp.tools.length).toBeGreaterThan(0); - for (const row of shapes.mcp.tools) expect(toolInfoSchema.safeParse(row).error?.issues, JSON.stringify(row)).toBeUndefined(); - expect(new Set((shapes.mcp.tools as { permission: string }[]).map((row) => row.permission))).toEqual(new Set(["mcp.tools"])); - for (const status of shapes.mcp.mcp_servers) expect(mcpServerStatusSchema.safeParse(status).error?.issues, JSON.stringify(status)).toBeUndefined(); - expect((shapes.mcp.mcp_servers as { name: string; state: string }[]).map((status) => [status.name, status.state])).toEqual([["keyed", "failed"], ["tools", "connected"]]); - expect(toolInfoSchema.safeParse({ ...(shapes.mcp.tools[0] as object), permission: "mcp.Not_A_Server" }).success).toBe(false); - }); - - it("the fake guest holds the engine's tools to the same permissions, and offers what the engine offers for the same config", async () => { - const engineRows = new Map((shapes.tool_offering[0]!.tools as { name: string; permission: string }[]).map((row) => [row.name, row.permission])); - for (const offering of shapes.tool_offering) { - const guest = new FakeGuest("token-for-shapes"); - guest.running = true; - guest.config = configFor(offering); - const { tools } = await guest.listTools(); - expect(tools.length).toBeGreaterThan(0); - for (const tool of tools) { - expect(engineRows.get(tool.name), `the engine has no tool ${tool.name}`).toBe(tool.permission); - expect(tool.offered, `${tool.name} with ${JSON.stringify(offering.permissions)}`).toBe(offering.offered.includes(tool.name)); - } - } - }); -}); diff --git a/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/host.sql b/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/host.sql deleted file mode 100644 index fab18cb4..00000000 --- a/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/host.sql +++ /dev/null @@ -1,768 +0,0 @@ --- --- PostgreSQL database dump --- - - --- Dumped from database version 18.4 --- Dumped by pg_dump version 18.4 - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET transaction_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: approvals; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.approvals ( - id text NOT NULL, - dot_id text NOT NULL, - task_id text, - tool text NOT NULL, - permission text NOT NULL, - arguments jsonb NOT NULL, - reason text NOT NULL, - status text NOT NULL, - note text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - resolved_at timestamp with time zone, - CONSTRAINT approvals_status_check CHECK ((status = ANY (ARRAY['pending'::text, 'approved'::text, 'rejected'::text, 'expired'::text]))) -); - - --- --- Name: channel_bindings; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.channel_bindings ( - id text NOT NULL, - dot_id text NOT NULL, - kind text NOT NULL, - enabled boolean DEFAULT true NOT NULL, - settings jsonb NOT NULL, - status text NOT NULL, - status_detail text, - account text, - event_cursor bigint NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT channel_bindings_event_cursor_check CHECK ((event_cursor >= 0)), - CONSTRAINT channel_bindings_kind_check CHECK ((kind = ANY (ARRAY['telegram'::text, 'whatsapp'::text]))), - CONSTRAINT channel_bindings_status_check CHECK ((status = ANY (ARRAY['connecting'::text, 'connected'::text, 'needs_relink'::text, 'error'::text]))) -); - - --- --- Name: channel_pairings; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.channel_pairings ( - binding_id text NOT NULL, - code_hash text NOT NULL, - expires_at timestamp with time zone NOT NULL, - consumed_at timestamp with time zone -); - - --- --- Name: channel_peers; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.channel_peers ( - binding_id text NOT NULL, - peer_id text NOT NULL, - chat_id text NOT NULL, - role text NOT NULL, - label text NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT channel_peers_role_check CHECK ((role = ANY (ARRAY['owner'::text, 'user'::text]))) -); - - --- --- Name: channel_prompts; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.channel_prompts ( - binding_id text NOT NULL, - approval_id text NOT NULL, - chat_id text NOT NULL, - ref text NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL -); - - --- --- Name: computers; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.computers ( - dot_id text NOT NULL, - vm_name text NOT NULL, - guest_port integer, - pid integer, - state text NOT NULL, - golden_image text, - runtime_image text, - token_enc bytea NOT NULL, - event_cursor bigint DEFAULT 0 NOT NULL, - last_active_at timestamp with time zone, - last_error text, - updated_at timestamp with time zone DEFAULT now() NOT NULL, - next_automation_at timestamp with time zone, - stop_reason text, - CONSTRAINT computers_guest_port_check CHECK (((guest_port >= 1) AND (guest_port <= 65535))), - CONSTRAINT computers_pid_check CHECK ((pid > 0)), - CONSTRAINT computers_state_check CHECK ((state = ANY (ARRAY['PROVISIONING'::text, 'STARTING'::text, 'RUNNING'::text, 'IDLE'::text, 'STOPPING'::text, 'STOPPED'::text, 'ERROR'::text, 'DELETING'::text]))), - CONSTRAINT computers_stop_reason_check CHECK ((stop_reason = ANY (ARRAY['idle'::text, 'user'::text, 'exited'::text]))) -); - - --- --- Name: dots; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.dots ( - id text NOT NULL, - name text NOT NULL, - config jsonb NOT NULL, - status text NOT NULL, - error text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - updated_at timestamp with time zone DEFAULT now() NOT NULL, - config_version integer DEFAULT 1 NOT NULL, - CONSTRAINT dots_status_check CHECK ((status = ANY (ARRAY['CREATING'::text, 'READY'::text, 'IDLE'::text, 'RUNNING'::text, 'WAITING_APPROVAL'::text, 'ERROR'::text, 'DISABLED'::text]))) -); - - --- --- Name: events; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.events ( - id bigint NOT NULL, - dot_id text NOT NULL, - type text NOT NULL, - data jsonb NOT NULL, - source text NOT NULL, - guest_seq bigint, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT events_check CHECK (((source = 'guest'::text) = (guest_seq IS NOT NULL))), - CONSTRAINT events_source_check CHECK ((source = ANY (ARRAY['host'::text, 'guest'::text]))) -); - - --- --- Name: events_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.events_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: events_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.events_id_seq OWNED BY public.events.id; - - --- --- Name: inbound_events; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.inbound_events ( - seq bigint NOT NULL, - id text NOT NULL, - dot_id text NOT NULL, - type text NOT NULL, - data jsonb NOT NULL, - ts text NOT NULL, - task_id text, - run_id text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - sent_at timestamp with time zone, - delivered_at timestamp with time zone, - dropped_at timestamp with time zone, - drop_reason text, - failures integer DEFAULT 0 NOT NULL, - last_error text, - retry_at timestamp with time zone, - CONSTRAINT inbound_events_type_check CHECK ((type = ANY (ARRAY['user.message'::text, 'task.created'::text, 'approval.received'::text, 'system.event'::text]))) -); - - --- --- Name: inbound_events_seq_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.inbound_events_seq_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: inbound_events_seq_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.inbound_events_seq_seq OWNED BY public.inbound_events.seq; - - --- --- Name: schema_migrations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.schema_migrations ( - version text NOT NULL, - applied_at timestamp with time zone DEFAULT now() NOT NULL -); - - --- --- Name: secrets; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.secrets ( - scope text NOT NULL, - name text NOT NULL, - value_enc bytea NOT NULL, - updated_at timestamp with time zone DEFAULT now() NOT NULL -); - - --- --- Name: task_runs; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.task_runs ( - id text NOT NULL, - task_id text NOT NULL, - started_at timestamp with time zone DEFAULT now() NOT NULL, - delivered_at timestamp with time zone, - finished_at timestamp with time zone, - outcome text -); - - --- --- Name: tasks; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tasks ( - id text NOT NULL, - dot_id text NOT NULL, - description text NOT NULL, - priority integer DEFAULT 0 NOT NULL, - status text NOT NULL, - created_at timestamp with time zone DEFAULT now() NOT NULL, - scheduled_at timestamp with time zone, - started_at timestamp with time zone, - finished_at timestamp with time zone, - summary text, - error text, - spent_usd double precision DEFAULT 0 NOT NULL, - CONSTRAINT tasks_spent_usd_check CHECK ((spent_usd >= (0)::double precision)), - CONSTRAINT tasks_status_check CHECK ((status = ANY (ARRAY['PENDING'::text, 'RUNNING'::text, 'WAITING_APPROVAL'::text, 'COMPLETED'::text, 'FAILED'::text, 'CANCELLED'::text]))) -); - - --- --- Name: events id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.events ALTER COLUMN id SET DEFAULT nextval('public.events_id_seq'::regclass); - - --- --- Name: inbound_events seq; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.inbound_events ALTER COLUMN seq SET DEFAULT nextval('public.inbound_events_seq_seq'::regclass); - - --- --- Data for Name: approvals; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.approvals VALUES ('apr_01m4ceepvn47ypbkcpd5cymdey', 'dot_01m4ceepkrt609r0tde6hm21hb', 'task_01m4ceeptfsmdeddevy4770sbk', 'browser_identity_delete', 'browser.identity.delete', '{"identity_id": "shop-abc123"}', 'the tool needs approval', 'approved', 'fine', '2026-10-08 00:26:18.038234+00', '2026-10-08 00:26:18.071102+00'); -INSERT INTO public.approvals VALUES ('apr_01m4ceepzq74326e3e6vrheqvj', 'dot_01m4ceepkrt609r0tde6hm21hb', 'task_01m4ceepz48cetk8s7k7zwkst5', 'browser_identity_delete', 'browser.identity.delete', '{"identity_id": "shop-abc123"}', 'the tool needs approval', 'pending', NULL, '2026-10-08 00:26:18.153524+00', NULL); - - --- --- Data for Name: channel_bindings; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.channel_bindings VALUES ('chb_upgrade', 'dot_01m4ceepkrt609r0tde6hm21hb', 'telegram', true, '{"approvals": true, "notify_tasks": true, "show_arguments": false}', 'connecting', NULL, 'fare_watch_bot', 0, '2026-10-08 00:26:18.181416+00'); - - --- --- Data for Name: channel_pairings; Type: TABLE DATA; Schema: public; Owner: - --- - - - --- --- Data for Name: channel_peers; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.channel_peers VALUES ('chb_upgrade', '4242', '4242', 'owner', 'Federico', '2026-10-08 00:26:18.187194+00'); - - --- --- Data for Name: channel_prompts; Type: TABLE DATA; Schema: public; Owner: - --- - - - --- --- Data for Name: computers; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.computers VALUES ('dot_01m4ceepkrt609r0tde6hm21hb', 'invisible-dot-dot_01m4ceepkrt609r0tde6hm21hb', 47000, 9000, 'RUNNING', 'images/golden-test.qcow2', 'images/runtime-test.iso', '\xd8f1c54703e75012cfac1404e670ebfdb057db12ea08404cd0e3b7367c02826ead80d0e36069ab2c190ee026c9ef5059590e1c32c10d787db872b944b7da832b635e4b9117ced9', 16, '2026-10-07 09:00:00+00', NULL, '2026-10-08 00:26:18.181416+00', '2026-10-09 00:23:53.167+00', NULL); -INSERT INTO public.computers VALUES ('dot_01m4ceeq1d5fgv96gmxs71ht30', 'invisible-dot-dot_01m4ceeq1d5fgv96gmxs71ht30', NULL, NULL, 'STOPPED', 'images/golden-test.qcow2', 'images/runtime-test.iso', '\x292befaaec6513a1a36ee6a6efa250c5eaba66e80bc9c2e7bca66bf26f3ece3c52f63b6c00d9eaec7a44d828176b1994b779f5cc635738a95529d12917459e3b65ed4a130f74d4', 1, '2026-10-07 09:00:00+00', NULL, '2026-10-08 00:26:18.281007+00', NULL, 'user'); - - --- --- Data for Name: dots; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.dots VALUES ('dot_01m4ceepkrt609r0tde6hm21hb', 'fare-watch', '{"name": "fare-watch", "model": {"id": "z-ai/glm-5.3-flash", "provider": "openrouter"}, "limits": {"context_tokens": 32000, "max_steps_per_task": 60, "max_cost_per_task_usd": 1}, "models": {}, "computer": {"cpu": 2, "disk": "40gb", "memory": "4gb", "idle_timeout": "15m"}, "permissions": {"files.write": "ask"}}', 'WAITING_APPROVAL', NULL, '2026-10-08 00:26:17.77945+00', '2026-10-08 00:26:18.145257+00', 3); -INSERT INTO public.dots VALUES ('dot_01m4ceeq1d5fgv96gmxs71ht30', 'minimal-dot', '{"name": "minimal-dot", "model": {"id": "z-ai/glm-5.3-flash", "provider": "openrouter"}, "limits": {"context_tokens": 32000, "max_steps_per_task": 60, "max_cost_per_task_usd": 1}, "models": {}, "computer": {"cpu": 2, "disk": "40gb", "memory": "4gb", "idle_timeout": "15m"}, "permissions": {"files.write": "ask"}}', 'IDLE', NULL, '2026-10-08 00:26:18.190622+00', '2026-10-08 00:26:18.281007+00', 1); - - --- --- Data for Name: events; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.events VALUES (1, 'dot_01m4ceepkrt609r0tde6hm21hb', 'dot.created', '{"name": "fare-watch"}', 'host', NULL, '2026-10-08 00:26:17.77945+00'); -INSERT INTO public.events VALUES (2, 'dot_01m4ceepkrt609r0tde6hm21hb', 'computer.state', '{"state": "PROVISIONING"}', 'host', NULL, '2026-10-08 00:26:17.77945+00'); -INSERT INTO public.events VALUES (3, 'dot_01m4ceepkrt609r0tde6hm21hb', 'computer.state', '{"state": "STARTING"}', 'host', NULL, '2026-10-08 00:26:17.815323+00'); -INSERT INTO public.events VALUES (4, 'dot_01m4ceepkrt609r0tde6hm21hb', 'computer.state', '{"state": "RUNNING"}', 'host', NULL, '2026-10-08 00:26:17.823904+00'); -INSERT INTO public.events VALUES (5, 'dot_01m4ceepkrt609r0tde6hm21hb', 'computer.started', '{"guest_port": 47000, "runtime_image": "images/runtime-test.iso"}', 'host', NULL, '2026-10-08 00:26:17.823904+00'); -INSERT INTO public.events VALUES (6, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.started', '{"guest_ts": "2026-10-08T00:26:17.640Z", "guest_event_id": "evt_01m4ceepn88vyrgn8zp99tx0zz"}', 'guest', 1, '2026-10-08 00:26:17.862351+00'); -INSERT INTO public.events VALUES (7, 'dot_01m4ceepkrt609r0tde6hm21hb', 'user.message', '{"text": "Remember: my favourite colour is teal.", "message_id": "msg_01m4ceepq4w4wdyp8tvy7v060r"}', 'host', NULL, '2026-10-08 00:26:17.880657+00'); -INSERT INTO public.events VALUES (8, 'dot_01m4ceepkrt609r0tde6hm21hb', 'message.assistant', '{"text": "echo: Remember: my favourite colour is teal.", "guest_ts": "2026-10-08T00:26:17.720Z", "in_reply_to": "msg_01m4ceepq4w4wdyp8tvy7v060r", "guest_event_id": "evt_01m4ceepqrxs5240rvb8cmrtee"}', 'guest', 2, '2026-10-08 00:26:17.899743+00'); -INSERT INTO public.events VALUES (9, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceepr4pcpyejkrwmwszmvy", "priority": 0, "description": "List the workspace."}', 'host', NULL, '2026-10-08 00:26:17.910436+00'); -INSERT INTO public.events VALUES (10, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "THINKING", "guest_ts": "2026-10-08T00:26:17.763Z", "guest_event_id": "evt_01m4ceeps3b18qmjz7x3acqxr7"}', 'guest', 3, '2026-10-08 00:26:17.940112+00'); -INSERT INTO public.events VALUES (11, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.started', '{"task_id": "task_01m4ceepr4pcpyejkrwmwszmvy", "guest_ts": "2026-10-08T00:26:17.763Z", "guest_event_id": "evt_01m4ceeps31c9j93jpd8nb3gz9"}', 'guest', 4, '2026-10-08 00:26:17.948021+00'); -INSERT INTO public.events VALUES (12, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.completed', '{"summary": "done: List the workspace.", "task_id": "task_01m4ceepr4pcpyejkrwmwszmvy", "guest_ts": "2026-10-08T00:26:17.763Z", "guest_event_id": "evt_01m4ceeps3hawexcrf77xqs9wq"}', 'guest', 5, '2026-10-08 00:26:17.956503+00'); -INSERT INTO public.events VALUES (13, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "IDLE", "guest_ts": "2026-10-08T00:26:17.763Z", "guest_event_id": "evt_01m4ceeps3parat5eey42mqgsj"}', 'guest', 6, '2026-10-08 00:26:17.966985+00'); -INSERT INTO public.events VALUES (14, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceeptfsmdeddevy4770sbk", "priority": 0, "description": "Delete the old identity."}', 'host', NULL, '2026-10-08 00:26:17.981828+00'); -INSERT INTO public.events VALUES (15, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.started', '{"task_id": "task_01m4ceeptfsmdeddevy4770sbk", "guest_ts": "2026-10-08T00:26:17.845Z", "guest_event_id": "evt_01m4ceepvn3vzncer00rmzep10"}', 'guest', 7, '2026-10-08 00:26:18.018234+00'); -INSERT INTO public.events VALUES (16, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "WAITING_APPROVAL", "guest_ts": "2026-10-08T00:26:17.845Z", "guest_event_id": "evt_01m4ceepvnc1nwxjjf3q3w032b"}', 'guest', 8, '2026-10-08 00:26:18.029602+00'); -INSERT INTO public.events VALUES (17, 'dot_01m4ceepkrt609r0tde6hm21hb', 'approval.requested', '{"tool": "browser_identity_delete", "reason": "the tool needs approval", "task_id": "task_01m4ceeptfsmdeddevy4770sbk", "guest_ts": "2026-10-08T00:26:17.845Z", "arguments": {"identity_id": "shop-abc123"}, "permission": "browser.identity.delete", "approval_id": "apr_01m4ceepvn47ypbkcpd5cymdey", "guest_event_id": "evt_01m4ceepvnz1rg79k8y3p2hh5g"}', 'guest', 9, '2026-10-08 00:26:18.038234+00'); -INSERT INTO public.events VALUES (18, 'dot_01m4ceepkrt609r0tde6hm21hb', 'approval.resolved', '{"note": "fine", "always": true, "task_id": "task_01m4ceeptfsmdeddevy4770sbk", "decision": "approve", "approval_id": "apr_01m4ceepvn47ypbkcpd5cymdey"}', 'host', NULL, '2026-10-08 00:26:18.071102+00'); -INSERT INTO public.events VALUES (19, 'dot_01m4ceepkrt609r0tde6hm21hb', 'dot.updated', '{"name": "fare-watch"}', 'host', NULL, '2026-10-08 00:26:18.071102+00'); -INSERT INTO public.events VALUES (20, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "EXECUTING", "guest_ts": "2026-10-08T00:26:17.924Z", "guest_event_id": "evt_01m4ceepy4fbsgfqd96zgj6t4v"}', 'guest', 10, '2026-10-08 00:26:18.091455+00'); -INSERT INTO public.events VALUES (21, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.completed', '{"summary": "approval approved", "task_id": "task_01m4ceeptfsmdeddevy4770sbk", "guest_ts": "2026-10-08T00:26:17.924Z", "guest_event_id": "evt_01m4ceepy4ea0fjr9b6g6kpk29"}', 'guest', 11, '2026-10-08 00:26:18.100452+00'); -INSERT INTO public.events VALUES (22, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "IDLE", "guest_ts": "2026-10-08T00:26:17.924Z", "guest_event_id": "evt_01m4ceepy48vx98jjv03q60ajm"}', 'guest', 12, '2026-10-08 00:26:18.107693+00'); -INSERT INTO public.events VALUES (23, 'dot_01m4ceepkrt609r0tde6hm21hb', 'dot.updated', '{"name": "fare-watch"}', 'host', NULL, '2026-10-08 00:26:18.111019+00'); -INSERT INTO public.events VALUES (24, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceepz48cetk8s7k7zwkst5", "priority": 0, "description": "Delete the shop identity."}', 'host', NULL, '2026-10-08 00:26:18.121808+00'); -INSERT INTO public.events VALUES (25, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.started', '{"task_id": "task_01m4ceepz48cetk8s7k7zwkst5", "guest_ts": "2026-10-08T00:26:17.975Z", "guest_event_id": "evt_01m4ceepzqq05k889g7kweerrc"}', 'guest', 13, '2026-10-08 00:26:18.139836+00'); -INSERT INTO public.events VALUES (26, 'dot_01m4ceepkrt609r0tde6hm21hb', 'agent.state', '{"state": "WAITING_APPROVAL", "guest_ts": "2026-10-08T00:26:17.975Z", "guest_event_id": "evt_01m4ceepzqxj1pzcgx1zba0mcr"}', 'guest', 14, '2026-10-08 00:26:18.145257+00'); -INSERT INTO public.events VALUES (27, 'dot_01m4ceepkrt609r0tde6hm21hb', 'approval.requested', '{"tool": "browser_identity_delete", "reason": "the tool needs approval", "task_id": "task_01m4ceepz48cetk8s7k7zwkst5", "guest_ts": "2026-10-08T00:26:17.975Z", "arguments": {"identity_id": "shop-abc123"}, "permission": "browser.identity.delete", "approval_id": "apr_01m4ceepzq74326e3e6vrheqvj", "guest_event_id": "evt_01m4ceepzq7pb07ekz37zhskey"}', 'guest', 15, '2026-10-08 00:26:18.153524+00'); -INSERT INTO public.events VALUES (28, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceeq0s2zdfycr7vwnwy9s8", "priority": 0, "description": "Check the fares again."}', 'host', NULL, '2026-10-08 00:26:18.171462+00'); -INSERT INTO public.events VALUES (29, 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.cancelled', '{"task_id": "task_01m4ceeq0s2zdfycr7vwnwy9s8"}', 'host', NULL, '2026-10-08 00:26:18.176182+00'); -INSERT INTO public.events VALUES (30, 'dot_01m4ceepkrt609r0tde6hm21hb', 'automation.next_run', '{"guest_ts": "2026-10-08T00:26:18.019Z", "guest_event_id": "evt_01m4ceeq13g8b426wcn3432mbv", "next_run_at_ms": 1791505433167}', 'guest', 16, '2026-10-08 00:26:18.181416+00'); -INSERT INTO public.events VALUES (31, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'dot.created', '{"name": "minimal-dot"}', 'host', NULL, '2026-10-08 00:26:18.190622+00'); -INSERT INTO public.events VALUES (32, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.state', '{"state": "PROVISIONING"}', 'host', NULL, '2026-10-08 00:26:18.190622+00'); -INSERT INTO public.events VALUES (33, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.state', '{"state": "STARTING"}', 'host', NULL, '2026-10-08 00:26:18.203391+00'); -INSERT INTO public.events VALUES (34, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.state', '{"state": "RUNNING"}', 'host', NULL, '2026-10-08 00:26:18.208314+00'); -INSERT INTO public.events VALUES (35, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.started', '{"guest_port": 47001, "runtime_image": "images/runtime-test.iso"}', 'host', NULL, '2026-10-08 00:26:18.208314+00'); -INSERT INTO public.events VALUES (36, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'agent.started', '{"guest_ts": "2026-10-08T00:26:18.048Z", "guest_event_id": "evt_01m4ceeq206y59sjefjm80tgar"}', 'guest', 1, '2026-10-08 00:26:18.237511+00'); -INSERT INTO public.events VALUES (37, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.state', '{"state": "STOPPING"}', 'host', NULL, '2026-10-08 00:26:18.260481+00'); -INSERT INTO public.events VALUES (38, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.state', '{"state": "STOPPED"}', 'host', NULL, '2026-10-08 00:26:18.281007+00'); -INSERT INTO public.events VALUES (39, 'dot_01m4ceeq1d5fgv96gmxs71ht30', 'computer.stopped', '{"forced": false, "reason": "user"}', 'host', NULL, '2026-10-08 00:26:18.281007+00'); - - --- --- Data for Name: inbound_events; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.inbound_events VALUES (1, 'msg_01m4ceepq4w4wdyp8tvy7v060r', 'dot_01m4ceepkrt609r0tde6hm21hb', 'user.message', '{"text": "Remember: my favourite colour is teal."}', '2026-10-07T09:00:00.000Z', NULL, NULL, '2026-10-08 00:26:17.880657+00', '2026-10-08 00:26:17.892461+00', '2026-10-08 00:26:17.899719+00', NULL, NULL, 0, NULL, NULL); -INSERT INTO public.inbound_events VALUES (2, 'evt_01m4ceeprmq0dfftt3ejd0v7qc', 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceepr4pcpyejkrwmwszmvy", "priority": 0, "description": "List the workspace."}', '2026-10-07T09:00:00.000Z', 'task_01m4ceepr4pcpyejkrwmwszmvy', 'run_01m4ceeprj3zwtyjmrn8wpefzz', '2026-10-08 00:26:17.918409+00', '2026-10-08 00:26:17.933733+00', '2026-10-08 00:26:17.940076+00', NULL, NULL, 0, NULL, NULL); -INSERT INTO public.inbound_events VALUES (3, 'evt_01m4ceepv0asgrb9zz7j54fjsp', 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceeptfsmdeddevy4770sbk", "priority": 0, "description": "Delete the old identity."}', '2026-10-07T09:00:00.000Z', 'task_01m4ceeptfsmdeddevy4770sbk', 'run_01m4ceeptymc59t9c34rmqzq8v', '2026-10-08 00:26:17.989407+00', '2026-10-08 00:26:18.010516+00', '2026-10-08 00:26:18.018374+00', NULL, NULL, 0, NULL, NULL); -INSERT INTO public.inbound_events VALUES (4, 'evt_01m4ceepxe33m1qnqvsfbzvkvc', 'dot_01m4ceepkrt609r0tde6hm21hb', 'approval.received', '{"note": "fine", "decision": "approve", "approval_id": "apr_01m4ceepvn47ypbkcpd5cymdey"}', '2026-10-07T09:00:00.000Z', NULL, NULL, '2026-10-08 00:26:18.071102+00', '2026-10-08 00:26:18.087155+00', '2026-10-08 00:26:18.091459+00', NULL, NULL, 0, NULL, NULL); -INSERT INTO public.inbound_events VALUES (5, 'evt_01m4ceepzer7yzzxfn4t1hwway', 'dot_01m4ceepkrt609r0tde6hm21hb', 'task.created', '{"task_id": "task_01m4ceepz48cetk8s7k7zwkst5", "priority": 0, "description": "Delete the shop identity."}', '2026-10-07T09:00:00.000Z', 'task_01m4ceepz48cetk8s7k7zwkst5', 'run_01m4ceepzd75vf6eyq6s83tvxf', '2026-10-08 00:26:18.126436+00', '2026-10-08 00:26:18.135244+00', '2026-10-08 00:26:18.139817+00', NULL, NULL, 0, NULL, NULL); - - --- --- Data for Name: schema_migrations; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.schema_migrations VALUES ('0001_initial', '2026-10-08 00:26:17.623866+00'); -INSERT INTO public.schema_migrations VALUES ('0002_inbound_events', '2026-10-08 00:26:17.666723+00'); -INSERT INTO public.schema_migrations VALUES ('0003_task_spend', '2026-10-08 00:26:17.680464+00'); -INSERT INTO public.schema_migrations VALUES ('0004_channels', '2026-10-08 00:26:17.688232+00'); -INSERT INTO public.schema_migrations VALUES ('0005_channel_prompts', '2026-10-08 00:26:17.707123+00'); -INSERT INTO public.schema_migrations VALUES ('0006_events_task', '2026-10-08 00:26:17.718165+00'); -INSERT INTO public.schema_migrations VALUES ('0007_dot_config_version', '2026-10-08 00:26:17.724644+00'); -INSERT INTO public.schema_migrations VALUES ('0008_computer_next_automation', '2026-10-08 00:26:17.730628+00'); -INSERT INTO public.schema_migrations VALUES ('0009_dot_keeps_its_memory', '2026-10-08 00:26:17.737384+00'); -INSERT INTO public.schema_migrations VALUES ('0010_dot_has_no_goal', '2026-10-08 00:26:17.745491+00'); -INSERT INTO public.schema_migrations VALUES ('0011_dot_has_no_browser_settings', '2026-10-08 00:26:17.753326+00'); - - --- --- Data for Name: secrets; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.secrets VALUES ('global', 'openrouter_api_key', '\x83ecec4851c227f6a0848b8123934629df0b90a2a63abc4b38d243360f1593e3604f9658463bada064baf61238436101953919de8d0551c0946b3f7cb6adbefbbf3da3', '2026-10-08 00:26:17.762727+00'); -INSERT INTO public.secrets VALUES ('dot_01m4ceepkrt609r0tde6hm21hb', 'telegram_bot_token', '\xcb8b7dc5772170ab2190e83956526daf3705cd174d2c1d80cffa2d1dcd5709736fbde9a872341e083d0586749322d18eeede5662b8b012c46505bd92aba13e6a8417a8', '2026-10-08 00:26:18.184962+00'); - - --- --- Data for Name: task_runs; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.task_runs VALUES ('run_01m4ceeprj3zwtyjmrn8wpefzz', 'task_01m4ceepr4pcpyejkrwmwszmvy', '2026-10-08 00:26:17.918409+00', '2026-10-08 00:26:17.942498+00', '2026-10-08 00:26:17.956503+00', 'completed'); -INSERT INTO public.task_runs VALUES ('run_01m4ceeptymc59t9c34rmqzq8v', 'task_01m4ceeptfsmdeddevy4770sbk', '2026-10-08 00:26:17.989407+00', '2026-10-08 00:26:18.023517+00', '2026-10-08 00:26:18.100452+00', 'completed'); -INSERT INTO public.task_runs VALUES ('run_01m4ceepzd75vf6eyq6s83tvxf', 'task_01m4ceepz48cetk8s7k7zwkst5', '2026-10-08 00:26:18.126436+00', '2026-10-08 00:26:18.14187+00', NULL, NULL); - - --- --- Data for Name: tasks; Type: TABLE DATA; Schema: public; Owner: - --- - -INSERT INTO public.tasks VALUES ('task_01m4ceepr4pcpyejkrwmwszmvy', 'dot_01m4ceepkrt609r0tde6hm21hb', 'List the workspace.', 0, 'COMPLETED', '2026-10-08 00:26:17.910436+00', NULL, '2026-10-08 00:26:17.918409+00', '2026-10-08 00:26:17.956503+00', 'done: List the workspace.', NULL, 0); -INSERT INTO public.tasks VALUES ('task_01m4ceeptfsmdeddevy4770sbk', 'dot_01m4ceepkrt609r0tde6hm21hb', 'Delete the old identity.', 0, 'COMPLETED', '2026-10-08 00:26:17.981828+00', NULL, '2026-10-08 00:26:17.989407+00', '2026-10-08 00:26:18.100452+00', 'approval approved', NULL, 0); -INSERT INTO public.tasks VALUES ('task_01m4ceepz48cetk8s7k7zwkst5', 'dot_01m4ceepkrt609r0tde6hm21hb', 'Delete the shop identity.', 0, 'WAITING_APPROVAL', '2026-10-08 00:26:18.121808+00', NULL, '2026-10-08 00:26:18.126436+00', NULL, NULL, NULL, 0); -INSERT INTO public.tasks VALUES ('task_01m4ceeq0s2zdfycr7vwnwy9s8', 'dot_01m4ceepkrt609r0tde6hm21hb', 'Check the fares again.', 0, 'CANCELLED', '2026-10-08 00:26:18.171462+00', NULL, NULL, '2026-10-08 00:26:18.176182+00', NULL, 'cancelled by the user', 0); - - --- --- Name: events_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.events_id_seq', 39, true); - - --- --- Name: inbound_events_seq_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.inbound_events_seq_seq', 5, true); - - --- --- Name: approvals approvals_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT approvals_pkey PRIMARY KEY (id); - - --- --- Name: channel_bindings channel_bindings_dot_id_kind_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_bindings - ADD CONSTRAINT channel_bindings_dot_id_kind_key UNIQUE (dot_id, kind); - - --- --- Name: channel_bindings channel_bindings_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_bindings - ADD CONSTRAINT channel_bindings_pkey PRIMARY KEY (id); - - --- --- Name: channel_pairings channel_pairings_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_pairings - ADD CONSTRAINT channel_pairings_pkey PRIMARY KEY (binding_id, code_hash); - - --- --- Name: channel_peers channel_peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_peers - ADD CONSTRAINT channel_peers_pkey PRIMARY KEY (binding_id, peer_id); - - --- --- Name: channel_prompts channel_prompts_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_prompts - ADD CONSTRAINT channel_prompts_pkey PRIMARY KEY (binding_id, approval_id, chat_id); - - --- --- Name: computers computers_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.computers - ADD CONSTRAINT computers_pkey PRIMARY KEY (dot_id); - - --- --- Name: dots dots_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dots - ADD CONSTRAINT dots_name_key UNIQUE (name); - - --- --- Name: dots dots_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dots - ADD CONSTRAINT dots_pkey PRIMARY KEY (id); - - --- --- Name: events events_dot_id_guest_seq_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.events - ADD CONSTRAINT events_dot_id_guest_seq_key UNIQUE (dot_id, guest_seq); - - --- --- Name: events events_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.events - ADD CONSTRAINT events_pkey PRIMARY KEY (id); - - --- --- Name: inbound_events inbound_events_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.inbound_events - ADD CONSTRAINT inbound_events_id_key UNIQUE (id); - - --- --- Name: inbound_events inbound_events_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.inbound_events - ADD CONSTRAINT inbound_events_pkey PRIMARY KEY (seq); - - --- --- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.schema_migrations - ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); - - --- --- Name: secrets secrets_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.secrets - ADD CONSTRAINT secrets_pkey PRIMARY KEY (scope, name); - - --- --- Name: task_runs task_runs_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.task_runs - ADD CONSTRAINT task_runs_pkey PRIMARY KEY (id); - - --- --- Name: tasks tasks_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT tasks_pkey PRIMARY KEY (id); - - --- --- Name: approvals_status_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX approvals_status_idx ON public.approvals USING btree (status, created_at); - - --- --- Name: channel_bindings_account_key; Type: INDEX; Schema: public; Owner: - --- - -CREATE UNIQUE INDEX channel_bindings_account_key ON public.channel_bindings USING btree (account) WHERE ((kind = 'telegram'::text) AND (account IS NOT NULL)); - - --- --- Name: channel_peers_chat_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX channel_peers_chat_idx ON public.channel_peers USING btree (binding_id, chat_id); - - --- --- Name: channel_prompts_approval_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX channel_prompts_approval_idx ON public.channel_prompts USING btree (approval_id); - - --- --- Name: events_dot_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX events_dot_idx ON public.events USING btree (dot_id, id); - - --- --- Name: events_task_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX events_task_idx ON public.events USING btree (dot_id, ((data ->> 'task_id'::text)), id) WHERE ((data ->> 'task_id'::text) IS NOT NULL); - - --- --- Name: events_user_message_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX events_user_message_idx ON public.events USING btree (dot_id, ((data ->> 'message_id'::text))) WHERE (type = 'user.message'::text); - - --- --- Name: events_user_message_origin_key; Type: INDEX; Schema: public; Owner: - --- - -CREATE UNIQUE INDEX events_user_message_origin_key ON public.events USING btree (dot_id, (((data -> 'origin'::text) ->> 'binding_id'::text)), (((data -> 'origin'::text) ->> 'external_id'::text))) WHERE ((type = 'user.message'::text) AND ((data -> 'origin'::text) IS NOT NULL)); - - --- --- Name: inbound_events_pending_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX inbound_events_pending_idx ON public.inbound_events USING btree (dot_id, seq) WHERE ((delivered_at IS NULL) AND (dropped_at IS NULL)); - - --- --- Name: task_runs_task_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX task_runs_task_idx ON public.task_runs USING btree (task_id); - - --- --- Name: tasks_dot_status_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tasks_dot_status_idx ON public.tasks USING btree (dot_id, status); - - --- --- Name: tasks_pending_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tasks_pending_idx ON public.tasks USING btree (priority DESC, created_at, id) WHERE (status = 'PENDING'::text); - - --- --- Name: approvals approvals_dot_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.approvals - ADD CONSTRAINT approvals_dot_id_fkey FOREIGN KEY (dot_id) REFERENCES public.dots(id) ON DELETE CASCADE; - - --- --- Name: channel_bindings channel_bindings_dot_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_bindings - ADD CONSTRAINT channel_bindings_dot_id_fkey FOREIGN KEY (dot_id) REFERENCES public.dots(id) ON DELETE CASCADE; - - --- --- Name: channel_pairings channel_pairings_binding_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_pairings - ADD CONSTRAINT channel_pairings_binding_id_fkey FOREIGN KEY (binding_id) REFERENCES public.channel_bindings(id) ON DELETE CASCADE; - - --- --- Name: channel_peers channel_peers_binding_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_peers - ADD CONSTRAINT channel_peers_binding_id_fkey FOREIGN KEY (binding_id) REFERENCES public.channel_bindings(id) ON DELETE CASCADE; - - --- --- Name: channel_prompts channel_prompts_approval_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_prompts - ADD CONSTRAINT channel_prompts_approval_id_fkey FOREIGN KEY (approval_id) REFERENCES public.approvals(id) ON DELETE CASCADE; - - --- --- Name: channel_prompts channel_prompts_binding_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.channel_prompts - ADD CONSTRAINT channel_prompts_binding_id_fkey FOREIGN KEY (binding_id) REFERENCES public.channel_bindings(id) ON DELETE CASCADE; - - --- --- Name: computers computers_dot_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.computers - ADD CONSTRAINT computers_dot_id_fkey FOREIGN KEY (dot_id) REFERENCES public.dots(id) ON DELETE CASCADE; - - --- --- Name: inbound_events inbound_events_dot_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.inbound_events - ADD CONSTRAINT inbound_events_dot_id_fkey FOREIGN KEY (dot_id) REFERENCES public.dots(id) ON DELETE CASCADE; - - --- --- Name: task_runs task_runs_task_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.task_runs - ADD CONSTRAINT task_runs_task_id_fkey FOREIGN KEY (task_id) REFERENCES public.tasks(id) ON DELETE CASCADE; - - --- --- Name: tasks tasks_dot_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tasks - ADD CONSTRAINT tasks_dot_id_fkey FOREIGN KEY (dot_id) REFERENCES public.dots(id) ON DELETE CASCADE; - - --- --- PostgreSQL database dump complete --- - - diff --git a/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/master.key b/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/master.key deleted file mode 100644 index a59389d8..00000000 --- a/apps/scheduler/test/fixtures/upgrade/golden-b326f2a1d4fe/master.key +++ /dev/null @@ -1 +0,0 @@ -f38457d1f14a7ea3ee7119f7dc463369ae540f0ba0036e1001a40dba8a997e56 diff --git a/apps/scheduler/test/fixtures/upgrade/make-host-state.ts b/apps/scheduler/test/fixtures/upgrade/make-host-state.ts deleted file mode 100644 index 84088a85..00000000 --- a/apps/scheduler/test/fixtures/upgrade/make-host-state.ts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Writes the control plane's database as a release leaves it, for test/upgrade.test.ts. - * - * Run it from the root of a checkout of the release (a worktree of its tag), against a PostgreSQL server - * (it makes a database of its own there and prints its name), then dump that database, leaving out psql's - * meta-commands and the dump's reset of search_path, which would outlive the load on PGlite: - * - * DATABASE_URL=postgres://... npx tsx fixtures/upgrade//master.key - * pg_dump --inserts --no-owner --no-privileges | grep -v -e '^\\' -e "set_config('search_path'" \ - * > fixtures/upgrade//host.sql - * - * It drives that release's scheduler, with a fake computer, through what a person's install holds: two - * Dots (one stopped), a chat answered, a completed task, a task waiting for an approval, an approval - * answered with "always", a cancelled task, an automation, a Telegram binding with its token, and the - * OpenRouter key. The master key it writes is a test key: it only opens the secrets of the dump. - */ -import { randomBytes } from "node:crypto"; -import { writeFile } from "node:fs/promises"; -import { Database } from "@invisible-dots/database"; -import { createScratchPostgres } from "@invisible-dots/database/testing"; -import { Scheduler } from "../../../src/index.js"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "../../../src/testing.js"; - -const [keyFile] = process.argv.slice(2); -if (!keyFile) throw new Error("usage: make-host-state.ts "); -const masterKey = randomBytes(32); -const { url } = await createScratchPostgres(); -const db = await Database.open({ target: { kind: "pg", url }, masterKey, poolSize: 5 }); -await db.migrate(); -const driver = new FakeDriver(); -const scheduler = new Scheduler({ - db, - driver, - clock: new ManualClock(new Date("2026-10-07T09:00:00.000Z")), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0, maxDeliveryAttempts: 2 }, -}); -await scheduler.setOpenRouterKey("sk-or-v1-upgrade-fixture-not-a-real-key"); - -const yaml = (name: string) => - `name: ${name}\nmodel:\n provider: openrouter\n id: z-ai/glm-5.3-flash\ncomputer:\n idle_timeout: 15m\npermissions:\n files.write: ask\n`; -const ready = async (name: string) => { - const dot = await scheduler.createDot(yaml(name)); - await waitUntilSettledReady(scheduler, driver, dot.id, name); - return dot; -}; - -const watcher = await ready("fare-watch"); -const guest = driver.guestOf(watcher.id); - -// A chat answered, and a completed task. -await scheduler.sendMessage(watcher.id, "Remember: my favourite colour is teal."); -const done = await scheduler.createTask(watcher.id, { description: "List the workspace." }); -await waitFor(async () => (await db.tasks.get(done.id))?.status === "COMPLETED", "task completed"); - -// An approval answered with "always", and a task that waits for an approval when the release is upgraded. -const original = guest.onInbound; -guest.onInbound = (event, g) => { - if (event.type !== "task.created") return original(event, g); - g.emit("task.started", { task_id: event.data.task_id }); - g.requestApproval(event.data.task_id); -}; -const allowed = await scheduler.createTask(watcher.id, { description: "Delete the old identity." }); -const always = await waitFor(async () => (await scheduler.listApprovals("pending")).find((a) => a.task_id === allowed.id), "first approval"); -await scheduler.resolveApproval(always.id, "approve", { always: true, note: "fine" }); -await waitFor(async () => (await db.tasks.get(allowed.id))?.status === "COMPLETED", "approved task completed"); -await scheduler.updateDot(watcher.id, yaml("fare-watch")); -const waiting = await scheduler.createTask(watcher.id, { description: "Delete the shop identity." }); -await waitFor(async () => (await db.tasks.get(waiting.id))?.status === "WAITING_APPROVAL", "task waiting"); - -// A cancelled task, queued behind the waiting one. -const cancelled = await scheduler.createTask(watcher.id, { description: "Check the fares again." }); -await scheduler.cancelTask(cancelled.id); - -// An automation the Dot reported. -guest.putAutomation({ - id: "job_water", - name: "water the plants", - enabled: true, - schedule: { kind: "every", every_ms: 86_400_000 }, - message: "Water the plants", - next_run_at_ms: 1_791_505_433_167, - last_run_at_ms: null, - last_status: null, - last_error: null, - delete_after_run: false, - created_at_ms: 1_791_419_033_167, -}); - -// A Telegram binding with its token and a paired owner. -const binding = await db.channels.createBinding({ - id: "chb_upgrade", - dotId: watcher.id, - kind: "telegram", - settings: { approvals: true, notify_tasks: true, show_arguments: false }, - eventCursor: 0, - account: "fare_watch_bot", -}); -await db.secrets.put(watcher.id, "telegram_bot_token", "123456:upgrade-fixture-not-a-real-token"); -await db.channels.upsertPeer({ bindingId: binding.id, peerId: "4242", chatId: "4242", role: "owner", label: "Federico" }); - -// A second Dot, stopped. -const minimal = await ready("minimal-dot"); -await scheduler.stopComputer(minimal.id); -await waitFor(async () => (await db.computers.get(minimal.id))?.state === "STOPPED", "computer stopped"); - -await scheduler.settle(); -await scheduler.close(); -await db.close(); -await writeFile(keyFile, masterKey.toString("hex") + "\n"); -console.log(new URL(url).pathname.slice(1)); diff --git a/apps/scheduler/test/host-shapes.test.ts b/apps/scheduler/test/host-shapes.test.ts deleted file mode 100644 index cbf56cfb..00000000 --- a/apps/scheduler/test/host-shapes.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -/** - * What the host sends the engine: the events (`POST /events`) and the Dot's config (`PUT /config`), pinned in a file - * the engine checks. They are not written by hand here: a real scheduler runs a Dot against the fake guest, and what - * its own writers send is what the guest received. The engine is Python and parses them with its own parsers - * (`invisible_engine_dots/tests/dots/test_host_wire_shapes.py`), so neither side can move a key, or a rule of what is - * accepted, without a suite failing. The other direction, what the engine writes, is `engine-shapes.test.ts`. - * - * A key renamed or added here fails this test until the file is written again - * (`UPDATE_HOST_WIRE_SHAPES=1 npx vitest run apps/scheduler/test/host-shapes.test.ts`), and then fails the engine's - * test until its parser says the same. - */ -import { readFileSync, writeFileSync } from "node:fs"; -import { fileURLToPath } from "node:url"; -import { createTestDatabase, type TestDatabase } from "@invisible-dots/database/testing"; -import { INBOUND_EVENT_TYPES } from "@invisible-dots/shared"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { Scheduler } from "../src/index.js"; -import { FakeDriver, ManualClock, waitFor, waitUntilSettledReady } from "../src/testing.js"; - -const FIXTURE = fileURLToPath(new URL("../../../invisible_engine_dots/tests/dots/host_wire_shapes.json", import.meta.url)); - -const MINIMAL = "name: shapes-min\nmodel:\n provider: openrouter\n id: test/model\n"; -const FULL = `name: shapes-full -instructions: Answer in one line. -model: - provider: openrouter - id: test/model -models: - summary: test/small -computer: - cpu: 4 - memory: 6G - disk: 30G - idle_timeout: 5m -permissions: - computer.exec: deny - files.write: ask - mcp.time: allow -mcp_servers: - time: - command: uvx - args: [mcp-server-time, --local-timezone, Europe/Rome] - env: - LOG_LEVEL: warning - secrets: [TIME_TOKEN] - search: - url: https://search.example/mcp - headers: - X-Client: dots - secrets: [Authorization] - timeout_s: 30 -limits: - max_steps_per_task: 30 - max_cost_per_task_usd: 2.5 -`; - -describe("what the host sends the engine", () => { - let t: TestDatabase; - let scheduler: Scheduler; - let written: Awaited>; - const driver = new FakeDriver(); - - beforeAll(async () => { - t = await createTestDatabase("pglite"); - await t.db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - scheduler = new Scheduler({ - db: t.db, - driver, - clock: new ManualClock(), - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0, maxDeliveryAttempts: 2 }, - }); - written = await shapes(); - }); - - afterAll(async () => { - await scheduler?.close(); - await t?.drop(); - }); - - async function readyDot(yaml: string, name: string) { - const dot = await scheduler.createDot(yaml); - await waitUntilSettledReady(scheduler, driver, dot.id, name); - return dot; - } - - async function shapes() { - const configs = []; - for (const [name, yaml] of [["shapes-min", MINIMAL], ["shapes-full", FULL]] as const) { - const dot = await readyDot(yaml, name); - configs.push({ name, config: structuredClone(driver.guestOf(dot.id).config) }); - } - // The secrets of the full config's servers, set as the person sets them: the push carries them with the key. - const full = await scheduler.requireDot("shapes-full"); - await scheduler.setMcpSecret(full.id, "time", "TIME_TOKEN", "tt-1"); - await scheduler.setMcpSecret(full.id, "search", "Authorization", "Bearer sk-search-1"); - const fullGuest = driver.guestOf(full.id); - const secrets_requests = [{ openrouter_api_key: fullGuest.openrouterKey, mcp_secrets: structuredClone(fullGuest.mcpSecrets) }]; - - const dot = await readyDot("name: shapes-talk\nmodel:\n provider: openrouter\n id: test/model\n", "shapes-talk"); - const guest = driver.guestOf(dot.id); - // A quiet guest: it takes a task up and says nothing else, so nothing but what the host sends is in `inbound`. - guest.onInbound = (event, g) => { - if (event.type === "task.created") g.emit("task.started", { task_id: event.data.task_id }); - }; - await scheduler.sendMessage(dot.id, "what is the cheapest fare to Lisbon?"); - const task = await scheduler.createTask(dot.id, { description: "compare the fares", priority: 5 }); - await waitFor(async () => (await scheduler.getTask(task.id)).status === "RUNNING", "the task running"); - const plain = await scheduler.createTask(dot.id, { description: "a task with the default priority" }); - await scheduler.cancelTask(task.id); - await waitFor(() => guest.inbound.some((event) => event.type === "system.event"), "the cancel reaching the guest"); - const approved = guest.requestApproval(undefined); - const rejected = guest.requestApproval(undefined); - await waitFor(async () => (await scheduler.listApprovals("pending")).filter((a) => a.dot_id === dot.id).length === 2, "two pending approvals"); - await scheduler.resolveApproval(approved, "approve", { note: "go on" }); - await scheduler.resolveApproval(rejected, "reject"); - await waitFor(() => guest.inbound.filter((event) => event.type === "approval.received").length === 2, "both answers reaching the guest"); - expect(plain.priority).toBe(0); - - // The id and the time of an event are the host's own and vary: the engine's parser takes any, and the file is about - // the data. The ids of tasks and approvals, drawn at random, are named in the order they appear. - const named = new Map([[task.id, "task-1"], [plain.id, "task-2"], [approved, "approval-1"], [rejected, "approval-2"]]); - const inbound_events = (JSON.parse( - [...named].reduce((text, [id, name]) => text.replaceAll(id, name), JSON.stringify(guest.inbound.map((event) => ({ type: event.type, data: event.data })))), - ) as { type: string; data: Record }[]); - return { runtime_configs: configs, secrets_requests, inbound_events }; - } - - it("writes what the host's own writers sent, as the file the engine's parsers check", async () => { - const text = `${JSON.stringify(written, null, 2)}\n`; - if (process.env.UPDATE_HOST_WIRE_SHAPES === "1") writeFileSync(FIXTURE, text); - expect(JSON.parse(readFileSync(FIXTURE, "utf8"))).toEqual(JSON.parse(text)); - }); - - it("holds one event of each type the host sends, the optional note of an answer with and without it, and a config with every section set", async () => { - expect([...new Set(written.inbound_events.map((event) => event.type))].sort()).toEqual([...INBOUND_EVENT_TYPES].sort()); - const answers = written.inbound_events.filter((event) => event.type === "approval.received").map((event) => Object.keys(event.data).sort().join()); - expect(answers).toEqual(["approval_id,decision,note", "approval_id,decision"]); - const priorities = written.inbound_events.filter((event) => event.type === "task.created").map((event) => event.data.priority); - expect(priorities).toEqual([5, 0]); - const [minimal, full] = written.runtime_configs.map((entry) => entry.config as Record); - expect(Object.keys(full!).sort()).toEqual(["instructions", "limits", "mcp_servers", "model", "models", "name", "permissions"]); - expect(Object.keys(full!.mcp_servers as object).sort()).toEqual(["search", "time"]); - expect(written.secrets_requests[0]!.mcp_secrets).toEqual({ time: { TIME_TOKEN: "tt-1" }, search: { Authorization: "Bearer sk-search-1" } }); - expect(Object.keys(minimal!)).not.toContain("instructions"); - expect(minimal).not.toHaveProperty("computer"); - }); -}); diff --git a/apps/scheduler/test/scheduler.test.ts b/apps/scheduler/test/scheduler.test.ts deleted file mode 100644 index d458e9a5..00000000 --- a/apps/scheduler/test/scheduler.test.ts +++ /dev/null @@ -1,1506 +0,0 @@ -import type { Database } from "@invisible-dots/database"; -import { createTestDatabase, testAdapters, type TestDatabase } from "@invisible-dots/database/testing"; -import { APPROVAL_NOTE_MAX, IDENTITY_ERROR_STATUS, type IdentityErrorCode, type StoredEvent } from "@invisible-dots/shared"; -import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"; -import { Scheduler, type SchedulerOptions } from "../src/index.js"; -import { FakeDriver, FakeGuestError, ManualClock, waitFor, waitUntilSettledReady, type FakeAutomation } from "../src/testing.js"; - - -const yaml = (name: string, idle = "15m") => - `name: ${name}\nmodel:\n provider: openrouter\n id: test/model\ncomputer:\n idle_timeout: ${idle}\n`; - -const automation = (over: Partial = {}): FakeAutomation => ({ - id: "job_1", - name: "daily fares", - enabled: true, - schedule: { kind: "cron", expr: "0 9 * * 1-5", tz: "Europe/Rome" }, - message: "check the fares", - next_run_at_ms: 1_800_000_000_000, - last_run_at_ms: null, - last_status: null, - last_error: null, - delete_after_run: false, - created_at_ms: 1_700_000_000_000, - ...over, -}); - -describe.each(testAdapters())("Scheduler with a fake driver and a fake guest (%s)", (kind) => { - let t: TestDatabase; - let db: Database; - const open: Scheduler[] = []; - - beforeAll(async () => { - t = await createTestDatabase(kind); - db = t.db; - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - }); - - afterEach(async () => { - await Promise.all(open.splice(0).map((s) => s.close())); - }); - - afterAll(async () => { - await t?.drop(); - }); - - function make(driver = new FakeDriver(), extra: Partial = {}) { - const clock = new ManualClock(); - const scheduler = new Scheduler({ - db, - driver, - clock, - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50 }, - dispatcher: { retryDelayMs: 0, maxDeliveryAttempts: 2 }, - ...extra, - }); - open.push(scheduler); - drivers.set(scheduler, driver); - return { scheduler, driver, clock }; - } - - const drivers = new Map(); - const driverOf = (s: Scheduler) => drivers.get(s)!; - - async function readyDot(s: Scheduler, name: string, idle?: string) { - const dot = await s.createDot(yaml(name, idle)); - await waitUntilSettledReady(s, driverOf(s), dot.id, name); - return dot; - } - - const types = (events: StoredEvent[]) => events.map((e) => e.type); - - // PGlite has one connection: no other transaction can hold a row while the claim runs. - if (kind === "pg") it("claims a task whose Dot's row another transaction held for a moment, without waiting for the timer", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "held-row"); - // What the guest's next event does as a task ends (agent.state IDLE moves the Dot to READY): an update of the - // Dot's row, which the claim's FOR UPDATE OF d SKIP LOCKED skips over. - let release!: () => void; - const released = new Promise((resolve) => (release = resolve)); - let holding!: () => void; - const held = new Promise((resolve) => (holding = resolve)); - const holder = db.transaction(async (tx) => { - await tx.dots.setStatus(dot.id, "READY"); - holding(); - await released; - }); - await held; - const task = await scheduler.createTask(dot.id, { description: "after the held row" }); - // The dispatch the task asked for has tried, and skipped it: the row is still held. - await new Promise((resolve) => setTimeout(resolve, 100)); - expect((await db.tasks.get(task.id))?.status).toBe("PENDING"); - release(); - await holder; - // The scheduler is not started here: no timer passes; only the dispatch itself can come back for the task. - await waitFor(async () => (await db.tasks.get(task.id))?.status !== "PENDING", "the task claimed once the row was free", 3_000); - }); - - it("create -> READY: pushes the key and the runtime config, records images and state events", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(yaml("ready-one")); - expect(dot.status).toBe("CREATING"); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "READY", "READY"); - - const guest = driver.guestOf(dot.id); - expect(guest.openrouterKey).toBe("sk-or-test"); - expect(guest.config?.name).toBe("ready-one"); - expect(guest.config).not.toHaveProperty("computer"); - const computer = await scheduler.computer(dot.id); - expect(computer).toMatchObject({ state: "RUNNING", ready: true, golden_image: driver.goldenImage, vm_name: `invisible-dot-${dot.id}` }); - expect(computer.guest_port).toBe(driver.vms.get(dot.id)?.guestPort); - expect(computer.pid).toBe(driver.vms.get(dot.id)?.pid); - const events = await db.events.list({ dotId: dot.id }); - expect(types(events)).toEqual( - expect.arrayContaining(["dot.created", "computer.state", "computer.started"]), - ); - expect(events.filter((e) => e.type === "computer.state").map((e) => e.data.state)).toEqual([ - "PROVISIONING", - "STARTING", - "RUNNING", - ]); - }); - - it("task -> guest events -> COMPLETED, with the cursor advanced and the run delivered", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "task-one"); - const task = await scheduler.createTask(dot.id, { description: "check fares", priority: 2 }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task COMPLETED"); - const done = await db.tasks.get(task.id); - expect(done?.summary).toBe("done: check fares"); - expect(done?.started_at).not.toBeNull(); - const runs = await db.tasks.runs(task.id); - expect(runs).toHaveLength(1); - expect(runs[0]?.delivered_at).not.toBeNull(); - expect(runs[0]?.outcome).toBe("completed"); - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === 5, "every guest event stored"); - const guestEvents = (await db.events.list({ dotId: dot.id })).filter((e) => e.source === "guest"); - expect(types(guestEvents)).toEqual(["agent.started", "agent.state", "task.started", "task.completed", "agent.state"]); - expect((await db.dots.get(dot.id))?.status).toBe("READY"); - }); - - it("a message of the guest's stream that the host refuses is a host event of its own, the cursor moves past it, and what follows is stored", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "refused-one"); - const guest = driver.guestOf(dot.id); - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === guest.outbox.length, "the guest's events stored"); - const stored = guest.outbox.length; - - guest.writeUnreadable("approval.requested", "data.permission: Invalid option"); - guest.sendGarbage("Unexpected token 'x', \"xyz\" is not valid JSON"); - await waitFor(async () => (await db.events.list({ dotId: dot.id, types: ["guest.event.refused"] })).length === 2, "both refusals recorded"); - const refused = await db.events.list({ dotId: dot.id, types: ["guest.event.refused"] }); - expect(refused.map((e) => e.data)).toEqual([ - { seq: stored + 1, type: "approval.requested", problem: "data.permission: Invalid option" }, - { seq: null, type: null, problem: "Unexpected token 'x', \"xyz\" is not valid JSON" }, - ]); - expect(refused.every((e) => e.source === "host" && e.guest_seq === null)).toBe(true); - // The one with a seq is behind the cursor, so a reconnect does not record it again; one without a seq cannot be - // told apart from the others, and is recorded again. - expect((await db.computers.get(dot.id))?.event_cursor).toBe(stored + 1); - guest.disconnectStreams(); - guest.emit("agent.state", { state: "THINKING" }); - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === stored + 2, "the event after it stored"); - expect(await db.events.list({ dotId: dot.id, types: ["guest.event.refused"] })).toHaveLength(3); - }); - - it("the spend a task's events report lands on the task: the highest heard, whatever ends it", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "spend-one"); - const guest = driver.guestOf(dot.id); - guest.onInbound = () => {}; - const task = await scheduler.createTask(dot.id, { description: "costly" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - const spent = async () => (await db.tasks.get(task.id))?.spent_usd; - guest.emit("task.started", { task_id: task.id }); - guest.emit("task.progress", { task_id: task.id, text: "first step", spent_usd: 0.25 }); - await waitFor(async () => (await spent()) === 0.25, "progress spend"); - guest.emit("task.progress", { task_id: task.id, text: "second step", spent_usd: 0.75 }); - await waitFor(async () => (await spent()) === 0.75, "ticking spend"); - guest.emit("task.completed", { task_id: task.id, summary: "done", spent_usd: 0.875 }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "completed"); - expect(await spent()).toBe(0.875); - expect((await db.tasks.get(task.id))?.summary).toBe("done"); - }); - - it("a failed task keeps the spend its failure reports, and an event without one changes nothing", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "spend-two"); - const guest = driver.guestOf(dot.id); - guest.onInbound = () => {}; - const task = await scheduler.createTask(dot.id, { description: "capped" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - guest.emit("task.progress", { task_id: task.id, text: "x", spent_usd: 0.6 }); - guest.emit("task.progress", { task_id: task.id, text: "no spend reported" }); - guest.emit("task.failed", { task_id: task.id, error: "stopped: the task reached limits.max_cost_per_task_usd (spent 1.2000 USD of 1.00)", spent_usd: 1.2 }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "FAILED", "failed"); - expect((await db.tasks.get(task.id))?.spent_usd).toBe(1.2); - expect((await scheduler.getTask(task.id)).spent_usd).toBe(1.2); - }); - - it("a cancelled task still takes the spend its guest reports afterwards", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "spend-three"); - const guest = driver.guestOf(dot.id); - guest.onInbound = () => {}; - const task = await scheduler.createTask(dot.id, { description: "cancelled while spending" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - guest.emit("task.progress", { task_id: task.id, text: "x", spent_usd: 0.25 }); - await waitFor(async () => (await db.tasks.get(task.id))?.spent_usd === 0.25, "first spend"); - await scheduler.cancelTask(task.id); - guest.emit("task.failed", { task_id: task.id, error: "cancelled", spent_usd: 0.4 }); - await waitFor(async () => (await db.tasks.get(task.id))?.spent_usd === 0.4, "spend after the cancel"); - expect((await db.tasks.get(task.id))?.status).toBe("CANCELLED"); - }); - - it("a guest cannot write the spend of another Dot's task", async () => { - const { scheduler, driver } = make(); - const a = await readyDot(scheduler, "spend-owner"); - const b = await readyDot(scheduler, "spend-other"); - driver.guestOf(a.id).onInbound = () => {}; - const task = await scheduler.createTask(a.id, { description: "mine" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - driver.guestOf(b.id).emit("task.progress", { task_id: task.id, text: "forged", spent_usd: 99 }); - await waitFor(async () => (await db.computers.get(b.id))?.event_cursor === 1, "forged event stored"); - expect((await db.tasks.get(task.id))?.spent_usd).toBe(0); - }); - - it("a reconnecting event stream does not store an event twice", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "replay-one"); - const guest = driver.guestOf(dot.id); - const a = guest.emit("automation.next_run", { next_run_at_ms: 1_800_000_000_000 }); - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === a.seq, "first event"); - guest.disconnectStreams(); - const b = guest.emit("automation.next_run", { next_run_at_ms: null }); - await waitFor(async () => (await db.computers.get(dot.id))?.event_cursor === b.seq, "second event after reconnect"); - const stored = (await db.events.list({ dotId: dot.id })).filter((e) => e.source === "guest"); - expect(stored.map((e) => e.guest_seq)).toEqual(guest.outbox.map((e) => e.seq)); - }); - - it("a guest cannot complete another Dot's task", async () => { - const { scheduler, driver } = make(); - const a = await readyDot(scheduler, "owner-a"); - const b = await readyDot(scheduler, "owner-b"); - driver.guestOf(a.id).onInbound = () => {}; - const task = await scheduler.createTask(a.id, { description: "slow" }); - await waitFor(async () => (await db.tasks.runs(task.id))[0]?.delivered_at, "delivered"); - driver.guestOf(b.id).emit("task.completed", { task_id: task.id, summary: "forged" }); - await waitFor(async () => (await db.computers.get(b.id))?.event_cursor === 1, "forged event stored"); - expect((await db.tasks.get(task.id))?.status).toBe("RUNNING"); - }); - - it("approval flow: requested -> WAITING_APPROVAL -> approve -> guest resumes -> COMPLETED", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "approver"); - const guest = driver.guestOf(dot.id); - const original = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "task.created") { - g.emit("task.started", { task_id: event.data.task_id }); - g.requestApproval(event.data.task_id); - } else { - return original(event, g); - } - }; - const task = await scheduler.createTask(dot.id, { description: "delete the old identity" }); - const approval = await waitFor(async () => (await scheduler.listApprovals("pending"))[0], "pending approval"); - expect(approval).toMatchObject({ dot_id: dot.id, task_id: task.id, tool: "browser_identity_delete" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "WAITING_APPROVAL", "task waiting"); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "WAITING_APPROVAL", "dot waiting"); - - const resolved = await scheduler.resolveApproval(approval.id, "approve", { note: "go ahead" }); - expect(resolved.status).toBe("approved"); - const received = guest.inbound.find((e) => e.type === "approval.received"); - expect(received?.data).toEqual({ approval_id: approval.id, decision: "approve", note: "go ahead" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task completed"); - expect((await db.tasks.get(task.id))?.summary).toBe("approval approved"); - await expect(scheduler.resolveApproval(approval.id, "reject")).rejects.toMatchObject({ - status: 409, - code: "already_resolved", - }); - expect(types(await db.events.list({ dotId: dot.id, types: ["approval.resolved"] }))).toEqual(["approval.resolved"]); - }); - - it("an approve and a reject sent at the same moment: one wins, the other is a 409, and the guest hears one decision", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "two-answers"); - const guest = driver.guestOf(dot.id); - expect(guest.config?.permissions["browser.identity.delete"]).toBe("ask"); - for (let round = 0; round < 5; round++) { - const id = guest.requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(id))?.status === "pending", "pending approval"); - - const answers = await Promise.allSettled([ - scheduler.resolveApproval(id, "approve", { always: true }), - scheduler.resolveApproval(id, "reject", { note: "no" }), - ]); - - const won = answers.filter((a) => a.status === "fulfilled"); - const lost = answers.filter((a) => a.status === "rejected"); - expect([won.length, lost.length]).toEqual([1, 1]); - expect((lost[0] as PromiseRejectedResult).reason).toMatchObject({ status: 409, code: "already_resolved" }); - const winner = (won[0] as PromiseFulfilledResult<{ status: string }>).value.status; - expect((await db.approvals.get(id))?.status).toBe(winner); - const decision = winner === "approved" ? "approve" : "reject"; - await waitFor(() => guest.inbound.some((e) => e.type === "approval.received" && e.data.approval_id === id), "decision delivered"); - expect(guest.inbound.flatMap((e) => (e.type === "approval.received" && e.data.approval_id === id ? [e.data.decision] : []))).toEqual([decision]); - const resolved = (await db.events.list({ dotId: dot.id, types: ["approval.resolved"] })).filter((e) => e.data.approval_id === id); - expect(resolved.map((e) => e.data.decision)).toEqual([decision]); - // "Always" changes the permission only when the approve won. - expect((await db.dots.get(dot.id))?.config.permissions["browser.identity.delete"] === "allow").toBe(winner === "approved"); - await db.dots.setPermission(dot.id, "browser.identity.delete", "ask"); - } - }); - - it("approve with always: the permission becomes allow in the config and the guest, once, in the same transaction as the decision", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "always-allow"); - const guest = driver.guestOf(dot.id); - expect(guest.config?.permissions["browser.identity.delete"]).toBe("ask"); - const original = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "task.created") { - g.emit("task.started", { task_id: event.data.task_id }); - g.requestApproval(event.data.task_id); - } else { - return original(event, g); - } - }; - const task = await scheduler.createTask(dot.id, { description: "delete the old identity" }); - const approval = await waitFor(async () => (await scheduler.listApprovals("pending")).find((a) => a.task_id === task.id), "pending approval"); - const configBefore = (await db.dots.get(dot.id))!.config; - - const resolved = await scheduler.resolveApproval(approval.id, "approve", { always: true, note: "fine" }); - expect(resolved.status).toBe("approved"); - const stored = (await db.dots.get(dot.id))!; - expect(stored.config).toEqual({ ...configBefore, permissions: { ...configBefore.permissions, "browser.identity.delete": "allow" } }); - expect(guest.config?.permissions["browser.identity.delete"]).toBe("allow"); - expect(guest.config?.name).toBe("always-allow"); - const events = await db.events.list({ dotId: dot.id, types: ["approval.resolved", "dot.updated"] }); - expect(events.map((e) => [e.type, e.data])).toEqual([ - // The task the approval was asked in is named, so that the events of the task hold the answer. - ["approval.resolved", { approval_id: approval.id, decision: "approve", task_id: task.id, note: "fine", always: true }], - ["dot.updated", { name: "always-allow" }], - ]); - // The guest is told the plain decision: what the config says is the guest's own business. - expect(guest.inbound.find((e) => e.type === "approval.received")?.data).toEqual({ approval_id: approval.id, decision: "approve", note: "fine" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task completed"); - - // Answered once: the second try is a 409 and changes nothing, however it asks. - await db.dots.setPermission(dot.id, "browser.identity.delete", "ask"); - await expect(scheduler.resolveApproval(approval.id, "approve", { always: true })).rejects.toMatchObject({ status: 409, code: "already_resolved" }); - expect((await db.dots.get(dot.id))?.config.permissions["browser.identity.delete"]).toBe("ask"); - expect(types(await db.events.list({ dotId: dot.id, types: ["approval.resolved", "dot.updated"] }))).toEqual(["approval.resolved", "dot.updated"]); - }); - - it("approve with always: a flush that runs between the commit and the push does not send the answer ahead of the config", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "always-ordered"); - const guest = driver.guestOf(dot.id); - const id = guest.requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(id)) !== null, "stored"); - let configWhenAnswered: string | undefined; - const original = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type === "approval.received") configWhenAnswered = g.config?.permissions["browser.identity.delete"]; - return original(event, g); - }; - let openGate!: () => void; - guest.configPushGate = new Promise((resolve) => { - openGate = resolve; - }); - - const answered = scheduler.resolveApproval(id, "approve", { always: true }); - // The answer is committed and waits in the outbox, the push is in flight: every way a delivery can start is tried. - await waitFor(async () => (await db.inbound.pending(dot.id)).some((row) => row.event.type === "approval.received"), "the answer stored"); - void scheduler.inbound.kick(dot.id); - await scheduler.inbound.kickDue(); - await new Promise((resolve) => setTimeout(resolve, 150)); - expect(guest.inbound.some((e) => e.type === "approval.received")).toBe(false); - - openGate(); - expect((await answered).status).toBe("approved"); - await scheduler.settle(); - expect(guest.inbound.some((e) => e.type === "approval.received")).toBe(true); - expect(configWhenAnswered).toBe("allow"); - // The hold is gone: the next answer for this Dot is not held up. - const next = guest.requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(next)) !== null, "stored"); - await scheduler.resolveApproval(next, "reject"); - await scheduler.settle(); - expect(guest.inbound.filter((e) => e.type === "approval.received")).toHaveLength(2); - }); - - it("refuses a note longer than the one the web takes, and leaves the approval pending", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "long-note"); - const id = driver.guestOf(dot.id).requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(id)) !== null, "stored"); - - await expect(scheduler.resolveApproval(id, "approve", { note: "x".repeat(APPROVAL_NOTE_MAX + 1) })).rejects.toMatchObject({ status: 400, code: "invalid_request", message: `note must be at most ${APPROVAL_NOTE_MAX} characters` }); - expect((await db.approvals.get(id))?.status).toBe("pending"); - expect((await scheduler.resolveApproval(id, "approve", { note: "x".repeat(APPROVAL_NOTE_MAX) })).note).toHaveLength(APPROVAL_NOTE_MAX); - }); - - it("approve with always refuses what cannot be allowed for good and leaves the approval pending", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "always-refused"); - const guest = driver.guestOf(dot.id); - const known = guest.requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(known)) !== null, "stored"); - const configBefore = (await db.dots.get(dot.id))!.config; - - await expect(scheduler.resolveApproval(known, "reject", { always: true })).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(scheduler.resolveApproval(known, "approve", { always: false as unknown as true })).rejects.toMatchObject({ status: 400 }); - await expect(scheduler.resolveApproval("apr_missing", "approve", { always: true })).rejects.toMatchObject({ status: 404 }); - expect((await db.approvals.get(known))?.status).toBe("pending"); - expect((await db.dots.get(dot.id))?.config).toEqual(configBefore); - expect(await db.events.list({ dotId: dot.id, types: ["approval.resolved", "dot.updated"] })).toEqual([]); - }); - - it("approve with always on a sleeping Dot saves the config, and the wake that delivers the answer pushes it", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "always-asleep"); - const approvalId = driver.guestOf(dot.id).requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(approvalId)) !== null, "stored"); - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - expect((await db.computers.get(dot.id))?.state).toBe("STOPPED"); - - await scheduler.resolveApproval(approvalId, "approve", { always: true }); - expect((await db.dots.get(dot.id))?.config.permissions["browser.identity.delete"]).toBe("allow"); - expect((await db.events.list({ dotId: dot.id, types: ["dot.updated"] })).at(-1)?.data).toEqual({ name: "always-asleep" }); - await waitFor(async () => (await db.computers.get(dot.id))?.state === "RUNNING", "woken for the answer"); - await waitFor(() => driver.guestOf(dot.id).config?.permissions["browser.identity.delete"] === "allow", "config pushed on the wake"); - }); - - it("sleeps after idle_timeout (fake clock) and wakes on a new task", async () => { - const { scheduler, driver, clock } = make(); - const dot = await readyDot(scheduler, "sleeper", "10m"); - expect(await scheduler.idleCheck()).toEqual([]); - clock.advance(9 * 60_000); - expect(await scheduler.idleCheck()).toEqual([]); - clock.advance(2 * 60_000); - expect(await scheduler.idleCheck()).toEqual([dot.id]); - await scheduler.settle(); - expect((await db.computers.get(dot.id))?.state).toBe("STOPPED"); - expect((await db.dots.get(dot.id))?.status).toBe("IDLE"); - expect(driver.guestOf(dot.id).calls).toContain("prepareSleep"); - expect(driver.calls).toContain(`stop:${dot.id}`); - const stopped = await db.events.list({ dotId: dot.id, types: ["computer.stopped"] }); - expect(stopped[0]?.data).toMatchObject({ reason: "idle" }); - - const bootsBefore = driver.guestOf(dot.id).boots; - const task = await scheduler.createTask(dot.id, { description: "after the nap" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task after wake"); - const guest = driver.guestOf(dot.id); - expect(guest.boots).toBe(bootsBefore + 1); - // The key lives in guest memory only and is pushed again on every READY. - expect(guest.openrouterKey).toBe("sk-or-test"); - expect((await db.computers.get(dot.id))?.state).toBe("RUNNING"); - }); - - it("does not sleep with idle_timeout 0, with a task in progress, or with a non-idle agent", async () => { - const { scheduler, driver, clock } = make(); - const never = await readyDot(scheduler, "insomniac", "0"); - const busy = await readyDot(scheduler, "busy-bee", "1m"); - driver.guestOf(busy.id).onInbound = (event, g) => { - if (event.type === "task.created") g.emit("agent.state", { state: "EXECUTING" }); - }; - const task = await scheduler.createTask(busy.id, { description: "long job" }); - await waitFor(async () => (await db.dots.get(busy.id))?.status === "RUNNING", "busy agent"); - clock.advance(24 * 3_600_000); - expect(await scheduler.idleCheck()).toEqual([]); - expect((await db.computers.get(never.id))?.state).toBe("RUNNING"); - expect((await db.tasks.get(task.id))?.status).toBe("RUNNING"); - }); - - describe("automations and the computer's sleep (section 9.5)", () => { - const LEAD_MS = 60_000; - const MIN = 60_000; - - function makeWithLead() { - return make(new FakeDriver(), { - dispatchIntervalMs: 60_000, - idleCheckIntervalMs: 60_000, - lifecycle: { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50, automationWakeLeadMs: LEAD_MS }, - }); - } - - /** The Dot's engine reports that its earliest automation is due `inMs` from the clock's now, and the host has stored it. */ - async function reportDueIn(scheduler: Scheduler, clock: ManualClock, dotId: string, inMs: number, id = "job_1") { - const at = clock.now().getTime() + inMs; - driverOf(scheduler).guestOf(dotId).putAutomation(automation({ id, next_run_at_ms: at })); - await waitFor(async () => (await db.computers.get(dotId))?.next_automation_at === new Date(at).toISOString(), "the report stored"); - return at; - } - - it("stores what the engine reports as the time of its next automation, and clears it when none is due", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "reporter", "0"); - expect((await db.computers.get(dot.id))?.next_automation_at).toBeNull(); - - const at = await reportDueIn(scheduler, clock, dot.id, 3 * 60 * MIN); - const logged = await db.events.list({ dotId: dot.id, types: ["automation.next_run"] }); - expect(logged.map((e) => e.data)).toMatchObject([{ next_run_at_ms: at }]); - - const guest = driver.guestOf(dot.id); - guest.putAutomation(automation({ id: "job_2", name: "sooner", next_run_at_ms: at - 60 * MIN })); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(at - 60 * MIN).toISOString(), "the earlier one"); - guest.removeAutomation("job_2"); - guest.removeAutomation("job_1"); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === null, "cleared"); - }); - - it("does not put a Dot to sleep when a run is due within the wake lead time, and does when it is not", async () => { - const { scheduler, clock } = makeWithLead(); - const soon = await readyDot(scheduler, "run-soon", "10m"); - const far = await readyDot(scheduler, "run-far", "10m"); - const none = await readyDot(scheduler, "run-none", "10m"); - await reportDueIn(scheduler, clock, soon.id, 10 * MIN + LEAD_MS - 1_000); - await reportDueIn(scheduler, clock, far.id, 10 * MIN + LEAD_MS + 5 * MIN); - - // Idle for the whole timeout: the one whose run is within the lead stays up. - clock.advance(10 * MIN + 1_000); - expect((await scheduler.idleCheck()).sort()).toEqual([far.id, none.id].sort()); - await scheduler.settle(); - expect((await db.computers.get(soon.id))?.state).toBe("RUNNING"); - expect((await db.computers.get(far.id))?.state).toBe("STOPPED"); - }); - - it("does not put a Dot to sleep that has a run already due, and does once the engine has moved it far off", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "run-due", "10m"); - await reportDueIn(scheduler, clock, dot.id, 2 * MIN); - - clock.advance(20 * MIN); - expect(await scheduler.idleCheck()).toEqual([]); - - // The engine made the run and tells the host the next one is hours away. - const guest = driver.guestOf(dot.id); - const next = clock.now().getTime() + 6 * 60 * MIN; - guest.putAutomation(automation({ id: "job_next", next_run_at_ms: next })); - guest.removeAutomation("job_1"); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(next).toISOString(), "the next run stored"); - // The reports were activity: the idle timeout counts from them. - clock.advance(11 * MIN); - expect(await scheduler.idleCheck()).toEqual([dot.id]); - }); - - /** The Dot sleeps as the idle check puts it to sleep: nothing due within the lead, idle for its whole timeout. */ - async function sleepIdle(scheduler: Scheduler, clock: ManualClock, dotId: string, idleMs = 11 * MIN) { - clock.advance(idleMs); - expect(await scheduler.idleCheck()).toEqual([dotId]); - await scheduler.settle(); - expect(await db.computers.get(dotId)).toMatchObject({ state: "STOPPED", stop_reason: "idle" }); - } - - it("starts a stopped Dot shortly before its automation is due, and not before", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "sleeping-job", "10m"); - const at = await reportDueIn(scheduler, clock, dot.id, 60 * MIN); - await sleepIdle(scheduler, clock, dot.id); - const boots = driver.guestOf(dot.id).boots; - - await scheduler.pass(); - clock.advance(28 * MIN); - await scheduler.pass(); - await scheduler.settle(); - expect((await db.computers.get(dot.id))?.state).toBe("STOPPED"); - expect(driver.guestOf(dot.id).boots).toBe(boots); - - // 30 s before the run, within the 60 s lead. - clock.advance(at - clock.now().getTime() - 30_000); - await scheduler.pass(); - await waitFor(async () => (await db.computers.get(dot.id))?.state === "RUNNING", "started for the automation"); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "READY", "READY"); - expect(driver.guestOf(dot.id).boots).toBe(boots + 1); - // The key lives in guest memory only: the start pushed it as every start does. - expect(driver.guestOf(dot.id).openrouterKey).toBe("sk-or-test"); - }); - - it("wakes a Dot for a missed run once: the guest makes it, the stored time moves on, and the Dot sleeps again", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "missed-job", "10m"); - const guest = driver.guestOf(dot.id); - guest.now = () => clock.now().getTime(); - const at = clock.now().getTime() + 60 * MIN; - guest.putAutomation(automation({ schedule: { kind: "every", every_ms: 6 * 60 * MIN }, next_run_at_ms: at })); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(at).toISOString(), "the report stored"); - await sleepIdle(scheduler, clock, dot.id); - clock.advance(3 * 60 * MIN); - const boots = guest.boots; - - await scheduler.pass(); - await waitFor(async () => (await db.computers.get(dot.id))?.state === "RUNNING", "started for the missed run"); - await scheduler.settle(); - // The guest made the run at its boot and told the host when the next one is: the past time is gone. - const ranAt = clock.now().getTime(); - const next = ranAt + 6 * 60 * MIN; - expect(guest.automations.get("job_1")).toMatchObject({ last_run_at_ms: ranAt, next_run_at_ms: next }); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(next).toISOString(), "the next run stored"); - expect(await scheduler.lifecycle.keepsAwake(dot.id)).toBe(false); - - // So the passes that follow find nothing to start, and the idle check puts the Dot to sleep again. - await scheduler.pass(); - await scheduler.settle(); - expect(guest.boots).toBe(boots + 1); - await sleepIdle(scheduler, clock, dot.id); - await scheduler.pass(); - await scheduler.settle(); - expect(guest.boots).toBe(boots + 1); - expect(guest.automations.get("job_1")?.last_run_at_ms).toBe(ranAt); - }); - - it("does not start for an automation when the person's stop came in front of the wake the pass had chosen, and still starts one nothing came in front of", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const stopped = await readyDot(scheduler, "stop-comes-first", "10m"); - const free = await readyDot(scheduler, "nothing-comes-first", "10m"); - for (const dot of [stopped, free]) { - const guest = driver.guestOf(dot.id); - guest.now = () => clock.now().getTime(); - guest.putAutomation(automation({ schedule: { kind: "every", every_ms: 60 * MIN }, next_run_at_ms: clock.now().getTime() + 20 * MIN })); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at !== null, "the report stored"); - } - clock.advance(11 * MIN); - expect((await scheduler.idleCheck()).sort()).toEqual([stopped.id, free.id].sort()); - await scheduler.settle(); - clock.advance(9 * MIN); - // The pass would wake both: it read the database, and the wakes wait for their turn of the per-Dot lock. - expect((await scheduler.lifecycle.stoppedDotsWithAutomationDue()).sort()).toEqual([stopped.id, free.id].sort()); - const bootsOf = (id: string) => driver.guestOf(id).boots; - const before = { stopped: bootsOf(stopped.id), free: bootsOf(free.id) }; - - // The person's stop gets there first. - await scheduler.stopComputer(stopped.id); - await scheduler.settle(); - expect(await db.computers.get(stopped.id)).toMatchObject({ state: "STOPPED", stop_reason: "user" }); - expect(await scheduler.lifecycle.wakeForAutomation(stopped.id)).toBe(false); - expect(await scheduler.lifecycle.wakeForAutomation(free.id)).toBe(true); - await scheduler.settle(); - expect(bootsOf(stopped.id)).toBe(before.stopped); - expect(bootsOf(free.id)).toBe(before.free + 1); - expect((await db.computers.get(stopped.id))?.state).toBe("STOPPED"); - }); - - it("keeps a Dot the person stopped off, whatever its automations say, until the person starts it again", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "stopped-by-me", "10m"); - const guest = driver.guestOf(dot.id); - guest.now = () => clock.now().getTime(); - const at = clock.now().getTime() + 5 * MIN; - guest.putAutomation(automation({ schedule: { kind: "every", every_ms: 60 * MIN }, next_run_at_ms: at })); - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(at).toISOString(), "the report stored"); - - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", stop_reason: "user" }); - const boots = guest.boots; - - // The run is past, then an hour of runs are: the Dot stays as the person left it. - clock.advance(10 * MIN); - await scheduler.pass(); - clock.advance(60 * MIN); - await scheduler.pass(); - await scheduler.settle(); - expect(guest.boots).toBe(boots); - expect((await db.computers.get(dot.id))?.state).toBe("STOPPED"); - - // The person starts it: the guest makes the run it missed, and the reason is gone. - await scheduler.startComputer(dot.id); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "READY", "READY"); - expect((await db.computers.get(dot.id))?.stop_reason).toBeNull(); - const ranAt = clock.now().getTime(); - expect(guest.automations.get("job_1")?.last_run_at_ms).toBe(ranAt); - - // From then on it sleeps and wakes for its automations like any other. The guest's report of the next run is - // activity: the idle timeout counts from it, so it is stored before the clock moves. - await waitFor(async () => (await db.computers.get(dot.id))?.next_automation_at === new Date(ranAt + 60 * MIN).toISOString(), "the next run stored"); - await scheduler.settle(); - clock.advance(11 * MIN); - expect(await scheduler.idleCheck()).toEqual([dot.id]); - await scheduler.settle(); - expect((await db.computers.get(dot.id))?.stop_reason).toBe("idle"); - clock.advance(60 * MIN); - await scheduler.pass(); - await waitFor(async () => (await db.computers.get(dot.id))?.state === "RUNNING", "woken for the next run"); - expect(guest.boots).toBe(boots + 2); - }); - - it("records the person's stop of a computer that is already asleep, and a message still starts it", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "asleep-then-stopped", "10m"); - await reportDueIn(scheduler, clock, dot.id, 60 * MIN); - await sleepIdle(scheduler, clock, dot.id); - const boots = driver.guestOf(dot.id).boots; - - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - expect((await db.computers.get(dot.id))?.stop_reason).toBe("user"); - clock.advance(2 * 60 * MIN); - await scheduler.pass(); - await scheduler.settle(); - expect(driver.guestOf(dot.id).boots).toBe(boots); - - // The person's stop is about the automations: their own message still starts the computer. - await scheduler.sendMessage(dot.id, "are you there"); - await scheduler.settle(); - expect(driver.guestOf(dot.id).boots).toBe(boots + 1); - expect((await db.computers.get(dot.id))?.stop_reason).toBeNull(); - }); - - it("starts a VM that stopped by itself at once when a run is due, by the same rule as the idle sleep", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "self-stopper-job", "10m"); - await reportDueIn(scheduler, clock, dot.id, LEAD_MS - 10_000); - const guest = driver.guestOf(dot.id); - const boots = guest.boots; - - // No pass runs here: it is the exit itself that starts the computer again, not the next round of the scheduler. - driver.crash(dot.id); - await waitFor(async () => (await db.events.list({ dotId: dot.id, types: ["computer.stopped"] })).some((e) => e.data.reason === "exited"), "stop recorded"); - await waitFor(() => guest.boots === boots + 1 && scheduler.lifecycle.isReady(dot.id), "started again"); - }); - - it("leaves a VM that stopped by itself off when nothing is due, and records that it exited", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "self-stopper-idle", "10m"); - await reportDueIn(scheduler, clock, dot.id, 5 * 60 * MIN); - const boots = driver.guestOf(dot.id).boots; - - driver.crash(dot.id); - await waitFor(async () => (await db.computers.get(dot.id))?.state === "STOPPED", "stop recorded"); - await scheduler.settle(); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", stop_reason: "exited" }); - expect(driver.guestOf(dot.id).boots).toBe(boots); - }); - - it("leaves a stopped Dot alone that has no automation to run, or whose Dot needs the person", async () => { - const { scheduler, driver, clock } = makeWithLead(); - const nothing = await readyDot(scheduler, "stopped-nothing", "10m"); - const broken = await readyDot(scheduler, "stopped-broken", "10m"); - await reportDueIn(scheduler, clock, broken.id, 30 * MIN); - // Both slept by themselves (nothing due within the lead): it is the Dot's status that keeps the second one off. - clock.advance(11 * MIN); - expect((await scheduler.idleCheck()).sort()).toEqual([nothing.id, broken.id].sort()); - await scheduler.settle(); - await db.dots.setStatus(broken.id, "ERROR", "the person has to look"); - const boots = [driver.guestOf(nothing.id).boots, driver.guestOf(broken.id).boots]; - - clock.advance(60 * MIN); - await scheduler.pass(); - await scheduler.settle(); - - expect([driver.guestOf(nothing.id).boots, driver.guestOf(broken.id).boots]).toEqual(boots); - expect((await db.computers.get(nothing.id))?.state).toBe("STOPPED"); - expect((await db.computers.get(broken.id))?.state).toBe("STOPPED"); - }); - - it("calls an idle sleep off under the Dot's lock when the run came within the lead meanwhile", async () => { - const { scheduler, clock } = makeWithLead(); - const dot = await readyDot(scheduler, "late-report", "10m"); - clock.advance(11 * MIN); - // The idle check saw nothing due; then the engine reported a run within the lead, before the stop took the lock. - await reportDueIn(scheduler, clock, dot.id, LEAD_MS - 5_000); - - await scheduler.lifecycle.stop(dot.id, "idle"); - - expect((await db.computers.get(dot.id))?.state).toBe("RUNNING"); - expect(scheduler.lifecycle.isReady(dot.id)).toBe(true); - }); - }); - - it("a message to a stopped Dot is queued, wakes it and is delivered", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "chatty"); - await scheduler.lifecycle.stop(dot.id, "user"); - const answer = await scheduler.sendMessage("chatty", "hello there"); - expect(answer.delivery).toBe("queued"); - await scheduler.settle(); - const guest = driver.guestOf(dot.id); - expect(guest.inbound.at(-1)).toMatchObject({ id: answer.message_id, type: "user.message", data: { text: "hello there" } }); - await waitFor(async () => (await scheduler.conversation(dot.id)).length === 2, "assistant reply"); - const conversation = await scheduler.conversation(dot.id); - expect(conversation.map((m) => [m.role, m.text])).toEqual([ - ["user", "hello there"], - ["assistant", "echo: hello there"], - ]); - const direct = await scheduler.sendMessage(dot.id, "again"); - expect(direct.delivery).toBe("delivered"); - }); - - it("keeps where a message came from in the log and answers it in the conversation, never to the guest", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "bridged"); - const origin = { channel: "telegram", binding_id: "chb_1", chat_id: "4242", external_id: "77" } as const; - const fromChannel = await scheduler.sendMessage(dot.id, "from my phone", origin); - const fromApi = await scheduler.sendMessage(dot.id, "from the web"); - await waitFor(async () => (await scheduler.conversation(dot.id)).length === 4, "both replies"); - // The event log owns the fact. - const logged = (await db.events.list({ dotId: dot.id, types: ["user.message"] })).map((e) => e.data); - expect(logged).toEqual([ - { message_id: fromChannel.message_id, text: "from my phone", origin }, - { message_id: fromApi.message_id, text: "from the web" }, - ]); - const conversation = await scheduler.conversation(dot.id); - expect(conversation.filter((m) => m.role === "user").map((m) => m.origin)).toEqual([origin, undefined]); - expect(conversation.some((m) => m.role === "assistant" && "origin" in m)).toBe(false); - // The guest still gets {text}: nothing in the Dot knows about a channel. - const received = driver.guestOf(dot.id).inbound.filter((e) => e.type === "user.message"); - expect(received.map((e) => e.data)).toEqual([{ text: "from my phone" }, { text: "from the web" }]); - }); - - it("hands a channel message to the Dot once however often it is offered, and answers a repeat with the first", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "repeated"); - const origin = { channel: "telegram", binding_id: "chb_1", chat_id: "4242", external_id: "77" } as const; - const first = await scheduler.sendMessage(dot.id, "from my phone", origin); - const again = await scheduler.sendMessage(dot.id, "from my phone", origin); - expect(again).toEqual({ message_id: first.message_id, event_id: first.event_id, delivery: "delivered" }); - // The same id on another binding is another message. - const other = await scheduler.sendMessage(dot.id, "from my phone", { ...origin, binding_id: "chb_2" }); - expect(other.message_id).not.toBe(first.message_id); - await scheduler.settle(); - expect((await db.events.list({ dotId: dot.id, types: ["user.message"] })).map((e) => e.data.message_id)).toEqual([first.message_id, other.message_id]); - expect(driver.guestOf(dot.id).inbound.filter((e) => e.type === "user.message").map((e) => e.id)).toEqual([first.message_id, other.message_id]); - expect((await db.inbound.get(first.message_id))?.delivered_at).toBeTruthy(); - }); - - it("refuses a message whose origin is not a channel chat, and logs nothing for it", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "strict"); - const before = (await db.events.list({ dotId: dot.id })).length; - const bad = { channel: "sms", binding_id: "chb_1", chat_id: "1", external_id: "2" }; - await expect(scheduler.sendMessage(dot.id, "hi", bad as never)).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(scheduler.sendMessage(dot.id, "hi", { ...bad, channel: "telegram", extra: 1 } as never)).rejects.toMatchObject({ status: 400 }); - expect((await db.events.list({ dotId: dot.id })).length).toBe(before); - }); - - it("leaves out an origin it cannot read in a stored message instead of failing the conversation", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "old-rows"); - await scheduler.events.appendUserMessage(dot.id, { message_id: "msg_old", text: "odd", origin: { channel: "sms" } as never }); - const [message] = await scheduler.conversation(dot.id); - expect(message).toMatchObject({ role: "user", text: "odd" }); - expect("origin" in message!).toBe(false); - }); - - it("READY fails without an OpenRouter key and succeeds once one is set", async () => { - await db.secrets.delete("global", "openrouter_api_key"); - try { - const { scheduler } = make(); - const dot = await scheduler.createDot(yaml("keyless")); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "ERROR", "ERROR"); - expect((await db.dots.get(dot.id))?.error).toMatch(/no OpenRouter API key/); - expect((await db.computers.get(dot.id))?.state).toBe("ERROR"); - await scheduler.setOpenRouterKey("sk-or-new", dot.id); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "READY", "READY after key"); - } finally { - await db.secrets.put("global", "openrouter_api_key", "sk-or-test"); - } - }); - - it("READY fails when a guest self-check fails, naming it", async () => { - const driver = new FakeDriver(); - driver.configureGuest = (g) => { - g.checks = { ...g.checks, browser_installed: false }; - }; - const { scheduler } = make(driver); - const dot = await scheduler.createDot(yaml("no-browser")); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "ERROR", "ERROR"); - expect((await db.dots.get(dot.id))?.error).toMatch(/browser layer not installed/); - }); - - it("every start records a new guest port and pid; a stop clears them", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "port-mover"); - const before = await db.computers.get(dot.id); - expect(before?.guest_port).toEqual(expect.any(Number)); - await scheduler.lifecycle.stop(dot.id, "user"); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "STOPPED", guest_port: null, pid: null }); - await expect(scheduler.lifecycle.guest(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - - await scheduler.lifecycle.ensureReady(dot.id); - const after = await db.computers.get(dot.id); - expect(after?.guest_port).not.toBe(before?.guest_port); - expect(after?.pid).toBe(driver.vms.get(dot.id)?.pid); - const started = await db.events.list({ dotId: dot.id, types: ["computer.started"] }); - expect(started.map((e) => e.data.guest_port)).toEqual([before?.guest_port, after?.guest_port]); - // The old port reaches nothing any more: only the recorded one leads to the guest. - const token = await db.computers.token(dot.id); - await expect(driver.guest({ dotId: dot.id, port: before!.guest_port! }, token).health()).rejects.toMatchObject({ status: 0 }); - }); - - it("a failed delivery is retried, then the task fails with the reason", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "flaky"); - const guest = driver.guestOf(dot.id); - guest.failNextPost = new FakeGuestError(0, "connection reset"); - const ok = await scheduler.createTask(dot.id, { description: "eventually" }); - await waitFor(async () => (await db.tasks.get(ok.id))?.status === "COMPLETED", "retried task"); - // The same event went again: one run, never back to PENDING in between. - expect((await db.tasks.runs(ok.id)).map((r) => r.outcome)).toEqual(["completed"]); - - driver.failNext("start", new Error("qemu-system-x86_64 exited: boom"), 2); - await scheduler.lifecycle.stop(dot.id, "user"); - const doomed = await scheduler.createTask(dot.id, { description: "never" }); - await waitFor(async () => (await db.tasks.get(doomed.id))?.status === "FAILED", "failed task", 8_000); - expect((await db.tasks.get(doomed.id))?.error).toMatch(/after 2 attempts/); - // The host ended the task, so the host logs its end: every view that follows task.failed sees it. - const failed = await db.events.list({ dotId: dot.id, types: ["task.failed"], taskId: doomed.id }); - expect(failed).toHaveLength(1); - expect(failed[0]).toMatchObject({ source: "host", data: { task_id: doomed.id, error: expect.stringMatching(/after 2 attempts/) } }); - }); - - it("cancel: a pending task never runs, a finished one answers 409", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "canceller"); - const later = await scheduler.createTask(dot.id, { - description: "tomorrow", - scheduled_at: new Date(Date.now() + 86_400_000).toISOString(), - }); - const cancelled = await scheduler.cancelTask(later.id); - expect(cancelled.status).toBe("CANCELLED"); - await expect(scheduler.cancelTask(later.id)).rejects.toMatchObject({ status: 409, code: "task_finished" }); - expect(types(await db.events.list({ dotId: dot.id, types: ["task.cancelled"] }))).toEqual(["task.cancelled"]); - }); - - it("identities need a running computer: 409 computer_stopped otherwise, guest 404 passes through", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "browser-owner"); - const created = await scheduler.createIdentity(dot.id, { name: "Shop Account" }); - expect(created.id).toMatch(/^shop-account-[a-z0-9]{6}$/); - expect((await scheduler.listIdentities(dot.id)).map((i) => i.id)).toEqual([created.id]); - await expect(scheduler.getIdentity(dot.id, "missing-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - await scheduler.deleteIdentity(dot.id, created.id); - await scheduler.lifecycle.stop(dot.id, "user"); - await expect(scheduler.listIdentities(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(scheduler.screenshot(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - }); - - it("an identity is created with no proxy unless one is given: absent, null and blank are the same, a number is refused", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "no-proxy"); - const guest = driver.guestOf(dot.id); - const requests: unknown[] = []; - const create = guest.createBrowserIdentity.bind(guest); - guest.createBrowserIdentity = async (body) => { - requests.push(body); - return create(body); - }; - - for (const body of [{ name: "A" }, { name: "B", proxy: null }, { name: "C", proxy: "" }] as { name: string; proxy?: string }[]) { - expect(await scheduler.createIdentity(dot.id, body)).toMatchObject({ hasProxy: false }); - } - expect(requests).toEqual([{ name: "A" }, { name: "B" }, { name: "C" }]); - - const own = await scheduler.createIdentity(dot.id, { name: "D", proxy: "http://proxy.test:8080" }); - expect(own.hasProxy).toBe(true); - expect(requests.at(-1)).toEqual({ name: "D", proxy: "http://proxy.test:8080" }); - await expect(scheduler.createIdentity(dot.id, { name: "E", proxy: 8080 as never })).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - }); - - it("an identity's frame and close go to the running guest: not_open, busy and not_found pass through", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "watcher"); - const guest = driver.guestOf(dot.id); - const identity = await scheduler.createIdentity(dot.id, { name: "Shop" }); - - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "not_open" }); - await expect(scheduler.identityFrame(dot.id, "missing-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - guest.launchIdentity(identity.id); - expect([...(await scheduler.identityFrame(dot.id, identity.id)).slice(0, 2)]).toEqual([0xff, 0xd8]); - guest.identityBusy = true; - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 503, code: "busy" }); - guest.identityBusy = false; - - await scheduler.closeIdentity(dot.id, identity.id); - expect((await scheduler.getIdentity(dot.id, identity.id)).status).toBe("available"); - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "not_open" }); - // Closing a closed identity is not an error; an unknown one is a 404. - await scheduler.closeIdentity(dot.id, identity.id); - await expect(scheduler.closeIdentity(dot.id, "missing-abc123")).rejects.toMatchObject({ status: 404, code: "not_found" }); - - await scheduler.lifecycle.stop(dot.id, "user"); - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(scheduler.closeIdentity(dot.id, identity.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - }); - - it("every coded answer of the engine's identity routes that is not a 4xx passes through, so the UI can tell a crashed browser from a silent computer", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "failing"); - const guest = driver.guestOf(dot.id); - const identity = await scheduler.createIdentity(dot.id, { name: "Shop" }); - guest.launchIdentity(identity.id); - - const browserAnswers = Object.entries(IDENTITY_ERROR_STATUS).filter(([, status]) => status >= 500); - expect(browserAnswers.map(([code]) => code).sort()).toEqual(["busy", "crashed", "frame_failed"]); - for (const [code, status] of browserAnswers) { - guest.identityFault = code as IdentityErrorCode; - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status, code }); - } - guest.identityFault = null; - expect([...(await scheduler.identityFrame(dot.id, identity.id)).slice(0, 2)]).toEqual([0xff, 0xd8]); - }); - - it("a guest that does not answer a frame is a 502, not a pass-through", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "silent"); - const identity = await scheduler.createIdentity(dot.id, { name: "Shop" }); - driver.guestOf(dot.id).launchIdentity(identity.id); - driver.guestOf(dot.id).powerOff(); - - await expect(scheduler.identityFrame(dot.id, identity.id)).rejects.toMatchObject({ status: 502, code: "guest_unavailable" }); - }); - - it("PATCH pushes the new config to a READY guest and refuses a shrinking disk", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "patchy"); - const updated = await scheduler.updateDot("patchy", `${yaml("patchy")}instructions: be brief\n`); - expect(updated.config.instructions).toBe("be brief"); - expect(driver.guestOf(dot.id).config?.instructions).toBe("be brief"); - await expect( - scheduler.updateDot(dot.id, yaml("patchy").replace("computer:\n", "computer:\n disk: 20gb\n")), - ).rejects.toMatchObject({ status: 409, code: "disk_shrink" }); - await expect(scheduler.updateDot(dot.id, "name: Bad Name")).rejects.toMatchObject({ status: 400, code: "invalid_config" }); - }); - - it("PATCH made from an old read is a 409 dot_changed: it cannot undo an always-allow answered since, and nothing is saved", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "stale-form"); - const guest = driver.guestOf(dot.id); - // The approval is asked (the Dot's status moves to WAITING_APPROVAL) BEFORE the form reads the Dot: what makes the - // save stale below is the always-allow alone. - const approvalId = guest.requestApproval(undefined); - await waitFor(async () => (await db.approvals.get(approvalId)) !== null && (await db.dots.get(dot.id))?.status === "WAITING_APPROVAL", "stored"); - const loaded = await scheduler.requireDot(dot.id); - expect(loaded.config.permissions?.["browser.identity.delete"]).toBeUndefined(); - - // Another view answers "Always allow" while the form is open. - await scheduler.resolveApproval(approvalId, "approve", { always: true }); - expect((await db.dots.get(dot.id))?.config.permissions["browser.identity.delete"]).toBe("allow"); - - const save = `${yaml("stale-form")}instructions: be brief\n`; - await expect(scheduler.updateDot(dot.id, save, loaded.config_version)).rejects.toMatchObject({ status: 409, code: "dot_changed" }); - const stored = (await db.dots.get(dot.id))!; - expect(stored.config.permissions["browser.identity.delete"]).toBe("allow"); - expect(stored.config.instructions).toBeUndefined(); - expect(guest.config?.instructions).toBeUndefined(); - - // Read again, the save goes through, once; a save with no precondition is as it always was; a malformed one is a 400. - const fresh = await scheduler.requireDot(dot.id); - expect((await scheduler.updateDot(dot.id, save, fresh.config_version)).config.instructions).toBe("be brief"); - await expect(scheduler.updateDot(dot.id, save, fresh.config_version)).rejects.toMatchObject({ status: 409, code: "dot_changed" }); - expect((await scheduler.updateDot(dot.id, `${yaml("stale-form")}instructions: no precondition\n`)).config.instructions).toBe("no precondition"); - await expect(scheduler.updateDot(dot.id, save, "2")).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(scheduler.updateDot(dot.id, save, 0)).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(scheduler.updateDot("missing-dot", save, fresh.config_version)).rejects.toMatchObject({ status: 404 }); - }); - - it("PATCH made from a read before a status change is saved: only a change of the config makes it a 409", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "status-moves"); - const loaded = await scheduler.requireDot(dot.id); - // A turn of the Dot moves its status (and updated_at) while the form is open; its config is as it was read. - driver.guestOf(dot.id).emit("agent.state", { state: "EXECUTING" }); - await waitFor(async () => (await db.dots.get(dot.id))?.status === "RUNNING", "the status to move"); - const moved = (await db.dots.get(dot.id))!; - expect(Date.parse(moved.updated_at)).toBeGreaterThan(Date.parse(loaded.updated_at)); - expect(moved.config_version).toBe(loaded.config_version); - - const saved = await scheduler.updateDot(dot.id, `${yaml("status-moves")}instructions: after a turn\n`, loaded.config_version); - expect(saved.config.instructions).toBe("after a turn"); - expect(saved.config_version).toBe(loaded.config_version + 1); - }); - - it("reboot waits for the new boot and pushes the key again", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "rebooter"); - const guest = driver.guestOf(dot.id); - await scheduler.lifecycle.reboot(dot.id); - expect(guest.boots).toBe(2); - expect(guest.openrouterKey).toBe("sk-or-test"); - expect(scheduler.lifecycle.isReady(dot.id)).toBe(true); - }); - - it("recovery: a VM whose disk is gone is ERROR; a running VM's port and pid come from QEMU, not the row", async () => { - const driver = new FakeDriver(); - const first = make(driver).scheduler; - const lost = await readyDot(first, "disk-lost"); - const unrecorded = await readyDot(first, "port-lost"); - await first.close(); - open.splice(open.indexOf(first), 1); - - driver.vms.delete(lost.id); - // As if the control plane stopped between spawning QEMU and recording its port. - await db.computers.setProcess(unrecorded.id, null); - - const { scheduler } = make(driver, { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000 }); - await scheduler.start(); - await scheduler.settle(); - expect(await db.dots.get(lost.id)).toMatchObject({ status: "ERROR", error: "the VM disk is missing" }); - expect((await db.computers.get(lost.id))?.state).toBe("ERROR"); - expect(scheduler.lifecycle.isReady(unrecorded.id)).toBe(true); - expect(await db.computers.get(unrecorded.id)).toMatchObject({ - guest_port: driver.vms.get(unrecorded.id)?.guestPort, - pid: driver.vms.get(unrecorded.id)?.pid, - }); - // Adopted, not restarted. - expect(driver.guestOf(unrecorded.id).boots).toBe(1); - }); - - it("delete destroys the VM and removes the rows but keeps the history", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "goner"); - await scheduler.deleteDot("goner"); - await scheduler.settle(); - expect(driver.vms.has(dot.id)).toBe(false); - expect(await db.dots.get(dot.id)).toBeNull(); - const history = await scheduler.listEvents(dot.id); - expect(history.at(-1)?.type).toBe("dot.deleted"); - await expect(scheduler.requireDot("goner")).rejects.toMatchObject({ status: 404 }); - }); - - it("events: filters by type and task, refuses a type no event has, and filters a deleted Dot's history by id", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "filtered"); - const task = await scheduler.createTask(dot.id, { description: "look" }); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "task COMPLETED"); - await scheduler.sendMessage(dot.id, "hello"); - driver.guestOf(dot.id).emit("browser.identity.created", { identity_id: "bi_a", name: "a" }); - await waitFor(async () => (await scheduler.listEvents(dot.id, { types: ["browser.identity.created"] })).length === 1, "identity stored"); - - expect(types(await scheduler.listEvents(dot.id, { types: ["user.message", "browser.identity.created"] }))).toEqual(["user.message", "browser.identity.created"]); - expect(types(await scheduler.listEvents(dot.id, { taskId: task.id }))).toEqual( - expect.arrayContaining(["task.created", "task.started", "task.completed"]), - ); - expect((await scheduler.listEvents(dot.id, { taskId: task.id, types: ["task.completed"] })).map((e) => e.data.task_id)).toEqual([task.id]); - // An empty list is no filter; a name that is no event type is an error rather than a quiet Dot. - expect((await scheduler.listEvents(dot.id, { types: [] })).length).toBeGreaterThan(5); - await expect(scheduler.listEvents(dot.id, { types: ["task.completed", "task.done"] })).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - // The Dot keeps its notes itself: a note written is no event type. - await expect(scheduler.listEvents(dot.id, { types: ["memory.written"] })).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await expect(scheduler.listEvents(dot.id, { taskId: "" })).rejects.toMatchObject({ status: 400 }); - - await scheduler.deleteDot("filtered"); - await scheduler.settle(); - expect(types(await scheduler.listEvents(dot.id, { taskId: task.id, types: ["task.completed"] }))).toEqual(["task.completed"]); - }); - - it("files: the path rule comes before the guest, the guest's refusals pass through, and a stopped computer is 409", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "filer"); - const guest = driver.guestOf(dot.id); - guest.putFile("/home/dot/memory/a.md", "alpha"); - const calls = guest.calls.length; - - expect(await scheduler.listFiles(dot.id)).toMatchObject({ path: "/home/dot", entries: [{ name: "memory", type: "dir" }] }); - expect(await scheduler.listFiles("filer", "memory")).toMatchObject({ path: "/home/dot/memory", entries: [{ name: "a.md", size: 5 }] }); - const read = await scheduler.readFile(dot.id, "~/memory/a.md"); - expect(read.path).toBe("/home/dot/memory/a.md"); - expect(new TextDecoder().decode(read.content)).toBe("alpha"); - expect(guest.calls.slice(calls)).toEqual(["listFiles", "listFiles", "readFile"]); - - const before = guest.calls.length; - await expect(scheduler.readFile(dot.id, "/etc/passwd")).rejects.toMatchObject({ status: 400, code: "invalid_path" }); - await expect(scheduler.listFiles(dot.id, "memory/../..")).rejects.toMatchObject({ status: 400, code: "invalid_path" }); - await expect(scheduler.readFile(dot.id, undefined)).rejects.toMatchObject({ status: 400, code: "invalid_path" }); - expect(guest.calls.length).toBe(before); - - await expect(scheduler.readFile(dot.id, "memory/none.md")).rejects.toMatchObject({ status: 404, code: "not_found" }); - guest.putFile("/home/dot/big", new Uint8Array(16 * 1024 * 1024 + 1)); - await expect(scheduler.readFile(dot.id, "big")).rejects.toMatchObject({ status: 413, code: "file_too_large" }); - // A guest that cannot be reached is the Dot's computer not answering, not the caller's fault. - guest.powerOff(); - await expect(scheduler.readFile(dot.id, "memory/a.md")).rejects.toMatchObject({ status: 502, code: "guest_unavailable" }); - }); - - it("files: a symbolic link under home that leads out of it is the guest's 403 outside_home, and one that stays is read", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "linker"); - const guest = driver.guestOf(dot.id); - guest.putFile("/home/dot/documents/note.txt", "kept"); - guest.putFile("/etc/invisible-dots/config.json", "token"); - // The lexical rule lets all of these through (they name a path under home); the guest's real-path rule is what refuses. - guest.link("/home/dot/environ", "/proc/4242/environ"); - guest.link("/home/dot/config", "/etc/invisible-dots/config.json"); - guest.link("/home/dot/etc", "/etc"); - guest.link("/home/dot/docs", "/home/dot/documents"); - - for (const path of ["environ", "config", "etc/invisible-dots/config.json", "/home/dot/environ"]) { - await expect(scheduler.readFile(dot.id, path), path).rejects.toMatchObject({ status: 403, code: "outside_home" }); - } - await expect(scheduler.listFiles(dot.id, "etc")).rejects.toMatchObject({ status: 403, code: "outside_home" }); - expect(new TextDecoder().decode((await scheduler.readFile(dot.id, "docs/note.txt")).content)).toBe("kept"); - expect(await scheduler.listFiles(dot.id, "docs")).toMatchObject({ entries: [{ name: "note.txt", size: 4 }] }); - }); - - describe("MCP servers", () => { - const withServers = (name: string, servers: string, permissions = "") => - `${yaml(name)}${permissions ? `permissions:\n${permissions}` : ""}mcp_servers:\n${servers}`; - const TIME = " time:\n command: uvx\n args: [mcp-server-time]\n secrets: [TIME_TOKEN]\n"; - const WEB = " web:\n url: https://web.example/mcp\n secrets: [Authorization]\n"; - - it("a secret is set write-only, pushed with the key, and the answer says only which are set", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(withServers("mcp-push", TIME + WEB)); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-push"); - const guest = driver.guestOf(dot.id); - expect(guest.mcpSecrets).toEqual({}); - - const answer = await scheduler.setMcpSecret(dot.id, "web", "Authorization", " Bearer w-1 "); - expect(answer.secrets).toEqual([ - { server: "time", name: "TIME_TOKEN", set: false }, - { server: "web", name: "Authorization", set: true }, - ]); - expect(JSON.stringify(answer)).not.toContain("w-1"); - expect(guest.mcpSecrets).toEqual({ web: { Authorization: "Bearer w-1" } }); - - await scheduler.setMcpSecret(dot.id, "web", "Authorization", null); - expect(guest.mcpSecrets).toEqual({}); - // The guest restarts with nothing in memory: the next READY pushes what is stored again. - await scheduler.setMcpSecret(dot.id, "time", "TIME_TOKEN", "tt-1"); - guest.restartAgent(); - await waitFor(() => guest.mcpSecrets.time?.TIME_TOKEN === "tt-1", "the secrets pushed again after the restart"); - }); - - it("refuses a secret the config does not name, and a value that cannot travel, without storing anything", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(withServers("mcp-refuse", TIME)); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-refuse"); - - await expect(scheduler.setMcpSecret(dot.id, "ghost", "TIME_TOKEN", "x")).rejects.toMatchObject({ status: 404 }); - await expect(scheduler.setMcpSecret(dot.id, "time", "OTHER", "x")).rejects.toMatchObject({ status: 404 }); - const refused = scheduler.setMcpSecret(dot.id, "time", "TIME_TOKEN", "tok-SECRET\nX"); - await expect(refused).rejects.toMatchObject({ status: 400, code: "invalid_request" }); - await refused.catch((error: Error) => expect(error.message).not.toContain("SECRET")); - expect((await scheduler.mcpSecrets(dot.id)).secrets).toEqual([{ server: "time", name: "TIME_TOKEN", set: false }]); - }); - - it("a config that drops a server, or a name of its secrets, drops their values with it", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(withServers("mcp-drop", TIME + WEB)); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-drop"); - await scheduler.setMcpSecret(dot.id, "time", "TIME_TOKEN", "tt-1"); - await scheduler.setMcpSecret(dot.id, "web", "Authorization", "Bearer w-1"); - - await scheduler.updateDot(dot.id, withServers("mcp-drop", TIME)); - expect(await db.secrets.get(dot.id, "mcp/web/Authorization")).toBeNull(); - expect(driver.guestOf(dot.id).mcpSecrets).toEqual({ time: { TIME_TOKEN: "tt-1" } }); - // Declared again, it starts with nothing set. - await scheduler.updateDot(dot.id, withServers("mcp-drop", TIME + WEB)); - expect((await scheduler.mcpSecrets(dot.id)).secrets.find((s) => s.server === "web")?.set).toBe(false); - }); - - it("the tool table says where each declared server is, and its tools are under its permission", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(withServers("mcp-table", TIME + WEB, ' mcp.time: allow\n')); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-table"); - const guest = driver.guestOf(dot.id); - guest.mcpTools.set("time", [{ name: "mcp_time_now", description: "Now." }]); - guest.mcpFailures.set("web", "its secret Authorization is not set"); - - const { tools, mcp_servers } = await scheduler.listTools(dot.id); - expect(tools.find((t) => t.name === "mcp_time_now")).toEqual({ name: "mcp_time_now", permission: "mcp.time", offered: true, description: "Now." }); - expect(mcp_servers).toEqual([ - { name: "time", state: "connected", error: null, tools: 1 }, - { name: "web", state: "failed", error: "its secret Authorization is not set", tools: 0 }, - ]); - }); - - describe("a server the Dot adds itself (add_mcp_server)", () => { - const ARGS = { name: "clock", command: "uvx", args: ["mcp-server-time"], reason: "to tell the time" }; - const refusals = async (dotId: string) => (await db.events.list({ dotId })).filter((e) => e.type === "mcp.server.refused").map((e) => e.data); - - it("is written into the config when the person approved exactly these arguments, with its permission left to ask, and pushed", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "mcp-self"); - const guest = driver.guestOf(dot.id); - // The same arguments in another order: the person approved this entry, however the keys were written. - const id = guest.requestApproval(undefined, "add_mcp_server", "mcp.servers.add", { reason: "to tell the time", args: ["mcp-server-time"], command: "uvx", name: "clock" }); - await waitFor(async () => (await db.approvals.get(id)) !== null, "the approval stored"); - await scheduler.resolveApproval(id, "approve"); - - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => "clock" in ((await db.dots.get(dot.id))?.config.mcp_servers ?? {}), "the server in the config"); - const config = (await db.dots.get(dot.id))!.config; - expect(config.mcp_servers.clock).toEqual({ command: "uvx", args: ["mcp-server-time"], env: {}, secrets: [], timeout_s: 120, startup_timeout_s: 60 }); - expect(config.permissions).not.toHaveProperty("mcp.clock"); - await waitFor(() => guest.config?.mcp_servers.clock !== undefined, "the config pushed to the guest"); - expect((await db.events.list({ dotId: dot.id })).some((e) => e.type === "dot.updated" && e.data.mcp_server_added === "clock" && e.data.approval_id === id)).toBe(true); - }); - - it("uses an approval up: it adds one server once, and a call refused for its entry keeps it", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(`${yaml("mcp-once")}mcp_servers:\n clock:\n command: npx\n`); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-once"); - const guest = driver.guestOf(dot.id); - const id = guest.requestApproval(undefined, "add_mcp_server", "mcp.servers.add", ARGS); - await waitFor(async () => (await db.approvals.get(id)) !== null, "the approval stored"); - await scheduler.resolveApproval(id, "approve"); - - // "clock" is taken: refused before the approval is touched. - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => (await refusals(dot.id)).length === 1, "refused: the name is taken"); - expect((await refusals(dot.id))[0]).toEqual({ name: "clock", reason: 'the Dot\'s config already declares an MCP server "clock"' }); - - // The person frees the name: the same approval adds it now. - await scheduler.updateDot(dot.id, yaml("mcp-once")); - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => { - const clock = (await db.dots.get(dot.id))?.config.mcp_servers.clock; - return clock !== undefined && "command" in clock && clock.command === "uvx"; - }, "added with the approval"); - - // Removed again, the same call cannot bring it back on the approval it used. - await scheduler.updateDot(dot.id, yaml("mcp-once")); - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => (await refusals(dot.id)).length === 2, "refused: the approval is used"); - expect((await refusals(dot.id))[1]).toEqual({ name: "clock", reason: "mcp.servers.add asks, and no unused approval of exactly these arguments was given" }); - expect((await db.dots.get(dot.id))?.config.mcp_servers).toEqual({}); - }); - - it("is written without an approval when the person allowed mcp.servers.add", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(`${yaml("mcp-allowed")}permissions:\n mcp.servers.add: allow\n`); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-allowed"); - driver.guestOf(dot.id).emit("mcp.server.added", { arguments: { name: "web", url: "https://web.example/mcp", secrets: ["Authorization"], reason: "r" } }); - await waitFor(async () => "web" in ((await db.dots.get(dot.id))?.config.mcp_servers ?? {}), "the server in the config"); - expect((await scheduler.mcpSecrets(dot.id)).secrets).toEqual([{ server: "web", name: "Authorization", set: false }]); - }); - - it("is refused, and said, when nobody approved it, the permission is denied, the name is taken or the entry is not one", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(`${yaml("mcp-refused")}mcp_servers:\n taken:\n command: uvx\n`); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-refused"); - const guest = driver.guestOf(dot.id); - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => (await refusals(dot.id)).length === 1, "the first refusal"); - expect((await refusals(dot.id))[0]).toEqual({ name: "clock", reason: "mcp.servers.add asks, and no unused approval of exactly these arguments was given" }); - - await scheduler.updateDot(dot.id, `${yaml("mcp-refused")}permissions:\n mcp.servers.add: allow\nmcp_servers:\n taken:\n command: uvx\n`); - guest.emit("mcp.server.added", { arguments: { name: "taken", command: "npx" } }); - guest.emit("mcp.server.added", { arguments: { name: "both", command: "uvx", url: "https://a.example/mcp" } }); - await waitFor(async () => (await refusals(dot.id)).length === 3, "two more refusals"); - const [, taken, both] = await refusals(dot.id); - expect(taken).toEqual({ name: "taken", reason: 'the Dot\'s config already declares an MCP server "taken"' }); - expect((both as { reason: string }).reason).toMatch(/MCP server is either/); - - await scheduler.updateDot(dot.id, `${yaml("mcp-refused")}permissions:\n mcp.servers.add: deny\nmcp_servers:\n taken:\n command: uvx\n`); - guest.emit("mcp.server.added", { arguments: ARGS }); - await waitFor(async () => (await refusals(dot.id)).length === 4, "the denied one"); - expect((await refusals(dot.id))[3]).toEqual({ name: "clock", reason: "the Dot's config denies mcp.servers.add" }); - expect(Object.keys((await db.dots.get(dot.id))!.config.mcp_servers)).toEqual(["taken"]); - }); - }); - - it("always allowing the permission of a server the config no longer declares is refused, and nothing changes", async () => { - const { scheduler, driver } = make(); - const dot = await scheduler.createDot(withServers("mcp-always", TIME)); - await waitUntilSettledReady(scheduler, driver, dot.id, "mcp-always"); - const id = driver.guestOf(dot.id).requestApproval(undefined, "mcp_time_now", "mcp.time"); - await waitFor(async () => (await scheduler.listApprovals("pending")).some((a) => a.id === id), "the approval"); - await scheduler.updateDot(dot.id, yaml("mcp-always")); - - await expect(scheduler.resolveApproval(id, "approve", { always: true })).rejects.toMatchObject({ status: 409, code: "permission_gone" }); - expect((await db.approvals.get(id))?.status).toBe("pending"); - expect((await db.dots.get(dot.id))?.config.permissions).toEqual({}); - }); - }); - - it("tools: the engine's table with what is offered now; an unreachable computer is not an empty table", async () => { - const { scheduler, driver } = make(); - const dot = await readyDot(scheduler, "toolbox"); - const guest = driver.guestOf(dot.id); - - const { tools, mcp_servers } = await scheduler.listTools("toolbox"); - expect(mcp_servers).toEqual([]); - expect(tools.map((t) => [t.name, t.permission])).toEqual([ - ["exec", "computer.exec"], - ["read_file", "files.read"], - ["write_file", "files.write"], - ["cron", "automations"], - ["browser_identity_list", "browser.identity.list"], - ["browser_identity_create", "browser.identity.create"], - ]); - // The config the host pushed has its defaults filled in: nothing is denied, so the model is offered every tool. - expect(tools.every((t) => t.offered)).toBe(true); - await scheduler.updateDot(dot.id, `${yaml("toolbox")}permissions: - automations: deny -`); - await waitFor(async () => (await scheduler.listTools(dot.id)).tools.some((t) => !t.offered), "config pushed"); - expect((await scheduler.listTools(dot.id)).tools.filter((t) => !t.offered).map((t) => t.name)).toEqual(["cron"]); - - guest.powerOff(); - await expect(scheduler.listTools(dot.id)).rejects.toMatchObject({ status: 502, code: "guest_unavailable" }); - }); - - it("the tools need a running computer", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "tool-sleeper"); - await scheduler.stopComputer(dot.id); - await scheduler.settle(); - - await expect(scheduler.listTools(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - await expect(scheduler.listSkills(dot.id)).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - }); - - it("delete removes the Dot's own OpenRouter key and keeps the global one", async () => { - const { scheduler } = make(); - const dot = await readyDot(scheduler, "keyed"); - await scheduler.setOpenRouterKey("sk-or-own", dot.id); - expect(await db.secrets.get(dot.id, "openrouter_api_key")).toBe("sk-or-own"); - await scheduler.deleteDot("keyed"); - await scheduler.settle(); - expect(await db.secrets.get(dot.id, "openrouter_api_key")).toBeNull(); - expect(await db.secrets.get("global", "openrouter_api_key")).toBe("sk-or-test"); - }); - - it("recovery: a stop that was interrupted is finished for the reason it was asked for", async () => { - const driver = new FakeDriver(); - const first = make(driver).scheduler; - const byIdle = await readyDot(first, "cut-idle"); - const byPerson = await readyDot(first, "cut-person"); - const offByIdle = await readyDot(first, "cut-off"); - await first.close(); - open.splice(open.indexOf(first), 1); - - // The control plane went down between STOPPING and the end of the stop: two VMs still run, one is already off. - await db.computers.setState(byIdle.id, "STOPPING", undefined, "idle"); - await db.computers.setState(byPerson.id, "STOPPING", undefined, "user"); - await db.computers.setState(offByIdle.id, "STOPPING", undefined, "idle"); - driver.crash(offByIdle.id); - - const { scheduler } = make(driver, { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000 }); - await scheduler.start(); - await scheduler.settle(); - expect(await db.computers.get(byIdle.id)).toMatchObject({ state: "STOPPED", stop_reason: "idle" }); - expect(await db.computers.get(byPerson.id)).toMatchObject({ state: "STOPPED", stop_reason: "user" }); - expect(await db.computers.get(offByIdle.id)).toMatchObject({ state: "STOPPED", stop_reason: "idle" }); - }); - - it("recovery: an idle stop that was interrupted is finished also when work came due meanwhile, and the computer is woken for it", async () => { - const driver = new FakeDriver(); - const lifecycle = { healthPollMs: 5, readyTimeoutMs: 3_000, pumpRetryMs: 10, pumpMaxRetryMs: 50, automationWakeLeadMs: 60_000 }; - const first = make(driver, { lifecycle }).scheduler; - const withAutomation = await readyDot(first, "cut-automation"); - const withTask = await readyDot(first, "cut-task"); - await first.close(); - open.splice(open.indexOf(first), 1); - - // Both were being put to sleep when the control plane went down; while it was down an automation came due for - // one and a task for the other. - await db.computers.setState(withAutomation.id, "STOPPING", undefined, "idle"); - await db.computers.setState(withTask.id, "STOPPING", undefined, "idle"); - const { scheduler, clock } = make(driver, { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000, lifecycle }); - await db.computers.setNextAutomation(withAutomation.id, clock.now().getTime() - 1_000); - const task = await db.tasks.insert({ id: `task_cut${Date.now()}`, dotId: withTask.id, description: "came due while away" }); - - await scheduler.start(); - await waitFor(async () => (await db.tasks.get(task.id))?.status === "COMPLETED", "the task ran"); - await scheduler.settle(); - // The pass that start() runs came before the stop was over; the next one wakes the computer for its automation. - await scheduler.pass(); - await scheduler.settle(); - // The stop was finished, not called off: a computer that runs is a computer that is READY and pumped. - for (const dot of [withAutomation, withTask]) { - expect(driver.calls.filter((c) => c === `stop:${dot.id}`)).toHaveLength(1); - expect(driver.calls.filter((c) => c === `start:${dot.id}`)).toHaveLength(2); - expect(await db.computers.get(dot.id)).toMatchObject({ state: "RUNNING", stop_reason: null }); - // settle() is the scheduler's own work: the automation the woken guest runs may still be RUNNING the Dot (seen on - // a loaded PostgreSQL), and it is READY once that is done. - await waitFor(async () => (await db.dots.get(dot.id))?.status === "READY", `${dot.name} READY`, 15_000); - expect(scheduler.lifecycle.isReady(dot.id)).toBe(true); - } - }); - - it("recovery: reattaches to running VMs, marks powered-off ones STOPPED and delivers undelivered tasks", async () => { - const driver = new FakeDriver(); - const first = make(driver).scheduler; - const alive = await readyDot(first, "survivor"); - const dead = await readyDot(first, "casualty"); - await first.close(); - open.splice(open.indexOf(first), 1); - - // While the control plane was down: one VM powered off, one task claimed but never delivered. - driver.crash(dead.id); - const orphan = await db.tasks.insert({ id: `task_orphan${Date.now()}`, dotId: alive.id, description: "orphan" }); - await db.transaction((tx) => tx.tasks.claimNext()); - driver.guestOf(alive.id).emit("browser.identity.created", { identity_id: "bi_away", name: "while-away" }); - - const { scheduler } = make(driver, { dispatchIntervalMs: 60_000, idleCheckIntervalMs: 60_000 }); - await scheduler.start(); - await waitFor(async () => (await db.tasks.get(orphan.id))?.status === "COMPLETED", "orphan task completed"); - // Reattached through the recorded port: no second QEMU was spawned for the survivor. - expect(driver.calls.filter((c) => c === `start:${alive.id}`)).toHaveLength(1); - expect(scheduler.lifecycle.isReady(alive.id)).toBe(true); - expect(await db.computers.get(dead.id)).toMatchObject({ state: "STOPPED", guest_port: null, pid: null, stop_reason: "exited" }); - expect((await db.dots.get(dead.id))?.status).toBe("IDLE"); - // Claimed before the restart, sent after it from the outbox: one run, one task.created. - const runs = await db.tasks.runs(orphan.id); - expect(runs.map((r) => r.outcome)).toEqual(["completed"]); - expect(driver.guestOf(alive.id).inbound.filter((e) => e.type === "task.created" && e.data.task_id === orphan.id)).toHaveLength(1); - const away = await db.events.list({ dotId: alive.id, types: ["browser.identity.created"] }); - expect(away.map((e) => e.data.name)).toEqual(["while-away"]); - }); -}); diff --git a/apps/scheduler/test/upgrade.test.ts b/apps/scheduler/test/upgrade.test.ts deleted file mode 100644 index ceb465ae..00000000 --- a/apps/scheduler/test/upgrade.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * A release's database under this control plane: what a person's install holds must open, migrate and - * go on working after an upgrade. Each directory of test/fixtures/upgrade holds the database one release - * left (host.sql, made by make-host-state.ts from that release's checkout) and the test master key its - * secrets were sealed with. - */ -import { mkdtempSync, readdirSync, readFileSync, rmSync } from "node:fs"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { Database, loadMigrations, OPENROUTER_KEY_NAME, PgliteDb } from "@invisible-dots/database"; -import { createScratchPostgres, testAdapters } from "@invisible-dots/database/testing"; -import pg from "pg"; -import { afterEach, describe, expect, it } from "vitest"; -import { Scheduler } from "../src/index.js"; -import { FakeDriver, ManualClock } from "../src/testing.js"; - -const FIXTURES = fileURLToPath(new URL("./fixtures/upgrade/", import.meta.url)); -const RELEASES = readdirSync(FIXTURES, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => entry.name); - -describe.each(testAdapters())("a release's database under this control plane (%s)", (kind) => { - const cleanup: (() => Promise)[] = []; - afterEach(async () => { - for (const step of cleanup.splice(0).reverse()) await step(); - }); - - /** The release's database loaded as it was left, then opened and migrated by this build. */ - async function upgraded(release: string): Promise { - const dump = readFileSync(join(FIXTURES, release, "host.sql"), "utf8"); - const masterKey = Buffer.from(readFileSync(join(FIXTURES, release, "master.key"), "utf8").trim(), "hex"); - let db: Database; - if (kind === "pglite") { - const dataDir = mkdtempSync(join(tmpdir(), "idots-upgrade-")); - cleanup.push(async () => rmSync(dataDir, { recursive: true, force: true })); - const loader = await PgliteDb.open(dataDir); - await loader.exec(dump); - await loader.close(); - db = await Database.open({ target: { kind: "pglite", dataDir }, masterKey }); - } else { - const { url, drop } = await createScratchPostgres(); - cleanup.push(drop); - const loader = new pg.Client({ connectionString: url }); - await loader.connect(); - await loader.query(dump); - await loader.end(); - db = await Database.open({ target: { kind: "pg", url }, masterKey, poolSize: 3 }); - } - cleanup.push(() => db.close()); - await db.migrate(); - return db; - } - - it("has a release to upgrade from", () => { - expect(RELEASES.length).toBeGreaterThan(0); - }); - - it.each(RELEASES)("%s: migrates to every migration of this build, and its Dots, configs, tasks and secrets read back", async (release) => { - const db = await upgraded(release); - const applied = (await db.query<{ version: string }>("SELECT version FROM schema_migrations ORDER BY version")).rows.map((r) => r.version); - expect(applied).toEqual((await loadMigrations()).map((m) => m.version)); - - const dots = await db.dots.list(); - expect(dots.map((d) => d.name).sort()).toEqual(["fare-watch", "minimal-dot"]); - const watcher = dots.find((d) => d.name === "fare-watch")!; - expect(watcher.config.model.id).toBe("z-ai/glm-5.3-flash"); - expect(watcher.config.permissions?.["files.write"]).toBe("ask"); - expect((await db.computers.get(dots.find((d) => d.name === "minimal-dot")!.id))?.state).toBe("STOPPED"); - - const tasks = await db.tasks.listByDot(watcher.id, { limit: 50 }); - expect(tasks.map((t) => t.status).sort()).toEqual(["CANCELLED", "COMPLETED", "COMPLETED", "WAITING_APPROVAL"]); - - // The secrets open with the key they were sealed with. - expect(await db.secrets.get("global", OPENROUTER_KEY_NAME)).toBe("sk-or-v1-upgrade-fixture-not-a-real-key"); - expect(await db.secrets.get(watcher.id, "telegram_bot_token")).toBe("123456:upgrade-fixture-not-a-real-token"); - const [binding] = await db.channels.listBindings(watcher.id); - expect(binding).toMatchObject({ kind: "telegram", account: "fare_watch_bot" }); - expect((await db.channels.peers(binding!.id)).map((p) => [p.peer_id, p.role])).toEqual([["4242", "owner"]]); - }); - - it.each(RELEASES)("%s: the approval it left pending is answered, new work is queued, and new events follow the old ones", async (release) => { - const db = await upgraded(release); - const scheduler = new Scheduler({ db, driver: new FakeDriver(), clock: new ManualClock(new Date("2026-11-01T09:00:00.000Z")) }); - cleanup.push(() => scheduler.close()); - const watcher = await scheduler.requireDot("fare-watch"); - const lastEvent = (await db.query<{ id: string }>("SELECT max(id)::text AS id FROM events")).rows[0]!.id; - - const [pending] = await scheduler.listApprovals("pending"); - expect(pending).toMatchObject({ dot_id: watcher.id, status: "pending", tool: "browser_identity_delete" }); - const resolved = await scheduler.resolveApproval(pending!.id, "approve", { note: "after the upgrade" }); - expect(resolved.status).toBe("approved"); - const queued = (await db.query<{ type: string; data: { approval_id?: string } }>("SELECT type, data FROM inbound_events WHERE dot_id = $1 AND sent_at IS NULL", [watcher.id])).rows; - expect(queued.some((row) => row.type === "approval.received" && row.data.approval_id === pending!.id)).toBe(true); - - const task = await scheduler.createTask("fare-watch", { description: "Check the fares after the upgrade." }); - expect(task.status).toBe("PENDING"); - const conversation = await scheduler.conversation("fare-watch"); - expect(JSON.stringify(conversation)).toContain("Remember: my favourite colour is teal."); - - const events = await scheduler.listEvents(watcher.id, { after: Number(lastEvent) }); - expect(events.map((e) => e.type)).toEqual(expect.arrayContaining(["approval.resolved", "task.created"])); - }); -}); diff --git a/apps/scheduler/tsconfig.json b/apps/scheduler/tsconfig.json deleted file mode 100644 index 31a061f4..00000000 --- a/apps/scheduler/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] -} diff --git a/apps/vm-manager/package.json b/apps/vm-manager/package.json deleted file mode 100644 index 7b1ff6ed..00000000 --- a/apps/vm-manager/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@invisible-dots/vm-manager", - "version": "0.0.0", - "private": true, - "description": "QEMU driver: overlays, seed ISOs, the QEMU command line, port forwards, the guest client and the host's process runner.", - "license": "MIT", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "typecheck": "tsc -p tsconfig.json" - }, - "dependencies": { - "@invisible-dots/iso": "0.0.0", - "@invisible-dots/shared": "0.0.0" - }, - "devDependencies": { - "yaml": "^2.9.1" - } -} diff --git a/apps/vm-manager/src/accelerator-access.ts b/apps/vm-manager/src/accelerator-access.ts deleted file mode 100644 index 5e65e2da..00000000 --- a/apps/vm-manager/src/accelerator-access.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * The host side of the accelerator (architecture section 1.1), read before - * QEMU is asked to use it: /dev/kvm opened read-write on Linux, the - * HypervisorPlatform optional feature on Windows. One of the two places that - * ask which operating system this is (the other is `accelerator()` in - * host.ts); `doctor` reports what it finds and `invisible-dots setup` - * enables what it finds missing. - */ -import { open } from "node:fs/promises"; -import type { DoctorCheck } from "@invisible-dots/shared"; -import type { Runner } from "./doctor.js"; -import { firstLine, runProcess } from "./runner.js"; -import { HYPERVISOR_PLATFORM_FEATURE, HYPERVISOR_PLATFORM_STATE_SCRIPT, powershellArgs, powershellPath } from "./powershell.js"; - -const KVM_DEVICE = "/dev/kvm"; -const USERMOD_COMMAND = "sudo usermod -aG kvm $USER"; -const FEATURE_QUERY_TIMEOUT_MS = 60_000; -export const UNSUPPORTED_FIX = "run invisible_dots on Linux or Windows (x86-64)"; - -export interface AccessDeps { - platform: NodeJS.Platform; - env: Record; - run: Runner; - /** Opens a path read-write and closes it again; rejects with the errno error. */ - openReadWrite(path: string): Promise; -} - -/** This machine: its platform, the real process runner and the real /dev/kvm. */ -export function hostAccessDeps(env: Record): AccessDeps { - return { - platform: process.platform, - env, - run: runProcess, - openReadWrite: async (path) => { - await (await open(path, "r+")).close(); - }, - }; -} - -/** The host side of the accelerator, before QEMU is asked to use it (doctor's "accelerator" check). */ -export async function checkAcceleratorAccess(deps: AccessDeps): Promise { - if (deps.platform === "linux") return checkKvmDevice(deps); - if (deps.platform === "win32") return checkHypervisorPlatform(deps); - return { - id: "accelerator", - label: "accelerator", - status: "failed", - detail: `${deps.platform} hosts are not supported`, - fix: UNSUPPORTED_FIX, - }; -} - -export async function checkKvmDevice(deps: AccessDeps): Promise { - const base = { id: "accelerator", label: "accelerator" } as const; - try { - await deps.openReadWrite(KVM_DEVICE); - return { ...base, status: "ok", detail: `${KVM_DEVICE} opens read-write` }; - } catch (error) { - const code = (error as NodeJS.ErrnoException).code; - if (code === "ENOENT") { - return { - ...base, - status: "missing", - detail: `${KVM_DEVICE} does not exist`, - fix: "enable hardware virtualization (Intel VT-x or AMD-V) in the firmware settings, then: sudo modprobe kvm_intel (or kvm_amd)", - }; - } - if (code === "EACCES" || code === "EPERM") { - return { - ...base, - status: "missing", - detail: `${KVM_DEVICE} exists but this user cannot open it read-write`, - fix: `${USERMOD_COMMAND}, then log out and in again (a new login is needed for the group to apply)`, - }; - } - return { ...base, status: "failed", detail: `opening ${KVM_DEVICE} failed: ${(error as Error).message}`, fix: "check the kvm kernel module (dmesg | grep -i kvm)" }; - } -} - -async function checkHypervisorPlatform(deps: AccessDeps): Promise { - const base = { id: "accelerator", label: "accelerator" } as const; - const answer = await deps.run(powershellPath(deps.env), powershellArgs(HYPERVISOR_PLATFORM_STATE_SCRIPT), { timeoutMs: FEATURE_QUERY_TIMEOUT_MS }); - if (answer.code !== 0) { - const why = answer.timedOut ? "timed out" : (answer.startError?.message ?? (firstLine(answer.stderr) || `exit code ${answer.code}`)); - return { ...base, status: "failed", detail: `cannot read the ${HYPERVISOR_PLATFORM_FEATURE} feature state: ${why}` }; - } - const state = answer.stdout.trim(); - if (state === "1") return { ...base, status: "ok", detail: `the ${HYPERVISOR_PLATFORM_FEATURE} feature is enabled` }; - if (state === "2") { - return { - ...base, - status: "missing", - detail: `the ${HYPERVISOR_PLATFORM_FEATURE} feature is disabled`, - fix: "invisible-dots setup (enables it with one administrator prompt; a restart follows)", - }; - } - const detail = - state === "" - ? `this Windows does not list the ${HYPERVISOR_PLATFORM_FEATURE} feature` - : `the ${HYPERVISOR_PLATFORM_FEATURE} feature is in state ${state} (3 means its files were removed from this Windows)`; - return { ...base, status: "failed", detail, fix: "use a Windows 10 or 11 edition that offers Windows Hypervisor Platform" }; -} diff --git a/apps/vm-manager/src/doctor.ts b/apps/vm-manager/src/doctor.ts deleted file mode 100644 index d05f4706..00000000 --- a/apps/vm-manager/src/doctor.ts +++ /dev/null @@ -1,291 +0,0 @@ -/** - * The host report (architecture section 11.1): every check, in the - * contract's order, each answering ok / missing / failed and naming the - * command that fixes it. It runs in the API process (`GET /api/doctor`) and - * in `invisible-dots doctor` alike. Doctor only reads: it never creates a - * directory, never opens the database and never changes a setting. - * - * Status meanings, so every check uses them the same way (`DoctorStatus`): - * - ok: present and working. - * - missing: absent; the fix line installs or creates it. - * - failed: present but not working, or the check itself could not tell. - */ -import { ENV, type DoctorAnswer, type DoctorCheck, type DoctorCheckId, type DoctorStatus } from "@invisible-dots/shared"; -import { SETUP_COMMAND, STORE_OPENROUTER_KEY } from "./errors.js"; -import { isSupportedQemuVersion, MIN_QEMU_VERSION_TEXT, parseQemuVersion, type Accelerator, type QemuVersion } from "./host.js"; -import { CPU_MODEL, qemuPathProblem } from "./qemu-args.js"; -import { firstLine, type RunOptions, type RunResult } from "./runner.js"; - -/** `npm run build --workspace @invisible-dots/web`: what leaves the web client where `invisible-dots server` serves it from. */ -export const WEB_BUILD_COMMAND = "npm run build --workspace @invisible-dots/web"; - -export interface WebBuild { - /** The server script `node` runs. */ - entry: string; - /** The first file or directory of the build that does not exist; undefined when the build is complete. */ - missing: string | undefined; -} - -/** Where the QEMU programs were found, each searched separately (section 3.1). */ -export interface FoundQemu { - system?: string; - img?: string; - /** The places searched, in order, for the message when something is not found. */ - searched: string[]; - /** INVISIBLE_DOTS_QEMU_DIR is set, so it was the only place searched. */ - configured?: boolean; -} - -export type Runner = (command: string, args: readonly string[], options?: RunOptions) => Promise; - -export interface DoctorDeps { - /** `process.versions.node`. */ - nodeVersion: string; - /** The vm-manager's choice for this host (section 1.1); throws on a host invisible_dots does not run on. */ - accelerator(): Accelerator; - findQemu(): Promise; - run: Runner; - /** The host side of the accelerator: /dev/kvm or the HypervisorPlatform feature (accelerator-access.ts). */ - acceleratorAccess(): Promise; - /** INVISIBLE_DOTS_HOME, as the server and the image builder will use it. */ - home: string; - /** Free space for INVISIBLE_DOTS_HOME, measured on the nearest directory that exists. */ - freeSpace(): Promise<{ path: string; bytes: number }>; - /** The golden image and the runtime ISO against their manifests, one result each. */ - images(): Promise; - /** Where the built web client is, and the first file of it that is missing. Only a process that serves the web client (`invisible-dots server`) has one: without it the report has no web row. */ - webBuild?(): Promise; - /** Whether an OpenRouter key is stored. */ - openRouterKey(): Promise; -} - -export const MIN_NODE_MAJOR = 24; -/** - * One golden image (a few GiB once provisioned) plus the overlays of a few - * Dots, which grow with what each Dot stores. Below this a first `image - * build` or a busy Dot runs the disk full. - */ -export const MIN_FREE_BYTES = 20 * 1024 ** 3; -/** - * The probe boots the empty machine's firmware, which takes a fraction of a - * second with a working accelerator (0.2 s measured with QEMU 8.2 and KVM); - * a QEMU still running after this long has a virtual CPU that does not run. - */ -export const PROBE_TIMEOUT_MS = 30_000; -const VERSION_TIMEOUT_MS = 15_000; - -/** - * Starts QEMU with the accelerator and the CPU model of the Dots (section - * 3.4) on their machine type with no devices at all, and lets the virtual - * CPU run: the firmware finds nothing to boot, `-boot reboot-timeout=0` - * makes it reset at once, and `-no-reboot` turns that reset into QEMU - * exiting with code 0. So exit code 0 means the accelerator opened AND ran - * guest code, which a QEMU held before its first instruction could never - * show; there is no monitor to talk to, the same as for a Dot. `-accel` is - * given alone, so QEMU cannot fall back to software emulation. - * - * Measured with QEMU 8.2.2 and KVM: exit 0 after 0.2 s, and the firmware's - * debug output reads "No bootable device. Retrying in 0 seconds. Rebooting." - * Without `-no-reboot`, or without the reboot timeout, QEMU never exits. - * - * Not `-machine none`: measured with QEMU 11.1 on Windows, WHPX with - * `-machine none` aborts with "X86_MACHINE: Object ... is not an instance of - * type x86-machine" (exit 3) even where WHPX works, and it has no CPU to run. - */ -export function acceleratorProbeArgs(accelerator: Accelerator): string[] { - return [ - "-nodefaults", - "-no-user-config", - "-machine", - "q35", - "-accel", - accelerator, - "-cpu", - CPU_MODEL, - "-display", - "none", - "-no-reboot", - "-boot", - "reboot-timeout=0", - ]; -} - -/** - * PATH alone can hold dozens of directories, so the line names the search - * order of section 3.1 and how many places it covered rather than all of them. - */ -function notFound(found: FoundQemu): string { - const count = found.searched.length; - if (count === 1 && found.searched[0]!.startsWith("(")) return `not found ${found.searched[0]}`; - if (found.configured) return `not found in ${ENV.QEMU_DIR} (${found.searched[0] ?? ""}), the only place searched while it is set`; - return `not found in the official installer's directory or on PATH (${count} ${count === 1 ? "directory" : "directories"} searched)`; -} - -function versionText(version: QemuVersion): string { - return `${version.major}.${version.minor}.${version.micro}`; -} - -export function formatBytes(bytes: number): string { - return `${(bytes / 1024 ** 3).toFixed(1)} GiB`; -} - -function result(id: DoctorCheckId, label: string, status: DoctorStatus, detail: string, fix?: string): DoctorCheck { - return fix === undefined || status === "ok" ? { id, label, status, detail } : { id, label, status, detail, fix }; -} - -export function checkNode(version: string): DoctorCheck { - const major = Number(version.split(".")[0]); - if (Number.isInteger(major) && major >= MIN_NODE_MAJOR) return result("node", "Node", "ok", version); - return result("node", "Node", "failed", `${version} is older than ${MIN_NODE_MAJOR}`, `install Node ${MIN_NODE_MAJOR} or newer from https://nodejs.org`); -} - -async function checkQemuSystem(found: FoundQemu, run: Runner): Promise { - const label = "QEMU"; - const minimum = MIN_QEMU_VERSION_TEXT; - if (!found.system) { - return result("qemu", label, "missing", `qemu-system-x86_64 ${notFound(found)}`, SETUP_COMMAND); - } - const answer = await run(found.system, ["--version"], { timeoutMs: VERSION_TIMEOUT_MS }); - const version = answer.code === 0 ? parseQemuVersion(answer.stdout) : undefined; - if (!version) { - const why = answer.startError?.message ?? (firstLine(answer.stderr) || `exit code ${answer.code}`); - return result("qemu", label, "failed", `${found.system} --version did not report a version (${why})`, SETUP_COMMAND); - } - const text = versionText(version); - if (!isSupportedQemuVersion(version)) { - return result( - "qemu", - label, - "failed", - `${found.system} is version ${text}, older than ${minimum}`, - `${SETUP_COMMAND}, or set INVISIBLE_DOTS_QEMU_DIR to a QEMU ${minimum} or newer`, - ); - } - return result("qemu", label, "ok", `${text} at ${found.system}`); -} - -async function checkQemuImg(found: FoundQemu, run: Runner): Promise { - if (!found.img) return result("qemu-img", "qemu-img", "missing", `qemu-img ${notFound(found)}`, SETUP_COMMAND); - const answer = await run(found.img, ["--version"], { timeoutMs: VERSION_TIMEOUT_MS }); - const version = answer.code === 0 ? parseQemuVersion(answer.stdout) : undefined; - if (!version) { - const why = answer.startError?.message ?? (firstLine(answer.stderr) || `exit code ${answer.code}`); - return result("qemu-img", "qemu-img", "failed", `${found.img} --version did not report a version (${why})`, SETUP_COMMAND); - } - return result("qemu-img", "qemu-img", "ok", `${versionText(version)} at ${found.img}`); -} - -/** - * Runs whenever QEMU is ready, also when the host-side check said the - * accelerator is missing: that check reads a precondition, the probe reads - * the result. Measured on Windows 11 with VirtualMachinePlatform enabled - * (WSL 2): HypervisorPlatform reports disabled and WHPX still works. - */ -async function probeAccelerator(deps: DoctorDeps, qemu: DoctorCheck, access: DoctorCheck, system: string | undefined): Promise { - const label = "accelerator probe"; - if (qemu.status !== "ok" || !system) { - return result("accelerator-probe", label, qemu.status, `not run: QEMU is not ready`, qemu.fix); - } - const accelerator = deps.accelerator(); - const command = `qemu-system-x86_64 -accel ${accelerator} -cpu ${CPU_MODEL} -machine q35`; - const answer = await deps.run(system, acceleratorProbeArgs(accelerator), { timeoutMs: PROBE_TIMEOUT_MS }); - if (answer.code === 0 && !answer.timedOut) return result("accelerator-probe", label, "ok", `${command} ran the firmware and exited`); - const why = answer.timedOut - ? `did not exit within ${PROBE_TIMEOUT_MS / 1000} s, so the virtual CPU does not run${firstLine(answer.stderr) ? ` (QEMU said: ${firstLine(answer.stderr)})` : ""}` - : (answer.startError?.message ?? (firstLine(answer.stderr) || `exit code ${answer.code}`)); - const fix = - access.status !== "ok" && access.fix - ? access.fix - : "enable hardware virtualization (Intel VT-x or AMD-V) in the firmware settings; after enabling the accelerator, restart the computer"; - return result("accelerator-probe", label, "failed", `${command} failed: ${why}`, fix); -} - -/** A host-side "missing" that the probe contradicts is reported as what it is: QEMU uses the accelerator. */ -function confirmedByProbe(access: DoctorCheck, probe: DoctorCheck): DoctorCheck { - if (access.status !== "missing" || probe.status !== "ok") return access; - return result("accelerator", access.label, "ok", `${access.detail}, but the probe below shows QEMU uses the accelerator`); -} - -const DATA_DIRECTORY = "data directory"; - -/** - * INVISIBLE_DOTS_HOME: a path QEMU can be given (the same rule a Dot's start - * applies, qemuPathProblem), with enough free space. A home under an account - * name with an accent fails here, before an image build or a Dot does. - */ -export function checkDataDirectory(home: string, space: { path: string; bytes: number }): DoctorCheck { - const problem = qemuPathProblem(home); - if (problem) { - return result("disk", DATA_DIRECTORY, "failed", `${home} ${problem}`, `set ${ENV.HOME} to a directory whose path is plain ASCII without commas`); - } - const detail = `${formatBytes(space.bytes)} free at ${space.path}`; - if (space.bytes >= MIN_FREE_BYTES) return result("disk", DATA_DIRECTORY, "ok", detail); - return result( - "disk", - DATA_DIRECTORY, - "failed", - `${detail}, less than ${formatBytes(MIN_FREE_BYTES)}`, - `free some space, or set ${ENV.HOME} to a directory on a larger disk`, - ); -} - -/** The web client `invisible-dots server` serves: built where the server looks for it. */ -export function checkWebBuild(build: WebBuild): DoctorCheck { - if (!build.missing) return result("web", "web client", "ok", `built at ${build.entry}`); - return result("web", "web client", "missing", `not built: ${build.missing} does not exist`, WEB_BUILD_COMMAND); -} - -/** Runs one check; a check that throws is reported as failed instead of ending the report. */ -async function guarded(id: DoctorCheckId, label: string, check: () => Promise): Promise { - try { - return await check(); - } catch (error) { - return result(id, label, "failed", `the check itself failed: ${(error as Error).message}`); - } -} - -/** Every check of section 11.1, in its order. */ -export async function runDoctor(deps: DoctorDeps): Promise { - const results: DoctorCheck[] = [checkNode(deps.nodeVersion)]; - let found: FoundQemu = { searched: [] }; - try { - found = await deps.findQemu(); - } catch (error) { - found = { searched: [`(the search failed: ${(error as Error).message})`] }; - } - const qemu = await guarded("qemu", "QEMU", () => checkQemuSystem(found, deps.run)); - results.push(qemu); - results.push(await guarded("qemu-img", "qemu-img", () => checkQemuImg(found, deps.run))); - const access = await guarded("accelerator", "accelerator", () => deps.acceleratorAccess()); - const probe = await guarded("accelerator-probe", "accelerator probe", () => probeAccelerator(deps, qemu, access, found.system)); - results.push(confirmedByProbe(access, probe), probe); - results.push(await guarded("disk", DATA_DIRECTORY, async () => checkDataDirectory(deps.home, await deps.freeSpace()))); - try { - results.push(...(await deps.images())); - } catch (error) { - const detail = `the check itself failed: ${(error as Error).message}`; - results.push(result("golden-image", "golden image", "failed", detail), result("runtime-image", "runtime ISO", "failed", detail)); - } - const webBuild = deps.webBuild; - if (webBuild) results.push(await guarded("web", "web client", async () => checkWebBuild(await webBuild()))); - results.push(await guarded("openrouter", "OpenRouter key", () => deps.openRouterKey())); - return results; -} - -export function allOk(results: readonly DoctorCheck[]): boolean { - return results.every((r) => r.status === "ok"); -} - -/** The report as the API and `doctor --json` send it. */ -export function doctorAnswer(results: readonly DoctorCheck[]): DoctorAnswer { - return { ok: allOk(results), checks: [...results] }; -} - -/** - * The OpenRouter key row from what the control plane knows (`openrouter_configured` of its health), asked of - * the scheduler in the API and of the running server by the CLI. - */ -export function openRouterCheck(configured: boolean): DoctorCheck { - const base = { id: "openrouter", label: "OpenRouter key" } as const; - return configured ? { ...base, status: "ok", detail: "stored" } : { ...base, status: "missing", detail: "no key stored", fix: STORE_OPENROUTER_KEY }; -} diff --git a/apps/vm-manager/src/errors.ts b/apps/vm-manager/src/errors.ts deleted file mode 100644 index c1689fc8..00000000 --- a/apps/vm-manager/src/errors.ts +++ /dev/null @@ -1,174 +0,0 @@ -/** Errors raised by the vm-manager. Each one says which command or VM it is about, and what fixes it when something can. */ - -/** The commands that prepare a host (architecture section 11); errors and the doctor report about the host name them. */ -export const DOCTOR_COMMAND = "invisible-dots doctor"; -export const SETUP_COMMAND = "invisible-dots setup"; -/** Stores the OpenRouter key: in a terminal it asks for it, one line; piped, it reads standard input. */ -export const STORE_OPENROUTER_KEY = "invisible-dots secret openrouter"; - -/** A host command exited non-zero, timed out or could not be started. */ -export class CommandError extends Error { - readonly command: string; - readonly args: readonly string[]; - readonly exitCode: number | null; - readonly stdout: string; - readonly stderr: string; - readonly timedOut: boolean; - /** The errno code when the command could not be started at all (ENOENT when it is not installed). */ - readonly code: string | undefined; - - constructor(init: { - command: string; - args: readonly string[]; - exitCode: number | null; - stdout?: string; - stderr?: string; - timedOut?: boolean; - code?: string; - message?: string; - cause?: unknown; - }) { - const line = [init.command, ...init.args].join(" "); - const stderr = (init.stderr ?? "").trim(); - const reason = - init.message ?? - (init.timedOut - ? "timed out" - : init.code === "ENOENT" - ? `command not found (run "${DOCTOR_COMMAND}")` - : `exited with code ${init.exitCode}`); - super(`${line}: ${reason}${stderr ? `: ${stderr}` : ""}`, init.cause === undefined ? undefined : { cause: init.cause }); - this.name = "CommandError"; - this.command = init.command; - this.args = init.args; - this.exitCode = init.exitCode; - this.stdout = init.stdout ?? ""; - this.stderr = init.stderr ?? ""; - this.timedOut = init.timedOut ?? false; - this.code = init.code; - } - - /** Whether the command itself is missing from the host. */ - get notFound(): boolean { - return this.code === "ENOENT"; - } -} - -/** A feature the contract places out of scope for this version (architecture section 10). */ -export class NotImplementedError extends Error { - constructor(feature: string) { - super(`${feature} is out of scope for this version (architecture section 10)`); - this.name = "NotImplementedError"; - } -} - -/** The operation needs the VM in another state, e.g. a disk resize on a running VM. */ -export class VmStateError extends Error { - readonly dotId: string; - constructor(dotId: string, message: string) { - super(`dot ${dotId}: ${message}`); - this.name = "VmStateError"; - this.dotId = dotId; - } -} - -/** Invalid input to the vm-manager (a bad dot id, a shrinking disk, a missing image). */ -export class VmManagerError extends Error { - constructor(message: string, options?: { cause?: unknown }) { - super(message, options); - this.name = "VmManagerError"; - } -} - -/** QEMU (qemu-system-x86_64 or qemu-img) is not installed where the vm-manager looks (section 3.1). */ -export class QemuNotFoundError extends Error { - readonly binary: string; - readonly searched: readonly string[]; - constructor(binary: string, searched: readonly string[]) { - super( - `${binary} was not found (looked in: ${searched.length > 0 ? searched.join(", ") : "nothing"}). ` + - `Run "${SETUP_COMMAND}" to install QEMU, or set INVISIBLE_DOTS_QEMU_DIR to the directory that holds it; ` + - `"${DOCTOR_COMMAND}" checks the result.`, - ); - this.name = "QemuNotFoundError"; - this.binary = binary; - this.searched = searched; - } -} - -/** - * QEMU could not use the hardware accelerator. There is no fallback to - * software emulation (section 1.1): the start fails and says what fixes it. - */ -export class AcceleratorUnavailableError extends Error { - readonly accelerator: string; - readonly qemuOutput: string; - constructor(accelerator: string, qemuOutput: string) { - super( - `QEMU could not use the ${accelerator} accelerator, and invisible_dots never falls back to software emulation. ` + - `Run "${DOCTOR_COMMAND}" to see what is missing and "${SETUP_COMMAND}" to fix it. QEMU said: ${qemuOutput.trim() || "nothing"}`, - ); - this.name = "AcceleratorUnavailableError"; - this.accelerator = accelerator; - this.qemuOutput = qemuOutput; - } -} - -/** - * The accelerator does not run the Dots' CPU model (`CPU_MODEL`, section - * 3.4). Section 3.4 forbids replacing it with a guessed one, so this is an - * error to report, not to work around. - */ -export class CpuModelError extends Error { - readonly accelerator: string; - readonly qemuOutput: string; - constructor(accelerator: string, cpuModel: string, qemuOutput: string) { - super( - `QEMU rejected "-cpu ${cpuModel}" with the ${accelerator} accelerator. invisible_dots does not substitute another CPU model ` + - `(architecture section 3.4); run "${DOCTOR_COMMAND}". QEMU said: ${qemuOutput.trim() || "nothing"}`, - ); - this.name = "CpuModelError"; - this.accelerator = accelerator; - this.qemuOutput = qemuOutput; - } -} - -/** - * QEMU exited during start, never set up its port forward, or started but - * never brought the guest up. `qemuOutput` is what QEMU wrote to its log and - * `serialOutput` the end of the guest's serial console: together they are - * what says why, since nothing else watches a VM's insides (section 3.4). - */ -export class VmStartError extends Error { - readonly dotId: string; - readonly qemuOutput: string; - readonly serialOutput: string; - constructor(dotId: string, message: string, qemuOutput = "", options?: { cause?: unknown; serialOutput?: string }) { - const output = qemuOutput.trim(); - const serial = (options?.serialOutput ?? "").trim(); - super( - `dot ${dotId}: ${message}${output ? `. QEMU said: ${output}` : ""}${serial ? `. The serial console ends with: ${serial}` : ""}`, - options?.cause === undefined ? undefined : { cause: options.cause }, - ); - this.name = "VmStartError"; - this.dotId = dotId; - this.qemuOutput = qemuOutput; - this.serialOutput = options?.serialOutput ?? ""; - } -} - -/** A guest route answered with an error status, or with something that is not the expected shape. */ -export class GuestRequestError extends Error { - readonly status: number; - /** The `error` code of an `{ error, message }` body, when the guest sent one. */ - readonly code: string | undefined; - readonly route: string; - - constructor(route: string, status: number, message: string, code?: string) { - super(`${route}: ${status === 0 ? "" : `HTTP ${status}: `}${message}`); - this.name = "GuestRequestError"; - this.route = route; - this.status = status; - this.code = code; - } -} diff --git a/apps/vm-manager/src/guest-client.ts b/apps/vm-manager/src/guest-client.ts deleted file mode 100644 index 834eb1f3..00000000 --- a/apps/vm-manager/src/guest-client.ts +++ /dev/null @@ -1,495 +0,0 @@ -/** - * The host's client for one Dot: every dot-agentd route (architecture 5.2) and - * every agent route behind `/v1/agent` (5.3), over HTTP/1.1 to - * 127.0.0.1:, which QEMU forwards to dot-agentd's TCP port 1024 - * (5.1). Every request carries the Dot's bearer token: the port is not a - * credential, any local process and any guest can reach it. - */ -import { createHmac, randomBytes, timingSafeEqual } from "node:crypto"; -import { request, type IncomingMessage, type OutgoingHttpHeaders } from "node:http"; -import { - abortableSleep, - AGENTD_ROUTES, - AGENT_ROUTES, - FILE_TOO_LARGE, - GUEST_PROOF_CONTEXT, - GUEST_UNPROVEN, - GuestHealthTimeoutError, - isFatalGuestError, - parseOutboundEvent, - pollGuestHealth, - PREPARE_SLEEP_TIMEOUT_MS, - REFUSED_PROBLEM_MAX, - SseParser, - type AgentHealthAnswer, - type AgentStateAnswer, - type BrowserIdentity, - type BrowserIdentityListAnswer, - type CreateBrowserIdentityRequest, - type DotRuntimeConfig, - type ExecAnswer, - type ExecRequest, - type FileListAnswer, - type HealthAnswer, - type InboundEvent, - type OutboundEvent, - type PollGuestHealthOptions, - type PostEventAnswer, - type ProofAnswer, - type RefusedEvent, - type SystemAnswer, - type SecretsRequest, - type SkillListAnswer, - type ToolListAnswer, - silentLogger, - type Logger, -} from "@invisible-dots/shared"; -import { GuestRequestError } from "./errors.js"; -import { GUEST_PORT_HOST } from "./ports.js"; - -export interface GuestClientOptions { - /** Per-request timeout. Default 30 s; exec adds its own timeout on top. */ - timeoutMs?: number; - logger?: Logger; - /** Default 127.0.0.1, where QEMU binds the forward. */ - host?: string; -} - -export interface EventStreamOptions { - /** Resume after this outbound `seq`; the stream sends only newer events. Default 0. */ - after?: number; - /** - * Called, in order with the events, for a message the host refused, and awaited before the stream goes on. A refused - * message with a `seq` is passed once (the stream resumes after it); one without cannot be told apart on a reconnect. - */ - onRefused?: (info: RefusedEvent) => void | Promise; - signal?: AbortSignal; - /** First reconnect delay; doubles up to `maxReconnectDelayMs`. Default 500 ms. */ - reconnectDelayMs?: number; - maxReconnectDelayMs?: number; - /** Called before each reconnect, e.g. to log it. */ - onReconnect?: (info: { after: number; attempt: number; error: Error }) => void; -} - -/** The proof a guest holding `token` gives for `nonce` (`GET /v1/proof`, section 5.1). */ -export function guestProof(token: string, nonce: string): string { - return createHmac("sha256", token).update(`${GUEST_PROOF_CONTEXT}${nonce}`).digest("hex"); -} - -interface Call { - /** Sent without the token; only the proof route is. */ - unauthenticated?: boolean; - method?: string; - path: string; - body?: unknown; - rawBody?: Uint8Array; - contentType?: string; - timeoutMs?: number; - signal?: AbortSignal; - /** The most the answer may hold; a larger one ends the call with `FILE_TOO_LARGE` and is not buffered. */ - maxBytes?: number; -} - -interface Answer { - status: number; - body: Buffer; - /** The media type of the answer, without parameters, lower case; "" when it sent none. */ - contentType: string; -} - -function filesQuery(path: string): string { - return `?path=${encodeURIComponent(path)}`; -} - -function parseError(route: string, answer: Pick): GuestRequestError { - const text = answer.body.toString("utf8"); - try { - const parsed = JSON.parse(text) as { error?: unknown; message?: unknown }; - if (typeof parsed.error === "string") { - return new GuestRequestError( - route, - answer.status, - typeof parsed.message === "string" ? `${parsed.error}: ${parsed.message}` : parsed.error, - parsed.error, - ); - } - } catch { - // Not JSON: the raw text is the most useful message. - } - const hint = answer.status === 401 ? " (the Dot token was refused)" : ""; - return new GuestRequestError(route, answer.status, `${text.trim().slice(0, 500) || "no body"}${hint}`); -} - -export class GuestClient { - readonly host: string; - readonly port: number; - private readonly token: string; - private readonly timeoutMs: number; - private readonly logger: Logger; - /** Settles once whatever listens on the port proved it holds the token; until then the token is never sent. */ - private proven: Promise | undefined; - - constructor(port: number, token: string, options: GuestClientOptions = {}) { - if (!Number.isInteger(port) || port < 1 || port > 65535) throw new Error(`GuestClient needs a TCP port, got ${port}`); - if (!token) throw new Error("GuestClient needs the Dot token"); - this.host = options.host ?? GUEST_PORT_HOST; - this.port = port; - this.token = token; - this.timeoutMs = options.timeoutMs ?? 30_000; - this.logger = options.logger ?? silentLogger; - } - - /** Where this client sends requests, for logs and errors. */ - get address(): string { - return `${this.host}:${this.port}`; - } - - private open(method: string, path: string, headers: OutgoingHttpHeaders, signal: AbortSignal | undefined) { - // No keep-alive agent: after a VM restart the same port may lead to a new guest, and a pooled socket would not. - return request({ host: this.host, port: this.port, method, path, headers, agent: false, signal }); - } - - /** - * Make whatever listens on the port prove it holds the Dot token before - * the token is sent there (section 5.1). A port is not a credential: after - * a host restart or a QEMU that died, another process can listen on a - * port the host still has on record. A failed proof is GUEST_UNPROVEN, - * which no caller retries; a guest that is not up yet is retried as usual. - */ - async prove(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise { - const nonce = randomBytes(16).toString("hex"); - const path = `${AGENTD_ROUTES.proof}?nonce=${nonce}`; - const answer = await this.json({ path, unauthenticated: true, ...options }); - const expected = Buffer.from(guestProof(this.token, nonce), "utf8"); - const given = Buffer.from(typeof answer?.proof === "string" ? answer.proof : "", "utf8"); - if (given.length !== expected.length || !timingSafeEqual(given, expected)) { - throw new GuestRequestError( - `GET ${AGENTD_ROUTES.proof}`, - 0, - `${this.address} is not this Dot's guest: it could not prove it holds the Dot token, so the token was not sent to it`, - GUEST_UNPROVEN, - ); - } - } - - private ensureProven(signal: AbortSignal | undefined): Promise { - this.proven ??= this.prove({ signal }).catch((error: unknown) => { - // A guest still booting fails the same way; the next request asks again. - this.proven = undefined; - throw error; - }); - return this.proven; - } - - private async send(call: Call): Promise { - if (!call.unauthenticated) await this.ensureProven(call.signal); - return this.sendRaw(call); - } - - private sendRaw(call: Call): Promise { - const method = call.method ?? "GET"; - const route = `${method} ${call.path}`; - const headers: OutgoingHttpHeaders = call.unauthenticated ? {} : { authorization: `Bearer ${this.token}` }; - let body: Buffer | undefined; - if (call.rawBody !== undefined) { - body = Buffer.from(call.rawBody); - headers["content-type"] = call.contentType ?? "application/octet-stream"; - } else if (call.body !== undefined) { - body = Buffer.from(JSON.stringify(call.body), "utf8"); - headers["content-type"] = "application/json"; - } - if (body !== undefined) headers["content-length"] = body.length; - const timeoutMs = call.timeoutMs ?? this.timeoutMs; - - return new Promise((resolve, reject) => { - let settled = false; - const finish = (error: Error | undefined, answer?: Answer) => { - if (settled) return; - settled = true; - clearTimeout(timer); - if (error) { - req.destroy(); - reject(error); - } else if (answer!.status < 200 || answer!.status >= 300) { - reject(parseError(route, answer!)); - } else { - resolve(answer!); - } - }; - const req = this.open(method, call.path, headers, call.signal); - const timer = setTimeout(() => finish(new GuestRequestError(route, 0, `no answer from ${this.address} within ${timeoutMs} ms`)), timeoutMs); - req.on("response", (res: IncomingMessage) => { - const chunks: Buffer[] = []; - let received = 0; - const tooLarge = () => new GuestRequestError(route, 413, `the answer is larger than ${call.maxBytes} bytes`, FILE_TOO_LARGE); - // An error answer is small and its text is the reason; only a successful body is held to the limit. - const limited = call.maxBytes !== undefined && (res.statusCode ?? 0) >= 200 && (res.statusCode ?? 0) < 300; - if (limited && Number(res.headers["content-length"]) > call.maxBytes!) return finish(tooLarge()); - res.on("data", (chunk: Buffer) => { - received += chunk.length; - if (limited && received > call.maxBytes!) return finish(tooLarge()); - chunks.push(chunk); - }); - res.on("error", (error) => finish(new GuestRequestError(route, 0, `answer interrupted: ${error.message}`))); - res.on("end", () => finish(undefined, { status: res.statusCode ?? 0, body: Buffer.concat(chunks), contentType: String(res.headers["content-type"] ?? "").split(";")[0]!.trim().toLowerCase() })); - }); - req.on("error", (error: NodeJS.ErrnoException) => { - const hint = error.code === "ECONNREFUSED" ? " (nothing listens on the guest port: is the VM running?)" : ""; - finish(new GuestRequestError(route, 0, `${this.address}: ${error.message}${hint}`, error.code)); - }); - req.end(body); - }); - } - - private async json(call: Call): Promise { - const answer = await this.send(call); - const text = answer.body.toString("utf8"); - try { - return JSON.parse(text) as T; - } catch { - throw new GuestRequestError(`${call.method ?? "GET"} ${call.path}`, answer.status, `answer is not JSON: ${text.slice(0, 200)}`); - } - } - - private async noContent(call: Call): Promise { - await this.send(call); - } - - private agentPath(path: string): string { - return `${AGENTD_ROUTES.agent}${path}`; - } - - // dot-agentd (5.2) - - health(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise { - return this.json({ path: AGENTD_ROUTES.health, ...options }); - } - - system(): Promise { - return this.json({ path: AGENTD_ROUTES.system }); - } - - exec(body: ExecRequest): Promise { - // The command may legitimately run for timeout_ms; give the transport that long plus a margin. - const timeoutMs = body.timeout_ms === undefined ? undefined : body.timeout_ms + this.timeoutMs; - return this.json({ method: "POST", path: AGENTD_ROUTES.exec, body, timeoutMs }); - } - - /** The file's bytes; with `maxBytes`, a larger file is refused (413 `FILE_TOO_LARGE`) without being read in full. */ - async readFile(path: string, options: { maxBytes?: number } = {}): Promise { - return (await this.send({ path: `${AGENTD_ROUTES.files}${filesQuery(path)}`, maxBytes: options.maxBytes })).body; - } - - writeFile(path: string, content: string | Uint8Array): Promise { - const rawBody = typeof content === "string" ? Buffer.from(content, "utf8") : content; - return this.noContent({ method: "PUT", path: `${AGENTD_ROUTES.files}${filesQuery(path)}`, rawBody }); - } - - listFiles(path: string): Promise { - return this.json({ path: `${AGENTD_ROUTES.filesList}${filesQuery(path)}` }); - } - - /** - * Ask the guest to power itself off (`/usr/bin/sudo -n /usr/bin/systemctl poweroff`). The 202 - * comes back before the shutdown begins; QEMU exits when the guest is off, - * which is what the vm-manager then waits for. - */ - powerOff(timeoutMs?: number): Promise { - return this.noContent({ method: "POST", path: AGENTD_ROUTES.poweroff, timeoutMs }); - } - - /** PNG bytes of display :0. */ - async screenshot(): Promise { - return (await this.send({ path: AGENTD_ROUTES.screenshot })).body; - } - - // invisible-dots-agent (5.3), through /v1/agent - - agentHealth(): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.health) }); - } - - pushSecrets(secrets: SecretsRequest): Promise { - return this.noContent({ method: "POST", path: this.agentPath(AGENT_ROUTES.secrets), body: secrets }); - } - - putConfig(config: DotRuntimeConfig): Promise { - return this.noContent({ method: "PUT", path: this.agentPath(AGENT_ROUTES.config), body: config }); - } - - postEvent(event: InboundEvent): Promise { - return this.json({ method: "POST", path: this.agentPath(AGENT_ROUTES.events), body: event }); - } - - state(): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.state) }); - } - - listBrowserIdentities(): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.browserIdentities) }); - } - - createBrowserIdentity(body: CreateBrowserIdentityRequest): Promise { - return this.json({ method: "POST", path: this.agentPath(AGENT_ROUTES.browserIdentities), body }); - } - - getBrowserIdentity(id: string): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.browserIdentity(id)) }); - } - - deleteBrowserIdentity(id: string): Promise { - return this.noContent({ method: "DELETE", path: this.agentPath(AGENT_ROUTES.browserIdentity(id)) }); - } - - /** - * JPEG bytes of the open identity's window. The route's contract is a JPEG (architecture section 5.3), and the engine - * is its one owner: it answers `frame_failed` for any other media type, so the host labels the bytes `image/jpeg` - * all the way to the browser without looking again. - */ - async getBrowserIdentityFrame(id: string): Promise { - return (await this.send({ path: this.agentPath(AGENT_ROUTES.browserIdentityFrame(id)) })).body; - } - - closeBrowserIdentity(id: string): Promise { - return this.noContent({ method: "POST", path: this.agentPath(AGENT_ROUTES.browserIdentityClose(id)) }); - } - - /** The Dot's tools and whether the model is offered each now. */ - listTools(): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.tools) }); - } - - /** The Dot's skills, the built-in ones and its own, each with its whole file. */ - listSkills(): Promise { - return this.json({ path: this.agentPath(AGENT_ROUTES.skills) }); - } - - /** Flushes state and closes browser sessions; can take a while with several browsers open. */ - prepareSleep(timeoutMs = PREPARE_SLEEP_TIMEOUT_MS): Promise { - return this.noContent({ method: "POST", path: this.agentPath(AGENT_ROUTES.prepareSleep), timeoutMs }); - } - - /** - * The outbound event stream, as an async iterator that survives disconnects: - * on a network error or end of stream it reconnects with `?after=`, so an event is neither lost nor delivered twice. It ends when - * `signal` aborts or the consumer stops iterating. Not retried: a 401 or - * 404 (a wrong token or a wrong guest does not get better by waiting), a - * failed proof, and a refused connection: QEMU listens on the guest port - * for as long as it runs, so nothing listening means the VM is gone and - * the caller has to look at the VM, not at this port. - */ - async *events(options: EventStreamOptions = {}): AsyncGenerator { - let after = options.after ?? 0; - const firstDelay = options.reconnectDelayMs ?? 500; - const maxDelay = options.maxReconnectDelayMs ?? 15_000; - let attempt = 0; - const signal = options.signal; - while (!signal?.aborted) { - const stream = this.openStream(after, signal); - let lastError: Error | undefined; - try { - for await (const item of stream) { - attempt = 0; - if ("refused" in item) { - const { seq } = item.refused; - if (seq !== null && seq <= after) continue; - await options.onRefused?.(item.refused); - if (seq !== null) after = seq; - continue; - } - const event = item.event; - if (event.seq <= after) continue; - after = event.seq; - yield event; - } - lastError = new Error("event stream ended"); - } catch (error) { - if (error instanceof GuestRequestError && (error.status === 401 || error.status === 404)) throw error; - if (isFatalGuestError(error) || (error as { code?: unknown }).code === "ECONNREFUSED") throw error; - lastError = error as Error; - } finally { - await stream.return(undefined); - } - if (signal?.aborted) return; - attempt++; - options.onReconnect?.({ after, attempt, error: lastError }); - this.logger.warn("guest event stream reconnecting", { guest: this.address, after, attempt, reason: lastError.message }); - await abortableSleep(Math.min(firstDelay * 2 ** (attempt - 1), maxDelay), signal); - } - } - - /** One connection to `/events/stream`, parsed into events and the messages that are none; ends when the connection ends. */ - private async *openStream( - after: number, - signal: AbortSignal | undefined, - ): AsyncGenerator<{ event: OutboundEvent } | { refused: RefusedEvent }, void, undefined> { - const path = `${this.agentPath(AGENT_ROUTES.eventsStream)}?after=${after}`; - const route = `GET ${path}`; - await this.ensureProven(signal); - const req = this.open("GET", path, { authorization: `Bearer ${this.token}`, accept: "text/event-stream" }, signal); - try { - const response = await new Promise((resolve, reject) => { - req.once("response", resolve); - req.once("error", (error: NodeJS.ErrnoException) => - reject(new GuestRequestError(route, 0, `${this.address}: ${error.message}`, error.code)), - ); - req.end(); - }); - if ((response.statusCode ?? 0) !== 200) { - const chunks: Buffer[] = []; - for await (const chunk of response) chunks.push(chunk as Buffer); - throw parseError(route, { status: response.statusCode ?? 0, body: Buffer.concat(chunks) }); - } - response.setEncoding("utf8"); - const parser = new SseParser(); - for await (const chunk of response) { - for (const message of parser.feed(chunk as string)) { - if (message.data === "") continue; - let event: OutboundEvent; - try { - event = parseOutboundEvent(JSON.parse(message.data)); - } catch (error) { - // One malformed message must not stall the stream forever; it is logged, handed to the consumer to be - // recorded, and skipped. - this.logger.error("guest sent an invalid event, skipped", { id: message.id, error: (error as Error).message }); - yield { refused: refusedOf(message.data, error as Error) }; - continue; - } - yield { event }; - } - } - } finally { - req.destroy(); - } - } -} - -/** What a refused message is called: the `seq` and `type` it carried, when it was JSON that carried them, and why it was refused. */ -function refusedOf(data: string, error: Error): RefusedEvent { - let seq: number | null = null; - let type: string | null = null; - try { - const raw = JSON.parse(data) as { seq?: unknown; type?: unknown }; - if (typeof raw.seq === "number" && Number.isSafeInteger(raw.seq) && raw.seq > 0) seq = raw.seq; - if (typeof raw.type === "string") type = raw.type.slice(0, 64); - } catch { - // Not JSON: nothing of it can be named. - } - const problem = error.message.length > REFUSED_PROBLEM_MAX ? `${error.message.slice(0, REFUSED_PROBLEM_MAX - 3)}...` : error.message; - return { seq, type, problem }; -} - -export type WaitForGuestHealthOptions = PollGuestHealthOptions; - -export { GuestHealthTimeoutError }; - -/** - * Poll `GET /v1/health` until the guest is up: the shared rule and loop of - * `pollGuestHealth`, over this client. The first request of a client asks - * the listener for its proof, so a port taken over by another process fails - * at once, without the token ever being sent to it. - */ -export function waitForGuestHealth(client: GuestClient, options: WaitForGuestHealthOptions = {}): Promise { - return pollGuestHealth(client, options); -} diff --git a/apps/vm-manager/src/host-doctor.ts b/apps/vm-manager/src/host-doctor.ts deleted file mode 100644 index 78c76880..00000000 --- a/apps/vm-manager/src/host-doctor.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * The doctor's dependencies on the real machine (architecture section 11.1): - * QEMU discovery, the accelerator, the free disk space and the process - * runner. What needs more than the vm-manager knows, the images' manifests - * and the OpenRouter key, is handed in by the caller: the API process asks - * its own Scheduler, `invisible-dots doctor` asks the running server. - */ -import { stat, statfs } from "node:fs/promises"; -import { basename, dirname } from "node:path"; -import { ENV, type DoctorCheck } from "@invisible-dots/shared"; -import { checkAcceleratorAccess, hostAccessDeps } from "./accelerator-access.js"; -import type { DoctorDeps, FoundQemu } from "./doctor.js"; -import { QemuNotFoundError } from "./errors.js"; -import { accelerator, findQemu, isExecutableFile, QEMU_SYSTEM_NAMES, qemuSearchDirs } from "./host.js"; -import { runProcess } from "./runner.js"; - -/** - * The vm-manager's discovery, with each program reported separately for - * doctor. findQemu stops at the first program it cannot find; the probe - * passed as `exists` remembers qemu-system-x86_64 when it was found and only - * qemu-img is missing, so doctor can still check its version. - */ -export async function locateQemu(env: Record): Promise { - const found = new Set(); - const exists = async (path: string) => { - const ok = await isExecutableFile(path); - if (ok) found.add(path); - return ok; - }; - const configured = Boolean(env[ENV.QEMU_DIR]?.trim()); - try { - const programs = await findQemu(env, exists); - return { ...programs, searched: qemuSearchDirs(env), configured }; - } catch (error) { - if (!(error instanceof QemuNotFoundError)) throw error; - const system = [...found].find((path) => (QEMU_SYSTEM_NAMES as readonly string[]).includes(basename(path))); - return { ...(system ? { system } : {}), searched: [...error.searched], configured }; - } -} - -/** Free space where INVISIBLE_DOTS_HOME is or will be: its nearest existing directory, since doctor creates nothing. */ -export async function freeSpace(home: string): Promise<{ path: string; bytes: number }> { - let path = home; - for (;;) { - const info = await stat(path).catch(() => undefined); - if (info?.isDirectory()) break; - const parent = dirname(path); - if (parent === path) break; - path = parent; - } - const fs = await statfs(path); - return { path, bytes: fs.bavail * fs.bsize }; -} - -export interface HostDoctorOptions { - env: Record; - /** INVISIBLE_DOTS_HOME, as `hostPaths` resolved it. */ - home: string; - /** The golden image and the runtime ISO against their manifests, one row each. */ - images(): Promise; - /** The OpenRouter key row (`openRouterCheck` for a known answer). */ - openRouterKey(): Promise; -} - -export function hostDoctorDeps(options: HostDoctorOptions): DoctorDeps { - return { - nodeVersion: process.versions.node, - // Asked when a check needs it: on an unsupported host it throws, and that check reports it. - accelerator: () => accelerator(), - findQemu: () => locateQemu(options.env), - run: runProcess, - acceleratorAccess: () => checkAcceleratorAccess(hostAccessDeps(options.env)), - home: options.home, - freeSpace: () => freeSpace(options.home), - images: options.images, - openRouterKey: options.openRouterKey, - }; -} diff --git a/apps/vm-manager/src/host.ts b/apps/vm-manager/src/host.ts deleted file mode 100644 index d8a2bc5a..00000000 --- a/apps/vm-manager/src/host.ts +++ /dev/null @@ -1,160 +0,0 @@ -/** - * What the vm-manager needs from the host: where QEMU is and which - * accelerator it uses. `accelerator()` is the only function in the vm-manager - * whose answer depends on the operating system (architecture section 1.1); - * QEMU discovery is the same search on every host over a list of directories. - */ -import { constants } from "node:fs"; -import { access, stat } from "node:fs/promises"; -import { delimiter, isAbsolute, join } from "node:path"; -import { ENV } from "@invisible-dots/shared"; -import { QemuNotFoundError, SETUP_COMMAND } from "./errors.js"; - -export type Accelerator = "kvm" | "whpx"; - -/** - * The QEMU accelerator of this host (section 1.1): KVM on Linux, the Windows - * Hypervisor Platform on Windows. Any other host is unsupported rather than - * given software emulation, which the contract never uses. - */ -export function accelerator(platform: NodeJS.Platform = process.platform): Accelerator { - switch (platform) { - case "linux": - return "kvm"; - case "win32": - return "whpx"; - default: - throw new Error( - `invisible_dots does not run on ${platform}: it needs Linux (KVM) or Windows (Windows Hypervisor Platform) on x86-64 ` + - `(architecture section 1.1). Run "${SETUP_COMMAND}" on a supported host.`, - ); - } -} - -/** - * The official Windows installer installs into `$PROGRAMFILES64\qemu` (its - * InstallDir). virtualization/qemu/windows.json records the same - * subdirectory and a test keeps the two equal. - */ -export const OFFICIAL_QEMU_SUBDIR = "qemu"; - -/** - * Where the official Windows installer puts QEMU on this host by default: - * `%ProgramW6432%\qemu` (`%ProgramFiles%\qemu` for a 64-bit process, which - * Node is), so a Program Files on another drive is found too. Read from the - * variables Windows sets, which Linux does not have: there is no such - * directory there and nothing to check the platform for. - */ -export function officialQemuDir(env: Record = process.env): string | undefined { - const programFiles = (env.ProgramW6432 ?? env.PROGRAMW6432 ?? env.ProgramFiles ?? env.PROGRAMFILES)?.trim(); - return programFiles ? join(programFiles, OFFICIAL_QEMU_SUBDIR) : undefined; -} - -/** - * Executable names tried in every directory. Windows executables carry - * ".exe" and Linux ones do not; trying both everywhere keeps the search - * identical on both hosts. - */ -export const QEMU_SYSTEM_NAMES = ["qemu-system-x86_64", "qemu-system-x86_64.exe"] as const; -export const QEMU_IMG_NAMES = ["qemu-img", "qemu-img.exe"] as const; - -/** - * The directories searched for QEMU, in the order of section 3.1: when - * INVISIBLE_DOTS_QEMU_DIR is set, that directory alone (mixing a configured - * QEMU with another one would run a qemu-img of a different version on the - * same disks); otherwise the official installer's directory, then every - * PATH entry. The installer's directory comes first so the QEMU that `setup` - * just installed wins over an older one somewhere on PATH. Relative entries - * are dropped, because QEMU is always invoked by absolute path. - */ -export function qemuSearchDirs(env: Record = process.env): string[] { - const configured = env[ENV.QEMU_DIR]?.trim(); - if (configured) return [configured]; - const dirs: string[] = []; - const official = officialQemuDir(env); - if (official) dirs.push(official); - // Windows spells the variable "Path"; Node's process.env hides that, a plain object does not. - const pathValue = env.PATH ?? env.Path ?? ""; - for (const entry of pathValue.split(delimiter)) { - // cmd.exe users sometimes quote PATH entries that contain spaces. - const dir = entry.trim().replace(/^"(.*)"$/, "$1"); - if (dir) dirs.push(dir); - } - const seen = new Set(); - return dirs.filter((dir) => { - if (!isAbsolute(dir) || seen.has(dir)) return false; - seen.add(dir); - return true; - }); -} - -export interface QemuInstallation { - /** Absolute path of qemu-system-x86_64. */ - system: string; - /** Absolute path of qemu-img. */ - img: string; -} - -/** Whether `path` is a file this user may execute. Doctor's own search uses it too. */ -export async function isExecutableFile(path: string): Promise { - try { - // X_OK is checked as existence on Windows, where executability is the extension. - await access(path, constants.X_OK); - // A directory passes X_OK on Linux; it is not a program. - return (await stat(path)).isFile(); - } catch { - return false; - } -} - -async function findIn(dirs: readonly string[], names: readonly string[], exists: (path: string) => Promise): Promise { - for (const dir of dirs) { - for (const name of names) { - const candidate = join(dir, name); - if (await exists(candidate)) return candidate; - } - } - return undefined; -} - -/** Find qemu-system-x86_64 and qemu-img in the directories of `qemuSearchDirs`. */ -export async function findQemu( - env: Record = process.env, - exists: (path: string) => Promise = isExecutableFile, -): Promise { - const configured = env[ENV.QEMU_DIR]?.trim(); - const dirs = qemuSearchDirs(env); - if (configured && !isAbsolute(configured)) { - throw new QemuNotFoundError(`qemu-system-x86_64 (${ENV.QEMU_DIR}="${configured}" is not an absolute path)`, []); - } - const system = await findIn(dirs, QEMU_SYSTEM_NAMES, exists); - if (!system) throw new QemuNotFoundError("qemu-system-x86_64", dirs); - const img = await findIn(dirs, QEMU_IMG_NAMES, exists); - if (!img) throw new QemuNotFoundError("qemu-img", dirs); - return { system, img }; -} - -/** - * The oldest QEMU the contract supports (section 3.1): 8.2, the version - * Ubuntu 24.04 packages, measured with the argv of section 3.4 and doctor's - * probe. This is the one place the number lives; messages use the text below. - */ -export const MIN_QEMU_VERSION = { major: 8, minor: 2 } as const; -export const MIN_QEMU_VERSION_TEXT = `${MIN_QEMU_VERSION.major}.${MIN_QEMU_VERSION.minor}`; - -export interface QemuVersion { - major: number; - minor: number; - micro: number; -} - -/** Parse `qemu-system-x86_64 --version` or `qemu-img --version` output. */ -export function parseQemuVersion(output: string): QemuVersion | undefined { - const match = /version (\d+)\.(\d+)(?:\.(\d+))?/.exec(output); - if (!match) return undefined; - return { major: Number(match[1]), minor: Number(match[2]), micro: Number(match[3] ?? 0) }; -} - -export function isSupportedQemuVersion(version: QemuVersion): boolean { - return version.major > MIN_QEMU_VERSION.major || (version.major === MIN_QEMU_VERSION.major && version.minor >= MIN_QEMU_VERSION.minor); -} diff --git a/apps/vm-manager/src/index.ts b/apps/vm-manager/src/index.ts deleted file mode 100644 index c130d831..00000000 --- a/apps/vm-manager/src/index.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @invisible-dots/vm-manager: the QEMU driver of the control plane - * (architecture sections 3, 5.1, 9.4, 9.5). - * - * The control plane uses one VmManager per process: - * - * const vm = new VmManager({ env, logger, virtualizationDir }); - * - * Every call that needs more than a dot id takes a VmSpec (dotId, token in - * clear, absolute goldenImage and runtimeImage paths, cpus, memoryMiB, - * diskBytes); `vmSpecFromConfig(dotId, config, stored)` builds one. The - * manager stores nothing itself: a VM is its directory under - * INVISIBLE_DOTS_HOME/vms// plus the QEMU process. - * - * Lifecycle - * create(spec) qcow2 overlay on the golden image + seed.iso. Keeps an - * existing disk, so a retried create is safe. - * -> { vmDir, diskPath, seedPath, diskCreated, instanceId } - * start(spec) rewrites the seed, picks a free guest port, spawns QEMU - * detached with the argv of `qemuArgs()`, writes the pid - * file, returns when QEMU listens on the guest port and - * still runs a moment later. Retries on a taken port. - * -> { pid, guestPort, alreadyRunning }; store pid and - * guestPort in `computers`. - * waitForGuestHealth(dotId, guestPort, token, options?) - * polls GET /v1/health until dot-agentd and the agent - * report ok; fails early if QEMU exits, and with the - * end of QEMU's log and the serial console when the - * guest never comes up. - * stop(dotId, token, { timeoutMs? }) - * POST /v1/system/poweroff through the guest channel, - * waits for QEMU to exit, kills it after 60 s. - * -> { forced, wasRunning }. Call the agent's - * prepare-sleep first when sleeping a Dot (9.5). - * reboot(spec) stop then start, so new cpus, memory and runtime ISO - * apply. -> StartVmResult. - * destroy(dotId) kills QEMU and removes the VM directory and its log. - * state(dotId) -> { state: VmState, pid, guestPort, detail? } from the - * pid file and the process; STOPPED with no live QEMU. - * This is also the reconciliation after a control plane - * restart: the scheduler asks it for every Dot, and a - * pid file whose QEMU is gone is removed right there. - * resize(spec) cpus and memory apply at the next start; the disk is - * grown (never shrunk) while stopped. - * -> { restartRequired, diskResized } - * resizeDisk(dotId, bytes) - * guestClient(guestPort, token) - * a GuestClient for every route of sections 5.2 and 5.3, - * including the resumable event stream `events({ after })`. - * createSnapshot / listSnapshots / restoreSnapshot / deleteSnapshot - * reject with NotImplementedError (section 10). - * - * A process is killed only when it is proven to be the Dot's QEMU: this - * process spawned it and has not seen it exit, or its pid is alive, runs as - * this user, was spawned in this boot of the host, and its guest port - * listens (see `processIsOurs` in vm-manager.ts). - * - * Errors name their fix: QemuNotFoundError and AcceleratorUnavailableError - * point at "invisible-dots setup" and "invisible-dots doctor"; CpuModelError - * is QEMU refusing the Dots' CPU model (CPU_MODEL); VmStartError carries QEMU's own output (and the - * serial console when the guest never came up); VmStateError is an operation - * the VM's current state does not allow. - * - * Host helpers for doctor and setup: findQemu, qemuSearchDirs, - * parseQemuVersion, isSupportedQemuVersion, MIN_QEMU_VERSION, accelerator - * (the one platform function of section 1.1) and officialQemuDir. - * The doctor report (section 11.1) is `runDoctor(deps)`, with the real - * machine's deps from `hostDoctorDeps` and the accelerator's host side read - * by `checkAcceleratorAccess` (the other platform function). - * The process runner every host command goes through: runProcess, - * startProcess, NodeCommandRunner and NodeProcessControl (runner.ts). - */ -export * from "./accelerator-access.js"; -export * from "./doctor.js"; -export * from "./errors.js"; -export * from "./guest-client.js"; -export * from "./host-doctor.js"; -export * from "./host.js"; -export * from "./ports.js"; -export * from "./powershell.js"; -export * from "./process-file.js"; -export * from "./qemu-args.js"; -export * from "./runner.js"; -export * from "./seed.js"; -export * from "./vm-manager.js"; diff --git a/apps/vm-manager/src/ports.ts b/apps/vm-manager/src/ports.ts deleted file mode 100644 index 1d36bfee..00000000 --- a/apps/vm-manager/src/ports.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * The guest port of section 3.5: bind port 0 on 127.0.0.1, read the port the - * kernel chose, release it and hand it to QEMU. Another process can take it in - * between, which is why the start retries when QEMU reports the forward could - * not be set up. Asking the kernel also keeps clear of ports Windows reserves - * (Hyper-V's excluded ranges), which a fixed or random choice could hit. - */ -import { connect, createServer } from "node:net"; - -export const GUEST_PORT_HOST = "127.0.0.1"; - -export function pickFreePort(host: string = GUEST_PORT_HOST): Promise { - return new Promise((resolve, reject) => { - const server = createServer(); - server.unref(); - server.once("error", reject); - server.listen({ host, port: 0, exclusive: true }, () => { - const address = server.address(); - const port = typeof address === "object" && address ? address.port : 0; - server.close(() => (port > 0 ? resolve(port) : reject(new Error(`could not read the port bound on ${host}`)))); - }); - }); -} - -/** - * Whether something accepts TCP connections on 127.0.0.1:`port`. QEMU's user - * networking listens on a Dot's guest port from the moment its netdev is set - * up until the process exits, whether or not the guest inside is up, and the - * kernel completes the handshake for a listening socket. So "the recorded pid - * is alive AND its recorded guest port listens" is what tells our QEMU from a - * process that inherited a recycled pid, the same way on both hosts. - */ -export function portListens(port: number, host: string = GUEST_PORT_HOST, timeoutMs = 2_000): Promise { - return new Promise((resolve) => { - const socket = connect({ host, port }); - let settled = false; - const done = (listens: boolean) => { - if (settled) return; - settled = true; - socket.destroy(); - resolve(listens); - }; - socket.setTimeout(timeoutMs, () => done(false)); - socket.once("connect", () => done(true)); - socket.once("error", () => done(false)); - }); -} diff --git a/apps/vm-manager/src/powershell.ts b/apps/vm-manager/src/powershell.ts deleted file mode 100644 index 498639fa..00000000 --- a/apps/vm-manager/src/powershell.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * The Windows PowerShell the host runs to read what only Windows can say - * (architecture section 1.1): the state of the HypervisorPlatform feature, - * and the one program that runs it. Scripts travel as -EncodedCommand - * (base64 of UTF-16LE), never as a file: nothing on disk can be swapped - * between generating a script and running it, and no argument needs quoting - * rules beyond PowerShell's own. `invisible-dots setup` builds its elevated - * scripts on the same two functions. - */ - -/** The Windows optional feature WHPX needs. */ -export const HYPERVISOR_PLATFORM_FEATURE = "HypervisorPlatform"; - -/** - * Read without administrator rights, unlike Get-WindowsOptionalFeature. - * InstallState: 1 enabled, 2 disabled, 3 absent; no output when Windows does - * not list the feature at all. - */ -export const HYPERVISOR_PLATFORM_STATE_SCRIPT = `(Get-CimInstance -ClassName Win32_OptionalFeature -Filter "Name='${HYPERVISOR_PLATFORM_FEATURE}'").InstallState`; - -export function encodeCommand(script: string): string { - return Buffer.from(script, "utf16le").toString("base64"); -} - -/** Windows PowerShell 5.1 by absolute path: it ships with every Windows, and PATH could point anywhere. */ -export function powershellPath(env: Record): string { - const systemRoot = env.SystemRoot ?? env.SYSTEMROOT ?? "C:\\Windows"; - return `${systemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; -} - -export function powershellArgs(script: string): string[] { - return ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-EncodedCommand", encodeCommand(script)]; -} diff --git a/apps/vm-manager/src/process-file.ts b/apps/vm-manager/src/process-file.ts deleted file mode 100644 index c6f53690..00000000 --- a/apps/vm-manager/src/process-file.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * The pid file of a Dot's VM (architecture section 3.2): what lets a control plane that restarted find the QEMU it - * left running. The VmManager decides from it whether that QEMU still runs and may be killed (`processIsOurs`). - */ -import { readFile, writeFile } from "node:fs/promises"; -import { replaceFile } from "@invisible-dots/shared"; - -/** - * The QEMU process of a Dot, the guest port it forwards, and the host's uptime when it was spawned. A host uptime - * lower than that one means the host restarted since, so the process is gone whatever now runs under that pid. - */ -export interface ProcessFile { - pid: number; - guest_port: number; - host_uptime_s?: number; -} - -export function parseProcessFile(text: string): ProcessFile | undefined { - try { - const value = JSON.parse(text) as Partial; - const pid = value.pid; - const port = value.guest_port; - if (Number.isSafeInteger(pid) && pid! > 0 && Number.isInteger(port) && port! >= 1 && port! <= 65535) { - const record: ProcessFile = { pid: pid!, guest_port: port! }; - if (typeof value.host_uptime_s === "number" && Number.isFinite(value.host_uptime_s)) record.host_uptime_s = value.host_uptime_s; - return record; - } - } catch { - // Falls through: not JSON is as unreadable as JSON of the wrong shape. - } - return undefined; -} - -/** The pid file at `path`: undefined when there is none, "unreadable" when it is not one this code wrote. */ -export async function readProcessFile(path: string): Promise { - let text: string; - try { - text = await readFile(path, "utf8"); - } catch (error) { - if ((error as NodeJS.ErrnoException).code === "ENOENT") return undefined; - throw error; - } - return parseProcessFile(text) ?? "unreadable"; -} - -/** Written whole or not at all (a temporary file renamed over it), so a reader never sees half a pid file. */ -export async function writeProcessFile(path: string, record: ProcessFile): Promise { - const temporary = `${path}.tmp`; - await writeFile(temporary, `${JSON.stringify(record)}\n`, { mode: 0o600 }); - await replaceFile(temporary, path); -} diff --git a/apps/vm-manager/src/qemu-args.ts b/apps/vm-manager/src/qemu-args.ts deleted file mode 100644 index f81caf30..00000000 --- a/apps/vm-manager/src/qemu-args.ts +++ /dev/null @@ -1,169 +0,0 @@ -/** - * The QEMU command line of a Dot's VM (architecture section 3.4). This is the - * one function that builds it, on every host; only the accelerator differs, - * and it arrives here as a value from host.ts. - */ -import { CONFIG_BOUNDS, GUEST_PORT, parseSizeMiB, vmName } from "@invisible-dots/shared"; -import { VmManagerError } from "./errors.js"; -import type { Accelerator } from "./host.js"; - -export interface QemuArgsSpec { - dotId: string; - accelerator: Accelerator; - cpus: number; - memoryMiB: number; - /** All paths absolute: QEMU runs detached and resolves nothing against the control plane's directory. */ - diskPath: string; - seedPath: string; - runtimeIsoPath: string; - /** The free TCP port on 127.0.0.1 forwarded to dot-agentd (section 3.5). */ - guestPort: number; - serialLogPath: string; -} - -/** - * Why QEMU cannot be given this path, or undefined when it can. The same - * rule on every host: - * - QEMU's option syntax gives "," a meaning, and the escape for it (",,") - * applies to -drive but not to -serial file:, so no one spelling of a - * path with a comma is right everywhere; - * - a character outside printable ASCII: measured with the pinned Windows - * build (QEMU 11.1), qemu-system-x86_64 cannot open a -drive file whose - * path holds any (a Latin-1 "é" as much as Cyrillic), and qemu-img cannot - * create one outside the system code page. Linux would take UTF-8, but a - * home that works on one host and not on the other is the divergence - * section 1.1 rules out, and the default home sits under the account name. - */ -export function qemuPathProblem(path: string): string | undefined { - if (path.includes("\n") || path.includes("\r")) return "contains a line break"; - if (path.includes(",")) return "contains a comma, which QEMU's command line cannot carry"; - if (/[^\x20-\x7e]/.test(path)) return "contains a character outside plain ASCII, which QEMU on Windows cannot open"; - return undefined; -} - -/** A host path for QEMU's command line, refused with the fix when qemuPathProblem names one. */ -export function qemuPathArg(label: string, path: string): string { - const problem = qemuPathProblem(path); - if (problem) { - throw new VmManagerError(`${label} ${JSON.stringify(path)} ${problem}; set INVISIBLE_DOTS_HOME to a directory whose path is plain ASCII without commas`); - } - return path; -} - -function integerInRange(label: string, value: number, min: number, max: number): number { - if (!Number.isInteger(value) || value < min || value > max) { - throw new VmManagerError(`${label} must be an integer from ${min} to ${max}, got ${value}`); - } - return value; -} - -/** - * The cpus and memory every VM of this project may have, Dots and the image builder's VM alike: the range a Dot's - * config allows (CONFIG_BOUNDS of packages/shared, which owns it), in the units QEMU takes. - */ -export const VM_RESOURCE_BOUNDS = { - cpus: { min: CONFIG_BOUNDS.cpu.min, max: CONFIG_BOUNDS.cpu.max }, - memoryMiB: { min: parseSizeMiB(CONFIG_BOUNDS.memory.min), max: parseSizeMiB(CONFIG_BOUNDS.memory.max) }, -} as const; - -/** Refuses cpus or memory outside VM_RESOURCE_BOUNDS, naming the value. */ -export function checkVmResources(spec: { cpus: number; memoryMiB: number }): void { - integerInRange("cpus", spec.cpus, VM_RESOURCE_BOUNDS.cpus.min, VM_RESOURCE_BOUNDS.cpus.max); - integerInRange("memoryMiB", spec.memoryMiB, VM_RESOURCE_BOUNDS.memoryMiB.min, VM_RESOURCE_BOUNDS.memoryMiB.max); -} - -/** - * The CPU model of every VM of this project (section 3.4): the host's own - * CPU, without the virtualization extensions. A Dot never runs a hypervisor, - * and under WHPX a guest that sees VMX stops: measured with QEMU 11.1 on - * Windows 11 (Intel Core Ultra 7 255H, the hypervisor running), `-cpu host` - * and `-cpu max` pause the VM at its first firmware instructions with - * `WHPX: Unexpected VP exit code 4` (WHvRunVpExitReasonUnrecoverableException), - * while `-cpu host,-vmx` boots the Ubuntu cloud image to its login prompt and - * so does every named model. No other feature of the host CPU matters - * (bisected). Public reports give the same remedy (`vmx=off`). `-svm` is the - * AMD spelling of the same extension; QEMU accepts both names on every host. - * One value on every accelerator, because section 1.1 keeps one command line. - */ -export const CPU_MODEL = "host,-vmx,-svm"; - -/** - * The machine every VM of this project runs on, Dots and the image - * builder's VM alike, so a golden image is provisioned on the machine type, - * accelerator and CPU model a Dot later boots it on: changing one here - * changes both. - */ -export function machineArgs(spec: { accelerator: Accelerator; cpus: number; memoryMiB: number }): string[] { - checkVmResources(spec); - return [ - "-machine", - "q35", - "-accel", - spec.accelerator, - "-cpu", - CPU_MODEL, - "-smp", - String(spec.cpus), - "-m", - String(spec.memoryMiB), - ]; -} - -/** The `-drive` value of a VM's qcow2 system disk. */ -export function diskDriveArg(path: string): string { - return `if=virtio,file=${qemuPathArg("disk", path)},format=qcow2,discard=unmap`; -} - -/** - * The `-drive` value of a read-only ISO (a seed or the runtime ISO), as a virtio disk: every Ubuntu cloud kernel has - * virtio-blk built in, where a CD-ROM needs the SATA controller's and the CD's modules, which the minimal cloud image - * does not load (measured: its builder VM never saw the seed, so cloud-init never ran). The guest finds both by their - * labels (cidata, IDOTS-RT), whatever device they are. - * format=raw: an ISO is raw, and naming it stops QEMU probing the format. - */ -export function isoDriveArg(label: string, path: string): string { - return `if=virtio,file=${qemuPathArg(label, path)},format=raw,readonly=on`; -} - -/** - * User-mode networking (`netdev` says whether a port is forwarded), the - * random number device, the serial console to a file and no display: the - * devices every VM of this project has. - */ -export function deviceArgs(netdev: string, serialLogPath: string): string[] { - return [ - "-netdev", - netdev, - "-device", - "virtio-net-pci,netdev=net0", - "-device", - "virtio-rng-pci", - "-serial", - `file:${qemuPathArg("serial log", serialLogPath)}`, - "-display", - "none", - ]; -} - -/** - * The argument array after the executable, exactly as section 3.4 lists it. - * There is no monitor of any kind (no -qmp, no -monitor) and nothing that - * holds the VM before its first instruction (no -S): the control plane - * reaches a VM only through the guest channel (section 5.1) and sees its - * QEMU only as a process. - */ -export function qemuArgs(spec: QemuArgsSpec): string[] { - const port = integerInRange("guestPort", spec.guestPort, 1, 65535); - return [ - "-name", - vmName(spec.dotId), - ...machineArgs(spec), - "-drive", - diskDriveArg(spec.diskPath), - "-drive", - isoDriveArg("seed ISO", spec.seedPath), - "-drive", - isoDriveArg("runtime ISO", spec.runtimeIsoPath), - ...deviceArgs(`user,id=net0,hostfwd=tcp:127.0.0.1:${port}-:${GUEST_PORT}`, spec.serialLogPath), - ]; -} diff --git a/apps/vm-manager/src/runner.ts b/apps/vm-manager/src/runner.ts deleted file mode 100644 index 7cbe2323..00000000 --- a/apps/vm-manager/src/runner.ts +++ /dev/null @@ -1,222 +0,0 @@ -/** - * The process runners of the host side. Every program the control plane - * and the CLI start goes through this file or the `runProcess` it is built - * on (packages/shared, so the secret files' ACL can use it too): short - * commands (qemu-img, QEMU's --version, PowerShell, sudo apt-get) through - * `runProcess`, a long-running child the caller watches (the image builder's - * VM) through `startProcess`, and a Dot's QEMU, which must outlive the - * control plane, through ProcessControl. All take argument arrays, never a shell, so a dot id or a - * path can never be read as shell syntax, and tests swap the interfaces - * (CommandRunner, ProcessControl) for fakes that record argv. - */ -import { spawn, type ChildProcess } from "node:child_process"; -import { closeSync, openSync } from "node:fs"; -import { stat } from "node:fs/promises"; -import { processPresence, runProcess, type ProcessPresence, type RunOptions, type RunResult } from "@invisible-dots/shared"; -import { CommandError } from "./errors.js"; - -export { runProcess, type RunOptions, type RunResult }; - -export interface CommandResult { - stdout: string; - stderr: string; -} - -export interface CommandRunner { - /** Run a command to completion. Rejects with CommandError unless it exits 0. */ - run(command: string, args: readonly string[], options?: RunOptions): Promise; -} - -export const DEFAULT_COMMAND_TIMEOUT_MS = 60_000; - -/** The real CommandRunner: `runProcess`, with a default timeout and a non-zero exit turned into a CommandError. */ -export class NodeCommandRunner implements CommandRunner { - async run(command: string, args: readonly string[], options: RunOptions = {}): Promise { - const timeoutMs = options.timeoutMs ?? DEFAULT_COMMAND_TIMEOUT_MS; - const result = await runProcess(command, args, { ...options, timeoutMs }); - if (result.code === 0 && !result.timedOut) return { stdout: result.stdout, stderr: result.stderr }; - throw new CommandError({ - command, - args, - exitCode: result.code, - stdout: result.stdout, - stderr: result.stderr, - timedOut: result.timedOut, - code: result.startError?.code, - message: result.timedOut ? `timed out after ${timeoutMs} ms` : undefined, - cause: result.startError, - }); - } -} - -/** A long-running child the caller watches: its exit is reported once, its stderr kept as a short tail. */ -export interface StartedProcess { - readonly pid: number | undefined; - /** The last few KiB of stderr, for error messages when the process dies. */ - stderrTail(): string; - /** Called once when the process exits or fails to start; immediately when that already happened. */ - onExit(listener: (code: number | null, signal: NodeJS.Signals | null, error?: Error) => void): void; - kill(signal?: NodeJS.Signals): void; -} - -const STDERR_TAIL_CHARS = 4096; - -export interface StartProcessOptions { - /** - * The child's working directory. Always given: an inherited one is held - * open by the child for its whole life, and on Windows that blocks moving - * or deleting whatever directory the parent happened to start in. - */ - cwd: string; - /** The child's whole environment (an allowlist, see allowlistedEnvironment). */ - env: Record; -} - -export function startProcess(command: string, args: readonly string[], options: StartProcessOptions): StartedProcess { - let tail = ""; - let exit: { code: number | null; signal: NodeJS.Signals | null; error?: Error } | undefined; - const listeners: ((code: number | null, signal: NodeJS.Signals | null, error?: Error) => void)[] = []; - const settle = (code: number | null, signal: NodeJS.Signals | null, error?: Error) => { - if (exit) return; - exit = error ? { code, signal, error } : { code, signal }; - for (const listener of listeners.splice(0)) listener(code, signal, error); - }; - let child: ChildProcess; - try { - child = spawn(command, [...args], { stdio: ["ignore", "ignore", "pipe"], windowsHide: true, cwd: options.cwd, env: options.env }); - } catch (error) { - settle(null, null, error as Error); - return { pid: undefined, stderrTail: () => "", onExit: (l) => l(null, null, error as Error), kill: () => undefined }; - } - child.stderr?.on("data", (chunk: Buffer) => { - tail = (tail + chunk.toString()).slice(-STDERR_TAIL_CHARS); - }); - child.on("error", (error) => settle(null, null, error)); - child.on("close", (code, signal) => settle(code, signal)); - return { - get pid() { - return child.pid; - }, - stderrTail: () => tail, - onExit(listener) { - if (exit) listener(exit.code, exit.signal, exit.error); - else listeners.push(listener); - }, - kill(signal: NodeJS.Signals = "SIGTERM") { - if (!exit) child.kill(signal); - }, - }; -} - -/** The first non-empty line of a program's error output, for one-line reports. */ -export function firstLine(text: string): string { - return ( - text - .split(/\r?\n/) - .map((line) => line.trim()) - .find((line) => line.length > 0) ?? "" - ); -} - -export interface ProcessExit { - code: number | null; - signal: NodeJS.Signals | null; -} - -/** A process started detached from the control plane. */ -export interface DetachedProcess { - readonly pid: number; - /** - * Settles when the process exits while this control plane still runs. It - * never rejects; after a control plane restart nobody holds this promise - * and liveness is read from the pid instead. - */ - readonly exited: Promise; -} - -export interface SpawnDetachedOptions { - /** stdout and stderr are appended to this file, so QEMU's messages survive the control plane. */ - logPath: string; - /** - * The working directory. A detached QEMU outlives the server, and on - * Windows a process's working directory cannot be moved or deleted while - * it runs, so it is never the server's own (which may be a checkout or a - * removable drive): the caller passes one of its own directories. - */ - cwd: string; - /** The whole environment of the child: an allowlist, never the server's own (it may hold the API token or DATABASE_URL). */ - env: Record; -} - -export interface ProcessControl { - /** Start a process in its own session, not tied to this process's lifetime. Rejects when it cannot be started at all. */ - spawnDetached(command: string, args: readonly string[], options: SpawnDetachedOptions): Promise; - /** - * What `process.kill(pid, 0)` says about the pid, the same on both hosts: - * gone, ours (this user may signal it) or foreign (it exists and belongs - * to another user). A QEMU this control plane spawned is always ours. - */ - presence(pid: number): ProcessPresence; - /** Kill the process outright (SIGKILL; TerminateProcess on Windows). A missing process is not an error. */ - kill(pid: number): void; -} - -/** - * The real ProcessControl. `detached: true` matters on both hosts: on Linux - * it puts QEMU in a new session, so a Ctrl-C to the server does not reach it; - * on Windows it keeps libuv from placing QEMU in the job object that is - * closed, and its processes killed, when the server exits. - */ -export class NodeProcessControl implements ProcessControl { - async spawnDetached(command: string, args: readonly string[], options: SpawnDetachedOptions): Promise { - const fd = openSync(options.logPath, "a", 0o600); - try { - const child = spawn(command, [...args], { - detached: true, - stdio: ["ignore", fd, fd], - windowsHide: true, - cwd: options.cwd, - env: options.env, - }); - const exited = new Promise((resolve) => { - child.once("exit", (code, signal) => resolve({ code, signal })); - child.once("error", () => resolve({ code: null, signal: null })); - }); - await new Promise((resolve, reject) => { - child.once("spawn", resolve); - child.once("error", (error: NodeJS.ErrnoException) => - reject(new CommandError({ command, args, exitCode: null, code: error.code, cause: error })), - ); - }); - // The control plane must be able to exit while QEMU keeps running. - child.unref(); - return { pid: child.pid!, exited }; - } finally { - closeSync(fd); - } - } - - presence(pid: number): ProcessPresence { - return processPresence(pid); - } - - kill(pid: number): void { - try { - process.kill(pid, "SIGKILL"); - } catch (error) { - if ((error as NodeJS.ErrnoException).code !== "ESRCH") throw error; - } - } -} - -export { retryWhileInUse } from "@invisible-dots/shared"; - -/** Size of a file, 0 when it does not exist: where this start's output begins in an appended log. */ -export async function fileSize(path: string): Promise { - try { - return (await stat(path)).size; - } catch (error) { - if ((error as NodeJS.ErrnoException).code === "ENOENT") return 0; - throw error; - } -} diff --git a/apps/vm-manager/src/seed.ts b/apps/vm-manager/src/seed.ts deleted file mode 100644 index 39db6758..00000000 --- a/apps/vm-manager/src/seed.ts +++ /dev/null @@ -1,131 +0,0 @@ -/** - * The NoCloud seed of a Dot (architecture sections 3.2 and 4.2): user-data and - * meta-data rendered from virtualization/cloud-init/ and written as an ISO - * labelled "cidata" by packages/iso. The templates on disk are the single - * source of the content; this module fills them in, quoting every value as a - * YAML scalar. - */ -import { createHash } from "node:crypto"; -import { readFile } from "node:fs/promises"; -import { dirname, join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { writeIso } from "@invisible-dots/iso"; -import type { GuestBootConfig } from "@invisible-dots/shared"; - -/** `virtualization/` of this repository, found relative to this file. */ -export const DEFAULT_VIRTUALIZATION_DIR = resolve(dirname(fileURLToPath(import.meta.url)), "../../../virtualization"); - -/** cloud-init's NoCloud datasource looks for a filesystem with this label. */ -export const SEED_VOLUME_ID = "cidata"; - -/** Volume label of the runtime ISO; the image builder writes it, the seed mounts by it. */ -export const RUNTIME_ISO_LABEL = "IDOTS-RT"; - -/** - * Every date inside the seed image. A fixed value makes the image a pure - * function of its content, so writing the same seed twice gives the same bytes. - */ -export const SEED_TIMESTAMP = new Date("2026-01-01T00:00:00Z"); - -/** - * A YAML double-quoted scalar. JSON string syntax is a subset of YAML's - * double-quoted style, so JSON.stringify is a correct encoder here. - */ -export function yamlScalar(value: string): string { - return JSON.stringify(value); -} - -/** - * Replace each `{{name}}` with `encode(values[name])`. A placeholder without a - * value is an error: an empty value in a seed is a broken VM that cloud-init - * would accept. - */ -export function renderTemplate(template: string, values: Record, encode: (value: string) => string): string { - return template.replace(/\{\{\s*([A-Za-z][A-Za-z0-9_]*)\s*\}\}/g, (_match, name: string) => { - const value = values[name]; - if (value === undefined) throw new Error(`template placeholder "${name}" has no value`); - return encode(String(value)); - }); -} - -/** The guest hostname. Dot ids contain "_", which is not valid in a hostname, so it becomes "-". */ -export function guestHostname(dotId: string): string { - return `invisible-dot-${dotId.replace(/_/g, "-")}`; -} - -export interface SeedTemplates { - userData: string; - metaData: string; -} - -export interface SeedFiles { - userData: string; - metaData: string; - instanceId: string; - /** The digest of the rendered content, which the next seed is compared with. */ - digest: string; -} - -/** The seed written last for a Dot: its content's digest and its instance-id (seed-instance.json beside seed.iso). */ -export interface PreviousSeed { - digest: string; - instanceId: string; -} - -/** - * Render the seed of one Dot. - * - * cloud-init runs its per-instance modules (users, write_files, mounts...) - * once per instance-id it has not run them for. Rewriting the seed the last - * one was (a retried create, a restart) keeps that seed's id and re-runs - * nothing. A seed that differs from the last one (a new token, a VM proxy set - * or cleared, new templates) gets an id cloud-init has never seen: one derived - * from the content alone would come back with the content (a proxy cleared - * gives the first boot's seed again, whose modules ran long ago), and the old - * config.json would stay. So a changed seed's id also covers the id before it. - */ -export function renderSeed(templates: SeedTemplates, dotId: string, token: string, proxy?: string, previous?: PreviousSeed): SeedFiles { - const bootConfig: GuestBootConfig = { dotId, token, ...(proxy ? { proxy } : {}) }; - const hostname = guestHostname(dotId); - const userData = renderTemplate( - templates.userData, - { - hostname, - bootConfigJson: `${JSON.stringify(bootConfig)}\n`, - runtimeDevice: `LABEL=${RUNTIME_ISO_LABEL}`, - }, - yamlScalar, - ); - // The digest also covers the meta-data template, so changing it re-runs cloud-init as well. - const digest = createHash("sha256").update(userData).update("\0").update(templates.metaData).update("\0").update(hostname).digest("hex"); - const instanceId = - previous === undefined - ? `iid-${dotId}-${digest.slice(0, 16)}` - : previous.digest === digest - ? previous.instanceId - : `iid-${dotId}-${digest.slice(0, 16)}-${createHash("sha256").update(previous.instanceId).digest("hex").slice(0, 8)}`; - const metaData = renderTemplate(templates.metaData, { instanceId, hostname }, yamlScalar); - return { userData, metaData, instanceId, digest }; -} - -/** Read the two cloud-init templates from a `virtualization/` directory. */ -export async function loadSeedTemplates(virtualizationDir: string = DEFAULT_VIRTUALIZATION_DIR): Promise { - const read = (path: string) => - readFile(join(virtualizationDir, path), "utf8").catch((error: unknown) => { - throw new Error(`cannot read template ${join(virtualizationDir, path)}: ${(error as Error).message}`, { cause: error }); - }); - const [userData, metaData] = await Promise.all([read("cloud-init/user-data.yaml.tmpl"), read("cloud-init/meta-data.yaml.tmpl")]); - return { userData, metaData }; -} - -/** Write seed.iso (mode 0600: it carries the Dot's token). The file is replaced atomically. */ -export async function writeSeedIso(path: string, seed: SeedFiles): Promise { - await writeIso( - path, - [ - { path: "user-data", data: seed.userData }, - { path: "meta-data", data: seed.metaData }, - ], - { volumeId: SEED_VOLUME_ID, timestamp: SEED_TIMESTAMP, mode: 0o600 }, - ); -} diff --git a/apps/vm-manager/src/vm-manager.ts b/apps/vm-manager/src/vm-manager.ts deleted file mode 100644 index a973fb51..00000000 --- a/apps/vm-manager/src/vm-manager.ts +++ /dev/null @@ -1,863 +0,0 @@ -/** - * The QEMU driver (architecture sections 3, 9.4, 9.5). What a VM is lives in - * its directory (disk, seed, pid file) and in the QEMU process; the control - * plane passes the rest (token, images, resources) on every call that needs - * it. That is what lets the control plane restart while VMs keep running. - * - * There is no monitor: QEMU is seen only as a process (alive or not, and the - * guest port its user networking listens on), and the guest only through the - * guest channel (section 5.1). Both work the same way on Linux and Windows, - * which is why there is nothing else (section 1.1). - * - * The one thing kept in memory is the ChildProcess of every QEMU this - * process spawned: while it is held, its exit is known exactly. After a - * restart the pid file stands in for it, checked as `processIsOurs` says. - */ -import { randomBytes } from "node:crypto"; -import { appendFile, mkdir, open, readFile, rm, writeFile } from "node:fs/promises"; -import { isAbsolute, join, relative, resolve } from "node:path"; -import { - allowlistedEnvironment, - computerResources, - hostPaths, - hostRestartedSince, - hostUptimeSeconds, - isFatalGuestError, - pathExists, - prefixedStderrLogger, - replaceFile, - type DotConfig, - type HostPaths, - type Logger, - type VmState, -} from "@invisible-dots/shared"; -import { - AcceleratorUnavailableError, - CommandError, - CpuModelError, - GuestRequestError, - NotImplementedError, - VmManagerError, - VmStartError, - VmStateError, -} from "./errors.js"; -import { GuestClient, waitForGuestHealth, type GuestClientOptions, type WaitForGuestHealthOptions } from "./guest-client.js"; -import { accelerator as hostAccelerator, findQemu, type Accelerator, type QemuInstallation } from "./host.js"; -import { pickFreePort, portListens } from "./ports.js"; -import { readProcessFile, writeProcessFile, type ProcessFile } from "./process-file.js"; -import { checkVmResources, CPU_MODEL, qemuArgs, qemuPathArg } from "./qemu-args.js"; -import { - fileSize, - NodeCommandRunner, - NodeProcessControl, - retryWhileInUse, - type CommandRunner, - type DetachedProcess, - type ProcessControl, - type ProcessExit, -} from "./runner.js"; -import { DEFAULT_VIRTUALIZATION_DIR, loadSeedTemplates, renderSeed, writeSeedIso, type PreviousSeed, type SeedTemplates } from "./seed.js"; - -/** Everything the vm-manager needs to know about one Dot's computer. */ -export interface VmSpec { - dotId: string; - /** The Dot token, in clear (the control plane decrypts `token_enc`). It goes into the seed. */ - token: string; - /** The Dot's VM proxy in clear, or absent for a direct exit. It goes into the seed. */ - proxy?: string; - /** Absolute path of the golden image the overlay is backed by. */ - goldenImage: string; - /** Absolute path of the runtime ISO attached on every start. */ - runtimeImage: string; - cpus: number; - memoryMiB: number; - /** Size of the overlay at create; resizeDisk grows it later. */ - diskBytes: number; -} - -/** Build a VmSpec from a parsed Dot config plus what the control plane stored. */ -export function vmSpecFromConfig( - dotId: string, - config: Pick, - stored: { token: string; goldenImage: string; runtimeImage: string }, -): VmSpec { - const resources = computerResources(config); - return { dotId, ...stored, cpus: resources.cpus, memoryMiB: resources.memoryMiB, diskBytes: resources.diskBytes }; -} - -/** A new Dot token: 32 random bytes, base64url. It only authorizes requests to that Dot's VM. */ -export function generateToken(): string { - return randomBytes(32).toString("base64url"); -} - -export interface VmStateInfo { - /** RUNNING while this Dot's QEMU process runs, STOPPED when it does not, ERROR when a live pid cannot be identified. */ - state: VmState; - /** The QEMU pid from the pid file, null when no QEMU runs. */ - pid: number | null; - /** The host port forwarded to dot-agentd, from the pid file; null when no QEMU runs. */ - guestPort: number | null; - /** Why the state is ERROR, in words. */ - detail?: string; -} - -export interface CreateVmResult { - vmDir: string; - diskPath: string; - seedPath: string; - /** False when the overlay already existed and was kept (a retried create never wipes a disk). */ - diskCreated: boolean; - /** The cloud-init instance-id written into the seed. */ - instanceId: string; -} - -export interface StartVmResult { - /** QEMU's pid; store it as `computers.pid`. */ - pid: number; - /** The host port forwarded to dot-agentd; store it as `computers.guest_port`. */ - guestPort: number; - /** True when QEMU was already running and nothing was started. */ - alreadyRunning: boolean; -} - -export interface StopVmResult { - /** True when the guest did not power off by itself in time and QEMU was killed. */ - forced: boolean; - /** False when there was no running VM to stop. */ - wasRunning: boolean; -} - -export interface ResizeResult { - /** True when the VM is running and new cpus or memory apply from its next start. */ - restartRequired: boolean; - /** True when the overlay was grown. */ - diskResized: boolean; -} - -export interface VmManagerOptions { - /** Environment for INVISIBLE_DOTS_HOME and INVISIBLE_DOTS_QEMU_DIR. Default process.env. */ - env?: Record; - /** Host paths; default `hostPaths(env)`. */ - paths?: HostPaths; - logger?: Logger; - /** Where the cloud-init templates live. Default the repository's `virtualization/`. */ - virtualizationDir?: string; - /** QEMU binaries; default found by `findQemu(env)` on first use. */ - qemu?: QemuInstallation; - /** The accelerator; default `accelerator()` of this host. */ - accelerator?: Accelerator; - /** Runs qemu-img. */ - runner?: CommandRunner; - /** Starts, probes and kills QEMU. */ - processes?: ProcessControl; - /** Picks the guest port; default a kernel-chosen free port on 127.0.0.1. */ - pickPort?: () => Promise; - /** How long a stop waits for the guest to power off before QEMU is killed (sections 3.4 and 9.5). Default 60 s. */ - shutdownTimeoutMs?: number; - /** How long QEMU gets to disappear after it was killed. Default 10 s. */ - killTimeoutMs?: number; - /** Timeout of the poweroff request itself. Default 10 s. */ - powerOffRequestTimeoutMs?: number; - /** How long a start waits for QEMU to set up the guest port forward. Default 30 s. */ - startTimeoutMs?: number; - /** - * Once the forward is up, QEMU must still be running this much later: it - * builds the machine (and checks the CPU model) after it sets up networking, - * so a refused CPU model ends the process just after the port listens. - * Default 1 s. - */ - startSettleMs?: number; - /** Ports tried when QEMU cannot bind the forward (section 3.5). Default 5. */ - maxPortAttempts?: number; - /** How often liveness is polled while waiting. Default 500 ms. */ - pollIntervalMs?: number; - /** Timeout of qemu-img commands. Default 5 minutes. */ - qemuImgTimeoutMs?: number; - sleep?: (ms: number) => Promise; -} - -/** Dot ids become directory names, QEMU `-name` values and parts of hostnames. */ -const DOT_ID_PATTERN = /^[a-z0-9][a-z0-9_-]{0,63}$/; - -function assertDotId(dotId: string): void { - if (!DOT_ID_PATTERN.test(dotId)) { - throw new VmManagerError(`invalid dot id "${dotId}": expected lowercase letters, digits, "_" and "-", at most 64 characters`); - } -} - -/** QEMU wrote this when it could not bind the host side of the port forward. */ -const PORT_TAKEN = /Could not set up host forwarding rule/i; - -/** What QEMU prints when the accelerator itself is unusable, on either host. */ -const ACCELERATOR_FAILURES = [ - /Could not access KVM kernel module/i, - /failed to initialize kvm/i, - /\/dev\/kvm/i, - /WHPX: No accelerator found/i, - /failed to initialize whpx/i, - /WHPX: Failed to/i, - /invalid accelerator/i, - /no accelerator found/i, - /accelerator .* not (?:found|available|supported)/i, -]; - -const CPU_MODEL_FAILURES = [/CPU model 'host' requires/i, /unable to find CPU model 'host'/i]; - -/** How much of the end of a log goes into an error: enough for QEMU's last words and the guest's last boot lines. */ -const LOG_TAIL_BYTES = 4 * 1024; - -/** seed-instance.json, or undefined for one this code did not write: the next seed then takes the content's own id. */ -function parsePreviousSeed(text: string): PreviousSeed | undefined { - try { - const value = JSON.parse(text) as Partial; - if (typeof value.digest === "string" && typeof value.instanceId === "string") return { digest: value.digest, instanceId: value.instanceId }; - } catch { - // Not JSON: as if there were none. - } - return undefined; -} - -/** A QEMU this process spawned: its exit is set the moment Node reports it. */ -interface OwnedProcess { - pid: number; - exited: Promise; - exit?: ProcessExit; -} - -interface Probe extends VmStateInfo { - /** The pid file, when there is one that can be read. */ - record?: ProcessFile; - /** Whether the live process is proven to be this Dot's QEMU, so it may be killed. */ - verified: boolean; -} - -const STOPPED: Probe = { state: "STOPPED", pid: null, guestPort: null, verified: false }; - -export class VmManager { - readonly paths: HostPaths; - private readonly env: Record; - private readonly logger: Logger; - private readonly options: VmManagerOptions; - private readonly runner: CommandRunner; - private readonly processes: ProcessControl; - private readonly sleep: (ms: number) => Promise; - private qemuPromise: Promise | undefined; - private templates: Promise | undefined; - private readonly locks = new Map>(); - private readonly owned = new Map(); - - constructor(options: VmManagerOptions = {}) { - this.options = options; - this.env = options.env ?? process.env; - this.paths = options.paths ?? hostPaths(this.env); - this.logger = options.logger ?? prefixedStderrLogger("vm-manager"); - this.runner = options.runner ?? new NodeCommandRunner(); - this.processes = options.processes ?? new NodeProcessControl(); - this.sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms))); - if (options.qemu) this.qemuPromise = Promise.resolve(options.qemu); - } - - /** The QEMU binaries this manager runs; throws QemuNotFoundError naming the fix. */ - qemu(): Promise { - this.qemuPromise ??= findQemu(this.env).catch((error: unknown) => { - // Not cached: `invisible-dots setup` may install QEMU while the server runs. - this.qemuPromise = undefined; - throw error; - }); - return this.qemuPromise; - } - - /** The accelerator every VM of this host starts with. */ - get accelerator(): Accelerator { - return this.options.accelerator ?? hostAccelerator(); - } - - generateToken(): string { - return generateToken(); - } - - /** A client for every guest route of a running Dot. */ - guestClient(guestPort: number, token: string, options: GuestClientOptions = {}): GuestClient { - return new GuestClient(guestPort, token, { logger: this.logger, ...options }); - } - - /** - * Wait until the guest answers `GET /v1/health` (section 9.4). Fails early - * when QEMU exits meanwhile instead of waiting out the whole timeout. A - * guest that never comes up is reported with the end of QEMU's log and of - * the serial console, because a VM that QEMU runs but that never boots - * (a vCPU the accelerator stopped, a guest stuck in its firmware) shows - * nothing anywhere else. A refused token (401) is passed on as it is. - */ - async waitForGuestHealth(dotId: string, guestPort: number, token: string, options: WaitForGuestHealthOptions = {}) { - assertDotId(dotId); - const client = this.guestClient(guestPort, token); - try { - return await waitForGuestHealth(client, { - ...options, - check: async () => { - await options.check?.(); - if (!(await this.qemuRuns(dotId))) throw new VmStateError(dotId, "QEMU is not running any more"); - }, - }); - } catch (error) { - if (isFatalGuestError(error) || options.signal?.aborted) throw error; - throw await this.guestNotUp(dotId, error as Error); - } - } - - private async guestNotUp(dotId: string, cause: Error): Promise { - const qemuLog = this.paths.qemuLogPath(dotId); - const serialLog = this.paths.serialLogPath(dotId); - const [qemuOutput, serialOutput] = await Promise.all([this.readTail(qemuLog), this.readTail(serialLog)]); - return new VmStartError(dotId, `the guest did not come up (${cause.message}); QEMU's log is ${qemuLog}, the serial console ${serialLog}`, qemuOutput, { - cause, - serialOutput, - }); - } - - private loadTemplates(): Promise { - this.templates ??= loadSeedTemplates(this.options.virtualizationDir ?? DEFAULT_VIRTUALIZATION_DIR).catch((error: unknown) => { - this.templates = undefined; - throw error; - }); - return this.templates; - } - - /** Run `fn` with no other operation on the same Dot in flight in this process. */ - private async withLock(dotId: string, fn: () => Promise): Promise { - const previous = this.locks.get(dotId) ?? Promise.resolve(); - const run = previous.catch(() => undefined).then(fn); - const tail = run.catch(() => undefined); - this.locks.set(dotId, tail); - try { - return await run; - } finally { - if (this.locks.get(dotId) === tail) this.locks.delete(dotId); - } - } - - private vmDir(dotId: string): string { - const dir = resolve(this.paths.vmDir(dotId)); - const rel = relative(resolve(this.paths.vmsDir), dir); - // Belt and braces next to assertDotId: this directory is removed recursively on destroy. - if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) { - throw new VmManagerError(`refusing VM directory ${dir}: it is not inside ${this.paths.vmsDir}`); - } - return dir; - } - - private validateSpec(spec: VmSpec): void { - assertDotId(spec.dotId); - checkVmResources(spec); - if (!Number.isSafeInteger(spec.diskBytes) || spec.diskBytes <= 0) { - throw new VmManagerError(`diskBytes must be a positive integer, got ${spec.diskBytes}`); - } - if (!spec.token) throw new VmManagerError("the Dot token is empty"); - if (!isAbsolute(spec.goldenImage) || !isAbsolute(spec.runtimeImage)) { - throw new VmManagerError("goldenImage and runtimeImage must be absolute paths: QEMU runs detached and qemu-img records the backing path"); - } - } - - /** Both images of the spec exist: a VM is never created or started on a path that leads nowhere. */ - private async assertImages(spec: VmSpec): Promise { - for (const [label, path] of [ - ["golden image", spec.goldenImage], - ["runtime ISO", spec.runtimeImage], - ] as const) { - if (!(await pathExists(path))) throw new VmManagerError(`${label} ${path} does not exist: build it with "invisible-dots image build" first`); - } - } - - private async qemuImg(args: string[]) { - const { img } = await this.qemu(); - return this.runner.run(img, args, { timeoutMs: this.options.qemuImgTimeoutMs ?? 300_000 }); - } - - private async writeSeed(spec: VmSpec): Promise { - // The seed written last decides the id of this one (renderSeed): the same content keeps it, any other gets a new one. - const record = join(this.paths.vmDir(spec.dotId), "seed-instance.json"); - const previous = await readFile(record, "utf8").then(parsePreviousSeed, () => undefined); - const seed = renderSeed(await this.loadTemplates(), spec.dotId, spec.token, spec.proxy, previous); - // Replaces a seed.iso a QEMU killed a moment ago may still hold open (Windows). - await retryWhileInUse(() => writeSeedIso(this.paths.seedPath(spec.dotId), seed)); - const temporary = `${record}.tmp`; - await writeFile(temporary, `${JSON.stringify({ digest: seed.digest, instanceId: seed.instanceId })}\n`, { mode: 0o600 }); - await replaceFile(temporary, record); - return seed.instanceId; - } - - /** - * Provision a Dot's computer (section 9.4, up to the seed): the overlay - * backed by the golden image and the NoCloud seed. Safe to call again after - * a failure: an existing disk is kept and the seed is rewritten. - */ - async create(spec: VmSpec): Promise { - this.validateSpec(spec); - return this.withLock(spec.dotId, async () => { - await this.assertImages(spec); - const current = await this.probe(spec.dotId); - if (current.state !== "STOPPED") { - throw new VmStateError(spec.dotId, `the VM is ${current.state}; stop it before creating its disk and seed again`); - } - const dir = this.vmDir(spec.dotId); - await mkdir(dir, { recursive: true, mode: 0o700 }); - const diskPath = this.paths.diskPath(spec.dotId); - let diskCreated = false; - if (await pathExists(diskPath)) { - this.logger.warn("overlay already exists, keeping it", { dotId: spec.dotId, disk: diskPath }); - } else { - await this.qemuImg(["create", "-f", "qcow2", "-F", "qcow2", "-b", qemuPathArg("golden image", spec.goldenImage), qemuPathArg("disk", diskPath), String(spec.diskBytes)]); - diskCreated = true; - } - const instanceId = await this.writeSeed(spec); - this.logger.info("vm created", { dotId: spec.dotId, diskCreated, instanceId }); - return { vmDir: dir, diskPath, seedPath: this.paths.seedPath(spec.dotId), diskCreated, instanceId }; - }); - } - - /** Forget a QEMU that is gone: its pid file, and its ChildProcess if this process held it. */ - private async forget(dotId: string): Promise { - this.owned.delete(dotId); - await rm(this.paths.processFilePath(dotId), { force: true }); - } - - /** - * Whether the QEMU of the pid file still runs. Its exit when this process - * spawned it; otherwise its pid, unless the host restarted since the file - * was written. A pid that exists for another user counts as running here, - * so such a VM is reported ERROR rather than STOPPED and forgotten. - */ - private runs(dotId: string, record: ProcessFile): boolean { - const owned = this.owned.get(dotId); - if (owned && owned.pid === record.pid) return owned.exit === undefined; - if (hostRestartedSince(record.host_uptime_s)) return false; - return this.processes.presence(record.pid) !== "gone"; - } - - private async qemuRuns(dotId: string): Promise { - const record = await readProcessFile(this.paths.processFilePath(dotId)); - return record !== undefined && record !== "unreadable" && this.runs(dotId, record); - } - - /** - * The rule that decides whether a process may be killed or treated as a - * Dot's QEMU: either this process spawned it and Node has not reported its - * exit (Node holds the process, so its pid cannot be recycled meanwhile), - * or its pid from the pid file is alive and runs as this user (a QEMU this - * control plane spawned always does; EPERM means another user's process) - * AND the guest port from the same file accepts connections. QEMU listens - * there for as long as it runs; a process that got a recycled pid after a - * crash or a host restart does not listen on that one port. Nothing else - * is ever killed. A listener is still not trusted with the Dot token: the - * guest client asks it for its proof first (section 5.1). - */ - private async processIsOurs(dotId: string, record: ProcessFile): Promise { - const owned = this.owned.get(dotId); - if (owned && owned.pid === record.pid) return owned.exit === undefined; - if (hostRestartedSince(record.host_uptime_s)) return false; - return this.processes.presence(record.pid) === "ours" && (await portListens(record.guest_port)); - } - - /** Read a VM's state from its pid file and its process (section 3.4). */ - private async probe(dotId: string): Promise { - const record = await readProcessFile(this.paths.processFilePath(dotId)); - if (record === undefined) return STOPPED; - const file = this.paths.processFilePath(dotId); - if (record === "unreadable") { - return { - state: "ERROR", - pid: null, - guestPort: null, - verified: false, - detail: `${file} is not a pid file this version wrote, so whether a QEMU runs on this disk is unknown; make sure none does, then remove the file`, - }; - } - if (!this.runs(dotId, record)) return { ...STOPPED, record }; - if (await this.processIsOurs(dotId, record)) { - return { state: "RUNNING", pid: record.pid, guestPort: record.guest_port, verified: true, record }; - } - return { - state: "ERROR", - pid: record.pid, - guestPort: null, - verified: false, - record, - detail: - `process ${record.pid} from ${file} is alive but nothing listens on its guest port ${record.guest_port}: ` + - `either the pid now belongs to another process or that QEMU hangs. It is never killed by invisible_dots; ` + - `check the process, then remove ${file}`, - }; - } - - /** - * The VM's state (section 3.4): RUNNING while its QEMU runs, STOPPED when it - * does not. Whether the guest is up is guest health (section 9.3). This is - * the reconciliation of section 3.4 too, the one place it happens: a pid - * file whose process is gone is removed the moment it is read, under the - * Dot's lock, so a pid recycled later can never make it look alive. - */ - async state(dotId: string): Promise { - assertDotId(dotId); - return this.withLock(dotId, async () => { - const { verified: _verified, record, ...info } = await this.probe(dotId); - if (info.state === "STOPPED" && record) { - this.logger.info("QEMU of the pid file is gone, removing the file", { dotId, pid: record.pid }); - await this.forget(dotId); - } - return info; - }); - } - - /** - * Start the VM (section 9.4 from "pick a guest port" to "spawn QEMU"). The - * seed is rewritten from `spec` first, so the token on record is the one - * the guest sees; cpus, memory and the runtime ISO come from `spec` too, so - * new values apply on this start. Returns once QEMU listens on the guest - * port and is still running a moment later; waiting for the guest is - * `waitForGuestHealth`. - */ - async start(spec: VmSpec): Promise { - this.validateSpec(spec); - return this.withLock(spec.dotId, () => this.startLocked(spec)); - } - - private async startLocked(spec: VmSpec): Promise { - const { dotId } = spec; - const current = await this.probe(dotId); - if (current.state === "RUNNING" && current.record) { - return { pid: current.record.pid, guestPort: current.record.guest_port, alreadyRunning: true }; - } - if (current.state !== "STOPPED") { - throw new VmStateError(dotId, `cannot start a VM that is ${current.state}${current.detail ? ` (${current.detail})` : ""}; stop or destroy it first`); - } - await this.forget(dotId); - const diskPath = this.paths.diskPath(dotId); - if (!(await pathExists(diskPath))) throw new VmStateError(dotId, `${diskPath} does not exist; create the VM first`); - await this.assertImages(spec); - await this.writeSeed(spec); - const qemu = await this.qemu(); - const accel = this.accelerator; - await mkdir(this.paths.logsDir, { recursive: true, mode: 0o700 }); - const logPath = this.paths.qemuLogPath(dotId); - const attempts = this.options.maxPortAttempts ?? 5; - const pickPort = this.options.pickPort ?? (() => pickFreePort()); - - for (let attempt = 1; attempt <= attempts; attempt++) { - const guestPort = await pickPort(); - const args = qemuArgs({ - dotId, - accelerator: accel, - cpus: spec.cpus, - memoryMiB: spec.memoryMiB, - diskPath, - seedPath: this.paths.seedPath(dotId), - runtimeIsoPath: spec.runtimeImage, - guestPort, - serialLogPath: this.paths.serialLogPath(dotId), - }); - await appendFile(logPath, `--- ${new Date().toISOString()} start, guest port ${guestPort}\n`, { mode: 0o600 }); - const logOffset = await fileSize(logPath); - let child: DetachedProcess; - try { - child = await this.processes.spawnDetached(qemu.system, args, { - logPath, - cwd: this.paths.home, - env: allowlistedEnvironment(process.env), - }); - } catch (error) { - if (error instanceof CommandError && error.notFound) { - // Installed QEMU went away since it was found: look again next time. - this.qemuPromise = this.options.qemu ? this.qemuPromise : undefined; - } - throw new VmStartError(dotId, `cannot run ${qemu.system}: ${(error as Error).message}`, "", { cause: error }); - } - const owned: OwnedProcess = { pid: child.pid, exited: child.exited }; - void child.exited.then((exit) => { - owned.exit = exit; - }); - this.owned.set(dotId, owned); - const record: ProcessFile = { pid: child.pid, guest_port: guestPort, host_uptime_s: hostUptimeSeconds() }; - try { - // Before anything can fail: from here on a restarted control plane finds this QEMU. - await writeProcessFile(this.paths.processFilePath(dotId), record); - } catch (error) { - await this.killOurs(dotId, record); - await this.forget(dotId); - throw new VmStartError(dotId, `cannot write the pid file ${this.paths.processFilePath(dotId)}: ${(error as Error).message}`, "", { cause: error }); - } - this.logger.info("qemu spawned", { dotId, pid: child.pid, guestPort, attempt }); - - const outcome = await this.waitForForward(owned, guestPort); - if (outcome.kind === "exited") { - const output = await this.readLogFrom(logPath, logOffset); - await this.forget(dotId); - if (PORT_TAKEN.test(output) && attempt < attempts) { - this.logger.warn("guest port taken, trying another", { dotId, guestPort, attempt }); - continue; - } - throw this.startFailure(dotId, accel, output, outcome.exit); - } - if (outcome.kind === "timeout") { - await this.killOurs(dotId, record); - await this.forget(dotId); - const output = await this.readLogFrom(logPath, logOffset); - throw new VmStartError( - dotId, - `QEMU did not set up its port forward on 127.0.0.1:${guestPort} within ${this.options.startTimeoutMs ?? 30_000} ms and was killed`, - output, - ); - } - this.logger.info("vm started", { dotId, pid: child.pid, guestPort }); - return { pid: child.pid, guestPort, alreadyRunning: false }; - } - throw new VmStartError(dotId, `QEMU could not bind a guest port in ${attempts} attempts`); - } - - /** - * Wait until QEMU listens on the guest port and is still running - * `startSettleMs` later, until it exits, or until the start timeout. The - * listening port is the sign QEMU parsed its command line, opened the - * accelerator and set up networking; the settle catches what fails right - * after (the CPU model is checked when the machine is built). - */ - private async waitForForward(owned: OwnedProcess, guestPort: number): Promise<{ kind: "ready" } | { kind: "exited"; exit: ProcessExit } | { kind: "timeout" }> { - const deadline = Date.now() + (this.options.startTimeoutMs ?? 30_000); - const interval = this.options.pollIntervalMs ?? 500; - const exited = async () => { - // A settled `exited` is seen only after the microtask queue drains. - await Promise.resolve(); - if (owned.exit === undefined && this.processes.presence(owned.pid) !== "gone") return undefined; - // Let the exit event deliver the code when it is about to. - return owned.exit ?? (await Promise.race([owned.exited, this.sleep(interval).then(() => ({ code: null, signal: null }))])); - }; - for (;;) { - const exit = await exited(); - if (exit) return { kind: "exited", exit }; - if (await portListens(guestPort)) { - await this.sleep(this.options.startSettleMs ?? 1000); - const late = await exited(); - return late ? { kind: "exited", exit: late } : { kind: "ready" }; - } - if (Date.now() >= deadline) return { kind: "timeout" }; - await this.sleep(interval); - } - } - - private startFailure(dotId: string, accel: Accelerator, output: string, exit: ProcessExit): Error { - if (CPU_MODEL_FAILURES.some((pattern) => pattern.test(output))) return new CpuModelError(accel, CPU_MODEL, output); - if (ACCELERATOR_FAILURES.some((pattern) => pattern.test(output))) return new AcceleratorUnavailableError(accel, output); - const how = exit.signal ? `was killed by ${exit.signal}` : exit.code === null ? "exited" : `exited with code ${exit.code}`; - return new VmStartError(dotId, `QEMU ${how} during start`, output); - } - - /** What a log gained since `offset`, at most its last 64 KiB: the tail is what explains a failure. */ - private async readLogFrom(path: string, offset: number): Promise { - return this.readRange(path, offset, 64 * 1024); - } - - /** The last few KiB of a log, or "" when it does not exist. */ - private readTail(path: string): Promise { - return this.readRange(path, 0, LOG_TAIL_BYTES); - } - - private async readRange(path: string, offset: number, maxBytes: number): Promise { - try { - const handle = await open(path, "r"); - try { - const { size } = await handle.stat(); - // A runaway log must not be read whole. - const start = Math.max(offset, size - maxBytes); - const buffer = Buffer.alloc(Math.max(0, size - start)); - await handle.read(buffer, 0, buffer.length, start); - return buffer.toString("utf8"); - } finally { - await handle.close(); - } - } catch { - return ""; - } - } - - /** Wait until the QEMU of `record` is gone; false when it still runs after `timeoutMs`. */ - private async waitForExit(dotId: string, record: ProcessFile, timeoutMs: number): Promise { - const deadline = Date.now() + timeoutMs; - const interval = this.options.pollIntervalMs ?? 500; - for (;;) { - // A settled `exited` is seen only after the microtask queue drains. - await Promise.resolve(); - if (!this.runs(dotId, record)) return true; - if (Date.now() >= deadline) return false; - await this.sleep(interval); - } - } - - /** Kill the QEMU of `record`, only if `processIsOurs` still holds, and wait for it to go. */ - private async killOurs(dotId: string, record: ProcessFile): Promise { - if (!(await this.processIsOurs(dotId, record))) { - this.logger.info("QEMU is gone, nothing to kill", { dotId, pid: record.pid }); - return; - } - this.logger.warn("killing QEMU", { dotId, pid: record.pid }); - this.processes.kill(record.pid); - const timeoutMs = this.options.killTimeoutMs ?? 10_000; - if (!(await this.waitForExit(dotId, record, timeoutMs))) { - throw new VmStateError(dotId, `QEMU ${record.pid} is still running ${timeoutMs} ms after it was killed`); - } - } - - /** - * Graceful stop (sections 3.4 and 9.5): `POST /v1/system/poweroff` through - * the guest channel, then wait up to the shutdown timeout for QEMU to exit - * (the guest powers off and QEMU exits with it), then kill it. A guest - * that does not accept the poweroff (it is not up, or it refuses the - * token) cannot power itself off, so its QEMU is killed at once. Callers - * that want the guest's state flushed first call the agent's prepare-sleep - * before this. - */ - async stop(dotId: string, token: string, options: { timeoutMs?: number } = {}): Promise { - assertDotId(dotId); - return this.withLock(dotId, () => this.stopLocked(dotId, token, options.timeoutMs ?? this.options.shutdownTimeoutMs ?? 60_000)); - } - - private async stopLocked(dotId: string, token: string, timeoutMs: number): Promise { - const current = await this.probe(dotId); - if (current.state === "STOPPED") { - await this.forget(dotId); - return { forced: false, wasRunning: false }; - } - if (!current.verified || !current.record) { - throw new VmStateError(dotId, `cannot stop it safely: ${current.detail ?? "its QEMU cannot be identified"}`); - } - const record = current.record; - let accepted = false; - try { - await this.guestClient(record.guest_port, token).powerOff(this.options.powerOffRequestTimeoutMs ?? 10_000); - accepted = true; - } catch (error) { - this.logger.warn("the guest did not accept the poweroff, killing QEMU", { dotId, error: (error as Error).message }); - } - let forced = false; - if (!accepted || !(await this.waitForExit(dotId, record, timeoutMs))) { - if (accepted) this.logger.warn("guest did not power off in time, killing QEMU", { dotId, timeoutMs }); - await this.killOurs(dotId, record); - forced = true; - } - await this.forget(dotId); - this.logger.info("vm stopped", { dotId, forced }); - return { forced, wasRunning: true }; - } - - /** - * Reboot as a full stop and start, not a reset: a reset skips the guest's - * shutdown (the agent's SQLite state, browser profiles) and keeps the old - * QEMU process, so a new runtime ISO or new cpus and memory would not - * apply. The guest port changes; store the result. - */ - async reboot(spec: VmSpec, options: { timeoutMs?: number } = {}): Promise { - this.validateSpec(spec); - return this.withLock(spec.dotId, async () => { - await this.stopLocked(spec.dotId, spec.token, options.timeoutMs ?? this.options.shutdownTimeoutMs ?? 60_000); - return this.startLocked(spec); - }); - } - - /** Remove everything: the running QEMU (killed, no graceful shutdown: the disk goes too) and the VM directory. */ - async destroy(dotId: string): Promise { - assertDotId(dotId); - return this.withLock(dotId, async () => { - const dir = this.vmDir(dotId); - const current = await this.probe(dotId); - if (current.state !== "STOPPED") { - if (!current.verified || !current.record) { - throw new VmStateError(dotId, `cannot destroy it safely: ${current.detail ?? "its QEMU cannot be identified"}`); - } - await this.killOurs(dotId, current.record); - } - this.owned.delete(dotId); - await retryWhileInUse(() => rm(dir, { recursive: true, force: true })); - await retryWhileInUse(() => rm(this.paths.qemuLogPath(dotId), { force: true })); - this.logger.info("vm destroyed", { dotId, dir }); - }); - } - - /** - * Apply new resources. cpus and memory are not stored here: they are part - * of the VmSpec of every start, so a running VM gets them on its next - * start. The disk is grown with `qemu-img resize` and only while the VM is - * stopped; the guest's cloud-init grows the partition on the next boot. - */ - async resize(spec: VmSpec): Promise { - this.validateSpec(spec); - return this.withLock(spec.dotId, async () => { - const current = await this.probe(spec.dotId); - if (current.state === "STOPPED") { - const { resized } = await this.resizeDiskLocked(spec.dotId, spec.diskBytes); - return { restartRequired: false, diskResized: resized }; - } - const size = await this.diskSize(spec.dotId); - if (spec.diskBytes !== size) { - throw new VmStateError(spec.dotId, `the disk can only be resized while the VM is stopped (it is ${current.state})`); - } - return { restartRequired: true, diskResized: false }; - }); - } - - /** Grow the overlay; never shrink it, because that destroys the filesystem on it. */ - async resizeDisk(dotId: string, diskBytes: number): Promise<{ resized: boolean; previousBytes: number }> { - assertDotId(dotId); - return this.withLock(dotId, async () => { - const current = await this.probe(dotId); - if (current.state !== "STOPPED") { - throw new VmStateError(dotId, `the disk can only be resized while the VM is stopped (it is ${current.state})`); - } - return this.resizeDiskLocked(dotId, diskBytes); - }); - } - - private async diskSize(dotId: string): Promise { - const disk = this.paths.diskPath(dotId); - // -U: read the header even if a QEMU holds the image; the size is in the header and never torn. - const { stdout } = await this.qemuImg(["info", "--output=json", "-U", disk]); - try { - const size = Number((JSON.parse(stdout) as { "virtual-size": number })["virtual-size"]); - if (!Number.isSafeInteger(size)) throw new Error(`virtual-size is ${size}`); - return size; - } catch (error) { - throw new VmManagerError(`cannot read the size of ${disk} from qemu-img info`, { cause: error }); - } - } - - private async resizeDiskLocked(dotId: string, diskBytes: number): Promise<{ resized: boolean; previousBytes: number }> { - if (!Number.isSafeInteger(diskBytes) || diskBytes <= 0) { - throw new VmManagerError(`diskBytes must be a positive integer, got ${diskBytes}`); - } - const disk = this.paths.diskPath(dotId); - const previousBytes = await this.diskSize(dotId); - if (diskBytes < previousBytes) { - throw new VmManagerError(`dot ${dotId}: the disk is ${previousBytes} bytes; shrinking it to ${diskBytes} is not supported`); - } - if (diskBytes === previousBytes) return { resized: false, previousBytes }; - await this.qemuImg(["resize", "-f", "qcow2", disk, String(diskBytes)]); - this.logger.info("disk resized", { dotId, previousBytes, diskBytes }); - return { resized: true, previousBytes }; - } - - // Snapshots and rollback are out of scope (architecture section 10). - - createSnapshot(_dotId: string, _name: string): Promise { - return Promise.reject(new NotImplementedError("VM snapshots")); - } - - listSnapshots(_dotId: string): Promise { - return Promise.reject(new NotImplementedError("VM snapshots")); - } - - restoreSnapshot(_dotId: string, _name: string): Promise { - return Promise.reject(new NotImplementedError("VM snapshot rollback")); - } - - deleteSnapshot(_dotId: string, _name: string): Promise { - return Promise.reject(new NotImplementedError("VM snapshots")); - } -} diff --git a/apps/vm-manager/test/accelerator-access.test.ts b/apps/vm-manager/test/accelerator-access.test.ts deleted file mode 100644 index 8197b04c..00000000 --- a/apps/vm-manager/test/accelerator-access.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { - checkAcceleratorAccess, - encodeCommand, - HYPERVISOR_PLATFORM_STATE_SCRIPT, - powershellArgs, - powershellPath, - type AccessDeps, -} from "../src/index.js"; -import { fakeRunner, type Answer } from "./doctor-fakes.js"; - -const PS = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"; - -function errno(code: string): NodeJS.ErrnoException { - return Object.assign(new Error(`${code}: /dev/kvm`), { code }); -} - -function fakeHost(options: { platform: NodeJS.Platform; respond?: (command: string, args: readonly string[]) => Answer; kvm?: string }) { - const runner = fakeRunner((command, args) => options.respond?.(command, args) ?? {}); - const deps: AccessDeps = { - platform: options.platform, - env: { SystemRoot: "C:\\Windows" }, - run: runner.run, - openReadWrite: async () => { - if (options.kvm) throw errno(options.kvm); - }, - }; - return { deps, calls: runner.calls }; -} - -describe("accelerator access (the host side of section 1.1)", () => { - it("Linux: /dev/kvm read-write is ok; absent and not permitted are missing with their fixes", async () => { - expect(await checkAcceleratorAccess(fakeHost({ platform: "linux" }).deps)).toEqual({ - id: "accelerator", - label: "accelerator", - status: "ok", - detail: "/dev/kvm opens read-write", - }); - expect(await checkAcceleratorAccess(fakeHost({ platform: "linux", kvm: "EACCES" }).deps)).toEqual({ - id: "accelerator", - label: "accelerator", - status: "missing", - detail: "/dev/kvm exists but this user cannot open it read-write", - fix: "sudo usermod -aG kvm $USER, then log out and in again (a new login is needed for the group to apply)", - }); - expect(await checkAcceleratorAccess(fakeHost({ platform: "linux", kvm: "ENOENT" }).deps)).toMatchObject({ - status: "missing", - detail: "/dev/kvm does not exist", - }); - expect((await checkAcceleratorAccess(fakeHost({ platform: "linux", kvm: "EIO" }).deps)).status).toBe("failed"); - }); - - it("Windows: reads the HypervisorPlatform state through Get-CimInstance, without elevation", async () => { - const states: Record = { "1\r\n": "ok", "2\r\n": "missing", "3\r\n": "failed", "": "failed" }; - for (const [stdout, status] of Object.entries(states)) { - const host = fakeHost({ platform: "win32", respond: () => ({ stdout }) }); - expect((await checkAcceleratorAccess(host.deps)).status).toBe(status); - expect(host.calls).toEqual([{ command: PS, args: powershellArgs(HYPERVISOR_PLATFORM_STATE_SCRIPT), options: { timeoutMs: 60_000 } }]); - } - const disabled = await checkAcceleratorAccess(fakeHost({ platform: "win32", respond: () => ({ stdout: "2\r\n" }) }).deps); - expect(disabled).toEqual({ - id: "accelerator", - label: "accelerator", - status: "missing", - detail: "the HypervisorPlatform feature is disabled", - fix: "invisible-dots setup (enables it with one administrator prompt; a restart follows)", - }); - const broken = await checkAcceleratorAccess(fakeHost({ platform: "win32", respond: () => ({ code: 1, stderr: "Get-CimInstance : Access denied\r\n" }) }).deps); - expect(broken).toMatchObject({ status: "failed", detail: "cannot read the HypervisorPlatform feature state: Get-CimInstance : Access denied" }); - }); - - it("any other host is refused", async () => { - expect(await checkAcceleratorAccess(fakeHost({ platform: "darwin" }).deps)).toMatchObject({ status: "failed", detail: "darwin hosts are not supported" }); - }); -}); - -describe("the PowerShell the host runs", () => { - it("is Windows PowerShell by absolute path, given a script as an encoded command that reads back to the script", () => { - expect(Buffer.from(encodeCommand("Write-Output 1"), "base64").toString("utf16le")).toBe("Write-Output 1"); - expect(powershellArgs("x")).toEqual(["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-EncodedCommand", encodeCommand("x")]); - expect(powershellPath({ SystemRoot: "D:\\Win" })).toBe("D:\\Win\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"); - expect(powershellPath({})).toBe("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"); - expect(HYPERVISOR_PLATFORM_STATE_SCRIPT).toBe(`(Get-CimInstance -ClassName Win32_OptionalFeature -Filter "Name='HypervisorPlatform'").InstallState`); - }); -}); diff --git a/apps/vm-manager/test/agentd.linux.test.ts b/apps/vm-manager/test/agentd.linux.test.ts deleted file mode 100644 index 8881884d..00000000 --- a/apps/vm-manager/test/agentd.linux.test.ts +++ /dev/null @@ -1,179 +0,0 @@ -/** - * The host's GuestClient against the real dot-agentd, not a stand-in: the daemon built with the image builder's one - * build, run as its README's development mode describes (`--run-as=`: the model's work as the daemon's own user; - * `--listen 127.0.0.1:0`), with a guest config holding the Dot's token, and a stand-in for the engine on the unix - * socket the daemon proxies `/v1/agent` to. What the two sides each test alone with a fake of the other, this tests - * across the seam: the proof, the token, the routes, the bodies, and an event stream passed on as it is written. - * - * Linux only (vitest.config.ts leaves `*.linux.test.ts` out elsewhere): the daemon is a Linux program, its exec route - * runs /bin/bash and the engine's socket is a unix socket. It needs Go, which CI's node job sets up from go.mod. - */ -import { execFile, spawn, type ChildProcess } from "node:child_process"; -import { mkdir, mkdtemp, realpath, rm, writeFile } from "node:fs/promises"; -import { createServer, get, type Server, type ServerResponse } from "node:http"; -import { tmpdir } from "node:os"; -import { join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { promisify } from "node:util"; -import { AGENTD_ROUTES, GUEST_UNPROVEN, type OutboundEvent } from "@invisible-dots/shared"; -import { agentdBuildCommand } from "@invisible-dots/image-builder"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { GuestClient, GuestRequestError } from "../src/index.js"; - -const REPO = resolve(fileURLToPath(new URL(".", import.meta.url)), "../../.."); -const TOKEN = "integration-token-0123456789"; - -let dir: string; -let home: string; -let daemon: ChildProcess | undefined; -let agent: Server | undefined; -let port: number; -/** What reached the stand-in engine through the daemon's proxy, as `METHOD /path?query`. */ -const agentSeen: string[] = []; -/** The open event streams the stand-in holds, to write the next event into. */ -const streams: ServerResponse[] = []; - -function event(seq: number): OutboundEvent { - return { seq, id: `evt_${seq}`, type: "automation.next_run", ts: "2026-10-11T10:00:00.000Z", data: { next_run_at_ms: seq } }; -} - -function sse(res: ServerResponse, seq: number): void { - res.write(`id: ${seq}\ndata: ${JSON.stringify(event(seq))}\n\n`); -} - -/** The engine's side of the proxy: /health, and /events/stream, which sends one event and keeps the stream open. */ -function startAgent(socket: string): Promise { - const server = createServer((req, res) => { - const url = new URL(req.url!, "http://agent"); - agentSeen.push(`${req.method} ${url.pathname}${url.search}`); - if (url.pathname === "/health") { - res.writeHead(200, { "content-type": "application/json" }); - res.end(JSON.stringify({ status: "ok", state: "idle", openrouter_configured: true, browser: { identities: 0, open: 0 }, checks: {} })); - return; - } - if (url.pathname === "/events/stream") { - res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache" }); - sse(res, Number(url.searchParams.get("after") ?? 0) + 1); - streams.push(res); - return; - } - res.writeHead(404, { "content-type": "application/json" }).end(JSON.stringify({ error: "not_found" })); - }); - return new Promise((done, fail) => { - server.once("error", fail); - server.listen(socket, () => done(server)); - }); -} - -/** Starts the daemon and answers the TCP port it listens on, from its log line `listening on="tcp 127.0.0.1:"`. */ -function startDaemon(binary: string, args: string[]): Promise<{ child: ChildProcess; port: number }> { - const child = spawn(binary, args, { stdio: ["ignore", "ignore", "pipe"] }); - return new Promise((done, fail) => { - let log = ""; - child.stderr!.setEncoding("utf8"); - child.stderr!.on("data", (chunk: string) => { - log += chunk; - const listening = /listening on="tcp 127\.0\.0\.1:(\d+)"/.exec(log); - if (listening) done({ child, port: Number(listening[1]) }); - }); - child.once("error", fail); - child.once("exit", (code, signal) => fail(new Error(`dot-agentd exited (${code ?? signal}) before it listened:\n${log}`))); - }); -} - -beforeAll(async () => { - dir = await mkdtemp(join(tmpdir(), "idots-agentd-")); - home = join(dir, "home"); - await mkdir(home); - const binary = join(dir, "dot-agentd"); - const build = agentdBuildCommand(REPO, binary); - await promisify(execFile)(build.command, build.args, { env: { ...process.env, ...build.env } }); - const config = join(dir, "config.json"); - await writeFile(config, JSON.stringify({ dotId: "dot_integration", token: TOKEN }), { mode: 0o600 }); - const agentSocket = join(dir, "agent.sock"); - agent = await startAgent(agentSocket); - const started = await startDaemon(binary, [ - "--config", config, - "--home", home, - "--run-dir", join(dir, "run"), - "--agent-socket", agentSocket, - "--listen", "127.0.0.1:0", - "--run-as=", - ]); - daemon = started.child; - port = started.port; - // The build: a cold Go cache compiles the standard library for linux/amd64 first, and a host whose Go is older - // than go.mod's toolchain downloads that one. -}, 600_000); - -afterAll(async () => { - for (const res of streams) res.destroy(); - if (daemon && daemon.exitCode === null && daemon.signalCode === null) { - const exited = new Promise((done) => daemon!.once("exit", done)); - daemon.kill("SIGTERM"); - await exited; - } - await new Promise((done) => (agent ? agent.close(() => done()) : done())); - if (dir) await rm(dir, { recursive: true, force: true }); -}); - -describe("GuestClient against dot-agentd", () => { - it("is given the proof of the token before it sends the token", async () => { - await expect(new GuestClient(port, TOKEN).prove()).resolves.toBeUndefined(); - const impostor = new GuestClient(port, "another-dot-token"); - await expect(impostor.health()).rejects.toMatchObject({ code: GUEST_UNPROVEN }); - }); - - it("is refused without the token: 401 with the Bearer challenge", async () => { - const answer = await new Promise<{ status: number; challenge: string | undefined; body: string }>((done, fail) => { - get({ host: "127.0.0.1", port, path: AGENTD_ROUTES.health }, (res) => { - let body = ""; - res.setEncoding("utf8"); - res.on("data", (chunk: string) => (body += chunk)); - res.on("end", () => done({ status: res.statusCode ?? 0, challenge: res.headers["www-authenticate"], body })); - }).once("error", fail); - }); - expect(answer.status).toBe(401); - expect(answer.challenge).toBe('Bearer realm="dot-agentd"'); - expect(JSON.parse(answer.body)).toMatchObject({ error: "unauthorized" }); - }); - - it("reads health with the engine's own answer passed through", async () => { - const health = await new GuestClient(port, TOKEN).health(); - expect(health).toMatchObject({ agentd: "ok", agent: { status: "ok", state: "idle", openrouter_configured: true } }); - expect(agentSeen).toContain("GET /health"); - }); - - it("runs a command in home and reads its exit code and both streams", async () => { - const client = new GuestClient(port, TOKEN); - expect(await client.exec({ command: "printf out; printf err >&2; exit 3" })).toMatchObject({ exit_code: 3, stdout: "out", stderr: "err", timed_out: false }); - expect((await client.exec({ command: "pwd" })).stdout.trim()).toBe(await realpath(home)); - }); - - it("writes, reads and lists a file under home, and refuses one outside it", async () => { - const client = new GuestClient(port, TOKEN); - await client.writeFile("notes/hello.txt", "hello from the host"); - expect((await client.readFile("~/notes/hello.txt")).toString("utf8")).toBe("hello from the host"); - const listing = await client.listFiles("notes"); - expect(listing.entries).toEqual([expect.objectContaining({ name: "hello.txt", type: "file", size: 19 })]); - const outside = await client.readFile("/etc/hostname").catch((error: unknown) => error); - expect(outside).toBeInstanceOf(GuestRequestError); - expect(outside).toMatchObject({ status: 403, code: "outside_home" }); - }); - - it("proxies the engine's routes, and its event stream as it is written", async () => { - const client = new GuestClient(port, TOKEN); - expect(await client.agentHealth()).toMatchObject({ status: "ok", state: "idle" }); - const controller = new AbortController(); - const got: number[] = []; - for await (const evt of client.events({ after: 4, signal: controller.signal })) { - got.push(evt.seq); - // The first event arrived while the engine still holds the stream open: the proxy did not wait for its end. - // The next one is written only now. - if (got.length === 1) sse(streams.at(-1)!, 6); - else controller.abort(); - } - expect(got).toEqual([5, 6]); - expect(agentSeen).toContain("GET /events/stream?after=4"); - }); -}); diff --git a/apps/vm-manager/test/doctor-fakes.ts b/apps/vm-manager/test/doctor-fakes.ts deleted file mode 100644 index 9f294371..00000000 --- a/apps/vm-manager/test/doctor-fakes.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** Fakes at the process boundary, shared by the vm-manager's doctor tests and the CLI's: a runner that records every command line and answers from a script, and a host where every check passes. */ -import type { DoctorCheck } from "@invisible-dots/shared"; -import type { DoctorDeps, FoundQemu, RunOptions, RunResult } from "../src/index.js"; - -export interface RecordedRun { - command: string; - args: readonly string[]; - options: RunOptions; -} - -export type Answer = Partial; - -export function answer(partial: Answer = {}): RunResult { - return { code: 0, signal: null, stdout: "", stderr: "", timedOut: false, ...partial }; -} - -/** A runner whose answers come from `respond`; every call is kept in `calls`. */ -export function fakeRunner(respond: (command: string, args: readonly string[], options: RunOptions) => Answer | Promise) { - const calls: RecordedRun[] = []; - const run = async (command: string, args: readonly string[], options: RunOptions = {}) => { - calls.push({ command, args, options }); - return answer(await respond(command, args, options)); - }; - return { run, calls }; -} - -export const QEMU = "/opt/qemu/bin/qemu-system-x86_64"; -export const QEMU_IMG = "/opt/qemu/bin/qemu-img"; -export const FOUND: FoundQemu = { system: QEMU, img: QEMU_IMG, searched: ["INVISIBLE_DOTS_QEMU_DIR", "PATH"] }; - -export function ok(id: DoctorCheck["id"], label: string, detail = "fine"): DoctorCheck { - return { id, label, status: "ok", detail }; -} - -/** A host where every check passes; tests override one dependency at a time. */ -export function healthyDoctor(overrides: Partial = {}) { - const runner = fakeRunner((command, args) => { - if (args[0] === "--version") { - return { stdout: command === QEMU ? "QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.18)\nCopyright\n" : "qemu-img version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.18)\n" }; - } - // The probe: the firmware found nothing to boot and its reset ended QEMU (section 11.1). - return { code: 0 }; - }); - const deps: DoctorDeps = { - nodeVersion: "24.19.0", - accelerator: () => "kvm", - findQemu: async () => FOUND, - run: runner.run, - acceleratorAccess: async () => ok("accelerator", "accelerator", "/dev/kvm opens read-write"), - home: "/home/someone/.invisible-dots", - freeSpace: async () => ({ path: "/home/someone/.invisible-dots", bytes: 100 * 1024 ** 3 }), - images: async () => [ok("golden-image", "golden image", "golden-1.qcow2 matches its manifest"), ok("runtime-image", "runtime ISO", "runtime-1.iso matches its manifest")], - openRouterKey: async () => ok("openrouter", "OpenRouter key", "stored"), - ...overrides, - }; - return { deps, calls: runner.calls }; -} diff --git a/apps/vm-manager/test/doctor.test.ts b/apps/vm-manager/test/doctor.test.ts deleted file mode 100644 index 277eccf8..00000000 --- a/apps/vm-manager/test/doctor.test.ts +++ /dev/null @@ -1,234 +0,0 @@ -import type { DoctorCheck } from "@invisible-dots/shared"; -import { describe, expect, it } from "vitest"; -import { acceleratorProbeArgs, checkDataDirectory, checkNode, checkWebBuild, doctorAnswer, MIN_FREE_BYTES, openRouterCheck, PROBE_TIMEOUT_MS, runDoctor } from "../src/index.js"; -import { answer, healthyDoctor, QEMU } from "./doctor-fakes.js"; - -const ids = (results: DoctorCheck[]) => results.map((r) => r.id); -const find = (results: DoctorCheck[], id: DoctorCheck["id"]) => results.find((r) => r.id === id)!; - -describe("doctor checks", () => { - it("reports an unsupported host as a row, never by stopping the report", async () => { - const { deps, calls } = healthyDoctor({ - accelerator: () => { - throw new Error("invisible_dots does not run on darwin"); - }, - acceleratorAccess: async () => ({ id: "accelerator", label: "accelerator", status: "failed", detail: "darwin hosts are not supported", fix: "run invisible_dots on Linux or Windows (x86-64)" }), - }); - const results = await runDoctor(deps); - expect(ids(results)).toEqual(["node", "qemu", "qemu-img", "accelerator", "accelerator-probe", "disk", "golden-image", "runtime-image", "openrouter"]); - expect(find(results, "accelerator")).toMatchObject({ status: "failed", detail: "darwin hosts are not supported" }); - expect(find(results, "accelerator-probe")).toMatchObject({ status: "failed", detail: expect.stringContaining("does not run on darwin") }); - expect(calls.filter((c) => c.args.includes("-accel"))).toEqual([]); - }); - - it("runs every check of section 11.1 in the contract's order", async () => { - const results = await runDoctor(healthyDoctor().deps); - expect(ids(results)).toEqual(["node", "qemu", "qemu-img", "accelerator", "accelerator-probe", "disk", "golden-image", "runtime-image", "openrouter"]); - expect(results.every((r) => r.status === "ok")).toBe(true); - }); - - it("probes the accelerator by running the firmware of an empty q35 machine until its reset ends QEMU", async () => { - const { deps, calls } = healthyDoctor({ accelerator: () => "whpx" }); - const results = await runDoctor(deps); - const probe = calls.find((c) => c.args.includes("-accel"))!; - expect(probe.command).toBe(QEMU); - expect(probe.args).toEqual([ - "-nodefaults", "-no-user-config", "-machine", "q35", "-accel", "whpx", "-cpu", "host,-vmx,-svm", - "-display", "none", "-no-reboot", "-boot", "reboot-timeout=0", - ]); // prettier-ignore - expect(probe.options).toEqual({ timeoutMs: PROBE_TIMEOUT_MS }); - expect(find(results, "accelerator-probe").detail).toBe("qemu-system-x86_64 -accel whpx -cpu host,-vmx,-svm -machine q35 ran the firmware and exited"); - expect(acceleratorProbeArgs("kvm")).toContain("kvm"); - }); - - it("never holds the probe before its first instruction or talks to a monitor", () => { - const args = acceleratorProbeArgs("kvm"); - for (const flag of ["-S", "-qmp", "-monitor", "-mon", "-chardev"]) expect(args).not.toContain(flag); - }); - - it("reports QEMU and qemu-img missing with the setup fix, and does not probe", async () => { - const { deps, calls } = healthyDoctor({ findQemu: async () => ({ searched: ["C:\\Program Files\\qemu", "C:\\a", "C:\\b"] }) }); - const results = await runDoctor(deps); - expect(find(results, "qemu")).toEqual({ - id: "qemu", - label: "QEMU", - status: "missing", - detail: "qemu-system-x86_64 not found in the official installer's directory or on PATH (3 directories searched)", - fix: "invisible-dots setup", - }); - expect(find(results, "qemu-img").status).toBe("missing"); - expect(find(results, "accelerator-probe")).toMatchObject({ status: "missing", detail: "not run: QEMU is not ready", fix: "invisible-dots setup" }); - expect(calls).toHaveLength(0); - }); - - it("says INVISIBLE_DOTS_QEMU_DIR was the only place searched while it is set", async () => { - const { deps } = healthyDoctor({ findQemu: async () => ({ searched: ["D:\\tools\\qemu"], configured: true }) }); - expect(find(await runDoctor(deps), "qemu").detail).toBe( - "qemu-system-x86_64 not found in INVISIBLE_DOTS_QEMU_DIR (D:\\tools\\qemu), the only place searched while it is set", - ); - }); - - it("fails a QEMU older than 8.2 and one that reports no version", async () => { - const old = healthyDoctor(); - old.deps.run = async (command, args) => - answer(args[0] === "--version" ? { stdout: command === QEMU ? "QEMU emulator version 8.1.5 (Debian 1:8.1.5+ds-1)\n" : "qemu-img version 8.1.5\n" } : {}); - const results = await runDoctor(old.deps); - expect(find(results, "qemu")).toMatchObject({ status: "failed", detail: `${QEMU} is version 8.1.5, older than 8.2` }); - expect(find(results, "qemu-img").status).toBe("ok"); - expect(find(results, "accelerator-probe")).toMatchObject({ status: "failed", detail: "not run: QEMU is not ready" }); - - const broken = healthyDoctor(); - broken.deps.run = async () => answer({ code: 127, stderr: "error while loading shared libraries: libSDL2\n" }); - expect(find(await runDoctor(broken.deps), "qemu").detail).toBe( - `${QEMU} --version did not report a version (error while loading shared libraries: libSDL2)`, - ); - }); - - it("probes even when the host-side check says missing, and gives the failure that check's fix", async () => { - const missing: DoctorCheck = { id: "accelerator", label: "accelerator", status: "missing", detail: "/dev/kvm exists but this user cannot open it read-write", fix: "sudo usermod -aG kvm $USER" }; - const { deps, calls } = healthyDoctor({ acceleratorAccess: async () => missing }); - const versions = deps.run; - deps.run = async (command, args, options) => - args.includes("-accel") - ? answer({ code: 1, stderr: "qemu-system-x86_64: -accel kvm: Could not access KVM kernel module: Permission denied\n" }) - : versions(command, args, options); - const results = await runDoctor(deps); - expect(find(results, "accelerator")).toEqual(missing); - expect(find(results, "accelerator-probe")).toEqual({ - id: "accelerator-probe", - label: "accelerator probe", - status: "failed", - detail: "qemu-system-x86_64 -accel kvm -cpu host,-vmx,-svm -machine q35 failed: qemu-system-x86_64: -accel kvm: Could not access KVM kernel module: Permission denied", - fix: "sudo usermod -aG kvm $USER", - }); - expect(calls).toHaveLength(2); - }); - - it("reports the accelerator ok when the probe contradicts a host-side missing (WHPX without HypervisorPlatform)", async () => { - const { deps } = healthyDoctor({ - accelerator: () => "whpx", - acceleratorAccess: async () => ({ id: "accelerator", label: "accelerator", status: "missing", detail: "the HypervisorPlatform feature is disabled", fix: "invisible-dots setup" }), - }); - const results = await runDoctor(deps); - expect(find(results, "accelerator")).toEqual({ - id: "accelerator", - label: "accelerator", - status: "ok", - detail: "the HypervisorPlatform feature is disabled, but the probe below shows QEMU uses the accelerator", - }); - expect(find(results, "accelerator-probe").status).toBe("ok"); - }); - - it("fails the probe when it does not exit by itself: the virtual CPU never ran the firmware to its reset", async () => { - const hanging = healthyDoctor(); - const versions = hanging.deps.run; - hanging.deps.run = async (command, args, options) => - args.includes("-accel") ? answer({ code: null, signal: "SIGKILL", timedOut: true }) : versions(command, args, options); - expect(find(await runDoctor(hanging.deps), "accelerator-probe")).toMatchObject({ - status: "failed", - detail: "qemu-system-x86_64 -accel kvm -cpu host,-vmx,-svm -machine q35 failed: did not exit within 30 s, so the virtual CPU does not run", - fix: "enable hardware virtualization (Intel VT-x or AMD-V) in the firmware settings; after enabling the accelerator, restart the computer", - }); - - // Measured on Windows with QEMU 11.1: a refused vCPU leaves QEMU running with this on stderr. - const paused = healthyDoctor(); - paused.deps.run = async (command, args, options) => - args.includes("-accel") ? answer({ code: null, signal: "SIGKILL", timedOut: true, stderr: "WHPX: Unexpected VP exit code 4\n" }) : versions(command, args, options); - expect(find(await runDoctor(paused.deps), "accelerator-probe").detail).toBe( - "qemu-system-x86_64 -accel kvm -cpu host,-vmx,-svm -machine q35 failed: did not exit within 30 s, so the virtual CPU does not run (QEMU said: WHPX: Unexpected VP exit code 4)", - ); - }); - - it("turns a check that throws into a failed line instead of ending the report", async () => { - const { deps } = healthyDoctor({ - freeSpace: async () => { - throw new Error("statfs exploded"); - }, - images: async () => { - throw new Error("readdir exploded"); - }, - findQemu: async () => { - throw new Error("PATH unreadable"); - }, - }); - const results = await runDoctor(deps); - expect(results).toHaveLength(9); - expect(find(results, "disk")).toMatchObject({ status: "failed", detail: "the check itself failed: statfs exploded" }); - expect(find(results, "golden-image").status).toBe("failed"); - expect(find(results, "runtime-image").status).toBe("failed"); - expect(find(results, "qemu").detail).toBe("qemu-system-x86_64 not found (the search failed: PATH unreadable)"); - }); - - it("has a web row, just before the OpenRouter key, only when the caller serves a web client", async () => { - const webBuild = async () => ({ entry: "/repo/apps/web/.next/standalone/apps/web/server.js", missing: undefined }); - const results = await runDoctor(healthyDoctor({ webBuild }).deps); - expect(ids(results)).toEqual(["node", "qemu", "qemu-img", "accelerator", "accelerator-probe", "disk", "golden-image", "runtime-image", "web", "openrouter"]); - expect(results.every((r) => r.status === "ok")).toBe(true); - expect(ids(await runDoctor(healthyDoctor().deps))).not.toContain("web"); - }); - - it("reports the web client built, or missing with the command that builds it", async () => { - const entry = "/repo/apps/web/.next/standalone/apps/web/server.js"; - expect(checkWebBuild({ entry, missing: undefined })).toEqual({ id: "web", label: "web client", status: "ok", detail: `built at ${entry}` }); - const missing = "/repo/apps/web/.next/standalone/apps/web/.next/static"; - const { deps } = healthyDoctor({ webBuild: async () => ({ entry, missing }) }); - expect(find(await runDoctor(deps), "web")).toEqual({ - id: "web", - label: "web client", - status: "missing", - detail: `not built: ${missing} does not exist`, - fix: "npm run build --workspace @invisible-dots/web", - }); - }); - - it("turns a web check that throws into a failed line", async () => { - const { deps } = healthyDoctor({ - webBuild: async () => { - throw new Error("stat exploded"); - }, - }); - expect(find(await runDoctor(deps), "web")).toMatchObject({ status: "failed", detail: "the check itself failed: stat exploded" }); - }); - - it("checks Node and free space against their minimums", () => { - expect(checkNode("24.0.0").status).toBe("ok"); - expect(checkNode("22.11.0")).toMatchObject({ status: "failed", fix: "install Node 24 or newer from https://nodejs.org" }); - expect(checkDataDirectory("/data", { path: "/data", bytes: MIN_FREE_BYTES }).status).toBe("ok"); - expect(checkDataDirectory("/data", { path: "/data", bytes: 5 * 1024 ** 3 })).toEqual({ - id: "disk", - label: "data directory", - status: "failed", - detail: "5.0 GiB free at /data, less than 20.0 GiB", - fix: "free some space, or set INVISIBLE_DOTS_HOME to a directory on a larger disk", - }); - }); - - it("refuses a data directory QEMU cannot be given, before any build or Dot does", async () => { - // The default home sits under the account name; on Windows QEMU cannot open a path with an accent in it. - const { deps } = healthyDoctor({ home: "C:\\Users\\Jos\u00e9\\.invisible-dots" }); - expect(find(await runDoctor(deps), "disk")).toMatchObject({ - status: "failed", - fix: "set INVISIBLE_DOTS_HOME to a directory whose path is plain ASCII without commas", - }); - expect(checkDataDirectory("/srv/a,b", { path: "/srv", bytes: MIN_FREE_BYTES }).detail).toMatch(/comma/); - }); - - it("answers the OpenRouter row from what the control plane knows", () => { - expect(openRouterCheck(true)).toEqual({ id: "openrouter", label: "OpenRouter key", status: "ok", detail: "stored" }); - expect(openRouterCheck(false)).toEqual({ - id: "openrouter", - label: "OpenRouter key", - status: "missing", - detail: "no key stored", - fix: "invisible-dots secret openrouter", - }); - }); - - it("is ok as a whole only when every check is", async () => { - const healthy = await runDoctor(healthyDoctor().deps); - expect(doctorAnswer(healthy)).toEqual({ ok: true, checks: healthy }); - const missing = await runDoctor(healthyDoctor({ openRouterKey: async () => openRouterCheck(false) }).deps); - expect(doctorAnswer(missing).ok).toBe(false); - expect(doctorAnswer([])).toEqual({ ok: true, checks: [] }); - }); -}); diff --git a/apps/vm-manager/test/fakes.ts b/apps/vm-manager/test/fakes.ts deleted file mode 100644 index ad37058a..00000000 --- a/apps/vm-manager/test/fakes.ts +++ /dev/null @@ -1,245 +0,0 @@ -import { createHmac } from "node:crypto"; -import { appendFileSync, writeFileSync } from "node:fs"; -import { readFile } from "node:fs/promises"; -import { createServer, type Server } from "node:http"; -import type { Socket } from "node:net"; -import { GUEST_PROOF_CONTEXT, type ProcessPresence } from "@invisible-dots/shared"; -import { - CommandError, - type CommandResult, - type CommandRunner, - type DetachedProcess, - type ProcessControl, - type ProcessExit, - type RunOptions, - type SpawnDetachedOptions, -} from "../src/index.js"; - -export interface RecordedCall { - command: string; - args: string[]; - options: RunOptions | undefined; -} - -export type Handler = (command: string, args: string[]) => CommandResult | undefined | Promise; - -/** A failure as the runner would report it. */ -export function fail(command: string, args: string[], stderr: string, exitCode = 1): never { - throw new CommandError({ command, args, exitCode, stderr }); -} - -/** Records every command; `handler` answers them (undefined means success with empty output). */ -export class FakeRunner implements CommandRunner { - calls: RecordedCall[] = []; - constructor(public handler: Handler = () => undefined) {} - - async run(command: string, args: readonly string[], options?: RunOptions): Promise { - const copy = [...args]; - this.calls.push({ command, args: copy, options }); - return (await this.handler(command, copy)) ?? { stdout: "", stderr: "" }; - } - - /** Every call as one "command arg arg" line, for readable assertions. */ - lines(): string[] { - return this.calls.map((call) => [call.command, ...call.args].join(" ")); - } -} - -/** How a fake QEMU behaves when spawned. */ -export type FakeBehaviour = - /** Exits at once after writing `output` to its log, like QEMU refusing its command line or the accelerator. */ - | { kind: "exit"; code: number; output: string } - /** Sets up the port forward, then exits a moment later: QEMU refusing -cpu host when it builds the machine. */ - | { kind: "exitAfterForward"; code: number; output: string } - /** Keeps running without ever listening on the guest port. */ - | { kind: "hang" } - /** - * Runs and forwards the guest port. `guestUp: false` is a VM whose guest - * never boots (the forward accepts and drops every connection); - * `ignorePoweroff` a guest that answers 202 and then does not power off. - * `serial` and `qemuOutput` are written to the serial console and QEMU's log. - */ - | { kind: "run"; guestUp?: boolean; ignorePoweroff?: boolean; serial?: string; qemuOutput?: string }; - -export interface FakeVm { - pid: number; - name: string; - guestPort: number; - /** The Dot token the guest read from its seed. */ - token: string; - guestUp: boolean; - ignorePoweroff: boolean; - /** Guest requests as "METHOD /path", in order. */ - requests: string[]; - resolveExit: (exit: ProcessExit) => void; - server?: Server; - sockets: Set; -} - -/** The value after `flag` in an argv. */ -export function argAfter(args: readonly string[], flag: string): string { - const index = args.indexOf(flag); - if (index < 0 || index + 1 >= args.length) throw new Error(`no ${flag} in ${args.join(" ")}`); - return args[index + 1]!; -} - -/** The host port of the forward in an argv. */ -export function guestPortOf(args: readonly string[]): number { - return Number(/hostfwd=tcp:127\.0\.0\.1:(\d+)-:1024$/.exec(argAfter(args, "-netdev"))![1]); -} - -/** - * The token a guest would read from its seed: the seed ISO QEMU was given - * holds config.json as a quoted YAML scalar inside user-data. - */ -export async function tokenInSeed(args: readonly string[]): Promise { - const drive = args.find((arg) => arg.includes("seed.iso")); - const path = drive && /file=([^,]+)/.exec(drive)?.[1]; - if (!path) throw new Error(`no seed drive in ${args.join(" ")}`); - const match = /token\\?":\\?"([A-Za-z0-9_-]+)/.exec((await readFile(path)).toString("latin1")); - if (!match) throw new Error(`no token in ${path}`); - return match[1]!; -} - -function send(response: import("node:http").ServerResponse, status: number, body: unknown): void { - response.writeHead(status, { "content-type": "application/json" }).end(JSON.stringify(body)); -} - -/** - * dot-agentd's `GET /v1/proof` (section 5.1), computed the guest's way, with - * the token the guest read from its seed. Answers true when it served it. - */ -export function serveProof( - request: import("node:http").IncomingMessage, - response: import("node:http").ServerResponse, - token: string, -): boolean { - const url = new URL(request.url ?? "/", "http://guest"); - if (request.method !== "GET" || url.pathname !== "/v1/proof") return false; - const nonce = url.searchParams.get("nonce") ?? ""; - send(response, 200, { proof: createHmac("sha256", token).update(`${GUEST_PROOF_CONTEXT}${nonce}`).digest("hex") }); - return true; -} - -/** - * A pretend QEMU: the ProcessControl the vm-manager spawns and kills it - * with, and, like QEMU's user networking, a real TCP listener on the guest - * port of its argv for as long as it "runs", with dot-agentd's health and - * poweroff routes behind it. It parses the real argv, so a wrong argv breaks - * these tests too. - */ -export class FakeQemuHost implements ProcessControl { - spawned: { command: string; args: string[]; logPath: string; cwd: string; env: Record }[] = []; - vms = new Map(); - alive = new Set(); - killed: number[] = []; - /** Decides each spawn's behaviour; `attempt` counts spawns from 1. */ - behaviour: (args: string[], attempt: number) => FakeBehaviour = () => ({ kind: "run" }); - /** Pids that exist for this user but are not QEMU (a recycled pid). */ - foreignPids = new Set(); - /** Pids that exist and belong to another user (process.kill answers EPERM). */ - otherUserPids = new Set(); - private nextPid = 4000; - - async spawnDetached(command: string, args: readonly string[], options: SpawnDetachedOptions): Promise { - const argv = [...args]; - this.spawned.push({ command, args: argv, logPath: options.logPath, cwd: options.cwd, env: options.env }); - const pid = this.nextPid++; - const behaviour = this.behaviour(argv, this.spawned.length); - let resolveExit!: (exit: ProcessExit) => void; - const exited = new Promise((resolve) => (resolveExit = resolve)); - if (behaviour.kind === "exit") { - appendFileSync(options.logPath, behaviour.output); - resolveExit({ code: behaviour.code, signal: null }); - return { pid, exited }; - } - const run = behaviour.kind === "run" ? behaviour : undefined; - const vm: FakeVm = { - pid, - name: argAfter(argv, "-name"), - guestPort: guestPortOf(argv), - token: await tokenInSeed(argv), - guestUp: run?.guestUp ?? true, - ignorePoweroff: run?.ignorePoweroff ?? false, - requests: [], - resolveExit, - sockets: new Set(), - }; - this.alive.add(pid); - this.vms.set(pid, vm); - if (run?.qemuOutput) appendFileSync(options.logPath, run.qemuOutput); - if (run?.serial) writeFileSync(/^file:(.*)$/.exec(argAfter(argv, "-serial"))![1]!, run.serial); - if (behaviour.kind !== "hang") await this.openForward(vm); - if (behaviour.kind === "exitAfterForward") { - setTimeout(() => { - appendFileSync(options.logPath, behaviour.output); - this.terminate(vm, { code: behaviour.code, signal: null }); - }, 2); - } - return { pid, exited }; - } - - /** QEMU's user networking listening on the guest port, with dot-agentd behind it. */ - protected async openForward(vm: FakeVm): Promise { - const server = createServer((request, response) => { - vm.requests.push(`${request.method} ${request.url}`); - // Nothing listens on port 1024 in a guest that is not up: the forward drops the connection. - if (!vm.guestUp) { - request.socket.destroy(); - return; - } - if (serveProof(request, response, vm.token)) return; - if (request.headers.authorization !== `Bearer ${vm.token}`) return send(response, 401, { error: "unauthorized", message: "bad token" }); - if (request.method === "GET" && request.url === "/v1/health") { - return send(response, 200, { agentd: "ok", agent: { status: "ok", state: "IDLE", openrouter_configured: false }, uptime_s: 1 }); - } - if (request.method === "POST" && request.url === "/v1/system/poweroff") { - send(response, 202, { status: "powering_off" }); - if (!vm.ignorePoweroff) setTimeout(() => this.terminate(vm), 5); - return; - } - send(response, 404, { error: "not_found", message: `${request.method} ${request.url}` }); - }); - server.on("connection", (socket) => { - vm.sockets.add(socket); - socket.on("close", () => vm.sockets.delete(socket)); - }); - await new Promise((resolve, reject) => { - server.once("error", reject); - server.listen(vm.guestPort, "127.0.0.1", () => resolve()); - }); - vm.server = server; - } - - /** QEMU's listener goes away with the process. */ - protected closeForward(vm: FakeVm): void { - for (const socket of vm.sockets) socket.destroy(); - vm.server?.close(); - } - - presence(pid: number): ProcessPresence { - if (this.alive.has(pid) || this.foreignPids.has(pid)) return "ours"; - return this.otherUserPids.has(pid) ? "foreign" : "gone"; - } - - kill(pid: number): void { - this.killed.push(pid); - const vm = this.vms.get(pid); - if (vm) this.terminate(vm, { code: null, signal: "SIGKILL" }); - } - - /** The one running VM, for tests that start one. */ - only(): FakeVm { - const running = [...this.vms.values()]; - if (running.length !== 1) throw new Error(`expected one fake VM, there are ${running.length}`); - return running[0]!; - } - - /** The QEMU process ends: its listener closes and its exit is reported. */ - terminate(vm: FakeVm, exit: ProcessExit = { code: 0, signal: null }): void { - if (!this.alive.delete(vm.pid)) return; - this.vms.delete(vm.pid); - this.closeForward(vm); - vm.resolveExit(exit); - } -} diff --git a/apps/vm-manager/test/guest-client.test.ts b/apps/vm-manager/test/guest-client.test.ts deleted file mode 100644 index e888cc10..00000000 --- a/apps/vm-manager/test/guest-client.test.ts +++ /dev/null @@ -1,474 +0,0 @@ -import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http"; -import type { AddressInfo } from "node:net"; -import { FILE_TOO_LARGE, GUEST_UNPROVEN, REFUSED_PROBLEM_MAX, type HealthAnswer, type OutboundEvent, type RefusedEvent } from "@invisible-dots/shared"; -import { afterEach, describe, expect, it } from "vitest"; -import { GuestClient, GuestHealthTimeoutError, GuestRequestError, guestProof, waitForGuestHealth } from "../src/index.js"; - -const TOKEN = "dot-token-123"; - -interface Seen { - method: string; - url: string; - auth: string | undefined; - body: string; -} - -let server: Server | undefined; -afterEach(async () => { - server?.closeAllConnections(); - await new Promise((resolve) => (server ? server.close(() => resolve()) : resolve())); - server = undefined; -}); - -/** - * A dot-agentd stand-in. It answers `GET /v1/proof` the guest's way (the - * HMAC of the nonce under TOKEN), or, as `impostor`, with a proof it cannot - * compute. Proof requests are kept apart from `seen`, which lists every - * other request. - */ -async function serve( - handler: (req: IncomingMessage, res: ServerResponse, seen: Seen) => void, - options: { impostor?: boolean } = {}, -): Promise<{ port: number; seen: Seen[]; proofs: Seen[] }> { - const seen: Seen[] = []; - const proofs: Seen[] = []; - server = createServer((req, res) => { - const chunks: Buffer[] = []; - req.on("data", (chunk: Buffer) => chunks.push(chunk)); - req.on("end", () => { - const entry = { method: req.method!, url: req.url!, auth: req.headers.authorization, body: Buffer.concat(chunks).toString() }; - const url = new URL(req.url!, "http://guest"); - if (url.pathname === "/v1/proof") { - proofs.push(entry); - const nonce = url.searchParams.get("nonce") ?? ""; - return json(res, 200, { proof: options.impostor ? "0".repeat(64) : guestProof(TOKEN, nonce) }); - } - seen.push(entry); - if (req.headers.authorization !== `Bearer ${TOKEN}`) { - res.writeHead(401, { "content-type": "application/json" }).end(JSON.stringify({ error: "unauthorized", message: "bad token" })); - return; - } - handler(req, res, entry); - }); - }); - await new Promise((resolve) => server!.listen(0, "127.0.0.1", resolve)); - return { port: (server!.address() as AddressInfo).port, seen, proofs }; -} - -function json(res: ServerResponse, status: number, body: unknown) { - res.writeHead(status, { "content-type": "application/json" }).end(JSON.stringify(body)); -} - -function event(seq: number): OutboundEvent { - return { seq, id: `evt_${seq}`, type: "automation.next_run", ts: "2026-10-02T10:00:00.000Z", data: { next_run_at_ms: seq } }; -} - -describe("GuestClient", () => { - it("calls every dot-agentd route with the bearer token", async () => { - const { port, seen } = await serve((req, res) => { - if (req.url === "/v1/system") return json(res, 200, { hostname: "h", uptime_s: 1, cpus: 2, mem_total_bytes: 1, mem_available_bytes: 1, disk_total_bytes: 1, disk_free_bytes: 1 }); - if (req.url === "/v1/exec") return json(res, 200, { exit_code: 0, stdout: "hi\n", stderr: "", timed_out: false }); - if (req.url!.startsWith("/v1/files/list")) return json(res, 200, { entries: [] }); - if (req.url!.startsWith("/v1/files") && req.method === "GET") return res.writeHead(200).end(Buffer.from([1, 2, 3])); - if (req.url!.startsWith("/v1/files") && req.method === "PUT") return res.writeHead(204).end(); - if (req.url === "/v1/screenshot") return res.writeHead(200, { "content-type": "image/png" }).end(Buffer.from("PNG")); - if (req.url === "/v1/system/poweroff" && req.method === "POST") return json(res, 202, { status: "powering_off" }); - json(res, 404, { error: "not_found", message: req.url }); - }); - const client = new GuestClient(port, TOKEN); - expect((await client.system()).hostname).toBe("h"); - expect(await client.exec({ command: "echo hi", timeout_ms: 1000 })).toMatchObject({ exit_code: 0, stdout: "hi\n" }); - expect(await client.readFile("workspace/a b.txt")).toEqual(Buffer.from([1, 2, 3])); - await client.writeFile("/home/dot/x&y", "content"); - expect(await client.listFiles(".")).toEqual({ entries: [] }); - expect((await client.screenshot()).toString()).toBe("PNG"); - await client.powerOff(); - - expect(seen.map((s) => `${s.method} ${s.url}`)).toEqual([ - "GET /v1/system", - "POST /v1/exec", - "GET /v1/files?path=workspace%2Fa%20b.txt", - "PUT /v1/files?path=%2Fhome%2Fdot%2Fx%26y", - "GET /v1/files/list?path=.", - "GET /v1/screenshot", - "POST /v1/system/poweroff", - ]); - expect(seen.every((s) => s.auth === `Bearer ${TOKEN}`)).toBe(true); - expect(JSON.parse(seen[1]!.body)).toEqual({ command: "echo hi", timeout_ms: 1000 }); - expect(seen[3]!.body).toBe("content"); - }); - - it("calls the agent routes under /v1/agent", async () => { - const { port, seen } = await serve((req, res) => { - switch (`${req.method} ${req.url}`) { - case "POST /v1/agent/secrets": - case "PUT /v1/agent/config": - case "DELETE /v1/agent/browser-identities/shop-abc123": - case "POST /v1/agent/prepare-sleep": - return res.writeHead(204).end(); - case "POST /v1/agent/events": - return json(res, 202, { accepted: true }); - case "GET /v1/agent/state": - return json(res, 200, { state: "IDLE", current_task_id: null, pending_approval: null }); - case "GET /v1/agent/browser-identities": - return json(res, 200, { identities: [] }); - case "POST /v1/agent/browser-identities": - return json(res, 201, { id: "shop-abc123", name: "shop", createdAt: "x", lastUsedAt: null, status: "available", profilePath: "/p" }); - default: - return json(res, 404, { error: "not_found", message: req.url }); - } - }); - const client = new GuestClient(port, TOKEN); - await client.pushSecrets({ openrouter_api_key: "sk-or-test", mcp_secrets: {} }); - await client.putConfig({ name: "n" } as never); - expect(await client.postEvent({ id: "e1", type: "user.message", ts: "2026-10-02T10:00:00Z", data: { text: "hi" } })).toEqual({ accepted: true }); - expect((await client.state()).state).toBe("IDLE"); - expect(await client.listBrowserIdentities()).toEqual({ identities: [] }); - expect((await client.createBrowserIdentity({ name: "shop" })).id).toBe("shop-abc123"); - await client.deleteBrowserIdentity("shop-abc123"); - await client.prepareSleep(); - expect(JSON.parse(seen[0]!.body)).toEqual({ openrouter_api_key: "sk-or-test", mcp_secrets: {} }); - expect(seen.map((s) => s.url)).toContain("/v1/agent/browser-identities/shop-abc123"); - }); - - it("asks an identity's frame as bytes and closes it with a POST, both under /v1/agent", async () => { - const jpeg = Buffer.from([0xff, 0xd8, 0xff, 0xd9]); - const { port, seen } = await serve((req, res) => { - switch (`${req.method} ${req.url}`) { - case "GET /v1/agent/browser-identities/shop-abc123/frame": - return res.writeHead(200, { "content-type": "image/jpeg" }).end(jpeg); - case "POST /v1/agent/browser-identities/shop-abc123/close": - return res.writeHead(204).end(); - case "GET /v1/agent/browser-identities/shut-abc123/frame": - return json(res, 409, { error: "not_open", message: "identity shut-abc123 is not open" }); - default: - return json(res, 404, { error: "not_found", message: req.url }); - } - }); - const client = new GuestClient(port, TOKEN); - - expect(await client.getBrowserIdentityFrame("shop-abc123")).toEqual(jpeg); - await client.closeBrowserIdentity("shop-abc123"); - await expect(client.getBrowserIdentityFrame("shut-abc123")).rejects.toMatchObject({ status: 409, code: "not_open" }); - - expect(seen.map((s) => `${s.method} ${s.url}`)).toEqual([ - "GET /v1/agent/browser-identities/shop-abc123/frame", - "POST /v1/agent/browser-identities/shop-abc123/close", - "GET /v1/agent/browser-identities/shut-abc123/frame", - ]); - expect(seen.every((s) => s.auth === `Bearer ${TOKEN}`)).toBe(true); - }); - - it("calls the tool and skill routes with the bearer token", async () => { - const { port, seen } = await serve((req, res) => { - switch (`${req.method} ${req.url}`) { - case "GET /v1/agent/tools": - return json(res, 200, { tools: [{ name: "exec", permission: "computer.exec", offered: true, description: "Run." }] }); - case "GET /v1/agent/skills": - return json(res, 200, { skills: [{ name: "shop-login", description: "Log in.", source: "dot", path: "/home/dot/skills/shop-login/SKILL.md", content: "x" }] }); - default: - return json(res, 404, { error: "not_found", message: req.url }); - } - }); - const client = new GuestClient(port, TOKEN); - - expect((await client.listTools()).tools.map((tool) => tool.name)).toEqual(["exec"]); - expect((await client.listSkills()).skills.map((skill) => skill.name)).toEqual(["shop-login"]); - expect(seen.map((s) => s.auth)).toEqual([`Bearer ${TOKEN}`, `Bearer ${TOKEN}`]); - }); - - it("passes the guest's outside_home refusal of a file path on", async () => { - const { port } = await serve((_req, res) => json(res, 403, { error: "outside_home", message: "the path leads outside /home/dot" })); - const client = new GuestClient(port, TOKEN); - expect(await client.readFile("environ").catch((e: unknown) => e)).toMatchObject({ name: "GuestRequestError", status: 403, code: "outside_home" }); - expect(await client.listFiles("etc").catch((e: unknown) => e)).toMatchObject({ status: 403, code: "outside_home" }); - expect(await client.writeFile("etc/x", "y").catch((e: unknown) => e)).toMatchObject({ status: 403, code: "outside_home" }); - }); - - it("turns error bodies into GuestRequestError", async () => { - const { port } = await serve((_req, res) => json(res, 409, { error: "computer_busy", message: "try later" })); - const error = await new GuestClient(port, TOKEN).state().catch((e: unknown) => e); - expect(error).toBeInstanceOf(GuestRequestError); - expect(error).toMatchObject({ status: 409, code: "computer_busy" }); - expect((error as Error).message).toContain("computer_busy: try later"); - - // A client holding another token cannot check the guest's proof: it never sends that token. - const unproven = await new GuestClient(port, "wrong").health().catch((e: unknown) => e); - expect(unproven).toMatchObject({ code: GUEST_UNPROVEN }); - }); - - it("computes the proof dot-agentd computes (the known answer its Go test checks too)", () => { - expect(guestProof("dot-token-123", "00112233445566778899aabbccddeeff")).toBe("b1cb86aa470fe878a6366f62ea4493011c01d22736a9c89d3e7f88582920d1b9"); - }); - - it("asks a listener for its proof before the token goes anywhere, once per client", async () => { - const { port, seen, proofs } = await serve((_req, res) => json(res, 200, health("ok"))); - const client = new GuestClient(port, TOKEN); - await client.health(); - await client.health(); - expect(proofs).toHaveLength(1); - expect(proofs[0]!.auth).toBeUndefined(); - expect(proofs[0]!.url).toMatch(/^\/v1\/proof\?nonce=[0-9a-f]{32}$/); - expect(seen).toHaveLength(2); - }); - - it("never sends the token to a listener that cannot prove it holds it", async () => { - // What takes over a stale guest port after a host restart or a QEMU that died. - const { port, seen, proofs } = await serve((_req, res) => json(res, 200, health("ok")), { impostor: true }); - const client = new GuestClient(port, TOKEN); - await expect(client.pushSecrets({ openrouter_api_key: "sk-or-must-not-leak", mcp_secrets: {} })).rejects.toMatchObject({ code: GUEST_UNPROVEN }); - await expect(waitForGuestHealth(client, { intervalMs: 5, timeoutMs: 5000 })).rejects.toMatchObject({ code: GUEST_UNPROVEN }); - expect(proofs.length).toBeGreaterThan(0); - expect(proofs.every((p) => p.auth === undefined)).toBe(true); - expect(seen).toEqual([]); - }); - - it("streams events, reconnecting with ?after= and never repeating one", async () => { - let connection = 0; - const { port, seen } = await serve((req, res) => { - connection++; - res.writeHead(200, { "content-type": "text/event-stream" }); - if (connection === 1) { - // Two events, then the connection drops mid-message. - res.write(`: hello\n\nid: 1\ndata: ${JSON.stringify(event(1))}\n\n`); - res.write(`id: 2\r\ndata: ${JSON.stringify(event(2))}\r\n\r\n`); - res.end(`id: 3\ndata: {"seq":3`); - } else { - const after = Number(new URL(req.url!, "http://x").searchParams.get("after")); - // A server replaying one too many must not produce a duplicate. - for (let seq = after; seq <= after + 2; seq++) res.write(`id: ${seq}\ndata: ${JSON.stringify(event(seq))}\n\n`); - } - }); - const client = new GuestClient(port, TOKEN); - const controller = new AbortController(); - const got: number[] = []; - const reconnects: number[] = []; - for await (const evt of client.events({ signal: controller.signal, reconnectDelayMs: 10, onReconnect: (info) => reconnects.push(info.after) })) { - got.push(evt.seq); - if (got.length === 4) controller.abort(); - } - expect(got).toEqual([1, 2, 3, 4]); - expect(reconnects).toEqual([2]); - expect(seen.map((s) => s.url)).toEqual(["/v1/agent/events/stream?after=0", "/v1/agent/events/stream?after=2"]); - }); - - it("hands over a message that is not an event the host knows, in order with the events, and resumes after it", async () => { - let connection = 0; - const bad = { ...event(2), type: "approval.requested", data: { approval_id: "a1", tool: "exec", permission: "computer.teleport", arguments: {}, reason: "x" } }; - const { port, seen } = await serve((req, res) => { - connection++; - res.writeHead(200, { "content-type": "text/event-stream" }); - if (connection === 1) { - res.write(`id: 1\ndata: ${JSON.stringify(event(1))}\n\n`); - res.write(`id: 2\ndata: ${JSON.stringify(bad)}\n\n`); - res.write(`id: x\ndata: this is not json\n\n`); - res.end(`id: 3\ndata: ${JSON.stringify(event(3))}\n\n`); - } else { - const after = Number(new URL(req.url!, "http://x").searchParams.get("after")); - for (let seq = after + 1; seq <= after + 2; seq++) res.write(`id: ${seq}\ndata: ${JSON.stringify(event(seq))}\n\n`); - } - }); - const controller = new AbortController(); - const order: string[] = []; - const refused: RefusedEvent[] = []; - const client = new GuestClient(port, TOKEN); - for await (const evt of client.events({ - signal: controller.signal, - reconnectDelayMs: 10, - onRefused: async (info) => { - // Awaited before the stream goes on: the event after it is not yielded until this settles. - await new Promise((resolve) => setTimeout(resolve, 5)); - order.push(`refused ${info.seq}`); - refused.push(info); - }, - })) { - order.push(`event ${evt.seq}`); - if (evt.seq === 5) controller.abort(); - } - expect(order).toEqual(["event 1", "refused 2", "refused null", "event 3", "event 4", "event 5"]); - expect(refused).toEqual([ - { seq: 2, type: "approval.requested", problem: expect.stringContaining("data.permission") }, - { seq: null, type: null, problem: expect.stringContaining("JSON") }, - ]); - expect(refused[0]!.problem.length).toBeLessThanOrEqual(REFUSED_PROBLEM_MAX); - // The reconnect resumed after the last event, the refused one behind it, so it was not handed over again. - expect(seen.map((s) => s.url)).toEqual(["/v1/agent/events/stream?after=0", "/v1/agent/events/stream?after=3"]); - }); - - it("goes on past a refused message when nobody asked to hear of it", async () => { - const { port } = await serve((_req, res) => { - res.writeHead(200, { "content-type": "text/event-stream" }); - res.write(`id: 1\ndata: {"seq":1}\n\n`); - res.write(`id: 2\ndata: ${JSON.stringify(event(2))}\n\n`); - }); - const client = new GuestClient(port, TOKEN); - for await (const evt of client.events()) { - expect(evt.seq).toBe(2); - break; - } - }); - - it("resumes from the given cursor and stops when the consumer breaks", async () => { - const { port, seen } = await serve((_req, res) => { - res.writeHead(200, { "content-type": "text/event-stream" }); - res.write(`id: 8\ndata: ${JSON.stringify(event(8))}\n\n`); - }); - for await (const evt of new GuestClient(port, TOKEN).events({ after: 7 })) { - expect(evt.seq).toBe(8); - break; - } - expect(seen[0]!.url).toBe("/v1/agent/events/stream?after=7"); - }); - - it("does not retry the stream on a refused token", async () => { - const { port } = await serve((_req, res) => json(res, 401, { error: "unauthorized", message: "bad token" })); - const stream = new GuestClient(port, TOKEN).events({ reconnectDelayMs: 1 }); - await expect(stream.next()).rejects.toMatchObject({ status: 401 }); - }); - - it("ends the stream when nothing listens on the guest port: the VM is gone, waiting there cannot help", async () => { - const port = await closedPort(); - const reconnects: number[] = []; - const stream = new GuestClient(port, TOKEN).events({ reconnectDelayMs: 1, onReconnect: (info) => reconnects.push(info.attempt) }); - await expect(stream.next()).rejects.toMatchObject({ code: "ECONNREFUSED" }); - expect(reconnects).toEqual([]); - }); -}); - -function health(agent: "ok" | "starting" | "down"): HealthAnswer { - return { - agentd: "ok", - uptime_s: 3, - agent: - agent === "down" - ? { status: "down" } - : { - status: agent, - state: "IDLE", - openrouter_configured: false, - browser: { identities: 0, open: 0 }, - checks: { filesystem_writable: true, network_reachable: true, browser_installed: true }, - }, - }; -} - -/** A port nothing listens on: bound by the kernel, then released. */ -async function closedPort(): Promise { - const probe = createServer(); - await new Promise((resolve) => probe.listen(0, "127.0.0.1", resolve)); - const port = (probe.address() as AddressInfo).port; - await new Promise((resolve) => probe.close(() => resolve())); - return port; -} - -describe("GuestClient transport", () => { - it("talks to 127.0.0.1 on the given port and reads one identity", async () => { - const { port, seen } = await serve((req, res) => - json(res, 200, { id: "a b", name: "a", createdAt: "x", lastUsedAt: null, status: "available", profilePath: "/p" }), - ); - const client = new GuestClient(port, TOKEN); - expect(client.address).toBe(`127.0.0.1:${port}`); - expect((await client.getBrowserIdentity("a b")).name).toBe("a"); - expect(seen[0]!.url).toBe("/v1/agent/browser-identities/a%20b"); - }); - - describe("readFile with a size limit", () => { - it("returns a file within the limit, whole", async () => { - const { port } = await serve((req, res) => res.writeHead(200).end(Buffer.alloc(100, 7))); - expect(await new GuestClient(port, TOKEN).readFile("a", { maxBytes: 100 })).toEqual(Buffer.alloc(100, 7)); - }); - - it("refuses a file whose announced length is over it, before reading it", async () => { - const { port } = await serve((req, res) => { - res.writeHead(200, { "content-length": 101 }); - res.write(Buffer.alloc(10)); - // The rest is never sent: a client that waited for it would run into the test's timeout. - }); - const error = await new GuestClient(port, TOKEN).readFile("a", { maxBytes: 100 }).catch((e: unknown) => e); - expect(error).toBeInstanceOf(GuestRequestError); - expect(error).toMatchObject({ status: 413, code: FILE_TOO_LARGE }); - expect((error as Error).message).toContain("larger than 100 bytes"); - }); - - it("stops reading a body of unannounced length once it passes the limit", async () => { - const { port } = await serve((req, res) => { - // Chunked: no content-length, so only the running count can tell. - res.writeHead(200); - res.write(Buffer.alloc(60)); - res.write(Buffer.alloc(60)); - res.write(Buffer.alloc(60)); - }); - const error = await new GuestClient(port, TOKEN).readFile("a", { maxBytes: 100 }).catch((e: unknown) => e); - expect(error).toMatchObject({ status: 413, code: FILE_TOO_LARGE }); - }); - - it("keeps the guest's own error for a failed read, whatever the limit", async () => { - const { port } = await serve((req, res) => json(res, 404, { error: "not_found", message: "no such file: " + "x".repeat(300) })); - const error = await new GuestClient(port, TOKEN).readFile("a", { maxBytes: 10 }).catch((e: unknown) => e); - expect(error).toMatchObject({ status: 404, code: "not_found" }); - }); - - it("reads without a limit as before", async () => { - const { port } = await serve((req, res) => res.writeHead(200).end(Buffer.alloc(5000, 1))); - expect((await new GuestClient(port, TOKEN).readFile("a")).length).toBe(5000); - }); - }); - - it("names the guest port when nothing listens there", async () => { - const port = await closedPort(); - const error = await new GuestClient(port, TOKEN).system().catch((e: unknown) => e); - expect(error).toBeInstanceOf(GuestRequestError); - expect((error as Error).message).toContain(`127.0.0.1:${port}`); - expect((error as GuestRequestError).code).toBe("ECONNREFUSED"); - }); - - it("times out a request that gets no answer", async () => { - const { port } = await serve(() => {}); - // The handler above only answers 401s; this request carries the right token and hangs. - const error = await new GuestClient(port, TOKEN, { timeoutMs: 100 }).system().catch((e: unknown) => e); - expect((error as Error).message).toContain("within 100 ms"); - }); - - it("refuses a port that is not a TCP port", () => { - expect(() => new GuestClient(0, TOKEN)).toThrow(/TCP port/); - expect(() => new GuestClient(70000, TOKEN)).toThrow(/TCP port/); - expect(() => new GuestClient(1234, "")).toThrow(/token/); - }); -}); - -describe("waitForGuestHealth", () => { - it("retries while the guest boots and returns once the agent is ok", async () => { - const answers = [health("down"), health("starting"), health("ok")]; - const { port, seen } = await serve((_req, res) => json(res, 200, answers.shift() ?? health("ok"))); - const answer = await waitForGuestHealth(new GuestClient(port, TOKEN), { intervalMs: 5, timeoutMs: 5000 }); - expect(answer.agent.status).toBe("ok"); - expect(seen.length).toBe(3); - }); - - it("stops at dot-agentd when asked to", async () => { - const { port } = await serve((_req, res) => json(res, 200, health("down"))); - const answer = await waitForGuestHealth(new GuestClient(port, TOKEN), { until: "agentd", intervalMs: 5 }); - expect(answer.agentd).toBe("ok"); - }); - - it("keeps trying through refused connections, then reports the last error", async () => { - const port = await closedPort(); - const error = await waitForGuestHealth(new GuestClient(port, TOKEN), { intervalMs: 5, timeoutMs: 60 }).catch((e: unknown) => e); - expect(error).toBeInstanceOf(GuestHealthTimeoutError); - expect((error as Error).message).toMatch(/not healthy within 60 ms.*ECONNREFUSED|not healthy within 60 ms.*connect/); - }); - - it("fails at once on a refused token", async () => { - const { port } = await serve((_req, res) => json(res, 401, { error: "unauthorized", message: "bad token" })); - await expect(waitForGuestHealth(new GuestClient(port, TOKEN), { intervalMs: 5 })).rejects.toMatchObject({ status: 401 }); - }); - - it("stops when the check says the VM is gone", async () => { - const port = await closedPort(); - let calls = 0; - const check = () => { - if (++calls === 3) throw new Error("QEMU exited"); - }; - await expect(waitForGuestHealth(new GuestClient(port, TOKEN), { intervalMs: 5, check })).rejects.toThrow("QEMU exited"); - }); -}); diff --git a/apps/vm-manager/test/host-doctor.test.ts b/apps/vm-manager/test/host-doctor.test.ts deleted file mode 100644 index dac6a906..00000000 --- a/apps/vm-manager/test/host-doctor.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { chmod, mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { freeSpace, hostDoctorDeps, locateQemu } from "../src/index.js"; -import { ok } from "./doctor-fakes.js"; - -let dir: string; -beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), "idots-doctor-")); -}); -afterEach(async () => { - await rm(dir, { recursive: true, force: true }); -}); - -async function program(name: string): Promise { - const path = join(dir, "qemu", name); - await mkdir(join(dir, "qemu"), { recursive: true }); - await writeFile(path, "#!/bin/sh\n"); - await chmod(path, 0o755); - return path; -} - -describe("locateQemu", () => { - it("finds each program separately, so a missing qemu-img still leaves qemu-system to be checked", async () => { - const system = await program("qemu-system-x86_64"); - const env = { INVISIBLE_DOTS_QEMU_DIR: join(dir, "qemu") }; - expect(await locateQemu(env)).toEqual({ system, searched: [join(dir, "qemu")], configured: true }); - - const img = await program("qemu-img"); - expect(await locateQemu(env)).toEqual({ system, img, searched: [join(dir, "qemu")], configured: true }); - }); - - it("names the places searched when nothing is found, and says whether INVISIBLE_DOTS_QEMU_DIR was the only one", async () => { - expect(await locateQemu({ INVISIBLE_DOTS_QEMU_DIR: join(dir, "nothing") })).toEqual({ searched: [join(dir, "nothing")], configured: true }); - expect(await locateQemu({ PATH: join(dir, "bin"), ProgramFiles: "", ProgramW6432: "" })).toEqual({ searched: [join(dir, "bin")], configured: false }); - }); -}); - -describe("freeSpace", () => { - it("measures the nearest directory that exists, since doctor creates nothing", async () => { - const home = join(dir, "not", "yet", "created"); - const space = await freeSpace(home); - expect(space.path).toBe(dir); - expect(space.bytes).toBeGreaterThan(0); - }); -}); - -describe("hostDoctorDeps", () => { - it("hands the caller's home, images and key to the report and reads the rest from this machine", async () => { - const deps = hostDoctorDeps({ - env: { INVISIBLE_DOTS_QEMU_DIR: join(dir, "nothing") }, - home: dir, - images: async () => [ok("golden-image", "golden image")], - openRouterKey: async () => ok("openrouter", "OpenRouter key"), - }); - expect(deps.nodeVersion).toBe(process.versions.node); - expect(deps.home).toBe(dir); - expect((await deps.freeSpace()).path).toBe(dir); - expect(await deps.findQemu()).toMatchObject({ searched: [join(dir, "nothing")], configured: true }); - expect((await deps.images())[0]?.id).toBe("golden-image"); - expect((await deps.openRouterKey()).status).toBe("ok"); - }); -}); diff --git a/apps/vm-manager/test/host.test.ts b/apps/vm-manager/test/host.test.ts deleted file mode 100644 index 424f49bc..00000000 --- a/apps/vm-manager/test/host.test.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { readFileSync } from "node:fs"; -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { delimiter, join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { - accelerator, - findQemu, - isSupportedQemuVersion, - MIN_QEMU_VERSION_TEXT, - parseQemuVersion, - QemuNotFoundError, - qemuSearchDirs, - officialQemuDir, - OFFICIAL_QEMU_SUBDIR, -} from "../src/index.js"; - -const repo = resolve(fileURLToPath(new URL(".", import.meta.url)), "../../.."); - -describe("accelerator", () => { - it("is KVM on Linux and WHPX on Windows", () => { - expect(accelerator("linux")).toBe("kvm"); - expect(accelerator("win32")).toBe("whpx"); - }); - - it("refuses other hosts instead of falling back to emulation", () => { - expect(() => accelerator("darwin")).toThrow(/does not run on darwin/); - expect(() => accelerator("freebsd")).toThrow(/invisible-dots setup/); - }); - - it("answers for the host the tests run on", () => { - if (process.platform === "linux" || process.platform === "win32") expect(["kvm", "whpx"]).toContain(accelerator()); - }); -}); - -describe("qemuSearchDirs", () => { - const abs = (name: string) => resolve(tmpdir(), name); - - it("searches INVISIBLE_DOTS_QEMU_DIR alone when it is set, as doctor says", () => { - expect(qemuSearchDirs({ INVISIBLE_DOTS_QEMU_DIR: abs("q"), PATH: [abs("a"), abs("b")].join(delimiter), ProgramW6432: abs("pf") })).toEqual([abs("q")]); - }); - - it("searches the official installer's directory before PATH, from the variable Windows sets", () => { - // An older QEMU on PATH must not shadow the one setup just installed. - const dirs = qemuSearchDirs({ ProgramW6432: abs("pf"), PATH: [abs("a"), abs("b")].join(delimiter) }); - expect(dirs).toEqual([join(abs("pf"), "qemu"), abs("a"), abs("b")]); - // Program Files on another drive, and a 32-bit view of the variables, are followed too. - expect(officialQemuDir({ ProgramFiles: abs("d-pf") })).toBe(join(abs("d-pf"), "qemu")); - // Linux has neither variable: no such directory, and no platform check. - expect(officialQemuDir({})).toBeUndefined(); - expect(qemuSearchDirs({ PATH: abs("a") })).toEqual([abs("a")]); - }); - - it("drops relative and duplicate entries and strips quotes", () => { - const dirs = qemuSearchDirs({ PATH: ["bin", abs("a"), `"${abs("b")}"`, abs("a"), ""].join(delimiter) }); - expect(dirs.slice(0, 2)).toEqual([abs("a"), abs("b")]); - }); - - it("reads the Windows spelling of PATH", () => { - expect(qemuSearchDirs({ Path: abs("w") })[0]).toBe(abs("w")); - }); -}); - -describe("findQemu", () => { - let dir: string; - beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), "idots-qemu-")); - }); - afterEach(async () => { - await rm(dir, { recursive: true, force: true }); - }); - - const fakeExists = (present: string[]) => async (path: string) => present.includes(path); - - it("finds both binaries, with or without .exe, in the first directory that has them", async () => { - const a = join(dir, "a"); - const b = join(dir, "b"); - const found = await findQemu( - { PATH: [a, b].join(delimiter) }, - fakeExists([join(b, "qemu-system-x86_64.exe"), join(b, "qemu-img.exe"), join(a, "qemu-img")]), - ); - expect(found).toEqual({ system: join(b, "qemu-system-x86_64.exe"), img: join(a, "qemu-img") }); - }); - - it("uses only INVISIBLE_DOTS_QEMU_DIR when it is set", async () => { - const configured = join(dir, "c"); - const onPath = join(dir, "p"); - await expect( - findQemu({ INVISIBLE_DOTS_QEMU_DIR: configured, PATH: onPath }, fakeExists([join(configured, "qemu-system-x86_64"), join(onPath, "qemu-img")])), - ).rejects.toThrow(/qemu-img was not found/); - }); - - it("names setup, doctor and the directories it searched", async () => { - const error = (await findQemu({ PATH: dir }, fakeExists([])).catch((e: unknown) => e)) as QemuNotFoundError; - expect(error).toBeInstanceOf(QemuNotFoundError); - expect(error.searched[0]).toBe(dir); - expect(error.message).toContain("invisible-dots setup"); - expect(error.message).toContain("invisible-dots doctor"); - expect(error.message).toContain("INVISIBLE_DOTS_QEMU_DIR"); - }); - - it("refuses a relative INVISIBLE_DOTS_QEMU_DIR", async () => { - await expect(findQemu({ INVISIBLE_DOTS_QEMU_DIR: "qemu" }, fakeExists([]))).rejects.toThrow(/not an absolute path/); - }); - - it("checks real files by default", async () => { - await mkdir(join(dir, "bin")); - for (const name of ["qemu-system-x86_64", "qemu-img"]) await writeFile(join(dir, "bin", name), "", { mode: 0o755 }); - expect(await findQemu({ INVISIBLE_DOTS_QEMU_DIR: join(dir, "bin") })).toEqual({ - system: join(dir, "bin", "qemu-system-x86_64"), - img: join(dir, "bin", "qemu-img"), - }); - }); -}); - -describe("QEMU version", () => { - it("parses both binaries' --version output", () => { - expect(parseQemuVersion("QEMU emulator version 11.1.0 (v11.1.0-12130-ge470268ff4)\nCopyright")).toEqual({ major: 11, minor: 1, micro: 0 }); - expect(parseQemuVersion("qemu-img version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1)")).toEqual({ major: 8, minor: 2, micro: 2 }); - expect(parseQemuVersion("nothing here")).toBeUndefined(); - }); - - it("supports 8.2 (Ubuntu 24.04's package) and newer", () => { - expect(MIN_QEMU_VERSION_TEXT).toBe("8.2"); - expect(isSupportedQemuVersion({ major: 8, minor: 2, micro: 0 })).toBe(true); - expect(isSupportedQemuVersion({ major: 8, minor: 2, micro: 2 })).toBe(true); - expect(isSupportedQemuVersion({ major: 10, minor: 0, micro: 0 })).toBe(true); - expect(isSupportedQemuVersion({ major: 8, minor: 1, micro: 9 })).toBe(false); - expect(isSupportedQemuVersion({ major: 7, minor: 2, micro: 0 })).toBe(false); - }); -}); - -describe("the pinned Windows installer", () => { - const pin = JSON.parse(readFileSync(join(repo, "virtualization/qemu/windows.json"), "utf8")); - - it("records version, URL and both hashes of one official build", () => { - expect(pin.url).toBe(`https://qemu.weilnetz.de/w64/${pin.build.slice(0, 4)}/qemu-w64-setup-${pin.build}.exe`); - expect(pin.sha512_url).toBe(pin.url.replace(/\.exe$/, ".sha512")); - expect(pin.sha256).toMatch(/^[0-9a-f]{64}$/); - expect(pin.sha512).toMatch(/^[0-9a-f]{128}$/); - expect(pin.version).toMatch(/^\d+\.\d+\.\d+$/); - expect(isSupportedQemuVersion(parseQemuVersion(`version ${pin.version}`)!)).toBe(true); - expect(pin.silent_args).toEqual(["/S"]); - }); - - it("installs where the vm-manager looks", () => { - expect(pin.install_subdir).toBe(OFFICIAL_QEMU_SUBDIR); - }); -}); diff --git a/apps/vm-manager/test/ports.test.ts b/apps/vm-manager/test/ports.test.ts deleted file mode 100644 index ae902fb6..00000000 --- a/apps/vm-manager/test/ports.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { createServer } from "node:net"; -import { describe, expect, it } from "vitest"; -import { pickFreePort } from "../src/index.js"; - -describe("pickFreePort", () => { - it("returns a port on 127.0.0.1 that can be bound again right away", async () => { - const port = await pickFreePort(); - expect(port).toBeGreaterThan(0); - expect(port).toBeLessThan(65536); - const server = createServer(); - await new Promise((resolve, reject) => { - server.once("error", reject); - server.listen(port, "127.0.0.1", resolve); - }); - await new Promise((resolve) => server.close(() => resolve())); - }); - - it("gives different ports to back-to-back calls most of the time", async () => { - const ports = new Set(await Promise.all([pickFreePort(), pickFreePort(), pickFreePort()])); - expect(ports.size).toBeGreaterThan(1); - }); -}); diff --git a/apps/vm-manager/test/qemu-args.test.ts b/apps/vm-manager/test/qemu-args.test.ts deleted file mode 100644 index 0999587f..00000000 --- a/apps/vm-manager/test/qemu-args.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { CPU_MODEL, machineArgs, qemuArgs, qemuPathProblem, VmManagerError, type QemuArgsSpec } from "../src/index.js"; - -const linux: QemuArgsSpec = { - dotId: "dot_01k6", - accelerator: "kvm", - cpus: 2, - memoryMiB: 4096, - diskPath: "/home/u/.invisible-dots/vms/dot_01k6/disk.qcow2", - seedPath: "/home/u/.invisible-dots/vms/dot_01k6/seed.iso", - runtimeIsoPath: "/home/u/.invisible-dots/images/runtime-7.iso", - guestPort: 40123, - serialLogPath: "/home/u/.invisible-dots/vms/dot_01k6/serial.log", -}; - -describe("qemuArgs", () => { - it("is the command line of section 3.4, argument by argument", () => { - expect(qemuArgs(linux)).toEqual([ - "-name", "invisible-dot-dot_01k6", - "-machine", "q35", "-accel", "kvm", "-cpu", "host,-vmx,-svm", - "-smp", "2", "-m", "4096", - "-drive", "if=virtio,file=/home/u/.invisible-dots/vms/dot_01k6/disk.qcow2,format=qcow2,discard=unmap", - "-drive", "if=virtio,file=/home/u/.invisible-dots/vms/dot_01k6/seed.iso,format=raw,readonly=on", - "-drive", "if=virtio,file=/home/u/.invisible-dots/images/runtime-7.iso,format=raw,readonly=on", - "-netdev", "user,id=net0,hostfwd=tcp:127.0.0.1:40123-:1024", - "-device", "virtio-net-pci,netdev=net0", - "-device", "virtio-rng-pci", - "-serial", "file:/home/u/.invisible-dots/vms/dot_01k6/serial.log", - "-display", "none", - ]); // prettier-ignore - }); - - it("differs on Windows only in the accelerator and the paths it is given", () => { - const base = "C:\\Users\\u\\.invisible-dots"; - const windows: QemuArgsSpec = { - ...linux, - accelerator: "whpx", - diskPath: `${base}\\vms\\dot_01k6\\disk.qcow2`, - seedPath: `${base}\\vms\\dot_01k6\\seed.iso`, - runtimeIsoPath: `${base}\\images\\runtime-7.iso`, - serialLogPath: `${base}\\vms\\dot_01k6\\serial.log`, - }; - const a = qemuArgs(linux); - const b = qemuArgs(windows); - expect(b.length).toBe(a.length); - const differing = a.flatMap((value, index) => (value === b[index] ? [] : [index])); - expect(differing.map((index) => a[index - 1])).toEqual(["-accel", "-drive", "-drive", "-drive", "-serial"]); - }); - - it("never asks for a fallback CPU model or software emulation", () => { - const args = qemuArgs(linux).join(" "); - expect(args).not.toMatch(/tcg|max/); - expect(args).toMatch(/-cpu host,/); - }); - - it("gives every accelerator the host CPU without the virtualization extensions", () => { - // Measured with QEMU 11.1 under WHPX (architecture section 3.4): plain `host` and `max` pause the VM - // with "WHPX: Unexpected VP exit code 4" because the guest sees VMX; `host,-vmx` boots to the login. - expect(CPU_MODEL).toBe("host,-vmx,-svm"); - for (const accelerator of ["kvm", "whpx"] as const) { - const args = machineArgs({ accelerator, cpus: 2, memoryMiB: 2048 }); - expect(args[args.indexOf("-cpu") + 1]).toBe(CPU_MODEL); - const features = CPU_MODEL.split(",").slice(1); - expect(features).toEqual(expect.arrayContaining(["-vmx", "-svm"])); - expect(CPU_MODEL.split(",")[0]).toBe("host"); - } - }); - - it("has no monitor and nothing that pauses the VM", () => { - // The VM is reached through the guest channel only, and a paused VM would look started (section 3.4). - const args = qemuArgs(linux); - for (const flag of ["-S", "-qmp", "-qmp-pretty", "-monitor", "-mon", "-chardev", "-pidfile", "-daemonize", "-no-shutdown", "-incoming"]) { - expect(args).not.toContain(flag); - } - expect(args.join(" ")).not.toMatch(/qmp|monitor|stdio/); - }); - - it("refuses paths QEMU's option syntax would split", () => { - expect(() => qemuArgs({ ...linux, diskPath: "/home/a,b/disk.qcow2" })).toThrow(VmManagerError); - expect(() => qemuArgs({ ...linux, serialLogPath: "/home/a,b/serial.log" })).toThrow(/INVISIBLE_DOTS_HOME/); - }); - - it("refuses a path with any character outside plain ASCII, on every host", () => { - // Measured with the pinned Windows QEMU 11.1: both fail to open as -drive files. - for (const home of ["/home/caf\u00e9", "C:\\Users\\\u0416\u0443\u043a", "/home/\u6d4b\u8bd5"]) { - expect(() => qemuArgs({ ...linux, diskPath: `${home}/.invisible-dots/vms/dot_01k6/disk.qcow2` })).toThrow(/plain ASCII.*INVISIBLE_DOTS_HOME/); - } - expect(qemuPathProblem("/home/u/.invisible-dots/vms/dot_01k6/disk.qcow2")).toBeUndefined(); - expect(qemuPathProblem("C:\\Program Files\\x")).toBeUndefined(); - }); - - it("checks the numbers it is given", () => { - expect(() => qemuArgs({ ...linux, cpus: 0 })).toThrow(/cpus/); - expect(() => qemuArgs({ ...linux, cpus: 17 })).toThrow(/cpus/); - expect(() => qemuArgs({ ...linux, memoryMiB: 1.5 })).toThrow(/memoryMiB/); - expect(() => qemuArgs({ ...linux, guestPort: 0 })).toThrow(/guestPort/); - expect(() => qemuArgs({ ...linux, guestPort: 65536 })).toThrow(/guestPort/); - }); -}); diff --git a/apps/vm-manager/test/runner.test.ts b/apps/vm-manager/test/runner.test.ts deleted file mode 100644 index 96397a21..00000000 --- a/apps/vm-manager/test/runner.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { mkdtemp, readFile, rm } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { describe, expect, it } from "vitest"; -import { CommandError, firstLine, NodeCommandRunner, NodeProcessControl, retryWhileInUse, runProcess, startProcess } from "../src/index.js"; - -const childOptions = { cwd: tmpdir(), env: { PATH: process.env.PATH ?? "" } }; - -// The real spawn against the running Node: the same on every host, no shell involved. -const node = process.execPath; - -describe("runProcess", () => { - it("collects exit code, stdout and stderr", async () => { - const result = await runProcess(node, ["-e", "process.stdout.write('out');process.stderr.write('err');process.exit(3)"], { timeoutMs: 20_000 }); - expect(result).toEqual({ code: 3, signal: null, stdout: "out", stderr: "err", timedOut: false }); - }); - - it("closes stdin at once, so a program reading it sees end of input", async () => { - const result = await runProcess(node, ["-e", "process.stdin.on('data',()=>{}).on('end',()=>process.exit(4))"], { timeoutMs: 20_000 }); - expect(result.code).toBe(4); - }); - - it("passes env and cwd", async () => { - const result = await runProcess(node, ["-e", "process.stdout.write(process.env.IDOTS_RUNNER_TEST+'|'+process.cwd())"], { - env: { ...process.env, IDOTS_RUNNER_TEST: "seen" }, - cwd: process.execPath.replace(/[\\/][^\\/]+$/, ""), - timeoutMs: 20_000, - }); - expect(result.stdout.startsWith("seen|")).toBe(true); - }); - - it("kills a process that outlives its timeout and says so", async () => { - const result = await runProcess(node, ["-e", "setInterval(()=>{},1000)"], { timeoutMs: 300 }); - expect(result.timedOut).toBe(true); - expect(result.code === null || result.code !== 0).toBe(true); - }); - - it("reports a program that does not exist instead of throwing", async () => { - const result = await runProcess("invisible-dots-no-such-program-x", ["--version"]); - expect(result.code).toBeNull(); - expect(result.startError?.code).toBe("ENOENT"); - }); -}); - -describe("NodeCommandRunner", () => { - const runner = new NodeCommandRunner(); - - it("resolves with the output of a command that exits 0", async () => { - expect(await runner.run(node, ["-e", "process.stdout.write('{\"a\":1}')"])).toEqual({ stdout: '{"a":1}', stderr: "" }); - }); - - it("rejects with a CommandError carrying the exit code and stderr", async () => { - const error = (await runner.run(node, ["-e", "process.stderr.write('bad disk');process.exit(2)"]).catch((e: unknown) => e)) as CommandError; - expect(error).toBeInstanceOf(CommandError); - expect(error.exitCode).toBe(2); - expect(error.message).toContain("exited with code 2: bad disk"); - }); - - it("rejects a timeout and a missing program in their own words", async () => { - const slow = (await runner.run(node, ["-e", "setInterval(()=>{},1000)"], { timeoutMs: 200 }).catch((e: unknown) => e)) as CommandError; - expect(slow.timedOut).toBe(true); - expect(slow.message).toContain("timed out after 200 ms"); - const missing = (await runner.run("invisible-dots-no-such-program-x", []).catch((e: unknown) => e)) as CommandError; - expect(missing.notFound).toBe(true); - expect(missing.message).toContain("invisible-dots doctor"); - }); -}); - -describe("startProcess", () => { - it("reports the exit once and keeps the end of stderr", async () => { - const child = startProcess(node, ["-e", "process.stderr.write('x'.repeat(10000)+'END');process.exit(5)"], childOptions); - const exit = await new Promise((resolve) => child.onExit((code) => resolve(code))); - expect(exit).toBe(5); - expect(child.stderrTail().endsWith("END")).toBe(true); - expect(child.stderrTail().length).toBeLessThanOrEqual(4096); - // A listener added after the exit is called at once. - expect(await new Promise((resolve) => child.onExit((code) => resolve(code)))).toBe(5); - }); - - it("reports a program that cannot start through onExit", async () => { - const child = startProcess("invisible-dots-no-such-program-x", [], childOptions); - const error = await new Promise((resolve) => child.onExit((_code, _signal, e) => resolve(e))); - expect((error as NodeJS.ErrnoException | undefined)?.code).toBe("ENOENT"); - }); -}); - -describe("NodeProcessControl.spawnDetached", () => { - it("runs the child in the directory and with exactly the environment it is given", async () => { - const dir = await mkdtemp(join(tmpdir(), "idots-detached-")); - try { - const logPath = join(dir, "child.log"); - const control = new NodeProcessControl(); - const child = await control.spawnDetached( - node, - ["-e", "process.stdout.write(JSON.stringify({ cwd: process.cwd(), token: process.env.INVISIBLE_DOTS_TOKEN ?? null, only: process.env.IDOTS_ONLY ?? null }))"], - { logPath, cwd: dir, env: { PATH: process.env.PATH ?? "", IDOTS_ONLY: "yes" } }, - ); - await child.exited; - const seen = JSON.parse(await readFile(logPath, "utf8")) as { cwd: string; token: string | null; only: string | null }; - expect(seen.cwd.toLowerCase()).toBe(dir.toLowerCase()); - expect(seen.only).toBe("yes"); - expect(seen.token).toBeNull(); - expect(control.presence(child.pid)).toBe("gone"); - expect(control.presence(process.pid)).toBe("ours"); - } finally { - await rm(dir, { recursive: true, force: true }); - } - }); -}); - -describe("retryWhileInUse", () => { - it("tries again while the file is in use, and gives every other error back at once", async () => { - let calls = 0; - const busy = Object.assign(new Error("resource busy"), { code: "EBUSY" }); - expect( - await retryWhileInUse(async () => { - calls++; - if (calls < 3) throw busy; - return "done"; - }, 5, 1), - ).toBe("done"); - expect(calls).toBe(3); - const missing = Object.assign(new Error("no such file"), { code: "ENOENT" }); - calls = 0; - await expect( - retryWhileInUse(async () => { - calls++; - throw missing; - }, 5, 1), - ).rejects.toBe(missing); - expect(calls).toBe(1); - await expect(retryWhileInUse(async () => Promise.reject(busy), 2, 1)).rejects.toBe(busy); - }); -}); - -describe("firstLine", () => { - it("skips blank lines and trims", () => { - expect(firstLine("\r\n qemu: error one \r\nmore")).toBe("qemu: error one"); - expect(firstLine("")).toBe(""); - }); -}); diff --git a/apps/vm-manager/test/seed.test.ts b/apps/vm-manager/test/seed.test.ts deleted file mode 100644 index 8c9a6f27..00000000 --- a/apps/vm-manager/test/seed.test.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { readFile, mkdtemp, rm, stat } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { permissionBitsEnforced } from "@invisible-dots/shared"; -import { parse } from "yaml"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { - guestHostname, - loadSeedTemplates, - renderSeed, - renderTemplate, - RUNTIME_ISO_LABEL, - writeSeedIso, - yamlScalar, -} from "../src/index.js"; - -const DOT = "dot_01k6h3w2ze8m4qv7r1xk9bntc5"; - -describe("templates", () => { - it("fills placeholders and refuses a missing value", () => { - expect(renderTemplate("a {{ x }} b {{y}}", { x: 1, y: "z" }, (v) => `<${v}>`)).toBe("a <1> b "); - expect(() => renderTemplate("{{missing}}", {}, String)).toThrow(/missing/); - }); - - it("quotes YAML scalars so a token cannot break out", () => { - const tricky = 'a"b\nc: d #e'; - expect(parse(`k: ${yamlScalar(tricky)}`)).toEqual({ k: tricky }); - }); - - it("turns dot ids into hostnames", () => { - expect(guestHostname(DOT)).toBe("invisible-dot-dot-01k6h3w2ze8m4qv7r1xk9bntc5"); - }); -}); - -describe("the seed of a Dot", () => { - it("renders cloud-config that writes config.json and mounts the runtime ISO by label", async () => { - const seed = renderSeed(await loadSeedTemplates(), DOT, "tok\"en"); - expect(seed.userData.startsWith("#cloud-config\n")).toBe(true); - const userData = parse(seed.userData); - const config = userData.write_files.find((file: { path: string }) => file.path === "/etc/invisible-dots/config.json"); - expect(JSON.parse(config.content)).toEqual({ dotId: DOT, token: 'tok"en' }); - expect(config.permissions).toBe("0600"); - // dot-agentd's own user owns it: nothing the model runs (user dot) can read the token (section 4.1). - expect(config.owner).toBe("dotagentd:dotagentd"); - expect(userData.mounts[0][0]).toBe(`LABEL=${RUNTIME_ISO_LABEL}`); - expect(userData.mounts[0][1]).toBe("/opt/invisible-dots"); - expect(userData.hostname).toBe(guestHostname(DOT)); - expect(parse(seed.metaData)).toEqual({ "instance-id": seed.instanceId, "local-hostname": guestHostname(DOT) }); - }); - - it("lets dot-agentd's user run exactly the poweroff it starts as root, and nothing else, and dot, the model's user, nothing (section 4.1)", async () => { - const userData = parse(renderSeed(await loadSeedTemplates(), DOT, "token").userData); - const user = (name: string) => userData.users.find((entry: { name: string }) => entry.name === name); - expect(user("dotagentd").sudo).toBe("ALL=(root) NOPASSWD: /usr/bin/systemctl poweroff"); - expect(user("dot").sudo).toBe(false); - const dot = user("dot"); - expect(dot.groups).toEqual(["audio", "video", "systemd-journal"]); - // dot-agentd's user has no group, no login and no home to speak of. - expect(user("dotagentd")).not.toHaveProperty("groups"); - expect(user("dotagentd").shell).toBe("/usr/sbin/nologin"); - // cloud-init applies groups only where it creates the user, the golden image's builder seed: the two must agree. - const builder = parse(await readFile(fileURLToPath(new URL("../../../guest/image-builder/builder/user-data.yaml", import.meta.url)), "utf8")); - const builderUser = (name: string) => builder.users.find((entry: { name: string }) => entry.name === name); - expect(builderUser("dot").groups).toEqual(dot.groups); - for (const key of ["gecos", "homedir", "no_create_home", "shell", "lock_passwd"]) { - expect(builderUser("dotagentd")[key], key).toEqual(user("dotagentd")[key]); - } - expect(builderUser("dotagentd")).not.toHaveProperty("groups"); - // The argv dot-agentd runs (guest/dot-agentd server.go DefaultPowerOff) is the command the rule names. - const server = await readFile(fileURLToPath(new URL("../../../guest/dot-agentd/internal/agentd/server.go", import.meta.url)), "utf8"); - expect(server).toContain('var DefaultPowerOff = []string{"/usr/bin/sudo", "-n", "/usr/bin/systemctl", "poweroff"}'); - }); - - it("changes the instance-id exactly when the seed content changes", async () => { - const templates = await loadSeedTemplates(); - const a = renderSeed(templates, DOT, "token-a"); - expect(renderSeed(templates, DOT, "token-a").instanceId).toBe(a.instanceId); - expect(renderSeed(templates, DOT, "token-b").instanceId).not.toBe(a.instanceId); - expect(renderSeed({ ...templates, userData: `${templates.userData}\n# new\n` }, DOT, "token-a").instanceId).not.toBe(a.instanceId); - expect(a.instanceId.startsWith(`iid-${DOT}-`)).toBe(true); - }); - - it("templates have LF endings and only ASCII, as files the guest reads", async () => { - for (const name of ["user-data.yaml.tmpl", "meta-data.yaml.tmpl"]) { - const text = await readFile(join(new URL("../../../virtualization/cloud-init/", import.meta.url).pathname.replace(/^\/([A-Za-z]:)/, "$1"), name), "utf8"); - expect(text).not.toContain("\r"); - expect(/^[\x09\x0a\x20-\x7e]*$/.test(text)).toBe(true); - } - }); -}); - -describe("writeSeedIso", () => { - let dir: string; - beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), "idots-seed-")); - }); - afterEach(async () => { - await rm(dir, { recursive: true, force: true }); - }); - - it("writes the same bytes for the same seed, labelled cidata, private to the user", async () => { - const seed = renderSeed(await loadSeedTemplates(), DOT, "token"); - const first = join(dir, "a.iso"); - const second = join(dir, "b.iso"); - await writeSeedIso(first, seed); - await writeSeedIso(second, seed); - const bytes = await readFile(first); - expect(bytes.equals(await readFile(second))).toBe(true); - expect(bytes.subarray(16 * 2048 + 40, 16 * 2048 + 46).toString("latin1")).toBe("cidata"); - expect(bytes.includes(Buffer.from(seed.instanceId))).toBe(true); - if (permissionBitsEnforced()) expect((await stat(first)).mode & 0o777).toBe(0o600); - }); -}); diff --git a/apps/vm-manager/test/vm-manager.test.ts b/apps/vm-manager/test/vm-manager.test.ts deleted file mode 100644 index 7c797597..00000000 --- a/apps/vm-manager/test/vm-manager.test.ts +++ /dev/null @@ -1,525 +0,0 @@ -import { existsSync } from "node:fs"; -import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import { createServer, type Server } from "node:net"; -import { tmpdir, uptime } from "node:os"; -import { join } from "node:path"; -import { hostPaths, type HostPaths, silentLogger } from "@invisible-dots/shared"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { - AcceleratorUnavailableError, - CpuModelError, - GuestRequestError, - NotImplementedError, - pickFreePort, - QemuNotFoundError, - VmManager, - VmManagerError, - VmStartError, - VmStateError, - generateToken, - qemuArgs, - vmSpecFromConfig, - type VmManagerOptions, - type VmSpec, -} from "../src/index.js"; -import { FakeQemuHost, FakeRunner, argAfter, guestPortOf } from "./fakes.js"; - -const DOT = "dot_01k6h3w2ze8m4qv7r1xk9bntc5"; -const QEMU = { system: "/opt/qemu/bin/qemu-system-x86_64", img: "/opt/qemu/bin/qemu-img" }; - -let root: string; -let paths: HostPaths; -let runner: FakeRunner; -let host: FakeQemuHost; -let manager: VmManager; -let spec: VmSpec; -let diskSize: number; - -function makeManager(extra: Partial = {}): VmManager { - return new VmManager({ - paths, - logger: silentLogger, - qemu: QEMU, - accelerator: "kvm", - runner, - processes: host, - sleep: (ms) => new Promise((resolve) => setTimeout(resolve, Math.min(ms, 2))), - pollIntervalMs: 1, - startSettleMs: 1, - // Generous: a guest that powers off must never be mistaken for one that does - // not on a loaded host. The tests of the forced kill pass their own short timeoutMs. - shutdownTimeoutMs: 5_000, - killTimeoutMs: 40, - startTimeoutMs: 200, - ...extra, - }); -} - -async function processFile(dotId = DOT): Promise<{ pid: number; guest_port: number }> { - return JSON.parse(await readFile(paths.processFilePath(dotId), "utf8")) as { pid: number; guest_port: number }; -} - -/** A port nothing listens on: bound once by the kernel's choice, then released. */ -const deadPort = () => pickFreePort(); - -beforeEach(async () => { - root = await mkdtemp(join(tmpdir(), "idots-vm-")); - paths = hostPaths({ INVISIBLE_DOTS_HOME: root }); - await mkdir(paths.imagesDir, { recursive: true }); - const golden = paths.goldenImagePath("1"); - const runtime = paths.runtimeIsoPath("1"); - await writeFile(golden, "golden"); - await writeFile(runtime, "runtime"); - diskSize = 40 * 1024 ** 3; - runner = new FakeRunner(async (command, args) => { - expect(command).toBe(QEMU.img); - if (args[0] === "create") await writeFile(args.at(-2)!, "qcow2"); - if (args[0] === "info") return { stdout: JSON.stringify({ "virtual-size": diskSize, format: "qcow2" }), stderr: "" }; - if (args[0] === "resize") diskSize = Number(args.at(-1)); - return undefined; - }); - host = new FakeQemuHost(); - manager = makeManager(); - spec = { dotId: DOT, token: "tok-1", goldenImage: golden, runtimeImage: runtime, cpus: 2, memoryMiB: 4096, diskBytes: diskSize }; -}); - -afterEach(async () => { - for (const vm of [...host.vms.values()]) host.terminate(vm); - await rm(root, { recursive: true, force: true, maxRetries: 5 }); -}); - -describe("create", () => { - it("creates the overlay on the golden image and writes the seed", async () => { - const result = await manager.create(spec); - expect(result.diskCreated).toBe(true); - expect(runner.lines()).toEqual([ - `${QEMU.img} create -f qcow2 -F qcow2 -b ${spec.goldenImage} ${paths.diskPath(DOT)} ${spec.diskBytes}`, - ]); - const seed = await readFile(paths.seedPath(DOT)); - // The primary volume descriptor at sector 16 carries the label cloud-init looks for. - expect(seed.subarray(16 * 2048 + 40, 16 * 2048 + 46).toString("latin1")).toBe("cidata"); - expect(seed.includes(Buffer.from("tok-1"))).toBe(true); - expect(result.instanceId).toMatch(new RegExp(`^iid-${DOT}-[0-9a-f]{16}$`)); - }); - - it("keeps an existing disk and the instance-id when nothing changed", async () => { - const first = await manager.create(spec); - const second = await manager.create(spec); - expect(second.diskCreated).toBe(false); - expect(runner.lines().filter((line) => line.includes(" create "))).toHaveLength(1); - expect(second.instanceId).toBe(first.instanceId); - const third = await manager.create({ ...spec, token: "tok-2" }); - expect(third.instanceId).not.toBe(first.instanceId); - }); - - it("gives a seed that goes back to an earlier content an id cloud-init has not seen, so its config.json is written again", async () => { - // A VM proxy set and then cleared: the third seed has the first one's content. With the content's id alone it - // got the first boot's id again, cloud-init skipped write_files, and the Dot kept the proxy it no longer had. - const ids = []; - for (const proxy of [undefined, "socks5://10.0.2.2:1081", undefined, "socks5://10.0.2.2:1081", undefined]) { - ids.push((await manager.create({ ...spec, ...(proxy ? { proxy } : {}) })).instanceId); - } - expect(new Set(ids).size).toBe(ids.length); - // The same seed again is still the same id: a restart re-runs nothing. - expect((await manager.create(spec)).instanceId).toBe(ids[4]); - }); - - it("refuses missing images, bad ids and relative image paths", async () => { - await expect(manager.create({ ...spec, goldenImage: join(root, "nope.qcow2") })).rejects.toThrow(/golden image .* does not exist.*image build/); - await expect(manager.create({ ...spec, dotId: "../etc" })).rejects.toBeInstanceOf(VmManagerError); - await expect(manager.create({ ...spec, runtimeImage: "runtime.iso" })).rejects.toThrow(/absolute/); - await expect(manager.create({ ...spec, cpus: 0 })).rejects.toThrow(/cpus/); - }); - - it("refuses to rewrite the seed of a running VM", async () => { - await manager.create(spec); - await manager.start(spec); - await expect(manager.create(spec)).rejects.toBeInstanceOf(VmStateError); - }); -}); - -describe("start", () => { - beforeEach(async () => { - await manager.create(spec); - }); - - it("spawns QEMU with the argv of section 3.4, records pid and port, and reports them", async () => { - const started = await manager.start(spec); - expect(host.spawned).toHaveLength(1); - const { command, args, logPath } = host.spawned[0]!; - expect(command).toBe(QEMU.system); - expect(args).toEqual( - qemuArgs({ - dotId: DOT, - accelerator: "kvm", - cpus: 2, - memoryMiB: 4096, - diskPath: paths.diskPath(DOT), - seedPath: paths.seedPath(DOT), - runtimeIsoPath: spec.runtimeImage, - guestPort: started.guestPort, - serialLogPath: paths.serialLogPath(DOT), - }), - ); - expect(logPath).toBe(join(paths.logsDir, `qemu-${DOT}.log`)); - expect(started).toEqual({ pid: host.only().pid, guestPort: host.only().guestPort, alreadyRunning: false }); - expect(await processFile()).toEqual({ pid: started.pid, guest_port: started.guestPort, host_uptime_s: expect.any(Number) }); - expect(await manager.state(DOT)).toEqual({ state: "RUNNING", pid: started.pid, guestPort: started.guestPort }); - }); - - it("does nothing when the VM already runs", async () => { - const first = await manager.start(spec); - const second = await manager.start(spec); - expect(second).toEqual({ pid: first.pid, guestPort: first.guestPort, alreadyRunning: true }); - expect(host.spawned).toHaveLength(1); - }); - - it("takes the new cpus, memory and runtime ISO from the spec", async () => { - const runtime2 = paths.runtimeIsoPath("2"); - await writeFile(runtime2, "runtime 2"); - await manager.start({ ...spec, cpus: 4, memoryMiB: 8192, runtimeImage: runtime2 }); - const args = host.spawned[0]!.args; - expect(argAfter(args, "-smp")).toBe("4"); - expect(argAfter(args, "-m")).toBe("8192"); - expect(args).toContain(`if=virtio,file=${runtime2},format=raw,readonly=on`); - }); - - it("retries with another port when QEMU cannot bind the forward", async () => { - host.behaviour = (_args, attempt) => - attempt === 1 ? { kind: "exit", code: 1, output: "qemu: -netdev user,id=net0: Could not set up host forwarding rule 'tcp:127.0.0.1:1-:1024'\n" } : { kind: "run" }; - const started = await manager.start(spec); - expect(host.spawned).toHaveLength(2); - expect(started.guestPort).toBe(guestPortOf(host.spawned[1]!.args)); - expect(await processFile()).toEqual({ pid: started.pid, guest_port: started.guestPort, host_uptime_s: expect.any(Number) }); - }); - - it("gives up after the configured number of taken ports, leaving no pid file", async () => { - host.behaviour = () => ({ kind: "exit", code: 1, output: "Could not set up host forwarding rule 'x'\n" }); - const manager3 = makeManager({ maxPortAttempts: 3 }); - await expect(manager3.start(spec)).rejects.toBeInstanceOf(VmStartError); - expect(host.spawned).toHaveLength(3); - expect(existsSync(paths.processFilePath(DOT))).toBe(false); - }); - - it("names setup and doctor when the accelerator is unusable", async () => { - host.behaviour = () => ({ kind: "exit", code: 1, output: "Could not access KVM kernel module: No such file or directory\nqemu-system-x86_64: -accel kvm: failed to initialize kvm: No such file or directory\n" }); - const error = await manager.start(spec).catch((e: unknown) => e); - expect(error).toBeInstanceOf(AcceleratorUnavailableError); - expect((error as Error).message).toContain("invisible-dots setup"); - expect((error as Error).message).toContain("invisible-dots doctor"); - expect((error as Error).message).toContain("never falls back to software emulation"); - expect(existsSync(paths.processFilePath(DOT))).toBe(false); - }); - - it("reports the CPU model refused even when QEMU set up its forward first, without trying another model", async () => { - host.behaviour = () => ({ kind: "exitAfterForward", code: 1, output: "qemu-system-x86_64: CPU model 'host' requires KVM or HVF\n" }); - const settling = makeManager({ startSettleMs: 100, sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)) }); - const error = await settling.start(spec).catch((e: unknown) => e); - expect(error).toBeInstanceOf(CpuModelError); - expect((error as Error).message).toContain('"-cpu host,-vmx,-svm"'); - expect(host.spawned).toHaveLength(1); - expect((await settling.state(DOT)).state).toBe("STOPPED"); - }); - - it("kills a QEMU that never sets up its port forward, and says so", async () => { - host.behaviour = () => ({ kind: "hang" }); - const error = (await manager.start(spec).catch((e: unknown) => e)) as VmStartError; - expect(error).toBeInstanceOf(VmStartError); - expect(error.message).toMatch(/did not set up its port forward .* and was killed/); - expect(host.killed).toHaveLength(1); - expect(host.alive.size).toBe(0); - expect(existsSync(paths.processFilePath(DOT))).toBe(false); - }); - - it("includes what QEMU wrote during this start only", async () => { - await mkdir(paths.logsDir, { recursive: true }); - await writeFile(join(paths.logsDir, `qemu-${DOT}.log`), "old run noise\n"); - host.behaviour = () => ({ kind: "exit", code: 1, output: "qemu-system-x86_64: -drive if=virtio: Could not open 'x': Permission denied\n" }); - const error = (await manager.start(spec).catch((e: unknown) => e)) as VmStartError; - expect(error).toBeInstanceOf(VmStartError); - expect(error.qemuOutput).toContain("Permission denied"); - expect(error.qemuOutput).not.toContain("old run noise"); - expect(error.message).toContain("exited with code 1"); - }); - - it("refuses to start before create", async () => { - await expect(manager.start({ ...spec, dotId: "dot_other" })).rejects.toThrow(/create the VM first/); - }); - - it("fails clearly when QEMU is not installed", async () => { - const empty = join(root, "no-qemu"); - await mkdir(empty); - const bare = makeManager({ qemu: undefined, env: { INVISIBLE_DOTS_QEMU_DIR: empty } }); - const error = await bare.start(spec).catch((e: unknown) => e); - expect(error).toBeInstanceOf(QemuNotFoundError); - expect((error as Error).message).toContain("invisible-dots setup"); - }); - - it("starts over a pid file whose process is gone", async () => { - await writeFile(paths.processFilePath(DOT), JSON.stringify({ pid: 999999, guest_port: await deadPort() })); - expect((await manager.state(DOT)).state).toBe("STOPPED"); - const started = await manager.start(spec); - expect(started.alreadyRunning).toBe(false); - }); - - it("never kills or starts over a live pid whose guest port does not listen: it may be another program", async () => { - await writeFile(paths.processFilePath(DOT), JSON.stringify({ pid: 777, guest_port: await deadPort() })); - host.foreignPids.add(777); - const state = await manager.state(DOT); - expect(state.state).toBe("ERROR"); - expect(state.detail).toContain("the pid now belongs to another process"); - await expect(manager.start(spec)).rejects.toBeInstanceOf(VmStateError); - await expect(manager.stop(DOT, spec.token)).rejects.toThrow(/cannot stop it safely/); - await expect(manager.destroy(DOT)).rejects.toThrow(/cannot destroy it safely/); - expect(host.killed).toEqual([]); - }); - - it("never takes another user's process for this Dot's QEMU, even when the recorded port listens", async () => { - const listener: Server = createServer(); - await new Promise((resolve) => listener.listen(0, "127.0.0.1", resolve)); - const port = (listener.address() as { port: number }).port; - try { - await writeFile(paths.processFilePath(DOT), JSON.stringify({ pid: 780, guest_port: port })); - host.otherUserPids.add(780); - const state = await manager.state(DOT); - // Not ours, and not gone either: reported, never killed, never adopted. - expect(state.state).toBe("ERROR"); - await expect(manager.stop(DOT, spec.token)).rejects.toThrow(/cannot stop it safely/); - expect(host.killed).toEqual([]); - } finally { - listener.close(); - } - }); - - it("accepts a live pid whose recorded guest port listens as this Dot's QEMU", async () => { - // A restarted control plane holds no ChildProcess: pid and port from the pid file prove it. - const listener: Server = createServer(); - await new Promise((resolve) => listener.listen(0, "127.0.0.1", resolve)); - const port = (listener.address() as { port: number }).port; - try { - await writeFile(paths.processFilePath(DOT), JSON.stringify({ pid: 778, guest_port: port })); - host.foreignPids.add(778); - expect(await manager.state(DOT)).toEqual({ state: "RUNNING", pid: 778, guestPort: port }); - } finally { - listener.close(); - } - }); - - it("treats a pid file it cannot read as unknown, never as stopped", async () => { - await writeFile(paths.processFilePath(DOT), "12345\n"); - const state = await manager.state(DOT); - expect(state.state).toBe("ERROR"); - expect(state.detail).toContain("is not a pid file this version wrote"); - await expect(manager.start(spec)).rejects.toBeInstanceOf(VmStateError); - }); -}); - -describe("stop, reboot, destroy", () => { - beforeEach(async () => { - await manager.create(spec); - }); - - it("asks the guest to power off through the guest channel and waits for QEMU to exit", async () => { - await manager.start(spec); - const vm = host.only(); - const result = await manager.stop(DOT, spec.token); - expect(result).toEqual({ forced: false, wasRunning: true }); - expect(vm.requests.map((r) => r.replace(/\?nonce=[0-9a-f]+$/, ""))).toEqual(["GET /v1/proof", "POST /v1/system/poweroff"]); - expect(host.killed).toEqual([]); - expect(existsSync(paths.processFilePath(DOT))).toBe(false); - expect((await manager.state(DOT)).state).toBe("STOPPED"); - }); - - it("kills QEMU when the guest accepts the poweroff but does not power off in time", async () => { - host.behaviour = () => ({ kind: "run", ignorePoweroff: true }); - const started = await manager.start(spec); - const result = await manager.stop(DOT, spec.token, { timeoutMs: 20 }); - expect(result).toEqual({ forced: true, wasRunning: true }); - expect(host.killed).toEqual([started.pid]); - }); - - it("kills QEMU at once when the guest is not up to take the poweroff", async () => { - host.behaviour = () => ({ kind: "run", guestUp: false }); - const started = await manager.start(spec); - const result = await makeManager({ shutdownTimeoutMs: 60_000 }).stop(DOT, spec.token); - expect(result.forced).toBe(true); - expect(host.killed).toEqual([started.pid]); - }); - - it("kills a QEMU found after a restart only once its pid and port prove it is the Dot's", async () => { - host.behaviour = () => ({ kind: "run", ignorePoweroff: true }); - const started = await manager.start(spec); - const restarted = makeManager(); - expect(await restarted.stop(DOT, spec.token, { timeoutMs: 10 })).toEqual({ forced: true, wasRunning: true }); - expect(host.killed).toEqual([started.pid]); - }); - - it("is a no-op on a stopped VM", async () => { - expect(await manager.stop(DOT, spec.token)).toEqual({ forced: false, wasRunning: false }); - }); - - it("reboots as stop then start, on a new process and port", async () => { - const first = await manager.start(spec); - const second = await manager.reboot(spec); - expect(second.alreadyRunning).toBe(false); - expect(second.pid).not.toBe(first.pid); - expect(host.spawned).toHaveLength(2); - expect(await processFile()).toEqual({ pid: second.pid, guest_port: second.guestPort, host_uptime_s: expect.any(Number) }); - }); - - it("destroys a running VM, its directory and its log", async () => { - await manager.start(spec); - await manager.destroy(DOT); - expect(host.alive.size).toBe(0); - expect(existsSync(paths.vmDir(DOT))).toBe(false); - expect(existsSync(join(paths.logsDir, `qemu-${DOT}.log`))).toBe(false); - }); - - it("spawns QEMU in the data directory with an allowlisted environment, never the server's secrets", async () => { - process.env.INVISIBLE_DOTS_TOKEN = "server-api-token-must-not-leak"; - process.env.DATABASE_URL = "postgres://user:secret@db/idots"; - try { - await manager.start(spec); - } finally { - delete process.env.INVISIBLE_DOTS_TOKEN; - delete process.env.DATABASE_URL; - } - const spawned = host.spawned.at(-1)!; - expect(spawned.cwd).toBe(paths.home); - expect(Object.keys(spawned.env)).not.toContain("INVISIBLE_DOTS_TOKEN"); - expect(Object.keys(spawned.env)).not.toContain("DATABASE_URL"); - expect(Object.keys(spawned.env).map((k) => k.toUpperCase())).toContain("PATH"); - }); - - it("serializes operations on the same Dot", async () => { - const [a, b] = await Promise.all([manager.start(spec), manager.start(spec)]); - expect(host.spawned).toHaveLength(1); - expect([a.alreadyRunning, b.alreadyRunning].sort()).toEqual([false, true]); - }); -}); - -describe("reconciliation after a control plane restart", () => { - it("a new manager finds a running VM by its pid file, and state() removes the pid file of one that is gone", async () => { - await manager.create(spec); - const started = await manager.start(spec); - const deadId = "dot_dead"; - await mkdir(paths.vmDir(deadId), { recursive: true }); - await writeFile(paths.processFilePath(deadId), JSON.stringify({ pid: 999998, guest_port: await deadPort() })); - - const restarted = makeManager(); - expect(await restarted.state(DOT)).toEqual({ state: "RUNNING", pid: started.pid, guestPort: started.guestPort }); - expect(await restarted.state(deadId)).toEqual({ state: "STOPPED", pid: null, guestPort: null }); - // Removed at once: a pid recycled later can never make it look alive again. - expect(existsSync(paths.processFilePath(deadId))).toBe(false); - host.foreignPids.add(999998); - expect((await restarted.state(deadId)).state).toBe("STOPPED"); - }); - - it("a pid file from before a host restart is stopped, whatever runs under its pid now", async () => { - const listener: Server = createServer(); - await new Promise((resolve) => listener.listen(0, "127.0.0.1", resolve)); - const port = (listener.address() as { port: number }).port; - try { - await mkdir(paths.vmDir(DOT), { recursive: true }); - // Written when the host had been up a year longer than it has now. - await writeFile(paths.processFilePath(DOT), JSON.stringify({ pid: 779, guest_port: port, host_uptime_s: 365 * 86_400 + uptime() })); - host.foreignPids.add(779); - expect((await manager.state(DOT)).state).toBe("STOPPED"); - expect(existsSync(paths.processFilePath(DOT))).toBe(false); - expect(host.killed).toEqual([]); - } finally { - listener.close(); - } - }); -}); - -describe("resize", () => { - beforeEach(async () => { - await manager.create(spec); - }); - - it("grows the disk of a stopped VM and never shrinks it", async () => { - const bigger = diskSize + 1024 ** 3; - expect(await manager.resizeDisk(DOT, bigger)).toEqual({ resized: true, previousBytes: 40 * 1024 ** 3 }); - expect(runner.lines().at(-1)).toBe(`${QEMU.img} resize -f qcow2 ${paths.diskPath(DOT)} ${bigger}`); - expect(await manager.resizeDisk(DOT, bigger)).toEqual({ resized: false, previousBytes: bigger }); - await expect(manager.resizeDisk(DOT, 1024)).rejects.toThrow(/shrinking/); - }); - - it("leaves cpus and memory to the next start of a running VM, and refuses its disk", async () => { - await manager.start(spec); - expect(await manager.resize({ ...spec, cpus: 8 })).toEqual({ restartRequired: true, diskResized: false }); - await expect(manager.resize({ ...spec, diskBytes: spec.diskBytes * 2 })).rejects.toBeInstanceOf(VmStateError); - await expect(manager.resizeDisk(DOT, spec.diskBytes * 2)).rejects.toThrow(/while the VM is stopped/); - }); - - it("grows the disk through resize when stopped", async () => { - expect(await manager.resize({ ...spec, diskBytes: spec.diskBytes * 2 })).toEqual({ restartRequired: false, diskResized: true }); - }); -}); - -describe("guest health through the manager", () => { - beforeEach(async () => { - await manager.create(spec); - }); - - it("answers once the guest is up", async () => { - const started = await manager.start(spec); - expect(await manager.waitForGuestHealth(DOT, started.guestPort, spec.token, { intervalMs: 1, timeoutMs: 2_000 })).toMatchObject({ agentd: "ok" }); - }); - - it("stops waiting when QEMU exits, with the end of both logs", async () => { - host.behaviour = () => ({ kind: "run", guestUp: false, qemuOutput: "qemu: last words\n" }); - const started = await manager.start(spec); - host.terminate(host.only()); - const error = (await manager.waitForGuestHealth(DOT, started.guestPort, spec.token, { intervalMs: 1, timeoutMs: 1000 }).catch((e: unknown) => e)) as VmStartError; - expect(error).toBeInstanceOf(VmStartError); - expect(error.message).toMatch(/QEMU is not running any more/); - expect(error.qemuOutput).toContain("qemu: last words"); - }); - - it("reports a QEMU that runs but never brings the guest up with its log and the serial console", async () => { - // What a paused vCPU looks like from outside: QEMU alive, its forward up, nothing behind it. - host.behaviour = () => ({ kind: "run", guestUp: false, qemuOutput: "WHPX: Unexpected VP exit code 4\n", serial: "SeaBIOS (version 1.16.3)\nBooting from Hard Disk...\n" }); - const started = await manager.start(spec); - const error = (await manager.waitForGuestHealth(DOT, started.guestPort, spec.token, { intervalMs: 1, timeoutMs: 50, requestTimeoutMs: 20 }).catch((e: unknown) => e)) as VmStartError; - expect(error).toBeInstanceOf(VmStartError); - expect(error.message).toContain("the guest did not come up"); - expect(error.message).toContain(paths.qemuLogPath(DOT)); - expect(error.message).toContain(paths.serialLogPath(DOT)); - expect(error.qemuOutput).toContain("WHPX: Unexpected VP exit code 4"); - expect(error.serialOutput).toContain("Booting from Hard Disk"); - expect(error.message).toContain("The serial console ends with: SeaBIOS"); - }); - - it("passes a guest that cannot prove it holds the token on as it is, at once", async () => { - const started = await manager.start(spec); - await expect(manager.waitForGuestHealth(DOT, started.guestPort, "wrong-token", { intervalMs: 1, timeoutMs: 1000 })).rejects.toSatisfy( - (error: unknown) => error instanceof GuestRequestError && error.code === "guest_unproven", - ); - }); -}); - -describe("helpers", () => { - it("builds a spec from a Dot config", () => { - const built = vmSpecFromConfig(DOT, { computer: { cpu: 2, memory: "4gb", disk: "40gb", idle_timeout: "15m" } }, { - token: "t", - goldenImage: "/g", - runtimeImage: "/r", - }); - expect(built).toEqual({ dotId: DOT, token: "t", goldenImage: "/g", runtimeImage: "/r", cpus: 2, memoryMiB: 4096, diskBytes: 40 * 1024 ** 3 }); - }); - - it("generates distinct url-safe tokens", () => { - const a = generateToken(); - expect(a).toMatch(/^[A-Za-z0-9_-]{43}$/); - expect(generateToken()).not.toBe(a); - }); - - it("rejects snapshots as out of scope", async () => { - await expect(manager.createSnapshot(DOT, "s")).rejects.toBeInstanceOf(NotImplementedError); - await expect(manager.listSnapshots(DOT)).rejects.toThrow(/out of scope/); - await expect(manager.restoreSnapshot(DOT, "s")).rejects.toThrow(/section 10/); - await expect(manager.deleteSnapshot(DOT, "s")).rejects.toBeInstanceOf(NotImplementedError); - }); -}); diff --git a/apps/vm-manager/tsconfig.json b/apps/vm-manager/tsconfig.json deleted file mode 100644 index 31a061f4..00000000 --- a/apps/vm-manager/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] -} diff --git a/apps/web/.gitignore b/apps/web/.gitignore deleted file mode 100644 index 61350467..00000000 --- a/apps/web/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.next/ -next-env.d.ts -# Playwright's output: traces of a failed run, and the JUnit report CI reads -test-results/ -playwright-report.xml diff --git a/apps/web/e2e/activity.spec.ts b/apps/web/e2e/activity.spec.ts deleted file mode 100644 index 6d23ecfa..00000000 --- a/apps/web/e2e/activity.spec.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { readFile } from "node:fs/promises"; -import type { OutboundEventDataMap, StoredEvent } from "@invisible-dots/shared"; -import { expect, test } from "./fixtures.js"; -import { lookOf } from "./look.js"; - -/** A tool call as the engine reports it once it has ended. */ -function called(tool: string, target: string, change: Partial = {}): OutboundEventDataMap["tool.called"] { - return { tool, permission: "computer.exec", decision: "allow", ok: true, duration_ms: 40, target, ...change }; -} - -const PAGE = 200; - -test("the Activity tab reads the log as lines, filters by family at the host, follows the Dot live, and the old Timeline address leads to it", async ({ page, harness }) => { - const dot = await harness.createDot("activity-lines"); - const guest = harness.driver.guestOf(dot.id); - guest.emit("tool.called", called("exec", "ls -la /home/dot")); - guest.emit("browser.identity.created", { identity_id: "bi_fares", name: "fares.md" }); - guest.emit("tool.called", called("exec", "rm -rf /", { decision: "deny", ok: false, duration_ms: 0 })); - await harness.api.sendMessage(dot.id, "hello there"); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["tool.called", "browser.identity.created"] })).length).toBe(3); - - // The old Timeline address leads here, and the tab is in the bar. - await page.goto(`${harness.webUrl}/dots/${dot.id}/timeline`); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/activity$`)); - await expect(page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Activity" })).toHaveAttribute("aria-current", "page"); - await expect(page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Timeline" })).toHaveCount(0); - - const rows = page.getByRole("list", { name: "Events" }).getByRole("listitem"); - await expect(rows.filter({ hasText: "Ran a command" })).toHaveCount(2); - const allowed = rows.filter({ hasText: "ls -la /home/dot" }); - await expect(allowed).toContainText("done in 40 ms | exec [computer.exec] allow"); - // The refused call is a warning line (the config refused it; nothing failed), and says it never ran. - const refused = rows.filter({ hasText: "rm -rf /" }); - await expect(refused).toContainText("denied in 0 ms | exec [computer.exec] deny"); - await expect(refused).toHaveAttribute("data-tone", "warn"); - await expect(rows.filter({ hasText: "You sent a message" })).toContainText("hello there"); - // The engine's own start, in words, not as empty data. - await expect(rows.filter({ hasText: "The engine started" })).toContainText("The key was sent again"); - // The data under a line is the event as stored. - await allowed.getByText("Data", { exact: true }).click(); - await expect(allowed.getByLabel(/^Data of event/)).toContainText('"target": "ls -la /home/dot"'); - - // A family narrows what the host is asked for. - const asked: string[] = []; - page.on("request", (request) => { - if (/\/api\/dots\/[^/]+\/events\?/.test(request.url())) asked.push(new URL(request.url()).search); - }); - await page.getByRole("button", { name: "Browser", exact: true }).click(); - await expect(rows).toHaveCount(1); - await expect(rows.first()).toContainText("fares.md"); - expect(asked.some((search) => search.includes("browser.identity.created") && search.includes("order=desc"))).toBe(true); - - // Live: an event of the chosen family arrives on top, one of another family does not. - guest.emit("agent.state", { state: "THINKING" }); - guest.emit("browser.identity.created", { identity_id: "bi_rome", name: "trips/rome.md" }); - await expect(rows).toHaveCount(2); - await expect(rows.first()).toContainText("trips/rome.md"); - await expect(page.getByRole("list", { name: "Events" }).getByText("THINKING")).toHaveCount(0); - - // Search the lines read. - await page.getByRole("button", { name: "All" }).click(); - await page.getByRole("searchbox", { name: "Search the events read so far" }).fill("ROME"); - await expect(rows).toHaveCount(1); - await page.getByRole("searchbox", { name: "Search the events read so far" }).fill(""); -}); - -test("a long log is read a page at a time from the newest, with nothing skipped or repeated, and the oldest first when asked", async ({ page, harness }) => { - const dot = await harness.createDot("activity-paging"); - const guest = harness.driver.guestOf(dot.id); - const total = 2 * PAGE + 30; - for (let i = 0; i < total; i++) guest.emit("browser.identity.created", { identity_id: `bi_${i}`, name: `note-${String(i).padStart(4, "0")}.md` }); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["browser.identity.created"], order: "desc", limit: 1 }))[0]?.data.name).toBe(`note-${String(total - 1).padStart(4, "0")}.md`); - - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - await page.getByRole("button", { name: "Browser", exact: true }).click(); - const rows = page.getByRole("list", { name: "Events" }).getByRole("listitem"); - await expect(rows).toHaveCount(PAGE); - await expect(rows.first()).toContainText(`note-${String(total - 1).padStart(4, "0")}.md`); - await page.getByRole("button", { name: "Load older events" }).click(); - await expect(rows).toHaveCount(2 * PAGE); - await page.getByRole("button", { name: "Load older events" }).click(); - await expect(rows).toHaveCount(total); - await expect(page.getByText("That is the start of the log.")).toBeVisible(); - await expect(page.getByRole("button", { name: "Load older events" })).toHaveCount(0); - const keys = await rows.evaluateAll((items) => items.map((item) => /note-(\d+)\.md/.exec(item.textContent ?? "")![1])); - expect(keys).toEqual(Array.from({ length: total }, (_, i) => String(total - 1 - i).padStart(4, "0"))); - - await page.getByRole("switch", { name: "Newest first" }).click(); - await expect(rows.first()).toContainText("note-0000.md"); - await expect(rows.last()).toContainText(`note-${String(total - 1).padStart(4, "0")}.md`); -}); - -test("the events on screen are saved as JSON Lines, as the host stored them", async ({ page, harness }) => { - const dot = await harness.createDot("activity-export"); - const guest = harness.driver.guestOf(dot.id); - guest.emit("browser.identity.created", { identity_id: "bi_a", name: "a.md" }); - guest.emit("browser.identity.created", { identity_id: "bi_b", name: "b.md" }); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["browser.identity.created"] })).length).toBe(2); - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - await page.getByRole("button", { name: "Browser", exact: true }).click(); - await expect(page.getByRole("list", { name: "Events" }).getByRole("listitem")).toHaveCount(2); - - const stored = await harness.api.events(dot.id, { types: ["browser.identity.created"] }); - const [download] = await Promise.all([page.waitForEvent("download"), page.getByRole("button", { name: "Export 2 events" }).click()]); - expect(download.suggestedFilename()).toBe(`${dot.id}-events-${stored[0]!.id}-${stored[1]!.id}.jsonl`); - const text = await readFile((await download.path())!, "utf8"); - expect(text.trimEnd().split("\n").map((line) => JSON.parse(line) as StoredEvent)).toEqual(stored); -}); - -test("the Activity page is usable from the keyboard alone, and fits a phone", async ({ page, harness }) => { - const dot = await harness.createDot("activity-keys"); - const guest = harness.driver.guestOf(dot.id); - guest.emit("tool.called", called("exec", "a very long command ".repeat(20))); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["tool.called"] })).length).toBe(1); - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - const rows = page.getByRole("list", { name: "Events" }).getByRole("listitem"); - await expect(rows.filter({ hasText: "Ran a command" })).toHaveCount(1); - - // A family is chosen with the keyboard, and the line's data opens with it. - await page.getByRole("button", { name: "Tools" }).focus(); - await page.keyboard.press("Enter"); - await expect(page.getByRole("button", { name: "Tools" })).toHaveAttribute("aria-pressed", "true"); - await page.getByRole("switch", { name: "Newest first" }).focus(); - await page.keyboard.press("Space"); - await expect(page.getByRole("switch", { name: "Newest first" })).not.toBeChecked(); - const data = rows.first().locator("summary"); - await data.focus(); - await page.keyboard.press("Enter"); - await expect(rows.first().getByLabel(/^Data of event/)).toBeVisible(); - - await page.setViewportSize({ width: 390, height: 844 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - await expect(rows.filter({ hasText: "Ran a command" })).toHaveCount(1); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBe(0); -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the Activity page is readable in ${scheme}: the chips, the lines, the notes under them`, async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`activity-look-${scheme}`); - const guest = harness.driver.guestOf(dot.id); - guest.emit("tool.called", called("exec", "ls")); - guest.emit("tool.called", called("exec", "rm", { decision: "deny", ok: false })); - await harness.control.scheduler.sendMessage(dot.id, "from the phone", { channel: "telegram", binding_id: "b", chat_id: "1", external_id: "2" }); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["tool.called"] })).length).toBe(2); - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - await expect(page.getByRole("list", { name: "Events" }).getByRole("listitem").filter({ hasText: "via Telegram" })).toBeVisible(); - - const spots: Record = { - "a family that is not chosen": "button[aria-pressed=false]:text-is('Tools')", - "the family that is chosen": "button[aria-pressed=true]:text-is('All')", - "the count": "p[role=status]", - "a line's title": "li[data-testid=activity-row] span.text-sm", - "a line's detail": "li[data-testid=activity-row] p", - "a line's type": "li[data-testid=activity-row] code", - "the time of a line": "li[data-testid=activity-row] time", - "the channel chip": "li[data-testid=activity-row] [data-slot=badge]", - "the way to the data": "li[data-testid=activity-row] summary", - }; - for (const [name, selector] of Object.entries(spots)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - }); -} diff --git a/apps/web/e2e/channels.spec.ts b/apps/web/e2e/channels.spec.ts deleted file mode 100644 index 9cb862aa..00000000 --- a/apps/web/e2e/channels.spec.ts +++ /dev/null @@ -1,300 +0,0 @@ -import type { Page } from "@playwright/test"; -import { expect, test } from "./fixtures.js"; -import type { Harness } from "./harness.js"; -import { lookOf } from "./look.js"; - -/** A token as @BotFather makes them: the bot's id, a colon, a secret. The Bot API of the harness knows the bots a test adds. */ -function makeBot(harness: Harness, id: number, username: string): string { - const token = `${id}:E2E-SECRET-${username.replace(/\W/g, "")}-0123456789`; - harness.bots.addBot(token, username); - return token; -} - -// The Dots of these tests are marks on every page of the shared host (a channel to link again counts for the Inbox -// and the title), so each test removes its own, and the other specs find the host as they expect. -test.afterEach(async ({ harness }) => { - for (const dot of await harness.api.listDots()) if (dot.name.startsWith("channels-")) await harness.api.deleteDot(dot.id); -}); - -const channelsTab = (page: Page) => page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: /^Channels/ }); -const telegram = (page: Page) => page.getByRole("region", { name: "Telegram" }); -const whatsapp = (page: Page) => page.getByRole("region", { name: "WhatsApp" }); - -/** The pairing code in the link of a card's "Open ..." button. */ -async function codeOf(page: Page, name: "Open Telegram" | "Open WhatsApp"): Promise { - const href = await page.getByRole("link", { name }).getAttribute("href"); - const code = /(?:start=|pair(?:%20|\+| )?)([A-Z0-9]+)$/.exec(href ?? "")?.[1]; - if (!code) throw new Error(`no pairing code in ${href}`); - return code; -} - -test("the Channels tab connects Telegram, pairs a person with the code, and carries their messages to the chat and the answers back", async ({ page, harness }) => { - const dot = await harness.createDot("channels-telegram"); - const token = makeBot(harness, 700001, "e2e_fares_bot"); - const ann = { id: 4242, first_name: "Ann" }; - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - - await channelsTab(page).click(); - await expect(page).toHaveURL(/\/channels$/); - await expect(page.getByRole("heading", { level: 1, name: "channels-telegram" })).toBeVisible(); - await expect(telegram(page).getByText("Not connected")).toBeVisible(); - - // The token is checked with Telegram and then forgotten by the page. - await telegram(page).getByLabel("Bot token").fill(token); - await telegram(page).getByRole("button", { name: "Connect Telegram" }).click(); - await expect(telegram(page).getByText("Connected")).toBeVisible(); - await expect(telegram(page).getByRole("link", { name: "@e2e_fares_bot" })).toHaveAttribute("href", "https://t.me/e2e_fares_bot"); - await expect(page.locator("body")).not.toContainText("E2E-SECRET"); - await expect(page.getByLabel("Bot token")).toHaveCount(0); - expect(JSON.stringify(await harness.api.channels(dot.id))).not.toContain("E2E-SECRET"); - - // Link: the deep link, its QR code and the words to type, with the code counting down. - await telegram(page).getByRole("button", { name: "Link your Telegram" }).click(); - const open = telegram(page).getByRole("link", { name: "Open Telegram" }); - await expect(open).toHaveAttribute("href", /^https:\/\/t\.me\/e2e_fares_bot\?start=[A-Z0-9]+$/); - await expect(telegram(page).getByRole("img", { name: "QR code that opens Telegram with the pairing code" })).toBeVisible(); - await expect(telegram(page).getByRole("timer")).toHaveText(/^Expires in (10:00|9:\d\d)\.$/); - const code = await codeOf(page, "Open Telegram"); - await expect(telegram(page).getByText(`/start ${code}`)).toBeVisible(); - - // A stranger who writes first is not paired and not answered; the person who sends the code is. - harness.bots.say(token, "hello?", { id: 999, first_name: "Stranger" }); - harness.bots.say(token, `/start ${code}`, ann); - const people = telegram(page).getByRole("region", { name: "People paired on Telegram" }); - await expect(people.getByRole("listitem")).toHaveCount(1); - await expect(people.getByRole("listitem")).toContainText("Ann"); - await expect(people.getByRole("listitem")).toContainText("Owner"); - await expect(telegram(page).getByText(`/start ${code}`)).toHaveCount(0); - await expect(page.getByText("Ann is paired on Telegram.")).toBeVisible(); - expect(harness.bots.sent(token, 999)).toEqual([]); - - // What Ann writes arrives in the chat with where it came from; the Dot's answer goes back to her chat. - harness.bots.say(token, "Is the 9 am flight still the cheapest?", ann); - await page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Chat" }).click(); - const bubble = page.getByRole("article", { name: "You" }).filter({ hasText: "Is the 9 am flight still the cheapest?" }); - await expect(bubble.getByText("via Telegram")).toBeVisible(); - await expect(page.getByRole("log").getByRole("article", { name: "channels-telegram" }).getByText("echo: Is the 9 am flight still the cheapest?")).toBeVisible(); - await expect.poll(() => harness.bots.sent(token, 4242).map((message) => message.text)).toContain("echo: Is the 9 am flight still the cheapest?"); - - // The same message is in the Activity log with its chip. - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - await expect(page.getByRole("list", { name: "Events" }).getByRole("listitem").filter({ hasText: "via Telegram" })).toBeVisible(); -}); - -test("the switches of a channel are saved and kept, a person is revoked and Telegram is disconnected, each after asking where it is final", async ({ page, harness }) => { - const dot = await harness.createDot("channels-settings"); - const token = makeBot(harness, 700002, "e2e_settings_bot"); - await harness.api.putTelegramChannel(dot.id, token); - const code = (await harness.api.pairChannel(dot.id, "telegram")).code; - harness.bots.say(token, `/start ${code}`, { id: 5151, first_name: "Bea" }); - await expect.poll(async () => (await harness.api.channels(dot.id))[0]?.peers.length).toBe(1); - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - - const show = telegram(page).getByRole("switch", { name: "Show what the Dot wants to run" }); - // A new channel has everything on. - await expect(show).toHaveAttribute("aria-checked", "true"); - await show.click(); - await expect(show).toHaveAttribute("aria-checked", "false"); - await telegram(page).getByRole("switch", { name: "Tell me when a task ends" }).click(); - await expect(telegram(page).getByRole("switch", { name: "Tell me when a task ends" })).toHaveAttribute("aria-checked", "false"); - expect((await harness.api.channels(dot.id))[0]!.settings).toEqual({ approvals: true, notify_tasks: false, show_arguments: false }); - // Kept: the host has them, so a reload shows them. - await page.reload(); - await expect(telegram(page).getByRole("switch", { name: "Show what the Dot wants to run" })).toHaveAttribute("aria-checked", "false"); - await expect(telegram(page).getByRole("switch", { name: "Tell me when a task ends" })).toHaveAttribute("aria-checked", "false"); - - await telegram(page).getByRole("button", { name: "Pause" }).click(); - await expect(telegram(page).getByText("Paused")).toBeVisible(); - await telegram(page).getByRole("button", { name: "Resume" }).click(); - await expect(telegram(page).getByText("Connected")).toBeVisible(); - - // Revoked: the host drops her, and the bot no longer answers her. - await telegram(page).getByRole("button", { name: "Revoke Bea" }).click(); - await page.getByRole("dialog", { name: "Revoke Bea?" }).getByRole("button", { name: "Revoke" }).click(); - await expect(telegram(page).getByText(/Nobody yet/)).toBeVisible(); - expect((await harness.api.channels(dot.id))[0]!.peers).toEqual([]); - - await telegram(page).getByRole("button", { name: "Disconnect" }).click(); - await expect(page.getByRole("dialog", { name: "Disconnect Telegram?" })).toBeVisible(); - expect(await harness.api.channels(dot.id)).toHaveLength(1); - await page.getByRole("dialog", { name: "Disconnect Telegram?" }).getByRole("button", { name: "Disconnect" }).click(); - await expect(telegram(page).getByLabel("Bot token")).toBeVisible(); - expect(await harness.api.channels(dot.id)).toEqual([]); -}); - -// The Inbox counts what needs the person across every Dot, so this test has a host of its own (`fresh`) and leaves it -// empty, as the Inbox's own tests expect to find it. -test.describe("a channel that has to be linked again", () => { - test.afterEach(async ({ fresh }) => { - for (const dot of await fresh.api.listDots()) await fresh.api.deleteDot(dot.id); - await expect.poll(async () => (await fresh.api.listDots()).length).toBe(0); - }); - - test("a Telegram token that was revoked puts the Dot in the rail, the tab and the Inbox, and a new token clears them", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("channels-relink"); - const token = makeBot(harness, 700003, "e2e_relink_bot"); - const next = makeBot(harness, 700004, "e2e_relink_two_bot"); - await harness.api.putTelegramChannel(dot.id, token); - const code = (await harness.api.pairChannel(dot.id, "telegram")).code; - harness.bots.say(token, `/start ${code}`, { id: 6161, first_name: "Cy" }); - await expect.poll(async () => (await harness.api.channels(dot.id))[0]?.peers.length).toBe(1); - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - await expect(telegram(page).getByText("Connected")).toBeVisible(); - await expect(page.getByLabel("Telegram needs linking again")).toHaveCount(0); - - // Revoked in @BotFather: the next poll is refused, and the page hears it without a reload. - harness.bots.revoke(token); - await expect(telegram(page).getByText("Telegram needs a new token")).toBeVisible(); - await expect(telegram(page).getByText("Needs linking again")).toBeVisible(); - // The Dot is marked in the rail and on its Channels tab, and the Inbox counts it. - await expect(page.getByRole("navigation", { name: "Dots" }).getByLabel("Telegram needs linking again")).toBeVisible(); - await expect(channelsTab(page).getByLabel("needs linking again")).toBeVisible(); - await expect(page.getByRole("link", { name: /^Inbox/ }).getByLabel("1 need you")).toBeVisible(); - await expect(telegram(page).getByRole("listitem").filter({ hasText: "Cy" })).toBeVisible(); - await page.getByRole("link", { name: /^Inbox/ }).click(); - const card = page.getByRole("article", { name: "Telegram of channels-relink needs linking again" }); - await expect(card).toBeVisible(); - await card.getByRole("link", { name: "Open channels" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/channels$`)); - - // A new token: the channel starts again, the person paired stays, and nothing marks the Dot any more. - await telegram(page).getByLabel("New bot token").fill(next); - await telegram(page).getByRole("button", { name: "Use this token" }).click(); - await expect(telegram(page).getByText("Connected")).toBeVisible(); - await expect(telegram(page).getByRole("link", { name: "@e2e_relink_two_bot" })).toBeVisible(); - await expect(telegram(page).getByRole("listitem").filter({ hasText: "Cy" })).toBeVisible(); - await expect(page.getByLabel("Telegram needs linking again")).toHaveCount(0); - await expect(page.getByRole("link", { name: /^Inbox/ }).getByLabel(/need you/)).toHaveCount(0); - }); - - for (const how of ["pauses it", "disconnects it"] as const) { - test(`the marks go as soon as the person ${how}, without a reload`, async ({ page, fresh: harness }) => { - const dot = await harness.createDot("channels-relink"); - const token = makeBot(harness, how === "pauses it" ? 700005 : 700006, how === "pauses it" ? "e2e_pause_bot" : "e2e_remove_bot"); - await harness.api.putTelegramChannel(dot.id, token); - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - await expect(telegram(page).getByText("Connected")).toBeVisible(); - harness.bots.revoke(token); - await expect(telegram(page).getByText("Telegram needs a new token")).toBeVisible(); - await expect(channelsTab(page).getByLabel("needs linking again")).toBeVisible(); - await expect(page.getByRole("link", { name: /^Inbox/ }).getByLabel("1 need you")).toBeVisible(); - - if (how === "pauses it") { - await telegram(page).getByRole("button", { name: "Pause" }).click(); - await expect(telegram(page).getByText("Paused")).toBeVisible(); - } else { - await telegram(page).getByRole("button", { name: "Disconnect" }).click(); - await page.getByRole("dialog", { name: "Disconnect Telegram?" }).getByRole("button", { name: "Disconnect" }).click(); - await expect(telegram(page).getByText("Not connected")).toBeVisible(); - } - await expect(channelsTab(page).getByLabel("needs linking again")).toHaveCount(0); - await expect(page.getByRole("navigation", { name: "Dots" }).getByLabel("Telegram needs linking again")).toHaveCount(0); - await expect(page.getByRole("link", { name: /^Inbox/ }).getByLabel(/need you/)).toHaveCount(0); - }); - } -}); - -test("WhatsApp is linked by scanning the codes the host makes, then pairs a person and carries their messages", async ({ page, harness }) => { - const dot = await harness.createDot("channels-whatsapp"); - const made = harness.whatsapp.connections.length; - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - - await expect(whatsapp(page).getByText("Read this before you link a number")).toBeVisible(); - await expect(whatsapp(page).getByText(/can answer by banning the linked number/)).toBeVisible(); - await whatsapp(page).getByRole("button", { name: "Link WhatsApp" }).click(); - await expect.poll(() => harness.whatsapp.connections.length).toBe(made + 1); - - // Each code the host makes is drawn; the next one replaces it. - const qr = whatsapp(page).getByRole("img", { name: "QR code to link WhatsApp" }); - harness.whatsapp.current.showCode("2@e2e-code-one,AAAA,BBBB"); - await expect(qr).toBeVisible(); - await expect(whatsapp(page).getByText("Scan this code with the phone that has the number")).toBeVisible(); - const first = await qr.locator("path").getAttribute("d"); - harness.whatsapp.current.showCode("2@e2e-code-two,CCCC,DDDD"); - await expect.poll(() => qr.locator("path").getAttribute("d")).not.toBe(first); - - // The phone scanned it. - harness.whatsapp.current.open("15550001111"); - await expect(whatsapp(page).getByText("People paired")).toBeVisible(); - await expect(whatsapp(page).getByText("Connected")).toBeVisible(); - await expect(whatsapp(page).getByText("+15550001111")).toBeVisible(); - await expect(qr).toHaveCount(0); - expect((await harness.api.channels(dot.id))[0]).toMatchObject({ kind: "whatsapp", status: "connected", account: "15550001111" }); - - // Pair with the words, from a phone; then a message from it reaches the chat and the answer goes back. - await whatsapp(page).getByRole("button", { name: "Link your WhatsApp" }).click(); - const code = await codeOf(page, "Open WhatsApp"); - await expect(whatsapp(page).getByText(`pair ${code}`)).toBeVisible(); - const phone = "393331112222@s.whatsapp.net"; - harness.whatsapp.current.receive(phone, `pair ${code}`, { senderName: "Dee" }); - const people = whatsapp(page).getByRole("region", { name: "People paired on WhatsApp" }); - await expect(people.getByRole("listitem")).toContainText("Dee"); - harness.whatsapp.current.receive(phone, "Any news on the fares?", { senderName: "Dee" }); - await page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Chat" }).click(); - await expect(page.getByRole("article", { name: "You" }).filter({ hasText: "Any news on the fares?" }).getByText("via WhatsApp")).toBeVisible(); - await expect.poll(() => harness.whatsapp.current.texts(phone)).toContain("echo: Any news on the fares?"); -}); - -test("a WhatsApp link that fails says why and starts over", async ({ page, harness }) => { - const dot = await harness.createDot("channels-whatsapp-failed"); - const made = harness.whatsapp.connections.length; - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - await whatsapp(page).getByRole("button", { name: "Link WhatsApp" }).click(); - await expect.poll(() => harness.whatsapp.connections.length).toBe(made + 1); - harness.whatsapp.current.showCode("2@e2e-failing-code"); - await expect(whatsapp(page).getByRole("img", { name: "QR code to link WhatsApp" })).toBeVisible(); - - // The code was not scanned in time: the connection ends before the link did. - harness.whatsapp.current.end({ reason: "code_expired" }); - await expect(whatsapp(page).getByText("WhatsApp is not linked")).toBeVisible(); - await expect(whatsapp(page).getByText(/the code expired, or the connection dropped, before it was scanned/)).toBeVisible(); - await expect(whatsapp(page).getByRole("img", { name: "QR code to link WhatsApp" })).toHaveCount(0); - // It is a login only the person can redo: the Dot is marked, and the card offers it. - await expect(page.getByRole("navigation", { name: "Dots" }).getByLabel("WhatsApp needs linking again")).toBeVisible(); - - await whatsapp(page).getByRole("button", { name: "Link again" }).click(); - await expect.poll(() => harness.whatsapp.connections.length).toBe(made + 2); - harness.whatsapp.current.showCode("2@e2e-second-try"); - await expect(whatsapp(page).getByRole("img", { name: "QR code to link WhatsApp" })).toBeVisible(); - await expect(whatsapp(page).getByText("WhatsApp is not linked")).toHaveCount(0); -}); - -test("the Channels page fits a phone: no sideways scroll at 390 px, with a pairing code and a long bot name on it", async ({ page, harness }) => { - const dot = await harness.createDot("channels-phone"); - const token = makeBot(harness, 700005, "a_bot_with_a_very_long_name_that_has_no_break_in_it_at_all_bot"); - await harness.api.putTelegramChannel(dot.id, token); - await page.setViewportSize({ width: 390, height: 844 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - await telegram(page).getByRole("button", { name: "Link your Telegram" }).click(); - await expect(telegram(page).getByRole("img", { name: /QR code/ })).toBeVisible(); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBeLessThanOrEqual(0); -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the Channels page is readable in ${scheme}: chips, notes, switches' words, links and the countdown`, async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`channels-look-${scheme}`); - const token = makeBot(harness, scheme === "light" ? 700006 : 700007, `e2e_look_${scheme}_bot`); - await harness.api.putTelegramChannel(dot.id, token); - await page.goto(`${harness.webUrl}/dots/${dot.id}/channels`); - await telegram(page).getByRole("button", { name: "Link your Telegram" }).click(); - await expect(telegram(page).getByRole("timer")).toBeVisible(); - harness.bots.revoke(token); - await expect(telegram(page).getByText("Telegram needs a new token")).toBeVisible(); - - const texts: Record = { - "the state chip": "section[aria-labelledby=channel-telegram] header span:has-text('Needs linking again')", - "the bot link": "section[aria-labelledby=channel-telegram] header a", - "the alert's text": "[data-slot=alert-description] p", - "the hint of the token field": "#telegram-token-hint", - "the countdown": "[role=timer]", - "a switch's words": "section[aria-label='What the channel does'] p", - "the privacy note": "section[aria-labelledby=channel-telegram] p.text-xs:has-text('not end-to-end encrypted')", - "the Pause button": "button:has-text('Pause')", - "the open tab": "nav[aria-label='Dot sections'] a[aria-current=page]", - }; - for (const [name, selector] of Object.entries(texts)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - }); -} diff --git a/apps/web/e2e/chat.spec.ts b/apps/web/e2e/chat.spec.ts deleted file mode 100644 index c59ff7da..00000000 --- a/apps/web/e2e/chat.spec.ts +++ /dev/null @@ -1,298 +0,0 @@ -import type { Locator } from "@playwright/test"; -import type { FakeGuest } from "@invisible-dots/scheduler/testing"; -import type { OutboundEventDataMap } from "@invisible-dots/shared"; -import { expect, test } from "./fixtures.js"; - -/** A tool call as the engine reports it once it has ended. */ -function called(tool: string, target: string, change: Partial = {}): OutboundEventDataMap["tool.called"] { - return { tool, permission: "computer.exec", decision: "allow", ok: true, duration_ms: 120, target, ...change }; -} - -/** A guest that takes a message up, does some work, and keeps the turn open: the test says when it answers. */ -function startTurn(guest: FakeGuest): void { - guest.onInbound = (event, g) => { - if (event.type !== "user.message") return; - g.emit("agent.state", { state: "THINKING" }); - g.emit("tool.called", called("list_dir", "/home/dot/workspace")); - g.emit("tool.called", called("read_file", "/home/dot/workspace/fares.csv")); - }; -} - -test("the person talks to the Dot: the working row follows the turn, the steps sit between the messages, the answer is markdown", async ({ page, harness }) => { - const dot = await harness.createDot("chat-turn"); - const guest = harness.driver.guestOf(dot.id); - startTurn(guest); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - - // A Dot nobody has talked to: ways to begin that fill the box and do not send. - await expect(page.getByRole("heading", { name: "Say hello to chat-turn" })).toBeVisible(); - await expect(page.getByText("Tell it what you need.")).toBeVisible(); - const box = page.getByRole("textbox", { name: "Message" }); - await expect(box).toBeFocused(); - await page.getByRole("button", { name: "What can you do on your computer?" }).click(); - await expect(box).toHaveValue("What can you do on your computer?"); - await box.fill(""); - - // Nothing below reloads the page: this marker would not survive it. - await page.evaluate(() => ((window as unknown as { marker: number }).marker = 11)); - - await box.fill("What is the cheapest fare to Lisbon?"); - await box.press("Enter"); - const log = page.getByRole("log"); - await expect(log.getByRole("article", { name: "You" }).getByText("What is the cheapest fare to Lisbon?")).toBeVisible(); - await expect(box).toHaveValue(""); - await expect(page.getByRole("heading", { name: "Say hello to chat-turn" })).toHaveCount(0); - - // The Dot is mid-turn: its row says so, and names the last thing it did. - const working = log.getByRole("status").filter({ hasText: "Thinking..." }); - await expect(working).toBeVisible(); - await expect(working).toContainText("Last step: read a file /home/dot/workspace/fares.csv"); - const steps = log.getByRole("list", { name: "What the Dot did" }); - await expect(steps.getByTestId("activity-step")).toHaveText(["Listed a folder/home/dot/workspace", "Read a file/home/dot/workspace/fares.csv"]); - - // A note it saves is the call that wrote it, a file of its memory folder: no chip, nothing to open elsewhere. - guest.emit("tool.called", called("write_file", "/home/dot/memory/trips/lisbon.md", { permission: "files.write" })); - await expect(steps.getByTestId("activity-step").last()).toHaveText("Wrote a file/home/dot/memory/trips/lisbon.md"); - await expect(log.getByText("Remembered")).toHaveCount(0); - - // A run of more than three calls folds into one line, which opens on a click: with the three above, seven. - for (const target of ["EUR", "TAP", "Ryanair", "easyJet"]) guest.emit("tool.called", called("grep", target)); - await expect(log.getByRole("button", { name: "7 steps" })).toBeVisible(); - await log.getByRole("button", { name: "7 steps" }).click(); - await expect(log.getByRole("list", { name: "Steps" }).getByTestId("activity-step")).toHaveCount(7); - - guest.emit("message.assistant", { text: "The cheapest is **EUR 41** on Tuesday:\n\n```\nTAP 41 EUR\n```\n\n[the source](https://example.com/fares)" }); - guest.emit("agent.state", { state: "IDLE" }); - const answer = log.getByRole("article", { name: "chat-turn" }); - await expect(answer.locator("strong")).toHaveText("EUR 41"); - await expect(answer.locator("pre")).toHaveText("TAP 41 EUR"); - await expect(answer.getByRole("link", { name: "the source" })).toHaveAttribute("href", "https://example.com/fares"); - await expect(answer.getByRole("link", { name: "the source" })).toHaveAttribute("rel", "noreferrer"); - await expect(working).toHaveCount(0); - - // Steps came before the answer, the question before the steps. - const text = (await log.textContent()) ?? ""; - expect(text.indexOf("What is the cheapest fare")).toBeLessThan(text.indexOf("7 steps")); - expect(text.indexOf("7 steps")).toBeLessThan(text.indexOf("The cheapest is")); - expect(await page.evaluate(() => (window as unknown as { marker: number }).marker)).toBe(11); - - // The conversation comes back as it was on a fresh load: messages from the host, steps from its log. - await page.reload(); - await expect(page.getByRole("log").getByRole("article", { name: "chat-turn" }).locator("strong")).toHaveText("EUR 41"); - await expect(page.getByRole("log").getByRole("button", { name: "7 steps" })).toBeVisible(); -}); - -test("a conversation longer than a page opens on its newest messages, and goes back a page at a time", async ({ page, harness }) => { - const dot = await harness.createDot("chat-long"); - // 60 questions, each answered by the fake guest's echo: 120 messages, one page and a bit. - for (let i = 0; i < 60; i++) await harness.api.sendMessage(dot.id, `question ${i}`); - await expect.poll(async () => (await harness.api.messages(dot.id)).length).toBe(120); - - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - const log = page.getByRole("log"); - await expect(log.getByText("echo: question 59", { exact: true })).toBeVisible(); - await expect(log.getByText("question 0", { exact: true })).toHaveCount(0); - await expect(log.getByRole("article")).toHaveCount(100); - - await page.getByRole("button", { name: "Show earlier messages" }).click(); - await expect(log.getByText("question 0", { exact: true })).toBeVisible(); - await expect(log.getByRole("article")).toHaveCount(120); - await expect(page.getByRole("button", { name: "Show earlier messages" })).toHaveCount(0); - - // What the Dot says next still shows below, after the page that was read. - harness.driver.guestOf(dot.id).emit("message.assistant", { text: "one more, live" }); - await expect(log.getByText("one more, live")).toBeVisible(); -}); - -test("a command that started a terminal session says so in the chat and in the Activity, and one that did not says it ran", async ({ page, harness }) => { - const dot = await harness.createDot("chat-terminal"); - const guest = harness.driver.guestOf(dot.id); - await harness.api.sendMessage(dot.id, "open a python shell"); - guest.emit("tool.called", called("exec", "python3", { tty: true })); - guest.emit("tool.called", called("exec", "ls /home/dot")); - await expect.poll(async () => (await harness.api.events(dot.id, { types: ["tool.called"] })).length).toBe(2); - - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - const steps = page.getByRole("log").getByTestId("activity-step"); - await expect(steps).toHaveText(["Started a terminal sessionpython3", "Ran a commandls /home/dot"]); - - await page.goto(`${harness.webUrl}/dots/${dot.id}/activity`); - const rows = page.getByRole("list", { name: "Events" }).getByRole("listitem"); - await expect(rows.filter({ hasText: "Started a terminal session" })).toHaveCount(1); - await expect(rows.filter({ hasText: "Ran a command" })).toHaveCount(1); -}); - -test("an approval the Dot asks for in the chat is a card where it was asked, the person answers it there, and its answer is a receipt", async ({ page, harness }) => { - const dot = await harness.createDot("chat-approval"); - const guest = harness.driver.guestOf(dot.id); - await harness.api.sendMessage(dot.id, "please delete the old profile"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await expect(page.getByRole("log").getByText("please delete the old profile", { exact: true })).toBeVisible(); - - guest.requestApproval(undefined); - const log = page.getByRole("log"); - const card = log.getByRole("article", { name: "Wants to delete a browser identity" }); - await expect(card).toBeVisible(); - await expect(card.getByText("shop-abc123", { exact: true })).toBeVisible(); - // The Dot's header says it waits for the person too, and links to the Inbox filtered to it. - await expect(page.getByRole("link", { name: "Dot state: Waiting for you" })).toHaveAttribute("href", `/inbox?dot=${dot.id}`); - - await card.getByRole("button", { name: "Allow once" }).click(); - await expect(log.getByText(/^Allowed:/)).toBeVisible(); - await expect(card).toHaveCount(0); - expect((await harness.api.listApprovals("approved")).map((a) => a.dot_id)).toEqual([dot.id]); -}); - -test("the computer panel shows the desktop, where a browser the Dot opens is a window, and nothing else to pick", async ({ page, harness }) => { - const dot = await harness.createDot("chat-panel"); - const guest = harness.driver.guestOf(dot.id); - await page.setViewportSize({ width: 1400, height: 900 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - // There is nothing to open: the computer is always beside the thread. - await expect(page.getByRole("button", { name: "Watch the computer" })).toHaveCount(0); - const panel = page.getByRole("complementary", { name: "Computer" }); - await expect(panel.getByText("The Dot has control. You are watching.")).toBeVisible(); - await expect(panel.getByRole("img", { name: /current picture of the desktop/ })).toHaveAttribute("src", /^blob:/); - // The thread is still beside it, and the person can still write. - await expect(page.getByRole("textbox", { name: "Message" })).toBeVisible(); - - // A browser the Dot opens is a window of that desktop: the panel offers nothing else to watch. - const identity = await harness.api.createIdentity(dot.id, { name: "shopping" }); - guest.launchIdentity(identity.id); - await expect.poll(async () => (await harness.api.listIdentities(dot.id))[0]?.status).toBe("open"); - await expect(panel.getByRole("group", { name: "What to watch" })).toHaveCount(0); - await expect(panel.getByRole("button", { name: /^Browser:/ })).toHaveCount(0); - await expect(panel.getByRole("img", { name: /current picture of the desktop/ })).toBeVisible(); - - // The thread and the computer are side by side, and both reach the bottom of the window (the page's own padding - // below them, no more): the page does not scroll, and nothing is left empty under them. - const thread = page.getByRole("log").locator("xpath=ancestor::div[contains(@class,'rounded-lg')][1]"); - const [left, right] = [await thread.boundingBox(), await panel.boundingBox()]; - expect(left!.x + left!.width).toBeLessThanOrEqual(right!.x); - for (const box of [left!, right!]) expect(900 - (box.y + box.height)).toBeLessThanOrEqual(24); - expect(await page.evaluate(() => document.getElementById("main")!.scrollHeight - document.getElementById("main")!.clientHeight)).toBeLessThanOrEqual(0); - await expectPictureInPlace(panel); -}); - -/** - * The desktop's picture (taller than its place, at 1280 x 800) is drawn whole inside the panel and above its controls: - * it is fitted to the place, never sized by its own pixels, which would push the controls out of view. - */ -async function expectPictureInPlace(panel: Locator) { - const picture = (await panel.getByRole("img", { name: /current picture of the desktop/ }).boundingBox())!; - const [refresh, outer] = [(await panel.getByRole("button", { name: "Refresh" }).boundingBox())!, (await panel.boundingBox())!]; - expect(picture.y + picture.height).toBeLessThanOrEqual(refresh.y); - expect(picture.x + picture.width).toBeLessThanOrEqual(outer.x + outer.width); - expect(refresh.y + refresh.height).toBeLessThanOrEqual(outer.y + outer.height); -} - -test("a stopped computer says so in the panel, and the chat still takes a message", async ({ page, harness }) => { - const dot = await harness.createDot("chat-stopped"); - await harness.api.stopComputer(dot.id); - await page.setViewportSize({ width: 1400, height: 900 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await expect(page.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(page.getByRole("complementary", { name: "Computer" }).getByText(/The computer is stopped/)).toBeVisible(); - await expect(page.getByText(/Sending a message wakes it/)).toBeVisible(); -}); - -test("the chat works from the keyboard and keeps a draft across a reload", async ({ page, harness }) => { - const dot = await harness.createDot("chat-keys"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - const box = page.getByRole("textbox", { name: "Message" }); - await expect(box).toBeFocused(); - await page.keyboard.type("first line"); - await page.keyboard.press("Shift+Enter"); - await page.keyboard.type("second line"); - await expect(box).toHaveValue("first line\nsecond line"); - await expect(page.getByRole("log").getByRole("article", { name: "You" })).toHaveCount(0); - - await page.reload(); - await expect(box).toHaveValue("first line\nsecond line"); - await page.keyboard.press("Enter"); - const bubble = page.getByRole("log").getByRole("article", { name: "You" }); - await expect(bubble).toHaveText(/first line\s*second line/); - await expect(box).toHaveValue(""); - await expect(page.getByRole("log").getByRole("article", { name: "chat-keys" })).toContainText("echo: first line"); - await page.reload(); - await expect(box).toHaveValue(""); -}); - -test("the chat fits a phone: long lines wrap, code scrolls inside its block, and the computer is a strip above the thread", async ({ page, harness }) => { - const dot = await harness.createDot("chat-phone"); - const guest = harness.driver.guestOf(dot.id); - await page.setViewportSize({ width: 390, height: 844 }); - await harness.api.sendMessage(dot.id, "An unbroken line of text that is long enough to wrap on a narrow screen several times over before it ends"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await expect(page.getByRole("log").getByRole("article", { name: "You" })).toBeVisible(); - guest.emit("tool.called", called("read_file", "/home/dot/workspace/a/very/long/path/that/goes/on/and/on/and/on/and/on/and/on/and/file.txt")); - guest.emit("message.assistant", { text: `Here it is:\n\n\`\`\`\n${"x".repeat(200)}\n\`\`\`\n\n| a | b |\n|---|---|\n| ${"y".repeat(120)} | 2 |` }); - await expect(page.getByRole("log").getByRole("article", { name: "chat-phone" }).locator("pre")).toBeVisible(); - const overflow = () => page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth); - expect(await overflow()).toBeLessThanOrEqual(0); - - const panel = page.getByRole("complementary", { name: "Computer" }); - await expect(panel.getByRole("img", { name: /current picture of the desktop/ })).toHaveAttribute("src", /^blob:/); - const box = page.getByRole("textbox", { name: "Message" }); - await expect(box).toBeVisible(); - expect((await panel.boundingBox())!.y).toBeLessThan((await box.boundingBox())!.y); - await expectPictureInPlace(panel); - expect(await overflow()).toBeLessThanOrEqual(0); -}); - -test("the user's bubble and the Dot's words are readable in light and in dark", async ({ page, harness }) => { - const dot = await harness.createDot("chat-look"); - await harness.api.sendMessage(dot.id, "hello there"); - for (const scheme of ["light", "dark"] as const) { - await page.emulateMedia({ colorScheme: scheme }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await expect(page.getByRole("log").getByRole("article", { name: "chat-look" })).toContainText("echo: hello there"); - const ratio = await page.getByRole("log").getByRole("article", { name: "You" }).locator("p").evaluate((element) => { - const context = document.createElement("canvas").getContext("2d", { willReadFrequently: true })!; - const rgb = (color: string): number[] => { - context.clearRect(0, 0, 1, 1); - context.fillStyle = color; - context.fillRect(0, 0, 1, 1); - return [...context.getImageData(0, 0, 1, 1).data].slice(0, 3); - }; - const luminance = (channels: number[]) => { - const [r = 0, g = 0, b = 0] = channels.map((value) => { - const s = value / 255; - return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4; - }); - return 0.2126 * r + 0.7152 * g + 0.0722 * b; - }; - const style = getComputedStyle(element); - const [high = 0, low = 0] = [luminance(rgb(style.color)), luminance(rgb(style.backgroundColor))].sort((a, b) => b - a); - return (high + 0.05) / (low + 0.05); - }); - expect(ratio, scheme).toBeGreaterThanOrEqual(4.5); - } -}); - -test("a Dot opened by its name moves to its id, and the chat hears the Dot live", async ({ page, harness }) => { - const dot = await harness.createDot("chat-by-name"); - const guest = harness.driver.guestOf(dot.id); - await page.goto(`${harness.webUrl}/dots/chat-by-name/chat`); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/chat$`)); - await expect(page.getByRole("heading", { level: 1, name: "chat-by-name" })).toBeVisible(); - await expect(page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Chat" })).toHaveAttribute("aria-current", "page"); - - guest.emit("agent.state", { state: "THINKING" }); - await expect(page.getByRole("log").getByRole("status").filter({ hasText: "Thinking..." })).toBeVisible(); - guest.emit("message.assistant", { text: "Heard on the id." }); - await expect(page.getByRole("log").getByRole("article", { name: "chat-by-name" }).getByText("Heard on the id.")).toBeVisible(); -}); - -test("a message that came through a chat says which one, and one typed here says nothing", async ({ page, harness }) => { - const dot = await harness.createDot("chat-origin"); - const origin = { channel: "telegram", binding_id: "bind_e2e", chat_id: "4242", external_id: "99:1" } as const; - await harness.control.scheduler.sendMessage(dot.id, "Is the 9 am flight still the cheapest?", origin); - await harness.control.scheduler.sendMessage(dot.id, "And the one on Friday?"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - - const phone = page.getByRole("article", { name: "You" }).filter({ hasText: "Is the 9 am flight still the cheapest?" }); - await expect(phone.getByText("via Telegram")).toBeVisible(); - await expect(page.getByRole("article", { name: "You" }).filter({ hasText: "And the one on Friday?" })).toBeVisible(); - await expect(page.getByText(/^via /)).toHaveCount(1); -}); diff --git a/apps/web/e2e/computer.spec.ts b/apps/web/e2e/computer.spec.ts deleted file mode 100644 index ad597018..00000000 --- a/apps/web/e2e/computer.spec.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { expect, test } from "./fixtures.js"; -import { lookOf } from "./look.js"; - -test("the Computer page shows the screen, the files and what the computer uses", async ({ page, harness }) => { - const dot = await harness.createDot("computer-views"); - const guest = harness.driver.guestOf(dot.id); - guest.putFile("/home/dot/notes.txt", "Remember the milk.\n"); - guest.putFile("/home/dot/memory/trips/rome.md", "Rome in May"); - guest.putFile("/home/dot/shot.png", Uint8Array.from([0x89, 0x50, 0x4e, 0x47])); - guest.putFile("/home/dot/archive.zip", Uint8Array.from([0x50, 0x4b, 3, 4])); - await page.goto(`${harness.webUrl}/dots/${dot.id}/computer`); - - await expect(page.getByRole("link", { name: "Computer", exact: true })).toHaveAttribute("aria-current", "page"); - await expect(page.getByRole("link", { name: "Browser identities" })).toHaveCount(0); - - // Screen: a live picture, and no pretence of control. - await expect(page.getByRole("img", { name: /current picture of the desktop/ })).toHaveAttribute("src", /^blob:/); - await expect(page.getByText("The Dot has control. You are watching.")).toBeVisible(); - await expect(page.getByText("LIVE", { exact: true })).toBeVisible(); - - // Files: folders first, a folder opens, a text file shows its text, and the way back is a link. - const views = page.getByRole("navigation", { name: "Computer views" }); - await views.getByRole("link", { name: "Files" }).click(); - await expect(page).toHaveURL(/view=files$/); - const table = page.getByRole("table"); - await expect(table.getByRole("row")).toHaveCount(5); - await expect(table.getByRole("row").nth(1)).toContainText("memory"); - await table.getByRole("link", { name: /^memory/ }).click(); - await table.getByRole("link", { name: /^trips/ }).click(); - await table.getByRole("link", { name: "rome.md" }).click(); - await expect(page.getByLabel("Contents of rome.md")).toHaveText("Rome in May"); - await expect(page.getByRole("navigation", { name: "Folder" }).getByRole("link")).toHaveText(["Home", "memory", "trips"]); - await page.getByRole("navigation", { name: "Folder" }).getByRole("link", { name: "Home" }).click(); - await expect(page).toHaveURL(/path=%2Fhome%2Fdot$/); - - // A reload lands on the same file: the address holds it. - await table.getByRole("link", { name: "notes.txt" }).click(); - await expect(page.getByLabel("Contents of notes.txt")).toHaveText("Remember the milk."); - await page.reload(); - await expect(page.getByLabel("Contents of notes.txt")).toHaveText("Remember the milk."); - - await table.getByRole("link", { name: "shot.png" }).click(); - await expect(page.getByRole("img", { name: "The picture shot.png" })).toHaveAttribute("src", /^blob:/); - - // Nothing but a download for what a page does not show. - await table.getByRole("link", { name: "archive.zip" }).click(); - const preview = page.getByRole("region", { name: "File archive.zip" }); - await expect(preview.getByText(/not shown here/)).toBeVisible(); - const download = page.waitForEvent("download"); - await preview.getByRole("button", { name: "Download" }).click(); - expect((await download).suggestedFilename()).toBe("archive.zip"); - - // A folder that is not there says so, and leads home. - await page.goto(`${harness.webUrl}/dots/${dot.id}/computer?view=files&path=/home/dot/nowhere`); - await expect(page.getByRole("alert").getByText("This folder does not exist (any more).")).toBeVisible(); - await page.getByRole("link", { name: "Go to the home folder" }).click(); - await expect(page.getByRole("table")).toBeVisible(); - - // Usage: given and used, the images, and the actions the state allows. - await views.getByRole("link", { name: "Usage" }).click(); - await expect(page.getByRole("meter", { name: "Memory used" })).toHaveAttribute("aria-valuenow", "25"); - await expect(page.getByRole("meter", { name: "Disk used" })).toHaveAttribute("aria-valuenow", "13"); - await expect(page.getByRole("region", { name: "Given to the computer" }).getByText("15m")).toBeVisible(); - await expect(page.getByRole("region", { name: "Images" })).toContainText("golden-"); - await expect(page.getByRole("region", { name: "Model spend" })).toContainText("$0.00"); - await expect(page.getByRole("button", { name: "Start", exact: true })).toBeDisabled(); - // The Dot's automations are the Dot's own: the page says when the next one is due (none is yet). - await expect(page.getByRole("region", { name: "Automations" })).toContainText("No automation is due."); - // The engine reports a run that is due: that is what the person's stop then holds back (a Dot with no automation has nothing to pause). - guest.emit("automation.next_run", { next_run_at_ms: Date.now() + 6 * 60 * 60 * 1000 }); - await expect(page.getByRole("region", { name: "Automations" })).toContainText("Next automation:"); - // Stopping asks, and says what it costs. - page.once("dialog", (dialog) => { - expect(dialog.message()).toContain("Its automations do not run while it is stopped"); - void dialog.accept(); - }); - await page.getByRole("button", { name: "Stop", exact: true }).click(); - await expect(page.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(page.getByRole("region", { name: "Automations" })).toContainText("Paused: you stopped this computer, so its automations do not run"); - await expect(page.getByRole("button", { name: "Start", exact: true })).toBeEnabled(); - await expect(page.getByText("What it uses is shown while the computer runs.")).toBeVisible(); -}); - -test("a stopped computer says so on the screen and the files, and starts from there", async ({ page, harness }) => { - const dot = await harness.createDot("computer-stopped"); - harness.driver.guestOf(dot.id).putFile("/home/dot/notes.txt", "hello"); - await harness.api.stopComputer(dot.id); - await page.goto(`${harness.webUrl}/dots/${dot.id}/computer`); - await expect(page.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(page.getByRole("status").filter({ hasText: "Start the computer to see its screen" })).toBeVisible(); - const views = page.getByRole("navigation", { name: "Computer views" }); - await expect(views.getByRole("link", { name: "Browser" })).toHaveCount(0); - await views.getByRole("link", { name: "Files" }).click(); - await expect(page.getByRole("status").filter({ hasText: "Start the computer to see its files" })).toBeVisible(); - - await page.getByRole("button", { name: "Start the computer" }).click(); - await expect(page.getByRole("link", { name: "notes.txt" })).toBeVisible(); - await expect(page.getByRole("button", { name: /^Computer: Running/ })).toBeVisible(); -}); - -test("the Computer page fits a phone: no sideways scroll at 390 px", async ({ page, harness }) => { - const dot = await harness.createDot("computer-phone"); - const guest = harness.driver.guestOf(dot.id); - guest.putFile("/home/dot/a-file-with-a-very-long-name-that-has-no-break-in-it-at-all-and-keeps-going-and-going.txt", "x"); - await page.setViewportSize({ width: 390, height: 844 }); - const overflow = () => page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth); - - await page.goto(`${harness.webUrl}/dots/${dot.id}/computer`); - await expect(page.getByRole("img", { name: /desktop/ })).toBeVisible(); - expect(await overflow()).toBeLessThanOrEqual(0); - for (const view of ["files", "usage"]) { - await page.getByRole("navigation", { name: "Computer views" }).getByRole("link", { name: new RegExp(`^${view}$`, "i") }).click(); - await expect(page).toHaveURL(new RegExp(`view=${view}`)); - if (view === "files") await expect(page.getByRole("table")).toBeVisible(); - if (view === "usage") await expect(page.getByRole("region", { name: "Images" })).toBeVisible(); - expect(await overflow(), view).toBeLessThanOrEqual(0); - } -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the Computer page is readable in ${scheme}: the views bar and the labels of facts`, async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`computer-look-${scheme}`); - await page.goto(`${harness.webUrl}/dots/${dot.id}/computer?view=usage`); - await expect(page.getByRole("region", { name: "Images" })).toBeVisible(); - - const texts: Record = { - "the current view link": "nav[aria-label='Computer views'] a[aria-current=page]", - "another view link": "nav[aria-label='Computer views'] a:not([aria-current])", - "a fact's label": "main dl dt", - }; - for (const [name, selector] of Object.entries(texts)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - }); -} diff --git a/apps/web/e2e/create-dot.spec.ts b/apps/web/e2e/create-dot.spec.ts deleted file mode 100644 index c4e2e7a3..00000000 --- a/apps/web/e2e/create-dot.spec.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { PERMISSIONS, resolvePermission } from "@invisible-dots/shared"; -import { expect, test } from "./fixtures.js"; - -test("a Dot is created by the form: its config is what the form showed, and the person lands in its chat", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/`); - await page.getByRole("link", { name: "New Dot" }).first().click(); - await expect(page).toHaveURL(/\/new$/); - await expect(page.getByRole("heading", { name: "Create a Dot" })).toBeVisible(); - // The checks beside the form come from the real control plane, which holds a key in this harness. - await expect(page.getByRole("region", { name: "Before you create" }).getByText("OpenRouter key: Ready")).toBeVisible(); - - await page.getByLabel("Name", { exact: true }).fill("form-made"); - await page.getByLabel("Instructions").fill("Write findings to fares.csv."); - await page.getByLabel("Processors", { exact: true }).fill("4"); - await page.getByLabel("Memory, exact value").fill("8"); - await page.getByRole("radio", { name: /Careful/ }).check(); - await page.getByRole("button", { name: "Create Dot" }).click(); - - await expect(page).toHaveURL(/\/dots\/[^/]+\/chat$/); - await expect(page.getByRole("heading", { level: 1, name: "form-made" })).toBeVisible(); - // The rail knows the new Dot without a reload. - await expect(page.getByRole("navigation", { name: "Dots" }).getByRole("link", { name: /form-made/ })).toBeVisible(); - - const stored = await harness.api.getDot("form-made"); - expect(stored.config).toMatchObject({ - name: "form-made", - instructions: "Write findings to fares.csv.", - model: { provider: "openrouter", id: "z-ai/glm-5.3-flash" }, - computer: { cpu: 4, memory: "8gb", disk: "40gb", idle_timeout: "15m" }, - limits: { max_cost_per_task_usd: 1 }, - }); - const decisions = Object.fromEntries(PERMISSIONS.map((permission) => [permission, resolvePermission(stored.config, permission)])); - expect(decisions["computer.exec"]).toBe("ask"); - expect(decisions["files.write"]).toBe("ask"); - expect(decisions["files.read"]).toBe("allow"); -}); - -test("a Dot is created from YAML, edited in place", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/new`); - await page.getByLabel("Name", { exact: true }).fill("yaml-made"); - await page.getByRole("button", { name: "Advanced YAML" }).click(); - const editor = page.getByRole("textbox", { name: "Configuration (YAML)" }); - await expect(editor).toHaveValue(/name: yaml-made/); - // Something only the YAML can say. - await editor.fill((await editor.inputValue()).replace("limits:\n", "limits:\n max_steps_per_task: 12\n")); - await expect(page.getByText("The configuration is valid.")).toBeVisible(); - // The form cannot show it, so going back is refused and the text stays. - await page.getByRole("button", { name: "Form" }).click(); - await expect(page.getByText("The form cannot show this")).toBeVisible(); - await page.getByRole("button", { name: "Create Dot" }).click(); - - await expect(page).toHaveURL(/\/dots\/[^/]+\/chat$/); - const stored = await harness.api.getDot("yaml-made"); - expect(stored.config.limits.max_steps_per_task).toBe(12); -}); - -test("a name that is not valid, or is taken, is said so at once, and nothing is created", async ({ page, harness }) => { - await harness.createDot("name-taken"); - await page.goto(`${harness.webUrl}/new`); - const name = page.getByLabel("Name", { exact: true }); - await name.fill("Not Valid"); - await expect(name).toHaveAttribute("aria-invalid", "true"); - await expect(page.getByText(/lowercase letters, digits and '-'/).first()).toBeVisible(); - await name.fill("name-taken"); - await expect(page.getByText('A Dot named "name-taken" already exists')).toBeVisible(); - await page.getByRole("button", { name: "Create Dot" }).click(); - await expect(page.getByRole("alert").filter({ hasText: "to fix" })).toBeVisible(); - await expect(page).toHaveURL(/\/new$/); - expect((await harness.api.listDots()).filter((dot) => dot.name === "name-taken")).toHaveLength(1); -}); - -test("the checks beside the form say what the host lacks and the command that fixes it, and check again on request", async ({ page, harness }) => { - const missing = { id: "golden-image", label: "golden image", status: "missing", detail: "none in the images folder", fix: "invisible-dots image build" } as const; - const healthy = harness.host.images; - harness.host.images = [missing, healthy[1]!]; - try { - await page.goto(`${harness.webUrl}/new`); - const panel = page.getByRole("region", { name: "Before you create" }); - await expect(panel.getByText("QEMU: Ready")).toBeVisible(); - await expect(panel.getByText("golden image: Needs attention")).toBeVisible(); - await expect(panel.getByText("invisible-dots image build")).toBeVisible(); - // Fixed on the host: the next check shows it. - harness.host.images = healthy; - await panel.getByRole("button", { name: "Check again" }).click(); - await expect(panel.getByText("golden image: Ready")).toBeVisible(); - await expect(panel.getByText("invisible-dots image build")).toHaveCount(0); - } finally { - harness.host.images = healthy; - } -}); - -test("the Home page shows a card per Dot and the computer's power on it works", async ({ page, harness }) => { - const dot = await harness.createDot("home-card"); - await page.goto(`${harness.webUrl}/`); - const card = page.getByRole("article", { name: "home-card" }); - await expect(card.getByText(/goal/i)).toHaveCount(0); - await expect(card.getByText("test/model")).toBeVisible(); - await expect(card.getByText("$0.00")).toBeVisible(); - await expect(card.getByRole("img", { name: "Ready" })).toBeVisible(); - - await card.getByRole("button", { name: /^Computer: Running/ }).click(); - page.once("dialog", (dialog) => void dialog.accept()); - await page.getByRole("menuitem", { name: "Stop" }).click(); - await expect(card.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(card.getByRole("img", { name: "Computer stopped" })).toBeVisible(); - - await card.getByRole("link", { name: "Open chat" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/chat$`)); -}); - -test("a Dot made elsewhere appears on the Home page while it is open", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/`); - await expect(page.getByRole("heading", { level: 1, name: "Dots" })).toBeVisible(); - await harness.createDot("home-live"); - await expect(page.getByRole("article", { name: "home-live" })).toBeVisible(); -}); - -test("Home and the create page fit a phone: no sideways scroll at 390 px", async ({ page, harness }) => { - // The longest name a Dot may have. - const name = "phone-card-".padEnd(40, "x"); - await harness.createDot(name); - await page.setViewportSize({ width: 390, height: 844 }); - const loaded: Record Promise> = { - "/": async () => { - const card = page.getByRole("article", { name }); - await expect(card).toBeVisible(); - // The name is cut short inside its card: the shell hides what passes the card's edge, so the page alone does - // not scroll and only the boxes tell. - const [outer, title] = [(await card.boundingBox())!, (await card.getByRole("heading", { name }).boundingBox())!]; - expect(title.x + title.width, "the name passes the card's right edge").toBeLessThanOrEqual(outer.x + outer.width); - }, - "/new": () => expect(page.getByRole("region", { name: "Before you create" }).getByText("OpenRouter key: Ready")).toBeVisible(), - }; - for (const [path, ready] of Object.entries(loaded)) { - await page.goto(`${harness.webUrl}${path}`); - await ready(); - const overflow = await page.evaluate(() => document.documentElement.scrollWidth - window.innerWidth); - expect(overflow, `${path} scrolls sideways by ${overflow}px`).toBeLessThanOrEqual(0); - } -}); diff --git a/apps/web/e2e/dot-settings.spec.ts b/apps/web/e2e/dot-settings.spec.ts deleted file mode 100644 index 4a32a4a7..00000000 --- a/apps/web/e2e/dot-settings.spec.ts +++ /dev/null @@ -1,281 +0,0 @@ -import type { Page } from "@playwright/test"; -import { expect, test } from "./fixtures.js"; -import { lookOf } from "./look.js"; - -const settings = (webUrl: string, dotId: string) => `${webUrl}/dots/${dotId}/settings`; -const row = (page: Page, label: string) => page.getByRole("group", { name: label }); -/** The segmented control is three radios in labels; the label is what a person presses. */ -const choose = (page: Page, label: string, decision: "Allow" | "Ask" | "Deny") => row(page, label).locator("label", { hasText: decision }).click(); - -async function saveReviewed(page: Page) { - await page.getByRole("button", { name: "Review and save" }).click(); - const dialog = page.getByRole("dialog", { name: "Save these changes?" }); - await dialog.getByRole("button", { name: "Save changes" }).click(); - await expect(dialog).toHaveCount(0); -} - -test("allow, ask and deny a permission: the host saves one entry, the Dot's engine has it, and the tools it offers follow", async ({ page, harness }) => { - const dot = await harness.createDot("config-perms"); - const guest = harness.driver.guestOf(dot.id); - await page.goto(settings(harness.webUrl, dot.id)); - - // The tools of a permission, from the Dot's own table, offered while the permission is not denied. - const exec = page.getByRole("list", { name: "Tools of Run commands" }); - await expect(exec.getByRole("listitem")).toHaveText(["exec"]); - - // Deny: saved as an entry, pushed, and the model is no longer offered the tool. - await choose(page, "Run commands", "Deny"); - await expect(row(page, "Run commands").getByRole("radio", { name: "Deny" })).toBeChecked(); - await expect(page.getByText("1 unsaved change.")).toBeVisible(); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({}); - await page.getByRole("button", { name: "Review and save" }).click(); - const dialog = page.getByRole("dialog", { name: "Save these changes?" }); - await expect(dialog.getByRole("list", { name: "Changes" }).getByRole("listitem")).toHaveText(["Run commandsfrom allow to deny"]); - // Still nothing written: the review is not the save. - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({}); - await dialog.getByRole("button", { name: "Save changes" }).click(); - await expect(page.getByText("Saved. The change applies from the Dot's next turn.")).toBeVisible(); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({ "computer.exec": "deny" }); - await expect.poll(() => guest.config?.permissions["computer.exec"]).toBe("deny"); - expect((await harness.api.listTools(dot.id)).tools.find((tool) => tool.name === "exec")?.offered).toBe(false); - await expect(exec.getByRole("listitem")).toHaveText(["execnot offered"]); - - // Ask: the tool is offered again, and the Dot will wait for an answer. - await choose(page, "Run commands", "Ask"); - await saveReviewed(page); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({ "computer.exec": "ask" }); - await expect.poll(() => guest.config?.permissions["computer.exec"]).toBe("ask"); - await expect(exec.getByRole("listitem")).toHaveText(["exec"]); - - // Allow is what the default says: the entry goes, the engine still allows. - await choose(page, "Run commands", "Allow"); - await saveReviewed(page); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({}); - await expect.poll(() => guest.config?.permissions["computer.exec"]).toBe("allow"); - - // A reload shows what is saved. - await page.reload(); - await expect(row(page, "Run commands").getByRole("radio", { name: "Allow" })).toBeChecked(); - await expect(row(page, "Automations").getByRole("radio", { name: "Ask" })).toBeChecked(); -}); - -test("an MCP server is added in the settings, its secret reaches the Dot's engine and never the page, and its state shows", async ({ page, harness }) => { - const dot = await harness.createDot("config-mcp"); - const guest = harness.driver.guestOf(dot.id); - guest.mcpTools.set("search", [{ name: "mcp_search_query", description: "Search." }]); - await page.goto(settings(harness.webUrl, dot.id)); - const panel = page.locator("section", { has: page.getByRole("heading", { level: 2, name: "MCP servers" }) }); - - await panel.getByRole("button", { name: "Add an MCP server" }).click(); - const form = page.getByRole("form", { name: "New MCP server" }); - await form.getByLabel("Name").fill("search"); - await form.getByText("A URL").click(); - await form.getByRole("textbox", { name: "URL" }).fill("https://search.example/mcp"); - await form.getByLabel(/^Secrets/).fill("Authorization"); - await form.getByRole("button", { name: "Add" }).click(); - await saveReviewed(page); - await expect.poll(async () => (await harness.api.getDot(dot.id)).config.mcp_servers).toEqual({ - search: { url: "https://search.example/mcp", headers: {}, secrets: ["Authorization"], timeout_s: 120, startup_timeout_s: 60 }, - }); - - // Saved, the server's secret can be set; the engine gets it, the page keeps nothing of it. - const secret = panel.getByLabel("Authorization"); - await secret.fill("Bearer e2e-token"); - await panel.getByRole("button", { name: "Set" }).click(); - await expect(secret).toHaveValue(""); - await expect.poll(() => guest.mcpSecrets).toEqual({ search: { Authorization: "Bearer e2e-token" } }); - expect(await page.content()).not.toContain("e2e-token"); - - // Where it is, as the engine says, and its permission among the others, asked by default. - await expect(panel.getByText("Connected, 1 tool")).toBeVisible(); - await expect(row(page, "MCP server search").getByRole("radio", { name: "Ask" })).toBeChecked(); - await expect(page.getByRole("list", { name: "Tools of MCP server search" }).getByRole("listitem")).toHaveText(["mcp_search_query"]); -}); - -test("a preset sets the rows together, and the review lists every row that moved", async ({ page, harness }) => { - const dot = await harness.createDot("config-preset"); - await page.goto(settings(harness.webUrl, dot.id)); - await page.getByRole("radio", { name: /Careful/ }).check(); - await expect(row(page, "Run commands").getByRole("radio", { name: "Ask" })).toBeChecked(); - await expect(row(page, "Change files").getByRole("radio", { name: "Ask" })).toBeChecked(); - await page.getByRole("button", { name: "Review and save" }).click(); - await expect(page.getByRole("list", { name: "Changes" }).getByRole("listitem")).toHaveText(["Run commandsfrom allow to ask", "Change filesfrom allow to ask"]); - await page.getByRole("button", { name: "Keep editing" }).click(); - // Keep editing sends nothing, and the edits stay. - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({}); - await expect(row(page, "Run commands").getByRole("radio", { name: "Ask" })).toBeChecked(); - await page.getByRole("button", { name: "Discard changes" }).click(); - await expect(row(page, "Run commands").getByRole("radio", { name: "Allow" })).toBeChecked(); - await expect(page.getByText("No changes.")).toBeVisible(); -}); - -test("the other settings are saved with the permissions: the summary model, the spending cap and the step limit", async ({ page, harness }) => { - const dot = await harness.createDot("config-rest"); - const guest = harness.driver.guestOf(dot.id); - await page.goto(settings(harness.webUrl, dot.id)); - await page.getByLabel(/^Summary model/).fill("openai/gpt-5-mini"); - await page.getByLabel("Spending cap per task").fill("0.5"); - await page.getByLabel("Steps per task").fill("25"); - await choose(page, "Delete browser identities", "Deny"); - await expect(page.getByText("4 unsaved changes.")).toBeVisible(); - await saveReviewed(page); - - const config = (await harness.api.getDot(dot.id)).config; - expect(config.models).toEqual({ summary: "openai/gpt-5-mini" }); - expect(config.limits).toMatchObject({ max_cost_per_task_usd: 0.5, max_steps_per_task: 25 }); - expect("browser" in config).toBe(false); - // There is no memory to set: the Dot keeps its notes itself. - expect("memory" in config).toBe(false); - await expect(page.getByRole("switch", { name: /^Memory/ })).toHaveCount(0); - expect(config.permissions).toEqual({ "browser.identity.delete": "deny" }); - await expect.poll(() => guest.config?.models.summary).toBe("openai/gpt-5-mini"); - - // Emptying the summary model takes the role out of the config. - await page.getByLabel(/^Summary model/).fill(""); - await saveReviewed(page); - expect((await harness.api.getDot(dot.id)).config.models).toEqual({}); -}); - -test("a setting that is wrong is said where it is, and the disk cannot shrink", async ({ page, harness }) => { - const dot = await harness.createDot("config-rules"); - await page.goto(settings(harness.webUrl, dot.id)); - await page.getByRole("combobox", { name: "Model", exact: true }).fill("two words"); - await expect(page.getByText("model id must not contain whitespace")).toBeVisible(); - await expect(page.getByRole("button", { name: "Review and save" })).toBeDisabled(); - await page.getByRole("combobox", { name: "Model", exact: true }).fill("openai/gpt-5"); - await expect(page.getByRole("button", { name: "Review and save" })).toBeEnabled(); - await page.getByRole("button", { name: "Discard changes" }).click(); - - // The slider starts at what the disk is; the host refuses a smaller disk from the YAML, with its own words. - await expect(page.getByLabel("Disk", { exact: true })).toHaveAttribute("min", "40"); - await page.getByRole("button", { name: "Advanced YAML" }).click(); - const yaml = page.getByRole("textbox", { name: "Configuration (YAML)" }); - await yaml.fill((await yaml.inputValue()).replace(/disk: "?40gb"?/, 'disk: "30gb"')); - await page.getByRole("button", { name: "Review and save" }).click(); - await page.getByRole("dialog").getByRole("button", { name: "Save changes" }).click(); - const refusal = page.getByRole("dialog").getByRole("alert"); - await expect(refusal).toContainText("The configuration was not saved"); - await expect(refusal).toContainText("computer.disk cannot shrink from 40gb to 30gb"); - expect((await harness.api.getDot(dot.id)).config.computer.disk).toBe("40gb"); -}); - -test("the YAML view is the same config: the form's edits are in it, and what it says is what is saved", async ({ page, harness }) => { - const dot = await harness.createDot("config-yaml"); - await page.goto(settings(harness.webUrl, dot.id)); - await choose(page, "Change files", "Ask"); - await page.getByRole("button", { name: "Advanced YAML" }).click(); - const yaml = page.getByRole("textbox", { name: "Configuration (YAML)" }); - await expect(yaml).toHaveValue(/files\.write: ask/); - await yaml.fill((await yaml.inputValue()).replace("max_steps_per_task: 60", "max_steps_per_task: 15")); - await expect(page.getByText("2 unsaved changes.")).toBeVisible(); - await saveReviewed(page); - const config = (await harness.api.getDot(dot.id)).config; - expect(config.limits.max_steps_per_task).toBe(15); - expect(config.permissions).toEqual({ "files.write": "ask" }); - - // A text that is not a config says what is wrong, cannot be saved, and keeps the person in the YAML. - await yaml.fill("name: [unclosed"); - await expect(page.getByRole("list", { name: "Problems in the YAML" })).toBeVisible(); - await expect(page.getByRole("button", { name: "Review and save" })).toBeDisabled(); - await page.getByRole("button", { name: "Form", exact: true }).click(); - await expect(page.getByText("The form cannot show this")).toBeVisible(); -}); - -test("a config changed elsewhere while the page is open is never undone: the edits are kept on top of it, and the save is conditional on what the page read", async ({ page, harness }) => { - const dot = await harness.createDot("config-stale"); - await page.goto(settings(harness.webUrl, dot.id)); - await choose(page, "Run commands", "Deny"); - - // "Always allow" in another tab, which is the API here: the page hears it and keeps the edit on top of it. - const read = await harness.api.getDot(dot.id); - await harness.api.updateDot(dot.id, { ...read.config, permissions: { automations: "allow" } }); - await expect(page.getByText("The configuration changed while you were editing")).toBeVisible(); - await expect(row(page, "Automations").getByRole("radio", { name: "Allow" })).toBeChecked(); - await expect(row(page, "Run commands").getByRole("radio", { name: "Deny" })).toBeChecked(); - await expect(page.getByText("1 unsaved change.")).toBeVisible(); - await saveReviewed(page); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({ automations: "allow", "computer.exec": "deny" }); - await expect(page.getByText("The configuration changed while you were editing")).toHaveCount(0); -}); - -test("a stopped computer says the tools need it running, and the permissions can still be set", async ({ page, harness }) => { - const dot = await harness.createDot("config-stopped"); - await harness.api.stopComputer(dot.id); - await page.goto(settings(harness.webUrl, dot.id)); - await expect(page.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(page.getByText(/Start the computer to see the tools each permission covers/)).toBeVisible(); - await expect(page.getByRole("list", { name: /^Tools of/ })).toHaveCount(0); - await choose(page, "Run commands", "Ask"); - await saveReviewed(page); - expect((await harness.api.getDot(dot.id)).config.permissions).toEqual({ "computer.exec": "ask" }); - await expect(page.getByText("Saved. The Dot gets the change when its computer starts.")).toBeVisible(); -}); - -test("delete asks for the Dot's name, and the Dot is gone after it", async ({ page, harness }) => { - const dot = await harness.createDot("config-delete"); - await page.goto(settings(harness.webUrl, dot.id)); - await page.getByRole("button", { name: "Delete Dot" }).click(); - const dialog = page.getByRole("dialog", { name: "Delete config-delete?" }); - const confirm = dialog.getByRole("button", { name: "Delete Dot" }); - await expect(confirm).toBeDisabled(); - await dialog.getByLabel(/Type config-delete to confirm/).fill("config-delet"); - await expect(confirm).toBeDisabled(); - await dialog.getByLabel(/Type config-delete to confirm/).fill("config-delete"); - await confirm.click(); - await expect(page).toHaveURL(`${harness.webUrl}/`); - await expect.poll(async () => (await harness.api.listDots()).some((d) => d.id === dot.id)).toBe(false); -}); - -test("the settings page is usable from the keyboard alone, and fits a phone", async ({ page, harness }) => { - const dot = await harness.createDot("config-keys"); - await page.goto(settings(harness.webUrl, dot.id)); - // The arrow keys walk the three decisions of a row. - await row(page, "Read files").getByRole("radio", { name: "Allow" }).focus(); - await page.keyboard.press("ArrowRight"); - await expect(row(page, "Read files").getByRole("radio", { name: "Ask" })).toBeChecked(); - await page.keyboard.press("ArrowRight"); - await expect(row(page, "Read files").getByRole("radio", { name: "Deny" })).toBeChecked(); - await page.getByRole("button", { name: "Review and save" }).focus(); - await page.keyboard.press("Enter"); - const dialog = page.getByRole("dialog", { name: "Save these changes?" }); - await expect(dialog.getByRole("list", { name: "Changes" }).getByRole("listitem")).toHaveText(["Read filesfrom allow to deny"]); - await page.keyboard.press("Escape"); - await expect(dialog).toHaveCount(0); - - await page.setViewportSize({ width: 390, height: 844 }); - await page.goto(settings(harness.webUrl, dot.id)); - await expect(page.getByRole("heading", { name: "Permissions and tools" })).toBeVisible(); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBe(0); - await choose(page, "Run commands", "Ask"); - // The bar with the save button stays in reach while the long page scrolls. - await expect(page.getByRole("button", { name: "Review and save" })).toBeInViewport(); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBe(0); -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the settings are readable in ${scheme}: the rows, the risk and change marks, the tools, the save bar`, async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`config-look-${scheme}`); - await page.goto(settings(harness.webUrl, dot.id)); - await choose(page, "Run commands", "Deny"); - await expect(page.getByRole("list", { name: "Tools of Run commands" })).toBeVisible(); - await page.getByRole("combobox", { name: "Model", exact: true }).fill("two words"); - await expect(page.getByText("model id must not contain whitespace")).toBeVisible(); - - const spots: Record = { - "a permission's description": "li:has(fieldset legend:text-is('Run commands')) > div p.text-sm", - "a decision that is not chosen": "li:has(legend:text-is('Read files')) label:has(input:not(:checked))", - "the decision that is chosen": "li:has(legend:text-is('Run commands')) label:has(input:checked)", - "the high risk mark": "li:has(legend:text-is('Run commands')) span:text-is('High risk')", - "the medium risk mark": "li:has(legend:text-is('Change files')) span:text-is('Medium risk')", - "the low risk mark": "li:has(legend:text-is('Read files')) span:text-is('Low risk')", - "the changed mark": "li:has(legend:text-is('Run commands')) span:text-is('Changed')", - "what a decision means": "li:has(legend:text-is('Run commands')) > p.text-xs", - "a field's problem": "p.text-danger", - "the save bar's text": "[aria-label=Save] p", - }; - for (const [name, selector] of Object.entries(spots)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - }); -} diff --git a/apps/web/e2e/fixtures.ts b/apps/web/e2e/fixtures.ts deleted file mode 100644 index 3a42aee5..00000000 --- a/apps/web/e2e/fixtures.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { test as base } from "@playwright/test"; -import { startHarness, type Harness } from "./harness.js"; - -interface WorkerFixtures { - harness: Harness; - /** - * A control plane of its own that has never been given a key and has no Dot: the host a person finds on the first - * run. Started only by a test that asks for it. - */ - unconfigured: Harness; - /** - * A control plane of its own with a key and no Dot, for the pages that count what needs the person across every Dot - * (the Inbox): on the shared one, the approvals, failures and errors of every other spec would be in the count. - */ - fresh: Harness; -} - -export const test = base.extend<{}, WorkerFixtures>({ - // One control plane and one web server per worker. - harness: [ - async ({}, use) => { - const harness = await startHarness(); - try { - await use(harness); - } finally { - await harness.close(); - } - }, - { scope: "worker", timeout: 120_000 }, - ], - unconfigured: [ - async ({}, use) => { - const harness = await startHarness({ withKey: false }); - try { - await use(harness); - } finally { - await harness.close(); - } - }, - { scope: "worker", timeout: 120_000 }, - ], - fresh: [ - async ({}, use) => { - const harness = await startHarness(); - try { - await use(harness); - } finally { - await harness.close(); - } - }, - { scope: "worker", timeout: 120_000 }, - ], -}); - -export { expect } from "@playwright/test"; diff --git a/apps/web/e2e/harness.ts b/apps/web/e2e/harness.ts deleted file mode 100644 index 0649bbc6..00000000 --- a/apps/web/e2e/harness.ts +++ /dev/null @@ -1,155 +0,0 @@ -/** - * The real control plane and the real web server, for the browser tests: `startServer` of apps/api in this process - * on a temporary INVISIBLE_DOTS_HOME (PGlite), with FakeDriver for the VM layer, so a test can drive what a Dot's - * computer does (`driver.guestOf(id)`); and the web client as the product ships and runs it: the built standalone - * server (`.next/standalone/apps/web/server.js` with its copied static files) started by the CLI's own `startWebServer`, - * with the reduced environment `invisible-dots server` gives it (`webEnvironment`), pointed at that control plane. - * The channels run for real too, on what the hub's own tests use: the Telegram adapter talks to a Bot API server of this - * process (`bots`) and the WhatsApp adapter to a connection a test plays (`whatsapp`). Only `npm run build --workspace - * @invisible-dots/web` has to have run before (the standalone build, not only `next build`). - */ -import { mkdtemp, rm } from "node:fs/promises"; -import { createServer } from "node:net"; -import { tmpdir } from "node:os"; -import { dirname, join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { startServer, type RunningServer } from "@invisible-dots/api"; -import { TelegramChannelType, WhatsAppChannelType } from "@invisible-dots/channels"; -import { FakeBotApi, FakeWhatsAppConnector } from "@invisible-dots/channels/testing"; -import { FakeDriver, waitUntilSettledReady } from "@invisible-dots/scheduler/testing"; -import { InvisibleDotsClient, type DotRecord } from "@invisible-dots/sdk"; -import { ENV, type DoctorCheck } from "@invisible-dots/shared"; -import { locateWebBuild, startWebServer, type WebServer } from "../../cli/src/web.js"; -import { healthyDoctor, ok } from "../../vm-manager/test/doctor-fakes.js"; - -const REPO_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "../../.."); -const quiet = { debug() {}, info() {}, warn() {}, error() {} }; - -export interface Harness { - /** The web client, as the browser opens it. */ - webUrl: string; - /** INVISIBLE_DOTS_HOME of the control plane: what its health answer calls the data directory. */ - home: string; - /** The control plane behind it. */ - control: RunningServer; - driver: FakeDriver; - /** The Bot API the Telegram adapter polls: a test makes bots, writes to them as a person and reads what they sent. */ - bots: FakeBotApi; - /** The WhatsApp connection of every Dot, played by a test: `whatsapp.current` is the newest. */ - whatsapp: FakeWhatsAppConnector; - /** The control plane's SDK client, signed in with its token. */ - api: InvisibleDotsClient; - /** The API token of this control plane (the web server reads it itself; the tests call the API with it). */ - token: string; - /** - * The host the doctor looks at: a healthy one (QEMU, an accelerator, disk), so a test does not depend on the machine - * it runs on. A test changes what the images row says; the page's next check shows it. - */ - host: { images: DoctorCheck[] }; - /** A Dot whose computer is up and READY. */ - createDot(name: string): Promise; - /** The control plane stops answering (its server closes) while the web client goes on: what a person sees when the API dies. `close` still cleans up. */ - stopApi(): Promise; - close(): Promise; -} - -async function freePort(): Promise { - return new Promise((resolvePort, reject) => { - const probe = createServer(); - probe.once("error", reject); - probe.listen(0, "127.0.0.1", () => { - const address = probe.address(); - probe.close(() => (typeof address === "object" && address ? resolvePort(address.port) : reject(new Error("no port")))); - }); - }); -} - -export interface HarnessOptions { - /** - * Whether the control plane already holds an OpenRouter key (the default), as a host does once it has been set up. - * Without one, no Dot reaches READY, so this is for the pages a person sees before the first Dot. - */ - withKey?: boolean; -} - -export async function startHarness({ withKey = true }: HarnessOptions = {}): Promise { - const home = await mkdtemp(join(tmpdir(), "idots-e2e-")); - const driver = new FakeDriver(); - const bots = await FakeBotApi.start(); - const whatsapp = new FakeWhatsAppConnector(); - const host = { - images: [ok("golden-image", "golden image", "golden-1.qcow2 matches its manifest"), ok("runtime-image", "runtime ISO", "runtime-1.iso matches its manifest")], - }; - const control = await startServer({ - env: { INVISIBLE_DOTS_HOME: home }, - listen: "127.0.0.1:0", - logger: quiet, - driver, - channelTypes: [new TelegramChannelType({ apiRoot: bots.apiRoot, pollSeconds: 1 }), new WhatsAppChannelType({ connector: () => whatsapp, pauseMs: () => 0 })], - doctor: { ...healthyDoctor().deps, images: async () => host.images }, - // Quick polls, so a Dot is READY in milliseconds; the slow background loops are not needed. - scheduler: { - dispatchIntervalMs: 60_000, - idleCheckIntervalMs: 60_000, - lifecycle: { healthPollMs: 20, readyTimeoutMs: 15_000, pumpRetryMs: 20 }, - dispatcher: { retryDelayMs: 0 }, - }, - }); - - let web: WebServer; - let unexpectedExit: string | undefined; - try { - web = await startWebServer({ - build: await locateWebBuild(REPO_ROOT), - listen: { host: "127.0.0.1", port: await freePort() }, - apiUrl: control.url, - // What `invisible-dots server` has in its own environment: the web server gets the allowlisted part of it. - env: { ...process.env, [ENV.HOME]: home, [ENV.TOKEN]: control.token }, - onUnexpectedExit: (message) => (unexpectedExit = message), - }); - } catch (error) { - await control.close(); - await bots.close(); - await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }); - throw error; - } - const webUrl = web.url; - - let apiStopped = false; - const stopApi = async () => { - if (apiStopped) return; - apiStopped = true; - await control.close(); - }; - const close = async () => { - await web.stop(); - await stopApi(); - await bots.close(); - await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 }); - }; - if (unexpectedExit !== undefined) { - await close(); - throw new Error(unexpectedExit); - } - const api = new InvisibleDotsClient({ baseUrl: control.url, token: control.token }); - // A Dot is not READY until the guest holds a key (the READY procedure pushes it); the fake guest accepts any. - if (withKey) await api.setOpenRouterKey("sk-or-e2e-0123456789abcdef"); - return { - webUrl, - home, - control, - driver, - bots, - whatsapp, - host, - api, - token: control.token, - async createDot(name) { - const dot = await api.createDot(`name: ${name}\nmodel:\n provider: openrouter\n id: test/model\ncomputer:\n idle_timeout: 15m\n`); - await waitUntilSettledReady(control.scheduler, driver, dot.id, name); - return dot; - }, - stopApi, - close, - }; -} diff --git a/apps/web/e2e/inbox.spec.ts b/apps/web/e2e/inbox.spec.ts deleted file mode 100644 index 9ccd0841..00000000 --- a/apps/web/e2e/inbox.spec.ts +++ /dev/null @@ -1,328 +0,0 @@ -import type { FakeGuest } from "@invisible-dots/scheduler/testing"; -import { newId, resolvePermission, type ApprovalRequestedData } from "@invisible-dots/shared"; -import type { Page } from "@playwright/test"; -import { expect, test } from "./fixtures.js"; -import { lookOf } from "./look.js"; - -type Ask = Pick & Partial>; - -/** The Dot asks for an approval, as its engine does on an `ask`. Returns the approval's id. */ -function ask(guest: FakeGuest, data: Ask): string { - const approval_id = newId("apr"); - guest.emit("approval.requested", { approval_id, reason: "to get the job done", ...data }); - return approval_id; -} - -const exec = (command: string): Ask => ({ tool: "exec", permission: "computer.exec", arguments: { command } }); -const navigate = (url: string): Ask => ({ tool: "browser_navigate", permission: "browser.navigate", arguments: { identity_id: "shop-abc123", url } }); - -const cards = (page: Page) => page.getByRole("article", { name: /^Wants to / }); -const railInbox = (page: Page) => page.getByRole("complementary", { name: "Navigation" }).getByRole("link", { name: /^Inbox/ }); - -/** What the guest was told about approvals, in order. */ -function answersHeard(guest: FakeGuest) { - return guest.inbound.flatMap((event) => (event.type === "approval.received" ? [event.data] : [])); -} - -// The Inbox counts across every Dot of the host: each test leaves it as it found it, with no approval waiting and no Dot. -test.afterEach(async ({ fresh }) => { - for (const approval of await fresh.api.listApprovals("pending")) await fresh.api.reject(approval.id); - for (const dot of await fresh.api.listDots()) await fresh.api.deleteDot(dot.id); - await expect.poll(async () => (await fresh.api.listDots()).length).toBe(0); -}); - -test("the Inbox lists what every Dot waits on, counts it in the rail and the title, and an answer is heard by the Dot and clears the count", async ({ page, fresh: harness }) => { - const a = await harness.createDot("inbox-a"); - const b = await harness.createDot("inbox-b"); - const guestA = harness.driver.guestOf(a.id); - const idA = ask(guestA, exec("make test")); - ask(harness.driver.guestOf(b.id), navigate("https://example.com/cart")); - - await page.goto(`${harness.webUrl}/inbox`); - await expect(page.getByRole("heading", { level: 1, name: "Inbox" })).toBeVisible(); - await expect(cards(page)).toHaveCount(2); - const first = page.getByRole("article", { name: "Wants to run a command" }); - await expect(first.getByText("inbox-a")).toBeVisible(); - await expect(first.getByText("make test", { exact: true })).toBeVisible(); - await expect(first.getByText("to get the job done")).toBeVisible(); - await expect(first.getByText("Run commands (high risk)")).toBeVisible(); - await expect(page.getByRole("article", { name: "Wants to open a page" }).getByText("inbox-b")).toBeVisible(); - await expect(railInbox(page).getByLabel("2 need you")).toBeVisible(); - await expect(page).toHaveTitle(/^\(2\) /); - - // Nothing below reloads the page: this marker would not survive it. - await page.evaluate(() => ((window as unknown as { marker: number }).marker = 7)); - await first.getByRole("button", { name: "Allow once" }).click(); - await expect(first.getByRole("status")).toHaveText("Allowed"); - await expect(railInbox(page).getByLabel("1 need you")).toBeVisible(); - await expect(page).toHaveTitle(/^\(1\) /); - expect((await harness.api.listApprovals("approved")).map((x) => x.id)).toEqual([idA]); - await expect.poll(() => answersHeard(guestA)).toEqual([{ approval_id: idA, decision: "approve" }]); - // The card is a receipt, still where it was; the other one is untouched. - await expect(cards(page)).toHaveCount(2); - expect(await page.evaluate(() => (window as unknown as { marker: number }).marker)).toBe(7); - - // Another Dot's answer from elsewhere (the CLI, a channel) reaches this page by itself. - const [other] = await harness.api.listApprovals("pending"); - await harness.api.reject(other!.id); - await expect(railInbox(page).getByLabel(/need you/)).toHaveCount(0); - await expect(page).toHaveTitle(/^(?!\()/); -}); - -test("Always allow says what it changes, changes the Dot's settings and its computer's, and is remembered as the answer", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-always"); - const guest = harness.driver.guestOf(dot.id); - expect(guest.config?.permissions["automations"]).toBe("ask"); - const id = ask(guest, { tool: "cron", permission: "automations", arguments: { action: "add", name: "standup", message: "Say hello", every_seconds: 3600 } }); - - await page.goto(`${harness.webUrl}/inbox`); - const card = page.getByRole("article", { name: "Wants to manage an automation" }); - await expect(card.getByText("every hour")).toBeVisible(); - await card.getByRole("button", { name: "Always allow" }).click(); - const dialog = page.getByRole("dialog", { name: /Always allow .Automations.\?/ }); - await expect(dialog.getByText("Medium risk")).toBeVisible(); - // The tools of this permission, read from the Dot's own computer. - await expect(dialog.getByRole("list", { name: "Tools covered" }).getByRole("listitem")).toHaveText(["cron"]); - await expect(dialog.getByText(/automations: allow/)).toBeVisible(); - expect(resolvePermission((await harness.api.getDot(dot.id)).config, "automations")).toBe("ask"); - - await dialog.getByRole("button", { name: "Always allow" }).click(); - await expect(card.getByRole("status")).toContainText('The Dot will not ask for "Automations" again.'); - expect(resolvePermission((await harness.api.getDot(dot.id)).config, "automations")).toBe("allow"); - await expect.poll(() => guest.config?.permissions["automations"]).toBe("allow"); - // The guest hears the plain decision. - await expect.poll(() => answersHeard(guest)).toEqual([{ approval_id: id, decision: "approve" }]); -}); - -test("Keep asking in that question changes nothing, and Deny sends the note with it", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-deny"); - const guest = harness.driver.guestOf(dot.id); - const id = ask(guest, exec("make deploy")); - await page.goto(`${harness.webUrl}/inbox`); - const card = page.getByRole("article", { name: "Wants to run a command" }); - const version = (await harness.api.getDot(dot.id)).config_version; - - await card.getByRole("button", { name: "Always allow" }).click(); - await page.getByRole("dialog").getByRole("button", { name: "Keep asking" }).click(); - await expect(page.getByRole("dialog")).toHaveCount(0); - // Nothing was answered and the Dot's settings were not written. - expect(await harness.api.listApprovals("pending")).toHaveLength(1); - expect((await harness.api.getDot(dot.id)).config_version).toBe(version); - - await card.getByRole("button", { name: "Add a note for the Dot" }).click(); - await card.getByLabel("Note for the Dot (optional)").fill("not before the review"); - await card.getByRole("button", { name: "Deny" }).click(); - await expect(card.getByRole("status")).toContainText("Denied"); - await expect(card.getByText("Your note: not before the review")).toBeVisible(); - await expect.poll(() => answersHeard(guest)).toEqual([{ approval_id: id, decision: "reject", note: "not before the review" }]); - - // The History keeps it, with the note, and the filters are in the address. - await page.getByRole("navigation", { name: "Inbox sections" }).getByRole("link", { name: "History" }).click(); - await expect(page).toHaveURL(/\/inbox\?tab=history$/); - const row = page.getByRole("table").getByRole("row", { name: /Asked to run a command/ }); - await expect(row.getByText("Answer: Denied")).toBeVisible(); - await expect(row.getByText("Note: not before the review")).toBeVisible(); - await expect(row.getByRole("link", { name: "inbox-deny" })).toBeVisible(); - - await page.getByLabel("Permission").selectOption("files.write"); - await expect(page).toHaveURL(/permission=files\.write/); - await expect(page.getByText("No approval has been answered under these filters.")).toBeVisible(); - await page.reload(); - await expect(page.getByLabel("Permission")).toHaveValue("files.write"); - await page.getByLabel("Permission").selectOption(""); - await expect(page.getByRole("table")).toBeVisible(); -}); - -test("the old addresses lead to the Inbox, a Dot's approvals to the Inbox filtered to that Dot", async ({ page, fresh: harness }) => { - const kept = await harness.createDot("inbox-kept"); - const other = await harness.createDot("inbox-other"); - ask(harness.driver.guestOf(kept.id), exec("ls")); - ask(harness.driver.guestOf(other.id), navigate("https://example.com")); - - await page.goto(`${harness.webUrl}/approvals`); - await expect(page).toHaveURL(`${harness.webUrl}/inbox`); - await expect(cards(page)).toHaveCount(2); - - await page.goto(`${harness.webUrl}/dots/${kept.id}/approvals`); - await expect(page).toHaveURL(`${harness.webUrl}/inbox?dot=${kept.id}`); - await expect(page.getByLabel("Dot", { exact: true })).toHaveValue(kept.id); - await expect(cards(page)).toHaveCount(1); - await expect(page.getByRole("article", { name: "Wants to run a command" })).toBeVisible(); - - // By name, as the control plane takes it. - await page.goto(`${harness.webUrl}/inbox?dot=inbox-other`); - await expect(page.getByLabel("Dot", { exact: true })).toHaveValue(other.id); - await expect(page.getByRole("article", { name: "Wants to open a page" })).toBeVisible(); - await expect(cards(page)).toHaveCount(1); - - // The Dot's own tab bar no longer has an Approvals tab. - await page.goto(`${harness.webUrl}/dots/${kept.id}/chat`); - await expect(page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: /Approvals/ })).toHaveCount(0); -}); - -test("the Inbox is answered from the keyboard alone: Tab to the list, j and k choose, a allows once, d denies, and a command waits for its confirmation", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-keys"); - const guest = harness.driver.guestOf(dot.id); - const one = ask(guest, navigate("https://example.com/one")); - const two = ask(guest, navigate("https://example.com/two")); - const three = ask(guest, exec("make test")); - await page.goto(`${harness.webUrl}/inbox`); - await expect(cards(page)).toHaveCount(3); - const selected = page.locator("article[aria-current=true]"); - await expect(selected).toHaveAttribute("data-approval-id", one); - - // A key typed while the focus is elsewhere on the page answers nothing (WCAG 2.1.4): the keys are the list's. - await page.keyboard.press("d"); - await page.keyboard.press("a"); - expect(await harness.api.listApprovals("pending")).toHaveLength(3); - const list = page.getByRole("list", { name: "Approvals waiting for your answer" }); - while (!(await list.evaluate((element) => element === document.activeElement))) await page.keyboard.press("Tab"); - - await page.keyboard.press("a"); - await expect(selected.getByRole("status")).toHaveText("Allowed"); - await page.keyboard.press("j"); - await expect(selected).toHaveAttribute("data-approval-id", two); - await page.keyboard.press("d"); - await expect(selected.getByRole("status")).toContainText("Denied"); - - await page.keyboard.press("j"); - await expect(selected).toHaveAttribute("data-approval-id", three); - await page.keyboard.press("a"); - // A command is not allowed by a key press: the focus is on its Allow once button, and nothing is answered yet. - await expect(selected.getByRole("button", { name: "Allow once" })).toBeFocused(); - expect(await harness.api.listApprovals("pending")).toHaveLength(1); - await page.keyboard.press("Enter"); - await expect(selected.getByRole("status")).toHaveText("Allowed"); - expect((await harness.api.listApprovals("approved")).map((x) => x.id).sort()).toEqual([one, three].sort()); - expect((await harness.api.listApprovals("rejected")).map((x) => x.id)).toEqual([two]); -}); - -test("an approval answered somewhere else while this page was cut off says so, and is not a failure", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-race"); - const id = ask(harness.driver.guestOf(dot.id), exec("pwd")); - await page.goto(`${harness.webUrl}/inbox`); - const card = page.getByRole("article", { name: "Wants to run a command" }); - await expect(card).toBeVisible(); - // This page stops hearing the stream, as one behind a sleeping laptop does; the CLI answers meanwhile. - await page.route("**/api/stream", (route) => route.abort()); - await page.reload(); - await expect(card).toBeVisible(); - await harness.api.reject(id); - - await card.getByRole("button", { name: "Allow once" }).click(); - await expect(card.getByRole("status")).toHaveText("Already answered, on another tab or another channel"); - await expect(page.getByRole("alert").filter({ hasText: "not recorded" })).toHaveCount(0); - expect((await harness.api.listApprovals("rejected")).map((x) => x.id)).toEqual([id]); -}); - -test("a task's approval is a card on the task, in its drawer too, and answering it lets the task go on", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-task"); - const guest = harness.driver.guestOf(dot.id); - const onInbound = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type !== "task.created") return onInbound(event, g); - g.emit("agent.state", { state: "THINKING" }); - g.emit("task.started", { task_id: event.data.task_id }); - ask(g, { ...exec("make build"), task_id: event.data.task_id }); - }; - const task = await harness.api.createTask(dot.id, { description: "Build the site" }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - const taskCard = page.getByRole("article", { name: "Build the site" }); - await expect(taskCard.getByText("Waiting for you").first()).toBeVisible(); - const approval = taskCard.getByRole("article", { name: "Wants to run a command" }); - await expect(approval.getByText("make build", { exact: true })).toBeVisible(); - await expect(approval.getByRole("link", { name: "From a task" })).toHaveAttribute("href", `/dots/${dot.id}/tasks/${task.id}`); - - await approval.getByRole("link", { name: "From a task" }).click(); - const drawer = page.getByRole("dialog", { name: "Build the site" }); - await expect(drawer.getByRole("article", { name: "Wants to run a command" }).getByText("make build", { exact: true })).toBeVisible(); - await page.keyboard.press("Escape"); - - await approval.getByRole("button", { name: "Allow once" }).click(); - await expect(approval.getByRole("status")).toHaveText("Allowed"); - await expect.poll(async () => (await harness.api.getTask(task.id)).status).toBe("COMPLETED"); - // The task finished and left Running; the Dot's own history holds the answer. - await expect(page.getByRole("region", { name: /^History/ }).getByRole("row", { name: /Build the site/ })).toBeVisible(); -}); - -test("a failed task is in the Inbox for a day, opens in its drawer, and leaves for good when dismissed", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-failed"); - const guest = harness.driver.guestOf(dot.id); - const onInbound = guest.onInbound; - guest.onInbound = (event, g) => { - if (event.type !== "task.created") return onInbound(event, g); - g.emit("task.started", { task_id: event.data.task_id }); - g.emit("task.failed", { task_id: event.data.task_id, error: "the SMTP server refused the connection" }); - }; - const task = await harness.api.createTask(dot.id, { description: "Send the digest" }); - await expect.poll(async () => (await harness.api.getTask(task.id)).status).toBe("FAILED"); - - await page.goto(`${harness.webUrl}/inbox`); - const failed = page.getByRole("article", { name: "Failed: Send the digest" }); - await expect(failed.getByText("the SMTP server refused the connection")).toBeVisible(); - await expect(railInbox(page).getByLabel("1 need you")).toBeVisible(); - await failed.getByRole("link", { name: "Open task" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/tasks/${task.id}$`)); - await page.keyboard.press("Escape"); - await railInbox(page).click(); - await failed.getByRole("button", { name: /^Dismiss/ }).click(); - await expect(failed).toHaveCount(0); - await expect(page.getByText("Nothing needs you")).toBeVisible(); - await expect(railInbox(page).getByLabel(/need you/)).toHaveCount(0); - await page.reload(); - await expect(page.getByText("Nothing needs you")).toBeVisible(); -}); - -test("an approval with a long command and a long file fits a phone, and its answers stay in reach", async ({ page, fresh: harness }) => { - const dot = await harness.createDot("inbox-phone"); - const guest = harness.driver.guestOf(dot.id); - const content = Array.from({ length: 120 }, (_, i) => `line ${i} of a file that is long enough to need the sideways scroll of its own, ${"x".repeat(80)}`).join("\n"); - ask(guest, { tool: "write_file", permission: "files.write", arguments: { path: "workspace-report-with-a-very-long-name-for-a-phone.md", content } }); - ask(guest, exec(`echo ${"very-long-argument-".repeat(20)}`)); - await page.setViewportSize({ width: 390, height: 844 }); - await page.goto(`${harness.webUrl}/inbox`); - await expect(cards(page)).toHaveCount(2); - const overflow = () => page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth); - expect(await overflow()).toBeLessThanOrEqual(0); - - // The long card is taller than the screen, and its answers are on the screen anyway. - const long = page.getByRole("article", { name: "Wants to write a file" }); - await long.scrollIntoViewIfNeeded(); - await expect(long.getByRole("button", { name: "Allow once" })).toBeInViewport(); - await expect(long.getByRole("button", { name: "Deny" })).toBeInViewport(); - await long.getByRole("button", { name: /Show the other/ }).click(); - expect(await overflow()).toBeLessThanOrEqual(0); - - await long.getByRole("button", { name: "Always allow" }).click(); - await expect(page.getByRole("dialog")).toBeVisible(); - expect(await overflow()).toBeLessThanOrEqual(0); -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the approval card is readable: answers, diff and receipt keep their contrast (${scheme})`, async ({ page, fresh: harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`inbox-look-${scheme}`); - const guest = harness.driver.guestOf(dot.id); - ask(guest, { tool: "edit_file", permission: "files.write", arguments: { path: "/etc/motd", old_text: "welcome", new_text: "welcome back" } }); - ask(guest, navigate("https://example.com")); - await page.goto(`${harness.webUrl}/inbox`); - await expect(cards(page)).toHaveCount(2); - - // The first is destructive (a file outside the workspace), the second is not. - const parts: Record = { - "Allow once of a destructive card": "article:has-text('Wants to edit a file') button[data-action=allow]", - "Allow once of an ordinary card": "article:has-text('Wants to open a page') button[data-action=allow]", - "Deny": "button[data-action=deny]", - "Always allow": "button[data-action=always]", - "an added line": "[data-kind=add]", - "a removed line": "[data-kind=remove]", - "the title": "article:has-text('Wants to open a page') [data-slot=approval-card] p", - }; - for (const [name, selector] of Object.entries(parts)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - await page.getByRole("article", { name: "Wants to open a page" }).getByRole("button", { name: "Allow once" }).click(); - await expect(page.getByRole("article", { name: "Wants to open a page" }).getByRole("status")).toBeVisible(); - expect((await lookOf(page, "article:has-text('Wants to open a page') [role=status]")).contrast, "the receipt").toBeGreaterThanOrEqual(4.5); - }); -} diff --git a/apps/web/e2e/look.ts b/apps/web/e2e/look.ts deleted file mode 100644 index 769a2ba2..00000000 --- a/apps/web/e2e/look.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { Page } from "@playwright/test"; - -/** - * What the eye gets from the page, which the role queries cannot see: the colors the browser computed and the - * markers it drew. Read in the page, with the canvas turning any color syntax into the pixels it paints. - */ -export async function lookOf(page: Page, selector: string) { - return page.locator(selector).first().evaluate((element) => { - const context = document.createElement("canvas").getContext("2d", { willReadFrequently: true }); - if (!context) throw new Error("no canvas"); - const rgba = (color: string): [number, number, number, number] => { - context.clearRect(0, 0, 1, 1); - context.fillStyle = "#000"; - context.fillStyle = color; - context.fillRect(0, 0, 1, 1); - const [r = 0, g = 0, b = 0, a = 0] = context.getImageData(0, 0, 1, 1).data; - return [r, g, b, a / 255]; - }; - const luminance = ([r, g, b]: number[]) => { - const [lr = 0, lg = 0, lb = 0] = [r, g, b].map((v) => { - const s = (v ?? 0) / 255; - return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4; - }); - return 0.2126 * lr + 0.7152 * lg + 0.0722 * lb; - }; - // The surface under the text: the fills from the nearest opaque one down to the element's own, each painted over - // the one below (a button's `bg-input/30` is a fraction of a color, not a color). - const layers: Array<[number, number, number, number]> = []; - for (let node: Element | null = element; node; node = node.parentElement) { - const painted = rgba(getComputedStyle(node).backgroundColor); - if (painted[3] > 0) layers.push(painted); - if (painted[3] > 0.99) break; - } - let surface: [number, number, number, number] = rgba(getComputedStyle(document.body).backgroundColor); - for (const layer of layers.reverse()) { - const [r, g, b, alpha] = layer; - surface = [0, 1, 2].map((i) => [r, g, b][i]! * alpha + surface[i]! * (1 - alpha)).concat(1) as [number, number, number, number]; - } - const style = getComputedStyle(element); - const [high, low] = [luminance(rgba(style.color)), luminance(surface)].sort((a, b) => b - a); - return { - contrast: ((high ?? 0) + 0.05) / ((low ?? 0) + 0.05), - listStyle: style.listStyleType, - paddingLeft: style.paddingLeft, - }; - }); -} diff --git a/apps/web/e2e/offline.spec.ts b/apps/web/e2e/offline.spec.ts deleted file mode 100644 index b8ac15c7..00000000 --- a/apps/web/e2e/offline.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { expect, test } from "@playwright/test"; -import { startHarness } from "./harness.js"; - -test("the page says, at the top and as an alert, when the control plane stops answering, also on a phone", async ({ page }) => { - test.setTimeout(180_000); - // A control plane of its own: this one is stopped, and the others of the run must keep theirs. - const harness = await startHarness(); - try { - await page.goto(`${harness.webUrl}/`); - await expect(page.getByRole("complementary", { name: "Navigation" }).getByText("Live")).toBeVisible(); - const banner = page.getByRole("alert").filter({ hasText: "The control plane does not answer" }); - await expect(banner).toHaveCount(0); - - await harness.stopApi(); - await expect(banner).toBeVisible({ timeout: 30_000 }); - await expect(banner).toContainText("out of date"); - // It is above the page, not in the rail, so a phone (where the rail is a closed sheet) sees it too. - await page.setViewportSize({ width: 390, height: 844 }); - await expect(banner).toBeVisible(); - const box = await banner.boundingBox(); - expect(box!.y).toBeLessThan(120); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBeLessThanOrEqual(0); - } finally { - await harness.close(); - } -}); diff --git a/apps/web/e2e/settings.spec.ts b/apps/web/e2e/settings.spec.ts deleted file mode 100644 index 4a67de0f..00000000 --- a/apps/web/e2e/settings.spec.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { join } from "node:path"; -import type { DoctorCheck } from "@invisible-dots/shared"; -import { expect, test } from "./fixtures.js"; - -const MISSING_IMAGE: DoctorCheck = { id: "golden-image", label: "golden image", status: "missing", detail: "none in the images folder", fix: "invisible-dots image build" }; - -test("on the first run Home lists what the host lacks with its commands, takes the key, and turns green when the last thing is done", async ({ page, unconfigured: harness }) => { - const healthy = harness.host.images; - harness.host.images = [MISSING_IMAGE, healthy[1]!]; - try { - await page.goto(`${harness.webUrl}/`); - await expect(page.getByRole("heading", { name: "No Dots yet" })).toBeVisible(); - const checklist = page.getByRole("region", { name: "Get this computer ready" }); - await expect(checklist.getByText(/2 things need attention/)).toBeVisible(); - await expect(checklist.getByText("golden image: Needs attention")).toBeVisible(); - await expect(checklist.getByText("OpenRouter key: Needs attention")).toBeVisible(); - await expect(checklist.getByText("invisible-dots image build")).toBeVisible(); - // The rail says it too, and links to where the key is entered. - await expect(page.getByRole("complementary", { name: "Navigation" }).getByRole("link", { name: "No OpenRouter key stored yet" })).toBeVisible(); - - // The image is built in a terminal; coming back and checking again shows it. - harness.host.images = healthy; - await checklist.getByRole("button", { name: "Check again" }).click(); - await expect(checklist.getByText("golden image: Ready")).toBeVisible(); - await expect(checklist.getByText(/1 thing needs attention/)).toBeVisible(); - - // The key: write-only, stored, and the page agrees without a reload. - const field = checklist.getByLabel("OpenRouter API key"); - await expect(field).toHaveAttribute("type", "password"); - await field.fill("sk-or-first-run-0123456789"); - await checklist.getByRole("button", { name: "Save key" }).click(); - // Not scoped to `checklist`: the region is named for its state and is "This computer is ready" a moment later. - await expect(page.getByText("Saved. No Dot's computer is running, so each gets the key when it starts.")).toBeVisible(); - await expect(page.getByRole("region", { name: "This computer is ready" })).toBeVisible(); - await expect(page.getByRole("complementary", { name: "Navigation" }).getByText("No OpenRouter key stored yet")).toHaveCount(0); - expect(await harness.api.health()).toMatchObject({ openrouter_configured: true }); - expect(await page.content()).not.toContain("sk-or-first-run-0123456789"); - - await page.getByRole("link", { name: "Create your first Dot" }).click(); - await expect(page).toHaveURL(/\/new$/); - await expect(page.getByRole("region", { name: "Before you create" }).getByText("OpenRouter key: Ready")).toBeVisible(); - } finally { - harness.host.images = healthy; - } -}); - -test("the Settings page is in the rail and shows the checks, the key, the appearance, the session and where the data is", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/`); - await page.getByRole("complementary", { name: "Navigation" }).getByRole("link", { name: "Settings" }).click(); - await expect(page).toHaveURL(/\/settings$/); - await expect(page).toHaveTitle(/^Settings/); - await expect(page.getByRole("complementary", { name: "Navigation" }).getByRole("link", { name: "Settings" })).toHaveAttribute("aria-current", "page"); - await expect(page.getByRole("heading", { level: 1, name: "Settings" })).toBeVisible(); - - const checks = page.getByRole("region", { name: "Host checks" }); - await expect(checks.getByText("Control plane: Ready")).toBeVisible(); - await expect(checks.getByText("QEMU: Ready")).toBeVisible(); - await expect(checks.getByText("Everything a Dot needs is in place.")).toBeVisible(); - await expect(page.getByRole("region", { name: "OpenRouter key" }).getByText("A key is stored.")).toBeVisible(); - - const about = page.getByRole("region", { name: "About" }); - await expect(about.getByText("embedded PostgreSQL", { exact: false })).toBeVisible(); - await expect(about.getByText(harness.home, { exact: true })).toBeVisible(); - await expect(about.getByText(join(harness.home, "logs"), { exact: true })).toBeVisible(); - await expect(about.getByText("invisible-dots logs ")).toBeVisible(); -}); - -test("a missing host check shows its command here too, and checking again follows the host", async ({ page, harness }) => { - const healthy = harness.host.images; - harness.host.images = [MISSING_IMAGE, healthy[1]!]; - try { - await page.goto(`${harness.webUrl}/settings`); - const checks = page.getByRole("region", { name: "Host checks" }); - await expect(checks.getByText("golden image: Needs attention")).toBeVisible(); - await expect(checks.getByText("invisible-dots image build")).toBeVisible(); - await expect(checks.getByText(/1 thing needs attention/)).toBeVisible(); - await expect(checks.getByRole("button", { name: "Copy the fix for golden image" })).toBeVisible(); - harness.host.images = healthy; - await checks.getByRole("button", { name: "Check again" }).click(); - await expect(checks.getByText("golden image: Ready")).toBeVisible(); - await expect(checks.getByText("invisible-dots image build")).toHaveCount(0); - } finally { - harness.host.images = healthy; - } -}); - -test("a new key is pushed to the running Dots, and a key that cannot be one is refused before it is sent", async ({ page, harness }) => { - const dot = await harness.createDot("settings-key"); - await page.goto(`${harness.webUrl}/settings`); - const key = page.getByRole("region", { name: "OpenRouter key" }); - const field = key.getByLabel("Replace the key"); - - await field.fill("has a space"); - await key.getByRole("button", { name: "Replace key" }).click(); - await expect(key.getByText(/must be printable ASCII without spaces/)).toBeVisible(); - expect(harness.driver.guestOf(dot.id).openrouterKey).toBe("sk-or-e2e-0123456789abcdef"); - - await field.fill("sk-or-replacement-0123456789"); - await key.getByRole("button", { name: "Replace key" }).click(); - await expect(key.getByText(/^Saved\. Pushed to \d+ running Dots?\.$/)).toBeVisible(); - await expect(field).toHaveValue(""); - expect(harness.driver.guestOf(dot.id).openrouterKey).toBe("sk-or-replacement-0123456789"); - expect(await page.content()).not.toContain("sk-or-replacement-0123456789"); -}); - -test("the theme is chosen on the page, applied at once and kept across a reload", async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: "light" }); - await page.goto(`${harness.webUrl}/settings`); - const appearance = page.getByRole("region", { name: "Appearance" }); - await expect(appearance.getByRole("radio", { name: /System/ })).toBeChecked(); - await appearance.getByRole("radio", { name: /Dark/ }).check(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "dark"); - await page.reload(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "dark"); - await expect(page.getByRole("region", { name: "Appearance" }).getByRole("radio", { name: /Dark/ })).toBeChecked(); - await page.getByRole("region", { name: "Appearance" }).getByRole("radio", { name: /System/ }).check(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "light"); -}); - -test("Settings and Home fit a phone", async ({ page, harness }) => { - await page.setViewportSize({ width: 390, height: 844 }); - for (const path of ["/settings", "/"]) { - await page.goto(`${harness.webUrl}${path}`); - await expect(page.getByRole("heading", { level: 1 })).toBeVisible(); - expect(await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth)).toBe(0); - } -}); - -test("the settings page is usable from the keyboard alone", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/settings`); - const key = page.getByRole("region", { name: "OpenRouter key" }); - await key.getByLabel("Replace the key").focus(); - await page.keyboard.type("sk-or-by-keyboard-0123456789"); - await page.keyboard.press("Enter"); - await expect(key.getByText(/^Saved\./)).toBeVisible(); - const appearance = page.getByRole("region", { name: "Appearance" }); - await appearance.getByRole("radio", { name: /Light/ }).focus(); - await page.keyboard.press("ArrowRight"); - await expect(appearance.getByRole("radio", { name: /Dark/ })).toBeChecked(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "dark"); -}); diff --git a/apps/web/e2e/shell.spec.ts b/apps/web/e2e/shell.spec.ts deleted file mode 100644 index f013c774..00000000 --- a/apps/web/e2e/shell.spec.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { expect, test } from "./fixtures.js"; - -test("the rail lists the Dots and a Dot's page shows its header and its tabs", async ({ page, harness }) => { - const dot = await harness.createDot("shell-header"); - await page.goto(`${harness.webUrl}/`); - const dots = page.getByRole("navigation", { name: "Dots" }); - await dots.getByRole("link", { name: /shell-header/ }).click(); - - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/chat$`)); - await expect(page.getByRole("heading", { level: 1, name: "shell-header" })).toBeVisible(); - await expect(page.getByRole("button", { name: /Show the whole goal/ })).toHaveCount(0); - await expect(dots.getByRole("link", { name: /shell-header/ })).toHaveAttribute("aria-current", "page"); - await expect(page.getByRole("img", { name: "Ready" }).first()).toBeVisible(); - await expect(page.getByText("$0.00")).toBeVisible(); - - const tabs = page.getByRole("navigation", { name: "Dot sections" }); - await expect(tabs.getByRole("link", { name: "Chat" })).toHaveAttribute("aria-current", "page"); - await tabs.getByRole("link", { name: "Tasks" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/tasks$`)); - await expect(tabs.getByRole("link", { name: "Tasks" })).toHaveAttribute("aria-current", "page"); - await expect(page.getByRole("button", { name: "New task" })).toBeVisible(); -}); - -test("a Dot that waits for an approval shows it everywhere at once, live, and clears it when it is answered", async ({ page, harness }) => { - const dot = await harness.createDot("shell-asks"); - await page.goto(`${harness.webUrl}/`); - const link = page.getByRole("navigation", { name: "Dots" }).getByRole("link", { name: /shell-asks/ }); - await expect(link.getByRole("img", { name: "Ready" })).toBeVisible(); - const titleBefore = await page.title(); - - harness.driver.guestOf(dot.id).requestApproval(undefined); - - await expect(link.getByRole("img", { name: "Waiting for you" })).toBeVisible(); - await expect(link.getByLabel("1 waiting")).toBeVisible(); - await expect(page.getByRole("link", { name: /^Inbox/ }).getByLabel("1 need you")).toBeVisible(); - await expect(page).toHaveTitle(`(1) ${titleBefore}`); - - const [approval] = await harness.api.listApprovals("pending"); - await harness.api.approve(approval!.id); - - await expect(link.getByLabel("1 waiting")).toHaveCount(0); - await expect(page).toHaveTitle(titleBefore); -}); - -test("the computer pill stops and starts the computer", async ({ page, harness }) => { - const dot = await harness.createDot("shell-power"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - const pill = page.getByRole("button", { name: /^Computer: Running/ }); - await pill.click(); - page.once("dialog", (dialog) => void dialog.accept()); - await page.getByRole("menuitem", { name: "Stop" }).click(); - await expect(page.getByRole("button", { name: /^Computer: Stopped/ })).toBeVisible(); - await expect(page.getByRole("navigation", { name: "Dots" }).getByRole("link", { name: /shell-power/ }).getByRole("img", { name: "Computer stopped" })).toBeVisible(); - - await page.getByRole("button", { name: /^Computer: Stopped/ }).click(); - await page.getByRole("menuitem", { name: "Start" }).click(); - await expect(page.getByRole("button", { name: /^Computer: Running/ })).toBeVisible(); -}); - -test("an address with nothing behind it says so in the app's look, with the way back to Home", async ({ page, harness }) => { - const response = await page.goto(`${harness.webUrl}/no-such-page-here`); - expect(response?.status()).toBe(404); - await expect(page.getByRole("heading", { name: "There is nothing at this address" })).toBeVisible(); - // The app's own font, not the framework's default page. - expect(await page.evaluate(() => getComputedStyle(document.querySelector("h1")!).fontFamily)).toMatch(/Geist/); - await page.getByRole("link", { name: "Go to Home" }).click(); - await expect(page).toHaveURL(`${harness.webUrl}/`); -}); - -test("the theme follows the system, can be chosen, and is applied before the page is drawn", async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: "dark" }); - await page.goto(`${harness.webUrl}/`); - await expect(page.locator("html")).toHaveAttribute("data-theme", "dark"); - const darkBackground = await page.evaluate(() => getComputedStyle(document.body).backgroundColor); - - await page.getByRole("button", { name: "Theme: System" }).click(); - await page.getByRole("menuitemradio", { name: "Light" }).click(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "light"); - expect(await page.evaluate(() => getComputedStyle(document.body).backgroundColor)).not.toBe(darkBackground); - - // The choice survives a reload, against a system that says dark: the inline script has set it by the time the - // document is parsed, before any module has run. - await page.goto(`${harness.webUrl}/`, { waitUntil: "commit" }); - await page.waitForFunction(() => document.documentElement.dataset.theme === "light"); - await expect(page.getByRole("button", { name: "Theme: Light" })).toBeVisible(); - - await page.getByRole("button", { name: "Theme: Light" }).click(); - await page.getByRole("menuitemradio", { name: "System" }).click(); - await expect(page.locator("html")).toHaveAttribute("data-theme", "dark"); -}); - -test("on a phone the rail is a sheet behind the menu button and nothing scrolls sideways", async ({ page, harness }) => { - const dot = await harness.createDot("shell-phone"); - await page.setViewportSize({ width: 390, height: 800 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - - await expect(page.getByRole("complementary", { name: "Navigation" })).toBeHidden(); - await expect(page.getByRole("heading", { level: 1, name: "shell-phone" })).toBeVisible(); - const overflow = await page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth); - expect(overflow).toBe(0); - - await page.getByRole("button", { name: "Open the menu" }).click(); - const sheet = page.getByRole("dialog"); - await expect(sheet.getByRole("link", { name: /shell-phone/ })).toBeVisible(); - await sheet.getByRole("link", { name: "Home", exact: true }).click(); - await expect(page).toHaveURL(`${harness.webUrl}/`); - await expect(sheet).toBeHidden(); -}); - -test("the whole shell works from the keyboard", async ({ page, harness }) => { - const dot = await harness.createDot("shell-keys"); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await page.getByRole("button", { name: /^Computer: Running/ }).focus(); - await page.keyboard.press("Enter"); - await expect(page.getByRole("menu")).toBeVisible(); - await page.keyboard.press("Escape"); - await expect(page.getByRole("menu")).toBeHidden(); - // The skip link is the first stop of a page that does not take the focus itself (the chat does, for its box). - await page.goto(`${harness.webUrl}/inbox`); - await expect(page.getByRole("heading", { name: "Inbox" })).toBeVisible(); - await page.keyboard.press("Tab"); - await expect(page.getByRole("link", { name: "Skip to content" })).toBeFocused(); - await page.keyboard.press("Enter"); - await expect(page).toHaveURL(/#main$/); -}); - -test("a focused control keeps an outline under forced colors, where box shadows are not drawn, and draws its ring as a shadow otherwise", async ({ page, harness }) => { - await page.goto(`${harness.webUrl}/new`); - await expect(page.getByRole("heading", { name: "Create a Dot" })).toBeVisible(); - const focused = async () => { - // The first button or field: the rail lists every Dot of the host before it, and a link is drawn with the browser's own focus outline. - for (let i = 0; i < 300; i++) { - await page.keyboard.press("Tab"); - const tag = await page.evaluate(() => document.activeElement?.tagName ?? ""); - if (["BUTTON", "INPUT", "TEXTAREA"].includes(tag)) break; - } - return page.evaluate(() => { - const style = getComputedStyle(document.activeElement!); - return { tag: document.activeElement!.tagName, outlineStyle: style.outlineStyle, outlineWidth: style.outlineWidth, outlineColor: style.outlineColor, boxShadow: style.boxShadow }; - }); - }; - - // Ordinary colors: the ring is a shadow, and there is no outline besides it. - const ordinary = await focused(); - expect(ordinary.boxShadow, JSON.stringify(ordinary)).not.toBe("none"); - expect(ordinary.outlineStyle, JSON.stringify(ordinary)).toBe("none"); - - // Forced colors: no shadow is drawn, so the indicator is the outline, in a system color. - await page.emulateMedia({ forcedColors: "active" }); - await page.reload(); - await expect(page.getByRole("heading", { name: "Create a Dot" })).toBeVisible(); - const forced = await focused(); - expect(forced.outlineStyle).toBe("solid"); - // The button's transition-all eases its outline in from the default width (medium, 3px) over 150 ms: it is read - // once settled, or a loaded machine reads it on the way. - await expect.poll(() => page.evaluate(() => getComputedStyle(document.activeElement!).outlineWidth)).toBe("2px"); - expect(forced.outlineColor).not.toMatch(/rgba\(0, 0, 0, 0\)|transparent/); -}); diff --git a/apps/web/e2e/skills.spec.ts b/apps/web/e2e/skills.spec.ts deleted file mode 100644 index d7180e56..00000000 --- a/apps/web/e2e/skills.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { expect, test } from "./fixtures.js"; - -test("the Skills tab lists the built-in skills and the Dot's own, opens one as text, and follows one the Dot writes", async ({ page, harness }) => { - const dot = await harness.createDot("skills-tab"); - const guest = harness.driver.guestOf(dot.id); - await page.goto(`${harness.webUrl}/dots/${dot.id}/chat`); - await page.getByRole("navigation", { name: "Dot sections" }).getByRole("link", { name: "Skills" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/skills$`)); - - const list = page.getByRole("list", { name: "The Dot's skills" }); - await expect(list.getByRole("link")).toHaveCount(1); - await expect(list.getByRole("link").first()).toContainText("invisible-playwright"); - await expect(list.getByRole("link").first()).toContainText("Built in"); - await list.getByRole("link").first().click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/skills\\?skill=invisible-playwright$`)); - await expect(page.getByRole("region", { name: "The skill invisible-playwright" }).getByRole("heading", { name: "The browser" })).toBeVisible(); - - // The Dot writes a skill of its own in a turn: the list has it once the turn ends. - guest.skills = [ - ...guest.skills, - { name: "shop-login", description: "Log in to the shop.", source: "dot", path: "/home/dot/skills/shop-login/SKILL.md", content: "---\nname: shop-login\ndescription: Log in to the shop.\n---\n\nClick Sign in.\n" }, - ]; - guest.emit("message.assistant", { text: "I wrote down how to log in." }); - await expect(list.getByRole("link").filter({ hasText: "shop-login" })).toContainText("Written by the Dot"); -}); - -test("a stopped computer says so on the Skills tab, and starts from there", async ({ page, harness }) => { - const dot = await harness.createDot("skills-stopped"); - await harness.api.stopComputer(dot.id); - await page.goto(`${harness.webUrl}/dots/${dot.id}/skills`); - await expect(page.getByRole("status").filter({ hasText: "Start the computer to see its skills" })).toBeVisible(); - await page.getByRole("button", { name: "Start the computer" }).click(); - await expect(page.getByRole("list", { name: "The Dot's skills" })).toBeVisible(); -}); diff --git a/apps/web/e2e/tasks.spec.ts b/apps/web/e2e/tasks.spec.ts deleted file mode 100644 index 0e63ba56..00000000 --- a/apps/web/e2e/tasks.spec.ts +++ /dev/null @@ -1,228 +0,0 @@ -import type { FakeGuest } from "@invisible-dots/scheduler/testing"; -import { TASK_LIST_LIMIT } from "@invisible-dots/shared"; -import { expect, test } from "./fixtures.js"; -import type { Harness } from "./harness.js"; -import { lookOf } from "./look.js"; - -/** A guest that takes a task up and keeps it: the test says what it reports and when it ends. */ -function holdTasks(guest: FakeGuest): void { - guest.onInbound = (event, g) => { - if (event.type !== "task.created") return; - g.emit("agent.state", { state: "THINKING" }); - g.emit("task.started", { task_id: event.data.task_id }); - }; -} - -async function taskNamed(harness: Harness, dotId: string, description: string) { - const task = (await harness.api.listTasks(dotId)).find((t) => t.description === description); - if (!task) throw new Error(`no task "${description}"`); - return task; -} - -test("a task is made in the dialog, its progress line follows the Dot live, and it ends in the history with its result", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-live"); - const guest = harness.driver.guestOf(dot.id); - holdTasks(guest); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByText("No tasks yet")).toBeVisible(); - - await page.getByRole("button", { name: "New task" }).click(); - const dialog = page.getByRole("dialog", { name: "New task" }); - await dialog.getByLabel("What should it do?").fill("Find the cheapest fare to Lisbon"); - await dialog.getByRole("radio", { name: "High" }).check(); - await dialog.getByRole("button", { name: "Create task" }).click(); - - const card = page.getByRole("article", { name: "Find the cheapest fare to Lisbon" }); - await expect(card).toBeVisible(); - await expect(card.getByText(/Status: Running/)).toBeVisible(); - await expect(card.getByText(/Priority: High/)).toBeVisible(); - const task = await taskNamed(harness, dot.id, "Find the cheapest fare to Lisbon"); - expect(task.priority).toBe(10); - await expect(card.getByText(/has not reported anything yet/)).toBeVisible(); - - // Nothing below reloads the page: this marker would not survive it. - await page.evaluate(() => ((window as unknown as { marker: number }).marker = 7)); - - guest.emit("task.progress", { task_id: task.id, text: "Reading the first airline's fares", spent_usd: 0.05 }); - await expect(card.getByText("Reading the first airline's fares")).toBeVisible(); - await expect(card.getByText("$0.05")).toBeVisible(); - // The Dot's header says it too, wherever the person is in it. - await expect(page.getByRole("link", { name: /Reading the first airline's fares/ }).first()).toBeVisible(); - - guest.emit("task.progress", { task_id: task.id, text: "Comparing three airlines", spent_usd: 0.11 }); - await expect(card.getByText("Comparing three airlines")).toBeVisible(); - await expect(card.getByText("Reading the first airline's fares")).toHaveCount(0); - await expect(card.getByText("$0.11")).toBeVisible(); - - guest.emit("task.completed", { task_id: task.id, summary: "The cheapest fare is **EUR 41** on Tuesday.", spent_usd: 0.14 }); - guest.emit("agent.state", { state: "IDLE" }); - const history = page.getByRole("region", { name: /^History/ }); - const row = history.getByRole("row", { name: /Find the cheapest fare/ }); - await expect(row.getByText(/Status: Completed/)).toBeVisible(); - await expect(row.getByText("$0.14")).toBeVisible(); - await expect(row.getByText(/The cheapest fare is/)).toBeVisible(); - await expect(card).toHaveCount(0); - await expect(page.getByText("Nothing is running.")).toBeVisible(); - expect(await page.evaluate(() => (window as unknown as { marker: number }).marker)).toBe(7); - - // The drawer has its own address, and tells the story of the task. - await row.getByRole("link", { name: "Find the cheapest fare to Lisbon" }).click(); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/tasks/${task.id}$`)); - const drawer = page.getByRole("dialog", { name: "Find the cheapest fare to Lisbon" }); - await expect(drawer.getByRole("region", { name: "Result" }).locator("strong")).toHaveText("EUR 41"); - await expect(drawer.getByText("Reading the first airline's fares")).toBeVisible(); - await expect(drawer.getByText("Comparing three airlines")).toBeVisible(); - await expect(drawer.getByText("Task created")).toBeVisible(); - await expect(drawer.getByText("$0.14")).toBeVisible(); - - // Opened by its address on a fresh load, it is the same. - await page.reload(); - await expect(page.getByRole("dialog", { name: "Find the cheapest fare to Lisbon" }).getByText("Comparing three airlines")).toBeVisible(); - await page.keyboard.press("Escape"); - await expect(page).toHaveURL(new RegExp(`/dots/${dot.id}/tasks$`)); - await expect(page.getByRole("dialog")).toHaveCount(0); -}); - -test("a running task is cancelled after a question, and the history keeps it as cancelled", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-cancel"); - holdTasks(harness.driver.guestOf(dot.id)); - const created = await harness.api.createTask(dot.id, { description: "Sort the whole archive" }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - const card = page.getByRole("article", { name: "Sort the whole archive" }); - await expect(card.getByText(/Status: Running/)).toBeVisible(); - - await card.getByRole("button", { name: /^Cancel/ }).click(); - const dialog = page.getByRole("dialog", { name: "Cancel this task?" }); - await dialog.getByRole("button", { name: "Keep it" }).click(); - await expect(dialog).toHaveCount(0); - expect((await harness.api.getTask(created.id)).status).toBe("RUNNING"); - - await card.getByRole("button", { name: /^Cancel/ }).click(); - await page.getByRole("dialog", { name: "Cancel this task?" }).getByRole("button", { name: "Cancel task" }).click(); - const row = page.getByRole("region", { name: /^History/ }).getByRole("row", { name: /Sort the whole archive/ }); - await expect(row.getByText(/Status: Cancelled/)).toBeVisible(); - await expect(row.getByText("cancelled by the user")).toBeVisible(); - await expect(card).toHaveCount(0); - expect((await harness.api.getTask(created.id)).status).toBe("CANCELLED"); -}); - -test("a task that fails shows the reason as the Dot gave it, in the history and in the drawer", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-fail"); - const guest = harness.driver.guestOf(dot.id); - holdTasks(guest); - const created = await harness.api.createTask(dot.id, { description: "Rebuild the index" }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByRole("article", { name: "Rebuild the index" })).toBeVisible(); - - guest.emit("task.failed", { task_id: created.id, error: "the per-task cost cap of $1.00 was reached", spent_usd: 1.02 }); - guest.emit("agent.state", { state: "IDLE" }); - const row = page.getByRole("region", { name: /^History/ }).getByRole("row", { name: /Rebuild the index/ }); - await expect(row.getByText(/Status: Failed/)).toBeVisible(); - await expect(row.getByText("the per-task cost cap of $1.00 was reached")).toBeVisible(); - await expect(row.getByText("$1.02")).toBeVisible(); - - await page.getByRole("region", { name: /^History/ }).getByRole("button", { name: "Completed" }).click(); - await expect(page.getByText("No completed tasks.")).toBeVisible(); - await page.getByRole("button", { name: "Failed" }).click(); - await row.getByRole("link", { name: "Rebuild the index" }).click(); - await expect(page.getByRole("dialog").getByRole("alert").filter({ hasText: "cost cap of $1.00" })).toBeVisible(); -}); - -test("tasks that wait are in the queue in the order the Dot takes them, and one with a time is scheduled", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-queue"); - holdTasks(harness.driver.guestOf(dot.id)); - await harness.api.createTask(dot.id, { description: "Occupy the Dot" }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByRole("article", { name: "Occupy the Dot" })).toBeVisible(); - - await harness.api.createTask(dot.id, { description: "Tidy up", priority: -10 }); - await harness.api.createTask(dot.id, { description: "Answer the customer", priority: 100 }); - await harness.api.createTask(dot.id, { description: "Weekly report" }); - await harness.api.createTask(dot.id, { description: "Next week's plan", scheduled_at: new Date(Date.now() + 26 * 3_600_000).toISOString() }); - - const queue = page.getByRole("region", { name: /^Queue/ }); - await expect(queue.getByRole("article")).toHaveCount(3); - expect(await queue.getByRole("article").evaluateAll((items) => items.map((i) => i.getAttribute("aria-label")))).toEqual(["Answer the customer", "Weekly report", "Tidy up"]); - await expect(queue.getByRole("article", { name: "Answer the customer" }).getByText("Next", { exact: true })).toBeVisible(); - await expect(queue.getByRole("article", { name: "Answer the customer" }).getByText(/Priority: Urgent/)).toBeVisible(); - const scheduled = page.getByRole("region", { name: /^Scheduled/ }); - await expect(scheduled.getByRole("article", { name: "Next week's plan" }).getByText(/in 1d/)).toBeVisible(); -}); - -test("the Tasks page and its drawer fit a phone: no sideways scroll at 390 px", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-phone"); - const guest = harness.driver.guestOf(dot.id); - holdTasks(guest); - const long = "Collect every price from the long list of airlines and write them into one very long spreadsheet with a column for each day"; - const created = await harness.api.createTask(dot.id, { description: long }); - await harness.api.createTask(dot.id, { description: "Another one waiting in line behind the first, with words enough to wrap" }); - await page.setViewportSize({ width: 390, height: 844 }); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByRole("article", { name: long })).toBeVisible(); - guest.emit("task.progress", { task_id: created.id, text: "An unbroken line of progress text that is long enough to wrap on a narrow screen several times over", spent_usd: 0.01 }); - await expect(page.getByText(/An unbroken line of progress/).first()).toBeVisible(); - const overflow = () => page.evaluate(() => document.documentElement.scrollWidth - document.documentElement.clientWidth); - expect(await overflow()).toBeLessThanOrEqual(0); - - await page.getByRole("link", { name: long }).first().click(); - await expect(page.getByRole("dialog", { name: long })).toBeVisible(); - expect(await overflow()).toBeLessThanOrEqual(0); -}); - -for (const scheme of ["light", "dark"] as const) { - test(`the Tasks page is drawn by its own styles, not the old stylesheet's: readable buttons, no list markers (${scheme})`, async ({ page, harness }) => { - await page.emulateMedia({ colorScheme: scheme }); - const dot = await harness.createDot(`tasks-look-${scheme}`); - const guest = harness.driver.guestOf(dot.id); - holdTasks(guest); - await harness.api.createTask(dot.id, { description: "Occupy the Dot" }); - await harness.api.createTask(dot.id, { description: "Waits in the queue" }); - await harness.api.createTask(dot.id, { description: "Waits for its time", scheduled_at: new Date(Date.now() + 26 * 3_600_000).toISOString() }); - const early = await harness.api.createTask(dot.id, { description: "Dropped early", scheduled_at: new Date(Date.now() + 27 * 3_600_000).toISOString() }); - await harness.api.cancelTask(early.id); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByRole("region", { name: /^History/ }).getByRole("row", { name: /Dropped early/ })).toBeVisible(); - await expect(page.getByRole("region", { name: /^Queue/ }).getByRole("article", { name: "Waits in the queue" })).toBeVisible(); - await expect(page.getByRole("region", { name: /^Scheduled/ }).getByRole("article", { name: "Waits for its time" })).toBeVisible(); - - for (const list of ["section[aria-labelledby=tasks-running] ul", "section[aria-labelledby=tasks-scheduled] ul", "section[aria-labelledby=tasks-queue] ol"]) { - const look = await lookOf(page, list); - expect(look.listStyle, list).toBe("none"); - expect(look.paddingLeft, list).toBe("0px"); - } - const buttons: Record = { - "the Cancel button": "section[aria-labelledby=tasks-running] button:has-text('Cancel')", - "a history filter": "section[aria-labelledby=tasks-history] button[aria-pressed=false]", - "the pressed history filter": "section[aria-labelledby=tasks-history] button[aria-pressed=true]", - "the new task button": "button:has-text('New task')", - }; - for (const [name, selector] of Object.entries(buttons)) { - expect((await lookOf(page, selector)).contrast, name).toBeGreaterThanOrEqual(4.5); - } - }); -} - -test("a Dot with more tasks than the host lists says so, and one with fewer does not", async ({ page, harness }) => { - const dot = await harness.createDot("tasks-many"); - holdTasks(harness.driver.guestOf(dot.id)); - const make = async (from: number, to: number) => { - for (let start = from; start < to; start += 20) { - await Promise.all(Array.from({ length: Math.min(20, to - start) }, (_, i) => harness.api.createTask(dot.id, { description: `Backlog ${start + i}` }))); - } - }; - await make(0, TASK_LIST_LIMIT - 1); - await page.goto(`${harness.webUrl}/dots/${dot.id}/tasks`); - await expect(page.getByRole("region", { name: /^Queue/ })).toBeVisible(); - await expect(page.getByRole("status").filter({ hasText: "tasks are listed" })).toHaveCount(0); - - await make(TASK_LIST_LIMIT - 1, TASK_LIST_LIMIT + 5); - await page.reload(); - const notice = page.getByRole("status").filter({ hasText: `The newest ${TASK_LIST_LIMIT} tasks are listed` }); - await expect(notice).toBeVisible(); - await expect(page.getByRole("region", { name: /^Queue/ }).getByRole("listitem")).toHaveCount(TASK_LIST_LIMIT); - - // The tasks past the newest page are reached: read on request, joined to the queue, and the notice is gone. - await notice.getByRole("button", { name: "Show older tasks" }).click(); - await expect(page.getByRole("region", { name: /^Queue/ }).getByRole("listitem")).toHaveCount(TASK_LIST_LIMIT + 4); - await expect(notice).toHaveCount(0); -}); diff --git a/apps/web/e2e/tsconfig.json b/apps/web/e2e/tsconfig.json deleted file mode 100644 index 8dd222bc..00000000 --- a/apps/web/e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "lib": ["ES2023", "DOM"] - }, - "include": [ - "./**/*.ts", - "../playwright.config.ts" - ] -} diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts deleted file mode 100644 index 0d9ceee7..00000000 --- a/apps/web/next.config.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { dirname, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import type { NextConfig } from "next"; - -// invisible_dots sends no telemetry, and nothing turns it on. Next's build and dev server create their telemetry -// after they load this file and read this variable first, ahead of any setting the person's own Next has stored, so -// every way of building the web client (setup, npm run build, next dev) sends nothing. -process.env.NEXT_TELEMETRY_DISABLED = "1"; - -// The npm workspace root: dependencies are hoisted there, and the shared -// package is linked from there as TypeScript source. -const workspaceRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../.."); - -const config: NextConfig = { - // `invisible-dots server` runs the built web client as a child process: - // .next/standalone holds a server.js and the files it needs, no `next` CLI. - output: "standalone", - // The workspace packages publish their .ts sources, not compiled output. - transpilePackages: ["@invisible-dots/shared", "@invisible-dots/sdk"], - outputFileTracingRoot: workspaceRoot, - poweredByHeader: false, - reactStrictMode: true, - // The shared package is written for NodeNext and imports "./config.js" for - // config.ts. Turbopack only maps .js to .ts when the app's own tsconfig uses - // NodeNext resolution, which Next's own imports ("next/navigation") do not - // type-check under, so the build uses webpack with an extension alias. - webpack(webpackConfig: { resolve?: { extensionAlias?: Record } }) { - webpackConfig.resolve ??= {}; - webpackConfig.resolve.extensionAlias = { - ...webpackConfig.resolve.extensionAlias, - ".js": [".ts", ".tsx", ".js"], - }; - return webpackConfig; - }, -}; - -export default config; diff --git a/apps/web/package.json b/apps/web/package.json deleted file mode 100644 index 76f47e35..00000000 --- a/apps/web/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "@invisible-dots/web", - "version": "0.0.0", - "private": true, - "description": "Next.js web client.", - "license": "MIT", - "type": "module", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "dev": "next dev --webpack --hostname 127.0.0.1 --port 3000", - "build": "node scripts/build.mjs", - "test": "vitest run --root ../.. apps/web/", - "typecheck": "tsc -p tsconfig.json", - "test:e2e": "playwright test" - }, - "dependencies": { - "@fontsource/geist-mono": "5.3.0", - "@fontsource/geist-sans": "5.3.0", - "@invisible-dots/sdk": "0.0.0", - "@invisible-dots/shared": "0.0.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "^1.52.0", - "next": "^16.3.8", - "qrcode": "1.5.4", - "radix-ui": "^1.7.0", - "react": "^19.3.0", - "react-dom": "^19.3.0", - "react-markdown": "^10.1.0", - "remark-gfm": "^4.0.1", - "sonner": "^2.0.8", - "tailwind-merge": "^3.7.0", - "use-stick-to-bottom": "^1.1.6" - }, - "devDependencies": { - "@invisible-dots/api": "0.0.0", - "@invisible-dots/channels": "0.0.0", - "@invisible-dots/scheduler": "0.0.0", - "@playwright/test": "^1.63.0", - "@tailwindcss/postcss": "^4.3.3", - "@testing-library/dom": "^10.4.2", - "@testing-library/react": "^16.3.3", - "@testing-library/user-event": "^14.6.7", - "@types/qrcode": "1.5.6", - "@types/react": "^19.3.0", - "@types/react-dom": "^19.3.0", - "jsdom": "^30.1.2", - "postcss": "^8.5.29", - "tailwindcss": "^4.3.3", - "tw-animate-css": "^1.4.0" - } -} diff --git a/apps/web/playwright.config.ts b/apps/web/playwright.config.ts deleted file mode 100644 index 04d96325..00000000 --- a/apps/web/playwright.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig, devices } from "@playwright/test"; - -/** - * The browser tests of the web client. Each worker starts its own control plane and web server (e2e/harness.ts), so - * nothing here needs a server running beforehand, only `next build`. One worker: the specs share that one server and - * make their own Dots, named for the test. - */ -export default defineConfig({ - testDir: "e2e", - testMatch: "**/*.spec.ts", - timeout: 60_000, - expect: { timeout: 10_000 }, - workers: 1, - fullyParallel: false, - forbidOnly: Boolean(process.env.CI), - // The JUnit report is written on every run, not only under CI: .github/scripts/test-guard.mjs counts what ran - // against the floors file, and a local run must not leave an older report for it to read. - reporter: [["list"], ["junit", { outputFile: "playwright-report.xml" }]], - use: { trace: "retain-on-failure" }, - projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }], -}); diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs deleted file mode 100644 index 173e83ca..00000000 --- a/apps/web/postcss.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// Tailwind CSS 4 runs as a PostCSS plugin inside Next's webpack build. -export default { - plugins: { - "@tailwindcss/postcss": {}, - }, -}; diff --git a/apps/web/scripts/build.mjs b/apps/web/scripts/build.mjs deleted file mode 100644 index 10a8d7bc..00000000 --- a/apps/web/scripts/build.mjs +++ /dev/null @@ -1,16 +0,0 @@ -// `npm run build --workspace @invisible-dots/web`: `next build`, then standalone.mjs. It is a script of its own and -// not an `&&` in package.json so that `invisible-dots setup --all` can run exactly these steps with plain node: npm -// is a .cmd file on Windows, which Node starts only through a shell, and the CLI never starts a program through one. -import { spawnSync } from "node:child_process"; -import { createRequire } from "node:module"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; - -const app = dirname(dirname(fileURLToPath(import.meta.url))); -const next = createRequire(join(app, "package.json")).resolve("next/dist/bin/next"); - -for (const args of [[next, "build", "--webpack"], [join(app, "scripts", "standalone.mjs")]]) { - const result = spawnSync(process.execPath, args, { cwd: app, stdio: "inherit" }); - if (result.error) throw result.error; - if (result.status !== 0) process.exit(result.status ?? 1); -} diff --git a/apps/web/scripts/standalone.mjs b/apps/web/scripts/standalone.mjs deleted file mode 100644 index 05079694..00000000 --- a/apps/web/scripts/standalone.mjs +++ /dev/null @@ -1,23 +0,0 @@ -// Finishes `next build` for `invisible-dots server`, which runs the web client -// as a child process: Next's standalone output holds the server and what it -// traced, but not the browser files (`.next/static`) or `public/`, which its -// own documentation says to copy next to it. apps/cli/src/web.ts looks for -// the result at the paths below. -import { cpSync, existsSync, rmSync } from "node:fs"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; - -const app = dirname(dirname(fileURLToPath(import.meta.url))); -// The workspace root is Next's tracing root (next.config.ts), so the app sits at its own path inside the standalone tree. -const standalone = join(app, ".next", "standalone", "apps", "web"); - -if (!existsSync(join(standalone, "server.js"))) { - throw new Error(`next build left no ${join(standalone, "server.js")}: is output "standalone" set in next.config.ts?`); -} -for (const [from, to] of [ - [join(app, ".next", "static"), join(standalone, ".next", "static")], - [join(app, "public"), join(standalone, "public")], -]) { - rmSync(to, { recursive: true, force: true }); - if (existsSync(from)) cpSync(from, to, { recursive: true }); -} diff --git a/apps/web/src/app/(app)/approvals/page.tsx b/apps/web/src/app/(app)/approvals/page.tsx deleted file mode 100644 index a181c88f..00000000 --- a/apps/web/src/app/(app)/approvals/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { redirect } from "next/navigation"; -import { inboxHref } from "../../../lib/inbox"; - -/** The approvals of every Dot are the Inbox's first tab. */ -export default function ApprovalsPage() { - redirect(inboxHref()); -} diff --git a/apps/web/src/app/(app)/dots/[id]/activity/page.tsx b/apps/web/src/app/(app)/dots/[id]/activity/page.tsx deleted file mode 100644 index 3307e4dd..00000000 --- a/apps/web/src/app/(app)/dots/[id]/activity/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { ActivityView } from "../../../../../components/activity/ActivityView"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Activity"); -} - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/approvals/page.tsx b/apps/web/src/app/(app)/dots/[id]/approvals/page.tsx deleted file mode 100644 index c1e33cb4..00000000 --- a/apps/web/src/app/(app)/dots/[id]/approvals/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { redirect } from "next/navigation"; -import { inboxHref } from "../../../../../lib/inbox"; - -/** The approvals of one Dot are the Inbox filtered to it. */ -export default async function Page({ params }: { params: Promise<{ id: string }> }) { - const { id } = await params; - redirect(inboxHref({ dot: id })); -} diff --git a/apps/web/src/app/(app)/dots/[id]/channels/page.tsx b/apps/web/src/app/(app)/dots/[id]/channels/page.tsx deleted file mode 100644 index 4294784a..00000000 --- a/apps/web/src/app/(app)/dots/[id]/channels/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { ChannelsView } from "../../../../../components/channels/ChannelsView"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Channels"); -} - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/chat/page.tsx b/apps/web/src/app/(app)/dots/[id]/chat/page.tsx deleted file mode 100644 index e6ee6e44..00000000 --- a/apps/web/src/app/(app)/dots/[id]/chat/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { ChatView } from "../../../../../components/chat/ChatView"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Chat"); -} - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/computer/page.tsx b/apps/web/src/app/(app)/dots/[id]/computer/page.tsx deleted file mode 100644 index c67adaac..00000000 --- a/apps/web/src/app/(app)/dots/[id]/computer/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { ComputerView } from "../../../../../components/computer/ComputerView"; -import { parseComputerQuery } from "../../../../../lib/computer-view"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Computer"); -} - -export default async function Page({ searchParams }: { searchParams: Promise> }) { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/layout.tsx b/apps/web/src/app/(app)/dots/[id]/layout.tsx deleted file mode 100644 index f5eb13f6..00000000 --- a/apps/web/src/app/(app)/dots/[id]/layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import type { ReactNode } from "react"; -import { DotShell } from "../../../../components/DotShell"; -import { DotEventScope } from "../../../../components/events"; - -export default async function DotLayout({ - children, - params, -}: { - children: ReactNode; - params: Promise<{ id: string }>; -}) { - const { id } = await params; - return ( - - {children} - - ); -} diff --git a/apps/web/src/app/(app)/dots/[id]/page.tsx b/apps/web/src/app/(app)/dots/[id]/page.tsx deleted file mode 100644 index 5a41ad33..00000000 --- a/apps/web/src/app/(app)/dots/[id]/page.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { redirect } from "next/navigation"; - -export default async function DotIndex({ params }: { params: Promise<{ id: string }> }) { - const { id } = await params; - redirect(`/dots/${encodeURIComponent(id)}/chat`); -} diff --git a/apps/web/src/app/(app)/dots/[id]/settings/page.tsx b/apps/web/src/app/(app)/dots/[id]/settings/page.tsx deleted file mode 100644 index dfbe200b..00000000 --- a/apps/web/src/app/(app)/dots/[id]/settings/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { DotSettings } from "../../../../../components/dot-settings/DotSettings"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Settings"); -} - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/skills/page.tsx b/apps/web/src/app/(app)/dots/[id]/skills/page.tsx deleted file mode 100644 index 6906fad8..00000000 --- a/apps/web/src/app/(app)/dots/[id]/skills/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; -import { SkillsView } from "../../../../../components/skills/SkillsView"; -import { parseSkillsQuery } from "../../../../../lib/skills-view"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Skills"); -} - -export default async function Page({ searchParams }: { searchParams: Promise> }) { - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/tasks/[taskId]/page.tsx b/apps/web/src/app/(app)/dots/[id]/tasks/[taskId]/page.tsx deleted file mode 100644 index 2d2f8503..00000000 --- a/apps/web/src/app/(app)/dots/[id]/tasks/[taskId]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../../lib/dot-title"; -import { TaskDrawer } from "../../../../../../components/tasks/task-drawer"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Task"); -} - -export default async function Page({ params }: { params: Promise<{ taskId: string }> }) { - const { taskId } = await params; - return ; -} diff --git a/apps/web/src/app/(app)/dots/[id]/tasks/layout.tsx b/apps/web/src/app/(app)/dots/[id]/tasks/layout.tsx deleted file mode 100644 index 77d8d6f1..00000000 --- a/apps/web/src/app/(app)/dots/[id]/tasks/layout.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import type { ReactNode } from "react"; -import { TasksView } from "../../../../../components/tasks/TasksView"; - -export default function Layout({ children }: { children: ReactNode }) { - return {children}; -} diff --git a/apps/web/src/app/(app)/dots/[id]/tasks/page.tsx b/apps/web/src/app/(app)/dots/[id]/tasks/page.tsx deleted file mode 100644 index a05ae260..00000000 --- a/apps/web/src/app/(app)/dots/[id]/tasks/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { Metadata } from "next"; -import { dotPageTitle } from "../../../../../lib/dot-title"; - -export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { - return dotPageTitle((await params).id, "Tasks"); -} - -/** The list is the layout's: this page is the address with no task open, and adds nothing to it. */ -export default function Page() { - return null; -} diff --git a/apps/web/src/app/(app)/dots/[id]/timeline/page.tsx b/apps/web/src/app/(app)/dots/[id]/timeline/page.tsx deleted file mode 100644 index 3be5110d..00000000 --- a/apps/web/src/app/(app)/dots/[id]/timeline/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { redirect } from "next/navigation"; - -/** The Timeline became the Activity page. */ -export default async function Page({ params }: { params: Promise<{ id: string }> }) { - const { id } = await params; - redirect(`/dots/${encodeURIComponent(id)}/activity`); -} diff --git a/apps/web/src/app/(app)/inbox/page.tsx b/apps/web/src/app/(app)/inbox/page.tsx deleted file mode 100644 index f196ba2c..00000000 --- a/apps/web/src/app/(app)/inbox/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import type { Metadata } from "next"; -import { InboxView } from "../../../components/inbox/InboxView"; -import { parseInboxQuery } from "../../../lib/inbox"; - -export const metadata: Metadata = { title: "Inbox" }; - -export default async function InboxPage({ searchParams }: { searchParams: Promise> }) { - return ; -} diff --git a/apps/web/src/app/(app)/layout.tsx b/apps/web/src/app/(app)/layout.tsx deleted file mode 100644 index 29f155e8..00000000 --- a/apps/web/src/app/(app)/layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import type { ReactNode } from "react"; -import { EventStreamProvider } from "../../components/events"; -import { AttentionProvider } from "../../components/shell/attention"; -import { AppShell } from "../../components/shell/AppShell"; - -/** - * Every page of the app: one live stream, what needs the person, and the frame with the rail. The page for an address - * with nothing behind it lives outside this group, so it shows without them. - */ -export default function AppLayout({ children }: { children: ReactNode }) { - return ( - - - {children} - - - ); -} diff --git a/apps/web/src/app/(app)/new/page.tsx b/apps/web/src/app/(app)/new/page.tsx deleted file mode 100644 index 102f1a8e..00000000 --- a/apps/web/src/app/(app)/new/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { Metadata } from "next"; -import { NewDotPage } from "../../../components/new-dot/NewDotPage"; - -export const metadata: Metadata = { title: "Create a Dot" }; - -export default function New() { - return ; -} diff --git a/apps/web/src/app/(app)/page.tsx b/apps/web/src/app/(app)/page.tsx deleted file mode 100644 index 1fc87e13..00000000 --- a/apps/web/src/app/(app)/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { Metadata } from "next"; -import { HomePage } from "../../components/home/HomePage"; - -export const metadata: Metadata = { title: "Dots" }; - -export default function Home() { - return ; -} diff --git a/apps/web/src/app/(app)/settings/page.tsx b/apps/web/src/app/(app)/settings/page.tsx deleted file mode 100644 index b9317f2a..00000000 --- a/apps/web/src/app/(app)/settings/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { Metadata } from "next"; -import { HostSettings } from "../../../components/settings/HostSettings"; - -export const metadata: Metadata = { title: "Settings" }; - -export default function SettingsPage() { - return ; -} diff --git a/apps/web/src/app/api/[...path]/route.ts b/apps/web/src/app/api/[...path]/route.ts deleted file mode 100644 index 8d854407..00000000 --- a/apps/web/src/app/api/[...path]/route.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { - ProxyError, - apiBaseUrl, - checkRequestOrigin, - errorResponse, - forwardRequestHeaders, - forwardResponseHeaders, - loadApiToken, - upstreamUrl, -} from "../../../lib/proxy"; - -export const dynamic = "force-dynamic"; -export const runtime = "nodejs"; - -interface RouteContext { - params: Promise<{ path: string[] }>; -} - -async function proxy(request: Request, context: RouteContext): Promise { - const refusal = checkRequestOrigin({ - method: request.method, - host: request.headers.get("host"), - origin: request.headers.get("origin"), - secFetchSite: request.headers.get("sec-fetch-site"), - }); - if (refusal) return errorResponse(403, "forbidden", refusal); - - const { path } = await context.params; - let target: string; - let token: string; - try { - target = upstreamUrl(apiBaseUrl(), path, new URL(request.url).search); - token = await loadApiToken(); - } catch (error) { - if (error instanceof ProxyError) { - if (error.status >= 500) console.error(`[web proxy] ${error.message}`); - return errorResponse(error.status, error.code, error.message); - } - throw error; - } - const hasBody = request.method !== "GET" && request.method !== "HEAD"; - let upstream: Response; - try { - upstream = await fetch(target, { - method: request.method, - headers: forwardRequestHeaders(request.headers, token), - body: hasBody ? await request.arrayBuffer() : undefined, - // Closing the browser tab aborts the request, which ends an SSE stream upstream too. - signal: request.signal, - redirect: "manual", - cache: "no-store", - }); - } catch (error) { - if (request.signal.aborted) return new Response(null, { status: 499 }); - const reason = (error as Error & { cause?: { code?: string } }).cause?.code ?? (error as Error).message; - console.error(`[web proxy] ${request.method} ${target} failed: ${reason}`); - return errorResponse(502, "api_unreachable", `the control plane API at ${apiBaseUrl()} did not answer (${reason})`); - } - - return new Response(upstream.body, { - status: upstream.status, - statusText: upstream.statusText, - headers: forwardResponseHeaders(upstream.headers), - }); -} - -export const GET = proxy; -export const POST = proxy; -export const PUT = proxy; -export const PATCH = proxy; -export const DELETE = proxy; diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css deleted file mode 100644 index 69b19bd5..00000000 --- a/apps/web/src/app/globals.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - * The stylesheet of the web client: Tailwind 4 and the design tokens (tokens.css). Every screen is styled by - * utilities over those tokens; there is no other stylesheet. - */ -@import "tailwindcss"; -@import "tw-animate-css"; -@import "./tokens.css"; - -@custom-variant dark (&:is([data-theme="dark"] *)); - -@theme inline { - /* Only the tokens are colors: no stray palette to reach for. */ - --color-*: initial; - --color-black: #000000; - --color-white: #ffffff; - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-primary-hover: var(--primary-hover); - --color-ok: var(--ok); - --color-ok-soft: var(--ok-soft); - --color-warn: var(--warn); - --color-warn-soft: var(--warn-soft); - --color-danger: var(--danger); - --color-danger-soft: var(--danger-soft); - --color-info: var(--info); - --color-info-soft: var(--info-soft); - --color-attention: var(--attention); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - - --font-sans: var(--font-ui); - --font-mono: var(--font-code); - - /* The scale is 12/13/14/16/20/24/30; text-ui is the 13. */ - --text-ui: 0.8125rem; - --text-ui--line-height: 1.25rem; - - --animate-breathe: breathe 2.4s ease-in-out infinite; - @keyframes breathe { - 0%, - 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--attention) 55%, transparent); - } - 50% { - box-shadow: 0 0 0 4px color-mix(in srgb, var(--attention) 0%, transparent); - } - } -} - -@layer base { - * { - border-color: var(--border); - outline-color: var(--ring); - } - - body { - background: var(--background); - color: var(--foreground); - font-size: 0.875rem; - line-height: 1.5; - } - - /* Motion is a courtesy: under this setting nothing animates. */ - @media (prefers-reduced-motion: reduce) { - *, - ::before, - ::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } - } -} - -/* A label that is going on now: the text carries a light that passes over it (both ends are text colors of the tokens). */ -@utility shimmer { - background-image: linear-gradient(90deg, var(--muted-foreground) 0%, var(--foreground) 50%, var(--muted-foreground) 100%); - background-size: 200% 100%; - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: shimmer 2.2s linear infinite; - - /* Forced colors (Windows High Contrast) drop the gradient but keep a transparent fill: the label would vanish. It is drawn in the system text color, still. */ - @media (forced-colors: active) { - background-image: none; - -webkit-text-fill-color: currentColor; - animation: none; - } -} - -@keyframes shimmer { - to { - background-position: -200% 0; - } -} diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx deleted file mode 100644 index 03a1470f..00000000 --- a/apps/web/src/app/layout.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { Metadata, Viewport } from "next"; -import type { ReactNode } from "react"; -import { Toaster } from "../components/ui/sonner"; -import { THEME_BOOTSTRAP } from "../lib/theme"; -import "@fontsource/geist-sans/400.css"; -import "@fontsource/geist-sans/500.css"; -import "@fontsource/geist-sans/600.css"; -import "@fontsource/geist-mono/400.css"; -import "@fontsource/geist-mono/500.css"; -import "./globals.css"; - -export const metadata: Metadata = { - title: { default: "invisible_dots", template: "%s - invisible_dots" }, - description: "Control plane for Dots: agents that each own a Linux computer.", -}; - -export const viewport: Viewport = { - colorScheme: "light dark", -}; - -export default function RootLayout({ children }: { children: ReactNode }) { - return ( - // The theme script sets data-theme before the first paint, so the server's markup has none to agree with. - - - raw after'}); - expect(container.querySelector("img")).toBeNull(); - expect(container.querySelector("script")).toBeNull(); - expect(container.querySelector("b")).toBeNull(); - expect(container.textContent).toContain("before"); - expect(container.textContent).toContain("after"); - }); - - it("does not turn a javascript: link into a link", () => { - const { container } = render({"[click](javascript:alert(1))"}); - expect(container.querySelector("a")?.getAttribute("href") ?? "").not.toMatch(/^javascript:/i); - }); - - it("shows an image as a link to it, so that reading the message asks nobody for the picture", () => { - const { container } = render({"before ![a chart](https://tracker.example/pixel.png?q=secret) after"}); - expect(container.querySelector("img")).toBeNull(); - const link = container.querySelector("a")!; - expect(link.getAttribute("href")).toBe("https://tracker.example/pixel.png?q=secret"); - expect(link.textContent).toBe("Image: a chart"); - expect(link.getAttribute("rel")).toBe("noreferrer"); - }); - - it("puts a copy button on a fenced block, which copies its code and says so", async () => { - const writeText = vi.fn(async (_text: string) => {}); - vi.stubGlobal("navigator", { clipboard: { writeText } }); - const { container } = render({"Run:\n\n```sh\nls -la\necho done\n```\n\nand `inline` code"}); - expect(container.querySelectorAll("pre")).toHaveLength(1); - expect(screen.getAllByRole("button", { name: "Copy the code" })).toHaveLength(1); - await userEvent.click(screen.getByRole("button", { name: "Copy the code" })); - expect(writeText).toHaveBeenCalledWith("ls -la\necho done"); - expect(await screen.findByRole("button", { name: "Copied" })).toBeTruthy(); - }); - - it("keeps the code readable when the clipboard refuses", async () => { - vi.stubGlobal("navigator", { clipboard: { writeText: vi.fn(async () => Promise.reject(new Error("denied"))) } }); - const { container } = render({"```\nsecret = 1\n```"}); - await userEvent.click(screen.getByRole("button", { name: "Copy the code" })); - expect(container.querySelector("pre")?.textContent).toContain("secret = 1"); - expect(screen.queryByRole("button", { name: "Copied" })).toBeNull(); - }); -}); diff --git a/apps/web/test/mcp-servers.test.ts b/apps/web/test/mcp-servers.test.ts deleted file mode 100644 index 2ae50ccb..00000000 --- a/apps/web/test/mcp-servers.test.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { parseDotConfig, resolvePermission } from "@invisible-dots/shared/browser"; -import { describe, expect, it } from "vitest"; -import { approvalBody, askTitle, isDestructive, permissionInfo, type ApprovalAsk } from "../src/lib/approval-view"; -import { viewEvent } from "../src/lib/events/view"; -import { configChanges, rebase, setMcpServer, setPermission } from "../src/lib/config-fields"; -import { EMPTY_MCP_SERVER_FORM, formOfServer, serverOfForm } from "../src/lib/mcp-server-form"; -import { presetOf, presetPermissions } from "../src/lib/permission-presets"; -import { permissionGroups } from "../src/lib/permission-table"; -import { fullConfig } from "./support/config"; - -const TIME = { command: "uvx", args: ["mcp-server-time"], env: {}, secrets: ["TIME_TOKEN"], timeout_s: 120, startup_timeout_s: 60 }; -const WEB = { url: "https://web.example/mcp", headers: { "X-Client": "dots" }, secrets: ["Authorization"], timeout_s: 30, startup_timeout_s: 90 }; - -describe("the form of an MCP server", () => { - it("is the entry it was made from, for a program and for a URL", () => { - for (const server of [TIME, WEB]) { - const back = serverOfForm(formOfServer(server)); - expect(back).toEqual({ ok: true, server }); - } - }); - - it("reads one argument, variable, header or secret a line, keeps the spaces inside one, and names a line it cannot read", () => { - const form = { ...EMPTY_MCP_SERVER_FORM, command: " npx ", args: "-y\n@scope/server --flag\n\n", env: "MODE=a=b\n", secrets: "API_KEY\n" }; - expect(serverOfForm(form)).toEqual({ ok: true, server: { command: "npx", args: ["-y", "@scope/server --flag"], env: { MODE: "a=b" }, secrets: ["API_KEY"], timeout_s: 120, startup_timeout_s: 60 } }); - expect(serverOfForm({ ...form, env: "MODE" })).toEqual({ ok: false, problem: '"MODE" is not NAME=value' }); - expect(serverOfForm({ ...EMPTY_MCP_SERVER_FORM, kind: "url", url: "https://a.example", headers: "no colon" })).toEqual({ ok: false, problem: '"no colon" is not Name: value' }); - }); -}); - -describe("an MCP server in the settings", () => { - const base = fullConfig({ mcp_servers: { time: TIME } }); - - it("is added and removed in the draft, and its permission goes with it", () => { - const added = setMcpServer(base, "web", WEB); - expect(parseDotConfig(added).mcp_servers).toEqual({ time: TIME, web: WEB }); - const allowed = setPermission(added, "mcp.web", "allow"); - expect(allowed.permissions).toEqual({ "mcp.web": "allow" }); - const removed = setMcpServer(allowed, "web", null); - expect(removed.permissions).toEqual({}); - expect(parseDotConfig(removed).mcp_servers).toEqual({ time: TIME }); - }); - - it("never writes the permission of a server the config does not declare, which the schema would refuse", () => { - expect(setPermission(base, "mcp.ghost", "allow").permissions).toEqual({}); - expect(setPermission(base, "mcp.time", "ask").permissions).toEqual({}); - expect(setPermission(base, "mcp.time", "deny").permissions).toEqual({ "mcp.time": "deny" }); - }); - - it("is a change the review lists, by what it runs, and its permission is another", () => { - const changes = configChanges(base, setPermission(setMcpServer(base, "web", WEB), "mcp.web", "allow")); - expect(changes.map((c) => [c.key, c.before, c.after])).toEqual([ - ["mcp_servers.web", "(not declared)", "https://web.example/mcp"], - ["permissions.mcp.web", "deny", "allow"], - ]); - // The same entry with its keys in another order is no change. - const reordered = { ...base, mcp_servers: { time: { startup_timeout_s: 60, timeout_s: 120, secrets: ["TIME_TOKEN"], env: {}, args: ["mcp-server-time"], command: "uvx" } } }; - expect(configChanges(base, reordered)).toEqual([]); - }); - - it("an edit put on top of a config changed meanwhile keeps the server someone else added and the one this edit added", () => { - const latest = setMcpServer(base, "web", WEB); - const mine = setMcpServer(base, "files", { command: "npx", args: ["-y", "files"], env: {}, secrets: [], timeout_s: 60, startup_timeout_s: 60 }); - const merged = rebase(base, mine, latest); - expect(Object.keys(merged.mcp_servers).sort()).toEqual(["files", "time", "web"]); - // Removing a server in the edit removes it from the newer config too, with its permission. - const dropped = rebase(latest, setMcpServer(latest, "time", null), setPermission(latest, "mcp.time", "allow")); - expect(dropped.mcp_servers).not.toHaveProperty("time"); - expect(dropped.permissions).toEqual({}); - }); - - it("a preset leaves the servers' permissions as they are, and they do not decide which preset the config is", () => { - const current = { "mcp.time": "deny" as const, "computer.exec": "ask" as const }; - expect(presetPermissions("autonomous", current)["mcp.time"]).toBe("deny"); - expect(presetPermissions("careful", current)).toMatchObject({ "mcp.time": "deny", "computer.exec": "ask", "files.write": "ask" }); - expect(presetOf({ "mcp.time": "allow" })).toBe("balanced"); - }); - - it("has a row under MCP servers with the risk of running commands, the default ask, and the tools of the server", () => { - const tools = [{ name: "mcp_time_now", permission: "mcp.time" as const, offered: true, description: "Now." }]; - const group = permissionGroups(base, base, tools).find((g) => g.id === "mcp"); - expect(group?.label).toBe("MCP servers"); - // The permission to add a server comes first, then one row per declared server. - expect(group?.rows.map((row) => [row.permission, row.decision])).toEqual([["mcp.servers.add", "ask"], ["mcp.time", "ask"]]); - expect(group?.rows.slice(1)).toEqual([ - { - permission: "mcp.time", - label: "MCP server time", - description: expect.stringContaining('"time"'), - risk: "high", - decision: "ask", - defaultDecision: "ask", - changed: false, - tools: [{ name: "mcp_time_now", offered: true }], - }, - ]); - expect(resolvePermission(base, "mcp.time")).toBe("ask"); - }); - - it("an approval of one of its tools is named after the server and is the kind to stop and think about", () => { - const ask = { permission: "mcp.time", tool: "mcp_time_now", arguments: {} } as unknown as ApprovalAsk; - expect(permissionInfo("mcp.time")).toMatchObject({ permission: "mcp.time", label: "MCP server time", risk: "high" }); - expect(isDestructive(ask)).toBe(true); - expect(permissionInfo("mcp.Bad")).toBeNull(); - }); -}); - -describe("a server the Dot adds itself", () => { - const ask = (args: Record) => ({ permission: "mcp.servers.add", tool: "add_mcp_server", arguments: args }) as unknown as ApprovalAsk; - - it("asks with what the server runs, the secrets the person will set and why, never more", () => { - const body = approvalBody(ask({ name: "clock", command: "uvx", args: ["--from", "git+https://github.com/o/r", "clock-mcp"], env: { TZ: "Europe/Rome" }, secrets: ["API_KEY"], reason: "to tell the time" })); - expect(body).toEqual({ - kind: "facts", - facts: [ - { label: "Name", value: "clock" }, - { label: "Runs, as the Dot's user", value: "uvx --from git+https://github.com/o/r clock-mcp" }, - { label: "Environment", value: "TZ=Europe/Rome" }, - { label: "Secrets you will set", value: "API_KEY" }, - { label: "Why", value: "to tell the time" }, - ], - }); - expect(approvalBody(ask({ name: "web", url: "https://w.example/mcp", reason: "r" }))).toMatchObject({ facts: [{ label: "Name" }, { label: "URL", value: "https://w.example/mcp" }, { label: "Why" }] }); - expect(askTitle(ask({}))).toBe("Wants to add an MCP server to its config"); - expect(permissionInfo("mcp.servers.add")).toMatchObject({ label: "Add MCP servers", risk: "high" }); - }); - - it("says in the activity what was added, and why one was not", () => { - const event = (type: string, data: Record) => viewEvent({ id: 1, dot_id: "d", type, source: "guest", data, created_at: "2026-10-11T00:00:00Z" } as never); - expect(event("mcp.server.added", { arguments: { name: "clock", command: "uvx", args: ["mcp-server-time"] } })).toMatchObject({ title: "Added an MCP server", detail: "clock - uvx mcp-server-time" }); - expect(event("mcp.server.refused", { name: "clock", reason: "the Dot's config denies mcp.servers.add" })).toMatchObject({ title: "An MCP server was not added", tone: "warn" }); - }); -}); diff --git a/apps/web/test/new-dot.test.tsx b/apps/web/test/new-dot.test.tsx deleted file mode 100644 index 697bf20e..00000000 --- a/apps/web/test/new-dot.test.tsx +++ /dev/null @@ -1,323 +0,0 @@ -// @vitest-environment jsdom -import { cleanup, fireEvent, render, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { EventStreamProvider } from "../src/components/events"; -import { NewDotPage } from "../src/components/new-dot/NewDotPage"; -import { AttentionProvider } from "../src/components/shell/attention"; -import { stubMatchMedia } from "./support/browser"; -import { dotRecord, FakeControlPlane } from "./support/control-plane"; - -const push = vi.hoisted(() => vi.fn()); -vi.mock("next/navigation", () => ({ usePathname: () => "/new", useRouter: () => ({ push, replace() {} }) })); - -let plane: FakeControlPlane; - -beforeEach(() => { - push.mockClear(); - plane = new FakeControlPlane(); - plane.install(); - stubMatchMedia(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); - vi.restoreAllMocks(); -}); - -async function renderPage() { - render( - - - - - , - ); - await screen.findByRole("heading", { name: "Create a Dot" }); - await waitFor(() => expect(plane.streamOpen).toBe(true)); -} - -async function fillIdentity(name = "fare-watch") { - await userEvent.type(screen.getByLabelText("Name"), name); -} - -describe("Create a Dot: the form", () => { - it("has the three steps, with the defaults of the schema", async () => { - await renderPage(); - for (const step of ["Identity", "Brain", "Computer and safety"]) expect(screen.getByRole("heading", { name: step })).toBeTruthy(); - expect((screen.getByLabelText("Model") as HTMLInputElement).value).toBe("z-ai/glm-5.3-flash"); - expect((screen.getByLabelText("Processors") as HTMLInputElement).value).toBe("2"); - expect((screen.getByLabelText("Memory") as HTMLInputElement).value).toBe("4"); - expect((screen.getByLabelText("Disk") as HTMLInputElement).value).toBe("40"); - expect((screen.getByLabelText("Sleep after") as HTMLSelectElement).value).toBe("15m"); - expect((screen.getByLabelText("Spending cap per task") as HTMLInputElement).value).toBe("1"); - expect((screen.getByRole("radio", { name: /Balanced/ }) as HTMLInputElement).checked).toBe(true); - }); - - it("gives the sliders the schema's bounds", async () => { - await renderPage(); - const bounds = (label: string) => { - const slider = screen.getByLabelText(label) as HTMLInputElement; - return [Number(slider.min), Number(slider.max)]; - }; - expect(bounds("Processors")).toEqual([1, 16]); - expect(bounds("Memory")).toEqual([2, 64]); - expect(bounds("Disk")).toEqual([20, 1024]); - }); - - it("creates the Dot with what the form shows, and opens its chat", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.type(screen.getByLabelText(/Instructions/), "Write to fares.csv."); - fireEvent.change(screen.getByLabelText("Processors"), { target: { value: "4" } }); - fireEvent.change(screen.getByLabelText("Memory"), { target: { value: "8" } }); - await userEvent.selectOptions(screen.getByLabelText("Sleep after"), "30m"); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - - await waitFor(() => expect(push).toHaveBeenCalledWith("/dots/created-1/chat")); - expect(plane.created).toEqual([ - { - name: "fare-watch", - instructions: "Write to fares.csv.", - model: { provider: "openrouter", id: "z-ai/glm-5.3-flash" }, - computer: { cpu: 4, memory: "8gb", disk: "40gb", idle_timeout: "30m" }, - permissions: {}, - limits: { max_cost_per_task_usd: 1 }, - }, - ]); - }); - - it("sends the preset that was chosen as the permissions", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("radio", { name: /Careful/ })); - expect((screen.getByRole("radio", { name: /Careful/ }) as HTMLInputElement).checked).toBe(true); - expect((screen.getByRole("radio", { name: /Balanced/ }) as HTMLInputElement).checked).toBe(false); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - await waitFor(() => expect(plane.created).toHaveLength(1)); - expect((plane.created[0] as { permissions: unknown }).permissions).toEqual({ "files.write": "ask", "computer.exec": "ask" }); - }); - - it("sends the summary model, and the cost cap that was typed", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.type(screen.getByLabelText(/Summary model/), "a/summary"); - const cap = screen.getByLabelText("Spending cap per task"); - await userEvent.clear(cap); - await userEvent.type(cap, "2.5"); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - await waitFor(() => expect(plane.created).toHaveLength(1)); - const sent = plane.created[0] as { models: unknown; limits: unknown }; - expect(sent.models).toEqual({ summary: "a/summary" }); - expect(sent.limits).toEqual({ max_cost_per_task_usd: 2.5 }); - }); - - it("takes a typed number only while it is inside the range, and shows the value in force when the field is left", async () => { - await renderPage(); - const exact = screen.getByLabelText("Memory, exact value") as HTMLInputElement; - const slider = screen.getByLabelText("Memory") as HTMLInputElement; - await userEvent.clear(exact); - await userEvent.type(exact, "999"); - // "9" was in range; "99" and "999" were not, so the value stays what the last good text made it. - expect(slider.value).toBe("9"); - await userEvent.tab(); - expect(exact.value).toBe("9"); - await userEvent.clear(exact); - await userEvent.type(exact, "16"); - expect(slider.value).toBe("16"); - fireEvent.change(slider, { target: { value: "32" } }); - expect(exact.value).toBe("32"); - }); -}); - -describe("Create a Dot: what is wrong", () => { - it("does not create a Dot with no name, asks for no goal, and lists what to fix", async () => { - await renderPage(); - expect(screen.queryByLabelText("Goal")).toBeNull(); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - expect(plane.created).toEqual([]); - const summary = await screen.findByRole("alert"); - expect(within(summary).getAllByRole("listitem")).toHaveLength(1); - expect(screen.getByLabelText("Name").getAttribute("aria-invalid")).toBe("true"); - await waitFor(() => expect(document.activeElement).toBe(summary.parentElement)); - }); - - it("says a name is not valid as it is typed, and not before the person has touched it", async () => { - await renderPage(); - expect(screen.getByLabelText("Name").getAttribute("aria-invalid")).toBeNull(); - await userEvent.type(screen.getByLabelText("Name"), "Fare Watch"); - const name = screen.getByLabelText("Name"); - expect(name.getAttribute("aria-invalid")).toBe("true"); - expect(document.getElementById(name.getAttribute("aria-describedby")!.split(" ").at(-1)!)!.textContent).toMatch(/lowercase letters, digits and '-'/); - await userEvent.clear(name); - await userEvent.type(name, "fare-watch"); - expect(name.getAttribute("aria-invalid")).toBeNull(); - }); - - it("refuses a name another Dot already has", async () => { - plane.dots = [dotRecord("d1", { name: "fares" })]; - await renderPage(); - await waitFor(() => expect(plane.requests.filter((r) => r === "GET /api/dots").length).toBeGreaterThan(0)); - await userEvent.type(screen.getByLabelText("Name"), "fares"); - await waitFor(() => expect(screen.getByLabelText("Name").getAttribute("aria-invalid")).toBe("true")); - expect(screen.getByText('A Dot named "fares" already exists')).toBeTruthy(); - }); - - it("shows what the control plane answered when it refuses, and stays on the page", async () => { - plane.failCreate = { status: 409, error: "name_taken", message: 'a Dot named "fare-watch" already exists', details: [{ path: ["name"], message: "taken meanwhile" }] }; - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - const alert = await screen.findByRole("alert"); - expect(alert.textContent).toContain("The Dot was not created"); - expect(alert.textContent).toContain('a Dot named "fare-watch" already exists'); - expect(alert.textContent).toContain("taken meanwhile"); - expect(push).not.toHaveBeenCalled(); - // The button is back, so the person can try again. - expect((screen.getByRole("button", { name: "Create Dot" }) as HTMLButtonElement).disabled).toBe(false); - }); -}); - -/** The line of the checks panel for one item, as a screen reader hears it. */ -function checkLine(panel: HTMLElement, label: string): string { - const line = within(panel).getAllByRole("listitem").find((item) => item.textContent?.startsWith(label)); - if (!line) throw new Error(`no check named ${label}`); - return line.textContent ?? ""; -} - -describe("Create a Dot: before you create", () => { - /** The control plane's three rows and the host's three (the doctor's key row is not drawn). */ - const ROWS = 6; - - it("shows the checks of the control plane and of the host, all ready when it has a key", async () => { - await renderPage(); - const panel = await screen.findByRole("region", { name: "Before you create" }); - await waitFor(() => expect(within(panel).getAllByRole("listitem")).toHaveLength(ROWS)); - expect(checkLine(panel, "Control plane")).toBe("Control plane: ReadyAnswering, version 9.9.9."); - expect(checkLine(panel, "Database")).toBe("Database: ReadyAnswering."); - expect(checkLine(panel, "OpenRouter key")).toBe("OpenRouter key: ReadyStored."); - expect(checkLine(panel, "QEMU")).toBe("QEMU: Ready8.2.2"); - expect(checkLine(panel, "golden image")).toBe("golden image: Readygolden-1.qcow2 matches its manifest"); - }); - - it("says that no key is stored, and still lets the Dot be created", async () => { - plane.keyConfigured = false; - await renderPage(); - const panel = await screen.findByRole("region", { name: "Before you create" }); - await waitFor(() => expect(within(panel).getAllByRole("listitem")).toHaveLength(ROWS)); - expect(checkLine(panel, "OpenRouter key")).toMatch(/^OpenRouter key: Needs attention.*cannot answer until one is/); - expect(checkLine(panel, "Control plane")).toContain(": Ready"); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - await waitFor(() => expect(push).toHaveBeenCalled()); - }); - - it("names what the host lacks and the command that fixes it, and still lets the Dot be created", async () => { - plane.doctor = [ - { id: "qemu", label: "QEMU", status: "missing", detail: "not found on PATH", fix: "invisible-dots setup" }, - { id: "golden-image", label: "golden image", status: "missing", detail: "none in the images folder", fix: "invisible-dots image build" }, - ]; - await renderPage(); - const panel = await screen.findByRole("region", { name: "Before you create" }); - await waitFor(() => expect(within(panel).getAllByRole("listitem")).toHaveLength(5)); - expect(checkLine(panel, "QEMU")).toBe("QEMU: Needs attentionnot found on PATHFix: invisible-dots setup"); - expect(checkLine(panel, "golden image")).toContain("Fix: invisible-dots image build"); - expect(checkLine(panel, "Control plane")).toContain(": Ready"); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - await waitFor(() => expect(push).toHaveBeenCalled()); - }); - - it("says that the host was not checked when the report cannot be made, and keeps the control plane's rows", async () => { - plane.failDoctor = 500; - await renderPage(); - const panel = await screen.findByRole("region", { name: "Before you create" }); - await waitFor(() => expect(within(panel).getAllByRole("listitem")).toHaveLength(4)); - expect(checkLine(panel, "This computer")).toBe("This computer: Not checkedNot checked: the doctor could not run"); - expect(checkLine(panel, "Control plane")).toContain(": Ready"); - }); - - it("says when the control plane does not answer, and checks again on request", async () => { - plane.healthy = false; - plane.failDoctor = 503; - await renderPage(); - const panel = await screen.findByRole("region", { name: "Before you create" }); - await waitFor(() => expect(within(panel).getAllByRole("listitem")).toHaveLength(4)); - expect(checkLine(panel, "Control plane")).toContain(": Needs attention"); - expect(checkLine(panel, "Database")).toContain(": Not checked"); - expect(checkLine(panel, "This computer")).toContain(": Not checked"); - plane.healthy = true; - plane.failDoctor = null; - await userEvent.click(within(panel).getByRole("button", { name: "Check again" })); - await waitFor(() => expect(checkLine(panel, "Control plane")).toContain(": Ready")); - expect(checkLine(panel, "Database")).toContain(": Ready"); - expect(checkLine(panel, "QEMU")).toContain(": Ready"); - }); -}); - -describe("Create a Dot: the YAML editor", () => { - const yamlBox = () => screen.getByRole("textbox", { name: "Configuration (YAML)" }) as HTMLTextAreaElement; - - it("shows the form's config, and creates the Dot from the text as edited", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Advanced YAML" })); - expect(yamlBox().value).toContain("name: fare-watch"); - expect(yamlBox().value).toContain("cpu: 2"); - expect(screen.getByText("The configuration is valid.")).toBeTruthy(); - fireEvent.change(yamlBox(), { target: { value: yamlBox().value.replace("cpu: 2", "cpu: 6") } }); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - await waitFor(() => expect(plane.created).toHaveLength(1)); - expect(typeof plane.created[0]).toBe("string"); - expect(plane.created[0]).toContain("cpu: 6"); - expect(push).toHaveBeenCalledWith("/dots/created-1/chat"); - }); - - it("lists what is wrong with the YAML as it is typed, and refuses to create from it", async () => { - await renderPage(); - await userEvent.click(screen.getByRole("button", { name: "Advanced YAML" })); - // An empty form is already invalid: it has no name. - const problems = screen.getByRole("list", { name: "Problems in the YAML" }); - expect(within(problems).getAllByRole("listitem").length).toBeGreaterThanOrEqual(1); - await userEvent.click(screen.getByRole("button", { name: "Create Dot" })); - expect(plane.created).toEqual([]); - }); - - it("brings the edits back into the form", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Advanced YAML" })); - fireEvent.change(yamlBox(), { target: { value: yamlBox().value.replace("cpu: 2", "cpu: 6").replace('memory: "4gb"', 'memory: "12gb"') } }); - await userEvent.click(screen.getByRole("button", { name: "Form" })); - expect((screen.getByLabelText("Processors") as HTMLInputElement).value).toBe("6"); - expect((screen.getByLabelText("Memory") as HTMLInputElement).value).toBe("12"); - expect((screen.getByLabelText("Name") as HTMLInputElement).value).toBe("fare-watch"); - }); - - it("stays in the YAML, and says why, when the text sets what the form cannot show", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Advanced YAML" })); - fireEvent.change(yamlBox(), { target: { value: yamlBox().value.replace("limits:\n", "limits:\n max_steps_per_task: 10\n") } }); - await userEvent.click(screen.getByRole("button", { name: "Form" })); - expect(screen.getByText("The form cannot show this")).toBeTruthy(); - expect(screen.getByText(/no controls for/)).toBeTruthy(); - expect(yamlBox().value).toContain("max_steps_per_task: 10"); - // Editing the text again takes the message away. - fireEvent.change(yamlBox(), { target: { value: yamlBox().value.replace(" max_steps_per_task: 10\n", "") } }); - expect(screen.queryByText("The form cannot show this")).toBeNull(); - }); - - it("says that permissions set in the YAML match no preset", async () => { - await renderPage(); - await fillIdentity(); - await userEvent.click(screen.getByRole("button", { name: "Advanced YAML" })); - fireEvent.change(yamlBox(), { target: { value: yamlBox().value.replace("permissions: {}", "permissions:\n computer.exec: deny") } }); - await userEvent.click(screen.getByRole("button", { name: "Form" })); - expect(screen.getByText(/match none of these/)).toBeTruthy(); - for (const preset of ["Careful", "Balanced", "Autonomous"]) expect((screen.getByRole("radio", { name: new RegExp(preset) }) as HTMLInputElement).checked).toBe(false); - await userEvent.click(screen.getByRole("radio", { name: /Autonomous/ })); - expect(screen.queryByText(/match none of these/)).toBeNull(); - }); -}); diff --git a/apps/web/test/offline.test.ts b/apps/web/test/offline.test.ts deleted file mode 100644 index 12e6f5e9..00000000 --- a/apps/web/test/offline.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { offlineOf } from "../src/lib/offline"; - -describe("when the page can no longer hear the control plane", () => { - it("says nothing while the stream is up or starting and the health check answers", () => { - expect(offlineOf({ stream: "open", streamDetail: "", apiError: null })).toBeNull(); - expect(offlineOf({ stream: "connecting", streamDetail: "", apiError: null })).toBeNull(); - }); - - it("says the control plane does not answer while the stream reconnects, with why, and that the page connects by itself", () => { - const offline = offlineOf({ stream: "reconnecting", streamDetail: "fetch failed", apiError: null })!; - expect(offline.title).toBe("The control plane does not answer"); - expect(offline.detail).toContain("fetch failed"); - expect(offline.detail).toContain("out of date"); - expect(offline.detail).toContain("connects again by itself"); - }); - - it("says it too when only the health check fails, with what it said", () => { - const offline = offlineOf({ stream: "open", streamDetail: "", apiError: new Error("the control plane answered 503") })!; - expect(offline.title).toBe("The control plane does not answer"); - expect(offline.detail).toContain("the control plane answered 503"); - }); - - it("tells a stream that ended for good apart: the page does not connect again by itself", () => { - const offline = offlineOf({ stream: "closed", streamDetail: "the origin was refused (403)", apiError: null })!; - expect(offline.title).toBe("Live updates have stopped"); - expect(offline.detail).toContain("the origin was refused (403)"); - expect(offline.detail).toContain("reload"); - expect(offline.detail).not.toContain("by itself"); - }); -}); diff --git a/apps/web/test/parent.test.ts b/apps/web/test/parent.test.ts deleted file mode 100644 index d3ad79c7..00000000 --- a/apps/web/test/parent.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { exitWhenParentGone, parentPidFrom } from "../src/lib/parent.js"; - -beforeEach(() => { - vi.useFakeTimers(); -}); - -afterEach(() => { - vi.useRealTimers(); -}); - -describe("exitWhenParentGone", () => { - it("does nothing while the parent exists, and calls onGone once when it is gone", () => { - let alive = true; - const asked: number[] = []; - const onGone = vi.fn(); - exitWhenParentGone(4242, { - exists: (pid) => { - asked.push(pid); - return alive; - }, - onGone, - intervalMs: 1000, - }); - vi.advanceTimersByTime(3000); - expect(onGone).not.toHaveBeenCalled(); - expect(asked).toEqual([4242, 4242, 4242]); - - alive = false; - vi.advanceTimersByTime(5000); - expect(onGone).toHaveBeenCalledTimes(1); - expect(asked).toHaveLength(4); - }); - - it("stops looking when told to", () => { - const onGone = vi.fn(); - const stop = exitWhenParentGone(4242, { exists: () => false, onGone, intervalMs: 1000 }); - stop(); - vi.advanceTimersByTime(5000); - expect(onGone).not.toHaveBeenCalled(); - }); -}); - -describe("parentPidFrom", () => { - it("reads a positive integer and nothing else", () => { - expect(parentPidFrom("4242")).toBe(4242); - for (const bad of [undefined, "", "0", "-1", "1.5", "12abc", " 7", "1e3", "99999999999999999999"]) { - expect(parentPidFrom(bad)).toBeUndefined(); - } - }); -}); diff --git a/apps/web/test/permission-presets.test.ts b/apps/web/test/permission-presets.test.ts deleted file mode 100644 index 09455047..00000000 --- a/apps/web/test/permission-presets.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { PERMISSIONS, parseDotConfig, resolvePermission, toRuntimeConfig } from "@invisible-dots/shared"; -import { describe, expect, it } from "vitest"; -import { PRESET_IDS, PRESETS, presetOf, presetPermissions } from "../src/lib/permission-presets"; - -const BASE = { name: "p", model: { provider: "openrouter", id: "a/b" } }; - -function resolved(preset: (typeof PRESET_IDS)[number]) { - return toRuntimeConfig(parseDotConfig({ ...BASE, permissions: presetPermissions(preset) })).permissions; -} - -describe("the permission presets", () => { - it("are accepted by the schema, which refuses a permission it does not know", () => { - for (const id of PRESET_IDS) expect(() => parseDotConfig({ ...BASE, permissions: presetPermissions(id) })).not.toThrow(); - }); - - it("Balanced is the shipped defaults and writes nothing", () => { - expect(presetPermissions("balanced")).toEqual({}); - const defaults = parseDotConfig(BASE); - for (const permission of PERMISSIONS) expect(resolved("balanced")[permission]).toBe(resolvePermission(defaults, permission)); - }); - - it("Careful asks before commands and file changes and leaves every other permission at its default", () => { - const careful = resolved("careful"); - const defaults = resolved("balanced"); - expect(careful["computer.exec"]).toBe("ask"); - expect(careful["files.write"]).toBe("ask"); - for (const permission of PERMISSIONS) { - if (permission !== "computer.exec" && permission !== "files.write") expect(careful[permission]).toBe(defaults[permission]); - } - }); - - it("Autonomous allows everything except deleting a browser identity, which still asks", () => { - const autonomous = resolved("autonomous"); - for (const permission of PERMISSIONS) { - expect(autonomous[permission]).toBe(permission === "browser.identity.delete" ? "ask" : "allow"); - } - }); - - it("hand out copies, so editing one never changes the preset", () => { - const copy = presetPermissions("careful"); - copy["files.write"] = "deny"; - expect(PRESETS.careful.permissions["files.write"]).toBe("ask"); - }); -}); - -describe("presetOf", () => { - it("names the preset a permission map amounts to", () => { - for (const id of PRESET_IDS) expect(presetOf(presetPermissions(id))).toBe(id); - }); - - it("counts an explicit value equal to the default as the default", () => { - expect(presetOf({ "computer.exec": "allow", "browser.identity.delete": "ask" })).toBe("balanced"); - }); - - it("is null for permissions that match no preset", () => { - expect(presetOf({ "computer.exec": "deny" })).toBeNull(); - // Half of Careful is not Careful. - expect(presetOf({ "files.write": "ask" })).toBeNull(); - }); -}); diff --git a/apps/web/test/playwright-config.test.ts b/apps/web/test/playwright-config.test.ts deleted file mode 100644 index 8741b2e6..00000000 --- a/apps/web/test/playwright-config.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { readFileSync } from "node:fs"; -import { afterEach, describe, expect, it, vi } from "vitest"; - -afterEach(() => vi.unstubAllEnvs()); - -describe("the Playwright config", () => { - for (const ci of ["", "1"]) { - it(`writes the JUnit report that test-guard reads, ${ci ? "under CI" : "outside CI"}, so a local run never leaves a stale one`, async () => { - vi.stubEnv("CI", ci); - vi.resetModules(); - const { default: config } = await import("../playwright.config"); - expect(config.reporter).toContainEqual(["junit", { outputFile: "playwright-report.xml" }]); - }); - } -}); - -describe("the browser tests' harness", () => { - it("runs the web client as the product does: the standalone server through the CLI's own start, not `next start` with the whole environment", () => { - const harness = readFileSync(new URL("../e2e/harness.ts", import.meta.url), "utf8"); - expect(harness).toContain("startWebServer"); - expect(harness).toContain("locateWebBuild"); - expect(harness).not.toContain("next/dist/bin/next"); - expect(harness).not.toContain("...process.env, INVISIBLE_DOTS_HOME"); - }); -}); diff --git a/apps/web/test/preflight.test.ts b/apps/web/test/preflight.test.ts deleted file mode 100644 index 72807fbd..00000000 --- a/apps/web/test/preflight.test.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { DoctorCheck } from "@invisible-dots/shared/browser"; -import { describe, expect, it } from "vitest"; -import { isReady, notReadyCount, preflightItems } from "../src/lib/preflight"; - -const HEALTHY = { status: "ok", database: "ok", version: "1.2.3", openrouter_configured: true, database_kind: "pglite", data_dir: "/home/me/.invisible-dots", logs_dir: "/home/me/.invisible-dots/logs" } as const; -const row = (id: DoctorCheck["id"], status: DoctorCheck["status"], detail = "fine", fix?: string): DoctorCheck => ({ id, label: id, status, detail, ...(fix ? { fix } : {}) }); -const HOST_OK = { checks: [row("node", "ok"), row("qemu", "ok"), row("openrouter", "ok", "stored")] }; - -describe("preflightItems", () => { - it("is all ok when the control plane answers, holds a key and the host is ready", () => { - const items = preflightItems({ health: { health: HEALTHY }, host: HOST_OK }); - expect(items.map((item) => [item.id, item.state])).toEqual([["api", "ok"], ["database", "ok"], ["key", "ok"], ["node", "ok"], ["qemu", "ok"]]); - expect(items[0]!.detail).toContain("1.2.3"); - }); - - it("fails the key item, and only it, when no key is stored", () => { - const items = preflightItems({ health: { health: { ...HEALTHY, openrouter_configured: false } }, host: HOST_OK }); - expect(items.slice(0, 3).map((item) => item.state)).toEqual(["ok", "ok", "failed"]); - expect(items[2]!.detail).toMatch(/cannot answer until one is/); - }); - - it("says the key once: the doctor's own row of it is not shown", () => { - const items = preflightItems({ health: { health: HEALTHY }, host: HOST_OK }); - expect(items.map((item) => item.id)).not.toContain("openrouter"); - }); - - it("fails a host check that is missing or failed and carries the command that fixes it, as the doctor words it", () => { - const items = preflightItems({ - health: { health: HEALTHY }, - host: { checks: [row("qemu", "missing", "not found on PATH", "invisible-dots setup"), row("disk", "failed", "3.0 GiB free", "free some space"), row("node", "ok", "24.1.0", "ignored")] }, - }); - const host = items.slice(3); - expect(host.map((item) => [item.id, item.state, item.detail, item.fix])).toEqual([ - ["qemu", "failed", "not found on PATH", "invisible-dots setup"], - ["disk", "failed", "3.0 GiB free", "free some space"], - ["node", "ok", "24.1.0", undefined], - ]); - }); - - it("fails the control plane with the reason, and says the rest was not checked, when it does not answer", () => { - const items = preflightItems({ health: { error: "cannot reach the API" }, host: { error: "cannot reach the API" } }); - expect(items.map((item) => item.state)).toEqual(["failed", "unknown", "unknown", "unknown"]); - expect(items[0]!.detail).toBe("cannot reach the API"); - expect(items[3]).toMatchObject({ id: "host", detail: "Not checked: the control plane does not answer." }); - }); - - it("keeps the control plane's rows and says why the host report is missing when only that fails", () => { - const items = preflightItems({ health: { health: HEALTHY }, host: { error: "the doctor could not run" } }); - expect(items.slice(0, 3).every((item) => item.state === "ok")).toBe(true); - expect(items[3]).toMatchObject({ id: "host", state: "unknown", detail: "Not checked: the doctor could not run" }); - }); -}); - -describe("isReady and notReadyCount", () => { - it("is ready when every item is ok", () => { - const items = preflightItems({ health: { health: HEALTHY }, host: HOST_OK }); - expect(isReady(items)).toBe(true); - expect(notReadyCount(items)).toBe(0); - }); - - it("is not ready with a failed item, and counts it", () => { - const items = preflightItems({ health: { health: { ...HEALTHY, openrouter_configured: false } }, host: { checks: [row("qemu", "missing", "not found", "invisible-dots setup")] } }); - expect(isReady(items)).toBe(false); - expect(notReadyCount(items)).toBe(2); - }); - - it("does not count a check that was not made as ready", () => { - const items = preflightItems({ health: { error: "down" }, host: { error: "down" } }); - expect(isReady(items)).toBe(false); - expect(notReadyCount(items)).toBe(4); - }); -}); diff --git a/apps/web/test/proxy.test.ts b/apps/web/test/proxy.test.ts deleted file mode 100644 index c5dd02af..00000000 --- a/apps/web/test/proxy.test.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; -import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http"; -import type { AddressInfo } from "node:net"; -import { tmpdir } from "node:os"; -import { dirname, join } from "node:path"; -import { InvisibleDotsClient } from "@invisible-dots/sdk"; -import { hostPaths } from "@invisible-dots/shared/paths"; -import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { DELETE, GET, PATCH, POST, PUT } from "../src/app/api/[...path]/route"; -import { - ProxyError, - apiBaseUrl, - checkRequestOrigin, - forwardRequestHeaders, - forwardResponseHeaders, - loadApiToken, - upstreamUrl, -} from "../src/lib/proxy"; - -const TOKEN = "test-token-0123456789"; - -describe("upstreamUrl", () => { - it("maps proxy segments under /api and keeps the query", () => { - expect(upstreamUrl("http://h:1", ["dots", "a b", "tasks"], "?x=1")).toBe("http://h:1/api/dots/a%20b/tasks?x=1"); - }); - - it("re-encodes a decoded slash so it cannot add a path level", () => { - expect(upstreamUrl("http://h:1", ["dots", "a/b"], "")).toBe("http://h:1/api/dots/a%2Fb"); - }); - - it("refuses dot segments and empty paths", () => { - expect(() => upstreamUrl("http://h:1", ["..", "health"], "")).toThrow(ProxyError); - expect(() => upstreamUrl("http://h:1", ["dots", "."], "")).toThrow(ProxyError); - expect(() => upstreamUrl("http://h:1", [], "")).toThrow(ProxyError); - }); -}); - -describe("apiBaseUrl", () => { - it("defaults to the contract's listen address and trims a trailing slash", () => { - expect(apiBaseUrl({})).toBe("http://127.0.0.1:8787"); - expect(apiBaseUrl({ INVISIBLE_DOTS_URL: "http://10.0.0.2:9000/" })).toBe("http://10.0.0.2:9000"); - }); -}); - -describe("loadApiToken", () => { - let home: string; - beforeEach(async () => { - home = await mkdtemp(join(tmpdir(), "idots-web-token-")); - }); - afterAll(async () => { - await rm(home, { recursive: true, force: true }); - }); - const writeToken = async (text: string) => { - const path = hostPaths({ INVISIBLE_DOTS_HOME: home }).apiTokenPath; - await mkdir(dirname(path), { recursive: true }); - await writeFile(path, text); - }; - - it("prefers INVISIBLE_DOTS_TOKEN", async () => { - expect(await loadApiToken({ INVISIBLE_DOTS_TOKEN: ` ${TOKEN} \n`, INVISIBLE_DOTS_HOME: home })).toBe(TOKEN); - }); - - it("reads the first line of api.token in INVISIBLE_DOTS_HOME, as the server and the command do", async () => { - // A note or an old token on a later line is ignored by every reader, not only some. - await writeToken(`${TOKEN}\nthe old one was rotated on Monday\n`); - expect(await loadApiToken({ INVISIBLE_DOTS_HOME: home })).toBe(TOKEN); - }); - - it("explains a missing, empty or too short token", async () => { - await expect(loadApiToken({ INVISIBLE_DOTS_HOME: home })).rejects.toMatchObject({ status: 500, code: "web_token_missing" }); - await writeToken(" \n"); - await expect(loadApiToken({ INVISIBLE_DOTS_HOME: home })).rejects.toThrow(/is empty/); - await writeToken("short\n"); - await expect(loadApiToken({ INVISIBLE_DOTS_HOME: home })).rejects.toThrow(/shorter than 16/); - }); -}); - -describe("checkRequestOrigin", () => { - const base = { method: "GET", host: "127.0.0.1:3000", origin: null, secFetchSite: null }; - - it("lets loopback hosts through", () => { - expect(checkRequestOrigin(base, {})).toBeNull(); - expect(checkRequestOrigin({ ...base, host: "localhost:3000" }, {})).toBeNull(); - expect(checkRequestOrigin({ ...base, host: "[::1]:3000" }, {})).toBeNull(); - }); - - it("refuses other host names unless allowed, which stops DNS rebinding", () => { - expect(checkRequestOrigin({ ...base, host: "evil.example:3000" }, {})).toMatch(/not allowed/); - expect( - checkRequestOrigin({ ...base, host: "dots.lan:3000" }, { INVISIBLE_DOTS_WEB_ALLOWED_HOSTS: "other, dots.lan" }), - ).toBeNull(); - }); - - it("refuses cross-site requests and foreign origins on writes", () => { - expect(checkRequestOrigin({ ...base, secFetchSite: "cross-site" }, {})).toMatch(/cross-site/); - expect(checkRequestOrigin({ ...base, method: "POST", origin: "http://evil.example" }, {})).toMatch(/does not match/); - expect(checkRequestOrigin({ ...base, method: "POST", origin: "http://127.0.0.1:3000" }, {})).toBeNull(); - }); -}); - -describe("header forwarding", () => { - it("drops browser credentials and adds the bearer token", () => { - const out = forwardRequestHeaders( - new Headers({ cookie: "a=b", authorization: "Bearer stolen", "content-type": "application/json", "last-event-id": "9" }), - "tok", - ); - expect(out.get("cookie")).toBeNull(); - expect(out.get("authorization")).toBe("Bearer tok"); - expect(out.get("last-event-id")).toBe("9"); - }); - - it("passes on how a Dot's file is served, so the browser neither sniffs nor runs it", () => { - const out = forwardResponseHeaders( - new Headers({ - "content-type": "text/plain; charset=utf-8", - "content-disposition": 'inline; filename="a.html"', - "x-content-type-options": "nosniff", - "content-security-policy": "default-src 'none'; sandbox", - "set-cookie": "x=1", - }), - ); - expect(out.get("content-type")).toBe("text/plain; charset=utf-8"); - expect(out.get("content-disposition")).toBe('inline; filename="a.html"'); - expect(out.get("x-content-type-options")).toBe("nosniff"); - expect(out.get("content-security-policy")).toBe("default-src 'none'; sandbox"); - expect(out.get("set-cookie")).toBeNull(); - }); - - it("marks event streams as not transformable", () => { - const out = forwardResponseHeaders(new Headers({ "content-type": "text/event-stream", "content-length": "5" })); - expect(out.get("cache-control")).toBe("no-cache, no-transform"); - expect(out.get("content-length")).toBeNull(); - }); -}); - -describe("proxy route against a fake API server", () => { - let server: Server; - let base: string; - const seen: { method: string; url: string; auth: string | undefined; body: string }[] = []; - const saved = { url: process.env.INVISIBLE_DOTS_URL, token: process.env.INVISIBLE_DOTS_TOKEN }; - - beforeAll(async () => { - server = createServer((req: IncomingMessage, res: ServerResponse) => { - let body = ""; - req.on("data", (chunk: Buffer) => (body += chunk.toString("utf8"))); - req.on("end", () => { - seen.push({ method: req.method ?? "", url: req.url ?? "", auth: req.headers.authorization, body }); - if (req.url === "/api/stream?dot_id=d1") { - res.writeHead(200, { "content-type": "text/event-stream" }); - res.write('id: 1\ndata: {"id":1,"type":"dot.created","data":{}}\n\n'); - res.end(); - return; - } - if (req.url === "/api/dots/d1/browser-identities") { - res.writeHead(409, { "content-type": "application/json" }); - res.end(JSON.stringify({ error: "computer_stopped", message: "the computer is stopped" })); - return; - } - if (req.method === "DELETE") { - res.writeHead(204); - res.end(); - return; - } - res.writeHead(200, { "content-type": "application/json" }); - res.end(JSON.stringify({ ok: true })); - }); - }); - await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); - base = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; - process.env.INVISIBLE_DOTS_URL = base; - process.env.INVISIBLE_DOTS_TOKEN = TOKEN; - }); - - afterAll(async () => { - process.env.INVISIBLE_DOTS_URL = saved.url; - process.env.INVISIBLE_DOTS_TOKEN = saved.token; - if (saved.url === undefined) delete process.env.INVISIBLE_DOTS_URL; - if (saved.token === undefined) delete process.env.INVISIBLE_DOTS_TOKEN; - await new Promise((resolve) => server.close(() => resolve())); - }); - - beforeEach(() => { - seen.length = 0; - }); - - const context = (...path: string[]) => ({ params: Promise.resolve({ path }) }); - const local = (path: string, init?: RequestInit) => - new Request(`http://127.0.0.1:3000/api/${path}`, { - ...init, - headers: { host: "127.0.0.1:3000", ...(init?.headers as Record | undefined) }, - }); - - it("forwards a POST with the token and the JSON body", async () => { - const response = await POST( - local("dots", { method: "POST", body: '{"config":"name: x"}', headers: { "content-type": "application/json" } }), - context("dots"), - ); - expect(response.status).toBe(200); - expect(await response.json()).toEqual({ ok: true }); - expect(seen).toEqual([{ method: "POST", url: "/api/dots", auth: `Bearer ${TOKEN}`, body: '{"config":"name: x"}' }]); - }); - - it("passes API errors through unchanged", async () => { - const response = await GET(local("dots/d1/browser-identities"), context("dots", "d1", "browser-identities")); - expect(response.status).toBe(409); - expect(await response.json()).toEqual({ error: "computer_stopped", message: "the computer is stopped" }); - }); - - it("streams server-sent events", async () => { - const response = await GET(local("stream?dot_id=d1"), context("stream")); - expect(response.headers.get("content-type")).toBe("text/event-stream"); - expect(response.headers.get("cache-control")).toBe("no-cache, no-transform"); - expect(await response.text()).toContain('"type":"dot.created"'); - }); - - it("answers 204 without a body", async () => { - const response = await DELETE(local("dots/d1", { method: "DELETE" }), context("dots", "d1")); - expect(response.status).toBe(204); - expect(seen[0]).toMatchObject({ method: "DELETE", url: "/api/dots/d1" }); - }); - - it("refuses a foreign origin before contacting the API", async () => { - const response = await POST( - local("dots", { method: "POST", body: "{}", headers: { origin: "http://evil.example" } }), - context("dots"), - ); - expect(response.status).toBe(403); - expect(seen).toEqual([]); - }); - - it("serves the SDK unchanged: same-origin /api paths reach the API with the token", async () => { - const handlers: Record = { GET, POST, DELETE }; - const client = new InvisibleDotsClient({ - baseUrl: "", - fetch: async (input, init) => { - const url = new URL(String(input), "http://127.0.0.1:3000"); - const segments = url.pathname.replace(/^\/api\//, "").split("/").map(decodeURIComponent); - const headers = new Headers(init?.headers); - headers.set("host", "127.0.0.1:3000"); - const request = new Request(url, { ...init, headers }); - const handler = handlers[request.method]; - if (!handler) throw new Error(`no handler for ${request.method}`); - return handler(request, context(...segments)); - }, - }); - await client.deleteDot("d1"); - await expect(client.listIdentities("d1")).rejects.toMatchObject({ status: 409, code: "computer_stopped" }); - expect(seen.map((s) => [s.method, s.url, s.auth])).toEqual([ - ["DELETE", "/api/dots/d1", `Bearer ${TOKEN}`], - ["GET", "/api/dots/d1/browser-identities", `Bearer ${TOKEN}`], - ]); - }); - - it("answers 502 with a clear message when the API is down", async () => { - process.env.INVISIBLE_DOTS_URL = "http://127.0.0.1:1"; - try { - const response = await GET(local("health"), context("health")); - expect(response.status).toBe(502); - const body = (await response.json()) as { error: string; message: string }; - expect(body.error).toBe("api_unreachable"); - expect(body.message).toContain("http://127.0.0.1:1"); - } finally { - process.env.INVISIBLE_DOTS_URL = base; - } - }); -}); diff --git a/apps/web/test/screen-view.test.tsx b/apps/web/test/screen-view.test.tsx deleted file mode 100644 index 4d885662..00000000 --- a/apps/web/test/screen-view.test.tsx +++ /dev/null @@ -1,32 +0,0 @@ -// @vitest-environment jsdom -import { cleanup, render, screen } from "@testing-library/react"; -import { afterEach, describe, expect, it } from "vitest"; -import { ScreenView } from "../src/components/computer/screen-view"; -import { contrast, fromHex } from "./support/contrast"; -import { themes } from "./support/tokens"; - -afterEach(cleanup); - -/** The tokens a badge is painted with: its `bg-` and `text-` classes, which must be color tokens of both themes. */ -function badgeTokens(badge: HTMLElement): { background: string; text: string } { - const classes = [...badge.classList]; - const named = (prefix: string) => classes.find((c) => c.startsWith(prefix) && c.slice(prefix.length) in themes.light); - const background = named("bg-"); - const text = named("text-"); - if (!background || !text) throw new Error(`the badge is not painted with tokens: ${badge.className}`); - return { background: background.slice(3), text: text.slice(5) }; -} - -describe("the badges over the screen", () => { - const badges: [string, () => HTMLElement][] = [ - ["LIVE", () => screen.getByText("LIVE")], - ["the stale warning", () => screen.getByRole("status")], - ]; - - it.each(badges)("%s is painted with two tokens that read at AA (4.5:1) in the light and the dark theme", (name, find) => { - const now = Date.parse("2026-01-01T00:00:10Z"); - render(); - const { background, text } = badgeTokens(find()); - for (const theme of Object.values(themes)) expect(contrast(fromHex(theme[text]!), fromHex(theme[background]!))).toBeGreaterThanOrEqual(4.5); - }); -}); diff --git a/apps/web/test/settings.test.tsx b/apps/web/test/settings.test.tsx deleted file mode 100644 index 611dc5e3..00000000 --- a/apps/web/test/settings.test.tsx +++ /dev/null @@ -1,209 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, fireEvent, render, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { EventStreamProvider } from "../src/components/events"; -import { HostSettings } from "../src/components/settings/HostSettings"; -import { AttentionProvider, useHealth } from "../src/components/shell/attention"; -import { THEME_KEY } from "../src/lib/theme"; -import { stubMatchMedia } from "./support/browser"; -import { FakeControlPlane } from "./support/control-plane"; - -vi.mock("next/navigation", () => ({ usePathname: () => "/settings", useRouter: () => ({ push() {}, replace() {} }) })); - -let plane: FakeControlPlane; - -beforeEach(() => { - plane = new FakeControlPlane(); - plane.install(); - stubMatchMedia(); - document.documentElement.removeAttribute("data-theme"); - localStorage.clear(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); - vi.restoreAllMocks(); -}); - -/** What the shell's rail reads from the same health answer, to see that the page and the rail agree. */ -function RailKey() { - const health = useHealth(); - return

{health.data ? String(health.data.openrouter_configured) : "unknown"}

; -} - -async function renderSettings() { - render( - - - - - - , - ); - await screen.findByRole("heading", { name: "Settings" }); -} - -const section = (name: string) => screen.getByRole("region", { name }); - -/** The line of the checks for one item, as a screen reader hears it. */ -function checkLine(label: string): string { - const line = within(section("Host checks")).getAllByRole("listitem").find((item) => item.textContent?.startsWith(label)); - if (!line) throw new Error(`no check named ${label}`); - return line.textContent ?? ""; -} - -describe("Settings: host checks", () => { - it("lists the checks of the control plane and of the host, and says when everything is in place", async () => { - await renderSettings(); - await waitFor(() => expect(within(section("Host checks")).getAllByRole("listitem")).toHaveLength(6)); - expect(checkLine("Control plane")).toBe("Control plane: ReadyAnswering, version 9.9.9."); - expect(checkLine("QEMU")).toBe("QEMU: Ready8.2.2"); - expect(within(section("Host checks")).getByText("Everything a Dot needs is in place.")).toBeTruthy(); - }); - - it("shows what is missing with the command that fixes it, a button that copies it, and how many things need attention", async () => { - plane.doctor = [ - { id: "qemu", label: "QEMU", status: "missing", detail: "not found on PATH", fix: "invisible-dots setup" }, - { id: "golden-image", label: "golden image", status: "missing", detail: "none in the images folder", fix: "invisible-dots image build" }, - ]; - const writeText = vi.fn(async () => {}); - vi.stubGlobal("navigator", { clipboard: { writeText } }); - await renderSettings(); - await waitFor(() => expect(within(section("Host checks")).getAllByRole("listitem")).toHaveLength(5)); - expect(checkLine("QEMU")).toBe("QEMU: Needs attentionnot found on PATHFix: invisible-dots setup"); - expect(within(section("Host checks")).getByText(/2 things need attention/)).toBeTruthy(); - - await userEvent.click(within(section("Host checks")).getByRole("button", { name: "Copy the fix for golden image" })); - expect(writeText).toHaveBeenCalledWith("invisible-dots image build"); - expect(await within(section("Host checks")).findByRole("button", { name: "Copied" })).toBeTruthy(); - }); - - it("checks again on request, and by itself when the person comes back to the window while something is missing", async () => { - plane.doctor = [{ id: "qemu", label: "QEMU", status: "missing", detail: "not found on PATH", fix: "invisible-dots setup" }]; - await renderSettings(); - await waitFor(() => expect(checkLine("QEMU")).toContain("Needs attention")); - const asked = () => plane.requests.filter((request) => request === "GET /api/doctor").length; - expect(asked()).toBe(1); - - // The person ran the command in a terminal and returns to this window. - plane.doctor = [{ id: "qemu", label: "QEMU", status: "ok", detail: "8.2.2" }]; - act(() => { - fireEvent.focus(window); - }); - await waitFor(() => expect(checkLine("QEMU")).toBe("QEMU: Ready8.2.2")); - expect(asked()).toBe(2); - - // Nothing is missing any more, so coming back asks nothing. - act(() => { - fireEvent.focus(window); - }); - await new Promise((resolve) => setTimeout(resolve, 50)); - expect(asked()).toBe(2); - - await userEvent.click(within(section("Host checks")).getByRole("button", { name: "Check again" })); - await waitFor(() => expect(asked()).toBe(3)); - }); - - it("says that the host was not checked when the report cannot be made", async () => { - plane.failDoctor = 500; - await renderSettings(); - await waitFor(() => expect(checkLine("This computer")).toBe("This computer: Not checkedNot checked: the doctor could not run")); - }); -}); - -describe("Settings: the OpenRouter key", () => { - const keyField = () => screen.getByLabelText(/^(OpenRouter API key|Replace the key)$/) as HTMLInputElement; - - it("is a write-only field, and says whether a key is stored from the health answer", async () => { - plane.keyConfigured = false; - await renderSettings(); - await waitFor(() => expect(within(section("OpenRouter key")).getByText("No key is stored.")).toBeTruthy()); - expect(keyField().type).toBe("password"); - expect(keyField().autocomplete).toBe("off"); - expect((screen.getByRole("button", { name: "Save key" }) as HTMLButtonElement).disabled).toBe(true); - }); - - it("saves the key, says how many running Dots got it, empties the field and tells the rest of the page", async () => { - plane.keyConfigured = false; - plane.keyPushedTo = 2; - await renderSettings(); - await waitFor(() => expect(screen.getByTestId("rail-key").textContent).toBe("false")); - await userEvent.type(keyField(), " sk-or-v1-abcdef "); - await userEvent.click(screen.getByRole("button", { name: "Save key" })); - - expect(await screen.findByText("Saved. Pushed to 2 running Dots.")).toBeTruthy(); - expect(plane.savedKeys).toEqual(["sk-or-v1-abcdef"]); - // The field is emptied and the key is nowhere on the page: it is write-only. - expect(keyField().value).toBe(""); - expect(document.body.textContent).not.toContain("sk-or-v1-abcdef"); - // The shared health answer was asked again, so the rail, the checklist and this form agree at once. - await waitFor(() => expect(screen.getByTestId("rail-key").textContent).toBe("true")); - await waitFor(() => expect(within(section("OpenRouter key")).getByText("A key is stored.")).toBeTruthy()); - await waitFor(() => expect(checkLine("OpenRouter key")).toBe("OpenRouter key: ReadyStored.")); - expect(screen.getByRole("button", { name: "Replace key" })).toBeTruthy(); - }); - - it("says nothing was pushed when no computer is running", async () => { - plane.keyConfigured = false; - await renderSettings(); - await userEvent.type(keyField(), "sk-or-first"); - await userEvent.click(screen.getByRole("button", { name: "Save key" })); - expect(await screen.findByText("Saved. No Dot's computer is running, so each gets the key when it starts.")).toBeTruthy(); - }); - - it("refuses a key with a space inside before it is sent", async () => { - await renderSettings(); - await userEvent.type(keyField(), "sk or key"); - await userEvent.click(screen.getByRole("button", { name: "Replace key" })); - expect(await screen.findByText(/must be printable ASCII without spaces/)).toBeTruthy(); - expect(keyField().getAttribute("aria-invalid")).toBe("true"); - expect(plane.savedKeys).toEqual([]); - // Typing again clears the complaint. - await userEvent.type(keyField(), "x"); - expect(keyField().getAttribute("aria-invalid")).toBeNull(); - }); - - it("shows the control plane's refusal and keeps what was typed", async () => { - plane.failKey = { status: 503, error: "database_unavailable", message: "the database did not answer" }; - await renderSettings(); - await userEvent.type(keyField(), "sk-or-keep"); - await userEvent.click(screen.getByRole("button", { name: "Replace key" })); - const alert = await screen.findByRole("alert"); - expect(alert.textContent).toContain("Could not save the key"); - expect(alert.textContent).toContain("the database did not answer"); - expect(keyField().value).toBe("sk-or-keep"); - expect(screen.queryByText(/^Saved\./)).toBeNull(); - }); -}); - -describe("Settings: appearance and about", () => { - it("chooses the theme, applies it at once and keeps it in this browser", async () => { - await renderSettings(); - expect((screen.getByRole("radio", { name: /System/ }) as HTMLInputElement).checked).toBe(true); - await userEvent.click(screen.getByRole("radio", { name: /Dark/ })); - expect(document.documentElement.dataset.theme).toBe("dark"); - expect(localStorage.getItem(THEME_KEY)).toBe("dark"); - expect((screen.getByRole("radio", { name: /Dark/ }) as HTMLInputElement).checked).toBe(true); - await userEvent.click(screen.getByRole("radio", { name: /Light/ })); - expect(document.documentElement.dataset.theme).toBe("light"); - }); - - it("lists the version, the database and where the data and the logs are", async () => { - await renderSettings(); - const about = await screen.findByRole("region", { name: "About" }); - await waitFor(() => expect(within(about).getByText("9.9.9")).toBeTruthy()); - expect(within(about).getByText("Embedded PostgreSQL (PGlite), inside the server")).toBeTruthy(); - expect(within(about).getByText("/home/me/.invisible-dots")).toBeTruthy(); - expect(within(about).getByText("/home/me/.invisible-dots/logs")).toBeTruthy(); - expect(within(about).getByText("invisible-dots logs ")).toBeTruthy(); - }); - - it("says when the control plane does not answer", async () => { - plane.healthy = false; - await renderSettings(); - const about = await screen.findByRole("region", { name: "About" }); - expect((await within(about).findByRole("alert")).textContent).toContain("The control plane does not answer"); - }); -}); diff --git a/apps/web/test/shell.test.tsx b/apps/web/test/shell.test.tsx deleted file mode 100644 index 46fbc9a4..00000000 --- a/apps/web/test/shell.test.tsx +++ /dev/null @@ -1,319 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, render, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import AppLayout from "../src/app/(app)/layout"; -import { FAVICON_ATTENTION } from "../src/lib/favicon"; -import { stubMatchMedia, stubResizeObserver } from "./support/browser"; -import { approvalRecord, channelRecord, dotRecord, FakeControlPlane, taskRecord } from "./support/control-plane"; - -let pathname = "/"; -vi.mock("next/navigation", () => ({ usePathname: () => pathname, useRouter: () => ({ push() {}, replace() {} }) })); - -let plane: FakeControlPlane; - -beforeEach(() => { - pathname = "/"; - window.localStorage.clear(); - document.title = "Dots - invisible_dots"; - plane = new FakeControlPlane(); - plane.install(); - stubMatchMedia(); - stubResizeObserver(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); -}); - -function renderShell() { - return render( - -

content

-
, - ); -} - -const rail = () => screen.getByRole("complementary", { name: "Navigation" }); - -describe("the rail", () => { - it("lists every Dot with the ring that says what it is doing, and the approvals that wait", async () => { - plane.dots = [ - dotRecord("quiet", { name: "quiet" }), - dotRecord("stopped", { name: "stopped", computer_state: "STOPPED" }), - dotRecord("broken", { name: "broken", status: "ERROR", error: "the disk is full", computer_state: "ERROR" }), - dotRecord("asking", { name: "asking", status: "WAITING_APPROVAL" }), - ]; - plane.approvals = [approvalRecord("a1", "asking"), approvalRecord("a2", "asking"), approvalRecord("a3", "quiet", { status: "approved" })]; - renderShell(); - - const dots = within(await screen.findByRole("navigation", { name: "Dots" })); - await waitFor(() => expect(dots.getAllByRole("link", { name: (name) => name !== "New Dot" })).toHaveLength(4)); - const ringOf = (name: string) => dots.getByRole("link", { name: new RegExp(name) }).querySelector("[data-ring]")?.getAttribute("data-ring"); - expect(ringOf("quiet")).toBe("ready"); - expect(ringOf("stopped")).toBe("stopped"); - expect(ringOf("broken")).toBe("error"); - expect(ringOf("asking")).toBe("waiting"); - expect(within(dots.getByRole("link", { name: /asking/ })).getByLabelText("2 waiting")).toBeTruthy(); - expect(within(dots.getByRole("link", { name: /quiet/ })).queryByLabelText(/waiting$/)).toBeNull(); - expect(dots.getByRole("link", { name: /asking/ }).getAttribute("href")).toBe("/dots/asking/chat"); - // The Inbox entry carries everything that needs the person: the two approvals and the Dot in ERROR. - expect(within(screen.getByRole("link", { name: /^Inbox/ })).getByLabelText("3 need you")).toBeTruthy(); - expect(screen.getByRole("link", { name: /^Inbox/ }).getAttribute("href")).toBe("/inbox"); - expect(screen.queryByRole("link", { name: /^Approvals/ })).toBeNull(); - }); - - it("marks the page that is open, the Dot's page included", async () => { - plane.dots = [dotRecord("one"), dotRecord("two")]; - pathname = "/dots/two/tasks"; - renderShell(); - const dots = within(await screen.findByRole("navigation", { name: "Dots" })); - await waitFor(() => expect(dots.getAllByRole("link", { name: (name) => name !== "New Dot" })).toHaveLength(2)); - expect(dots.getByRole("link", { name: /two/ }).getAttribute("aria-current")).toBe("page"); - expect(dots.getByRole("link", { name: /one/ }).getAttribute("aria-current")).toBeNull(); - expect(screen.getByRole("link", { name: "Home" }).getAttribute("aria-current")).toBeNull(); - }); - - it("says so when there are no Dots, and when the list cannot be loaded, and offers a retry", async () => { - renderShell(); - expect(await screen.findByText("No Dots yet.")).toBeTruthy(); - cleanup(); - - plane.dots = []; - const failing = vi.fn(() => Promise.resolve(Response.json({ error: "down", message: "down" }, { status: 503 }))); - vi.stubGlobal("fetch", failing); - renderShell(); - const alert = await screen.findByText(/Could not load the Dots/); - expect(alert).toBeTruthy(); - const calls = failing.mock.calls.length; - await userEvent.click(screen.getByRole("button", { name: "Retry" })); - await waitFor(() => expect(failing.mock.calls.length).toBeGreaterThan(calls)); - }); - - it("shows the API's state and version, and says that no key is stored yet", async () => { - plane.keyConfigured = false; - renderShell(); - await waitFor(() => expect(within(rail()).getByText("API: ok")).toBeTruthy()); - expect(within(rail()).getByText("v9.9.9")).toBeTruthy(); - expect(within(rail()).getByText("No OpenRouter key stored yet")).toBeTruthy(); - }); - - it("sends the person from the missing key to the settings page where it is entered", async () => { - plane.keyConfigured = false; - renderShell(); - const warning = await within(rail()).findByRole("link", { name: "No OpenRouter key stored yet" }); - expect(warning.getAttribute("href")).toBe("/settings"); - }); - - it("has a Settings page in the main navigation, marked as the current page while it is open", async () => { - pathname = "/settings"; - renderShell(); - const link = await within(rail()).findByRole("link", { name: "Settings" }); - expect(link.getAttribute("href")).toBe("/settings"); - expect(link.getAttribute("aria-current")).toBe("page"); - expect(within(rail()).getByRole("link", { name: "Home" }).getAttribute("aria-current")).toBeNull(); - }); - - it("learns that a key was stored from the next health answer, without a reload of the page", async () => { - plane.keyConfigured = false; - // Faked before the shell starts, so that its 30 second timer is the faked one. The shell asks every 30 seconds; - // a saved key asks at once through the shared resource (settings.test.tsx). - vi.useFakeTimers({ shouldAdvanceTime: true }); - try { - renderShell(); - await within(rail()).findByText("No OpenRouter key stored yet"); - plane.keyConfigured = true; - await act(async () => { - await vi.advanceTimersByTimeAsync(30_000); - }); - await waitFor(() => expect(within(rail()).queryByText("No OpenRouter key stored yet")).toBeNull()); - } finally { - vi.useRealTimers(); - } - }); - - it("says when the API cannot be reached", async () => { - plane.healthy = false; - renderShell(); - await waitFor(() => expect(within(rail()).getByText("API: unreachable")).toBeTruthy()); - }); - - it("says at the top of the page, as an alert, that the control plane does not answer, and takes it back when it does", async () => { - renderShell(); - await waitFor(() => expect(within(rail()).getByText("Live")).toBeTruthy()); - expect(screen.queryByRole("alert")).toBeNull(); - - plane.streamDown = true; - act(() => plane.dropStream()); - const alert = await screen.findByRole("alert", undefined, { timeout: 5000 }); - expect(within(alert).getByText("The control plane does not answer")).toBeTruthy(); - // First that the stream ended, then what the next attempt was answered with. - await waitFor(() => expect(screen.getByRole("alert").textContent).toContain("the control plane is down"), { timeout: 5000 }); - // It is above the page, not in the rail, so it shows under 768 px too. - expect(rail().contains(alert)).toBe(false); - expect(within(rail()).getByText("Reconnecting")).toBeTruthy(); - - plane.streamDown = false; - await waitFor(() => expect(screen.queryByRole("alert")).toBeNull(), { timeout: 8000 }); - expect(within(rail()).getByText("Live")).toBeTruthy(); - }, 20_000); - - it("says it when the health check fails, though the stream is up", async () => { - plane.healthy = false; - renderShell(); - const alert = await screen.findByRole("alert"); - expect(within(alert).getByText("The control plane does not answer")).toBeTruthy(); - }); - - it("shows whether live updates arrive", async () => { - renderShell(); - await waitFor(() => expect(within(rail()).getByText("Live")).toBeTruthy()); - }); - - it("offers a way to create a Dot, which is the create page", async () => { - renderShell(); - expect(screen.getByRole("link", { name: "New Dot" }).getAttribute("href")).toBe("/new"); - }); - -}); - -describe("what the live stream changes in the rail", () => { - it("counts a new approval at once, and drops it when it is answered", async () => { - plane.dots = [dotRecord("d1")]; - renderShell(); - await waitFor(() => expect(plane.streamOpen).toBe(true)); - await screen.findByRole("link", { name: /d1/ }); - expect(screen.queryByLabelText("1 waiting")).toBeNull(); - - plane.approvals = [approvalRecord("a1", "d1")]; - act(() => plane.push("d1", "approval.requested", { approval_id: "a1" })); - const dots = within(screen.getByRole("navigation", { name: "Dots" })); - await waitFor(() => expect(within(dots.getByRole("link", { name: /d1/ })).getByLabelText("1 waiting")).toBeTruthy()); - expect(within(dots.getByRole("link", { name: /d1/ })).getByRole("img", { name: "Waiting for you" })).toBeTruthy(); - - plane.approvals = []; - act(() => plane.push("d1", "approval.resolved", { approval_id: "a1", decision: "approve" })); - await waitFor(() => expect(screen.queryByLabelText("1 waiting")).toBeNull()); - }); - - it("shows the ring of a Dot that is working from the agent's own events", async () => { - plane.dots = [dotRecord("d1")]; - renderShell(); - await waitFor(() => expect(plane.streamOpen).toBe(true)); - const link = await screen.findByRole("link", { name: /d1/ }); - act(() => plane.push("d1", "agent.state", { state: "THINKING" })); - await waitFor(() => expect(link.querySelector("[data-ring]")?.getAttribute("data-ring")).toBe("working")); - act(() => plane.push("d1", "agent.state", { state: "IDLE" })); - await waitFor(() => expect(link.querySelector("[data-ring]")?.getAttribute("data-ring")).toBe("ready")); - }); - - it("marks a reply that arrives while another page is open, and clears the mark when the Dot is opened", async () => { - plane.dots = [dotRecord("d1"), dotRecord("d2")]; - const view = renderShell(); - await waitFor(() => expect(plane.streamOpen).toBe(true)); - await screen.findByRole("link", { name: /d1/ }); - act(() => plane.push("d1", "message.assistant", { text: "done" })); - await waitFor(() => expect(screen.getByRole("img", { name: "New reply" })).toBeTruthy()); - expect(within(screen.getByRole("link", { name: /d2/ })).queryByRole("img", { name: "New reply" })).toBeNull(); - - pathname = "/dots/d1/chat"; - view.rerender( - -

content

-
, - ); - await waitFor(() => expect(screen.queryByRole("img", { name: "New reply" })).toBeNull()); - }); - - it("puts the count of what needs the person in the tab title, and takes it out again", async () => { - plane.dots = [dotRecord("d1"), dotRecord("d2", { status: "ERROR", error: "x", computer_state: "ERROR" })]; - plane.approvals = [approvalRecord("a1", "d1")]; - renderShell(); - await waitFor(() => expect(document.title).toBe("(2) Dots - invisible_dots")); - expect(document.head.querySelector('link[rel="icon"]')?.getAttribute("href")).toContain(encodeURIComponent(FAVICON_ATTENTION)); - - plane.approvals = []; - plane.dots = [dotRecord("d1"), dotRecord("d2")]; - await waitFor(() => expect(plane.streamOpen).toBe(true)); - act(() => { - plane.push("d1", "approval.resolved", { approval_id: "a1", decision: "approve" }); - plane.push("d2", "dot.updated"); - }); - await waitFor(() => expect(document.title).toBe("Dots - invisible_dots")); - expect(document.head.querySelector('link[rel="icon"]')?.getAttribute("href")).not.toContain(encodeURIComponent(FAVICON_ATTENTION)); - }); - - it("counts a task that failed in the last day, and not one that failed earlier or one that was dismissed", async () => { - plane.dots = [dotRecord("d1")]; - const hoursAgo = (hours: number) => new Date(Date.now() - hours * 3_600_000).toISOString(); - plane.tasks = [ - taskRecord("recent", { dot_id: "d1", status: "FAILED", error: "boom", finished_at: hoursAgo(2) }), - taskRecord("old", { dot_id: "d1", status: "FAILED", error: "boom", finished_at: hoursAgo(30) }), - taskRecord("fine", { dot_id: "d1", status: "COMPLETED", finished_at: hoursAgo(1) }), - taskRecord("dismissed", { dot_id: "d1", status: "FAILED", error: "boom", finished_at: hoursAgo(3) }), - ]; - window.localStorage.setItem("idots.dismissed-tasks", JSON.stringify(["dismissed"])); - renderShell(); - expect(await within(await screen.findByRole("link", { name: /^Inbox/ })).findByLabelText("1 need you")).toBeTruthy(); - await waitFor(() => expect(document.title).toBe("(1) Dots - invisible_dots")); - }); - - it("reads the tasks again when one fails", async () => { - plane.dots = [dotRecord("d1"), dotRecord("d2")]; - renderShell(); - await waitFor(() => expect(plane.streamOpen).toBe(true)); - await screen.findByRole("link", { name: /d2/ }); - expect(screen.queryByLabelText(/need you/)).toBeNull(); - - plane.tasks = [taskRecord("t1", { dot_id: "d2", status: "FAILED", error: "no luck", finished_at: new Date().toISOString() })]; - act(() => plane.push("d2", "task.failed", { task_id: "t1", error: "no luck" })); - await waitFor(() => expect(within(screen.getByRole("link", { name: /^Inbox/ })).getByLabelText("1 need you")).toBeTruthy()); - }); - - it("marks the Dot whose channel needs linking again, counts it for the Inbox, and clears both when it is linked", async () => { - plane.dots = [dotRecord("d1", { name: "fares" }), dotRecord("d2", { name: "mailer" })]; - plane.channels = { d2: [channelRecord("telegram", { status: "needs_relink", status_detail: "revoked" })] }; - renderShell(); - const dots = within(await screen.findByRole("navigation", { name: "Dots" })); - expect(await dots.findByLabelText("Telegram needs linking again")).toBeTruthy(); - expect(within(dots.getByRole("link", { name: /mailer/ })).getByLabelText("Telegram needs linking again")).toBeTruthy(); - expect(within(dots.getByRole("link", { name: /fares/ })).queryByLabelText(/needs linking again/)).toBeNull(); - expect(within(screen.getByRole("link", { name: /^Inbox/ })).getByLabelText("1 need you")).toBeTruthy(); - await waitFor(() => expect(document.title).toBe("(1) Dots - invisible_dots")); - - // The person gives a new token: the host says so, and the shell reads the channels again. - plane.channels = { d2: [channelRecord("telegram")] }; - act(() => plane.push("d2", "channel.status", { kind: "telegram", status: "connected" })); - await waitFor(() => expect(screen.queryByLabelText(/needs linking again/)).toBeNull()); - await waitFor(() => expect(screen.queryByLabelText(/need you/)).toBeNull()); - }); - - it("puts the prefix back when the page writes a new title", async () => { - plane.dots = [dotRecord("d1", { status: "ERROR", error: "x", computer_state: "ERROR" })]; - renderShell(); - await waitFor(() => expect(document.title).toBe("(1) Dots - invisible_dots")); - act(() => { - document.title = "Chat - invisible_dots"; - }); - await waitFor(() => expect(document.title).toBe("(1) Chat - invisible_dots")); - }); -}); - -describe("the menu on a narrow screen", () => { - it("opens the same rail as a sheet, and closes it when a page is chosen", async () => { - plane.dots = [dotRecord("d1")]; - renderShell(); - await userEvent.click(screen.getByRole("button", { name: "Open the menu" })); - const sheet = await screen.findByRole("dialog"); - // It opens on the page the person is on, and no status of the rail's foot takes the focus (and opens its tooltip). - await waitFor(() => expect(document.activeElement?.getAttribute("aria-current")).toBe("page")); - expect(sheet.contains(document.activeElement)).toBe(true); - expect(screen.queryByRole("tooltip")).toBeNull(); - const link = await within(sheet).findByRole("link", { name: /d1/ }); - // jsdom cannot navigate: the click is still heard by the page, which is what closes the sheet. - document.addEventListener("click", (event) => event.preventDefault(), { once: true }); - await userEvent.click(link); - await waitFor(() => expect(screen.queryByRole("dialog")).toBeNull()); - }); -}); diff --git a/apps/web/test/skills.test.tsx b/apps/web/test/skills.test.tsx deleted file mode 100644 index 165a90d3..00000000 --- a/apps/web/test/skills.test.tsx +++ /dev/null @@ -1,107 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, render, screen, waitFor, within } from "@testing-library/react"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { DotShell } from "../src/components/DotShell"; -import { DotEventScope, EventStreamProvider } from "../src/components/events"; -import { AttentionProvider } from "../src/components/shell/attention"; -import { SkillsView } from "../src/components/skills/SkillsView"; -import { parseSkillsQuery, skillBody, skillsHref } from "../src/lib/skills-view"; -import { stubMatchMedia } from "./support/browser"; -import { dotRecord, FakeControlPlane } from "./support/control-plane"; - -vi.mock("next/navigation", () => ({ usePathname: () => "/dots/d1/skills", useRouter: () => ({ push() {}, replace() {} }) })); - -let plane: FakeControlPlane; - -beforeEach(() => { - plane = new FakeControlPlane(); - plane.dots = [dotRecord("d1", { name: "fares" })]; - plane.install(); - stubMatchMedia(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); -}); - -const own = { - name: "shop-login", - description: "Log in to the shop.", - source: "dot" as const, - path: "/home/dot/skills/shop-login/SKILL.md", - content: "---\nname: shop-login\ndescription: Log in to the shop.\n---\n\nClick **Sign in**, then type the email.\n", -}; - -async function renderSkills(params: Record = {}) { - render( - - - - - - - - - , - ); - await screen.findByRole("heading", { level: 1, hidden: true }); - await waitFor(() => expect(plane.streamOpen).toBe(true)); -} - -describe("the address of the Skills page", () => { - it("holds the open skill, and the shortest address for none", () => { - expect(parseSkillsQuery({})).toEqual({ skill: null }); - expect(parseSkillsQuery({ skill: ["shop-login", "x"] })).toEqual({ skill: "shop-login" }); - expect(skillsHref("my dot")).toBe("/dots/my%20dot/skills"); - expect(skillsHref("d1", "shop-login")).toBe("/dots/d1/skills?skill=shop-login"); - }); - - it("shows a skill's file without its frontmatter", () => { - expect(skillBody(own.content)).toBe("Click **Sign in**, then type the email.\n"); - expect(skillBody("no frontmatter\n")).toBe("no frontmatter\n"); - }); -}); - -describe("the Skills page", () => { - it("lists the built-in skills and the Dot's own, saying which is which, and asks to pick one", async () => { - plane.skills = [...plane.skills!, own]; - await renderSkills(); - const list = await screen.findByRole("list", { name: "The Dot's skills" }); - const rows = within(list).getAllByRole("link"); - expect(rows.map((row) => row.getAttribute("href"))).toEqual(["/dots/d1/skills?skill=invisible-playwright", "/dots/d1/skills?skill=shop-login"]); - expect(rows[0]!.textContent).toContain("Built in"); - expect(rows[1]!.textContent).toContain("Written by the Dot"); - expect(rows[1]!.textContent).toContain("Log in to the shop."); - expect(screen.getByText("Pick a skill to read it.")).toBeTruthy(); - }); - - it("shows the open skill as Markdown, with where it is on the computer, and says so of a name it does not have", async () => { - plane.skills = [...plane.skills!, own]; - await renderSkills({ skill: "shop-login" }); - const open = await screen.findByRole("region", { name: "The skill shop-login" }); - expect(within(open).getByText("/home/dot/skills/shop-login/SKILL.md")).toBeTruthy(); - expect(within(open).getByText("Sign in").tagName).toBe("STRONG"); - expect(open.textContent).not.toContain("description:"); - expect(within(screen.getByRole("list", { name: "The Dot's skills" })).getByRole("link", { current: "page" }).textContent).toContain("shop-login"); - cleanup(); - - await renderSkills({ skill: "gone" }); - expect(await screen.findByText("The Dot has no skill named gone.")).toBeTruthy(); - }); - - it("reads the list again when a turn ends, which may have written a skill", async () => { - await renderSkills(); - await screen.findByRole("list", { name: "The Dot's skills" }); - plane.skills = [...plane.skills!, own]; - act(() => plane.push("d1", "message.assistant", { text: "I wrote down how to log in." })); - expect(await screen.findByText("shop-login")).toBeTruthy(); - }); - - it("asks nothing of a stopped computer and offers to start it", async () => { - plane.dots = [dotRecord("d1", { name: "fares", computer_state: "STOPPED" })]; - await renderSkills(); - expect((await screen.findByRole("status")).textContent).toContain("Start the computer to see its skills"); - expect(plane.requests.filter((r) => /\/skills$/.test(r))).toEqual([]); - }); -}); diff --git a/apps/web/test/support/browser.ts b/apps/web/test/support/browser.ts deleted file mode 100644 index c5133caa..00000000 --- a/apps/web/test/support/browser.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { vi } from "vitest"; - -/** - * jsdom has no `matchMedia`; this one answers every query the same: "no" by default (light mode, a narrow window), or - * "yes" when `matches` is true (a wide window; dark mode too, which no test of a wide window looks at). It never changes. - */ -export function stubMatchMedia(matches = false): void { - vi.stubGlobal( - "matchMedia", - vi.fn(() => ({ matches, addEventListener() {}, removeEventListener() {} })), - ); -} - -/** jsdom has no layout, so no `ResizeObserver`: this one never reports a size, which leaves a scrolling thread where it is. */ -export function stubResizeObserver(): void { - vi.stubGlobal( - "ResizeObserver", - class { - observe() {} - unobserve() {} - disconnect() {} - }, - ); -} - -/** - * jsdom has no object URLs: each one made here is a distinct address that the test can see being made and revoked. - * It is set on `URL` itself, which lasts for the test file (every file has its own jsdom). - */ -export function stubObjectUrls(): { created: string[]; revoked: string[] } { - const record = { created: [] as string[], revoked: [] as string[] }; - let next = 0; - URL.createObjectURL = () => { - const url = `blob:test/${++next}`; - record.created.push(url); - return url; - }; - URL.revokeObjectURL = (url: string) => { - record.revoked.push(url); - }; - return record; -} diff --git a/apps/web/test/support/config.ts b/apps/web/test/support/config.ts deleted file mode 100644 index bda2a697..00000000 --- a/apps/web/test/support/config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { parseDotConfig, type DotConfig } from "@invisible-dots/shared/browser"; - -/** A whole Dot config as the API stores it: every default applied, the way a real record's config always is. */ -export function fullConfig(change: Record = {}): DotConfig { - return parseDotConfig({ - name: "fare-watch", - model: { provider: "openrouter", id: "z-ai/glm-5.3-flash" }, - ...change, - }); -} diff --git a/apps/web/test/support/contrast.ts b/apps/web/test/support/contrast.ts deleted file mode 100644 index 26eaaaa6..00000000 --- a/apps/web/test/support/contrast.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** WCAG 2.x contrast, the one measure the color tests of the web client share (tokens, avatars). Colors are [r, g, b], 0 to 255. */ -export type Rgb = readonly [number, number, number]; - -export function fromHex(hex: string): Rgb { - return [parseInt(hex.slice(1, 3), 16), parseInt(hex.slice(3, 5), 16), parseInt(hex.slice(5, 7), 16)]; -} - -/** CSS `hsl(h s l)`: hue in degrees, saturation and lightness in 0 to 1. */ -export function fromHsl(hue: number, saturation: number, lightness: number): Rgb { - const chroma = (1 - Math.abs(2 * lightness - 1)) * saturation; - const x = chroma * (1 - Math.abs(((hue / 60) % 2) - 1)); - const m = lightness - chroma / 2; - const sector: Array<[number, number, number]> = [ - [chroma, x, 0], - [x, chroma, 0], - [0, chroma, x], - [0, x, chroma], - [x, 0, chroma], - [chroma, 0, x], - ]; - const [r, g, b] = sector[Math.floor(hue / 60) % 6]!; - return [(r + m) * 255, (g + m) * 255, (b + m) * 255]; -} - -/** `top` painted over `bottom` at `alpha` (what `bg-input/30` is on the surface under it). */ -export function over(top: Rgb, alpha: number, bottom: Rgb): Rgb { - return [0, 1, 2].map((i) => top[i]! * alpha + bottom[i]! * (1 - alpha)) as unknown as Rgb; -} - -export function luminance([r, g, b]: Rgb): number { - const channel = (value: number) => { - const v = value / 255; - return v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4; - }; - return 0.2126 * channel(r) + 0.7152 * channel(g) + 0.0722 * channel(b); -} - -export function contrast(a: Rgb, b: Rgb): number { - const [light, dark] = [luminance(a), luminance(b)].sort((x, y) => y - x); - return (light! + 0.05) / (dark! + 0.05); -} diff --git a/apps/web/test/support/control-plane.ts b/apps/web/test/support/control-plane.ts deleted file mode 100644 index e502cb87..00000000 --- a/apps/web/test/support/control-plane.ts +++ /dev/null @@ -1,661 +0,0 @@ -/** - * A stand-in for the control plane as the browser sees it: the routes the shell reads and the computer actions it - * sends, answered from memory, and `/api/stream` as a live SSE body the test pushes events into. `install()` puts - * it behind the global `fetch`, which is where the web client's SDK looks. - */ -import { COMPUTER_STOPPED, CONVERSATION_LIST_LIMIT, TASK_LIST_LIMIT, computerIsUp, MAX_EVENT_PAGE, type ApprovalRecord, type BrowserIdentity, type ChannelKind, type ChannelLinkFrame, type ChannelRecord, type ChannelSettings, type ComputerAnswer, type DoctorCheck, type DotConfig, type DotSummary, type McpServerStatus, type Skill, type StoredEvent, type SystemAnswer, type ToolInfo, mcpServerNames } from "@invisible-dots/shared/browser"; -import type { TaskRecord } from "@invisible-dots/sdk"; -import { vi } from "vitest"; - -export function dotRecord(id: string, change: Partial = {}): DotSummary { - return { - id, - name: id, - // The API parses every config with the schema's defaults, so these two always exist on a real record. - config: { permissions: {} } as unknown as DotConfig, - status: "READY", - error: null, - created_at: "2026-01-01T00:00:00Z", - updated_at: "2026-01-01T00:00:00Z", - computer_state: "RUNNING", - config_version: 1, - ...change, - }; -} - -export function approvalRecord(id: string, dotId: string, change: Partial = {}): ApprovalRecord { - return { - id, - dot_id: dotId, - task_id: null, - tool: "exec", - permission: "computer.exec", - arguments: {}, - reason: "needs a command", - status: "pending", - note: null, - created_at: "2026-01-01T00:00:00Z", - resolved_at: null, - ...change, - }; -} - -export function channelRecord(kind: ChannelKind, change: Partial = {}): ChannelRecord { - const settings: ChannelSettings = { approvals: true, notify_tasks: true, show_arguments: false }; - return { - kind, - enabled: true, - status: "connected", - status_detail: null, - account: kind === "telegram" ? "fake_bot" : "15550001111", - settings, - peers: [], - created_at: "2026-01-01T00:00:00Z", - ...change, - }; -} - -export function taskRecord(id: string, change: Partial = {}): TaskRecord { - return { - id, - dot_id: "d1", - description: `task ${id}`, - priority: 0, - status: "PENDING", - created_at: "2026-01-01T00:00:00Z", - scheduled_at: null, - started_at: null, - finished_at: null, - summary: null, - error: null, - spent_usd: 0, - ...change, - }; -} - -export class FakeControlPlane { - dots: DotSummary[] = []; - approvals: ApprovalRecord[] = []; - tasks: TaskRecord[] = []; - /** The stored event log, as `GET /api/dots/:id/events` pages through it; `push` and `store` add to it. */ - events: StoredEvent[] = []; - /** What each `GET .../events` asked for, so a test can see that a page cut by type was asked for by type. */ - eventQueries: Array<{ after: number; before?: number; limit: number; types: string[] | null; tools: string[] | null; taskId: string | null; order: string | null }> = []; - /** What the shell asked for to know the agent's state when a page opened: the newest `agent.state` or `agent.started`. */ - agentQueries: Array<{ after: number; before?: number; limit: number; types: string[] | null; tools: string[] | null; taskId: string | null; order: string | null }> = []; - /** What each `GET .../tasks` asked for. */ - taskQueries: Array<{ limit: number | null; before: string | null }> = []; - /** While set, `GET /api/stream` answers 503, as a control plane that does not answer does. */ - streamDown = false; - /** What each `GET /api/approvals` asked for. */ - approvalQueries: Array<{ status: string[] | null; limit: number | null; order: string | null; before: string | null; dot_id: string | null }> = []; - /** The body of every `POST /api/dots/:id/tasks`, as the browser sent it. */ - createdTasks: unknown[] = []; - /** Answer `POST /api/dots/:id/tasks` with this error instead of 201. */ - failCreateTask: { status: number; error: string; message: string } | null = null; - /** Answer `POST /api/tasks/:id/cancel` with this error instead of cancelling. */ - failCancel: { status: number; error: string; message: string } | null = null; - /** Every `POST /api/approvals/:id/approve|reject` the browser sent, in order, with the body it carried. */ - answers: Array<{ id: string; decision: "approve" | "reject"; body: { note?: string; always?: true } }> = []; - /** Answer approval answers with this error instead of recording them. */ - failAnswer: { status: number; error: string; message: string } | null = null; - /** The skills `GET /api/dots/:id/skills` answers with; null answers 409 computer_stopped, as a stopped computer does. */ - skills: Skill[] | null = [ - { - name: "invisible-playwright", - description: "Use the Dot's browser for any task on a website.", - source: "builtin", - path: "/opt/invisible-dots/engine/skills/invisible-playwright/SKILL.md", - content: "---\nname: invisible-playwright\ndescription: Use the Dot's browser for any task on a website.\n---\n\n# The browser\n\nOpen an **identity** first.\n", - }, - ]; - /** The tool table `GET /api/dots/:id/tools` answers with; null answers 409 computer_stopped, as a stopped computer does. */ - tools: ToolInfo[] | null = [ - { name: "exec", permission: "computer.exec", offered: true, description: "Run a shell command." }, - { name: "exec_session", permission: "computer.exec", offered: true, description: "Use a command session." }, - { name: "read_file", permission: "files.read", offered: true, description: "Read a file." }, - ]; - /** The MCP servers' states `GET /api/dots/:id/tools` answers with, beside the tools. */ - mcpServers: McpServerStatus[] = []; - /** The MCP secrets that are set, as `/`; never their values, as the host answers. */ - readonly mcpSecretsSet = new Set(); - /** Every `PUT` (a value) and `DELETE` (null) of an MCP secret, as the browser sent it. */ - readonly mcpSecretWrites: Array<{ server: string; name: string; value: string | null }> = []; - /** The channels `GET /api/dots/:id/channels` lists, by Dot id. */ - channels: Record = {}; - /** The kinds of channel the server can run, as `GET .../channels` says. */ - channelsAvailable: ChannelKind[] = ["telegram"]; - /** Every change of a channel as "METHOD kind sub body", in order (a token is never written here). */ - channelActions: string[] = []; - /** Answer the channel routes that change something with this error instead of doing it. */ - failChannel: { status: number; error: string; message: string } | null = null; - /** Answer `GET .../channels` with this error instead of the list. */ - failChannels: { status: number; error: string; message: string } | null = null; - /** The code `POST .../pairing` makes next, and how long it lasts. */ - pairing = { code: "K7M2QX9P", expiresInMs: 600_000 }; - /** The token of every `PUT .../channels/telegram`, as the browser sent it. */ - sentTokens: string[] = []; - /** The body of every `PATCH /api/dots/:id`, as the browser sent it. */ - updates: Array<{ config: unknown; expected_config_version?: number }> = []; - /** Answer `PATCH /api/dots/:id` with this error instead of saving. */ - failUpdate: { status: number; error: string; message: string } | null = null; - /** The ids of the Dots the browser deleted (`DELETE /api/dots/:id`), in order. */ - deleted: string[] = []; - /** Answer `DELETE /api/dots/:id` with this error instead of accepting it. */ - failDelete: { status: number; error: string; message: string } | null = null; - /** The most events one `GET .../events` page holds (the real route's is 1000). */ - eventPage = MAX_EVENT_PAGE; - /** Answer `GET .../events` with this status instead of the log. */ - failEvents: number | null = null; - /** The text of every `POST /api/dots/:id/messages`, as the browser sent it. */ - sentMessages: string[] = []; - /** Answer `POST /api/dots/:id/messages` with this error instead of 201. */ - failSend: { status: number; error: string; message: string } | null = null; - /** What `POST /api/dots/:id/messages` says of the delivery. */ - delivery: "delivered" | "queued" = "delivered"; - /** While set, `POST /api/dots/:id/messages` waits for it to resolve before it answers. */ - holdSend: Promise | null = null; - /** What each `GET .../messages` asked for. */ - messageQueries: Array<{ limit: number | null; order: string | null; before: number | null }> = []; - /** The identities `GET .../browser-identities` lists. */ - identities: BrowserIdentity[] = []; - /** Answer `GET .../computer/screenshot` and `.../frame` with this error instead of a picture. */ - failPicture: { status: number; error: string; message: string } | null = null; - /** Spend today, as `GET /api/dots/:id/usage?since=` answers it, and in total, as it answers without `since`. */ - spentUsd = 0; - spentTotalUsd = 0; - /** The body of every `POST .../browser-identities`, as the browser sent it. */ - createdIdentities: Array<{ name: string; proxy?: string }> = []; - /** The ids of the identities the browser closed (`POST .../close`) and deleted, in order. */ - closedIdentities: string[] = []; - deletedIdentities: string[] = []; - /** Answer an identity's create, close or delete with this error instead of doing it. */ - failIdentityAction: { status: number; error: string; message: string } | null = null; - /** Answer `GET .../browser-identities` with this error instead of the list. */ - failIdentities: { status: number; error: string; message: string } | null = null; - /** The files of the Dot's computer by absolute path; a folder exists where a file is under it (and home always). */ - files = new Map(); - /** Answer the files routes with this error instead of the folder or the file. */ - failFiles: { status: number; error: string; message: string } | null = null; - /** What `GET .../computer` says of the guest while it runs. */ - system: SystemAnswer | null = null; - computerImages: { golden_image: string | null; runtime_image: string | null } = { golden_image: "golden-1.qcow2", runtime_image: "runtime-1.iso" }; - /** `ready` of `GET .../computer`. */ - ready = true; - keyConfigured = true; - healthy = true; - /** The value of every `PUT /api/secrets/openrouter`, as the browser sent it. */ - savedKeys: string[] = []; - /** How many running Dots `PUT /api/secrets/openrouter` says it pushed the key to. */ - keyPushedTo = 0; - /** Answer `PUT /api/secrets/openrouter` with this error instead of storing the key. */ - failKey: { status: number; error: string; message: string } | null = null; - /** What `GET /api/doctor` reports, in the contract's order (the real one has nine rows, the last the key). */ - doctor: DoctorCheck[] = [ - { id: "node", label: "Node.js", status: "ok", detail: "24.1.0" }, - { id: "qemu", label: "QEMU", status: "ok", detail: "8.2.2" }, - { id: "golden-image", label: "golden image", status: "ok", detail: "golden-1.qcow2 matches its manifest" }, - { id: "openrouter", label: "OpenRouter key", status: "ok", detail: "stored" }, - ]; - /** Answer `GET /api/doctor` with this status instead of the report. */ - failDoctor: number | null = null; - computerLastError: string | null = null; - /** `stop_reason` and `next_automation_at` of `GET .../computer`: what the host records, which is there while the computer is off. */ - computerStopReason: ComputerAnswer["stop_reason"] = null; - nextAutomationAt: string | null = null; - /** Every request as "METHOD path", in order. */ - requests: string[] = []; - /** Answer a computer action with this error status instead of 202. */ - failComputerAction: number | null = null; - /** The `config` of every `POST /api/dots`, as the browser sent it (YAML text or an object). */ - created: unknown[] = []; - /** Answer `POST /api/dots` with this error instead of 201. */ - failCreate: { status: number; error: string; message: string; details?: unknown } | null = null; - #stream: ReadableStreamDefaultController | null = null; - /** The WhatsApp link streams that are open, by Dot id. */ - #links = new Map>(); - #nextEventId = 1; - - /** `fetch` as the browser would have it: the routes of this class and nothing else. */ - fetch = (input: RequestInfo | URL, init?: RequestInit): Promise => this.#answer(String(input), init); - - install(): void { - vi.stubGlobal("fetch", vi.fn(this.fetch)); - } - - /** Put a file on the Dot's computer. */ - putFile(path: string, content: string | Uint8Array, mtime = "2026-03-10T12:00:00Z"): void { - this.files.set(path, { content: typeof content === "string" ? new TextEncoder().encode(content) : content, mtime }); - } - - /** Put an event in the stored log without telling the stream: it happened before the page opened. */ - store(dotId: string, type: string, data: Record = {}, createdAt = new Date().toISOString()): StoredEvent { - const event = { id: this.#nextEventId++, dot_id: dotId, type, data, source: "guest", guest_seq: null, created_at: createdAt } as StoredEvent; - this.events.push(event); - return event; - } - - /** Push a live event to everything listening on the stream (it is stored too, as the real one is). */ - push(dotId: string, type: string, data: Record = {}): void { - const event = this.store(dotId, type, data); - this.#stream?.enqueue(new TextEncoder().encode(`id: ${event.id}\ndata: ${JSON.stringify(event)}\n\n`)); - } - - /** The connection of the live stream ends without a last event: the control plane stopped, or the network dropped. */ - dropStream(): void { - const stream = this.#stream; - this.#stream = null; - stream?.close(); - } - - get streamOpen(): boolean { - return this.#stream !== null; - } - - /** Whether a page follows the WhatsApp link of this Dot (`GET .../channels/whatsapp/qr` is open). */ - linkOpen(dotId: string): boolean { - return this.#links.has(dotId); - } - - /** The connection of the WhatsApp link ends without a last frame: the server went away. */ - dropLink(dotId: string): void { - const link = this.#links.get(dotId); - if (!link) throw new Error(`nothing follows the WhatsApp link of ${dotId}`); - this.#links.delete(dotId); - link.close(); - } - - /** A frame of the WhatsApp link, to the page that follows it; a last frame (`linked`, `failed`) ends the stream, as the host's does. */ - linkFrame(dotId: string, frame: ChannelLinkFrame): void { - const link = this.#links.get(dotId); - if (!link) throw new Error(`nothing follows the WhatsApp link of ${dotId}`); - link.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(frame)}\n\n`)); - if (frame.state === "linked" || frame.state === "failed") { - this.#links.delete(dotId); - link.close(); - } - } - - async #answer(url: string, init?: RequestInit): Promise { - const { pathname, searchParams } = new URL(url, "http://web.test"); - const method = init?.method ?? "GET"; - this.requests.push(`${method} ${pathname}`); - const json = (body: unknown, status = 200) => Response.json(body, { status }); - - if (pathname === "/api/stream") { - if (this.streamDown) return json({ error: "down", message: "the control plane is down" }, 503); - return new Response( - new ReadableStream({ - start: (controller) => { - this.#stream = controller; - init?.signal?.addEventListener("abort", () => { - this.#stream = null; - try { - controller.close(); - } catch { - // already closed - } - }); - }, - }), - { headers: { "content-type": "text/event-stream" } }, - ); - } - if (pathname === "/session" && method === "DELETE") return new Response(null, { status: 204 }); - if (pathname === "/api/doctor") { - if (this.failDoctor) return json({ error: "broken", message: "the doctor could not run" }, this.failDoctor); - return json({ ok: this.doctor.every((check) => check.status === "ok"), checks: this.doctor }); - } - if (pathname === "/api/health") { - return this.healthy - ? json({ - status: "ok", - database: "ok", - version: "9.9.9", - openrouter_configured: this.keyConfigured, - database_kind: "pglite", - data_dir: "/home/me/.invisible-dots", - logs_dir: "/home/me/.invisible-dots/logs", - }) - : json({ error: "down", message: "down" }, 503); - } - if (pathname === "/api/secrets/openrouter" && method === "PUT") { - if (this.failKey) return json({ error: this.failKey.error, message: this.failKey.message }, this.failKey.status); - this.savedKeys.push((JSON.parse(String(init?.body)) as { value: string }).value); - this.keyConfigured = true; - return json({ pushed: this.keyPushedTo }); - } - if (pathname === "/api/dots" && method === "POST") { - const { config } = JSON.parse(String(init?.body)) as { config: unknown }; - this.created.push(config); - if (this.failCreate) return json({ error: this.failCreate.error, message: this.failCreate.message, details: this.failCreate.details }, this.failCreate.status); - return json(dotRecord("created-1", { name: "created", status: "CREATING", computer_state: null }), 201); - } - if (pathname === "/api/dots") return json({ dots: this.dots }); - if (pathname === "/api/approvals") { - const status = searchParams.get("status")?.split(",") ?? null; - const limit = searchParams.get("limit") === null ? null : Number(searchParams.get("limit")); - const order = searchParams.get("order"); - const before = searchParams.get("before"); - const dotId = searchParams.get("dot_id"); - this.approvalQueries.push({ status, limit, order, before, dot_id: dotId }); - // The real route: oldest first, or with order=desc the newest by last change, a cursor being the id of the last row seen. - const changed = (a: ApprovalRecord) => Date.parse(a.resolved_at ?? a.created_at); - const listed = this.approvals.filter((a) => (!status || status.includes(a.status)) && (dotId === null || a.dot_id === dotId)); - const ordered = order === "desc" ? [...listed].sort((a, b) => changed(b) - changed(a) || b.id.localeCompare(a.id)) : listed; - const from = before === null ? 0 : ordered.findIndex((a) => a.id === before) + 1 || ordered.length; - return json({ approvals: ordered.slice(from, from + (limit ?? 500)) }); - } - const answer = /^\/api\/approvals\/([^/]+)\/(approve|reject)$/.exec(pathname); - if (answer && method === "POST") { - const id = decodeURIComponent(answer[1]!); - const decision = answer[2] as "approve" | "reject"; - const body = JSON.parse(String(init?.body ?? "{}")) as { note?: string; always?: true }; - this.answers.push({ id, decision, body }); - if (this.failAnswer) return json({ error: this.failAnswer.error, message: this.failAnswer.message }, this.failAnswer.status); - const record = this.approvals.find((a) => a.id === id); - if (!record) return json({ error: "not_found", message: `no approval ${id}` }, 404); - if (record.status !== "pending") return json({ error: "already_resolved", message: `approval ${id} is already ${record.status}` }, 409); - Object.assign(record, { status: decision === "approve" ? "approved" : "rejected", note: body.note ?? null, resolved_at: new Date().toISOString() }); - // The host logs the answer and publishes it: the page hears it as it would from the real one. - this.push(record.dot_id, "approval.resolved", { approval_id: id, decision, ...(record.task_id ? { task_id: record.task_id } : {}), ...(body.note ? { note: body.note } : {}), ...(body.always ? { always: true } : {}) }); - return json(record); - } - if (pathname === "/api/tasks" && method === "GET") { - // The real route: the tasks of every Dot that ended in `status` after `finished_after`, the latest end first. - const status = searchParams.get("status"); - const after = Date.parse(searchParams.get("finished_after") ?? ""); - const ended = this.tasks.filter((t) => t.status === status && t.finished_at !== null && Date.parse(t.finished_at) > after); - return json({ tasks: ended.sort((a, b) => Date.parse(b.finished_at!) - Date.parse(a.finished_at!)) }); - } - if (pathname === "/api/channels" && method === "GET") { - // The real route: every channel of every Dot, each with its Dot's id. - if (this.failChannels) return json({ error: this.failChannels.error, message: this.failChannels.message }, this.failChannels.status); - return json({ channels: Object.entries(this.channels).flatMap(([dotId, list]) => list.map((channel) => ({ dot_id: dotId, ...channel }))) }); - } - const task = /^\/api\/tasks\/([^/]+)(\/cancel)?$/.exec(pathname); - if (task) { - const record = this.tasks.find((t) => t.id === decodeURIComponent(task[1]!)); - if (!record) return json({ error: "not_found", message: "no such task" }, 404); - if (!task[2]) return json(record); - if (this.failCancel) return json({ error: this.failCancel.error, message: this.failCancel.message }, this.failCancel.status); - Object.assign(record, { status: "CANCELLED", error: "cancelled by the user", finished_at: new Date().toISOString() }); - return json(record); - } - const dot = /^\/api\/dots\/([^/]+)(?:\/(.*))?$/.exec(pathname); - if (dot) { - // The real routes take a Dot's id or its name (requireDot). - const address = decodeURIComponent(dot[1]!); - const record = this.dots.find((d) => d.id === address) ?? this.dots.find((d) => d.name === address); - if (!record) return json({ error: "not_found", message: "no such Dot" }, 404); - const rest = dot[2] ?? ""; - if (rest === "" && method === "PATCH") { - const body = JSON.parse(String(init?.body)) as { config: DotConfig; expected_config_version?: number }; - this.updates.push(body); - if (this.failUpdate) return json({ error: this.failUpdate.error, message: this.failUpdate.message }, this.failUpdate.status); - if (body.expected_config_version !== undefined && body.expected_config_version !== record.config_version) { - return json({ error: "dot_changed", message: `Dot ${record.name} changed after you read it` }, 409); - } - record.config = body.config; - record.config_version += 1; - this.push(record.id, "dot.updated", { name: record.name }); - return json(record); - } - if (rest === "" && method === "DELETE") { - if (this.failDelete) return json({ error: this.failDelete.error, message: this.failDelete.message }, this.failDelete.status); - this.deleted.push(record.id); - return json({ accepted: true }, 202); - } - if (rest === "") return json(record); - if (rest === "tasks" && method === "GET") { - // The real route: the newest created first, at most TASK_LIST_LIMIT a page, `before` the id of the last task of the page before. - const limit = Math.min(Number(searchParams.get("limit") ?? TASK_LIST_LIMIT), TASK_LIST_LIMIT); - const before = searchParams.get("before"); - this.taskQueries.push({ limit: searchParams.has("limit") ? limit : null, before }); - const newest = this.tasks.filter((t) => t.dot_id === record.id).sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at) || (a.id < b.id ? 1 : -1)); - const from = before === null ? 0 : newest.findIndex((t) => t.id === before) + 1 || newest.length; - return json({ tasks: newest.slice(from, from + limit) }); - } - if (rest === "tasks" && method === "POST") { - const body = JSON.parse(String(init?.body)) as { description: string; priority?: number; scheduled_at?: string }; - this.createdTasks.push(body); - if (this.failCreateTask) return json({ error: this.failCreateTask.error, message: this.failCreateTask.message }, this.failCreateTask.status); - const created = taskRecord(`created-${this.createdTasks.length}`, { - dot_id: record.id, - description: body.description, - priority: body.priority ?? 0, - scheduled_at: body.scheduled_at ?? null, - created_at: new Date().toISOString(), - }); - this.tasks.push(created); - return json(created, 201); - } - if (rest === "events") { - if (this.failEvents) return json({ error: "broken", message: "the event log is not available" }, this.failEvents); - const after = Number(searchParams.get("after") ?? 0); - const limit = Math.min(Number(searchParams.get("limit") ?? 500), this.eventPage); - // The real route's filters: `types` (a comma-separated list) and `task_id` (data.task_id). - const types = searchParams.get("types")?.split(","); - const tools = searchParams.get("tools")?.split(","); - const taskId = searchParams.get("task_id"); - const order = searchParams.get("order"); - const before = searchParams.has("before") ? Number(searchParams.get("before")) : undefined; - if (before !== undefined && order !== "desc") return json({ error: "invalid_request", message: "before pages a list in order=desc" }, 400); - const query = { after, ...(before === undefined ? {} : { before }), limit, types: types ?? null, tools: tools ?? null, taskId, order }; - // The shell's one read of the agent's newest state is kept apart, so a test of what a view reads sees its own requests. - (types?.length === 2 && types.includes("agent.state") && types.includes("agent.started") ? this.agentQueries : this.eventQueries).push(query); - // `tools` narrows tool.called only, `order=desc` is the newest first and the limit keeps the newest. - const kept = this.events.filter( - (e) => - e.dot_id === record.id && - e.id > after && - (before === undefined || e.id < before) && - (!types || types.includes(e.type)) && - (!tools || e.type !== "tool.called" || tools.includes(String(e.data.tool))) && - (taskId === null || e.data.task_id === taskId), - ); - return json({ events: (order === "desc" ? [...kept].reverse() : kept).slice(0, limit) }); - } - if (rest === "messages" && method === "GET") { - // The host logs the person's side as `user.message`, which the shared event type list does not hold. - const type = (e: StoredEvent) => e.type as string; - const limit = searchParams.has("limit") ? Number(searchParams.get("limit")) : null; - const order = searchParams.get("order"); - const before = searchParams.has("before") ? Number(searchParams.get("before")) : null; - if (before !== null && order !== "desc") return json({ error: "invalid_request", message: "before pages a list in order=desc" }, 400); - this.messageQueries.push({ limit, order, before }); - // The real route: oldest first, or with order=desc the newest first, a cursor being the event id of the oldest message seen; a page holds at most CONVERSATION_LIST_LIMIT. - const kept = this.events.filter((e) => e.dot_id === record.id && (type(e) === "user.message" || type(e) === "message.assistant") && (before === null || e.id < before)); - const messages = (order === "desc" ? [...kept].reverse() : kept) - .slice(0, Math.min(limit ?? CONVERSATION_LIST_LIMIT, CONVERSATION_LIST_LIMIT)) - .map((e) => ({ event_id: e.id, role: type(e) === "user.message" ? "user" : "assistant", text: String(e.data.text ?? ""), in_reply_to: null, ...(type(e) === "user.message" && e.data.origin ? { origin: e.data.origin } : {}), created_at: e.created_at })); - return json({ messages }); - } - if (rest === "messages" && method === "POST") { - const { text } = JSON.parse(String(init?.body)) as { text: string }; - this.sentMessages.push(text); - if (this.holdSend) await this.holdSend; - if (this.failSend) return json({ error: this.failSend.error, message: this.failSend.message }, this.failSend.status); - const stored = this.store(record.id, "user.message", { message_id: `msg-${this.sentMessages.length}`, text }); - this.#stream?.enqueue(new TextEncoder().encode(`id: ${stored.id}\ndata: ${JSON.stringify(stored)}\n\n`)); - return json({ message_id: `msg-${this.sentMessages.length}`, event_id: stored.id, delivery: this.delivery }, 201); - } - if (rest === "computer/screenshot") { - if (this.failPicture) return json({ error: this.failPicture.error, message: this.failPicture.message }, this.failPicture.status); - return new Response(Uint8Array.from([0x89, 0x50, 0x4e, 0x47]), { headers: { "content-type": "image/png" } }); - } - if (rest === "browser-identities" && method === "GET") { - if (this.failIdentities) return json({ error: this.failIdentities.error, message: this.failIdentities.message }, this.failIdentities.status); - return json({ identities: this.identities }); - } - if (rest === "browser-identities" && method === "POST") { - const body = JSON.parse(String(init?.body)) as { name: string; proxy?: string }; - this.createdIdentities.push(body); - if (this.failIdentityAction) return json({ error: this.failIdentityAction.error, message: this.failIdentityAction.message }, this.failIdentityAction.status); - const created: BrowserIdentity = { id: `${body.name}-x${this.createdIdentities.length}`, name: body.name, status: "available", createdAt: new Date().toISOString(), lastUsedAt: null, profilePath: "/home/dot/browsers/x", hasProxy: Boolean(body.proxy) }; - this.identities.push(created); - this.push(record.id, "browser.identity.created", { identity_id: created.id, name: created.name }); - return json(created, 201); - } - const identity = /^browser-identities\/([^/]+)(?:\/(close))?$/.exec(rest); - if (identity && (identity[2] ? method === "POST" : method === "DELETE")) { - const id = decodeURIComponent(identity[1]!); - if (this.failIdentityAction) return json({ error: this.failIdentityAction.error, message: this.failIdentityAction.message }, this.failIdentityAction.status); - const found = this.identities.find((i) => i.id === id); - if (!found) return json({ error: "not_found", message: `no browser identity "${id}"` }, 404); - if (identity[2]) { - this.closedIdentities.push(id); - found.status = "available"; - this.push(record.id, "browser.identity.closed", { identity_id: id, name: found.name }); - } else { - this.deletedIdentities.push(id); - this.identities = this.identities.filter((i) => i.id !== id); - this.push(record.id, "browser.identity.deleted", { identity_id: id, name: found.name }); - } - return new Response(null, { status: 204 }); - } - if (/^browser-identities\/[^/]+\/frame$/.test(rest)) { - if (this.failPicture) return json({ error: this.failPicture.error, message: this.failPicture.message }, this.failPicture.status); - return new Response(Uint8Array.from([0xff, 0xd8, 0xff, 0xd9]), { headers: { "content-type": "image/jpeg" } }); - } - if (rest === "channels" && method === "GET") { - if (this.failChannels) return json({ error: this.failChannels.error, message: this.failChannels.message }, this.failChannels.status); - return json({ channels: this.channels[record.id] ?? [], available: this.channelsAvailable }); - } - const channel = /^channels\/(telegram|whatsapp)(?:\/(pairing|link|qr|peers\/([^/]+)))?$/.exec(rest); - if (channel) { - const kind = channel[1] as ChannelKind; - const sub = channel[2] ?? ""; - const list = (this.channels[record.id] ??= []); - const found = list.find((c) => c.kind === kind); - if (sub === "qr" && method === "GET") { - return new Response( - new ReadableStream({ - start: (controller) => { - this.#links.set(record.id, controller); - init?.signal?.addEventListener("abort", () => { - if (this.#links.get(record.id) === controller) this.#links.delete(record.id); - try { - controller.close(); - } catch { - // already closed - } - }); - }, - }), - { headers: { "content-type": "text/event-stream" } }, - ); - } - const body = init?.body ? (JSON.parse(String(init.body)) as Record) : {}; - const isToken = sub === "" && method === "PUT"; - this.channelActions.push(`${method} ${kind}${sub ? ` ${sub}` : ""}${init?.body && !isToken ? ` ${JSON.stringify(body)}` : ""}`); - if (this.failChannel) return json({ error: this.failChannel.error, message: this.failChannel.message }, this.failChannel.status); - const announce = (next: ChannelRecord) => this.push(record.id, "channel.status", { kind, status: next.status }); - if (isToken && kind === "telegram") { - this.sentTokens.push(String(body.token)); - const next = found ?? channelRecord("telegram"); - if (!found) list.push(next); - Object.assign(next, { status: "connected", status_detail: null }); - announce(next); - return json(next, found ? 200 : 201); - } - if (sub === "link" && method === "POST") { - const next = found ?? channelRecord(kind, { status: "connecting", account: null }); - if (!found) list.push(next); - // As the host does: a new link clears the account of the old one and keeps the people paired. - Object.assign(next, { status: "connecting", status_detail: null, account: null }); - return json(next, 202); - } - if (!found) return json({ error: "not_found", message: `Dot has no ${kind} channel` }, 404); - if (sub === "" && method === "PATCH") { - if (body.settings) Object.assign(found.settings, body.settings); - if (typeof body.enabled === "boolean") { - const changed = found.enabled !== body.enabled; - found.enabled = body.enabled; - // The host announces what the person did to a channel, which no status says. - if (changed) this.push(record.id, "channel.changed", { kind, change: body.enabled ? "resumed" : "paused" }); - } - return json(found); - } - if (sub === "" && method === "DELETE") { - this.channels[record.id] = list.filter((c) => c !== found); - this.push(record.id, "channel.changed", { kind, change: "removed" }); - return new Response(null, { status: 204 }); - } - if (sub === "pairing" && method === "POST") { - const message = kind === "telegram" ? `/start ${this.pairing.code}` : `pair ${this.pairing.code}`; - const deepLink = kind === "telegram" ? `https://t.me/${found.account}?start=${this.pairing.code}` : `https://wa.me/${found.account}?text=${encodeURIComponent(message)}`; - return json({ code: this.pairing.code, deep_link: deepLink, message, expires_at: new Date(Date.now() + this.pairing.expiresInMs).toISOString() }, 201); - } - if (channel[3] && method === "DELETE") { - const peer = decodeURIComponent(channel[3]); - if (!found.peers.some((p) => p.peer_id === peer)) return json({ error: "not_found", message: `no peer ${peer}` }, 404); - found.peers = found.peers.filter((p) => p.peer_id !== peer); - return new Response(null, { status: 204 }); - } - } - if (rest === "skills") return this.skills === null ? json({ error: "computer_stopped", message: "the computer is STOPPED" }, 409) : json({ skills: this.skills }); - if (rest === "tools") return this.tools === null ? json({ error: "computer_stopped", message: "the computer is STOPPED" }, 409) : json({ tools: this.tools, mcp_servers: this.mcpServers }); - const secretsOf = () => ({ - dot_id: record.id, - secrets: mcpServerNames(record.config).flatMap((server) => - record.config.mcp_servers[server]!.secrets.map((name) => ({ server, name, set: this.mcpSecretsSet.has(`${server}/${name}`) })), - ), - }); - if (rest === "mcp-secrets" && method === "GET") return json(secretsOf()); - const secret = /^mcp-secrets\/([^/]+)\/([^/]+)$/.exec(rest); - if (secret && (method === "PUT" || method === "DELETE")) { - const [server, name] = [decodeURIComponent(secret[1]!), decodeURIComponent(secret[2]!)]; - if (!record.config.mcp_servers[server]?.secrets.includes(name)) return json({ error: "not_found", message: `no secret ${server}/${name}` }, 404); - const value = method === "PUT" ? (JSON.parse(String(init?.body)) as { value: string }).value : null; - this.mcpSecretWrites.push({ server, name, value }); - if (value === null) this.mcpSecretsSet.delete(`${server}/${name}`); - else this.mcpSecretsSet.add(`${server}/${name}`); - return json(secretsOf()); - } - if (rest === "usage") return json({ dot_id: record.id, since: searchParams.get("since"), spent_usd: searchParams.get("since") ? this.spentUsd : this.spentTotalUsd }); - if (rest === "computer") { - const state = record.computer_state ?? "STOPPED"; - const answer: Partial = { - dot_id: record.id, - state, - last_error: this.computerLastError, - stop_reason: this.computerStopReason, - next_automation_at: this.nextAutomationAt, - ready: this.ready, - system: computerIsUp(state) ? this.system : null, - last_active_at: "2026-03-10T12:00:00Z", - ...this.computerImages, - }; - return json(answer); - } - if (rest === "files/list" || rest === "files") { - if (!computerIsUp(record.computer_state)) return json({ error: COMPUTER_STOPPED, message: `the computer is ${record.computer_state}` }, 409); - if (this.failFiles) return json({ error: this.failFiles.error, message: this.failFiles.message }, this.failFiles.status); - const asked = searchParams.get("path") ?? ""; - const path = asked === "" || asked === "~" ? "/home/dot" : asked.startsWith("/") ? asked.replace(/\/+$/, "") : `/home/dot/${asked.replace(/\/+$/, "")}`; - if (!path.startsWith("/home/dot")) return json({ error: "invalid_path", message: "path must be inside /home/dot" }, 400); - const isDir = path === "/home/dot" || [...this.files.keys()].some((file) => file.startsWith(`${path}/`)); - if (rest === "files") { - const file = this.files.get(path); - if (isDir) return json({ error: "is_a_directory", message: `${path} is a directory` }, 400); - if (!file) return json({ error: "not_found", message: `no such file ${path}` }, 404); - return new Response(file.content as Uint8Array, { headers: { "content-type": "application/octet-stream" } }); - } - if (this.files.has(path)) return json({ error: "not_a_directory", message: `${path} is not a directory` }, 400); - if (!isDir) return json({ error: "not_found", message: `no such folder ${path}` }, 404); - const entries = new Map(); - for (const [file, { content, mtime }] of this.files) { - if (!file.startsWith(`${path}/`)) continue; - const [name, ...more] = file.slice(path.length + 1).split("/"); - entries.set(name!, more.length > 0 ? { name: name!, type: "dir", size: 0, mtime } : { name: name!, type: "file", size: content.length, mtime }); - } - return json({ path, entries: [...entries.values()] }); - } - if (/^computer\/(start|stop|reboot)$/.test(rest) && method === "POST") { - return this.failComputerAction ? json({ error: "refused", message: `the computer refused (${this.failComputerAction})` }, this.failComputerAction) : json({ accepted: true }, 202); - } - } - return json({ error: "not_found", message: `${method} ${pathname}` }, 404); - } -} diff --git a/apps/web/test/support/tokens.ts b/apps/web/test/support/tokens.ts deleted file mode 100644 index 6e7129ce..00000000 --- a/apps/web/test/support/tokens.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** The design tokens as the tests read them: the custom properties of src/app/tokens.css, per theme. */ -import { readFileSync } from "node:fs"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; - -export const SRC = join(dirname(fileURLToPath(import.meta.url)), "../../src"); - -const tokensCss = readFileSync(join(SRC, "app/tokens.css"), "utf8"); - -/** The custom properties declared in one block of tokens.css. */ -function block(selector: string): Record { - const start = tokensCss.indexOf(`${selector} {`); - if (start < 0) throw new Error(`no ${selector} block in tokens.css`); - const body = tokensCss.slice(start, tokensCss.indexOf("}", start)); - return Object.fromEntries([...body.matchAll(/^\s*--([\w-]+):\s*([^;]+);/gm)].map((m) => [m[1]!, m[2]!.trim()])); -} - -/** Not colors, so not themed: they are declared once, in the light block. */ -const SHARED = ["radius", "font-ui", "font-code"]; -const colorsOf = (tokens: Record) => Object.fromEntries(Object.entries(tokens).filter(([key]) => !SHARED.includes(key))); - -export type Theme = "light" | "dark"; -export const themes: Record> = { light: colorsOf(block(":root")), dark: colorsOf(block(':root[data-theme="dark"]')) }; diff --git a/apps/web/test/task-events.test.ts b/apps/web/test/task-events.test.ts deleted file mode 100644 index c6347d5b..00000000 --- a/apps/web/test/task-events.test.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { MAX_EVENT_PAGE, type StoredEvent } from "@invisible-dots/shared/browser"; -import { describe, expect, it } from "vitest"; -import { isTaskEvent, readTaskProgress, readTaskStory, TASK_EVENT_TYPES, mergeTaskEvents, storyOf, taskIdOf } from "../src/lib/task-events"; - -let n = 0; -function event(type: string, data: Record = {}, at = `2026-03-10T12:00:${String(n).padStart(2, "0")}Z`): StoredEvent { - n += 1; - return { id: n, dot_id: "d1", type, data, source: "guest", guest_seq: n, created_at: at } as StoredEvent; -} - -describe("which events belong to a task", () => { - it("are the ones that name it, an approval's answer among them", () => { - expect(isTaskEvent(event("task.progress", { task_id: "t1", text: "x" }))).toBe(true); - expect(isTaskEvent(event("tool.called", { task_id: "t1", tool: "exec" }))).toBe(true); - expect(isTaskEvent(event("approval.resolved", { approval_id: "a1", decision: "approve", task_id: "t1" }))).toBe(true); - expect(isTaskEvent(event("approval.resolved", { approval_id: "a2", decision: "approve" }))).toBe(false); - expect(isTaskEvent(event("tool.called", { tool: "exec" }))).toBe(false); - expect(isTaskEvent(event("message.assistant", { text: "hi" }))).toBe(false); - expect(taskIdOf(event("task.started", { task_id: "t9" }))).toBe("t9"); - expect(taskIdOf(event("agent.state", { state: "IDLE" }))).toBe(""); - }); - - it("merge in id order without repeating one", () => { - const a = event("task.started", { task_id: "t1" }); - const b = event("task.progress", { task_id: "t1", text: "one" }); - const chat = event("message.assistant", { text: "not a task" }); - const merged = mergeTaskEvents([b], [a, b, chat]); - expect(merged.map((e) => e.id)).toEqual([a.id, b.id]); - }); -}); - -describe("readTaskStory", () => { - /** The control plane's `types` and `task_id` filters: the limit counts what is kept. */ - function serving(log: StoredEvent[]) { - const asked: Array<{ after?: number; before?: number; limit?: number; types?: readonly string[]; taskId?: string; order?: string }> = []; - return { - asked, - async events(_dot: string, options: { after?: number; before?: number; limit?: number; types?: readonly string[]; taskId?: string; order?: "asc" | "desc" } = {}) { - asked.push(options); - const kept = log.filter( - (e) => e.id > (options.after ?? 0) && (options.before === undefined || e.id < options.before) && (!options.types || options.types.includes(e.type)) && (options.taskId === undefined || e.data.task_id === options.taskId), - ); - return (options.order === "desc" ? [...kept].reverse() : kept).slice(0, options.limit); - }, - }; - } - - it("asks for the events of that task and of the types of a story, page by page to the end, and nothing else crosses the wire", async () => { - const log: StoredEvent[] = []; - for (let i = 0; i < 3 * MAX_EVENT_PAGE + 300; i++) { - log.push(i % 3 === 0 ? event("task.progress", { task_id: "t1", text: `p${i}` }) : i % 3 === 1 ? event("task.progress", { task_id: "t2", text: `q${i}` }) : event("agent.state", { state: "IDLE" })); - } - const client = serving(log); - const read = await readTaskStory(client, "d1", "t1"); - expect(read).toHaveLength(MAX_EVENT_PAGE + 100); - expect(read.every((e) => e.type === "task.progress" && e.data.task_id === "t1")).toBe(true); - expect(client.asked.map((a) => a.types)).toEqual([TASK_EVENT_TYPES, TASK_EVENT_TYPES]); - expect(client.asked.map((a) => a.taskId)).toEqual(["t1", "t1"]); - expect(client.asked.map((a) => a.limit)).toEqual([MAX_EVENT_PAGE, MAX_EVENT_PAGE]); - expect(client.asked[1]!.after).toBe(read[MAX_EVENT_PAGE - 1]!.id); - }); - - it("holds the approval and its answer, and no tool call or approval of the chat", async () => { - const log = [ - event("tool.called", { tool: "exec", task_id: "t1" }), - event("tool.called", { tool: "exec" }), - event("approval.requested", { approval_id: "a1", tool: "exec" }), - event("approval.requested", { approval_id: "a2", tool: "exec", task_id: "t1" }), - event("approval.resolved", { approval_id: "a1", decision: "approve" }), - event("approval.resolved", { approval_id: "a2", decision: "approve", task_id: "t1" }), - event("message.assistant", { text: "hi" }), - ]; - const read = await readTaskStory(serving(log), "d1", "t1"); - expect(read.map((e) => e.id)).toEqual([log[0]!.id, log[3]!.id, log[5]!.id]); - }); - - it("ends on a page that is exactly full only after asking once more", async () => { - const log = Array.from({ length: MAX_EVENT_PAGE }, (_, i) => event("task.progress", { task_id: "t1", text: String(i) })); - const client = serving(log); - expect(await readTaskStory(client, "d1", "t1")).toHaveLength(MAX_EVENT_PAGE); - expect(client.asked).toHaveLength(2); - }); - - it("lets a failure through", async () => { - await expect( - readTaskStory( - { - async events() { - throw new Error("the log is down"); - }, - }, - "d1", - "t1", - ), - ).rejects.toThrow("the log is down"); - }); -}); - -describe("readTaskProgress", () => { - it("asks once for the newest progress line of that task, and is null for a task that has said nothing", async () => { - const log = [ - event("task.progress", { task_id: "t1", text: "first" }), - event("task.progress", { task_id: "t2", text: "other task" }), - event("task.progress", { task_id: "t1", text: "second" }), - event("tool.called", { task_id: "t1", tool: "exec" }), - ]; - const asked: unknown[] = []; - const client = { - async events(_dot: string, options: { limit?: number; types?: readonly string[]; taskId?: string; order?: "asc" | "desc" } = {}) { - asked.push(options); - const kept = log.filter((e) => options.types?.includes(e.type) && e.data.task_id === options.taskId); - return (options.order === "desc" ? [...kept].reverse() : kept).slice(0, options.limit); - }, - }; - expect(await readTaskProgress(client, "d1", "t1")).toMatchObject({ id: log[2]!.id, text: "second" }); - expect(asked).toEqual([{ limit: 1, types: ["task.progress"], taskId: "t1", order: "desc" }]); - expect((await readTaskProgress(client, "d1", "t2"))?.text).toBe("other task"); - expect(await readTaskProgress(client, "d1", "t3")).toBeNull(); - }); -}); - -describe("storyOf", () => { - const events = [ - event("task.created", { task_id: "t1", description: "Write it", priority: 10 }), - event("task.started", { task_id: "t1" }), - event("task.progress", { task_id: "t1", text: "Reading the sources" }), - event("tool.called", { task_id: "t1", tool: "exec", permission: "computer.exec", decision: "allow", ok: true, duration_ms: 1200, target: "ls -la" }), - event("tool.called", { task_id: "t2", tool: "exec", decision: "allow", ok: true, duration_ms: 5 }), - event("approval.requested", { task_id: "t1", approval_id: "a1", tool: "write_file", permission: "files.write", reason: "needs to save the report", arguments: {} }), - event("approval.resolved", { task_id: "t1", approval_id: "a1", decision: "approve", note: "go on" }), - event("approval.resolved", { task_id: "t2", approval_id: "other", decision: "reject" }), - event("tool.called", { task_id: "t1", tool: "browser_navigate", decision: "deny", ok: false, duration_ms: 0 }), - event("tool.called", { task_id: "t1", tool: "exec", decision: "allow", ok: false, duration_ms: 0, interrupted: true }), - event("task.completed", { task_id: "t1", summary: "Done: **report.md**" }), - ]; - - it("lists one task's steps in order, each typed, and none of another task's", () => { - const story = storyOf(events, "t1"); - expect(story.map((s) => s.kind)).toEqual(["created", "started", "progress", "tool", "approval", "tool", "tool", "completed"]); - expect(story[0]).toMatchObject({ kind: "created", description: "Write it", priority: 10 }); - expect(story[2]).toMatchObject({ kind: "progress", text: "Reading the sources" }); - expect(story[3]).toMatchObject({ kind: "tool", tool: "exec", label: "Ran a command", target: "ls -la", state: "ok", durationMs: 1200 }); - expect(story[7]).toMatchObject({ kind: "completed", summary: "Done: **report.md**" }); - }); - - it("says a call that started a terminal session as that", () => { - const [step] = storyOf([event("tool.called", { task_id: "t9", tool: "exec", decision: "allow", ok: true, duration_ms: 5, target: "python3", tty: true })], "t9"); - expect(step).toMatchObject({ kind: "tool", label: "Started a terminal session" }); - expect(storyOf(events, "t1")[3]).toMatchObject({ kind: "tool", label: "Ran a command" }); - }); - - it("folds an approval and its answer into one step, found by the approval's id", () => { - const approval = storyOf(events, "t1").find((s) => s.kind === "approval"); - expect(approval).toMatchObject({ approvalId: "a1", tool: "write_file", reason: "needs to save the report", outcome: "approved", note: "go on" }); - const waiting = storyOf(events.slice(0, 6), "t1").find((s) => s.kind === "approval"); - expect(waiting).toMatchObject({ outcome: "waiting", note: "" }); - }); - - it("keeps a refused call and an interrupted one for what they are", () => { - const tools = storyOf(events, "t1").filter((s) => s.kind === "tool"); - expect(tools[1]).toMatchObject({ tool: "browser_navigate", state: "denied" }); - expect(tools[2]).toMatchObject({ tool: "exec", state: "interrupted" }); - }); - - it("ends a failed task with its error and a cancelled one with that", () => { - const failed = storyOf([event("task.failed", { task_id: "t5", error: "cost cap reached" })], "t5"); - expect(failed).toEqual([expect.objectContaining({ kind: "failed", error: "cost cap reached" })]); - const cancelled = storyOf([event("task.cancelled", { task_id: "t6" })], "t6"); - expect(cancelled.map((s) => s.kind)).toEqual(["cancelled"]); - expect(storyOf(events, "nope")).toEqual([]); - }); -}); diff --git a/apps/web/test/task-form.test.ts b/apps/web/test/task-form.test.ts deleted file mode 100644 index 508d32f4..00000000 --- a/apps/web/test/task-form.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { EMPTY_TASK_FORM, localInputToIso, parsePriority, taskFormProblem, taskRequest } from "../src/lib/task-form"; - -describe("localInputToIso", () => { - it("turns local wall time into an instant, and nothing into nothing", () => { - expect(localInputToIso("")).toBeUndefined(); - expect(localInputToIso("not a date")).toBeUndefined(); - expect(localInputToIso("2026-03-10T09:30")).toBe(new Date(2026, 2, 10, 9, 30).toISOString()); - }); -}); - -describe("parsePriority", () => { - it("takes whole numbers, signed, and refuses everything else", () => { - expect(parsePriority("10")).toBe(10); - expect(parsePriority(" -10 ")).toBe(-10); - expect(parsePriority("0")).toBe(0); - for (const bad of ["", "1.5", "high", "1e3", "--1", "12345678901"]) expect(parsePriority(bad)).toBeNull(); - }); -}); - -describe("the New task form", () => { - it("cannot be sent without a description, or with a priority that is no number, or a date that is none", () => { - expect(taskFormProblem(EMPTY_TASK_FORM)).toMatch(/what the Dot should do/); - expect(taskFormProblem({ ...EMPTY_TASK_FORM, description: " " })).toMatch(/what the Dot should do/); - expect(taskFormProblem({ ...EMPTY_TASK_FORM, description: "x", priority: "soon" })).toMatch(/whole number/); - expect(taskFormProblem({ ...EMPTY_TASK_FORM, description: "x", notBefore: "tomorrow" })).toMatch(/date and time/); - expect(taskFormProblem({ ...EMPTY_TASK_FORM, description: "x" })).toBeNull(); - }); - - it("asks for the description alone when the rest is as the API has it by default", () => { - expect(taskRequest({ description: " Write the report ", priority: "0", notBefore: "" })).toEqual({ description: "Write the report" }); - }); - - it("sends a priority that is not normal and a time that is set", () => { - expect(taskRequest({ description: "x", priority: "10", notBefore: "2026-03-10T09:30" })).toEqual({ - description: "x", - priority: 10, - scheduled_at: new Date(2026, 2, 10, 9, 30).toISOString(), - }); - expect(taskRequest({ description: "x", priority: "-10", notBefore: "" })).toEqual({ description: "x", priority: -10 }); - }); -}); diff --git a/apps/web/test/task-view.test.ts b/apps/web/test/task-view.test.ts deleted file mode 100644 index 9db6f4f4..00000000 --- a/apps/web/test/task-view.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { readFileSync } from "node:fs"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { describe, expect, it } from "vitest"; -import { filterHistory, groupTasks, HISTORY_PAGE, isFinished, isRunning, priorityLabel, PRIORITIES, sectionOf, statusLabel, statusTone, workedSeconds } from "../src/lib/task-view"; -import type { Task } from "../src/lib/types"; -import { taskRecord as task } from "./support/control-plane"; - -const NOW = Date.parse("2026-03-10T12:00:00Z"); -const iso = (offsetMin: number) => new Date(NOW + offsetMin * 60_000).toISOString(); - -describe("which section a task is in", () => { - it("puts working and waiting tasks in Running, finished ones in History", () => { - expect(sectionOf(task("a", { status: "RUNNING" }), NOW)).toBe("running"); - expect(sectionOf(task("a", { status: "WAITING_APPROVAL" }), NOW)).toBe("running"); - for (const status of ["COMPLETED", "FAILED", "CANCELLED"] as const) expect(sectionOf(task("a", { status }), NOW)).toBe("history"); - }); - - it("separates a pending task that has a time ahead of it from the queue", () => { - expect(sectionOf(task("a", { scheduled_at: iso(30) }), NOW)).toBe("scheduled"); - expect(sectionOf(task("a", { scheduled_at: iso(-30) }), NOW)).toBe("queue"); - expect(sectionOf(task("a"), NOW)).toBe("queue"); - }); - - it("agrees with the helpers the rest of the page asks", () => { - expect(isRunning("WAITING_APPROVAL")).toBe(true); - expect(isRunning("PENDING")).toBe(false); - expect(isFinished("CANCELLED")).toBe(true); - expect(isFinished("RUNNING")).toBe(false); - }); -}); - -describe("groupTasks", () => { - const tasks = [ - task("old-low", { priority: -10, created_at: iso(-300) }), - task("new-urgent", { priority: 100, created_at: iso(-10) }), - task("old-normal", { created_at: iso(-200) }), - task("new-normal", { created_at: iso(-20) }), - task("later", { scheduled_at: iso(600) }), - task("sooner", { scheduled_at: iso(60) }), - task("run-late", { status: "RUNNING", started_at: iso(-5) }), - task("run-early", { status: "WAITING_APPROVAL", started_at: iso(-50) }), - task("done-old", { status: "COMPLETED", finished_at: iso(-500) }), - task("done-new", { status: "FAILED", finished_at: iso(-15) }), - ]; - const sections = groupTasks(tasks, NOW); - const ids = (list: Task[]) => list.map((t) => t.id); - - it("queues in the order the dispatcher takes them: priority, then age", () => { - expect(ids(sections.queue)).toEqual(["new-urgent", "old-normal", "new-normal", "old-low"]); - }); - - it("breaks a tie of priority and creation time by id, as the dispatcher does, whatever order the host listed them in", () => { - const at = iso(-40); - const tied = (order: string[]) => ids(groupTasks(order.map((id) => task(id, { created_at: at })), NOW).queue); - expect(tied(["c", "a", "b"])).toEqual(["a", "b", "c"]); - expect(tied(["a", "b", "c"])).toEqual(["a", "b", "c"]); - }); - - it("is pinned to the dispatcher's own ORDER BY: it fails when CLAIM_SQL changes and this order does not", () => { - const source = readFileSync(join(dirname(fileURLToPath(import.meta.url)), "../../../packages/database/src/tasks.ts"), "utf8"); - const claim = source.slice(source.indexOf("export const CLAIM_SQL")); - expect(/ORDER BY ([^\n]+)/.exec(claim)?.[1]).toBe("t.priority DESC, t.created_at, t.id"); - }); - - it("orders the rest the way a person looks for them", () => { - expect(ids(sections.running)).toEqual(["run-early", "run-late"]); - expect(ids(sections.scheduled)).toEqual(["sooner", "later"]); - expect(ids(sections.history)).toEqual(["done-new", "done-old"]); - }); - - it("loses and invents nothing", () => { - expect(Object.values(sections).flat()).toHaveLength(tasks.length); - }); -}); - -describe("the history filter", () => { - const history = [task("a", { status: "COMPLETED" }), task("b", { status: "FAILED" }), task("c", { status: "CANCELLED" }), task("d", { status: "COMPLETED" })]; - - it("keeps the tasks that ended that way, or all of them", () => { - expect(filterHistory(history, "all")).toHaveLength(4); - expect(filterHistory(history, "COMPLETED").map((t) => t.id)).toEqual(["a", "d"]); - expect(filterHistory(history, "FAILED").map((t) => t.id)).toEqual(["b"]); - expect(filterHistory(history, "CANCELLED").map((t) => t.id)).toEqual(["c"]); - }); - - it("is shown a page at a time", () => { - expect(HISTORY_PAGE).toBeGreaterThan(5); - }); -}); - -describe("how a task reads", () => { - it("has a word and a tone for every state, and passes an unknown one through", () => { - expect(statusLabel("PENDING")).toBe("Queued"); - expect(statusLabel("WAITING_APPROVAL")).toBe("Waiting for you"); - expect(statusTone("FAILED")).toBe("error"); - expect(statusTone("COMPLETED")).toBe("ok"); - expect(statusTone("WAITING_APPROVAL")).toBe("warn"); - expect(statusLabel("SOMETHING_NEW")).toBe("SOMETHING_NEW"); - expect(statusTone("SOMETHING_NEW")).toBe("neutral"); - }); - - it("names the four priorities, lowest first, and shows any other number as it is", () => { - expect(PRIORITIES.map((p) => p.label)).toEqual(["Low", "Normal", "High", "Urgent"]); - expect(PRIORITIES.map((p) => p.value)).toEqual([...PRIORITIES.map((p) => p.value)].sort((a, b) => a - b)); - expect(priorityLabel(0)).toBe("Normal"); - expect(priorityLabel(100)).toBe("Urgent"); - expect(priorityLabel(7)).toBe("Priority 7"); - }); - - it("counts the time worked from the start to the end, or to now while it runs", () => { - expect(workedSeconds({ started_at: null, finished_at: null }, NOW)).toBeNull(); - expect(workedSeconds({ started_at: iso(-2), finished_at: null }, NOW)).toBe(120); - expect(workedSeconds({ started_at: iso(-10), finished_at: iso(-7) }, NOW)).toBe(180); - expect(workedSeconds({ started_at: iso(5), finished_at: null }, NOW)).toBe(0); - }); -}); diff --git a/apps/web/test/tasks.test.tsx b/apps/web/test/tasks.test.tsx deleted file mode 100644 index 0ed25603..00000000 --- a/apps/web/test/tasks.test.tsx +++ /dev/null @@ -1,537 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, render, screen, waitFor, within } from "@testing-library/react"; -import { TASK_LIST_LIMIT } from "@invisible-dots/shared/browser"; -import userEvent from "@testing-library/user-event"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { DotShell } from "../src/components/DotShell"; -import { DotEventScope, EventStreamProvider } from "../src/components/events"; -import { AttentionProvider } from "../src/components/shell/attention"; -import { TaskDrawer } from "../src/components/tasks/task-drawer"; -import { TasksView } from "../src/components/tasks/TasksView"; -import { Toaster } from "../src/components/ui/sonner"; -import { stubMatchMedia } from "./support/browser"; -import { approvalRecord, dotRecord, FakeControlPlane, taskRecord } from "./support/control-plane"; - -const router = { push: vi.fn(), replace: vi.fn() }; -let segment: string | null = null; -vi.mock("next/navigation", () => ({ - usePathname: () => "/dots/d1/tasks", - useRouter: () => router, - useSelectedLayoutSegment: () => segment, -})); - -let plane: FakeControlPlane; - -beforeEach(() => { - segment = null; - router.push.mockClear(); - plane = new FakeControlPlane(); - plane.dots = [dotRecord("d1", { name: "fares" })]; - plane.install(); - stubMatchMedia(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); - vi.restoreAllMocks(); -}); - -const minutesAgo = (minutes: number) => new Date(Date.now() - minutes * 60_000).toISOString(); -const minutesAhead = (minutes: number) => new Date(Date.now() + minutes * 60_000).toISOString(); -const requested = (pattern: RegExp) => plane.requests.filter((r) => pattern.test(r)); - -/** The Tasks page as the Dot's layout puts it: inside the Dot's shell, with the drawer's page as its child. */ -async function renderTasks(drawerOf: string | null = null) { - segment = drawerOf; - render( - - - - - {drawerOf ? : null} - - - - - , - ); - await screen.findByRole("heading", { level: 1, hidden: true }); - await waitFor(() => expect(plane.streamOpen).toBe(true)); -} - -function runningTask(id: string, change: Partial> = {}) { - return taskRecord(id, { status: "RUNNING", started_at: minutesAgo(3), spent_usd: 0.12, description: `Running ${id}`, ...change }); -} - -describe("the Tasks page", () => { - it("invites the first task when there are none, and does not read the event log for nothing", async () => { - await renderTasks(); - expect(await screen.findByText("No tasks yet")).toBeTruthy(); - expect(screen.getByRole("button", { name: "New task" })).toBeTruthy(); - expect(plane.eventQueries).toEqual([]); - }); - - it("says so when the tasks cannot be loaded", async () => { - plane.tasks = []; - const real = plane.fetch; - vi.stubGlobal( - "fetch", - vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => - String(input).endsWith("/tasks") && (init?.method ?? "GET") === "GET" ? Response.json({ error: "down", message: "the control plane said no" }, { status: 500 }) : real(input, init), - ), - ); - await renderTasks(); - expect((await screen.findByText("Could not load the tasks")).closest("[role=alert]")?.textContent).toContain("the control plane said no"); - }); - - it("puts each task in its section: running, scheduled, queued in dispatch order, and finished", async () => { - plane.tasks = [ - runningTask("r1"), - taskRecord("q-low", { description: "Queued low", priority: -10, created_at: minutesAgo(50) }), - taskRecord("q-urgent", { description: "Queued urgent", priority: 100, created_at: minutesAgo(10) }), - taskRecord("q-normal", { description: "Queued normal", created_at: minutesAgo(30) }), - taskRecord("s1", { description: "Scheduled later", scheduled_at: minutesAhead(185) }), - taskRecord("h1", { description: "Finished well", status: "COMPLETED", finished_at: minutesAgo(5), started_at: minutesAgo(9), summary: "All done", spent_usd: 0.4 }), - ]; - await renderTasks(); - const running = await screen.findByRole("region", { name: /^Running/ }); - expect(within(running).getByRole("article", { name: "Running r1" })).toBeTruthy(); - - const queue = screen.getByRole("region", { name: /^Queue/ }); - const queued = within(queue).getAllByRole("article"); - expect(queued.map((q) => q.getAttribute("aria-label"))).toEqual(["Queued urgent", "Queued normal", "Queued low"]); - expect(within(queued[0]!).getByText("Next")).toBeTruthy(); - expect(within(queued[1]!).getByText("#2")).toBeTruthy(); - expect(within(queued[0]!).getByText("Urgent")).toBeTruthy(); - expect(within(queued[2]!).getByText("Low")).toBeTruthy(); - - const scheduled = screen.getByRole("region", { name: /^Scheduled/ }); - expect(within(scheduled).getByText(/Starts/).textContent).toContain("in 3h"); - - const history = screen.getByRole("region", { name: /^History/ }); - const row = within(history).getByRole("row", { name: /Finished well/ }); - expect(within(row).getByText("Completed")).toBeTruthy(); - expect(within(row).getByText("$0.40")).toBeTruthy(); - expect(within(row).getByText("All done")).toBeTruthy(); - expect(within(row).getByText("4m 0s")).toBeTruthy(); - }); - - it("lists the newest page, and reads the older ones when asked, joining them to what is shown", async () => { - // The tasks of the Queue region's ordered list, read from the DOM: a role query over two hundred cards costs a - // few hundred milliseconds in jsdom, and waitFor repeats it every 50, which alone used up the test's time. The - // region is found again at each call (by its heading, a text query), since it is drawn anew when the list grows. - const queueItems = () => screen.getByText("Queue", { selector: "h2" }).closest("section")!.querySelectorAll(":scope ol > li"); - // 205 queued tasks, one created a minute after the other: the newest 200 are the first page, five are past it. - const base = Date.now() - 3_600_000; - plane.tasks = Array.from({ length: TASK_LIST_LIMIT + 5 }, (_, i) => taskRecord(`q${String(i).padStart(3, "0")}`, { created_at: new Date(base + i * 1000).toISOString() })); - await renderTasks(); - // Found by its words, then checked to be a status: a page-wide role query is what costs the time here. - const notice = (await screen.findByText(new RegExp(`The newest ${TASK_LIST_LIMIT} tasks are listed`))).closest("[role=status]")!; - expect(notice).not.toBeNull(); - expect(queueItems()).toHaveLength(TASK_LIST_LIMIT); - expect(screen.queryByText("task q000")).toBeNull(); - const pagedQueries = () => plane.taskQueries.filter((query) => query.before !== null); - expect(pagedQueries()).toEqual([]); - - await userEvent.click(within(notice).getByRole("button", { name: "Show older tasks" })); - await waitFor(() => expect(queueItems()).toHaveLength(TASK_LIST_LIMIT + 5)); - expect(screen.getByText("task q000")).toBeTruthy(); - // The page went on after the last task of the newest one, and the list ended there: nothing more to ask for. - expect(pagedQueries()).toEqual([{ limit: null, before: "q005" }]); - expect(screen.queryByRole("button", { name: "Show older tasks" })).toBeNull(); - - // A task that arrives is read with the newest page again, and the older ones stay. - plane.tasks.push(taskRecord("q999", { created_at: new Date().toISOString() })); - act(() => plane.push("d1", "task.created", { task_id: "q999" })); - // Waited for by the list's length, as above: a page-wide text query over two hundred cards, repeated every 50 ms, - // used up waitFor's second on a loaded machine before the refresh (300 ms after the event) had drawn the list. - await waitFor(() => expect(queueItems()).toHaveLength(TASK_LIST_LIMIT + 6)); - expect(screen.getByText("task q999")).toBeTruthy(); - expect(screen.getByText("task q000")).toBeTruthy(); - }); - - it("does not offer older tasks to a Dot whose tasks fit a page", async () => { - plane.tasks = Array.from({ length: TASK_LIST_LIMIT - 1 }, (_, i) => taskRecord(`f${i}`)); - await renderTasks(); - await screen.findByRole("region", { name: /^Queue/ }); - expect(screen.queryByRole("button", { name: "Show older tasks" })).toBeNull(); - expect(screen.queryByText(/tasks are listed/)).toBeNull(); - }); - - it("links every task to its own address", async () => { - plane.tasks = [runningTask("r1"), taskRecord("q1"), taskRecord("h1", { status: "FAILED", finished_at: minutesAgo(1), error: "boom" })]; - await renderTasks(); - for (const description of ["Running r1", "task q1", "task h1"]) { - const id = description.split(" ")[1]; - expect(screen.getByRole("link", { name: description }).getAttribute("href")).toBe(`/dots/d1/tasks/${id}`); - } - }); -}); - -describe("the live progress line", () => { - it("shows what the task last reported, from the log, and follows each new report without a reload", async () => { - plane.tasks = [runningTask("r1")]; - plane.store("d1", "task.progress", { task_id: "r1", text: "Reading the first source" }, minutesAgo(2)); - plane.store("d1", "task.progress", { task_id: "other", text: "Not this task" }, minutesAgo(1)); - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - await waitFor(() => expect(within(card).getByText("Reading the first source")).toBeTruthy()); - expect(within(card).queryByText("Not this task")).toBeNull(); - expect(within(card).getByText("$0.12")).toBeTruthy(); - - plane.tasks[0]!.spent_usd = 0.31; - act(() => plane.push("d1", "task.progress", { task_id: "r1", text: "Writing the summary", spent_usd: 0.31 })); - await waitFor(() => expect(within(card).getByText("Writing the summary")).toBeTruthy()); - expect(within(card).queryByText("Reading the first source")).toBeNull(); - await waitFor(() => expect(within(card).getByText("$0.31")).toBeTruthy()); - // One request for the newest report of that task; the second line came from the stream. - expect(plane.eventQueries).toEqual([{ after: 0, limit: 1, types: ["task.progress"], tools: null, taskId: "r1", order: "desc" }]); - }); - - it("says plainly that a running task has not reported yet", async () => { - plane.tasks = [runningTask("r1")]; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - await waitFor(() => expect(within(card).getByText(/has not reported anything yet/)).toBeTruthy()); - }); - - it("says so when the log cannot be read, and does not pretend the task is quiet", async () => { - plane.tasks = [runningTask("r1")]; - plane.failEvents = 500; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - await waitFor(() => expect(within(card).getByText(/could not be read/)).toBeTruthy()); - expect(within(card).queryByText(/has not reported anything yet/)).toBeNull(); - }); - - it("moves a task to the history when it ends, with its summary", async () => { - plane.tasks = [runningTask("r1")]; - await renderTasks(); - await screen.findByRole("article", { name: "Running r1" }); - Object.assign(plane.tasks[0]!, { status: "COMPLETED", finished_at: new Date().toISOString(), summary: "Report written" }); - act(() => plane.push("d1", "task.completed", { task_id: "r1", summary: "Report written" })); - const history = await screen.findByRole("region", { name: /^History/ }); - await waitFor(() => expect(within(history).getByText("Report written")).toBeTruthy()); - expect(screen.queryByRole("article", { name: "Running r1" })).toBeNull(); - expect(screen.getByText("Nothing is running.")).toBeTruthy(); - }); - - it("shows the approval a task waits for as a card on the task, answers it there and keeps the receipt in place", async () => { - plane.tasks = [runningTask("r1", { status: "WAITING_APPROVAL" }), runningTask("r2")]; - plane.approvals = [ - approvalRecord("a1", "d1", { task_id: "r1", tool: "write_file", permission: "files.write", arguments: { path: "report.md", content: "hello" }, reason: "to save the report" }), - approvalRecord("a2", "d1", { task_id: "r2", tool: "exec", permission: "computer.exec", arguments: { command: "ls" } }), - ]; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - expect(within(card).getAllByText("Waiting for you").length).toBeGreaterThan(0); - const approval = await within(card).findByRole("article", { name: "Wants to write a file" }); - expect(within(approval).getByText("to save the report")).toBeTruthy(); - // The other task's approval is on the other task's card. - expect(within(card).queryByRole("article", { name: "Wants to run a command" })).toBeNull(); - expect(within(await screen.findByRole("article", { name: "Running r2" })).getByRole("article", { name: "Wants to run a command" })).toBeTruthy(); - - await userEvent.click(within(approval).getByRole("button", { name: "Allow once" })); - expect(plane.answers).toEqual([{ id: "a1", decision: "approve", body: {} }]); - // The host no longer lists it as waiting, and the card still says what became of it. - await waitFor(() => expect(within(card).getByRole("status").textContent).toBe("Allowed")); - await waitFor(() => expect(plane.requests.filter((r) => r === "GET /api/approvals").length).toBeGreaterThan(1)); - expect(within(card).getByRole("status").textContent).toBe("Allowed"); - }); - - it("shows the approval in the task's drawer too, above what happened", async () => { - plane.tasks = [runningTask("r1", { status: "WAITING_APPROVAL" })]; - plane.approvals = [approvalRecord("a1", "d1", { task_id: "r1", tool: "exec", permission: "computer.exec", arguments: { command: "make test" } })]; - await renderTasks("r1"); - const drawer = await screen.findByRole("dialog", { name: "Running r1" }); - const approval = await within(drawer).findByRole("article", { name: "Wants to run a command" }); - expect(within(approval).getByText("make test")).toBeTruthy(); - }); -}); - -describe("cancelling", () => { - it("asks first, and does nothing when the person keeps the task", async () => { - plane.tasks = [runningTask("r1")]; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - await userEvent.click(within(card).getByRole("button", { name: /^Cancel/ })); - const dialog = await screen.findByRole("dialog", { name: "Cancel this task?" }); - expect(dialog.textContent).toContain("The Dot stops working on it now"); - await userEvent.click(within(dialog).getByRole("button", { name: "Keep it" })); - await waitFor(() => expect(screen.queryByRole("dialog")).toBeNull()); - expect(requested(/POST \/api\/tasks\//)).toEqual([]); - }); - - it("cancels once confirmed: the task leaves Running and shows in the history as cancelled", async () => { - plane.tasks = [runningTask("r1")]; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Running r1" }); - await userEvent.click(within(card).getByRole("button", { name: /^Cancel/ })); - await userEvent.click(within(await screen.findByRole("dialog")).getByRole("button", { name: "Cancel task" })); - await waitFor(() => expect(requested(/POST \/api\/tasks\/r1\/cancel/)).toHaveLength(1)); - const history = await screen.findByRole("region", { name: /^History/ }); - await waitFor(() => expect(within(history).getByText("Cancelled", { selector: "span" })).toBeTruthy()); - expect(screen.queryByRole("article", { name: "Running r1" })).toBeNull(); - }); - - it("tells a queued task's consequence differently, and shows a refusal inside the dialog", async () => { - plane.tasks = [taskRecord("q1", { description: "Wait in line" })]; - plane.failCancel = { status: 409, error: "task_finished", message: "task q1 is already COMPLETED" }; - await renderTasks(); - const card = await screen.findByRole("article", { name: "Wait in line" }); - await userEvent.click(within(card).getByRole("button", { name: /^Cancel/ })); - const dialog = await screen.findByRole("dialog"); - expect(dialog.textContent).toContain("It will not run."); - await userEvent.click(within(dialog).getByRole("button", { name: "Cancel task" })); - expect((await within(dialog).findByRole("alert")).textContent).toContain("task q1 is already COMPLETED"); - expect(screen.getByRole("dialog")).toBeTruthy(); - }); -}); - -describe("the history", () => { - function finished(count: number) { - return Array.from({ length: count }, (_, i) => - taskRecord(`h${i}`, { - description: `Finished ${i}`, - status: i % 5 === 0 ? "FAILED" : i % 7 === 0 ? "CANCELLED" : "COMPLETED", - finished_at: minutesAgo(i + 1), - started_at: minutesAgo(i + 2), - error: i % 5 === 0 ? "ran out of budget" : null, - }), - ); - } - - it("shows a page of twenty and the next twenty when asked", async () => { - plane.tasks = finished(45); - await renderTasks(); - const history = await screen.findByRole("region", { name: /^History/ }); - expect(within(history).getAllByRole("row")).toHaveLength(1 + 20); - await userEvent.click(within(history).getByRole("button", { name: "Show 20 more" })); - expect(within(history).getAllByRole("row")).toHaveLength(1 + 40); - await userEvent.click(within(history).getByRole("button", { name: "Show 5 more" })); - expect(within(history).getAllByRole("row")).toHaveLength(1 + 45); - expect(within(history).queryByRole("button", { name: /Show/ })).toBeNull(); - }); - - it("filters by how the tasks ended, and shows an error as the Dot gave it", async () => { - plane.tasks = finished(12); - await renderTasks(); - const history = await screen.findByRole("region", { name: /^History/ }); - await userEvent.click(within(history).getByRole("button", { name: "Failed" })); - expect(within(history).getByRole("button", { name: "Failed" }).getAttribute("aria-pressed")).toBe("true"); - const rows = within(history).getAllByRole("row").slice(1); - expect(rows).toHaveLength(3); - for (const row of rows) { - expect(within(row).getByText("Failed")).toBeTruthy(); - expect(within(row).getByText("ran out of budget")).toBeTruthy(); - } - await userEvent.click(within(history).getByRole("button", { name: "Cancelled" })); - expect(within(history).getAllByRole("row")).toHaveLength(1 + 1); - plane.tasks = []; - }); - - it("says when no finished task matches", async () => { - plane.tasks = [taskRecord("h1", { status: "COMPLETED", finished_at: minutesAgo(1) })]; - await renderTasks(); - const history = await screen.findByRole("region", { name: /^History/ }); - await userEvent.click(within(history).getByRole("button", { name: "Failed" })); - expect(within(history).getByText("No failed tasks.")).toBeTruthy(); - }); -}); - -describe("New task", () => { - async function openDialog() { - await renderTasks(); - await screen.findByText("No tasks yet"); - await userEvent.click(screen.getByRole("button", { name: "New task" })); - return screen.findByRole("dialog", { name: "New task" }); - } - - it("will not send an empty description, and says why next to the field", async () => { - const dialog = await openDialog(); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - expect(within(dialog).getByText("Say what the Dot should do.")).toBeTruthy(); - expect(within(dialog).getByLabelText("What should it do?").getAttribute("aria-invalid")).toBe("true"); - expect(plane.createdTasks).toEqual([]); - }); - - it("sends the description alone for a normal task, closes, and lists the new task", async () => { - const dialog = await openDialog(); - await userEvent.type(within(dialog).getByLabelText("What should it do?"), " Collect the fares "); - expect(within(dialog).getByRole("radio", { name: "Normal" })).toHaveProperty("checked", true); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - await waitFor(() => expect(plane.createdTasks).toEqual([{ description: "Collect the fares" }])); - await waitFor(() => expect(screen.queryByRole("dialog")).toBeNull()); - expect(await screen.findByRole("article", { name: "Collect the fares" })).toBeTruthy(); - }); - - it("sends a named priority as its number, and a not-before time as an instant", async () => { - const dialog = await openDialog(); - await userEvent.type(within(dialog).getByLabelText("What should it do?"), "Check in the morning"); - await userEvent.click(within(dialog).getByRole("radio", { name: "High" })); - const when = within(dialog).getByLabelText(/Not before/); - await userEvent.type(when, "2030-05-01T09:30"); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - await waitFor(() => expect(plane.createdTasks).toHaveLength(1)); - expect(plane.createdTasks[0]).toEqual({ description: "Check in the morning", priority: 10, scheduled_at: new Date(2030, 4, 1, 9, 30).toISOString() }); - }); - - it("keeps the raw number under Advanced, in step with the named choice, and refuses what is no number", async () => { - const dialog = await openDialog(); - await userEvent.type(within(dialog).getByLabelText("What should it do?"), "Urgent thing"); - expect(within(dialog).queryByLabelText("Priority as a number")).toBeNull(); - await userEvent.click(within(dialog).getByRole("button", { name: "Advanced" })); - const raw = within(dialog).getByLabelText("Priority as a number"); - await userEvent.click(within(dialog).getByRole("radio", { name: "Urgent" })); - expect((raw as HTMLInputElement).value).toBe("100"); - await userEvent.clear(raw); - await userEvent.type(raw, "7"); - for (const radio of within(dialog).getAllByRole("radio")) expect(radio).toHaveProperty("checked", false); - await userEvent.clear(raw); - await userEvent.type(raw, "soon"); - expect(within(dialog).getByText("The priority is a whole number.")).toBeTruthy(); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - expect(plane.createdTasks).toEqual([]); - await userEvent.clear(raw); - await userEvent.type(raw, "7"); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - await waitFor(() => expect(plane.createdTasks).toEqual([{ description: "Urgent thing", priority: 7 }])); - }); - - it("shows what the control plane refused, in the dialog, and keeps what was typed", async () => { - plane.failCreateTask = { status: 400, error: "invalid", message: "the description is too long" }; - const dialog = await openDialog(); - await userEvent.type(within(dialog).getByLabelText("What should it do?"), "A very long thing"); - await userEvent.click(within(dialog).getByRole("button", { name: "Create task" })); - expect((await within(dialog).findByRole("alert")).textContent).toContain("the description is too long"); - expect((within(dialog).getByLabelText("What should it do?") as HTMLTextAreaElement).value).toBe("A very long thing"); - }); - - it("starts empty again after it was closed without sending", async () => { - const dialog = await openDialog(); - await userEvent.type(within(dialog).getByLabelText("What should it do?"), "never mind"); - await userEvent.click(within(dialog).getByRole("button", { name: "Cancel" })); - await waitFor(() => expect(screen.queryByRole("dialog")).toBeNull()); - await userEvent.click(screen.getByRole("button", { name: "New task" })); - expect((within(await screen.findByRole("dialog")).getByLabelText("What should it do?") as HTMLTextAreaElement).value).toBe(""); - }); -}); - -describe("the task drawer", () => { - it("tells the whole story of a finished task: its steps, its result as markdown, its numbers", async () => { - plane.tasks = [ - taskRecord("t1", { - description: "Write the weekly report", - status: "COMPLETED", - priority: 10, - started_at: minutesAgo(12), - finished_at: minutesAgo(2), - spent_usd: 0.73, - summary: "Wrote **report.md** with [the numbers](https://example.com/n).", - }), - ]; - plane.store("d1", "task.created", { task_id: "t1", description: "Write the weekly report", priority: 10 }, minutesAgo(13)); - plane.store("d1", "task.started", { task_id: "t1" }, minutesAgo(12)); - plane.store("d1", "task.progress", { task_id: "t1", text: "Collecting the figures" }, minutesAgo(10)); - plane.store("d1", "tool.called", { task_id: "t1", tool: "exec", permission: "computer.exec", decision: "allow", ok: true, duration_ms: 2500, target: "python3 collect.py" }, minutesAgo(9)); - plane.store("d1", "approval.requested", { task_id: "t1", approval_id: "a1", tool: "write_file", permission: "files.write", reason: "to save report.md", arguments: {} }, minutesAgo(5)); - plane.store("d1", "approval.resolved", { task_id: "t1", approval_id: "a1", decision: "approve" }, minutesAgo(4)); - plane.store("d1", "task.completed", { task_id: "t1", summary: "x" }, minutesAgo(2)); - plane.store("d1", "task.progress", { task_id: "elsewhere", text: "Another task's line" }, minutesAgo(1)); - - await renderTasks("t1"); - const drawer = await screen.findByRole("dialog", { name: "Write the weekly report" }); - await waitFor(() => expect(within(drawer).getByText("Collecting the figures")).toBeTruthy()); - expect(within(drawer).queryByText("Another task's line")).toBeNull(); - expect(within(drawer).getByText("python3 collect.py")).toBeTruthy(); - expect(within(drawer).getByText(/done, 2.5 s/)).toBeTruthy(); - expect(within(drawer).getByText(/Allowed:/)).toBeTruthy(); - // The engine's tool names are in the words of the chat (TOOL_LABELS of packages/shared), the name being the line's title. - expect(within(drawer).getByText("Ran a command").getAttribute("title")).toBe("exec"); - expect(within(drawer).getByText("wrote a file").getAttribute("title")).toBe("write_file"); - expect(within(drawer).getByText("$0.73")).toBeTruthy(); - expect(within(drawer).getByText("High")).toBeTruthy(); - expect(within(drawer).getByText("10m 0s")).toBeTruthy(); - // The result is rendered, not shown as source. - const result = within(drawer).getByRole("region", { name: "Result" }); - expect(result.querySelector("strong")?.textContent).toBe("report.md"); - expect(result.querySelector("a")?.getAttribute("href")).toBe("https://example.com/n"); - // A finished task cannot be cancelled. - expect(within(drawer).queryByRole("button", { name: /^Cancel/ })).toBeNull(); - expect(requested(/GET \/api\/tasks\/t1$/)).toHaveLength(1); - // Its story is read by the task: the rest of the Dot's log is not. - expect(plane.eventQueries.length).toBeGreaterThan(0); - expect(plane.eventQueries.every((q) => q.taskId === "t1")).toBe(true); - }); - - it("shows a failed task's reason as it was given, and a running task's story growing live", async () => { - plane.tasks = [runningTask("t2", { description: "Long job" })]; - plane.store("d1", "task.started", { task_id: "t2" }, minutesAgo(3)); - await renderTasks("t2"); - const drawer = await screen.findByRole("dialog", { name: "Long job" }); - await waitFor(() => expect(within(drawer).getByText("The Dot started on it")).toBeTruthy()); - expect(within(drawer).getByRole("button", { name: /^Cancel/ })).toBeTruthy(); - - act(() => plane.push("d1", "task.progress", { task_id: "t2", text: "Halfway through" })); - await waitFor(() => expect(within(drawer).getByText("Halfway through")).toBeTruthy()); - - Object.assign(plane.tasks[0]!, { status: "FAILED", finished_at: new Date().toISOString(), error: "the per-task cost cap was reached" }); - act(() => plane.push("d1", "task.failed", { task_id: "t2", error: "the per-task cost cap was reached" })); - await waitFor(() => expect(within(drawer).getAllByText("the per-task cost cap was reached").length).toBeGreaterThan(0)); - await waitFor(() => expect(within(drawer).queryByRole("button", { name: /^Cancel/ })).toBeNull()); - }); - - it("says when the task does not exist, and offers the way back", async () => { - plane.tasks = []; - await renderTasks("ghost"); - const drawer = await screen.findByRole("dialog"); - expect((await within(drawer).findByText("This task does not exist")).closest("[role=alert]")).toBeTruthy(); - expect(within(drawer).getByRole("link", { name: "Back to the tasks" }).getAttribute("href")).toBe("/dots/d1/tasks"); - }); - - it("treats a task of another Dot as missing under this Dot's address, and shows nothing of it", async () => { - plane.dots = [dotRecord("d1", { name: "fares" }), dotRecord("d2", { name: "mailer" })]; - plane.tasks = [taskRecord("theirs", { dot_id: "d2", description: "Their private errand", status: "COMPLETED", finished_at: minutesAgo(1), summary: "Their secret result" })]; - await renderTasks("theirs"); - const drawer = await screen.findByRole("dialog"); - expect((await within(drawer).findByText("This task does not exist")).closest("[role=alert]")).toBeTruthy(); - expect(within(drawer).getByRole("link", { name: "Back to the tasks" }).getAttribute("href")).toBe("/dots/d1/tasks"); - expect(screen.queryByText("Their private errand")).toBeNull(); - expect(screen.queryByText("Their secret result")).toBeNull(); - expect(within(drawer).queryByRole("button", { name: /^Cancel/ })).toBeNull(); - }); - - it("says when the history cannot be read, and reads it again on request", async () => { - plane.tasks = [taskRecord("t3", { description: "Quiet", status: "COMPLETED", finished_at: minutesAgo(1) })]; - plane.failEvents = 500; - await renderTasks("t3"); - const drawer = await screen.findByRole("dialog", { name: "Quiet" }); - await within(drawer).findByText("Could not read the task's history"); - plane.failEvents = null; - plane.store("d1", "task.started", { task_id: "t3" }); - await userEvent.click(within(drawer).getByRole("button", { name: "Try again" })); - await waitFor(() => expect(within(drawer).getByText("The Dot started on it")).toBeTruthy()); - }); - - it("goes back to the list when it is closed", async () => { - plane.tasks = [taskRecord("t4", { description: "Close me", status: "COMPLETED", finished_at: minutesAgo(1) })]; - await renderTasks("t4"); - const drawer = await screen.findByRole("dialog", { name: "Close me" }); - await userEvent.click(within(drawer).getByRole("button", { name: "Close" })); - expect(router.push).toHaveBeenCalledWith("/dots/d1/tasks"); - }); -}); - -describe("the Dot header while a task runs", () => { - it("shows the newest thing the task reported, linked to the task", async () => { - plane.tasks = [runningTask("r1")]; - await renderTasks(); - await screen.findByRole("article", { name: "Running r1" }); - act(() => plane.push("d1", "task.progress", { task_id: "r1", text: "Comparing the fares" })); - const line = await screen.findByRole("link", { name: /Comparing the fares/ }); - expect(line.getAttribute("href")).toBe("/dots/d1/tasks/r1"); - act(() => plane.push("d1", "task.completed", { task_id: "r1", summary: "done" })); - await waitFor(() => expect(screen.queryByRole("link", { name: /Comparing the fares/ })).toBeNull()); - }); -}); diff --git a/apps/web/test/theme.test.tsx b/apps/web/test/theme.test.tsx deleted file mode 100644 index c4a5060b..00000000 --- a/apps/web/test/theme.test.tsx +++ /dev/null @@ -1,139 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, render, screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { ThemeToggle } from "../src/components/shell/ThemeToggle"; -import { applyTheme, storedPreference, THEME_BOOTSTRAP, THEME_KEY } from "../src/lib/theme"; -import { useResolvedTheme } from "../src/lib/use-theme"; -import { stubResizeObserver } from "./support/browser"; - -let systemDark: boolean; -let mediaListeners: Set<() => void>; - -beforeEach(() => { - systemDark = false; - mediaListeners = new Set(); - localStorage.clear(); - delete document.documentElement.dataset.theme; - // The toggle's tooltip is positioned, which jsdom cannot measure. - stubResizeObserver(); - vi.stubGlobal( - "matchMedia", - vi.fn(() => ({ - get matches() { - return systemDark; - }, - addEventListener: (_type: string, listener: () => void) => mediaListeners.add(listener), - removeEventListener: (_type: string, listener: () => void) => mediaListeners.delete(listener), - })), - ); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); -}); - -const theme = () => document.documentElement.dataset.theme; - -describe("applying the theme", () => { - it("follows the system when nothing is stored, and obeys what is stored", () => { - applyTheme(THEME_KEY); - expect(theme()).toBe("light"); - systemDark = true; - applyTheme(THEME_KEY); - expect(theme()).toBe("dark"); - localStorage.setItem(THEME_KEY, "light"); - applyTheme(THEME_KEY); - expect(theme()).toBe("light"); - systemDark = false; - localStorage.setItem(THEME_KEY, "dark"); - applyTheme(THEME_KEY); - expect(theme()).toBe("dark"); - }); - - it("follows the system, and does not throw, when the storage is blocked", () => { - vi.spyOn(Storage.prototype, "getItem").mockImplementation(() => { - throw new DOMException("blocked", "SecurityError"); - }); - systemDark = true; - expect(() => applyTheme(THEME_KEY)).not.toThrow(); - expect(theme()).toBe("dark"); - expect(storedPreference()).toBe("system"); - vi.restoreAllMocks(); - }); - - it("ignores a stored value that is neither light nor dark", () => { - localStorage.setItem(THEME_KEY, "purple"); - expect(storedPreference()).toBe("system"); - }); - - it("runs on its own as the inline script of the document head, before any module is loaded", () => { - systemDark = true; - // The script is a string with the function written out in it: nothing it uses may come from this module. - new Function(THEME_BOOTSTRAP)(); - expect(theme()).toBe("dark"); - localStorage.setItem(THEME_KEY, "light"); - new Function(THEME_BOOTSTRAP)(); - expect(theme()).toBe("light"); - }); -}); - -describe("the theme toggle", () => { - function Probe() { - return

{useResolvedTheme()}

; - } - - it("stores the choice, applies it at once and says which one is in force", async () => { - applyTheme(THEME_KEY); - render( - <> - - - , - ); - expect(screen.getByRole("button", { name: "Theme: System" })).toBeTruthy(); - await userEvent.click(screen.getByRole("button", { name: "Theme: System" })); - await userEvent.click(screen.getByRole("menuitemradio", { name: "Dark" })); - expect(localStorage.getItem(THEME_KEY)).toBe("dark"); - expect(theme()).toBe("dark"); - expect(screen.getByTestId("resolved").textContent).toBe("dark"); - expect(screen.getByRole("button", { name: "Theme: Dark" })).toBeTruthy(); - - await userEvent.click(screen.getByRole("button", { name: "Theme: Dark" })); - await userEvent.click(screen.getByRole("menuitemradio", { name: "System" })); - expect(localStorage.getItem(THEME_KEY)).toBeNull(); - expect(theme()).toBe("light"); - }); - - it("follows the system's change while the choice is System, and not otherwise", async () => { - applyTheme(THEME_KEY); - render( - <> - - - , - ); - systemDark = true; - act(() => mediaListeners.forEach((listener) => listener())); - await waitFor(() => expect(screen.getByTestId("resolved").textContent).toBe("dark")); - - // With a choice stored the system's change is not followed. - localStorage.setItem(THEME_KEY, "light"); - applyTheme(THEME_KEY); - await waitFor(() => expect(screen.getByTestId("resolved").textContent).toBe("light")); - act(() => mediaListeners.forEach((listener) => listener())); - expect(theme()).toBe("light"); - }); - - it("still switches this page, though it cannot remember the choice, when the storage is blocked", async () => { - render(); - vi.spyOn(Storage.prototype, "setItem").mockImplementation(() => { - throw new DOMException("blocked", "QuotaExceededError"); - }); - await userEvent.click(screen.getByRole("button", { name: /^Theme:/ })); - await userEvent.click(screen.getByRole("menuitemradio", { name: "Dark" })); - expect(theme()).toBe("dark"); - vi.restoreAllMocks(); - }); -}); diff --git a/apps/web/test/time.test.ts b/apps/web/test/time.test.ts deleted file mode 100644 index 8f986551..00000000 --- a/apps/web/test/time.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { relativeTime } from "../src/lib/time"; - -const NOW = Date.parse("2026-03-10T12:00:00Z"); -const at = (ms: number) => new Date(NOW + ms).toISOString(); -const MIN = 60_000; -const HOUR = 60 * MIN; - -describe("relativeTime", () => { - it("says how long ago, in the unit that reads best", () => { - expect(relativeTime(at(-20_000), NOW)).toBe("Just now"); - expect(relativeTime(at(-5 * MIN), NOW)).toBe("5m ago"); - expect(relativeTime(at(-59 * MIN), NOW)).toBe("59m ago"); - expect(relativeTime(at(-3 * HOUR), NOW)).toBe("3h ago"); - }); - - it("gives the date once it is a day old or more", () => { - const old = at(-3 * 24 * HOUR); - expect(relativeTime(old, NOW)).toBe(new Date(old).toLocaleDateString()); - }); - - it("says how long until a time that has not come", () => { - expect(relativeTime(at(10_000), NOW)).toBe("Just now"); - expect(relativeTime(at(5 * MIN), NOW)).toBe("in 5m"); - expect(relativeTime(at(3 * HOUR + 10), NOW)).toBe("in 3h"); - expect(relativeTime(at(2 * 24 * HOUR + HOUR), NOW)).toBe("in 2d"); - }); - - it("takes a Date or a number as well, and gives back what is not a time", () => { - expect(relativeTime(new Date(NOW - 2 * MIN), NOW)).toBe("2m ago"); - expect(relativeTime(NOW - 2 * HOUR, NOW)).toBe("2h ago"); - expect(relativeTime("yesterday-ish", NOW)).toBe("yesterday-ish"); - }); -}); diff --git a/apps/web/test/tokens.test.ts b/apps/web/test/tokens.test.ts deleted file mode 100644 index f666b2d0..00000000 --- a/apps/web/test/tokens.test.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { readdirSync, readFileSync } from "node:fs"; -import { join } from "node:path"; -import { describe, expect, it } from "vitest"; -import { FAVICON_ATTENTION, FAVICON_PRIMARY } from "../src/lib/favicon"; -import { contrast as contrastOf, fromHex, over } from "./support/contrast"; -import { SRC, themes } from "./support/tokens"; - -const globalsCss = readFileSync(join(SRC, "app/globals.css"), "utf8"); - -/** WCAG 2.x contrast ratio of two #rrggbb colors. */ -const contrast = (a: string, b: string) => contrastOf(fromHex(a), fromHex(b)); - -/** Text on its surface: WCAG AA for normal text. */ -const TEXT_PAIRS: [string, string][] = [ - ["foreground", "background"], - ["card-foreground", "card"], - ["popover-foreground", "popover"], - ["muted-foreground", "background"], - ["muted-foreground", "card"], - ["muted-foreground", "muted"], - ["secondary-foreground", "secondary"], - ["accent-foreground", "accent"], - ["primary-foreground", "primary"], - ["primary-foreground", "primary-hover"], - ["destructive-foreground", "destructive"], - // Status text on its soft surface, and on the plain surfaces it also appears on. - ["ok", "ok-soft"], - ["warn", "warn-soft"], - ["danger", "danger-soft"], - ["info", "info-soft"], - ["ok", "card"], - ["warn", "card"], - ["danger", "card"], - ["danger", "popover"], - ["info", "card"], - ["warn", "background"], - ["danger", "background"], - // The accent as the color of a link or a label on the page. - ["primary", "background"], - ["primary", "card"], -]; - -/** Things that are drawn, not read (rings, focus outline, badges): WCAG 1.4.11, three to one. */ -const GRAPHIC_PAIRS: [string, string][] = [ - ["ring", "background"], - ["ring", "card"], - // The border of a field is what shows where it is (WCAG 1.4.11): it is drawn at its own color, not decoration like --border. - ["input", "background"], - ["input", "card"], - ["primary", "card"], - ["ok", "card"], - ["danger", "card"], - ["attention", "card"], - ["attention", "background"], -]; - -describe("the contrast measure", () => { - it("is the WCAG ratio: 21 for black on white, 1 for a color on itself, and below AA for a pale grey on white", () => { - expect(contrast("#000000", "#ffffff")).toBeCloseTo(21, 5); - expect(contrast("#5b5bd6", "#5b5bd6")).toBe(1); - expect(contrast("#aaaaaa", "#ffffff")).toBeLessThan(4.5); - }); -}); - -describe("the design tokens", () => { - for (const [name, tokens] of Object.entries(themes)) { - describe(`${name} theme`, () => { - it("defines every token the other theme defines", () => { - expect(Object.keys(tokens).sort()).toEqual(Object.keys(name === "light" ? themes.dark : themes.light).sort()); - }); - - it.each(TEXT_PAIRS)("%s on %s reads at AA (4.5:1)", (foreground, background) => { - expect(contrast(tokens[foreground]!, tokens[background]!)).toBeGreaterThanOrEqual(4.5); - }); - - it.each(GRAPHIC_PAIRS)("%s against %s is seen at 3:1", (color, surface) => { - expect(contrast(tokens[color]!, tokens[surface]!)).toBeGreaterThanOrEqual(3); - }); - }); - } - - it("maps every color token into Tailwind, and only those", () => { - const mapped = [...globalsCss.matchAll(/--color-([\w-]+): var\(--([\w-]+)\);/g)].map((m) => [m[1], m[2]]); - for (const [utility, token] of mapped) expect(utility).toBe(token); - expect(mapped.map(([utility]) => utility).sort()).toEqual(Object.keys(themes.light).sort()); - }); - - it("keeps the shimmering label visible under forced colors, where the gradient behind the transparent text fill is dropped", () => { - const shimmer = /@utility shimmer \{([\s\S]*?)\n\}/.exec(globalsCss)?.[1] ?? ""; - expect(shimmer).toContain("-webkit-text-fill-color: transparent"); - const forced = /@media \(forced-colors: active\) \{([^}]*)\}/.exec(shimmer)?.[1] ?? ""; - expect(forced).toContain("-webkit-text-fill-color: currentColor"); - expect(forced).toContain("background-image: none"); - }); - - it("keeps the favicon's two colors equal to the tokens they copy", () => { - expect(FAVICON_PRIMARY).toBe(themes.light.primary); - expect(FAVICON_ATTENTION).toBe(themes.light.attention); - }); -}); - -/** Every .tsx file of the components, as text. */ -function sources(): { file: string; text: string }[] { - const found: { file: string; text: string }[] = []; - const walk = (dir: string) => { - for (const entry of readdirSync(dir, { withFileTypes: true })) { - const path = join(dir, entry.name); - if (entry.isDirectory()) walk(path); - else if (entry.name.endsWith(".tsx")) found.push({ file: path.slice(SRC.length + 1), text: readFileSync(path, "utf8") }); - } - }; - walk(join(SRC, "components")); - return found; -} - -describe("the focus indicator", () => { - const all = sources(); - - it("is a ring whose opacity still reads at 3:1 against every surface it can sit on, in both themes (the solid token passing is not enough: the ring is drawn at its opacity)", () => { - const opacities = new Set(all.flatMap(({ text }) => [...text.matchAll(/(?:focus-visible|focus-within|focus|has-\[:focus-visible\]):ring-ring\/(\d+)/g)].map((m) => Number(m[1])))); - expect(opacities.size).toBeGreaterThan(0); - for (const [name, tokens] of Object.entries(themes)) { - for (const surface of ["background", "card", "popover"]) { - for (const opacity of opacities) { - const drawn = over(fromHex(tokens.ring!), opacity / 100, fromHex(tokens[surface]!)); - expect(contrastOf(drawn, fromHex(tokens[surface]!)), `ring-ring/${opacity} on ${surface}, ${name}`).toBeGreaterThanOrEqual(3); - } - } - } - }); - - it("is also an outline that forced colors keep: no control drops its outline for good, and every file that draws a focus ring says `outline-hidden` for the same trigger", () => { - for (const { file, text } of all) { - expect(text, file).not.toMatch(/(? { - const card = all.find(({ file }) => file.endsWith("ApprovalCard.tsx"))!.text; - expect(card).toContain('selected && "outline-2 outline-offset-2 outline-ring"'); - expect(card).not.toMatch(/selected && "ring-/); - }); -}); diff --git a/apps/web/test/use-frame.test.tsx b/apps/web/test/use-frame.test.tsx deleted file mode 100644 index 8e746b6f..00000000 --- a/apps/web/test/use-frame.test.tsx +++ /dev/null @@ -1,58 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, renderHook } from "@testing-library/react"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { useFrame } from "../src/components/computer/use-frame"; -import { stubObjectUrls } from "./support/browser"; - -beforeEach(() => { - stubObjectUrls(); -}); - -afterEach(() => { - cleanup(); - vi.unstubAllGlobals(); -}); - -const bytes = (...values: number[]) => Uint8Array.from(values) as Uint8Array; - -describe("useFrame", () => { - it("asks for one frame at a time: a refresh during a read in flight starts no second one", async () => { - const answers: ((value: Uint8Array) => void)[] = []; - const load = vi.fn(() => new Promise>((resolve) => answers.push(resolve))); - const { result } = renderHook(() => useFrame(load, "image/jpeg", 1000, false)); - - let first!: Promise; - let second!: Promise; - act(() => { - first = result.current.refresh(); - second = result.current.refresh(); - }); - expect(load).toHaveBeenCalledTimes(1); - expect(result.current.pending).toBe(true); - - await act(async () => { - answers[0]!(bytes(1)); - await Promise.all([first, second]); - }); - expect(result.current.url).not.toBeNull(); - expect(result.current.pending).toBe(false); - - // The read has ended: the next refresh reads again. - act(() => { - void result.current.refresh(); - }); - expect(load).toHaveBeenCalledTimes(2); - await act(async () => answers[1]!(bytes(2))); - }); - - it("lets a refresh through again after a failed read", async () => { - const load = vi.fn().mockRejectedValueOnce(new Error("offline")).mockResolvedValue(bytes(1)); - const { result } = renderHook(() => useFrame(load, "image/jpeg", 1000, false)); - await act(() => result.current.refresh()); - expect(result.current.error).toBeInstanceOf(Error); - await act(() => result.current.refresh()); - expect(load).toHaveBeenCalledTimes(2); - expect(result.current.error).toBeNull(); - expect(result.current.url).not.toBeNull(); - }); -}); diff --git a/apps/web/test/use-resource.test.tsx b/apps/web/test/use-resource.test.tsx deleted file mode 100644 index 09ba5f1c..00000000 --- a/apps/web/test/use-resource.test.tsx +++ /dev/null @@ -1,53 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, renderHook, waitFor } from "@testing-library/react"; -import { afterEach, describe, expect, it } from "vitest"; -import { useResource } from "../src/components/ui"; - -afterEach(cleanup); - -describe("useResource", () => { - it("does not keep what the last key said, its data or its error, for the key that replaced it while that one loads", async () => { - let finish: (value: string) => void = () => {}; - const loads: Record Promise> = { - a: () => Promise.reject(new Error("a failed")), - b: () => new Promise((resolve) => (finish = resolve)), - }; - const { result, rerender } = renderHook(({ key }) => useResource(loads[key]!, key), { initialProps: { key: "a" } }); - await waitFor(() => expect((result.current.error as Error | null)?.message).toBe("a failed")); - - rerender({ key: "b" }); - await waitFor(() => expect(result.current.error).toBeNull()); - expect(result.current.data).toBeUndefined(); - expect(result.current.loading).toBe(true); - - await act(async () => finish("b loaded")); - await waitFor(() => expect(result.current.data).toBe("b loaded")); - expect(result.current.error).toBeNull(); - }); - - it("drops an answer that arrives after a newer load started", async () => { - const resolvers: Array<(value: string) => void> = []; - const { result } = renderHook(() => useResource(() => new Promise((resolve) => resolvers.push(resolve)), "one")); - await waitFor(() => expect(resolvers).toHaveLength(1)); - act(() => result.current.reload()); - await waitFor(() => expect(resolvers).toHaveLength(2)); - await act(async () => resolvers[1]!("newer")); - await act(async () => resolvers[0]!("older")); - expect(result.current.data).toBe("newer"); - }); - - it("returns the same object until one of its fields changes, so what is built from it is not rebuilt for nothing", async () => { - let finish: (value: string) => void = () => {}; - const { result, rerender } = renderHook(() => useResource(() => new Promise((resolve) => (finish = resolve)), "one")); - const loading = result.current; - rerender(); - expect(result.current).toBe(loading); - await act(async () => finish("loaded")); - await waitFor(() => expect(result.current.data).toBe("loaded")); - const loaded = result.current; - expect(loaded).not.toBe(loading); - rerender(); - rerender(); - expect(result.current).toBe(loaded); - }); -}); diff --git a/apps/web/test/use-visible-interval.test.tsx b/apps/web/test/use-visible-interval.test.tsx deleted file mode 100644 index 16c02a85..00000000 --- a/apps/web/test/use-visible-interval.test.tsx +++ /dev/null @@ -1,97 +0,0 @@ -// @vitest-environment jsdom -import { act, cleanup, render } from "@testing-library/react"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { useVisibleInterval } from "../src/lib/use-visible-interval"; - -let hidden = false; - -function Probe({ tick, ms = 1000, enabled = true }: { tick: () => void | Promise; ms?: number; enabled?: boolean }) { - useVisibleInterval(tick, ms, enabled); - return null; -} - -function setHidden(value: boolean) { - hidden = value; - document.dispatchEvent(new Event("visibilitychange")); -} - -beforeEach(() => { - vi.useFakeTimers(); - hidden = false; - Object.defineProperty(document, "hidden", { configurable: true, get: () => hidden }); -}); - -afterEach(() => { - cleanup(); - vi.useRealTimers(); -}); - -describe("useVisibleInterval", () => { - it("polls at once and then once per period", async () => { - const tick = vi.fn(); - render(); - await act(() => vi.advanceTimersByTimeAsync(0)); - expect(tick).toHaveBeenCalledTimes(1); - await act(() => vi.advanceTimersByTimeAsync(3000)); - expect(tick).toHaveBeenCalledTimes(4); - }); - - it("asks nothing while the page is hidden, and polls at once when it is shown again", async () => { - const tick = vi.fn(); - render(); - await act(() => vi.advanceTimersByTimeAsync(0)); - setHidden(true); - await act(() => vi.advanceTimersByTimeAsync(5000)); - expect(tick).toHaveBeenCalledTimes(1); - await act(async () => setHidden(false)); - await act(() => vi.advanceTimersByTimeAsync(0)); - expect(tick).toHaveBeenCalledTimes(2); - }); - - it("never runs two at a time: the next is scheduled when the last has finished", async () => { - let running = 0; - let overlap = 0; - const tick = vi.fn(async () => { - running++; - overlap = Math.max(overlap, running); - await new Promise((resolve) => setTimeout(resolve, 2500)); - running--; - }); - render(); - await act(() => vi.advanceTimersByTimeAsync(10_000)); - expect(overlap).toBe(1); - // Each takes 2.5 s and the period starts after it: 0, 3.5, 7.0 s. - expect(tick).toHaveBeenCalledTimes(3); - }); - - it("keeps time when a poll throws", async () => { - const tick = vi.fn(async () => { - throw new Error("no answer"); - }); - render(); - await act(() => vi.advanceTimersByTimeAsync(2000)); - expect(tick).toHaveBeenCalledTimes(3); - }); - - it("stops when disabled and when unmounted, and calls the latest function it was given", async () => { - const first = vi.fn(); - const second = vi.fn(); - const view = render(); - await act(() => vi.advanceTimersByTimeAsync(0)); - view.rerender(); - await act(() => vi.advanceTimersByTimeAsync(1000)); - expect(first).toHaveBeenCalledTimes(1); - expect(second).toHaveBeenCalledTimes(1); - - view.rerender(); - await act(() => vi.advanceTimersByTimeAsync(5000)); - expect(second).toHaveBeenCalledTimes(1); - - view.rerender(); - await act(() => vi.advanceTimersByTimeAsync(0)); - expect(second).toHaveBeenCalledTimes(2); - view.unmount(); - await act(() => vi.advanceTimersByTimeAsync(5000)); - expect(second).toHaveBeenCalledTimes(2); - }); -}); diff --git a/apps/web/test/yaml.test.ts b/apps/web/test/yaml.test.ts deleted file mode 100644 index c238b3a0..00000000 --- a/apps/web/test/yaml.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { parseDotConfig } from "@invisible-dots/shared"; -import { describe, expect, it } from "vitest"; -import { toYaml } from "../src/lib/yaml"; - -/** The example of the architecture document: every section of a config, written the way a person would. */ -const EXAMPLE_CONFIG = `name: fare-watch -instructions: > - Write findings to ~/workspace/fares.csv. -model: - provider: openrouter - id: z-ai/glm-5.3-flash -computer: - cpu: 2 - memory: 4gb - disk: 40gb - idle_timeout: 15m -permissions: - computer.exec: allow - browser.identity.delete: ask -limits: - max_steps_per_task: 60 - max_cost_per_task_usd: 1.00 -`; - - -describe("toYaml", () => { - it("round-trips the example config through the shared schema", () => { - const config = parseDotConfig(EXAMPLE_CONFIG); - expect(parseDotConfig(toYaml(config))).toEqual(config); - }); - - it("keeps strings that YAML would otherwise read as other types", () => { - const config = parseDotConfig({ - name: "tricky", - instructions: "key: value # not a comment\n indented second line\n", - model: { provider: "openrouter", id: "vendor/model:free" }, - models: { summary: "0123" }, - computer: { cpu: 4, memory: "8gb", disk: "100gb", idle_timeout: "0" }, - permissions: { "computer.exec": "ask" }, - }); - const text = toYaml(config); - expect(parseDotConfig(text)).toEqual(config); - expect(toYaml({ answer: "yes" })).toBe('answer: "yes"\n'); - }); - - it("writes multi-line text as a literal block and round-trips edge cases", () => { - const cases = ["one\ntwo", "one\ntwo\n", " leading\nspace", "a\n\n\nb", "trailing\n\n", "tab\there\nx", "#hash\n- dash"]; - for (const instructions of cases) { - const config = parseDotConfig({ name: "m", instructions, model: { provider: "openrouter", id: "a/b" } }); - expect(parseDotConfig(toYaml(config)).instructions).toBe(instructions); - } - const block = toYaml({ text: "one\ntwo" }); - expect(block).toBe("text: |-\n one\n two\n"); - }); - - it("writes empty objects inline and nests objects by two spaces", () => { - expect(toYaml({ a: {}, b: { c: { d: true } }, e: null, f: 1.5 })).toBe("a: {}\nb:\n c:\n d: true\ne: null\nf: 1.5\n"); - }); - - it("refuses a non-object at the top level", () => { - expect(() => toYaml("x")).toThrow(); - }); -}); diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json deleted file mode 100644 index 20c8c96a..00000000 --- a/apps/web/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "lib": [ - "ES2023", - "DOM", - "DOM.Iterable" - ], - "module": "ESNext", - "moduleResolution": "Bundler", - "jsx": "preserve", - "allowJs": false, - "types": [ - "node", - "react", - "react-dom" - ], - "plugins": [ - { - "name": "next" - } - ] - }, - "include": [ - "next-env.d.ts", - "src/**/*.ts", - "src/**/*.tsx", - "test/**/*.ts", - "test/**/*.tsx" - ], - "exclude": [ - "node_modules", - ".next" - ] -} diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 2e1a134a..00000000 --- a/docs/architecture.md +++ /dev/null @@ -1,3037 +0,0 @@ -# invisible_dots architecture - -This document is the contract every part of the repository is written against. -When code and this document disagree, one of them is a bug: fix the code or -change the document in the same commit. - -## 1. What a Dot is - -A Dot is a persistent agent that owns a computer. Every Dot has: - -- a configuration (name, instructions, model, permissions, resources), -- its own QEMU virtual machine (hardware accelerated) with a persistent qcow2 disk, -- inside that VM, its own agent runtime, which calls models through OpenRouter, -- its own memory, conversation and task state, stored inside the VM, -- zero or more browser identities, each one a separate browser profile with - its own cookies, storage, logins and fingerprint. - -The control plane on the host manages infrastructure: the Dot registry, VM -lifecycle, task dispatch, events, approvals. It never decides what a Dot does -step by step. The reasoning happens inside the Dot's VM. - -### 1.1 One mechanism on every host - -invisible_dots runs on Linux and on Windows with the SAME code path: the same -QEMU command line, the same networking, the same host to guest channel, the -same way of starting, watching and stopping QEMU, the same database, the same -data directory layout, the same commands. A -difference between the two is allowed only where the operating system makes -sameness impossible, and every such difference lives in ONE function that a -test covers. The complete list today: - -| what | Linux | Windows | where | -|---|---|---|---| -| QEMU accelerator | `-accel kvm` | `-accel whpx` | `apps/vm-manager/src/host.ts` `accelerator()` | -| how `doctor` (the CLI's and `GET /api/doctor`'s) reads the accelerator before probing it | `/dev/kvm` opens read-write | the `HypervisorPlatform` feature state through `Get-CimInstance` | `apps/vm-manager/src/accelerator-access.ts` `checkAcceleratorAccess()`, given the host's platform by `hostAccessDeps()` in the same file | -| how `invisible-dots setup` installs QEMU and enables the accelerator | `sudo apt-get install` (or the distribution's equivalent, printed) | one UAC prompt: enables the Windows Hypervisor Platform feature and runs the official QEMU installer silently | `apps/cli/src/setup/install.ts` `installHostPrerequisites()`, given the host's platform by `hostAccessDeps()` of `apps/vm-manager/src/accelerator-access.ts` | -| `setup` run as root | refused: it would check `/dev/kvm` as root and add root to the `kvm` group, not the person who runs the server; it calls `sudo` itself | there is no root; setup always runs as the normal user and elevates its one step | `apps/cli/src/setup/install.ts` `setupRefusal()` | -| a file or directory private to the user (`config/`, `master.key`, `api.token`, `db/`, the data directory) | mode `0600` / `0700` | an ACL that no account but the current user can use, inheritance removed (`icacls`), because Windows ignores the mode bits and a directory under a drive root inherits "Authenticated Users: Modify"; SYSTEM and the local Administrators may stay, as root does on Linux, since some machines grant them explicitly on every new directory | `packages/shared/src/files.ts` `permissionBitsEnforced()` and `restrictToOwner()` | - -One line names a platform without being a branch: `agentdBuildCommand()` in -`guest/image-builder/src/runtime.ts` builds dot-agentd with `GOOS=linux -GOARCH=amd64` on both hosts, because that is the guest's platform, not the -host's. - -One more branch exists only to let tests run on a Windows developer host: -`packages/shared/src/sockets.ts` `testSocketPath()` hands out a named pipe -there, because Node cannot serve a unix socket on Windows. The guest -code that serves sockets decides from the path (`socketIsAFile()`), never -from the platform. dot-agentd ships for linux/amd64 only, and the build -constraints of ten of its files let its package compile and its tests run on a -Windows developer host; no shipped binary contains the `!unix` or `!linux` side: - -- the account the model's work runs as (`LookupAccount`, `actAs`, `ForgetAmbientCapabilities`, `RequireCapabilities`; passwd, `setfsuid` and `prctl` are Linux calls, section 4.1): `guest/dot-agentd/internal/agentd/account_linux.go`, `guest/dot-agentd/internal/agentd/account_other.go` -- `setProcessGroup`: `guest/dot-agentd/internal/agentd/exec_unix.go`, `guest/dot-agentd/internal/agentd/exec_other.go` -- `listenUnixPrivate`: `guest/dot-agentd/internal/agentd/listen_unix.go`, `guest/dot-agentd/internal/agentd/listen_other.go` -- `diskUsage`: `guest/dot-agentd/internal/agentd/platform_unix.go`, `guest/dot-agentd/internal/agentd/platform_other.go` -- the process route and its relay (`startProc`, `killGroup`, `TerminalSize`, `MakeRaw`, `WatchTerminalSize`, `ForwardedSignals`; pseudo-terminals are Linux ioctls): `guest/dot-agentd/internal/agentd/proc_linux.go`, `guest/dot-agentd/internal/agentd/proc_other.go` - -`tests/repo/platform-branches.test.ts` reads every product source file -(TypeScript and JavaScript, the build scripts, the guest's shell scripts and -dot-agentd's Go) and fails on a platform check outside this list: Node's -platform and OS probes, `getuid`, the Windows path module, a platform name -as a string, Go's `runtime.GOOS`, build constraints and platform file name -suffixes. The engine under `invisible_engine_dots/` (section 2) is Python and -the test does not read it: it runs only inside the Linux guest, uses unix -sockets and process groups, and has no platform branch (the Windows, macOS and -service-manager code of the nanobot it was forked from is gone). - -QEMU has no monitor (no QMP, no HMP) on either host. The control plane sees a -VM's QEMU only as a process, through `process.kill(pid, 0)` and the guest -port its user networking listens on, and reaches the guest only through -dot-agentd (section 5.1); both behave the same on Linux and Windows. That is -what removed the one host-side branch a monitor needed: Node has no AF_UNIX -client on Windows, QEMU's `pipe` chardev there blocks the start until a client -connects and serves one client for the life of the process, and a monitor on -TCP would be reachable from every guest (section 3.6). - -Never fall back silently: when the accelerator is missing, starting a VM fails -with a message that says which command fixes it. Software emulation (TCG) is -never used. macOS is not supported in this version: it needs an arm64 guest -image and an arm64 browser build, which are not wired. - -## 2. Repository layout - -```text -apps/ - api/ control-plane HTTP API + SSE, and the control plane composed as one process (`invisible-dots server` runs it) - scheduler/ task dispatcher, wake on work, sleep on idle - vm-manager/ QEMU driver: overlays, seed and runtime ISOs, QEMU argv, port forwards, the guest client, the host's one process runner, the doctor report (section 11.1) - web/ Next.js web client - cli/ `invisible-dots`: setup, doctor, image build, server, and the API client commands -packages/ - shared/ types and schemas shared by host and guest: config, protocol, events, states - database/ PostgreSQL schema (PGlite embedded or an external server), migrations, repositories, durable queue - iso/ ISO 9660 + Joliet writer in plain TypeScript (seed and runtime disks) - events/ event types, the host event log and its fan-out to SSE subscribers - channels/ the messaging channel hub and the Telegram and WhatsApp adapters (section 9.8): pairing, who may talk, the messages between a chat and its Dot; runs inside the control plane process - sdk/ typed HTTP client for the API (used by cli and web) -guest/ - dot-agentd/ the computer daemon (Go): the guest endpoint, exec, files, screenshots - image-builder/ golden image and runtime disk builders (TypeScript), guest systemd units -invisible_engine_dots/ - the Dot's engine, run by `python -I -B -m nanobot` in the guest: a hard fork of - nanobot (HKUDS/nanobot, MIT, commit f75470e7), Python 3.11 or newer, provenance - and everything removed since the import in invisible_engine_dots/UPSTREAM.md. - Import package `nanobot`, distribution `invisible-dots-engine`. Only - the engine core is kept: no channel, web UI, TUI, audio, pairing, nanobot - skill machinery, subagent, web tool or CLI (the one entry point answers - `--version` and refuses every other command). What it carries: nanobot's - tool-calling turn runner, chat completions to OpenRouter and no other - provider, the tools of the permission table (section 8.8), nanobot's cron - service and its MCP client (which serves the Dot's browsers, - `invisible-playwright-mcp`, through the `BrowserManager`, and the MCP servers - the person declares, through `nanobot/dots/mcp_servers.py`). The Dot's own - layer, the contract of sections 5.3 to 5.4, its skills (section 8.6, - `nanobot/dots/skills.py`) included, is `nanobot/dots/`. Its own pytest suite runs in CI's `engine` job - (`.github/workflows/tests.yml`, Linux only: unix sockets) -virtualization/ - qemu/ the pinned QEMU version for Windows setup (installer URL + SHA-256) and argv notes - cloud-init/ NoCloud templates - images/ pinned base image metadata -tests/ - repo/ checks over the whole repository (the platform branches of section 1.1, and the - contract of the end-to-end run below with the product) - e2e/ the real-VM acceptance run (`node tests/e2e/run.ts`, on a Linux host with an - accelerator and an OpenRouter key; not in CI), its stand-in Linux host for - machines that cannot run it directly, and README.md - bench/ the agent benchmark on real Dots (Harbor tasks, written by its generators before - every run, and LongMemEval), run by hand in a container; README.md -docs/ -``` - -There is no host installer script, no service unit and no container: the host -needs Node 24 and QEMU, and `invisible-dots setup` gets QEMU (section 11). - -Everything under `apps/`, `packages/` and `guest/image-builder/` is TypeScript in one -npm workspace. `invisible_engine_dots/` is not part of it: it is a Python project -(`pyproject.toml`, pytest) of its own, and this repository's TypeScript project, -vitest run and npm workspaces all leave `invisible_engine_dots/` out -(`tests/repo/vendored-nanobot.test.ts` checks it). It is a hard fork: it is -changed in place and upstream changes are never merged. `dot-agentd` -is a Go module. Node 24 or newer for the TypeScript. Go 1.25 or newer. Python 3.11 or newer for -the engine; the guest runs it on Ubuntu 24.04's CPython 3.12. - -The control plane runs as ONE process (`invisible-dots server`) that composes -`api`, `scheduler` and `vm-manager`. They are separate packages so that each -can be tested alone, not separate daemons. It runs in the foreground the same -way on every host; running it as a service is left to the person. - -## 3. Host - -### 3.1 Requirements - -Linux or Windows on x86-64, Node 24, and QEMU 8.2 or newer (Ubuntu 24.04's -own package; the number lives in `MIN_QEMU_VERSION`, `apps/vm-manager/src/host.ts`) -(`qemu-system-x86_64` and `qemu-img`) with its hardware accelerator usable: -`/dev/kvm` readable and writable by the user on Linux, the Windows Hypervisor -Platform feature enabled on Windows. No administrator rights are needed at run -time. `invisible-dots doctor` checks each item and names the command that fixes -it; `invisible-dots setup` performs those commands (section 11). Building the -golden image boots a builder VM with 2 vCPUs and 4 GiB of memory by default -(`GOLDEN_DEFAULTS` in `guest/image-builder/src/golden.ts`). - -QEMU is found in `INVISIBLE_DOTS_QEMU_DIR` alone when that is set (a QEMU from -there mixed with a `qemu-img` from somewhere else would run two versions on the -same disks); otherwise first in the default install location of the official -Windows installer, `%ProgramW6432%\qemu` (read from the variable Windows sets, -so a Program Files on another drive is found; Linux has no such variable and -nothing to check), then on `PATH`. The installer's directory comes first so -the QEMU `setup` just installed wins over an older one on `PATH`; when the -installer reused an earlier install directory, `setup` prints the -`INVISIBLE_DOTS_QEMU_DIR` line that points at it. QEMU is always invoked by -absolute path once found, with the server's home as its working directory -(a Windows process holds its working directory open, so inheriting the -directory the server was started from would keep that directory from being -moved or deleted while any Dot runs). - -### 3.2 Host filesystem - -One directory, `INVISIBLE_DOTS_HOME`, default `~/.invisible-dots` on every -host (`%USERPROFILE%\.invisible-dots` on Windows): - -```text -~/.invisible-dots/ - config/ - master.key 32 random bytes: encrypts secrets in the database - api.token bearer token for the API (its first line) - db/ the embedded PostgreSQL (PGlite) data directory - server.lock { pid, host_uptime_s } of the one server running on this home - images/ - noble-minimal-cloudimg-amd64.img pinned by SHA-256 (virtualization/images/base.json) - golden-.qcow2 immutable, read-only - golden-.json its manifest: inputs, versions, SHA-256 - runtime-.iso our code: agent bundle + dot-agentd + units - runtime-.json its manifest - .cache/ verified downloads (re-hashed on every build) - .golden-.work/ a golden build in progress, kept when it fails - .golden-build.lock .runtime-build.lock - vms// - disk.qcow2 overlay, backing file = a golden image - seed.iso NoCloud seed - qemu.json pid file of the running VM: { pid, guest_port, host_uptime_s }, written at spawn - serial.log the guest serial console, truncated at each start - logs/ - qemu-.log QEMU's own output -``` - -Both hosts use the same layout and the same names; only the root differs, and -only because home directories differ. `` is `-`, so the newest build sorts last and rebuilding unchanged inputs -is a no-op; `packages/shared/src/paths.ts` is the one place that names these -files. A path under `INVISIBLE_DOTS_HOME` that contains a comma or any -character outside plain ASCII is refused (`qemuPathProblem()`, -`apps/vm-manager/src/qemu-args.ts`), and `doctor` reports such a home before a -build or a Dot fails on it: QEMU's option syntax cannot carry a comma in every -flag, and the pinned Windows QEMU 11.1, measured, cannot open a `-drive` file -whose path holds a non-ASCII character (an accented Latin letter as much as a -Cyrillic one). Linux would accept UTF-8, but the default home sits under the -account name, and a home that works on one host and not on the other is the -divergence section 1.1 rules out. Nothing under it is a unix socket, so its -length is not limited. - -The data directory, `config/` and `db/` are private to the user who runs the -server, and so are `master.key` and `api.token` (section 1.1 says how on each -host); every start brings an existing directory back to that. - -`server.lock`, the two build locks and every `qemu.json` record the host's -uptime when they were written (`host_uptime_s`). It only grows within one boot -and starts from zero at the next, so a record from before a host restart is -recognized as stale without trusting a pid, which the operating system may -have handed to another process since. (Windows Fast Startup keeps counting -across a shutdown; such a record falls back to the pid checks of section 3.4.) -The locks are one helper, `acquirePidLock()` in `packages/shared/src/process.ts`: -a lock is taken over only when it is stale (the host restarted, or its pid and -the child process it records are gone, or it names this process's own pid, -which can only be an earlier holder's), only by the one process that creates -`.takeover` first, and only after reading the lock again unchanged; it is -released only by its holder. The golden build records its builder VM as that -child, so a build killed outright never has its work directory deleted under -a QEMU that still runs. A refusal names the holder and the file to remove. - -`qemu.json` is written by the vm-manager (to a temporary name, then renamed) -right after it spawns QEMU, from the spawned process's pid and the guest port -it passed to QEMU. It is the one record of which process and which port belong -to the Dot: QEMU's own `-pidfile` is not used, and the `computers` row (section -9.1) is corrected from it on reconciliation, never the other way round. A file -that does not parse makes the VM's state ERROR, never STOPPED, because a second -QEMU on the same disk would corrupt it. - -### 3.3 Two images, two lifetimes - -- The **golden image** carries the operating system and third-party software: - Ubuntu 24.04, Xvfb and a minimal XFCE session, the libraries - the browser needs, `uv`, `invisible-playwright-mcp` in its own - Python environment, the browser engine already downloaded (the library - keeps its own GeoIP database, fetched from its release at a launch), and the Python - environment of the Dot's engine (`/opt/invisible-dots-engine`). It changes - rarely. It is never modified once a VM uses it: a new one gets a new version - in its name. -- The engine's environment holds its third-party packages and not its code. - `builder/build-engine-env.sh` makes a venv from Ubuntu's own - `/usr/bin/python3` (CPython 3.12) and installs into it, with - `uv pip install --require-hashes --only-binary :all:`, every package of - `guest/image-builder/builder/engine-requirements.lock`: exact versions with - the SHA-256 of their files, transitive packages included, wheels only, so no - build script of a third-party package runs as root in the builder VM. The - lock is the one place the engine's dependency versions are fixed (a test - checks that every dependency `invisible_engine_dots/pyproject.toml` declares - is in it), and it is part of the inputs digest, so a changed package is a new - image. The build also prefetches tiktoken's `cl100k_base` table into - `share/tiktoken` (the engine never fetches it) and leaves the whole venv - owned by root and writable by nobody else. -- The engine's own code is on the runtime disk, at `/opt/invisible-dots/engine` - (its `nanobot` package, `LICENSE` and `UPSTREAM.md`), and a `.pth` - file in the venv's site-packages puts that directory on the venv's path. Our - code is ours to change often, so a change to it is a new ISO and not an hour - of golden build (the engine's source is not an input of the golden digest). - A runtime disk that needs another dependency needs a new golden image. -- Every input of the golden image but the browser is pinned by content: the - cloud image, `uv` and the tunnel by SHA-256 (`virtualization/images/base.json`, - `guest/image-builder/pins.json`). The browser is never pinned: each build - takes the newest release of `invisible-playwright-mcp` on PyPI, with the - newest `invisible-playwright` it accepts and the `invisible-core` that one - names (`guest/image-builder/src/browser-release.ts`). The three versions are - part of the inputs digest, so a new release is a new image, and the image's - manifest records the ones installed; the scheduled run of - `.github/workflows/golden-image.yml` publishes that image without any change - to this repository. The builder installs them with - `uv pip install --only-binary :all:`, so no package's build script runs, and - refuses an environment that holds another browser (the names in - `guest/image-builder/builder/other-browsers.txt`). The apt packages come from the Ubuntu archive as it - was at the moment `apt_snapshot` of `pins.json` names (snapshot.ubuntu.com, - `apt-get --snapshot`), so they and their dependencies are the same on any day - of the build; apt checks their signatures. -- The **runtime disk** (`runtime-.iso`, attached read-only to every VM - and mounted at `/opt/invisible-dots`) carries our code: the engine's source, - the `dot-agentd` binary and the systemd units. A new - version of our code is a new ISO and a VM restart, not a new golden image and - not a rebuilt overlay. -- `install.sh` (cloud-init's per-boot script) is what starts the Dot's units, - on every boot, after the VM proxy: they are copied into - `/etc/systemd/system` and never enabled. Enabled, systemd would start them at - `multi-user.target`, and cloud-init's final stage, which runs `install.sh` - and writes the seed's `config.json` first, comes after that target - (`cloud-final.service` is `After=multi-user.target`): on every boot after the - first, a Dot would have gone out before its proxy was set. - -The host builds the runtime disk from this checkout, and the golden image from -public sources (`invisible-dots image build`, code in `guest/image-builder/`) -unless CI has published the golden image of exactly the same inputs: the -release `golden-` of `.github/workflows/golden-image.yml`, -which `image build` downloads instead (`guest/image-builder/src/prebuilt.ts`; -section 11.3). Either way the golden image is provisioned with the same QEMU a -host runs Dots with and the same machine: the builder VM's command line is built from the vm-manager's `machineArgs()`, drive and device -functions, the ones `qemuArgs()` uses, plus only what a builder needs, so a -golden image is provisioned on the machine type, accelerator and CPU model a -Dot boots it on. The seed and runtime ISO labels are each defined once, in -`apps/vm-manager/src/seed.ts`. Both ISOs are written by -`packages/iso`, so no ISO tool is needed on any host. - -### 3.4 VM definition - -One QEMU process per running Dot, started by the vm-manager with an argument -array (never a shell) built by ONE function, `qemuArgs()`, the same on every -host apart from the accelerator: - -```text -qemu-system-x86_64 - -name invisible-dot- - -machine q35 -accel -cpu host,-vmx,-svm - -smp -m - -drive if=virtio,file=,format=qcow2,discard=unmap - -drive if=virtio,file=,format=raw,readonly=on - -drive if=virtio,file=.iso>,format=raw,readonly=on - -netdev user,id=net0,hostfwd=tcp:127.0.0.1:-:1024 - -device virtio-net-pci,netdev=net0 - -device virtio-rng-pci - -serial file: - -display none -``` - -- No monitor and nothing that pauses: no `-qmp`, no `-monitor`, no `-S`, no - `-no-shutdown`. QEMU starts running the guest at once and exits when the - guest powers off. A test fails on any of these flags. -- No fallback: if `-accel` fails, the start fails and the error names the - fix. If the CPU model is rejected by an accelerator, the error says so; it - is not replaced by a guessed model without an explicit decision recorded here. -- Start: spawn QEMU detached (so the control plane can restart without - stopping Dots), with an allowlist of the server's environment - (`allowlistedEnvironment()`, `packages/shared/src/environment.ts`: what a - program needs to start and find its files, never `INVISIBLE_DOTS_TOKEN` or a - `DATABASE_URL`, which a QEMU that outlives the server would otherwise keep), - write `qemu.json`, then wait until QEMU listens on the guest - port and is still running 1 s later. The listening port means QEMU parsed - its command line, opened the accelerator and set up networking; the second - look catches what fails just after (QEMU checks the CPU model when it builds - the machine). A QEMU that exits is reported with what it wrote to - `logs/qemu-.log` during this start; one that never listens within - 30 s is killed and reported the same way. -- A QEMU that starts but never brings the guest up (a vCPU the accelerator - stopped, a guest stuck in its firmware or kernel) is caught by the READY - procedure (section 9.3): waiting for `GET /v1/health` fails after its timeout - with the end of `logs/qemu-.log` and of `vms//serial.log` in - the error, and at once when QEMU exits meanwhile. -- State: STOPPED when there is no `qemu.json`, its process is gone, or it was - written before the host last restarted; RUNNING when its process is this - Dot's QEMU (the rule below); ERROR when a live pid cannot be proven to be (it - is reported and never killed). Whether the guest inside is up is guest - health, which the READY procedure checks; the state of a Dot is both - (section 9.3). -- Which process may be killed, the one rule: a process this control plane - spawned and whose exit Node has not reported (Node holds that process, so - its pid cannot be recycled meanwhile), or a pid from a `qemu.json` written - in this boot that is alive and this user's (`process.kill(pid, 0)` - succeeds; EPERM means another user's process, and a QEMU this control plane - spawned always runs as its own user) AND whose guest port from the same file - accepts a TCP connection on 127.0.0.1. QEMU's user networking listens on that - port from the moment it is set up until the process exits, whether or not the - guest is up; a process that inherited a recycled pid after a crash or a host - restart does not listen on that one port. The rule is checked again right - before every kill. Anything else is never killed. A listener that passes it - is still not trusted with the Dot's token: the guest must prove it holds the - token first (section 5.1). -- Stop: `POST /v1/system/poweroff` through the guest channel with the Dot's - token (section 5.2), then wait up to 60 s for QEMU to exit, then kill it - (SIGKILL on Linux, TerminateProcess on Windows, both through - `process.kill`) and wait up to 10 s for it to go. A guest that does not - accept the poweroff (it is not up, or the request fails) cannot power itself - off, so its QEMU is killed at once. Destroy kills without a poweroff: the - disk goes too. The VM's files are rewritten or removed right after its QEMU - stopped (the seed at the next start, everything at a destroy) through one - retry while a file is in use (`retryWhileInUse()`, - `packages/shared/src/replace-file.ts`, which also replaces every file this - repository writes atomically, through `replaceFile()`): Windows can report a process gone before - its handles are closed, and an antivirus may hold a file for a moment; on - Linux the first try succeeds. -- Reboot is a stop and a start, not a reset: a reset skips the guest's - shutdown and would not apply a new runtime ISO, CPU count or memory size. - The guest port changes on reboot. -- Reconciliation, the one path for it: reading a VM's state (the vm-manager's - `state()`, which the control plane's recovery after a restart calls for - every Dot) removes a `qemu.json` whose process is gone the moment it reads - it, under the Dot's lock, so a pid recycled later cannot make it look alive. - A VM whose process is its QEMU is adopted with the pid and port from the - file, and the READY procedure then checks its guest. -- The seed is rewritten at every start. Its cloud-init instance-id is - `iid--`, so cloud-init re-runs its per-instance - steps only when the seed's content changes. -- Measured with QEMU 8.2.2 (Ubuntu 24.04) and KVM: this argv starts, the - forward listens about 0.2 s after the spawn, and a taken port exits with - `Could not set up host forwarding rule`, the message the start retries on. -- The CPU model is the host's own without the virtualization extensions, - `host,-vmx,-svm` (`CPU_MODEL` in apps/vm-manager/src/qemu-args.ts), on every - accelerator: a Dot never runs a hypervisor. Measured with QEMU 11.1 on - Windows 11 (Intel Core Ultra 7 255H, hypervisor running): `-cpu host` and - `-cpu max` pause the VM at its first firmware instructions with - `WHPX: Unexpected VP exit code 4`, while `-cpu host,-vmx` boots the Ubuntu - cloud image to its login prompt; no other host CPU feature mattered - (bisected). `-svm` is the AMD name of the same extension. - -### 3.5 Port forwards - -`` is a free TCP port on 127.0.0.1, chosen at each start (bind to -port 0, read it, release it, pass it to QEMU; retried if QEMU reports the port -taken) and recorded in the `computers` table. A port is never a credential: -every request to a guest carries the Dot's token (section 5.1). - -### 3.6 Networking and its limits - -QEMU user-mode networking gives every Dot its own NAT with no bridge, no -administrator rights and the same behaviour on every host. Dots cannot reach -each other's guest addresses. A guest CAN reach services on the host's -loopback through `10.0.2.2`, which includes the control plane API, the web -client and the other Dots' forwarded ports. All of them require a credential -the guest does not have: the API's bearer token, the web client's session -(section 9.7; its Host and Origin checks are written by the client and so -cannot be what lets a request through), and each Dot's own token, which a -forwarded port answers only after proving it holds it (section 5.1). QEMU has -no monitor anywhere. Nothing else should listen unauthenticated on the host's -loopback while Dots run; `invisible-dots doctor` cannot check that, and this -document says so. - -## 4. Guest - -### 4.1 Processes (systemd, each unit as the user it names) - -| unit | user | what | -|---|---|---| -| `dot-desktop.service` | `dot` | `Xvfb :0 -nolisten tcp` plus a minimal XFCE session on it | -| `dot-agentd.service` | `dotagentd` | the computer daemon; TCP port 1024 (reached only through the host's port forward) and a local unix socket | -| `invisible-dots-agent.service` | `dotengine` | the Dot itself: the engine (`/opt/invisible-dots-engine/bin/python -I -B -m nanobot`) | - -Three users, none of them shared (all made by the image builder's seed): - -- `dot` runs the desktop, the browser and **every command of the model**. It is - the one user the model controls. It is in the groups `audio`, `video` and - `systemd-journal` (it reads its computer's system journal; cloud-init adds no - group to a user that exists already, so the groups are given where the user is - created, by the image builder's seed). It has no sudo rule. -- `dotagentd` runs dot-agentd. It holds the Dot's token (`/etc/invisible-dots/config.json`, - 0600) and owns `agentd.sock`. It has no home, no login and no group but its own. - It is the one user that may run one command as root, `/usr/bin/systemctl - poweroff` without a password, which is what dot-agentd starts when the host - stops the VM (section 5.2). The Dot's seed writes that rule; the golden image's - builder seed gives nobody one and the provisioner removes any rule the image - had, because a Dot's seed only adds its rule to that file. -- `dotengine` runs the engine. It is in group `dot` so it can read and seed the - Dot's workspace, and its unit runs it with `UMask=0002`. It holds the - OpenRouter key in memory and owns its state (`/home/dotengine/state`, 0700). - It needs no privilege: there is no sudo rule for it and no root-owned - configuration file (the Dot's config is stored in the engine's own database, - section 8.8), and its unit sets `NoNewPrivileges=yes`, so nothing it starts can - gain one. - -dot-agentd does not run the model's work as itself. Every command (`POST /v1/exec` -and the engine's `dot-agentd relay`), every file operation of the file routes of -both listeners, the browser's MCP servers (which the engine starts through the -relay) and the screenshot run as `dot`: - -- a process is started with `SysProcAttr.Credential`: dot's uid, gid and - supplementary groups (the daemon's own are not inherited); -- a file route acts as `dot` for the length of the request: the file-system user - and groups of the thread that serves it are dot's, as an NFS server's are for a - client's. The files it opens, creates and renames are dot's and are checked as - dot's, and the home confinement of the TCP listener (section 5.2) is decided on - top of that, unchanged; -- a pseudo-terminal for a command is opened as `dot`, so the terminal belongs to - it. - -The privileges that takes are the unit's `AmbientCapabilities=CAP_SETUID -CAP_SETGID CAP_KILL` (change to dot; end a process group of dot's) and nothing -else. The daemon empties its ambient set before it starts anything, whatever -`--run-as` says, so no program it starts holds one: a command of the model has -`CapPrm`, `CapEff` and `CapAmb` zero, and the smoke asserts it. It refuses to -start without the three when it is to act as another user. `--run-as` (default -`dot`, `INVISIBLE_DOTS_RUN_AS`) names the user; an empty value runs the work as -the daemon's own user, which is for development and which the daemon says in its -log (the ambient set is emptied then too). - -What the daemon runs as itself is found through no directory the model writes. -The unit gives it a `PATH` of system directories only, and every program it -starts for itself is named by path (`/usr/bin/sudo -n /usr/bin/systemctl -poweroff`, `/bin/bash`, `/usr/bin/import`): a `sudo` planted in dot's -`~/.local/bin` (dot owns its home and can open it) would otherwise be run as -`dotagentd` by the next poweroff. The `PATH` of the model's commands, dot's -`~/.local/bin` in front of the system's, is built by the daemon with the rest of -their environment (`execEnv`), not inherited from its own. The engine, which holds -the OpenRouter key, has the same rule: its unit's `PATH` is system directories -only, and the one program of dot's it needs, the browser's MCP server, is named by -its path (`INVISIBLE_DOTS_MCP_COMMAND=/home/dot/.local/bin/invisible-playwright-mcp`) -and started as dot through the relay. - -What this closes: no process of the model's shares a uid with a daemon, so the -model can neither read the Dot's token nor read the memory of dot-agentd or of -the engine, nor signal or stop either, nor reach either socket (their -directories admit only the two daemons, section 4.2). The engine's socket does -not rely on its directory alone: the engine asks the kernel who connected -(`SO_PEERCRED`) and refuses a process of `dot` (`INVISIBLE_DOTS_MODEL_USER`, -default `dot`; the engine does not start when that user does not exist). The -engine's API has no authentication of its own, so what would let the model -`PUT /config` with every permission `allow`, or approve its own parked calls -with `POST /events`, is exactly what these two walls keep out, and the smoke -tries both as the model does. The model can connect to TCP port 1024 inside its own -computer too, and gets `401` without the token. A process of `dot` could listen -on port 1024 only while dot-agentd is not running, and the host does not send -the token or the key to a listener that cannot answer the proof of section 5.1. -What this does not protect, stated as it is: - -- The split is the guest operating system's. A flaw in the guest's kernel, or a - way to become root that is not known here, would let a process of `dot` read - what the other two users hold. The VM is the outer wall then, and what it lets - the guest reach is section 3.6's. -- The daemon's three capabilities make a flaw in dot-agentd worth more than a - flaw in an ordinary program: `CAP_SETUID` lets it become any user, root - included, and it is the one user with a sudo rule (the power-off). It is a - small program and its one door, the TCP port, needs the token, which `dot` - cannot read; the model can reach the port and gets `401`. -- `dot` owns the desktop, the browser and `/home/dot`, and reads the proxy of an - identity whose browser is open (section 6). That is the model's computer, not - a leak out of it. -- Nothing limits how much disk, memory or processor time `dot`'s processes use - of the VM's (no cgroup limit, no quota), so a runaway command can starve the - daemons of the same VM until the host stops or restarts it. The control plane - records a VM that stops without being asked as STOPPED and starts it again - when the Dot has work (section 9.5). - -There is no long-running browser service. The engine's `BrowserManager` -starts one `invisible-playwright-mcp` process per launched browser identity -(section 6), through `dot-agentd relay`, so the process runs as `dot` and not -as `dotengine`: its environment is the one the relay builds for `dot` (none of -the engine's variables, never the OpenRouter key) plus the variables of -section 6. The engine closes them with the rest of its work (section 8.8). - -Everything the model runs (the engine's `exec`, `POST /v1/exec`) therefore runs -as `dot`, which has no way to become root: the model cannot power its computer -off through sudo. A Dot that stops without being asked is still recorded as -STOPPED and started again when it has work (section 9.5). - -### 4.2 Guest filesystem - -```text -/etc/invisible-dots/config.json written by cloud-init: dotId, token (0600, owner dotagentd: dot-agentd's alone) -/opt/invisible-dots/ the runtime ISO, read-only: the engine's source (engine/), dot-agentd and the units -/opt/invisible-dots-engine/ the engine's Python environment, built into the golden image (section 3.3) -/home/dotengine/state/ the engine's state (0700): engine.sqlite, which holds the Dot's tables and the - transcripts (section 8.8), and cron/jobs.json, the automations -/home/dot/ - workspace/ the engine's agent workspace too: group dot, setgid, 2775 - downloads/ documents/ - memory/ long-term memory notes (files; MEMORY.md is in every prompt; section 8.6) - conversations/ chat/.md and tasks/-.md, what was said (section 8.6) - browsers// - profile/ the browser profile -/var/lib/invisible-dots/ root, 0755 - mcp// INVISIBLE_MCP_HOME for that identity's server (dot, 0700; outside /home/dot on purpose) -/run/invisible-dots/ dotagentd:dotengine 2750 - agentd.sock dot-agentd's local API for the engine (dotagentd:dotengine 0660) -/run/invisible-dots-agent/ dotengine:dotagentd 2750 - agent.sock the engine's API, reached by dot-agentd's proxy (dotengine:dotagentd 0660) -``` - -The home of an identity's MCP server is not under `/home/dot` because the -server saves who its browser is, and for an identity that has a proxy of its -own that proxy with its password included, in -`/sessions/.json` on every `browser_open`: a file under -`/home/dot` would be served by the host's file routes (section 9.6), which read -`/home/dot` and nothing else, and dot-agentd's TCP listener refuses a path -outside it (`403 outside_home`). The directory is made by the image's -provisioner and by `install.sh` (dot owns it, the server runs as dot) and the -`BrowserManager` makes and removes one subdirectory per identity. - -Each socket sits in a directory its server owns and only the other side may -enter, setgid so the socket takes that side's group (`install.sh` writes both -to tmpfiles): dot-agentd's directory is `dotagentd:dotengine`, so the engine -(group `dotengine`) reaches `agentd.sock`, and the engine's is -`dotengine:dotagentd`, so dot-agentd (group `dotagentd`) reaches `agent.sock`. -`dot` is in neither group and owns neither directory: it cannot enter either -one, so it can neither talk to the engine or to dot-agentd's local socket nor -put another socket where the host pushes the key. The engine adds a check of -its own on the connection (section 4.1). - -One engine process owns `engine.sqlite`: it opens it in SQLite's exclusive -locking mode and takes the write lock at once, so a second process on the same -file fails at open ("another engine owns ...") and refuses to start, and the -kernel releases the lock the moment the owner dies, so a restart opens it -again without waiting. Nothing else opens the file; the host reads the guest -only through the engine's API. - -dot-agentd reads the Dot's home from `DOT_HOME` (default `/home/dot`; the -units do not set it). `INVISIBLE_DOTS_HOME` is the host's data directory -(section 3.2) and is never read in the guest: one name, one place. - -### 4.3 Secrets - -The OpenRouter key is never written into the golden image, the runtime ISO or -the seed. After the guest reports healthy, the control plane pushes it over -the guest channel (`POST /v1/agent/secrets`) and the engine keeps it in memory only. A VM -that restarts asks for nothing: the control plane pushes it again on every -READY transition, and an engine process that restarts inside a running VM -(systemd restarts it after a crash) announces itself with an `agent.started` -outbound event, on which the control plane pushes the key and the config -again. The Dot's own token is the one secret in the seed; it only -authorizes requests to this one VM. - -"Memory only" keeps the key off every disk; it is not on its own what keeps -it from the commands the model runs. What does: they run as `dot`, a user that -is neither the engine's nor dot-agentd's, and `dot` cannot become root (section -4.1), so it cannot read another process's memory through root; Ubuntu's Yama -`ptrace_scope=1` lets a process trace only its own descendants, and the -model's commands descend from dot-agentd, not from the engine; and the engine -is a process of another user, so ptrace of it is refused in any case. CPython opens no debugger or inspector -on a signal, so nothing can be asked of the process from outside; the unit's -`LimitCORE=0` keeps the key out of core files and `NoNewPrivileges=yes` keeps -anything the engine starts from gaining a privilege. A change to any of these -reopens the question. - -In the engine the key lives in one object, `KeyHolder` -(`nanobot/dots/secrets.py`): `POST /secrets` sets it, and the one place that -builds the model provider (`nanobot/dots/provider.py`) reads it. It is never -logged, written or put in an environment, and the server logs a request's -method, path and status and never a body. Nor does it leave in an error: -the holder refuses a key that cannot travel in a header (anything but printable -ASCII without spaces: a newline inside a key makes h11 raise `Illegal header -value b'Bearer '`, and the openai client chains that under its own -exception). That rule has one owner, `packages/shared` (`OPENROUTER_KEY_PATTERN` -and `OPENROUTER_KEY_RULE`): the host applies it where the key enters, so -`PUT /api/secrets/openrouter` answers `400 invalid_request` for a key that breaks -it, and the holder applies the engine's copy of the same two constants again on -`POST /secrets` (a repository test keeps the copy equal). The same key again changes nothing: -no new provider is built and no running turn is disturbed, so the host's -pushes at every READY and `agent.started` cost nothing. A new key builds the -provider of the next turn; a running turn keeps the one it began with. The -engine reads no credential from its environment: no provider spec names an -environment variable. - -The secrets of the MCP servers a Dot declares (section 7) travel the same -way: stored encrypted under the Dot's scope as `mcp//`, set and -cleared write-only (section 9.6), pushed in the same `POST /secrets` as the key -(`mcp_secrets`, by server and name, only those the config names), held in -memory by `McpSecrets` (`nanobot/dots/secrets.py`) and masked in the -conversation files. Unlike the key, a secret leaves the engine for the server -that names it, because that is what it is for, as in every MCP host: a -command's secret is an environment variable of its process, which the relay -receives in its own environment (only its name is on the relay's command line, -`--env-from`), and a URL's is a header of its requests. Its value is printable -ASCII, a space allowed (`Bearer `): one rule, `MCP_SECRET_PATTERN` and -`MCP_SECRET_RULE` in `packages/shared`, applied by the host where it enters and -by the engine on `POST /secrets`. A config that no longer names a secret (its -server removed, its name dropped) deletes its value in the same transaction, so -none is kept that nothing uses. - -A secret also never travels in an error: a failed push of the key is reported -by route, status and code only (`the guest did not take the OpenRouter key -(status 502, ...)`), never with the text the guest or a proxy answered, which -could echo the key into a Dot's error, the log or the event log. - -## 5. Host to guest protocol - -### 5.1 Transport - -HTTP/1.1 over TCP. `dot-agentd` listens on port 1024 inside the guest, and -QEMU forwards `127.0.0.1:` on the host to it (section 3.5). Node -calls `http.request({ host: "127.0.0.1", port })`, the same on every host. -Every request carries -`Authorization: Bearer `; `dot-agentd` answers 401 to anything else. -Connections go host to guest only: the guest never connects to the host. Events -flow back over a stream the host opens (5.3). - -A port is not a credential (section 3.5), so the host does not send the token -to whatever listens on one: after a host restart or a QEMU that died, another -local process can listen on a port the host still has on record. Before the -first request that carries the token, the guest client asks -`GET /v1/proof?nonce=<16 random bytes in hex>`, the one route without a token, -and requires `{ proof: HMAC-SHA256(token, "invisible-dots guest proof v1\n" + -nonce) }`, compared in constant time. A listener that cannot answer it never -sees the token, the key or the config; the call fails with -`guest_unproven`, which is not retried. - -### 5.2 dot-agentd routes (TCP port 1024, token required) - -| method and path | body / query | answer | -|---|---|---| -| `GET /v1/proof` | `?nonce=` (32 to 128 lowercase hex characters); no token | `{ proof }`, section 5.1 | -| `GET /v1/health` | | `{ agentd: "ok", agent: , uptime_s }` | -| `GET /v1/system` | | `{ hostname, uptime_s, cpus, mem_total_bytes, mem_available_bytes, disk_total_bytes, disk_free_bytes }` | -| `POST /v1/exec` | `{ command, cwd?, timeout_ms? }` | `{ exit_code, stdout, stderr, timed_out }` (bash -lc, output capped at 1 MiB each) | -| `GET /v1/files` | `?path=` | file bytes | -| `PUT /v1/files` | `?path=`, body = bytes | `204` | -| `GET /v1/files/list` | `?path=` | `{ entries: [{ name, type: "file"\|"dir"\|"other", size, mtime }] }` | -| `GET /v1/screenshot` | | `image/png` of display `:0` | -| `POST /v1/system/poweroff` | | `202 { status: "powering_off" }` after starting `/usr/bin/sudo -n /usr/bin/systemctl poweroff` detached (the seed lets `dotagentd`, the user the daemon runs as, run exactly that without a password, section 4.1); `500 poweroff_failed` when it cannot be started. How the control plane stops a VM (section 3.4) | -| `* /v1/agent/` | | reverse proxy to `unix:/run/invisible-dots-agent/agent.sock` at `/` | - -The three file routes are limited to home on the TCP port, the host's door: -the path is resolved with every symbolic link followed and a real location not -under home is a `403 outside_home`. On `agentd.sock` they take any path the -Dot's user may open. On both, the routes act as `dot` (section 4.1): the daemon -runs as `dotagentd`, which cannot open the Dot's files, and a file one of them -creates belongs to `dot`. So a path `dot` may not open, the Dot's token file -and the engine's state among them, is a `403 permission_denied` on both. - -The same routes, without `/v1/agent`, `/v1/proof` and `/v1/system/poweroff`, -are served on `agentd.sock` for the engine (no token: section 4.2 says who can -reach the socket), plus one route of that socket only: - -| method and path | body | answer | -|---|---|---| -| `POST /v1/proc` | `{ argv, cwd?, env?, tty?: { cols, rows } }`, with `Connection: Upgrade`, `Upgrade: dots-proc/1` | `101 Switching Protocols`, then frames both ways (one type byte, a big-endian uint32 length, the payload): from the caller `i` input, `e` end of input (^D on a terminal), `r` size (uint16 cols, uint16 rows), `s` a signal number for the process group; from dot-agentd `o` output, `E` error output (none on a terminal), and last `x`, the JSON `{ exit_code, signal? }`. `426` without the upgrade, `400` for an empty program or a bad cwd | - -It runs the program as `dot` (the daemon changes to that user for the program; -section 4.1), without a shell, in its own process group, on a pseudo-terminal -when asked (a new session whose controlling terminal it is, and which `dot` -owns). The program's environment is the daemon's with `HOME`, `USER`, `LOGNAME` -and `SHELL` of `dot`'s account, plus `DISPLAY` and the request's `env`. -The process lives exactly as long as the connection: a caller that goes away -takes the whole group with it. Its client is `dot-agentd relay [--socket P] -[--cwd DIR] [--tty] [--env NAME=VALUE]... [--env-from NAME]... -- PROGRAM -[ARGS...]`, which copies its own standard input and output through and exits with the program's code -(128 plus the signal number when a signal ended it); with `--tty` and a -terminal on its input it puts that terminal in raw mode and forwards its size -changes. The engine runs the model's every command through it, and reads and -writes the model's files through the `/v1/files` routes of the same socket -(section 8.8). Sleep, stop and reboot are the control plane's decisions, -and the agent's socket offers no poweroff. Nor can the model power its computer -off through sudo: `dot` has no sudo rule (section 4.1), and cannot read the -token in `/etc/invisible-dots/config.json` either. A Dot owns its computer, not -the daemon that serves it. What the control plane guarantees is the outcome: a -VM that stops without being asked is recorded as STOPPED, and started again -when its Dot has work (section 9.5). -Paths in file routes are resolved against `/home/dot` when relative. - -A command of `POST /v1/exec` runs in its own process group, and dot-agentd -kills the whole group when the command reaches its timeout and when the -request that started it goes away: a cancelled call, a tool cut at the stop -grace and an agent that died all take their command with them. A command that -runs through a relay (the engine's) is held the same way: the relay is a child -of the engine that lives as long as the remote command, and ending it ends the -remote process group. Only what the -command detached into another session outlives it. - -### 5.3 Agent routes (the Dot's engine, reached as `/v1/agent/...`) - -| method and path | body | answer | -|---|---|---| -| `GET /health` | | `{ status: "ok"\|"starting", state: AgentState, openrouter_configured: bool, browser: { identities: n, open: n }, checks }`; `identities` is the number of rows and `open` the number of identities with a live browser | -| `POST /secrets` | `{ openrouter_api_key, mcp_secrets }`; `mcp_secrets` is `{ : { : value } }`, the secrets of the config's MCP servers that are set | `204`; `400 invalid_secret` holds neither, and never says a value | -| `PUT /config` | `DotRuntimeConfig` (section 7) | `204`, validated, persisted in the engine's database (`dots_kv`) and projected onto the engine's settings in process (section 8.8); a config that does not validate is `400 invalid_config` | -| `POST /events` | `InboundEvent` | `202 { accepted: true }` | -| `GET /events/stream` | `?after=` | `text/event-stream`, one SSE message per outbound event, `id: ` | -| `GET /state` | | `{ state, current_task_id, pending_approval }`; `pending_approval` is the id of the oldest approval the engine waits on, or `null` | -| `GET /browser-identities` | | `{ identities: BrowserIdentity[] }`, oldest first; an identity says `hasProxy` and nothing of its proxy, which is a secret | -| `POST /browser-identities` | `{ name, proxy? }`; `proxy` is an explicit option: absent, `null` or blank means none, the normal case | `201 BrowserIdentity`; `400 invalid` (a name that is empty or too long, or a proxy that is not a string; a proxy that is a string is kept as written and judged by invisible-playwright-mcp when the identity launches), `409 limit` (the 20 identities the engine keeps at most) | -| `GET /browser-identities/:id` | | `BrowserIdentity`; `404 not_found` | -| `DELETE /browser-identities/:id` | | `204` after the identity's browser is closed and its directory removed; `404 not_found` | -| `GET /browser-identities/:id/frame` | | `200 image/jpeg` (`Cache-Control: no-store`), one frame of the identity's window, taken with the server's `browser_watch`; `404 not_found`; `409 not_open` when the identity is closed; `503 busy` when a call of the Dot held the identity for longer than 5 seconds; `502 frame_failed` (the server has no page to show, or sent a frame that is not a JPEG: the engine is the one owner of that rule, the host passes the bytes on as `image/jpeg`) or `crashed` | -| `POST /browser-identities/:id/close` | | `204` after the identity's browser is closed through `browser_close` and its server has ended; the profile stays. Closing a closed identity is a `204` too; `404 not_found` | -| `GET /tools` | | `{ tools: [{ name, permission, offered, description }], mcp_servers: [{ name, state, error, tools }] }`: the engine's tool table (section 8.8) in its order, then the tools of the declared MCP servers that are connected (permission `mcp.`); `offered` is whether the model is offered the tool now (its permission is not `deny`, and a tool that creates or deletes a browser identity needs the Dot to manage its identities; before the first config, none); `description` is the one in the tool's schema. `mcp_servers` is every declared server by name, `state` `connecting`, `connected` or `failed`, `error` why it failed (section 8.3) | -| `GET /skills` | | `{ skills: [{ name, description, source, path, content }] }`: the Dot's skills (section 8.6) by name, the built-in ones and its own (`source` is `builtin` or `dot`), each with the whole of its SKILL.md | -| `POST /prepare-sleep` | | `204` after the state is flushed and browser sessions are closed; the agent then starts no new work. A model request in flight is abandoned; a tool in flight gets up to 20 seconds to finish and record its result, then is aborted (section 8.7). A `POST /secrets` (the READY procedure of a VM whose stop failed, so no shutdown followed) lifts that, and so does a new inbound event | - -The identity routes and the model's identity tools are one code path, the -`BrowserManager` (section 6), so its limits hold for both. A route answers an -error as `{ error: , message }` with the status of its code: `invalid` -400, `not_found` 404, `limit` and `not_open` 409, `busy` 503, `crashed` and -`frame_failed` 502. The engine has no route that launches an -identity: only the model's tools open a browser, so `browser.identity.launch` -alone decides whether one starts, and `launch_failed` is an answer of those tools, -never of a route. The host may look at an open identity (the -frame) and close it (or delete it); these are the owner's actions, not the Dot's, so -no permission of the Dot applies to them. A frame is no use of the identity: it does -not move it in the least-recently-used order, does not touch `last_used_at`, -and never reopens a browser the server lost (that is `not_open`, and the identity is closed, as for a call that finds it out); it waits for -the call in flight on the identity at most 5 seconds, so a page that asks for a -frame every two seconds cannot hold a browser open or starve the model. - -Outbound events are written to an outbox table in the Dot's database before -they are streamed, with a monotonically increasing `seq`. The host stores the -last `seq` it saved per Dot and reconnects with `?after=`. Nothing is lost when -the control plane restarts or the VM sleeps. - -The engine serves these routes from `nanobot/dots/server.py` (aiohttp), on the -unix socket `INVISIBLE_DOTS_AGENT_SOCKET` names (mode 0660; a socket file left -by a crash is removed first), and binds no TCP listener. Its outbox is the -`dots_outbox` table of `engine.sqlite` (section 8.8). Every outbox row is -written by this one process through `DotStore.write`, which wakes the open -streams after the transaction commits, so the stream replays from the table -after `?after=` (or `Last-Event-ID`) and then sends each row once as it -commits, with a keep-alive comment every 15 seconds; there is no poll. - -### 5.4 Event shapes - -```ts -// guest to host, persisted in the guest outbox -interface OutboundEvent { seq: number; id: string; type: OutboundEventType; ts: string; data: object } -// host to guest -interface InboundEvent { id: string; type: InboundEventType; ts: string; data: object } -``` - -Inbound types: `user.message {text}`, `task.created {task_id, description, -priority}`, `approval.received {approval_id, decision: "approve"|"reject", -note?}`, `system.event {name, data}`. A task cancelled after its -`task.created` may have reached the guest is cancelled there with -`system.event { name: "task.cancelled", data: { task_id } }`. The guest keeps -the id of every inbound event it accepted and ignores one it already has, so -the host may send an event again whenever the outcome of a send is unknown -(section 9.2). An inbound event is recorded and applied in one transaction -(a `user.message` is applied when its chat turn is answered): an event the -guest has accepted is never lost to a restart, and one whose transaction -failed was not accepted, so its redelivery is. - -Outbound types: `agent.started {}` (the first event of every start of the -agent process, section 4.3), `agent.state {state}`, `message.assistant {text, -in_reply_to?, spent_usd?}`, `task.started {task_id}`, `task.progress {task_id, -text, spent_usd?}`, `task.completed {task_id, summary, spent_usd?}`, -`task.failed {task_id, error, spent_usd?}`, -`approval.requested {approval_id, task_id?, tool, permission, arguments, -reason}`, `tool.called {task_id?, tool, permission, decision, ok, -duration_ms, target?, tty?, interrupted?}`, `browser.identity.created|deleted|launched|closed -{identity_id, name}`, `automation.next_run {next_run_at_ms}`, -`memory.updated {conversations, changed, spent_usd?}`, `mcp.server.added {arguments}`. -`interrupted: true` marks a call -the engine stopped during: its outcome is unknown and it was not run again, so -`ok` is false and `duration_ms` is 0. `tty: true` marks a call that started a -terminal session (`exec` with `tty`, section 8.3), which is not what its target -says (the command): a client shows "Started a terminal session: python3". It is -absent for every other call, and the permission table -(`TOOL_PERMISSIONS[...].starts_terminal`) is where a tool says it can. - -`task.progress {task_id, text}` is the model saying what it is about to do: the -text an assistant message of a running task carries beside its tool calls (the -message is not the final answer). It is sent once per such message, in the -transaction that stores the message, so a restart neither loses nor repeats it -and it comes before the `tool.called` of those calls. The text is trimmed and -cut at 2000 characters, the last one an ellipsis. A message with no text beside -its calls sends nothing, and neither does the chat: the answer of a chat turn -is its `message.assistant`, and the final answer of a task is its -`task.completed`. - -`tool.called.target` is what the call acted on, in one line of at most 160 -characters (`TOOL_TARGET_MAX`, in code points as the host's schema counts them; -it refuses a longer, empty or multi-line one), so a client can say "ran `make test`" and not only "exec ok". -It is a name or a place, never content. The permission table -(`nanobot/dots/permissions.py`) gives each tool a function that states what of -its arguments may be shown: `exec` the first line of the command, as it is; -`read_file`, `list_dir`, `write_file` and `edit_file` the path; `find_files` the -query, else the glob, else the path; `grep` the pattern; `apply_patch` the path, -or `N files, first `; `cron` the action and the name or job id (`add daily-standup`); -`exec_session` `input to `, `terminate ` or `output of `, and never -the input; `list_exec_sessions` nothing. The engine computes it when the call -starts and keeps it with the call's intent, so a call cut by a stop is reported -with what it was doing. A call that never started has no intent and no target: -a denied call, a call to a tool that is not offered, one whose arguments did not -fit. The key is then absent, as it is for a tool with nothing to name. - -`spent_usd` on `message.assistant`, `task.progress`, `task.completed`, -`task.failed` and `memory.updated` is the model spend of the session the event belongs to, in USD, -read from the same ledger the cost cap uses (section 8.2) in the transaction -that stores the event, to the hundred-millionth of a USD. On a task's events it -is the spend of the task so far (it only grows, and survives a restart, an -approval and a resume); on the chat's `message.assistant` it is what the chat -spent since its last answer, because the answer takes the chat's spend with it -(a chat that parked a call for approval reports the spend before and after the -approval in the one answer it gives); on `memory.updated` it is what the memory -passes spent since the last one, a pass that failed included (section 8.6). The -engine always sends it (0 when nothing was spent); the schema makes it optional -so events logged before it existed stay valid. The host reads it as the -guest's report: it is never used to enforce anything (the cap is the guest's). - -`mcp.server.added {arguments}` is a call of `add_mcp_server` that ran (section 8.3): the Dot adds an MCP server to its -own config, and `arguments` are the call's, as the model made it. The config is the host's, so the host decides -again: it writes the server only when the entry passes the config's own schema under a name not yet declared, and -the Dot's config allows `mcp.servers.add` or the person approved a call of exactly these arguments (an approval of the -Dot with that tool, its arguments equal as JSON values, keys in any order). That approval is used up in the same -transaction (`approvals.used_at`), so one approval adds one server once: a server the person removes is not brought -back by the call that added it. It writes the server in the transaction that stores the event, with `dot.updated -{name, mcp_server_added, approval_id?}`, and pushes the config; otherwise it logs `mcp.server.refused {name, reason}` -(a call refused for its entry or its name keeps its approval). The server's own permission is left to its default, ask. - -`memory.updated {conversations, changed}` ends a memory pass (section 8.6): the -Dot had been quiet for a while, and the summary model rewrote its `MEMORY.md` -from what was said since the last pass. `conversations` is how many -conversation files it took messages from, `changed` whether `MEMORY.md` is different. A pass -that found nothing new sends nothing, and one that failed sends nothing either: -its spend goes with the next `memory.updated`. - -`automation.next_run {next_run_at_ms}` is when the earliest enabled automation of -the Dot is next due, in milliseconds since the epoch, or `null` when none is (no -job, every job paused, or only one-time jobs that already ran). The engine sends -it each time that value changes, so the last one the host has is the true one: when -the cron service arms its timer, which it does after every change of the jobs (the -`cron` tool) and after every tick, the engine compares -the value with the one it last reported, kept in its database in the transaction -that writes the event, and writes the event only when they differ. A restart -therefore does not say it again, a computer that never had a job has said nothing -(the host takes that as `null`), and a time already past is reported as it is: it -is a run the engine has not made yet, which it makes when it starts (section 8.8). -The host keeps the value in `computers.next_automation_at` and uses it to wake a -stopped computer shortly before the run and to not put one to sleep that is about -to need it (section 9.5). - -The `arguments` of `approval.requested` are what the person decides on, and -they leave the guest: a tool argument that carries a secret is redacted there -by the engine, at the point where the event is built, and nowhere after it: the -host, the web UI and a chat prompt (section 9.8) show the arguments as the event -has them. The engine masks the proxy of `browser_identity_create` (shown as `***`: a -proxy is a secret, and neither its user, its password nor its host is shown), and -removes the user and password of the URL of -`browser_navigate` (the query and the fragment stay: see section 6). The pending -call in the Dot's database keeps the full arguments, so the approved call is made -as asked. - -An outbound event is handed to the event stream only after the transaction -that wrote it to the outbox committed: one written inside a transaction that -rolls back is never streamed, so its `seq` cannot reach the host and then be -reused for another event. - -The control plane adds its own: `dot.created`, `dot.updated` (a saved config, -`{name}`, or a Dot that went to ERROR, `{name, status: "ERROR", error}`, which -the Activity page tells apart), `dot.deleted`, -`computer.state {state}`, `computer.started`, `computer.stopped`, -`task.created`, `task.cancelled`, `task.failed {task_id, error}` (the guest's -type: the host writes it when it gives a task up because its `task.created` could not -be delivered, section 9.2, so a client follows one type whoever ended the task), `approval.resolved {approval_id, decision, -task_id?, note?, always?}` (`task_id` is the task the approval was asked in, so -the events of a task hold the answer beside the request), and the two of a messaging -channel: `channel.status {kind, status, detail?}` (`kind` is `telegram` or -`whatsapp`; `status` is `connecting`, `connected`, `needs_relink` or `error`, -and `detail` never holds a credential), `channel.peer.paired {kind, peer_id, -label}` and `channel.changed {kind, change}` (`change` is `paused`, `resumed` -or `removed`: what the person did, which no status says, so that every view of -the channel follows it). A channel lives in the control plane only: the Dot never sees one, so -no inbound or outbound type names it. - -The last of them is `guest.event.refused {seq, type, problem}`. The host parses -every message of the guest's event stream with the schemas of `packages/shared` -and drops one it refuses (it is not an event the host knows, so it is not -stored as one), because one malformed message must not stall the stream. The -drop is not silent: the host writes this event, in order with the guest's, with -the `seq` and `type` the message carried when it was JSON that carried them -(null otherwise) and the problem in words (at most 300 characters, never a -credential: a schema message names a path and a rule), and moves the cursor -past the `seq` in the same transaction, so a reconnect does not record it -again. The Activity page shows it as "The computer sent an event that was not -read". The two sides cannot drift unseen: `tests/dots/test_wire_shapes.py` -writes one event of every type the engine writes, with each set of optional -keys, into `wire_shapes.json`, and `apps/scheduler/test/engine-shapes.test.ts` -requires that each parses back unchanged (the schemas strip an unknown key); -`apps/scheduler/test/host-shapes.test.ts` writes the events and the config the -host sends into `host_wire_shapes.json`, which the engine's own parsers must -accept with every key. - -The message a person sends is logged as a `user.message` host event -`{message_id, text, origin?}`. `origin` is `{channel, binding_id, chat_id, -external_id}` for a message that came through a channel and is absent for the -web, the CLI and the SDK. The event log is the one place that says where a -message came from, and a reply is routed back by it; the guest receives the -event with `{text}` only. Only code inside the control plane can set an origin -(`Scheduler.sendMessage`): `POST /api/dots/:id/messages` takes `{text}` and -ignores anything else. - -## 6. Browser identities - -- Where a browser exits to the internet. An identity has no proxy of its own - unless the person gave it one: that is the default everywhere (the API, the - SDK, the CLI and the engine accept a create with a name only, and nothing - asks for or fills in a proxy). The browser then inherits the egress of the - Dot's VM: through the VM proxy when the Dot has one, directly otherwise. The - VM proxy is a per-Dot secret (`vm_proxy` in `secrets`, set by - `PUT /api/dots/:id/proxy` or `invisible-dots secret proxy`), a - `socks5://[user:password@]host:port` URL that goes into the seed's root-only - `config.json` at every start; the runtime's `install.sh` then routes the whole - VM through `hev-socks5-tunnel` (TCP, UDP and DNS over `tun0`) and an - nftables table drops every other way out, so nothing leaves when the proxy is - down. Nothing tracks or compares the exit. Its time zone, locale and - geography follow the exit the browser actually uses, which the browser layer - learns from the address-echo services at each launch. A per-identity proxy - stays an explicit option for one identity. It is one optional string, stored as - a secret and handed to `invisible-playwright-mcp` unchanged, in the setting the - library reads (`STEALTHFOX_PROXY`): the library owns what a proxy is (its - schemes, its host and port, the errors it raises for one it cannot use, at the - launch), and invisible_dots has no rule, parser or display form of its own for - it. What is invisible_dots's own is that the secret is shown nowhere (below); - when both a VM proxy and an identity proxy are set, the - identity's proxy is reached through the VM's tunnel, so the exit is the - identity proxy's. An identity proxy is not the way to give a browser a - location: a Dot that should appear somewhere gets that from its VM's egress. -- An identity is a row of the engine's `dots_browser_identities` table (id, - name, proxy, created, last used) and a directory under - `/home/dot/browsers//`. Its id is a slug of its name plus a short - random suffix. The guest's database is the only record of which identities - exist; the host never mirrors the list, it asks the guest. Whether an - identity is open is never stored: it is derived from the live browser - sessions of the running engine, so a file never claims an open browser for a - process that is gone. An identity's proxy, when it has one, is stored as given, password included, in - the engine's database (`dotengine`'s state directory, 0700, which the model - cannot read); nothing of it is shown to a model, a person, an event or a log: - an identity says only that it has a proxy (`hasProxy`). The browser's own process is the one exception, by - decision: it runs as `dot` with the proxy in its environment, so the `dot` - user, and the model through `exec`, can read the proxy of an identity whose - browser is open from that process's `/proc//environ`. The server's - session file is the second copy on disk, again by the server's own design - (it saves who its browser is, the proxy included, in - `/var/lib/invisible-dots/mcp//sessions/.json`, as - `dot`, after every `browser_open`): the model's `exec` can read it, but it is - outside `/home/dot`, so the host's file routes (the API, the SDK, the Files - tab) can never serve it; deleting the identity removes it. That the server - keeps the whole proxy at rest is a defect of the library (its `Work.remember()` saves it; its own - identity file keeps only a digest), which this repository does not patch: the fix belongs upstream, - and the browser smoke checks that no file of `/home/dot` (the profile, a cache, a log) holds the - password and that the port refuses the session file. The proxy is never - on a command line, which every user of the VM can read: the engine tells the - relay the variable's name (`--env-from`) and the relay reads the value from - its own environment, which only `dotengine` can read. -- The fingerprint seed of an identity is stored by the browser layer in the - profile itself (`profile/.stealth-identity.json`). invisible_dots never stores - or passes a seed: the first launch of a profile picks one and every later - launch of the same profile gets the same one back. -- Launching an identity starts one `invisible-playwright-mcp` process over - stdio. Its environment is the allowlist of section 4.1 plus, through the MCP - server's documented settings: its home (`INVISIBLE_MCP_HOME=/var/lib/invisible-dots/mcp/`) - and session id (`INVISIBLE_MCP_SESSION_ID=`), the identity's - profile directory (`/profile`), headed mode, `DISPLAY=:0`, and the - identity's proxy only when it has one (otherwise no proxy variable is set at - all), and one setting of the libraries it - uses: `INVISIBLE_CORE_AUTOFIX=off`, which stops `invisible_core` from - reinstalling itself from the package index at a launch when its version - drifts, so a drift fails loudly instead of installing files outside the - hashed lock. The names of the browser layer's own - settings are written in one place, `packages/shared/src/protocol.ts` - (`ENV.PROFILE_DIR`, `ENV.HEADLESS`, `ENV.PROXY`, - `ENV.CORE_AUTOFIX`). The browser therefore runs - on the Dot's desktop and shows up in its screenshots. -- A launch also connects out, which no setting here turns off: to the - address-echo services of the library (`api.ipify.org`, `icanhazip.com`, - `checkip.amazonaws.com`, from the VM's egress, or through the identity's proxy - when it has one) to learn the exit address for the timezone and locale; to the library's launch counter - (a download of a file of `feder-cr/firefox_antidetect_patch`'s releases, - switched off only by a preference the MCP server gives no way to pass); and - it probes the exit's capabilities and caches the answer in - `/tmp/exit_capability.json`; and it keeps its GeoIP database current from - its GitHub release. -- The model never calls `browser_open`: the browser manager opens and closes - each identity's browser, and starts its server with - `INVISIBLE_MCP_HOST_MANAGED=1`, under which the server serves its `main` - browser alone (no tool takes `browser`) and its instructions are the page - rules, without `browser_open` and the `support` browser. The model's page - tools are that server's own (section 8.3), each with the `identity_id` that - picks the open identity's server. The manager opens the browser with - no `profile`, `proxy` or `seed` argument, so for a first launch the - environment above is the only source of those values. A later `browser_open` - with no argument is a reopen, and the library then takes who the browser is - from its session file (`/var/lib/invisible-dots/mcp//sessions/.json`: seed, proxy and - profile directory, written at the first open) and does not read - `STEALTHFOX_PROXY` or `STEALTHFOX_PROFILE_DIR` again: the file wins. An - identity's proxy never changes after it is created (there is no route that - edits it), so the two agree, but a proxy edited in the engine's database would - not reach a browser whose session file already exists. -- At most 3 identities are open at once (roughly 0.8 GB of memory each). - Launching one more closes the least recently used. At most 20 exist. Both are - the engine's own (`DEFAULT_MAX_OPEN` and `DEFAULT_MAX_IDENTITIES` in - `nanobot/dots/main.py`), not settings: the Dot manages its identities itself. -- Launching is explicit. A browser action on an identity that is not open does - not launch it: it fails with "identity is not open; call - browser_identity_launch first". Each permission therefore decides only its own - action, and `browser.identity.launch: deny` cannot be got round by navigating. - The first launch of a machine can take minutes while the engine downloads the - browser; the launch asks again (2 s doubling to 30 s) for up to 15 minutes. - A launch waits only for its own browser: a config change, a close, a delete or - a create of another identity does not wait for it, and neither does the - answer of `PUT /config`, which closes the browsers beyond a lower `max_open` - (least recently used first) after it has answered. A close, a delete or a - launch of an identity that is still opening waits for that launch to finish. -- Closing a session asks the browser to close first (up to 30 s, so Firefox - flushes its profile), then stops the process; the profile stays on disk. - Deleting an identity closes it and removes its directory. The engine closes - every open browser on prepare-sleep and on SIGTERM. -- The only browser of a Dot is `invisible-playwright-mcp`: no tool of the - engine browses any other way, and the engine and the image carry no other - browser, browser library, or web fetch or search tool. -- Screenshots. `browser_take_screenshot` (and `browser_click_at`, which answers - with the page after the click) and `computer_screenshot` return an image - the model looks at. The transcript, the outbox and the events never hold its - bytes: the tool's stored result is its text and `[screenshot, 1280x720, not - stored]`, and the engine adds the newest three images of a turn to each model - request in one user message after the last tool message. A later turn - replays the placeholder; the model takes another screenshot when it wants one. -- Secrets in the arguments. The proxy has no place in anything shown: - `approval.requested` carries `browser_identity_create`'s proxy as `***` and `browser_navigate`'s URL without its user and password - (the parked call keeps the real ones, so the approved call runs as asked), and - no `target` of `tool.called` holds typed text. The query of a URL is not - masked (owner decision): a - query string is how a model that was talked into it sends data out, so it is - what the approver has to see, as with the command of `exec`; a person who does - not want it in a chat turns `show_arguments` off. The `text` of - `browser_type` and the `value` of `browser_select_option` stay in the arguments - of an approval when `browser.act` is set to `ask`: whether a field is a - password cannot be known from the arguments, so a person approving typing sees - what is typed. That includes a chat that carries approvals (section 9.8, not - end-to-end encrypted): a person who does not want typed text there turns - `show_arguments` off for the channel. - -## 7. Dot configuration - -YAML in, validated by one schema in `packages/shared` (zod): - -```yaml -name: fare-watch # [a-z0-9-], 1..40 -instructions: > # optional: how it should work, in its system prompt - Write findings to ~/workspace/fares.csv. -model: - provider: openrouter # the only accepted value - id: z-ai/glm-5.3-flash # any OpenRouter model id -models: # optional per-role models, OpenRouter ids; the roles: summary - summary: openai/gpt-5-mini # writes the summary when the thread outgrows the model's window (section 8.6) -computer: - cpu: 2 # 1..16 - memory: 4gb # 2gb..64gb - disk: 40gb # 20gb..1024gb - idle_timeout: 15m # sleep after this long with nothing to do; 0 = never -permissions: # allow | ask | deny, keyed by permission name - computer.exec: allow - browser.identity.delete: ask -limits: - max_steps_per_task: 60 # model turns before a task is failed - max_cost_per_task_usd: 1.00 # USD of model spend of a task or a chat turn, 0.01..100; the last request may exceed it (section 8.2) -mcp_servers: # optional: MCP servers whose tools the Dot may use, by name - time: # [a-z0-9-], 1..32, starting with a letter or a digit - command: uvx # run on the Dot's computer, as dot, in its home - args: [mcp-server-time] - env: {LOG_LEVEL: warning} # optional: environment written here - secrets: [TIME_API_KEY] # optional: environment variables whose values are secrets (section 9.6) - timeout_s: 120 # optional: the longest one call may take, 1..600 - startup_timeout_s: 60 # optional: the longest it may take to start, 1..600 - search: - url: https://search.example/mcp # streamable HTTP, or SSE for a URL ending in /sse - headers: {X-Client: dots} # optional - secrets: [Authorization] # optional: headers whose values are secrets -``` - -A Dot has no goal: what it is for is what its person asks of it, in the chat, in a task or in its -instructions. Nor does it have browser settings: it manages its identities itself, within the -engine's limits (section 6). Nor does it set any token limit: every request uses its model's own -context window and longest answer, as OpenRouter publishes them (section 8.5). A config saved with -any of these before (migrations `0010_dot_has_no_goal.sql`, `0011_dot_has_no_browser_settings.sql` -and `0012_dot_has_no_context_tokens.sql` take them out) is refused as an unknown key. - -The ranges and defaults of the numbers in that file (`computer.cpu`, `memory`, -`disk`, the default `idle_timeout`, `limits.max_cost_per_task_usd` and -`limits.max_steps_per_task`) are `CONFIG_BOUNDS` in -`packages/shared`. The schema takes its numbers from it and -so does the web client's form, so a slider can never offer what the API refuses. - -`models` has one role, `summary`, and no other: the roles are what the engine -asks a model for, and a role it never asks for would be a setting that does -nothing, so a config that names another is refused as `unknown model role -"fast" (the roles are: summary)` (`MODEL_ROLES` in `packages/shared`, copied -into the guest's `protocol.py`). The role's value is an OpenRouter model id -like `model.id`; without it the Dot's own model writes the summary. A config -push that changes it applies from the next turn. - -The permission names are the ones of `PERMISSIONS` in -`packages/shared/src/tools.ts`: those the tools of section 8.3 exercise, and no -others (a Dot has no tool for web reading or search, sub-agents or messaging, -and its notes are files written with `files.write`). A config that names any -other permission is refused as unknown. `PERMISSION_INFO` in the same file gives -each one the label, description and risk (`low`, `medium`, `high`) a person is -shown when they decide on it. - -Defaults for permissions not listed: everything under `computer.*`, -`files.*`, `browser.*` and `memory.*` is `allow`, except -`browser.identity.delete`, which is `ask`; `automations` is `ask`. Any -permission name the registry does not know is `deny`. - -`DotRuntimeConfig` (what `PUT /config` sends to the guest) is the same object -minus `computer`, with `permissions` resolved by the host: one decision for -every permission the registry knows, defaults applied. The guest applies the -map as it is and denies a permission missing from it, so the defaults live in -one place (`resolvePermission` in `packages/shared`). - -`mcp_servers` are the MCP servers the Dot may use, declared the way -Claude Code (`.mcp.json`), Codex (`[mcp_servers]`) and nanobot declare them: a -`command` with its `args` and `env`, or a `url` with its `headers`. The person -declares one in the settings or the YAML, and the Dot can add one itself, as -NanoClaw's agents can (`add_mcp_server`, section 8.3), once it has installed the -program the server needs (section 4.2): its permission, `mcp.servers.add`, asks -by default, the person reads the whole entry on the approval, and the host checks -that approval again before it writes the server (section 5.4). A stdio server -runs as `dot`, with what `computer.exec` already gives the Dot, so adding one -gives the Dot no new power over its computer: what it adds are tools, and each -asks under the server's own permission until the person allows it. Only the -person changes or removes a server. A server's name is the prefix of its tools -as the model sees them, `mcp__` (nanobot's naming), so it holds no -`_` and the engine reads the server back from a tool's name. `secrets` names the -environment variables (of a command) or headers (of a URL) whose values are -secrets: they are set apart from the config, write-only (section 9.6), never in -it, so the config can be shown, exported and edited as YAML. A secret named twice, -or named as a value the entry also writes, is refused. - -Each declared server has a permission, `mcp.`, that covers all of its -tools: what a server's tool does is that server's to say, which the host cannot -know, so a server is one decision, as it is in Claude Code's permission rules -(`mcp__`), and it asks by default. Its risk is `high`, as running -commands is. A permission of a server the config does not declare is refused, -and `resolvePermission` denies it. `MCP_SERVER_NAME_PATTERN` and -`MCP_TIMEOUT_BOUNDS` and `MCP_STARTUP_TIMEOUT_BOUNDS` (Codex's `tool_timeout_sec` and -`startup_timeout_sec`) are in `packages/shared`; the guest's `protocol.py` keeps a -copy of the name rule. The servers are listed by name everywhere (the status, -the prompt, the settings): the database keeps a config as `jsonb`, which does -not keep the order of an object's keys. - -## 8. Agent runtime - -Sections 8.1 to 8.7 are the contract of a Dot's runtime. Section 8.8 is the -engine that keeps it (`invisible_engine_dots/`), how it keeps it, and what it -does not do yet. - -### 8.1 States - -`IDLE -> THINKING -> EXECUTING -> (THINKING | WAITING_APPROVAL) -> DONE -> IDLE` - -`DONE` follows a failed unit as well as a completed one. `THINKING` is a model -request in flight; `EXECUTING` is a tool running. Every transition is an -`agent.state` event. The protocol also names `PLANNING` (the model's answer -being turned into tool calls); the engine has no such step and never reports it. - -### 8.2 Work - -The runtime is event driven. Work arrives as `user.message` (a chat turn in -the Dot's single persistent conversation), as `task.created` (queued locally, -run one at a time in priority order, then creation order) or as the firing of -one of the Dot's own automations (section 8.8, answered in the chat). A task -ends when the model answers without tool calls (`task.completed`, the answer is -the summary), or when an approval is rejected and the model gives up. It fails -(`task.failed`, with a reason the owner can read) when it exceeds -`max_steps_per_task`; when a model request fails for good after the retries of -section 8.5, or the run ends without an answer; or after being interrupted -three times (section 8.7). A chat turn has the same limits; a failed chat turn -answers "I could not answer: ...". - -`limits.max_cost_per_task_usd` caps the model spend of a task, or of the chat -between one answer and the next. The events that end work carry the spend (section 5.4). The cost of a request is what OpenRouter reports for it in the usage -of the last chunk of its response (`usage.cost`, USD; for a BYOK request the -upstream cost it reports beside it is added, which may count more than was -charged and never less). The engine adds the cost of every response of a turn, -the requests of the turn, their retries and the summary requests alike, to the -spend of its session in the Dot's database as each arrives, and checks the -spend before every model request: when it has reached the cap the turn stops -without asking again, and fails with `stopped: the task reached -limits.max_cost_per_task_usd (spent 1.0423 USD of 1.00)` (`task.failed`'s -`error`; "the turn" instead of "the task" for the chat, which then answers "I -could not answer: ..."). A request cannot be priced before it is answered, so -the cap may be exceeded by the last request, and an answer that crosses it is -delivered and the task completes: the cap only stops the work from going on. A -request that failed has no cost and counts for nothing: OpenRouter reports the cost in the last chunk of a -stream, so a stream that stalled or was cut after tokens were streamed (and billed) has no figure to count, and -neither has an attempt the retries of section 8.5 went past (4 attempts a request). The cap can therefore be -exceeded by those partial streams, each at most the cost of one full response. A task's spend is kept -across a restart, an approval and a resume (a task that was cut by a crash goes -on from what it had spent); the chat's spend starts again with each answer it gives, so an approval or a -restart does not reset it. -A lowered cap applies from the next turn, like the step limit. A response that -reports no cost fails the turn, `stopped: OpenRouter reported -no cost for a request, so limits.max_cost_per_task_usd cannot be enforced`, -before anything is done on that response: its tool calls are not written and do -not run, or its answer is not delivered and the task does not complete (a -summary request is not acted on this way, so the failure comes at the next -check). The note is a column -of the same ledger row as the money (`dots_spend.unpriced`), so a restart does -not forget it: the cap never runs blind. A request abandoned by a sleep may have cost something -that was never reported; that gap is at most one request a sleep. - -### 8.3 Tools - -Function names use `_` because OpenAI-style function names cannot contain -dots. Each tool declares the permission it needs, in one table -(`nanobot/dots/permissions.py`) that offers the model its tools, decides every -call and reports the permission of each `tool.called`. A tool that is not in -the table is neither offered nor allowed. Every permission named below is one -of `PERMISSIONS` (section 7); a tool cannot take a permission the host's config -does not know. - -| tool | permission | what it does | -|---|---|---| -| `exec` | `computer.exec` | runs a command through `bash -lc` in a working directory with a timeout (60 s by default, 600 s at most); with `yield_time_ms` it returns while the command still runs, which makes it a background job; with `tty: true` it runs on a pseudo-terminal, as a background job that `exec_session` drives (no new tool, the same permission) | -| `exec_session` | `computer.exec` | sends input to, waits for, reads or terminates a background job (a terminal's output is the text of its screen, section 8.8) | -| `list_exec_sessions` | `computer.exec` | lists the background jobs | -| `read_file` | `files.read` | reads a text file, by line window; reports a binary file as binary | -| `list_dir` | `files.read` | lists a directory, optionally recursively | -| `find_files` | `files.read` | finds files by path terms, glob or type | -| `grep` | `files.read` | searches file contents by regular expression | -| `write_file` | `files.write` | writes a whole file | -| `edit_file` | `files.write` | replaces text in a file | -| `apply_patch` | `files.write` | applies a list of structured edits (replace or add) to files, with a dry run | -| `cron` | `automations` | adds, lists and removes the Dot's own scheduled automations | -| `computer_screenshot` | `computer.screenshot` | takes a screenshot of the Dot's whole desktop and shows it to the model (no arguments) | -| `browser_identity_list` | `browser.identity.list` | lists the browser identities with their status (open or available), whether each has a proxy of its own (and nothing of the proxy), and the two limits | -| `browser_identity_create` | `browser.identity.create` | makes an identity, closed: `name`, `proxy?` (an explicit option that the model leaves out unless the person gave one) | -| `browser_identity_delete` | `browser.identity.delete` | closes an identity and deletes it with its profile: `identity_id` | -| `browser_identity_launch` | `browser.identity.launch` | opens the browser of an identity, closing the least recently used one at `max_open`: `identity_id` | -| `browser_identity_close` | `browser.identity.close` | closes the browser of an identity, keeping its profile: `identity_id` | -| `browser_navigate` | `browser.navigate` | the server's; the engine refuses a URL that is not `http://` or `https://` before it reaches the server (`file:`, `about:`, `view-source:`, `data:` and `javascript:`), so the permission to navigate is not a permission to read files | -| `browser_snapshot` | `browser.read` | the server's: the page's interactive elements with their selectors and coordinates | -| `browser_read_text` | `browser.read` | the server's: the text of the page or of the element a selector names | -| `browser_read_html` | `browser.read` | the server's: the page's HTML, cleaned | -| `browser_take_screenshot` | `browser.read` | the server's: a screenshot of the page, shown to the model | -| `browser_evaluate` | `browser.read` | the server's: reads with a script, and refuses one that acts on the page | -| `browser_click` | `browser.act` | the server's: clicks the element a selector names | -| `browser_click_at` | `browser.act` | the server's: clicks a point and answers with the page after it | -| `browser_type` | `browser.act` | the server's: fills a field key by key, a long text going on in the background | -| `browser_press_key` | `browser.act` | the server's: presses a key or a shortcut | -| `browser_select_option` | `browser.act` | the server's: chooses an option by its label or its value | -| `browser_upload_files` | `browser.act` | the server's: attaches files of the dot user to a file field | -| `add_mcp_server` | `mcp.servers.add` | adds an MCP server to the Dot's own config: `name`, a `command` with `args` and `env` or a `url` with `headers`, the names of its `secrets`, and a `reason` for the person; the host checks the permission again and writes it (section 7) | - -The page tools are `invisible-playwright-mcp`'s, the only browser of a Dot, -offered as an MCP host offers a server's tools: the server's name, description -and input schema, plus the `identity_id` of the open identity whose server the -call goes to. The engine reads them, with the server's instructions, from the -server its Dot has, when it starts: `nanobot/dots/server_capture.py`, run as dot -by the python of the installed `invisible-playwright-mcp`, starts the server as -the engine starts it and prints what it answers (`nanobot/dots/server_interface.py`). -A Dot keeps the golden image it was made from and takes every new runtime disk, -so the engine never assumes a version of the server: it offers the tools the -server it finds serves. A page tool that server does not serve is not offered -(`GET /tools` says so), and a Dot whose server cannot be read offers no page -tool, and a launch says why. Which of the server's tools the model is -offered is the permission table's: `browser_open`, `browser_close`, -`browser_list` and `browser_status` are the manager's (the identity tools), and -`browser_watch` is the UI's frame. The server's instructions go into the -system prompt whenever a page tool is offered, as an MCP host carries a -server's instructions. A browser action on an identity that is not open does -not launch it, it says so (section 6). An image the server answers with is -shown to the model and not stored (section 6). - -The tools of the MCP servers the person declares (`mcp_servers`, section 7) -are not rows of the table: which they are is each server's to say, at run time. -`nanobot/dots/mcp_servers.py` keeps one nanobot `MCPProvider` per declared -server, on a registry of its own, as the browser has one per identity, so -spawning, `initialize`, `tools/list` and the per-call timeout (`timeout_s`) -are the client's. The client never reconnects a server and never repeats a -call: a server whose process exited or whose connection dropped is reported -(`on_terminated`), and the call that found out fails with its error, since the -server may have run it already. What is the Dot's: - -- where it runs. A `command` is started through `dot-agentd relay`, as the - user `dot`, in its home, like every program of the model: it reads and writes - what the Dot's commands can, and nothing of the engine's. Its `env` is passed - with `--env`, its secrets with `--env-from` (their names only, the values in - the relay's own environment), so no secret is on a command line. A `url` is - reached from the engine, its secrets as headers. -- when. A server is started when it is declared, and again when a config or a - secret changes its entry (that server only). The next turn waits for the - servers being started, each for at most its `startup_timeout_s` (60 s by - default: a first start through `uvx` or `npx` downloads the server). One that - failed (its program is not installed yet, it exited) is started again when the - next turn starts, so a server whose program the Dot installs works from the - next message. One that did not start in time, or whose secret is not set, is - not started again until its entry or its secrets change, so it never holds up - every turn. -- why it is not connected. The client says why a connection failed, and a - command's standard error is drained into a pipe of the engine, of which the - last 2000 characters are kept: the error a person and the model read is what - the server wrote (`npx: not found`, `the API key is missing`), with the - server's secrets masked. -- what the model gets. Each tool of a connected server, under the client's name - `mcp__`, is offered while the permission `mcp.` is - `allow` or `ask`, and the gate decides each call by it (section 8.4). The - system prompt has a section for those servers: each one's instructions (what - it said at `initialize`, cut at 2048 characters as Claude Code cuts them), or - why it is not connected and that it is started again at the next turn. An - image a tool answers with is shown to the model as the browser's are. A call - shows no target in `tool.called`, and an approval shows all its arguments. - -`GET /tools` lists those tools after the table's, each under its server's -permission, and every declared server with its state: `connecting`, -`connected` (with how many tools) or `failed` (with why). - -The tool calls of one response run one at a time, in the order the model -gave them. Only the response's `tool_calls` count: a call written in the -assistant's text runs nothing. The registry validates a call's arguments -before the policy sees it: an unknown tool or invalid arguments never reach -the gate and never run, and the model gets the error. A result comes back -whole: no tool has a fixed cap. A request that outgrows the model's window is -compacted first (old results cleared, then the history summarized, section -8.5); only if it still does not fit are the results of its latest round cut, -to what the window leaves (`ContextGovernor.fit_latest_round`), and the cut says -how many characters came through of how many and how to ask for less. A result -is stored cut only beyond what no compaction could make room for: the window -less the system prompt and the tool definitions. - -### 8.4 Policy - -Every tool call goes through the policy gate before it runs: a function of the -current config, and the only place that denies a tool the config does not -offer. `allow` runs it, `deny` returns an error result to the model, `ask` -emits `approval.requested`, moves to `WAITING_APPROVAL` and persists the -pending call, with its full arguments, in the Dot's database, keyed by the -call's id. A call that needs approval stops the round: later calls of the same -response are not run either, and the turn ends. `approval.received` is -recorded when it is accepted. With `approve` the model is told, in a turn of -its own, that the call was approved and has not run; it makes the same call -again and the gate lets that one call through, once. With `reject` the model -is told the call did not run, with the note if there is one. A decision is -recorded once: a second one for the same approval is ignored. An approved call -runs at most once. Section 8.8 says how the gate does this. - -### 8.5 OpenRouter - -`POST https://openrouter.ai/api/v1/chat/completions` with -`HTTP-Referer: https://github.com/feder-cr/invisible_dots` and `X-Title: invisible_dots` -(sent only when the base URL's host is `openrouter.ai`, so a stand-in used by -tests never receives them), the key from memory (section 4.3). Tool calling in -the OpenAI format, `tool_choice: "auto"`, every request streamed (with -`stream_options.include_usage`, so the final chunk carries the usage and the -cost, section 8.2). - -Every request uses the whole of what its model can do. The engine reads the -model's limits at the start of every turn from the providers OpenRouter lists -for it (`GET /models/{model}/endpoints`), not once: an engine runs for weeks and -OpenRouter changes a model's providers meanwhile. Of the providers serving it, -the widest window and the longest answer at that window are the model's, and -the model's requests go only to the providers of that window (`provider.only`, -by the slug OpenRouter lists for each): OpenRouter routes a request by the -answer it asks for but not by the prompt it carries, so one sized for the -widest window could otherwise land on a narrower provider and fail there. This -gives up the narrower providers as fallbacks; when none of the widest can -serve, OpenRouter refuses the request ("No allowed providers are available") -and the turn fails with those words. A model OpenRouter does not know fails the -turn in words; a router, which lists no provider, gets no limits and no route. Each request -sends the longest answer as `max_tokens`, or what the window leaves after the -prompt when that is less (OpenRouter refuses more, and without a `max_tokens` -each provider applies a default of its own), so no answer is cut shorter than -the model allows. A response cut there all the same (`finish_reason: -"length"`) has none of its tool calls executed: what it said is stored without -them and the model is asked to go on, a bounded number of times; a response cut -before any text (the budget went to a call that never finished) is told that -nothing ran and to do the work in smaller steps. Retries with exponential backoff on 429 and 5xx (at most 4 -attempts, honouring `Retry-After`). A tool result is cut only where the -model's window ends (section 8.3), with a marker that says how much came -through. - -### 8.6 Memory - -- Working memory: the thread is append-only in the Dot's database; what is - sent is bounded only by the model's own context window (section 8.5). Before - every model request the runner measures the request (the system prompt, the - tool definitions and the messages; the provider's reported usage when it - matches) against that window less the room kept for the answer (20000 - tokens, or the model's longest answer when shorter, opencode's rule), and - compacts it when it does not fit, in two steps: - 1. old tool results are cleared: walking back from the newest, the first - 40000 tokens of results stay, and the older ones become a short note - saying the tool can be called again, when that frees 20000 tokens or more. - The calls, the reasoning and every message stay as they are. This needs no - model call; on SWE-bench it costs half as much as a summary for the same - solve rate (JetBrains, "The Complexity Trap", arXiv 2508.21433); - 2. only when the request still does not fit, the thread is replaced by a - summary its model writes: a handoff for the model that resumes the work - (Codex's framing, under the headings of OpenHands' summarizing prompt - plus the approvals and files of the Dot), after which the person's latest - messages are kept as they wrote them, newest first up to 20000 tokens - (Codex's rule). When the thread is too long for the summary model, its - oldest messages go first, each with the results of its calls; when the - model cannot summarize at all, the messages themselves, up to half of its - budget, are the summary. - The summary is stored with the session, at the boundary it covers, when the - turn ends, and the next request is the system prompt, the summary and the - thread after it. `models.summary` (section 7) names another model for the - summary request. That request goes through the same metered provider, so its - real cost counts toward the cap (section 8.2); it works within that model's - own window; and it carries no tool definitions, because a model other than - the turn's may not accept them (the turn's own model keeps sending them so - that its prompt cache is reused). `THIRD_PARTY_NOTICES.md` names the three - projects this takes from. -- Past conversations: the transcripts live in `engine.sqlite`, which the - model's commands cannot read, and a long chat reaches the model only as a - summary of its older part. So after every turn the engine also writes what - the chat and the task said to `/home/dot/conversations` (`conversations.py`): - `chat/.md`, one file a day of the chat, and `tasks/-.md`, - one a task, each message under a heading with its time, each call a line (not - what it returned). A file is written whole from the transcript, and the first - turn after an upgrade writes the chat and every task from before. The files - are under `/home/dot`, which the host's file routes serve, so nothing a - transcript holds that the events mask reaches them: a decision on a call is - written as its public line (the call and its target, never the arguments the - continuation hands the model), and every secret the engine knows is masked - as `***` in whatever text carries it, the person's and the model's included: - the proxies of the browser identities, gathered in `dots_kv` as they appear - and never forgotten (a file is written again whole, after an identity may - be gone), and the OpenRouter key, from the holder's memory only. The memory - pass masks them in `MEMORY.md` the same way. The system - prompt says to search there with grep when something said before matters, and - before advice or a recommendation for the person. On LongMemEval (500 - questions over ~115K tokens of dated chats; `tests/bench/README.md`) this took - a Dot from 7.8% to 88% of the answers; searching plain files is also what - remembers best in the published measures (the agent-memory runs of - LongMemEval, "Is Grep All You Need?"). -- Long-term memory: notes, one file each, in `/home/dot/memory` on the Dot's - computer, which the Dot keeps itself, as Claude Code keeps its own. One of - them, `MEMORY.md`, is given to the Dot in every prompt, whole up to 25000 - characters (cut there, with a word to shorten it, as Claude Code does): what - it should always know about the person, each fact with its day, and a line - for every other note. The system prompt says where the notes are, what goes - in MEMORY.md and in the others, that a note no longer true is changed or - deleted, and names the 20 most recently changed. The Dot reads and searches - them with the file tools (`read_file`, `grep`, `find_files`: `files.read`) - and writes them with `write_file`, `edit_file` and `apply_patch` - (`files.write`); a note is a file, and the host sees it as the `tool.called` - of the call that wrote it, with its path as the target. A listing of the - folder that fails (dot-agentd not answering) leaves the names out of that - prompt and the turn goes on. -- The memory pass (`memory_update.py`): a model often does not think to write - what it learns about the person, so once no turn has run for 5 minutes after - a turn (or after a start), the engine takes the conversation files whose time - is after the newest it took last, and of each only the messages it has not - taken yet (a file is written again whole after every turn but only grows at - its end, so a long day's chat is read once), and has the `summary` model - rewrite MEMORY.md from them and the current MEMORY.md, in one request with no tools - (`templates/agent/memory_update.md`: atomic facts with their day, a changed - fact replacing the old one, nothing copied from what a web page or a command - said). Files that do not fit one request go in several, oldest first, a long - one cut between its messages, each request building on the MEMORY.md the - last wrote. A pass runs beside nothing (a turn that starts does not wait for - it); a sleep or a stop cancels it, and the next quiet spell takes it up. An - answer that is cut, empty or unpriced writes nothing, and neither does one - whose MEMORY.md the Dot changed while the request ran: the next pass takes - the files again. A failed pass is tried again only after the next turn. Its - spend has a ledger of its own, capped like a task's (`max_cost_per_task_usd`), - and `memory.updated` (section 5.4) reports it. Measured on LongMemEval's - questions that need what the person likes: 65% without MEMORY.md, 83% with - it, the same as the best of the memory systems tried (Hindsight), at about a - tenth of its cost ($0.025 a pass over 115K tokens with glm-5.3-flash, as - the product ran it; 90.4% of 115 mixed questions); Mastra's and LangMem's methods made 80%, an agent doing the - pass with file tools 75% at five times the cost (`tests/bench/README.md`). -- Workspace memory: `/home/dot/workspace` and `/home/dot/memory`, reached - through the file tools. -- Skills: how the Dot does a kind of task, one folder each with a SKILL.md, the - Agent Skills layout Claude Code and upstream nanobot read (a frontmatter whose - `name` is the folder's and whose `description` says in one line when it applies, - then the steps). Built-in ones ship with the engine, beside its package - (`invisible_engine_dots/skills/`, on the runtime disk at - `/opt/invisible-dots/engine/skills/`); the first, `invisible-playwright`, says how - to use the browser identities: which one to use, opening and closing one, - and when a plain download is simpler than a browser; how to drive a page - (finding a page, the order a page cannot tell from a person, when to say a - task is impossible) is the browser server's instructions, which the system - prompt carries (section 8.3). The Dot writes its own under `/home/dot/skills//SKILL.md` with - the file tools as it learns, and one of its own replaces a built-in one of the - same name. The system prompt names every skill with its description and the path - of its file, read again each turn (`nanobot/dots/skills.py`), and says to read the - file before a task it covers and how to write one: only the names and the - descriptions are in every request. A file that does not parse is left out and - logged. `GET /skills` (section 5.3) shows the same list to the host. - -### 8.7 Crash recovery - -The engine can die at any point (a crash, a kill, a power cut) and systemd -starts it again. What it guarantees: - -- One process owns the Dot's database (section 4.2). -- Every commit point is one transaction that includes the outbox rows - describing it; section 8.8 lists them. -- An intent left without a result is a call the engine stopped during. When a - unit is entered (a start, and the beginning of every turn), such a call is - never run again: it gets the result "This call was interrupted before its - result was recorded. It may have taken effect, and it may still be running. - Check the current state before calling it again." (plus, for an approved - call, that the approval was used), and `tool.called` with `interrupted: true` - and the permission and decision of its time. A command dies with the engine - that started it (section 5.2), so "may still be running" covers what the - command detached; "may have taken effect" covers everything it did before it - was killed. -- So a call runs at most once, and the model is told whenever its outcome is - unknown. `tool.called` is written exactly once per call that ran or was - refused (a call waiting for approval, or one that never started, reports - nothing). `agent.state` is at-least-once. -- A unit can end between a response and the results of its calls (a failed - write, a failure, a cancel, a stop). The transaction that ends it answers - every call of the newest assistant message that has no result, by what the - database holds for the call (section 8.8). A thread never keeps a call - without its result, which the provider would refuse on every later turn. -- Stopping: `POST /prepare-sleep` and SIGTERM abandon a model request in - flight and give a tool in flight up to 20 seconds to finish and commit its - result, then close the open browsers: at most 4 s on SIGTERM, which leaves about - 6 of systemd's `TimeoutStopSec=30` to checkpoint the database, and up to a - browser's own 30 s close on prepare-sleep: only the host's 60 s bounds it, and - the 20 s of grace, the 5 s of cancel wait and the 30 s close fit inside, with 5 s - to spare for the flush (`PREPARE_SLEEP_TIMEOUT_MS` of packages/shared, with the sum - checked by a test of the engine). A tool cut at - the grace keeps its intent, and the next entry of its unit reports it as - interrupted. Measured in the engine smoke before the browsers existed, with a - task's `sleep 70` still running at SIGTERM and the event stream connected: the - process exited 20.4 s after the signal, 9.6 s inside the limit (the 20 s - grace, then the checkpoint, the exec sessions and aiohttp's cleanup in - 0.4 s); with no browser open the close takes no time. -- A task that was running when the engine stopped is started again with a note - that the previous attempt was interrupted, and fails once it has been started - three times (`stopped: the task was interrupted 3 times`). A start the engine - abandoned on purpose (a sleep, a stop) is given back and does not count. -- An answer the chat owes is given: a `user.message` whose text the transcript - holds and that no answer has covered is answered by a turn of its own at the - next start. - -### 8.8 The runtime on the nanobot fork - -The engine (`invisible_engine_dots/`) carries the contract of sections 5.3 and -5.4 and the runtime of this section on nanobot's tool-calling runner, in -`nanobot/dots/`. `python -I -B -m nanobot` serves the Dot; `--version` -answers and any other argument is refused. The process reads its environment -once, in `main.py`: `INVISIBLE_DOTS_AGENT_SOCKET`, -`INVISIBLE_DOTS_AGENTD_SOCKET`, `INVISIBLE_DOTS_AGENTD_BIN`, -`INVISIBLE_DOTS_WORKSPACE`, `INVISIBLE_DOTS_ENGINE_STATE`, -`INVISIBLE_DOTS_NETWORK_CHECK` (the host the network check reaches), -`INVISIBLE_DOTS_MCP_COMMAND` (the browser server's command; the unit names it by its path in dot's `~/.local/bin`), -`INVISIBLE_DOTS_MODEL_USER` (the user of the model's commands, whom the API -socket refuses), and for tests and the smoke `INVISIBLE_DOTS_OPENROUTER_URL`. -Before it serves it checks that no other engine owns the state. - -- Work. One class, `TurnRunner` (`turns.py`), starts every model turn and - drives nanobot's `AgentRunner` (`nanobot/agent/runner.py`); the `Engine` - (`engine.py`) decides which turn runs and what its end means. The chat is the - session `chat`; a task is the session `task:`. Accepted - `user.message` and automation rows wait in `dots_inbound`; when no chat turn - runs, a chat turn starts with all of them, in the order accepted, as its - opening messages; while it runs, rows accepted since are injected into it - through the runner's injection callback and committed as user messages. The - answer a chat owes (section 8.7) is one rule: when no chat turn runs, no - accepted row waits, a row is in the transcript and no open approval holds - the chat, a chat turn runs with no opening message. A `task.created` is - queued in `dots_tasks` and run one at a time, priority first then arrival; - a chat turn and a task turn may overlap. `system.event task.cancelled` ends - the task, cancels its turn and closes its open calls; no task event follows - `cancelled`. No work starts before the host pushed both the config and the - key, nor while a prepare-sleep holds it (a `POST /secrets` or a new inbound - event lifts it). One asyncio loop runs everything. -- Where the state lives. One SQLite file, `/engine.sqlite` - (`/home/dotengine/state`, 0700), opened in WAL mode with - `synchronous=FULL` and the exclusive locking mode. It holds the Dot's tables - (`dots_outbox`, `dots_inbound`, `dots_tasks`, `dots_tool_intents`, - `dots_tool_decisions`, `dots_approvals`, `dots_spend`, `dots_browser_identities`, `dots_kv`) and the transcripts - (`sessions`, `messages`): SQLite makes a transaction atomic per file only, - and this is what lets an event commit with the transcript row it describes. - `DotStore` (`store.py`) is the one place a write transaction begins and - ends. -- Commit points, each one transaction with the outbox rows describing it: an - inbound event with its effect (a queued task, a recorded decision, a - cancel); a task's start with `task.started`; the opening of a turn (the - calls the previous unit left open are closed, then the opening messages are - appended); every message the runner adds, one at a time and before it goes - on (`AgentRunner._commit` hands it to the commit callback of `TurnRunner`): - the assistant message with its tool calls, each tool result as soon as its - call returns, the final answer, an injected user message; a gate decision - (a park, or a denial); a call's intent with `agent.state EXECUTING` (from - the turn hook, just before the tool runs); the end of a failed turn; the - agent state transitions. `DotStore.append_messages` calls - `record_transcript_append` (`transcript_outbox.py`) in the transaction that - stores a message: a user message that carries an inbound id marks that input - as in the transcript; the final assistant message of the chat emits - `message.assistant` and applies every input the transcript holds (the - `in_reply_to` is the newest `user.message`); the final assistant message of - a running task completes it with `task.completed`, the text as the summary; - any other assistant message of a running task that has tool calls and text - beside them emits `task.progress` (section 5.4); - a tool result emits `tool.called`, its duration measured from the call's - intent and its `target` read from it (section 5.4), which it removes. A turn that fails fails its task in its own - transaction; a chat turn that fails answers "I could not answer: ...". -- Closing open calls (`close_open_calls`, `gate.py`), at every start, at the - beginning of every turn and at the end of a cancelled or failed one. For - each call of the newest assistant message that has no result, one result, - by what the database holds: an intent (the call started) gives the - interrupted text of section 8.7 and `tool.called` with `interrupted: true, - ok: false, duration_ms: 0`, and the decision `ask` when it was the approved - call; a park decision gives the approval message again and no event; a deny - decision gives "The Dot's policy denied this call." and `tool.called` with - `deny`; a skip decision gives the skipped message and no event; nothing - gives "Not executed: the unit ended before this call ran." and no event. -- The model's computer. `AgentdComputer` (`computer.py`) is the one door to - the Dot's computer, and it speaks only to dot-agentd. Every command the model - runs goes through `ExecTool._spawn`, the one spawn of `exec` and of the - background jobs: a local child of the engine in its own session that runs - `dot-agentd relay -- /bin/bash -lc ` with `PATH` as its only - variable (the command's environment is its login shell's, as `dot`); the - relay lives exactly as long as the remote command, and killing it (a - timeout, a cancel, `terminate`, the engine's death) makes dot-agentd kill - the remote process group. A background job is an `exec` that outlived its - `yield_time_ms`; `exec_session` and `list_exec_sessions` act on it. With - `tty: true` (always a background job: a terminal program is interactive) the - relay gets `--tty` and `TERM` (the engine's, else `xterm-256color`) and - dot-agentd runs the command on an 80x24 pseudo-terminal, so what it writes is - one stream and its input is echoed back; `close_stdin` is ^D and the - character with code 3 is ^C. The model reads the text of the screen, not the - byte stream: `terminal_text` (`exec_session.py`) drops escape sequences, - turns `\r\n` into a newline, lets a lone `\r`, a backspace and erase-in-line - overwrite, and holds back an escape sequence cut by the end of one poll until - the next. A program that paints the whole screen (vim, htop) is not - rendered. There is no terminal for the person: a person's keystrokes are not - tool calls and would bypass the approval system (section 10). The file - tools read and write through the `GET /v1/files`, `PUT /v1/files` and - `GET /v1/files/list` routes of `agentd.sock` (relative paths resolve against - `/home/dot/workspace`), keeping nanobot's line windows, read-before-write - checks, fuzzy edit matching and diff summaries. `find_files` and `grep` run - `find`, `stat` and `grep` on the computer, as `dot`, by argv with no shell, - to find the files that can match, and read only those. Nothing of the model's - runs as `dotengine`, and what `dot` may touch is decided by the operating - system: the engine adds no path policy of its own. -- The config. `PUT /config` is validated (`DotRuntimeConfig`, the same checks as - the zod schema), stored in `dots_kv` and projected in process - (`projection.py`): the OpenRouter model id, the tools offered (those of the - table whose permission is `allow` or `ask`), `max_steps_per_task` as the - step limit, and the Dot's section of - the system prompt (its name and instructions, then nanobot's tool - contract, a short note on its computer, the memory notes, MEMORY.md, where the past conversations are, - and the day). - There is no config file, no installer and no sudo rule. The same config - again changes nothing, and the same key again builds no provider - (`provider.py`: a new provider only when the key, the model or the base URL - changes, and a running turn keeps the provider it began with), so the host's - pushes at every READY and `agent.started` disturb no running turn. -- `agent.state` follows the turn hook: a run starting is `THINKING`, a tool - running `EXECUTING`, the last run ending `DONE` then `IDLE` (or - `WAITING_APPROVAL` while an approval waits); every start of the process - records `IDLE` again. -- After a crash (`Engine.start`). The first event is `agent.started`. Every - call left with an intent and no result is closed as interrupted, once. An - approval still `running` is over (its call is one of those interrupted, with - `decision: "ask"`); a turn that was telling a session a decision (`granted`, - `told`) is told again; the approved call still runs at most once. A task left - running is resumed with its description and the note "[The previous attempt - at this task was interrupted by a restart. ...]", unless an approval of its - session is open (then the decision moves it), and fails once it has been - started three times; a run a prepare-sleep abandoned does not count. A chat - turn whose answer is owed runs by the rule above. -- Policy (`gate.py`). Every tool call is decided at one boundary, - `_admit_tool_call` in `nanobot/agent/tools/execution.py`, after the call was - validated and its arguments cast and before anything runs; the gate is a - required argument of the runner (`AgentRunSpec.gate`), the contract it - answers is in `nanobot/agent/tools/gate_types.py`, and the calls of a - response run one at a time, each decided before it runs, so a park stops - the calls after it; `ToolRegistry` has no way to run a tool, so no call - reaches one another way. The decision - is made from the map the host pushed (section 7), read at the moment of the - call, so a push between two calls of one turn applies to the second: a tool - with no permission, or a permission missing from the map, is denied, and - with no config or no database every call is (the gate fails closed). `deny` - returns the reason to the model as the call's result, with no hint to try - another way; `tool.called` reports the call with `decision: "deny"` and - `ok: false` (the decision of a call inside a turn is kept in - `dots_tool_decisions` until its result is written). A provider's tool call id - names a call only inside its own response (models behind OpenRouter number - their calls from zero in every response), so the intent, the decision and the - approval of a call are keyed by the session and the id, and an approval is made - per ask: the same call asked again while its approval is pending (same session, - id, tool and arguments) is the one approval, a later call that only shares the - id is a new one. -- Tools offered. One table (`nanobot/dots/permissions.py`, section 8.3) lists - the tools a Dot may use, the permission each exercises and how to build it; - the registry holds exactly those, and each turn works on a view of it that - holds the offered ones, so a denied tool is not even seen, and the gate - decides every call by the same table. The table also says which arguments - of a call an `approval.requested` may carry (all of them, but for the proxy - of `browser_identity_create`). - The browser's server, `invisible-playwright-mcp`, runs only through the - `BrowserManager`, on registries no turn sees. The servers the person - declares (`mcp_servers`) are `McpServers`' (`nanobot/dots/mcp_servers.py`, - section 8.3): it registers each connected server's tools on the Dot's - registry as `McpServerTool`s, which call the client's wrapper of the - server's own registry at call time, and the permission table maps a tool - named `mcp__` to `mcp.` (`tool_permission`). The - projection keeps the servers whose permission is not `deny` - (`EngineSettings.mcp_servers`); a turn first awaits `McpServers.ready()`, - then offers the table's tools and those servers' tools, and the prompt - carries what each said at `initialize` or why it is not connected. The fork's - MCP client keeps a server's instructions, says why a connection failed, and - takes a stdio server's standard error (`UPSTREAM.md`). -- Browser identities. `BrowserManager` (`nanobot/dots/browser.py`) owns the - identities (their rows in `dots_browser_identities`, their directories under - `/home/dot/browsers` and their servers' homes under `/var/lib/invisible-dots/mcp`, - made and removed as dot through the Computer) and one - `invisible-playwright-mcp` process per open identity, started as dot through - `dot-agentd relay` with the environment of section 6 and nanobot's MCP client - on a registry of its own. Launch, close and delete run one at a time; calls on - one identity run one at a time. At `max_open` a launch closes the least - recently used identity first. A - browser action on an identity that is not open fails with `not_open` and - never launches it. A browser that the server reports gone while its process - lives (Firefox crashed, its window was closed) is not reopened and the call is - not repeated, as the library itself took out on purpose: a repeated click lands - on the blank page of a restarted browser, and the model is never told. It is - a crash like a process that ended (the client reports that instead of - reconnecting, because a restarted process has lost its browser): the identity - is closed and its server stopped, `browser.identity.closed` is emitted once and - the call fails with `crashed`, whose message says the browser is gone and that - `browser_identity_launch` opens it again as the same person, on a blank page - (the model cannot call `browser_open`; the launch is its way, and the one - decision of whether a browser starts). A frame that finds the browser gone - closes the identity the same way. "Gone" is the library's own sentence (its - `NOT_OPEN` and `GONE`, which `server_capture.py` reads from the installed - package's constants) as the - whole error of the call, not a phrase inside one: a failed click or select - echoes text the page controls, and a page that writes the sentence closes nothing. An open is known the same way: - `browser_open`'s answer starts with the library's `OPENED`, recorded beside the two. The manager hears of the end - when it happens, from the client's transport, so a process that dies while idle - is closed at once, frees its slot of `max_open`, and the next action says - `not_open`; a file never claims an open browser for a process that is gone. What a page - tool returns reaches the model as the server wrote it. A close calls - `browser_close` first, so Firefox flushes its profile, then ends the process. - Every `browser.identity.*` event commits with the row change it describes. - The model's identity and page tools (`browser_tools.py`) and the routes of - section 5.3 are the callers; `max_open` and `max_identities` (3 and 20) are - set when the manager is made and nothing changes them. A page tool is the - MCP server's tool of the same name (`SERVER_TOOLS`), called with the - arguments the model gave it. -- Images. A tool's image is shown to the model and kept out of the stored - transcript (`images.py`): the tool message holds its text and - `[screenshot, WxH, not stored]`, the images of the turn go to a per-turn - buffer that keeps the newest three, and the runner asks that buffer for the - messages of each model request, which adds them in one user message after - the last tool message. That message is made for the request and never stored. - nanobot's MCP client returns the image blocks of a server only when it is - made for them (the browser's is), and every other caller still gets text. -- Approvals. `ask` inside a turn stores the call with its full arguments in - `dots_approvals` (`pending`), emits `approval.requested` and records the - decision `park`, in one transaction; the model gets a result saying the call - waits for the user and has not run, the later calls of its response are - recorded as `skipped` (they run nothing, report nothing and say so), and the - runner ends the turn (`stop_reason` `parked`: no further model request). - Nothing waits in memory. A retried turn reuses the approval of the same - tool call id and asks nothing new. A task whose run parked a call is neither - failed nor resumed while an approval of its session is open, and - `agent.state` ends on `WAITING_APPROVAL`; `GET /state` names the oldest - pending approval. `approval.received` is applied in the transaction that - accepts it (`approved` or `rejected`, with the note); a decision for an - unknown or already decided approval is logged and ignored. The engine then - tells the session that made the call, in a turn of its own (the chat's - included): an approved call is to be made again with exactly its arguments - (written as JSON with no spaces), a rejected one did not run, with the note. - The approval is `granted` (or `told`) before that turn starts and `done` - when it ends. The one call an `ask` lets through is the approved one made - again in a turn of the same session: same tool, the same arguments (compared - with keys sorted), once; it moves the approval to `running`, runs like any - call of the turn, and its `tool.called` says `ask` and ends the approval. - Different arguments are asked about anew. -- Automations. nanobot's `CronService` runs inside the engine, its jobs in - `/cron/jobs.json`, and the `cron` tool (permission `automations`, - `ask` by default) adds and removes them. A firing is recorded as a durable - inbound row, `automation.fired`, once per firing, and the chat answers it as - an input: the opening message reads `[Automation "" fired] ` - and the answer is a `message.assistant` without `in_reply_to`. The jobs are - the Dot's own: it lists, adds and removes them with the tool, and the person - asks it to in the chat; the host has no route that lists or changes them, and - hears only when the earliest is next due (`automation.next_run`). `GET /tools` - shows the permission table with what the model is offered now. -- Automations while the computer is off. The jobs live in the guest and the - computer powers off when idle, so a job does not fire while it is off: the - host starts the computer shortly before the earliest run (section 9.5), told - when by `automation.next_run` (section 5.4), which the engine sends whenever - the cron service arms its timer and the earliest next run changed. A run that - came due while no engine ran is made once, when the engine starts. The next - run of a job is stored in `jobs.json` and is what the service starts from: a - time in the past is kept (the service counts a next run from now only for an - enabled job that has none), the first tick finds the job due, runs it once - and counts its next run from that moment. A one-time job (`at`) therefore runs - late and is then over, and a recurring one runs once for the occurrences it - missed, never once for each of them. A firing is recorded under the id - `cron::` before the service saves that the job ran, - and the engine ignores an id it already holds, so a `kill -9` between the two - finds the job due again and the engine recognizes its firing: it runs once. - On a stop the cron timer ends before the engine does, so no firing falls on a - stopped engine, which records nothing while the job moves on as if it had run. -- Prepare-sleep and SIGTERM. The engine stops taking new work; a turn with no - tool running is cancelled at once; a turn with a tool running gets up to 20 - seconds, in which the tool's result commits and the next iteration abandons - the turn, and is cancelled at the deadline (its intent stays, and the next - start reports it interrupted); the attempt of a cut task is given back; the - open browsers are closed (up to 4 seconds in all on SIGTERM and up to 30 on - prepare-sleep, with no turn left to call one; a close that outlasts the wait - keeps running as its own task, and a browser still open when the process - exits is ended with it); the - WAL is checkpointed. The API (`server.py`) answers the host's `prepare-sleep` - to its end even when the host hangs up. -- Removed from nanobot (everything since the import is in - `invisible_engine_dots/UPSTREAM.md`): the app shells, the channels, the bus - and the commands, the agent loop and its hooks, the other approval and guard - mechanisms (the workspace path policy, the command guard, the sandbox, the - SSRF guard), subagents, nanobot's skill machinery (the Dot's skills are its - own, section 8.6), the web tools, image and document reading, the usage - telemetry, the configuration files, every provider but OpenRouter, and the - options nothing of the Dot sets (reasoning effort, concurrent tool batches, - the spill of a long result to a file, the event sink, the MCP reconnect). - -## 9. Control plane - -### 9.1 Database (PostgreSQL) - -PostgreSQL is the database on every host. By default it is PGlite (PostgreSQL -compiled to WebAssembly, `@electric-sql/pglite`) running inside the server -process with its data in `~/.invisible-dots/db`, so nothing has to be -installed. With `DATABASE_URL` set, the same migrations and the same queries -run against an external PostgreSQL 16 or newer through `pg`. The repositories -talk to one small interface (`query` for one statement, `exec` for a script -of several such as a migration file, `transaction`, `close`, and `kind`) with -two adapters; no SQL differs between them, and the test suite runs against -both. int8 comes back as a number (a value above 2^53 is an error, never -rounded) and bytea as `Uint8Array`, on both. - -PGlite has one connection and does not lock its data directory, so one server -runs per `INVISIBLE_DOTS_HOME` (`server.lock`, section 3.2), transactions run -one at a time, and nothing else opens the database: `invisible-dots doctor` -asks the running server instead. Each migration file runs in its own -transaction, which first takes a transaction-scoped advisory lock, so two -servers migrating one external database apply every file once. - -One database serves one control plane. `server.lock` only guards one -`INVISIBLE_DOTS_HOME`, and two servers with different homes on one external -database would each reconcile, dispatch and stop the other's Dots (one finds -no disk for the other's VMs and marks them ERROR). So the server also holds a -session-level advisory lock on its database for its whole life -(`Database.holdInstanceLock()`) and refuses to start without it; the lock goes -with the session, so a server that died leaves nothing to clean up. - -Event ids are visible in id order: every insert into `events` takes a -transaction-scoped advisory lock before its `bigserial` id is drawn, held -until its transaction commits. Without it, on PostgreSQL a transaction that -drew id 10 could commit after one that drew 11, and a client that resumed -`GET /api/stream` after 11 would never see 10. A transaction that inserts an -event and changes other rows inserts the event first, so the lock is never -taken while holding a row lock another event writer waits for. - -A host event is stored in the transaction of the change it tells of, and -published after COMMIT: the Dot or its computer changing state (`dot.created` -with its rows, `computer.state` and `computer.started` with the process and the -images, `computer.stopped` with the stopped state and the Dot's status, -`dot.deleted` with the deletion, `dot.updated` with the saved config, ERROR with -`dot.updated`), a task (`task.created`, `task.cancelled`, and the `task.failed` of a task -whose delivery the host gives up), an answer (`approval.resolved`, and -the `dot.updated` of "always allow"), and what a channel reports or the person -does to it (`channel.status`, `channel.changed`, `channel.peer.paired`). A -control plane killed between two writes therefore leaves the state it was in -before, which recovery knows how to finish (a computer found off that was not -recorded as stopped is recorded now, with its `computer.stopped`), and never a -state nobody was told of: the web's views follow the events, so a state without -its event would stay wrong in them for good. `commit-points.test.ts` of the -scheduler and of the channel hub kill the process at the last write of a stop, a -deletion, a creation, a save, a status, a pause, a removal and a pairing, and -check that neither the state nor the event is there. - -Tables: `dots`, `computers`, `tasks`, `task_runs`, `events`, `approvals`, -`inbound_events`, `secrets`, `channel_bindings`, `channel_peers`, -`channel_pairings`, `channel_prompts`, `schema_migrations`. Migrations are plain -SQL files applied in order at start. - -- `dots(id text pk, name text unique, config jsonb, status text, error text null, config_version int default 1, created_at, updated_at)`: `config_version` grows with every save of `config` (`updateConfig` and `setPermission`) and with nothing else, while `updated_at` also moves with every status change; the PATCH precondition is on the version -- `computers(dot_id pk fk, vm_name, guest_port int null, pid int null, state text, golden_image text, runtime_image text, token_enc bytea, event_cursor bigint default 0, last_active_at, next_automation_at timestamptz null, stop_reason text null, last_error, updated_at)`: `guest_port` and `pid` are null while no QEMU runs, and `guest_port` is not unique (a crashed VM's row may name a port since reused); both are copies of `qemu.json` (section 3.2), which wins on reconciliation; `next_automation_at` is the guest's last `automation.next_run` report (migration `0008_computer_next_automation`), null while none is due or nothing was reported, and it is the guest's report: nothing else of the row moves with it; `stop_reason` (`idle`, `user` or `exited`, same migration) is why the computer is STOPPING or STOPPED and is null in every other state (section 9.5) -- `tasks(id text pk, dot_id fk, description, priority int, status, created_at, scheduled_at, started_at, finished_at, summary, error, spent_usd double precision default 0)`: `spent_usd` is the highest `spent_usd` the guest reported on the task's events (section 5.4), recorded by the host in the transaction that stores each event, so a late or repeated event never lowers it and a cancelled task the guest keeps working on still counts; a task whose guest never reported spend stays 0 -- `task_runs(id pk, task_id fk, started_at, delivered_at, finished_at, outcome)`: `delivered_at` is set when the guest accepted the run's `task.created` -- `events(id bigserial pk, dot_id, type, data jsonb, source 'host'|'guest', guest_seq bigint, created_at)`, unique `(dot_id, guest_seq)`, and unique `(dot_id, data->origin->>binding_id, data->origin->>external_id)` for a `user.message` with an origin: a channel message is stored once, by the channel's own id, in the transaction that stores it, so a redelivery after any failure finds the first one and the Dot gets it once (section 9.8) -- `approvals(id text pk, dot_id, task_id, tool, permission, arguments jsonb, reason, status 'pending'|'approved'|'rejected'|'expired', note, created_at, resolved_at)`: an approval whose task reached a terminal state before anyone decided is `expired`, in the same statement that ends the task, and an `approval.requested` for a task that is already terminal is stored as `expired`, never `pending` -- `inbound_events(seq bigserial pk, id text unique, dot_id fk, type, data jsonb, ts, task_id, run_id, created_at, sent_at, delivered_at, dropped_at, drop_reason, failures int, last_error, retry_at)`: the outbox of host to guest events (section 9.2) -- `secrets(scope text, name text, value_enc bytea, updated_at, pk(scope, name))`: `scope` is `global` or a dot id; no foreign key can cover that, so deleting a Dot deletes the secrets scoped to it in the same statement (`DotsRepository.delete`) - -- `channel_bindings(id text pk, dot_id fk cascade, kind 'telegram'|'whatsapp', enabled bool, settings jsonb, status, status_detail, account, event_cursor bigint, created_at)`, unique `(dot_id, kind)`: one Dot's link to one channel kind (section 9.8), and unique `account` among the `telegram` bindings whose account is known: one bot serves one Dot (a WhatsApp number is learned at the scan and may be linked on several Dots, each a device of the phone); `settings` is `{approvals, notify_tasks, show_arguments}` and never a credential; `account` is the channel's public name for the account (a bot's username); `event_cursor` is the id of the last event of the Dot the hub dealt with -- `channel_peers(binding_id fk cascade, peer_id, chat_id, role 'owner'|'user', label, created_at, pk(binding_id, peer_id))`: the people allowed to talk through the binding, by the channel's stable id, with the chat they paired from -- `channel_pairings(binding_id fk cascade, code_hash, expires_at, consumed_at, pk(binding_id, code_hash))`: one-time pairing codes, stored hashed -- Where a channel message came from is in its `user.message` event (section 5.4), the one owner of that fact; there is no table of handled messages. An index on `events` by `(dot_id, data->>'message_id')` for `user.message` lets an answer find the message it answers -- `channel_prompts(binding_id fk cascade, approval_id fk approvals cascade, chat_id, ref, created_at, pk(binding_id, approval_id, chat_id))`: the approval prompts a channel sent, one message per chat; `ref` is the channel's handle for the message (a Telegram message id), what an edit needs. A row is deleted once its prompt was edited to the outcome - -Secrets are encrypted with AES-256-GCM under `master.key`. The OpenRouter key -is looked up as `(, openrouter_api_key)` first, then -`(global, openrouter_api_key)`. - -### 9.2 Durable queue - -The dispatcher claims work with -`SELECT ... FROM tasks WHERE status = 'PENDING' AND (scheduled_at IS NULL OR scheduled_at <= now()) ... FOR UPDATE SKIP LOCKED`, -one task per Dot at a time (a Dot with a `RUNNING` or `WAITING_APPROVAL` task -is skipped). One dispatcher runs per database (section 9.1); the row locks -make a claim and the rest of its transaction one unit, and are not what would -keep two dispatchers from claiming two tasks of one Dot. - -Everything the control plane tells a guest goes through one durable outbox, -`inbound_events`, written in the same transaction that decided it: a claim -stores its task's `task.created` (and opens a run), a resolved approval its -`approval.received`, a message its `user.message`, a cancel its -`system.event`. Nothing is kept only in memory, so a failed wake or a control -plane restart loses nothing a person saw accepted. One deliverer -(`apps/scheduler/src/inbound.ts`) sends a Dot's undelivered rows in order, -waking the Dot first when it sleeps, and stops at the first failure so a later -event never overtakes an earlier one: - -- A row is delivered when the guest answers 202. Every READY transition - sends the Dot's rows again, and a periodic pass retries rows whose retry - time came. -- Whether a `task.created` may still go out is decided in the statement that - marks its send begun: a task that stopped being active meanwhile (a cancel - that won the race with a wake) is dropped there and never sent. A cancel of - a task whose send never began drops that `task.created` in its own - transaction; otherwise the guest may hold the task, so the cancel stores a - `system.event` behind it. -- A send whose outcome is unknown (a timeout, a reset connection) may have - reached the guest: it is sent again with the same id, which the guest - ignores if it has it, and it never counts as a failure. Only failures - with a known outcome count: the guest refused the event (it is dropped), - or nothing listened. After 3 such failures, or one refusal, a `task.created` - gives its task up as FAILED, logged as `task.failed` in the same transaction - (a task cancelled meanwhile stays cancelled); a message or a decision is never - given up and waits for the next READY. - -### 9.3 Lifecycles - -VM states: `PROVISIONING, STARTING, RUNNING, STOPPING, STOPPED, ERROR, DELETING`. - -Dot states: `CREATING, READY, IDLE, RUNNING, WAITING_APPROVAL, ERROR`. A Dot whose -computer sleeps is IDLE and its computer STOPPED: there is no idle state of a VM. - -Task states: `PENDING, RUNNING, WAITING_APPROVAL, COMPLETED, FAILED, CANCELLED`. - -A Dot is READY when all of these hold: -the QEMU process is running, `GET /v1/health` answers through the port forward with -`agentd: "ok"` and the agent `status: "ok"`, the OpenRouter key has been pushed -(`openrouter_configured: true`), and the guest's own checks pass (filesystem -writable, network reachable, browser layer installed) as reported in the -health answer. - -The READY procedure runs under the Dot's lock, like every operation that -changes a computer's state, and is the one place that starts a Dot's event -pump; it first stops a pump of an earlier start, which would read a guest -port that is gone. The key and the config are read from the database when -they are pushed. A key or a config stored while the procedure runs bumps the -Dot's generation, and the procedure pushes again until it completes on an -unchanged generation, so a tightened permission or a rotated key is never -lost in that window; pushes to a READY guest run one at a time per Dot, so the -last one sent is the newest. Every stop, reboot and delete takes the Dot out -of READY before anything else, so a delivery that skipped the lock because -the Dot was READY can only meet a stop that has not begun. - -### 9.4 Create - -`POST /api/dots` -> insert `dots` (CREATING) -> generate a token -> -`qemu-img create -f qcow2 -F qcow2 -b disk.qcow2 ` -> write -`seed.iso` -> pick a guest port -> spawn QEMU and write `qemu.json` (section -3.4) -> wait for the forward -> wait for health -> push the secret -> `PUT -/config` -> open the event stream -> READY. - -### 9.5 Sleep and wake - -When a Dot has no PENDING task that is due, no RUNNING or WAITING_APPROVAL -task, nothing undelivered in its outbox and no automation due within the wake -lead time (below), its agent state is IDLE, and -nothing happened for `idle_timeout`: `POST /v1/agent/prepare-sleep` -> -`POST /v1/system/poweroff` -> QEMU exits (killed after 60 s, section 3.4) -> -STOPPED. The idle stop checks all of it again under the Dot's lock, after -taking the Dot out of READY, and is called off when work arrived meanwhile. -Disk, identities and memory stay. A new task or message for a STOPPED Dot -starts the VM, waits for READY and then delivers it; so does a scheduled task -when its `scheduled_at` comes. A STOPPED Dot whose due work waits behind a task -its guest has not finished (it was stopped mid-task) is started too, so its -guest finishes that task and the next one can be claimed. - -A Dot's automations (section 8.8) run in its guest, which is off while the -Dot sleeps, so the host starts the computer for them. The guest reports, with -`automation.next_run` (section 5.4), when its earliest enabled automation is due, -and the host keeps it in `computers.next_automation_at`. The scheduler's pass -(every `dispatchIntervalMs`, 5 s) starts every STOPPED computer that the person did not stop (below) and whose Dot is not -in ERROR or CREATING and whose next automation is due within the -wake lead time (`lifecycle.automationWakeLeadMs`, 90 s by default: a start -reaches READY with some to spare) or is already past, a run missed while the -host or the computer was down, which the guest makes as it starts. The same -condition is part of "has work" for the idle sleep, in the idle check and -again under the Dot's lock, so a computer is not put to sleep when a run is -due within the lead time, and with an automation every minute it stays up. -The start is the ordinary one (the key and the config are pushed), and the run -itself is the guest's: the host decides only when the computer starts. - -An explicit stop by the person wins over the automations. Why a computer is off -is recorded with it (`computers.stop_reason`: `idle` for the sleep above, -`user` for the person's stop through `POST /computer/stop`, the CLI or the -web, `exited` for a VM that stopped by itself), kept while the computer is -STOPPING or STOPPED and cleared by any start. A computer the person stopped is -not started for its automations, missed or due, until the person starts it -again: they are paused while it is stopped, and the CLI (`status`, `computer -stop`) and the web (the stop confirmation, and the note below) say so. A message or a task for it -still starts it, as it does for any stopped Dot, and from that start on it -sleeps and wakes for its automations like any other. The person's stop of a -computer that is already asleep is recorded too. A stop that the control plane -was interrupted in is finished for the reason it was asked for, without the idle -check again: the shutdown had begun, and the guest may already have taken -prepare-sleep. Work that came due meanwhile starts the computer again from the -next pass, as for any stopped Dot. - -"Has work" is one definition, `Lifecycle.keepsAwake`: a task or inbound work for -the Dot, or an automation due within the lead time (a past one included). The -idle check, the idle stop under the lock and the restart after an unexpected -exit all read it. - -A VM that stops -without being asked (the guest powered itself off, QEMU crashed) is recorded -as STOPPED, and started again at once when `keepsAwake` says the Dot still has -work. - -`next_automation_at` arrives only from a guest that ran. A Dot that was asleep -when migration `0008` was applied has none stored, so it is not woken for its -automations (and misses their runs) until it starts for another reason: a -message, a task, or the person. Its guest then reports its next run at that -start, and the automations are woken for from there on. The host does not boot -every sleeping Dot once at an upgrade to ask. - -### 9.6 API - -All routes require `Authorization: Bearer ` (from -`~/.invisible-dots/config/api.token`, created at first start). The server -binds `127.0.0.1:8787` by default (`INVISIBLE_DOTS_LISTEN`). Every reader of -the token (the server, the command, the web server) reads it through one -function, `readApiToken()` in `packages/shared/src/api-token.ts`: -`INVISIBLE_DOTS_TOKEN` when set, otherwise the first line of `api.token`, -trimmed, and at least 16 characters. - -```text -POST /api/dots body: { config: | } -GET /api/dots -GET /api/dots/:id -PATCH /api/dots/:id body: { config, expected_config_version? } (pushed to the guest if running; with `expected_config_version`, the `config_version` of the Dot as read, a Dot whose config changed since is a 409 `dot_changed` and nothing is saved) -DELETE /api/dots/:id destroys the VM and its disk, then deletes the Dot, its rows and its own secrets - -POST /api/dots/:id/messages body: { text } -GET /api/dots/:id/messages ?limit=&order=asc|desc&before= conversation, from the event log (a user message carries `origin` when it came through a channel); oldest first by default, at most 500 a page; `order=desc` is the newest first and `before` (the `event_id` of the oldest message of the previous page, desc only) goes on, older, from there -POST /api/dots/:id/tasks body: { description, priority?, scheduled_at? } -GET /api/dots/:id/tasks ?limit=&before= the newest created first, at most 200 a page; `before` (the id of the last task of the previous page) goes on, older -GET /api/tasks ?status=COMPLETED|FAILED|CANCELLED&finished_after= { tasks }: the tasks of every Dot that ended in that state after that time, the latest end first, at most 200 -GET /api/tasks/:id -POST /api/tasks/:id/cancel - -GET /api/dots/:id/computer -POST /api/dots/:id/computer/start -POST /api/dots/:id/computer/stop -POST /api/dots/:id/computer/reboot -GET /api/dots/:id/computer/screenshot - -GET /api/dots/:id/browser-identities -POST /api/dots/:id/browser-identities -GET /api/dots/:id/browser-identities/:identityId -DELETE /api/dots/:id/browser-identities/:identityId -GET /api/dots/:id/browser-identities/:identityId/frame image/jpeg, only while the identity is open (409 not_open, 503 busy, 502 frame_failed or crashed: the engine's own answers pass through) -POST /api/dots/:id/browser-identities/:identityId/close 204; the browser ends, the profile stays - -GET /api/dots/:id/channels { channels: [{ kind, enabled, status, status_detail, account, settings, peers, created_at }], available: [kind] }; never a token; `available` is what this server runs (WhatsApp only when it was started with it, section 9.8) -GET /api/channels { channels: [{ dot_id, kind, enabled, status, ... }] }: every channel of every Dot, each with its Dot's id; never a token -PUT /api/dots/:id/channels/telegram body: { token } links the Dot to the bot (201), or gives the linked bot a new token (200); the token is checked with Telegram, stored encrypted, never returned -PATCH /api/dots/:id/channels/:kind body: { settings?: { approvals?, notify_tasks?, show_arguments? }, enabled? } enabled false pauses the channel, its people and token stay -POST /api/dots/:id/channels/whatsapp/link 202 the channel's record, waiting: starts linking WhatsApp (400 when the server does not run it, 409 `already_linked`) -GET /api/dots/:id/channels/whatsapp/qr server-sent events of `ChannelLinkFrame` (`waiting`, `code`, then `linked` or `failed`, and the stream ends); never cached, never stored -DELETE /api/dots/:id/channels/:kind unlink: the channel stops, its token (WhatsApp: the linked device's keys) and its people are deleted -POST /api/dots/:id/channels/:kind/pairing 201 { code, deep_link, message, expires_at }: a one-time code, valid ten minutes; `message` is what to send the account to pair -DELETE /api/dots/:id/channels/:kind/peers/:peer revoke a paired person - -GET /api/approvals ?status=&dot_id=&limit=&order=asc|desc&before= `dot_id` keeps the approvals of one Dot, in the database; `status` is one or several of pending|approved|rejected|expired; oldest first by default, `order=desc` is the newest first by the time of the last change (the answer, for an answered one) and `before` (the id of the last row of the previous page, desc only) goes on from there -POST /api/approvals/:id/approve body: { note?, always?: true } `always` also sets the approval's permission to `allow` in the Dot's config in the same transaction (then pushed like a PATCH, `dot.updated` logged); `approval.resolved` carries `always: true` -POST /api/approvals/:id/reject body: { note? } - -GET /api/dots/:id/events ?after=&before=&limit=&types=&tools=&task_id=&order=asc|desc `types` are event type names (an unknown one is a 400), `tools` narrows `tool.called` to those tools (`data.tool`) and leaves other types alone, `task_id` keeps the events whose `data.task_id` it is, `order=desc` is the newest first so that a `limit` keeps the newest, and `before` (the id of the oldest event of the previous page, desc only) goes on, older, from there -GET /api/dots/:id/files/list ?path= { path, entries: [{ name, type, size, mtime }] }: a directory under /home/dot (home when omitted) -GET /api/dots/:id/files ?path= the bytes of a file under /home/dot, at most 16 MiB (413 `file_too_large`) -GET /api/dots/:id/tools { tools: [{ name, permission, offered, description }], mcp_servers: [{ name, state, error, tools }] }: the engine's tool table and what the model is offered now, and where each declared MCP server is; needs the computer running -GET /api/dots/:id/mcp-secrets { dot_id, secrets: [{ server, name, set }] }: every secret the config's MCP servers name, and whether it is set; never a value -PUT /api/dots/:id/mcp-secrets/:server/:name body: { value } sets it (404 for a secret the config does not name, 400 for a value that breaks MCP_SECRET_RULE) and pushes the secrets to a running guest, which starts the server again with it -DELETE /api/dots/:id/mcp-secrets/:server/:name clears it -GET /api/dots/:id/skills { skills: [{ name, description, source, path, content }] }: the Dot's skills (section 8.6); needs the computer running -GET /api/dots/:id/usage ?since= { dot_id, since, spent_usd } -GET /api/stream SSE: every event, ?dot_id= to filter -PUT /api/secrets/openrouter body: { value, dot_id? } -GET /api/health -GET /api/doctor { ok, checks: [{ id, label, status: ok|missing|failed, detail, fix? }] }: the host report of section 11.1, run on the machine the server runs on -``` - -`GET /api/health` answers `{ status: "ok", database: "ok", version, -openrouter_configured, database_kind, data_dir, logs_dir }`; `openrouter_configured` -is whether a global OpenRouter key is stored, which `invisible-dots doctor` -reports, and the last three say where the state lives (`pglite` or `pg`, -`INVISIBLE_DOTS_HOME` as the server resolved it, and its `logs/`), so the web -client's host settings page can tell the person without their knowing the -environment variable. - -`GET /api/dots/:id/events` returns at most `MAX_EVENT_PAGE` (1000, in -`packages/shared`) events a call: the store clamps to it, the route refuses a -larger `limit` with a 400, and a client that pages through the log asks for -exactly that many, so a shorter page is the last one. - -`GET /api/doctor` answers the report of section 11.1 as the server's own host -sees it, the same rows in the same order as `invisible-dots doctor --json` -(`{ ok, checks }`, `ok` true only when every check is). It runs QEMU's -accelerator probe, so it takes a moment and it is not polled. - -`GET /api/dots/:id/usage` answers the model spend the Dot's guest reported, in -USD, since `since` (the first event when omitted; a malformed `since` is a 400). -The event log is its one source: it sums `spent_usd` over the events that end a -unit of spend, a task's `task.completed` and `task.failed` (each carries the -whole task) and the chat's `message.assistant` (each carries what the chat spent -since its last answer), by the -time the host stored them. `task.progress` is left out because its value is the -running total of a task that ends with one of those events. Work that never -reported an end (a cancelled task) is not in the -total; the task's own `spent_usd` still shows what was heard of it. Like -`/events`, it reads the history of a deleted Dot by id. - -`GET /api/dots/:id/events` filters in the database: `types` is a comma-separated -list of type names, `tools` a comma-separated list of tool names that narrows the -`tool.called` events (the other types pass), `task_id` matches `data->>'task_id'` (the one place the -contract puts the task, so the host's `task.created` and `task.cancelled` and -the guest's `task.*`, `tool.called` and `approval.requested` of a task, and the -host's `approval.resolved` of one, all match), and all combine with `after` and `limit`; `order=desc` reads from the newest -event back (the limit then counts the newest that the filters keep, and the page is -newest first), and `before` (an event id, desc only) goes on from there: the events -older than it, which is how the Activity page pages through a long log. A chat turn's events carry -no task. Migration `0006_events_task.sql` adds the expression index the task -filter reads. A type name no event has (`tool.calls`) is a 400, so a typo does not -look like a quiet Dot. - -`GET /api/dots/:id/tools` and `GET /api/dots/:id/skills` pass through to the engine's -routes of section 5.3: the tool table and the skills are the engine's, and the control -plane keeps no copy of either. They need the computer running (`409 computer_stopped`), -and the engine's own refusals pass through with their code and status. - -`GET /api/dots/:id/files/list` and `GET /api/dots/:id/files` read the Dot's -computer through dot-agentd's `GET /v1/files/list` and `GET /v1/files`, and -only under `/home/dot`: `path` is absolute, relative to `/home/dot` or `~`, and -the control plane normalizes it (`checkHomePath` in `packages/shared`) so the -guest always gets an absolute one; a path outside home, or with any `..` segment, -is a `400 invalid_path` without a call to the guest. That check is lexical and -only the early answer; the rule is dot-agentd's: its TCP listener (the host's -door) resolves every path to its real location with the symbolic links followed -and refuses one that is not under home, `403 outside_home`, which passes through -(a link under home to `/proc//environ`, where the browser server runs as `dot` -with the proxy password in its environment, shows nothing; the session file the -server saves the proxy in is not under home at all, section 4.2). The same goes for the -`PUT` and the listing of that listener; a link that stays in home works, one that -leaves it lists as `other`. The engine's socket is not confined. A read is one buffered answer of at most 16 MiB; a larger -file is a `413 file_too_large` and the host stops reading it as soon as it passes -the limit. The bytes are the Dot's own (a model wrote them, perhaps after reading -hostile text) and the web server answers from the page's origin, so the type is -never one a browser runs: images are served as `image/png`, `image/jpeg`, -`image/gif` or `image/webp` inline, source and markup (`.md`, `.json`, `.html`, -`.svg`, ...) as `text/plain` inline, everything else as a download, always with -`nosniff`, `Content-Security-Policy: default-src 'none'; sandbox` and `no-store` -(the web proxy passes those headers on). The guest's own refusals pass through -with their code (`404 not_found`, `400 is_a_directory`, `400 not_a_directory`). - -Browser identity and file routes need the Dot's computer running: on a stopped -Dot they answer `409 { error: "computer_stopped" }`. - -Errors are `{ error: , message }` with a 4xx or 5xx status. - -### 9.7 Web client - -`apps/web` is a Next.js server on `127.0.0.1:3000`. `invisible-dots server` -starts it: the build `npm run build --workspace @invisible-dots/web` leaves -(Next's standalone server and the browser files beside it, assembled by -`apps/web/scripts/standalone.mjs`) is run with `node` as a child process of the -server, on `INVISIBLE_DOTS_WEB_LISTEN` (default `127.0.0.2:3000`), with -`INVISIBLE_DOTS_URL` set to the control plane's address; the setting is read -before anything starts, so a malformed value or port 0 (the person has to be -told where to go) fails the command at once. The child gets an -allowlisted environment, not the server's: the data directory (so it reads -`api.token` itself on every request), `INVISIBLE_DOTS_TOKEN` only when the -server was given the token that way, and `INVISIBLE_DOTS_WEB_ALLOWED_HOSTS`. -It also gets the server's pid (`INVISIBLE_DOTS_WEB_PARENT_PID`) and exits when -that process is gone (`apps/web/src/instrumentation.ts`), so a `kill -9` of the -server does not leave an orphan holding the port: a stop signal ends the child -through the server, anything else through the child itself. -The web client is a companion, not a dependency: when it is not built, its -port is taken or it exits, the server logs why and the control plane and the -command line go on; `server --no-web` does not start it. A stop signal closes -the web client first, then the control plane, and a Ctrl+C while the web -client is still starting ends that start. It answers `/api/...` with -the control plane's own paths, so the browser uses the SDK unchanged, and -adds the API token on the way, so the browser never sees it. It holds that -token, and it has no login: it listens on `127.0.0.2:3000` -(`INVISIBLE_DOTS_WEB_LISTEN`), a loopback address no guest reaches. QEMU's user -network maps `10.0.2.2` to the host's `127.0.0.1` only (section 3.6), so a Dot's -VM reaches the API on `127.0.0.1:8787`, which needs the token, and never the web -client. The Host, Origin and `Sec-Fetch-Site` checks stay, as a defence against -DNS rebinding and cross-site pages: the Host must be a loopback name (any -`127.x.y.z`, `localhost`, `::1`) or listed in `INVISIBLE_DOTS_WEB_ALLOWED_HOSTS`. - -The pages are React with Tailwind CSS 4. `src/app/tokens.css` is the one place -that holds a color, a radius or a typeface (a light and a dark set, each pair -checked for WCAG AA contrast by a test), `globals.css` maps it into Tailwind, -and the primitives in `src/components/ui/` are shadcn/ui source, copied in -(`THIRD_PARTY_NOTICES.md`). Every page sits in one frame: the rail -(the Dots with a ring around each avatar that says what it is doing, the Inbox -with what needs the person, the state of the API and of the live stream, the theme) -and, for a Dot, its header and tab bar. One live stream serves all of -it; `lib/attention.ts` is the single owner of what needs the person, and the -rail badges, the avatar ring, the tab title and the favicon all read it. There -is no other stylesheet: every screen is utilities over the tokens. The browser tests (`apps/web/e2e`, Playwright) start the -real control plane in-process over the fake VM layer and the built web client -against it (`e2e/harness.ts`), so a test drives what a Dot's computer does. - -Home (`/`) is a card per Dot: its avatar ring and name, the state with the -recorded reason beside an ERROR, the model, what it spent today, its last -activity (the newest chat, task, tool, approval or browser event, one -`order=desc&limit=1` read and then the stream), the approvals that wait, Open chat and the computer's power menu. Each card's spend pill is -scoped to its own Dot, so a message of one Dot re-reads only that Dot's usage. -Search appears above six Dots, and with no Dot the page invites the first, and, -while this computer is not ready for a Dot, shows the setup checklist under the -invitation: each check of `GET /api/doctor` and `GET /api/health` that is not -ready, with the command that fixes it and a button that copies it (setup needs -an elevated terminal and an image build takes long, so they stay commands the -person runs), and the key field when no key is stored. The checks run again -when the person returns to the window while something is missing, and the -checklist stays, turned green, once the last thing is done. A ready host shows -none of it. - -Settings (`/settings`, in the rail) are the host's, not a Dot's: the same checks -(`useHostChecks` is the one list the checklist, this page and the create form's -preflight draw), the OpenRouter key (a write-only field over -`PUT /api/secrets/openrouter`; whether one is stored comes from the health -answer, which the shell shares and asks again after a save, so the rail agrees -at once; the answer says how many running Dots got it), the theme and About: -the version, the database kind, the data -directory and the logs directory, which `GET /api/health` reports for the -purpose (`database_kind`, `data_dir`, `logs_dir`), and `invisible-dots logs -` for a Dot's own logs. - -Create a Dot (`/new`) is a form in three steps (Identity, Brain, Computer and -safety) with sliders inside `CONFIG_BOUNDS`, the idle timeout, the Careful, -Balanced and Autonomous permission presets, the cost cap and the optional -summary model; or the same config as YAML, where the form refuses to take back -YAML that sets what it has no control for instead of dropping it. The shared -config schema is the only judge: `lib/dot-form.ts` maps its issues onto the -controls, and a name another Dot has is refused at once. A preflight panel shows -what `GET /api/health` reports (the control plane, its database, the OpenRouter -key) and, below it, the host report of `GET /api/doctor` (QEMU, the accelerator, -disk, the images), each failing row with the command that fixes it; the doctor's -own key row is left out, so the key is said once. Submitting is `POST /api/dots`, and then the Dot's chat opens. - -A Dot's settings (`/dots//settings`) are the same config, edited in place: -one draft of the whole `DotConfig`, as a form (General, Model, Permissions and -tools, Computer, Limits) or as the same YAML, never a second -model of it. `lib/config-fields.ts` is the one table of what can change (where -each field lives, its words, when a change reaches the Dot) and gives what the -page needs from it: the list of changes, the notice a save ends with, and the -rebase below. Nothing is written until the person has seen the review, which -lists each changed field from what it is to what it will be; the save is a -`PATCH` conditional on the `config_version` the edit began from, so a config -changed meanwhile (another tab, an "Always allow") is refused with 409 -`dot_changed` and never undone. When the host's config moves on under an edit -that is under way, the edits are kept on top of the new config -(`lib/config-draft.ts`) and the page says so; a field only the other change -touched keeps what that change says. The permission editor has one row per -permission of `PERMISSIONS`, with its words and risk, a three-way allow, ask or -deny control, the default said, and the tools of the Dot's own table (`GET -/api/dots//tools`, so a tool the engine adds shows with no change here) -with whether the model is offered each: those are as the Dot has its config -now, so a changed row says its tools show the change once it is saved. A -permission set to what its default is is saved as no entry. A stopped computer -has no table: the page says to start it, and the permissions can be set -meanwhile. A change reaches a running Dot from its next turn (`PUT /config`); -the computer's size (processors, memory, disk) applies the next time the -computer starts, and a disk can grow but never shrink. The Danger zone deletes -the Dot after its name has been typed. - -The Dot header's error banner gives the reason and "Open settings", and one way -back: Reboot while the computer is up (the host reboots only a running -computer), or Start the computer when the computer itself is in ERROR. Both -use the power menu's one action, which asks before a stop and, while a task runs, before a reboot. - -The Tasks page (`/dots//tasks`) shows a Dot's tasks in four sections: -Running (the newest `task.progress` line of each task, what it has spent from -the task row's `spent_usd`, how long it has run, Cancel after a question), -Scheduled and Queue (in the order the dispatcher takes them: priority, then -age, then id, which a test pins to the dispatcher's `ORDER BY`), and History (filtered by how the task ended, twenty at a time). A task -has its own address, `/dots//tasks/`, which opens a drawer over the -list with its state, its result as markdown or the reason it failed, and its -story. The task route knows a task by its id alone, so a task of another Dot -opened under this Dot's address is shown as missing. The story and the progress lines come from the Dot's event log, which -the page reads from its start, asking only for the event types of a task's -story (`readEventLog` of the SDK, `packages/sdk/src/event-log.ts`, is the one -function that pages through the route's `types` filter) only once a task is running -or open, and then keeps current from the live stream. The newest progress line of a running task is also under the name in -the Dot header. A task that waits for an answer shows its approval as a card on its own card and in its -drawer, answerable there (see the Inbox below). - -The chat (`/dots//chat`) is the conversation: the person's messages as -bubbles (one that came through Telegram or WhatsApp says "via Telegram", from -the `origin` of the message), the Dot's as markdown (no raw HTML, links open in a new tab without a -referrer, an image is shown as a link to it, a fenced block has a copy button). -Between them it shows what the Dot did to answer, read from the same event -log: each `tool.called` that names no task as one quiet line (the words of -`TOOL_LABELS` in `packages/shared/src/labels.ts`, which a test keeps equal -to the engine's tool table, then the call's `target`, and how it ended when that was not well; more -than three in a row fold into one line that opens), and each `approval.requested` that names no task, where it -was asked, as the approval card while it waits (answerable there) and as a receipt -line once answered ("Allowed for good" when the answer was "always", with the -person's note). A call and an approval are read into a step one way for the -chat, a task's story and the Activity page, with one set of words for how a -call ended and one format for how long it took (`lib/steps.ts`). The messages route and the log are two -views of one log, so a step is placed between two messages by event id -(`lib/chat-thread.ts`). A message shows as soon as it is sent and is replaced by -the logged one, which `POST .../messages` names by its `event_id`; one that was -`queued` says the computer is waking up until the agent reports. While the agent -thinks or runs a tool a row says so, with the last step. The box grows with the -text, Enter sends and Shift+Enter adds a line, and an unsent draft is kept per Dot -in this browser. The computer panel is always beside the thread (from 1024 px; a -strip above it below that), and both reach the bottom of the window: the page column -is as tall as the window, a Dot's header and tabs stay and the tab's body fills the -rest. The panel shows the desktop, an open browser being a window on it, as -the pictures the host reads from the guest every few seconds while the page is -visible, with a LIVE badge, a warning when a frame is more than 15 s old, and the -words "The Dot has control", because nothing the person does there reaches the -computer. - -The Inbox (`/inbox`, in the rail) is where everything that needs the person is, -from every Dot. Its address holds its whole state: `?tab=history`, `?dot=` and `?permission=` (the old `/approvals` and `/dots//approvals` -redirect to it). "Needs you" lists the waiting approvals, the one that has waited -longest first, then the Dots in ERROR and the tasks that failed in the last 24 -hours (each dismissable; the dismissals are kept in this browser only, so a -cleared browser shows them again). The shell reads them for every Dot at once -(`GET /api/tasks?status=FAILED&finished_after=`, a day back) and again on -`task.failed`, and says when they could not be read. -`lib/attention.ts` counts the three, and the rail's Inbox badge, the tab title and -the favicon all read that one count. The approval card (S7) says what the Dot -wants to do from the engine's tool table (`TOOL_LABELS`), the -permission and its risk (`PERMISSION_INFO`, `permissionPhrase`), the Dot's reason, and the call's -arguments in the form that reads best: a command, a diff for `write_file`, -`edit_file` and `apply_patch`, an address, a schedule, with the raw arguments -under Details (a proxy's password is never shown). It is destructive for a -command, the deletion of a browser identity and a change to a file outside the -workspace. The answers are Allow once, Always allow and Deny with an optional -note. Always allow asks first, naming the permission, what it can do and the tools -it covers (`GET /api/dots//tools`, when the computer answers), and then -`POST /api/approvals//approve` with `always: true`, which changes the Dot's -config (section 9.6). The host answers 409 `already_resolved` to the second -answer; the card says the approval was answered somewhere else. An answered card -stays in place as a receipt until the person leaves the page. Keys, while the -focus is in the list of the cards (WCAG 2.1.4: a single key is never the whole -page's): `j` and `k` move between the cards, `a` allows the selected one once and -`d` denies it, and a card the focus enters is the one selected; a destructive -card is not allowed by a key, `a` moves the focus to its Allow once button, -whose press is the confirmation. History lists every approval that is no -longer waiting, the last answered first: it asks `GET /api/approvals` for the -answered statuses with `order=desc` and `limit=50`, and "Show older answers" asks -for the next page with `before` the last id it holds, so the newest answer is -listed however many approvals the Dots have asked for. A live refresh reads the -newest page again and keeps the older rows it reaches (when more was answered in -between than a page holds, the older rows are dropped and read again on request). -A channel that needs the person (its login was refused: a revoked Telegram token, a WhatsApp device removed on the phone; one the person paused does not count) is a -card under "Channels to link again" with what the host says and a link to the Channels page, counts in the Inbox's number, the title and the favicon, and marks -the Dot in the rail and its Channels tab. The shell reads every Dot's channels at once (`GET /api/channels`) and again on `channel.status` and `channel.changed` (the host announces a pause, a resume and a removal, which no status says, so the marks follow them without a reload); channels -that cannot be read are said, not hidden. - -The Computer page (`/dots//computer`) has three views, named in the address -(`?view=screen|files|usage`, Screen when it says nothing, and so for an address of the -Browser view that was). Screen and Files read the guest and need the computer running: -when it is not, they say why and offer Start, and a route's own 409 `computer_stopped` -gets the same answer. Screen is the desktop as the chat's panel shows it (one -`FrameView` draws both), with "The Dot has control"; the Dot's browsers have no view of -their own, an open one is a window of that desktop, and the Dot makes, opens and closes -them with its tools. Files is a read-only walk through -`/home/dot` (`GET /files/list`, `GET /files`): the folder and the open file are in -the address, a text file is shown as text and an image as a picture, and -everything else, and any file over 1 MiB (text) or 8 MiB (image), is a download -only. What counts as text or an image is `fileType` of `packages/shared`, the one -table the API serves a file by too (markup and svg are text, so a file the Dot -wrote is never run); a file named text that holds a NUL byte is not shown. Usage -reads while the computer is off: what it was given, what it uses (`GET /computer` -embeds the guest's `system` while it runs), the images, why the last start failed, -the model spend today and in total, an Automations card, and Start, Reboot and Stop. -Stop always asks and says that the automations do not run while the computer is stopped -(Reboot asks only while a task runs). The Automations card reads the host's record of the computer (`GET -/computer`: `stop_reason` and `next_automation_at`), which holds both while the computer is -off: "Paused: you stopped this computer" when the person's stop paused them, otherwise when -the next one is due (and that a computer asleep starts shortly before), or that none is due; -it follows `computer.*` events and `automation.next_run`. - -The Skills page (`/dots//skills`, a tab between Computer and Activity) lists the -Dot's skills (`GET /skills`, section 8.6), read only: each with its name, its -description and whether it is built in or written by the Dot, and the open one (in the -address, `?skill=`) shown as Markdown by the chat's renderer, its frontmatter left -out and its path above it. It reads the Dot's computer, so a computer that is not -running is said with Start, and the list is read again when a turn ends, which may have -written a skill. - -The Channels page (`/dots//channels`) is one card per channel the server runs (`available` in `GET /api/dots/:id/channels`): Telegram always, -WhatsApp only when the server was started with `INVISIBLE_DOTS_WHATSAPP=1`. Telegram not connected asks for the bot's token (a password field, sent once over -`PUT .../channels/telegram`, emptied at once and never read back); connected, the card shows the bot, pairs a chat (`POST .../pairing`: a link that opens the -chat with the code ready, its QR code, the words to type, and the ten minutes counting down; the panel closes when `channel.peer.paired` arrives), lists the -people paired with a Revoke each, and has the three switches of the channel's settings (approvals here, tell me when a task ends, show what the Dot wants to -run), each saved as it is flipped, a Pause and a Disconnect that says the token and the people go. A refused token shows "Telegram needs a new token" with -the field to replace it, the people staying paired. WhatsApp first says that the client is unofficial and can get the number banned, then links by scanning: -the page follows `GET .../whatsapp/qr` (the frames of `ChannelLinkFrame`, reduced to one view by `lib/channel-link.ts`), draws each code itself as an SVG -from the QR modules (`qrcode`, dark on light in either theme), and ends linked with the number, or failed with the host's reason and "Link again"; a link -already going on when the page opens is followed. A number counts as linked when the host holds its account, not by the word `connecting` (a server start, -a Resume or a credential refresh report it again for a number that stays linked): only a login the host says has to be redone, or a link with no account yet, -goes through the scan. Cancel removes the channel the page's own start made, and only pauses one that holds a linked number or people (Link again on a -number that needed it), so nothing is deleted without the question that Unlink asks. The page follows `channel.status`, `channel.changed` and -`channel.peer.paired` live. The browser tests run the real Telegram and WhatsApp adapters against the hub's own fakes (`FakeBotApi`, `FakeWhatsAppConnector`). - -The Activity page (`/dots//activity`; the old `/timeline` address redirects -to it) is the whole event log of the Dot as readable lines, for the person who -wants to know exactly what happened. `lib/events/view.ts` describes every type -the log can hold, written against the data the contract gives that type (a type -or field added to `packages/shared/src/events.ts` does not compile until it is -described, and a test fails for a type with no family): a tone, a title, one -line of detail (cut at 280 characters; under "Data" the event is shown as -stored), and, for a message that came through a channel, "via Telegram". A -`tool.called` line names the tool in words, what it acted on (`target`), how it -ended (ok, failed, denied, interrupted) and the policy decision; `agent.started` -says "The engine started (the key was sent again)". The families (chat, tasks, -tools, approvals, browser, computer with the agent, memory, channels, the Dot's -own config) are chips: the ones chosen become the `types` of the request, so a -family not chosen is never read, and a live event is kept only if it is of a -chosen type. The page reads the newest 200 events first (`order=desc`) and -"Load older events" goes on with `before`, the id of the oldest one held, so the -cost does not grow with the age of the Dot, and says where the log starts. The -search is over the lines read so far (title, detail, type, channel), never a -request of its own, and says so; the order switch only turns the list over. The -export saves the events on screen, after the search, as JSON Lines (one stored -event per line, oldest first) named for the Dot and the range of ids. - -### 9.8 Messaging channels - -A person can talk to a Dot from a chat (Telegram, WhatsApp). This is the control -plane's business only: the Dot never sees a channel, no guest route or event -type names one, and the Dot has no tool that sends a message anywhere. -`packages/channels` holds the **channel hub**, built in `startServer` right after -the Scheduler, started after `scheduler.start()` and closed before it. It runs in -the server process because the database is single-process (section 9.1) and the -credentials live in it. It uses only what the Scheduler offers: `sendMessage` -(with an origin), `resolveApproval`, `requireDot` and the event log. - -An adapter (`Channel`) is transport only: `run(sink, signal)` connects and -delivers until aborted, `sendText`, `sendApproval` and `editApproval`, optionally `typing`. A `ChannelType` makes the -adapter for a binding and names the secrets a binding of its kind keeps (and which -of them are credentials a log line could hold, `scrubNames`). A kind that is -linked by scanning a code on a phone (`scanned`: WhatsApp) is linked with `link` -and never given credentials; the others with `add`. The hub owns every policy: - -- **Who may talk.** Only a person paired with a one-time code, by the channel's - stable id (a Telegram numeric user id, a WhatsApp phone number, never a mutable - name). The code is eight - symbols (40 bits), valid ten minutes, used once, stored as a SHA-256 hash with - the binding id, and pairs the sender as an `owner` together with their chat. - Anyone else, a chat that is not a private one, an empty message: dropped - before anything is written, so a stranger costs no row and no model call. A - paired person is held to a token bucket (10 messages at once, then 20 per - minute, told once) and to 8000 characters per message. -- **Inbound.** A message becomes `Scheduler.sendMessage(dot, text, {channel, - binding_id, chat_id, external_id})`; the guest receives `{text}` only. The - channel's own message id is part of the `user.message` event, which a unique - index allows once per Dot, binding and channel id, so the message and the proof - that it was handed over commit together. `sink.inbound` resolves only after the - control plane has answered, so an adapter commits its offset after the hub is - done with the message. A redelivered message, after a failure at any point or - across a restart, finds the first one: the Dot gets it once, and the repeat is - answered with the first message. -- **Outbound.** One `events.stream({dotId}, {after: event_cursor})` per binding. - `message.assistant` goes to the chat of the `user.message` its `in_reply_to` - names, when that message came through this binding and its person is still - paired; an answer that answers nothing (an automation's) goes to every owner's - chat; an answer to a message from the web or another channel is not mirrored. - `task.completed`, `task.failed` and an answer that answers nothing go to the - owners unless `notify_tasks` is off. - `agent.state` THINKING shows typing in the chat of the last message while the - Dot has not answered it. Text is split at the adapter's `maxText` on paragraph, - line and word boundaries. The cursor moves after a send succeeded (events that - need no send are written in batches), so a restart resumes where it stopped; - a crash between a send and the cursor write sends that message again. A send - that fails is retried with backoff (a channel's `retry_after` is honoured); one - the channel refuses for good (the person blocked the bot) is dropped. -- **Approvals.** When the Dot asks (`approval.requested`) and the binding's - `approvals` setting is on, every owner's chat gets a prompt: what the Dot wants - to do and the permission with its risk, in the words the web client's approval - card uses (`packages/shared/src/labels.ts`), the reason and the - arguments, each cut to 300 characters (the - arguments can hold private data, and a chat is read by a third party; with - `show_arguments` off the prompt leaves them out), with an - Approve and a Reject button. Only a paired owner, in their private chat, can - answer; the button's id proves nothing, so the hub also checks that the - approval belongs to the binding's own Dot and that approvals are still asked - in chats. The answer is `Scheduler.resolveApproval`, the one way an approval - is answered, so a second press, or a press after the web answered, is the - scheduler's 409 and the person is told it was answered already. The person - always gets a short notice for the press. Every answer, whoever gave it, - arrives as `approval.resolved` and edits the prompts to the outcome with the - buttons taken away; `channel_prompts` remembers where each prompt is. The - prompts are brought up to date when the channel starts, when a person pairs - and when `approvals` is switched on: a prompt whose approval was settled - meanwhile (answered elsewhere, or its task ended: "No longer needed") is - edited, and a pending approval with no prompt in an owner's chat is sent one. - Delivery is at least once like every send: a crash between sending a prompt and - recording it sends it again. An approval over a chat is as strong as the - person's Telegram account; switching `approvals` off keeps the answer in the - app. -- **No link previews.** Nothing a Dot names is fetched on its behalf, by this - process or by a messaging service: the Dot's only way to the web is its own - browser (section 8.3). An approval prompt shows the URL a call is about to open, - query included, so a preview would send that URL to Telegram's crawler (or, with - Baileys, request it from this machine) before anybody approved it. Every Telegram message and edit says `link_preview_options.is_disabled`, - and every WhatsApp text and edit `linkPreview: null`; the adapters' tests assert - it against the fake Bot API (which records a link it would have fetched) and the - library's own content builder. -- **Answers in words.** A channel without buttons (`approvalByText`: WhatsApp) - ends its prompt with `Reply "yes ap-xxxxxx" to approve or "no ap-xxxxxx" to - reject`, where the token is the last six characters of the approval's id. The - hub, not the adapter, reads a message that is exactly that, from a paired owner - only (a stranger's message is dropped before anything is read, so a stranger is - never answered), and resolves it with the same checks and the same - `Scheduler.resolveApproval` as a button; the person is told "Approved.", - "Rejected.", "It was answered already.", "That request does not exist." or that - two requests share the code. Anything else, including a bare `yes`, is an - ordinary message to the Dot: an answer given by a misread sentence would be an - approval nobody meant. -- **Failure.** An adapter that fails is started again after an exponential backoff - (1 s up to 60 s, with jitter) on a fresh instance; `ChannelNeedsRelinkError` - (a revoked token, a logged-out device) stops it until the person relinks. - Every change of status is a `channel.status` host event, once; the reason is - cut to 300 characters and has the binding's credentials replaced, whatever - the adapter wrote. A new binding starts after the Dot's latest event: history - is not replayed into the chat. When the Dot is deleted its bindings go with it - (foreign keys) and the hub stops the adapter on `dot.deleted`. -- **Credentials.** Stored as secrets scoped to the Dot, under the names the - channel type declares, encrypted like the OpenRouter key, never returned, - never pushed to the guest, deleted with the binding and with the Dot. A channel - type may check credentials before anything is stored (`check`): Telegram asks - `getMe`, so a wrong token is a 400 `invalid_credentials` (the message never - holds the token), an unreachable Telegram a 502 `channel_unreachable`, and a - bot another Dot already uses a 409 `account_in_use` (a bot serves one Dot: two - pollers on one token take turns failing). Giving a linked channel a new token - (`PUT`) starts it again with the people kept; it is the way back from - `needs_relink`. - -#### Telegram - -`packages/channels/src/telegram/` is the adapter, on grammY (the Bot API client, -MIT). It is transport only, like every adapter. - -- **Long polling**, because the control plane listens on a local address behind - NAT and polling needs only outbound HTTPS. Telegram keeps an update that was - not confirmed for 24 hours: a PC that is off for longer loses what was sent - meanwhile. A webhook the bot had is deleted on connect (the bot is the Dot's - own). Only `message` and `callback_query` updates are asked for. -- **An update is confirmed to Telegram** (the `offset` of the next poll) only after - the hub dealt with it. When the hub could not record a message the adapter - fails, the hub starts it again, and Telegram offers the update once more; the - hub recognises one it already gave the Dot by its id, `:` - (update ids of two bots overlap, and a Dot's bot can be replaced). No offset is - stored: a restart is the same as a failure. -- **Pairing.** `/start ` in a private chat is a pairing attempt; the deep - link `https://t.me/?start=` sends exactly that. A bare `/start` and - everything a stranger sends get no answer. Only private chats are served. - Authorization is the sender's numeric user id, never a username. -- **Approval buttons.** `callback_data` is `ap1:y:` or - `ap1:n:` (47 bytes for `appr_`): versioned, checked to fit - Telegram's 64 bytes when the prompt is made (an id that does not fit is - refused for good) and again when parsed, and parsed strictly, so data from - another version or a forged shape is answered "This button is out of date" - and goes no further. A press is confirmed to Telegram only after the hub dealt - with it, like a message. The press is always answered (`answerCallbackQuery`) - with the hub's notice, best effort: Telegram refuses an answer that is too - old. An edit of a prompt that is gone or already says the same counts as done. -- **Messages.** Plain text, no formatting; a long answer is split at 4000 - characters. A message without text (a photo, a voice note) is answered "not - supported yet" to a paired person and dropped. Typing shows while the Dot - thinks. -- **Failures are told to the hub in words.** A 401 is a revoked token - (`needs_relink`); a 409 on polling says another process polls the same bot; a - 403, 400 or 404 on send is final (the person blocked the bot), a 429 carries its - `retry_after`, anything else is retried. The token is in every request URL, so - no message the adapter makes carries a URL, and the hub replaces the binding's - token in whatever it stores or logs. Retries and backoff are the hub's alone. -- **Not private.** Telegram bot chats are not end-to-end encrypted: Telegram can - read what a person and the Dot write there. The CLI says so when a bot is linked. - -From the CLI, `invisible-dots channel add telegram --dot ` (token asked for in -a terminal, where what is pasted is not echoed, or read from stdin, never from arguments), `channel list [--dot]`, -`channel pair --dot ` (prints the deep link and the words to send) and -`channel remove --dot `. - -#### WhatsApp (opt-in, unofficial) - -`packages/channels/src/whatsapp-baileys/` is the adapter, on Baileys -(WhiskeySockets, MIT), a client of the WhatsApp Web protocol. **It is not an -official way to use WhatsApp.** It links the Dot as a device of a personal account, -which WhatsApp's terms do not allow for automation, and WhatsApp can answer by -restricting or banning the account. The library is a release candidate pinned to -one exact version (`7.0.0-rc14`; a test keeps `package.json` and the lock file at -the same exact version) because the protocol moves under it: when WhatsApp stops -accepting that release, WhatsApp stops working until the pin is moved. Use a number -of its own (a spare SIM or eSIM), never the one a person lives on. The official -Cloud API (a business account and a public webhook) is a later adapter on the same -hub. - -- **Licenses and the opt-in install.** Baileys is MIT, but it depends on - `libsignal`, which is GPL-3.0, and the default `npm install` holds nothing GPL. No - workspace declares Baileys (not as a regular, dev, optional or peer dependency), - so the root `package-lock.json` holds none of it and `npm ci` installs no GPL - package (`tests/repo/default-install-licenses.test.ts` scans the lock file's - licenses). The client lives apart in `optional/whatsapp/`: its own - `package.json` (Baileys at one exact version, a release candidate) and - `package-lock.json` (the integrity hash of every package), outside the - workspaces. One command installs it, `npm run whatsapp:install` from the - repository root: `npm ci --prefix optional/whatsapp --ignore-scripts`, a clean - install of that lock file without install scripts. `client.ts` is the one file - that names the library: it looks for it in that folder when a connection opens - (`createRequire` from the folder, then one `import()` of the file's URL), loads it - only if it is there and is the pinned release, and otherwise throws - `WhatsAppClientMissingError` (not installed) or `WhatsAppClientVersionError` (the - installed `node_modules/baileys` is not the exact version - `optional/whatsapp/package.json` declares, which stays the one owner of the pin: - a pull that moves it leaves the old release installed until the install is made - again). Both messages name the command and the variable that turn WhatsApp on. - The error is the channel's status detail, the server logs it at start when - `INVISIBLE_DOTS_WHATSAPP=1` is set and `whatsappClientProblem` finds one (the - same check the loader makes), and the "it is off" answer of linking carries the - same words (`WHATSAPP_ENABLE_HELP`). Nothing imports the - library by name, not even as types: the adapter writes down what it uses of it - (`WhatsAppClient`, with the library's credentials and key data as type - parameters) and compiles without it; `npm run typecheck:whatsapp` (a CI job, - with the client installed) proves the real module has that shape, that the - options of the socket the adapter builds (`socketConfig`, typed - `WhatsAppSocketConfig`) are each an option of the library with a type it takes - and none is a name it lacks, that the adapter's auth state is one the library - accepts, and that the key groups are the library's own. (The methods of - `WhatsAppClient` are compared in both directions, so those two are asserted - separately, one way.) `npm run test:whatsapp` runs the tests that need - the real library (`packages/channels/test-optin/`, left out of the default - suite). The command bundle has no import of it, so no build of ours embeds GPL - code. `THIRD_PARTY_NOTICES.md` says what that means for whoever distributes an - installation that has `optional/whatsapp/node_modules`. -- **Off by default.** The server runs WhatsApp only when started with - `INVISIBLE_DOTS_WHATSAPP=1` (`defaultChannelTypes` in `apps/api/src/start.ts`). - Otherwise the type does not exist: `GET .../channels` lists only the kinds it - runs (`available`), and linking answers 400 with how to turn it on. Baileys is - loaded by `client.ts` when a connection opens, so a server that never - links WhatsApp never loads it, and no file but `client.ts` names it (a test reads - the sources). -- **One port.** `port.ts` is what the channel needs of a connection (messages in, - text out, a code to scan, why it ended); `baileys.ts` implements it over - the network and `FakeWhatsAppConnector` for tests, because WhatsApp cannot be - faked. Everything WhatsApp-specific that is a decision is in `whatsapp.ts` and - tested against the fake; the glue is tested for what it decides alone (how a - message is read, how a close is understood) and for surviving a socket that - cannot connect. The real network is not reached by any test. -- **Linking by a code.** `POST .../whatsapp/link` creates the binding without - credentials and starts the adapter, which opens a connection that is not - linked; WhatsApp sends a code every few seconds, shown on the phone under - Settings, Linked devices, Link a device. `GET .../whatsapp/qr` streams the codes - and the end as `ChannelLinkFrame`. The code is a way into the account for as long - as it is shown, so it lives in memory only (`LinkSessions`): not in the - database, not in an event, not in a log, not in a status, and the stream is - `no-store`. A watcher that joins late gets the code on show now. The scan ends - with `linked` and the number; a code that ran out before the scan, a device WhatsApp - rejects or one removed on the phone ends with `failed` and `needs_relink` - (`ChannelNeedsRelinkError`); a connection that is lost is retried by the hub with - backoff. Linking again after a failure deletes every key of the old device first. - WhatsApp asks for a new connection when a link finishes (status 515); the adapter - opens it at once, and gives up after three in a row. -- **The keys are secrets.** The linked device's identity and Signal keys are an - account takeover if they leak, so they are not the plaintext JSON files of - Baileys' own helper: `AuthStore` implements Baileys' `AuthenticationState` over - the encrypted `secrets` of the Dot, one secret for the credentials and one per - group of keys (eleven; a `Record` over the library's own list of groups makes a - group added by an upgrade a compile error), under the same AES-256-GCM and the - same row-bound associated data as the OpenRouter key. A change is written (the - credentials and the groups that changed, in one transaction, in order) before it - is acknowledged to Baileys, so a crash leaves the state as it was or as it is - now, never a step apart; a failed write is kept and tried again with the next. - A closed store refuses every write, so a delete by the hub is final, and the - write itself holds the binding row, so a session still open when the channel or - its Dot is deleted cannot write its keys back afterwards (the write is refused - as `ChannelGoneError`). They are never sent to the guest, and deleted with the - channel and with the Dot. -- **Who is who.** WhatsApp addresses a person by phone (`@s.whatsapp.net`) - or by LID (`@lid`), and may switch. The peer is the phone number when it is - known from the address, from its twin address in the same message, or from what - the account learned earlier (a local lookup that sends nothing to WhatsApp), and - `lid:` otherwise, so one person is one peer whichever address is used; the - chat to answer is the matching address. The one edge: someone paired while only - their LID was known, whose number is learned later, appears under the number and - pairs again. Device and agent suffixes are dropped. -- **Reply-only.** Nothing is sent to a chat that did not write first: the hub sends - only to paired people, and a person pairs by writing the code. A stranger is never - answered, told they are refused, or sent a read receipt (the unread message of a - chat is marked read just before the Dot answers that chat, from a bounded memory), - so no stranger learns that the number is alive. Each send is preceded by a typing - indicator and a pause of 0.4 to 1.5 seconds. The account does not announce itself - online. No groups (WhatsApp is told to ignore every address that is not one - person's, so those messages are neither decrypted nor seen), no broadcast, no - channel posts, no messages the account wrote itself, no attachments (a paired - person is told "not supported yet", as on Telegram). There is no way to send to a - number that has not written. -- **Pairing.** `pair ` as a whole message; the link - `https://wa.me/?text=pair%20` opens the chat with exactly that - ready to send. The number is the account the adapter reported when it connected. -- **Approvals.** In words, as described above: the prompt is a message with the - reply to send, and when the approval is settled the prompt is edited to the - outcome (WhatsApp limits how long a sent message can be edited, about fifteen - minutes, so the prompt of an old approval may keep its question; a late answer is - told it was answered already). -- **At most once on the way in.** WhatsApp confirms a message to its sender when - it arrives, not when the hub dealt with it, so unlike Telegram a message the hub - could not record cannot be offered again. The adapter then drops the connection, - the channel shows `error`, the hub reconnects, and the person writes again. - Messages come one at a time, in order. -- **Not private, and not stable.** WhatsApp and the account's other devices see - what the Dot writes; the account's owner sees the Dot as a linked device. Baileys - follows a protocol WhatsApp does not publish: a release of it can stop working - without notice, and nothing here can prevent a ban. - -From the CLI, `invisible-dots channel link whatsapp --dot ` prints the risk, -then each code as a QR for the terminal until the number is linked, then -`channel pair whatsapp --dot ` prints the link and the words that pair. - -## 10. Out of scope for this version - -Snapshots and rollback, remote desktop -and interactive terminal, artifacts, backups, quotas, network policies, -multiple hosts, organisations and RBAC, macOS hosts. The tables and states -above leave room for them; nothing here pretends to implement them. - -Scheduled and recurring jobs are in scope: they are the Dot's automations -(sections 8.8 and 9.5), which run in its guest and, with the computer off, -start it. - -## 11. Getting a host ready - -The same commands on every host: - -```text -invisible-dots setup --all everything below in one run, in order, that can be run again (section 11.4) -invisible-dots setup get QEMU and its accelerator ready (may ask for administrator rights once) -invisible-dots doctor check everything, print one line per check and the command that fixes a failure -invisible-dots image build build the golden image and the runtime ISO (section 3.3) -invisible-dots server run the control plane and the web client in the foreground (section 9.7) -``` - -`invisible-dots server` is the one entry point of the control plane; no -other program starts it. It stops cleanly (closes the database, releases -`server.lock`) on Ctrl+C, a service manager's SIGTERM, a closed terminal -(SIGHUP, which Node also raises on Windows when the console window closes) -and Ctrl+Break on Windows (SIGBREAK): the same handler for all four. - -The OpenRouter key is then stored with `invisible-dots secret openrouter`, -the same line on every host and in every shell: in a terminal it asks for the -key and reads one line, and piped it reads standard input. The key is never an -argument, so it never lands in a shell history or a process list. - -### 11.1 doctor - -Checks, in this order, each with `ok` / `missing` / `failed` and a fix line: -Node version; QEMU found (and its version, 8.2 or newer); `qemu-img` found; -the accelerator usable (Linux: `/dev/kvm` opens read-write; Windows: the -`HypervisorPlatform` optional feature is enabled, read without administrator -rights through `Get-CimInstance Win32_OptionalFeature`), confirmed by actually -running QEMU with `-nodefaults -no-user-config -machine q35 -accel --cpu host,-vmx,-svm -display none -no-reboot -boot reboot-timeout=0` and seeing it exit -with code 0; the data directory, `INVISIBLE_DOTS_HOME`, a path QEMU can be -given (plain ASCII, no comma, section 3.2) with enough free space; -the golden image and runtime ISO present and matching their manifests; the -web client built (the files `invisible-dots server` serves, section 9.7; the -fix is its build command; a row of `invisible-dots doctor` and `setup` only: the -report of `GET /api/doctor` is read in the web client, which is built by then); the OpenRouter key stored. `doctor` never changes anything and creates nothing. -Exit code 0 only when every check is `ok`. On a host invisible_dots does not -run on, the accelerator rows say so, and the report still prints. - -- The probe runs guest code instead of holding the machine before its first - instruction: the empty machine's firmware finds nothing to boot, - `reboot-timeout=0` makes it reset at once, and `-no-reboot` turns the reset - into QEMU exiting with code 0. So exit code 0 means the accelerator opened - AND ran the CPU model the Dots use; there is no monitor, the same as for a - Dot. Measured with QEMU 8.2.2 and KVM: exit 0 after 0.2 s, and the firmware's - debug port reads "No bootable device. Retrying in 0 seconds." then - "Rebooting."; without either flag QEMU never exits. A probe still running - after 30 s is killed and reported as a virtual CPU that does not run, with - QEMU's first line of error output. Not measured with WHPX yet. -- The probe uses the Dots' machine type, not `-machine none`: QEMU 11.1 with - WHPX aborts on `-machine none` (`X86_MACHINE` assertion, measured). -- The probe has the last word: when the host-side check says `missing` but - QEMU starts with the accelerator, the accelerator row is `ok` and `setup` - enables nothing. Measured on Windows 11: WHPX initialised while the - `HypervisorPlatform` feature read as disabled (Virtual Machine Platform on). -- The OpenRouter key is read from the running server's `GET /api/health`, - because only the server may open the embedded database (section 9.1). While - the server is down that row is `failed`, with the command that starts it. - Inside the server (`GET /api/doctor`) the row asks the Scheduler directly. -- One code runs the report in both places: `runDoctor` in - `apps/vm-manager/src/doctor.ts`, over the real machine's - `hostDoctorDeps()` and the images' rows of `apps/api/src/doctor.ts`; the CLI - only renders it (`apps/cli/src/doctor/render.ts`). The wire types - (`DoctorCheck`, `DoctorAnswer`) are in `packages/shared/src/api.ts`. - -### 11.2 setup - -`setup` runs `doctor`, then fixes only what is missing: - -- **Windows**: downloads the official QEMU installer for the version pinned in - `virtualization/qemu/windows.json` (URL and SHA-256) into a temporary - directory as the normal user, verifies the hash, then asks for elevation - ONCE (`Start-Process -Verb RunAs` on a generated PowerShell script) to run, - in that single elevated session: `dism /online /enable-feature - /featurename:HypervisorPlatform /all /norestart` when the feature is off, and - the QEMU installer silently (its arguments, `/S`, come from the pin) when - QEMU is missing. Nothing the elevated session runs or writes is in a place - the normal user can change, because a program running as that user could - swap an installer between its hash check and its start, plant a DLL next to - it, or turn the result file into a link to anywhere. So the session creates - a new directory directly under ProgramData whose ACL, set in the same call - that creates it, lets only Administrators and SYSTEM write (the person may - read), and refuses to go on if it existed or is not empty; it copies the - installer there, hashes the COPY and runs the copy from that directory; it - finds dism through the system directory Windows reports, never through an - environment variable the user can set; and it writes the exit codes to a - result file in that directory, which the normal session reads and then - removes with the directory. Exit code 3010 from dism means a restart is - required: `setup` says so and stops with exit code 5. The person restarts - and runs `invisible-dots doctor`. The installer's Authenticode certificate is - outside its validity period, so the pinned hash is the only trust anchor. -- **Linux**: prints and runs `sudo apt-get install -y qemu-system-x86 - qemu-utils` on apt-based systems (and prints the equivalent `dnf` / `pacman` - line elsewhere instead of guessing), then checks `/dev/kvm`; if it is not - accessible it prints `sudo usermod -aG kvm $USER` and that a new login is - needed. `setup` refuses to run as root: it would check `/dev/kvm` as root and - name root in that line, not the person who runs the server. It calls `sudo` - itself for the one step that needs it, as Windows elevates its one step. -- The minimum of section 3.1 is 8.2 because Ubuntu 24.04's own - `qemu-system-x86` is 8.2.2, so `setup` on the most common LTS installs a QEMU - that `doctor` accepts; 8.2.2 was measured against the argv of section 3.4 - and the probe of section 11.1 (with KVM). Debian 13 ships 10.0. - -The project never redistributes QEMU binaries: Windows gets the official -installer, Linux gets the distribution's package. - -### 11.3 Licensing - -The root LICENSE (MIT) covers this repository, except everything under -`invisible_engine_dots/`, which is under `invisible_engine_dots/LICENSE` (MIT) and the -nested notices next to the code they cover; `THIRD_PARTY_NOTICES.md` at the -root carries that license, the notices of the earlier TypeScript engine whose -text the history still holds (Open Multi-Agent, MIT), and names every nested -notice, and `invisible_engine_dots/UPSTREAM.md` records the version and commit -the fork comes from. The engine's source goes -onto the runtime disk with the fork's `LICENSE` and `UPSTREAM.md` -(`/opt/invisible-dots/engine/`). No list is written by hand, so it cannot -drift from the lockfile. QEMU (GPL-2.0) is installed -from the official Windows installer or the distribution's package and is only -ever run as a separate program; it is never linked into, bundled with or -shipped by this project. The guest operating system (the Ubuntu cloud image), -`uv`, the browser engine, `invisible-playwright-mcp` with its Python -packages, and the Python packages the engine's lock -(`guest/image-builder/builder/engine-requirements.lock`) names are -downloaded from their publishers when the golden image is built, each under -its own license, as the wheels the publishers released. The golden image is -published as built by CI (the release `golden-`, made by -`.github/workflows/golden-image.yml`; `image build` downloads it when its -inputs are the checkout's, `guest/image-builder/src/prebuilt.ts`, and builds the -image itself otherwise); the sources of its Ubuntu packages are in Ubuntu's -archive, and whoever copies it takes on the license terms of the components -inside it. - -The default `npm install` holds nothing under the GPL (section 9.8, WhatsApp); that is a -statement about the npm lock file and no more. The few LGPL packages of the lock file -are the prebuilt image libraries (`@img/sharp-*`) that Next.js may install; the notices -name them. The VM image is a different thing: it carries the Ubuntu guest operating -system and the apt packages the golden image installs on it (`apt_packages` of -`guest/image-builder/pins.json`: Xvfb, XFCE and their libraries, over the Linux kernel, -bash and the rest of Ubuntu's base), most of it GPL or LGPL software under its own -licenses and source offers, downloaded from Ubuntu's archive on the machine that builds -the image, which is CI when the image is the published release of the paragraph above. Whoever copies a golden image to another -machine takes those licenses with it (the paragraph above). - -### 11.4 setup --all - -`invisible-dots setup --all` is what the quick start used to have the person -type after `npm ci` and the build of the command line, as one command -(`apps/cli/src/setup/all.ts`). Every step is the code of the command that -owns it, run as a function, and skips what is already done, so the same -command is also how a run that stopped is continued. In order: - -1. **The guest daemon.** `go build` of `guest/dot-agentd` for linux/amd64 with - no cgo (`agentdBuildCommand()` in the image builder, which also names where - the runtime disk takes the binary from). It comes first because it needs - nothing but Go: a missing Go stops the run here, with the install command of - each host in one line (`GO_INSTALL_HINT` in `setup/build.ts`: winget on - Windows, snap on Linux; one text, so that no platform check is added to - section 1.1), before anything is changed. It is not skipped: Go's build - cache makes an unchanged daemon take seconds, and the image builder turns the - same bytes into "already built". -2. **QEMU and its accelerator.** `prepareHost()` of `setup/setup.ts`, the code - `setup` itself runs (section 11.2), so the one elevated step (UAC on - Windows, `sudo apt-get` on Linux) stays one step and `setup` as a command - prints what it printed before. It comes before the long builds so that a - restart or a new login it asks for costs nothing already done. Where it asks - for a restart (exit code 5) or for `usermod -aG kvm`, `setup --all` says to run - itself again and stops with `setup`'s exit code. -3. **The web client**, unless `locateWebBuild()` finds it complete: node runs - `apps/web/scripts/build.mjs` (the script `npm run build --workspace - @invisible-dots/web` runs; node starts it directly because npm is a `.cmd` - file on Windows and the CLI never starts a program through a shell), its output - on the person's terminal. Next's telemetry is off in `apps/web/next.config.ts` - itself, so this build and any other send none. -4. **The guest images**, `image build` as it is (the runtime disk first, then - the golden image). - -A step that fails ends the run with exit code 1 and the reason, and nothing -after it is run; the message ends with the command to run again. At the end it -prints how to start the server and the address of the web client -(`INVISIBLE_DOTS_WEB_LISTEN` or its default), which has no login: the web -server adds the API token itself (section 9.7). It does not -start the server itself: `server` runs in the foreground until Ctrl+C. Ctrl+C -asks `image build` to stop (it kills its builder VM) and ends the run between -steps; a second Ctrl+C exits at once. - -Not in it, on purpose: installing Node, Git and Go (the Windows installers and -snap ask for administrator rights of their own, and `setup --all` keeps to -one), the clone, `npm ci` and the build of the command line (the command is -their product), and the OpenRouter key (the web client's Home page takes it -once the server runs, or `invisible-dots secret openrouter`). diff --git a/docs/guide.md b/docs/guide.md deleted file mode 100644 index d100ab18..00000000 --- a/docs/guide.md +++ /dev/null @@ -1,842 +0,0 @@ -# The invisible_dots guide - -Everything about running invisible_dots, in one page. The short version is the [README](../README.md). - -A **Dot** is a persistent AI agent with a computer of its own. You give it a -name, a model and a set of permissions; invisible_dots gives it a QEMU virtual -machine on your own PC, with a disk that persists, a Linux desktop, a shell, its -own files, memory and skills, and browser identities that keep their cookies and -logins from one task to the next. You talk to it from a web UI, the command -line, an HTTP API, Telegram, or (opt-in) WhatsApp. The model is any model on -OpenRouter, paid with your key. - -## Highlights - -- **A computer, not a sandbox for one command.** Each Dot has a - hardware-accelerated VM (KVM on Linux, Windows Hypervisor Platform on - Windows) with a persistent disk. It powers off after a quiet spell - (`idle_timeout`, 15 minutes in the sample) and starts again for the next - message, the next task or one of its own automations; disk, identities, - memory and skills stay. -- **A browser built not to look automated.** The only browser of a Dot is - [invisible-playwright-mcp](https://github.com/feder-cr/invisible_playwright_mcp), - on [invisible_playwright](https://github.com/feder-cr/invisible_playwright): a - Firefox patched in C++, with the fingerprint set inside the engine instead of - injected into the page. Each identity keeps its own profile and fingerprint. -- **It learns, as Claude Code does.** The Dot keeps its own memory, notes in - `/home/dot/memory`, and its own skills, how it does a kind of task, in - `/home/dot/skills`. There is nothing to set: it writes them with its file - tools, and its prompt names them. -- **You set what it may do.** Every tool belongs to a permission, and each - permission is allow, ask or deny. An ask waits for your answer, survives a - restart, and lets that one call run once. -- **A crash loses nothing you saw accepted.** A restart of the server, a crash - of the Dot's engine or a `kill -9` keeps every message and task you were told - was accepted, and a tool call cut short is never run twice: the model is told - its outcome is unknown and checks before trying again. -- **Local and private.** The reasoning happens inside the Dot's VM; the control - plane on your PC runs the VMs, the queue, the events, the approvals and the - channels. invisible_dots has no server of its own and no telemetry. - -> [!IMPORTANT] -> invisible_dots is alpha. No package or hosted service is published: the one -> thing published is the golden image, built by CI from this repository's pinned -> inputs and downloaded by `image build` when its inputs are yours; everything -> else you build on your own machine. The acceptance run (`tests/e2e/run.ts`) -> passes its 16 steps on a Linux host with KVM (the linux-host container on -> WSL). On Windows a Dot's VM boots under the Windows Hypervisor Platform with the CPU -> model `host,-vmx,-svm` (measured; plain `-cpu host` pauses it), and the rest -> of the lifecycle there was driven by hand through the web client, not by an -> automated run ([architecture: VM definition](architecture.md#34-vm-definition)). - -**On this page:** [Quickstart](#quickstart) · [What to ask a Dot](#what-to-ask-a-dot) · -[What a Dot can do](#what-a-dot-can-do) · [The web UI](#the-web-ui) · -[The command line](#the-command-line) · [Approvals](#approvals) · -[The browser](#the-browser) · [Talk to it from your phone](#talk-to-it-from-your-phone) · -[How it works](#how-it-works) · [Security](#security-model-and-known-limits) · -[Privacy](#privacy) · [Configuration](#configuration) · -[Troubleshooting](#troubleshooting) · [Updating](#updating-and-uninstalling) · -[Status](#status-and-what-is-not-done-yet) · [Development](#development-and-tests) - -## Quickstart - -Install Node, Go and Git, clone, build the command line, run `setup --all`, run -`server`, and open the web UI to make the first Dot. - -### Requirements - -- Linux or Windows, on x86-64, with hardware virtualization on. macOS is not - supported. -- Node 24 or newer, Git, and Go 1.25 or newer (to build the guest daemon). -- QEMU 8.2 or newer; `setup --all` installs it and enables the accelerator. -- At least 20 GiB free for the data directory (`doctor` checks it). Each Dot's - disk is a copy-on-write overlay that grows as it writes, up to its - `computer.disk` (40 GB in the sample). -- Memory: `image build` boots a builder VM with 2 vCPUs and 4 GiB, and each - running Dot takes its `computer.memory` (4 GB in the sample). Inside a Dot, - each open browser takes roughly 0.8 GB, and at most `max_open` (default 3) - are open at once. -- A data directory path in plain ASCII with no comma. The default is - `~/.invisible-dots`, under your account name, so an account named `José` - fails at `doctor`; set `INVISIBLE_DOTS_HOME` to a path such as - `C:\invisible-dots` before every command, the server included. -- An [OpenRouter](https://openrouter.ai) key. - -### 1. Get the tools and the code - -**Windows**, in PowerShell: - -```powershell -winget install -e --id OpenJS.NodeJS.LTS; winget install -e --id GoLang.Go; winget install -e --id Git.Git -$env:Path = [Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [Environment]::GetEnvironmentVariable("Path", "User") -git clone https://github.com/feder-cr/invisible_dots -cd invisible_dots -npm ci -npm run build --workspace @invisible-dots/cli -``` - -**Linux** (Ubuntu 24.04), in bash: - -```bash -curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - -sudo apt-get install -y nodejs git -sudo snap install go --classic -git clone https://github.com/feder-cr/invisible_dots -cd invisible_dots -npm ci -npm run build --workspace @invisible-dots/cli -``` - -### 2. Get the host ready, in one command - -The same command in PowerShell and bash, from the repository folder: - -```sh -node apps/cli/dist/invisible-dots.mjs setup --all -``` - -Run it as yourself, not as root or administrator: it asks for the rights it -needs once. It runs four steps in order, and each one skips what is already -done; you can still run any of them alone: - -| step | what it does | by hand | -|---|---|---| -| 1. The guest daemon | Builds `dot-agentd`, the program that runs inside every Dot's VM, for Linux whatever your host is. It stops here, before changing anything, when Go is missing, and prints the command that installs it. | `go -C guest/dot-agentd build -trimpath -o bin/dot-agentd ./cmd/dot-agentd` with `CGO_ENABLED=0 GOOS=linux GOARCH=amd64` | -| 2. QEMU and its accelerator | Checks the host and fixes only what is missing. On **Windows** it enables the Windows Hypervisor Platform and installs QEMU in one elevated step (one UAC prompt). On **Linux** it installs QEMU with `sudo apt-get` (sudo asks for your password). | `invisible-dots setup` | -| 3. The web client | Builds it, unless it is built already. | `npm run build --workspace @invisible-dots/web` | -| 4. The guest images | Builds the runtime disk (the daemon and the engine), and downloads the golden image (Ubuntu 24.04, the desktop, the browser) that CI built for exactly these inputs, or builds it here when none is published (a changed pin, a fork, no network). A second run with unchanged inputs does nothing. | `invisible-dots image build` (`--no-download` always builds) | - -Two things can stop it on purpose, and both end with the same advice: run the -same command again and it carries on. - -- On **Windows**, if enabling the accelerator needs a restart, it says so and - exits with code 5 after step 2. Restart, come back to this folder and run it - again. -- On **Linux**, if you are not in the `kvm` group yet it prints - `sudo usermod -aG kvm $USER`. Log out and in again, then run it again. - -Anything else that fails (a missing Go, a failed download, a build error) -stops the run with the reason and with nothing after that step run. `doctor` -prints one line per check and the command that fixes each failure; `setup ---all` ends by telling you what to do next. Ctrl+C stops the image build -cleanly, and a second Ctrl+C ends the command at once. - -### 3. Start the server and open the web UI - -```sh -node apps/cli/dist/invisible-dots.mjs server -``` - -It runs in the foreground until Ctrl+C, and serves the web client too. Open -http://127.0.0.2:3000: there is no login. The web client listens on 127.0.0.2, -a loopback address of your PC that no Dot's VM reaches (a VM reaches only -127.0.0.1, as 10.0.2.2), and adds the API token to each API call itself. - -On a computer that is ready except for the key, Home shows a field for your -OpenRouter key; then Create a Dot makes the first Dot. The web client is a -companion: if it was not built or its port is taken, the server says why and -the API and the command line carry on (`server --no-web` leaves it out). - -
-Your first Dot from the command line instead - -In a second terminal in the same folder: - -```sh -node apps/cli/dist/invisible-dots.mjs secret openrouter -node apps/cli/dist/invisible-dots.mjs init -node apps/cli/dist/invisible-dots.mjs create dot.yaml -node apps/cli/dist/invisible-dots.mjs message my-first-dot "List the files in your home folder and say how much disk is free." -node apps/cli/dist/invisible-dots.mjs logs my-first-dot -``` - -`secret openrouter` asks for the key (it is never a command-line argument, and -what you paste at the prompt is not shown on the screen). `init` writes -`dot.yaml`, the Dot's name, instructions, model, resources and permissions, to edit -before `create`. The first Dot takes a while to boot; the message waits in the -queue until it is ready. `logs` prints the Dot's events and keeps following new -ones until Ctrl+C (`--no-follow` prints and exits). It worked when `logs` shows -a `message.assistant` event with the answer and what it cost (`spent_usd`). - -In the rest of this page, `invisible-dots` stands for -`node apps/cli/dist/invisible-dots.mjs`, and `invisible-dots --help` lists every -command. In **bash**, `alias invisible-dots="node '$PWD/apps/cli/dist/invisible-dots.mjs'"` -in the repository folder makes it so (again in each new terminal); in -**PowerShell**, type `npx invisible-dots` from the repository folder. - -
- -## What to ask a Dot - -Anything that needs a computer and a person's judgement, done the way a person -would do it, for as long as it takes: - -> Open a browser identity called research, go to https://example.com and tell -> me the page's title and its first sentence. Leave the browser open. - -> Every morning, check one-way fares from Milan to Lisbon for the next two -> weeks, write them to ~/workspace/fares.csv and tell me the cheapest day. - -> Log in to the shop with the shopping identity, download this month's invoices -> to ~/documents, and remember where the invoices page is for next time. - -The first is the conversation in the picture above. For the second, the Dot sets -up an automation (it asks you first), and its computer is started each morning -for it and sleeps again afterwards. For the third, its prompt tells it to keep what it -learned as a note or a skill of its own, which the next prompt names. - -## What a Dot can do - -Its tools, each behind a permission -([architecture: tools](architecture.md#83-tools)): - -- **Run commands** on its own computer: a shell with a timeout, background - jobs, and programs on a pseudo-terminal that it reads as a screen of text. It - installs a missing Ubuntu package with `sudo dot-install `. -- **Read and write files**: read, list, find, grep, write, edit, apply a patch. -- **Use its browsers**: create, launch and close identities; navigate (http - and https only), read the page, take screenshots, click, type, select, - scroll, go back and forward. -- **Look at its desktop** with a screenshot. -- **Use the MCP servers you give it**: a program on its computer or a URL, each - one declared in its settings, with its own permission (asked by default). See - [MCP servers](#mcp-servers). -- **Schedule itself**: add, list and remove its own automations (at a time, - every interval, or a cron expression). This one asks you first by default; - to pause or remove one, ask the Dot. - -Work reaches it three ways: a message in its one persistent conversation, a -queued task (with a priority and an optional start time), or one of its own -automations firing. Each task has limits on steps, on context and on cost -(`max_cost_per_task_usd`). Long threads are summarized, by the Dot's model or -by another model you name (`models.summary`). - -**Memory and skills.** The Dot keeps its long-term memory itself, one note per -file in `/home/dot/memory`, and finds it again with its file tools; the newest -notes are named in its prompt. A skill says how to do a kind of task: a folder -with a `SKILL.md`, the layout Claude Code reads, whose name and one-line -description are in every prompt and whose steps the Dot reads before a task the -skill covers ([architecture: memory](architecture.md#86-memory)). The -built-in `invisible-playwright` skill teaches it the browser: one identity per -person it acts as, a selector before coordinates before a screenshot, the real -pointer and keyboard only, and saying a task is impossible rather than getting -blocked. The Dot writes skills of its own in `/home/dot/skills` as it learns, -and one of its own replaces a built-in one of the same name. - -> [!NOTE] -> Automations run inside the Dot's computer, and the control plane starts the -> computer for them. A Dot that is asleep is started shortly before an -> automation is due (90 seconds ahead by default), and it is not put to sleep -> while one is due, so a job every minute keeps it up. A run whose time passed -> while the computer or the server was down is made once, late, when the -> computer starts, never once for each occurrence it missed. A computer you -> stopped yourself (`invisible-dots computer stop`, or Stop in the web UI) -> stays off, and its automations are paused until you start it again; a message -> or a task still starts it. - -A Dot has no web search or fetch tool, no sub-agents and no tool to message -anyone: it reads the web through its own browser, and only the control plane -talks to chats. - -## The web UI - -The web UI is the same control plane as the command line, with a page for what -you would otherwise read as text. It is set in Geist (bundled with it), has a -light and a dark theme that follows your system unless you choose, and fits a -phone screen. - -**First run.** On a computer that is not ready for a Dot yet, Home shows a -setup checklist: each check of `doctor` that fails, with the command that fixes -it and a button that copies it, and a field for the OpenRouter key while none is -stored. The Settings page shows the same checks, takes a new key (and pushes it -to the Dots that are running), and has the theme. - -**Create a Dot** is a form in three steps (Identity, Brain, Computer and -safety) or the same configuration as YAML, and it refuses what the -configuration schema refuses before anything is sent. The permissions start -from one of three presets: - -| preset | what it does | -|---|---| -| Careful | Asks you before it runs a command or changes a file. | -| Balanced | The defaults: works freely on its own computer, and asks before it deletes a browser identity or adds an automation. | -| Autonomous | Never asks, except before it deletes a browser identity. | - -**The Inbox** is everything that needs you, from every Dot: the approvals that -wait (the one that has waited longest first), a Dot in an error state, a task -that failed in the last 24 hours, and a channel that has to be linked again. An -approval says what the Dot wants to do, under which permission and why, shows a -command, a diff of a file change, an address or a schedule in the form that -reads best, and answers with Allow once, Always allow or Deny with a note. With -the keyboard, once the list of approvals has the focus (click it or Tab to it), -`j` and `k` move between the cards, `a` allows the selected one once and `d` -denies it; a command or a deletion is not allowed by a key press alone. - -**A Dot's page** has seven tabs: - -- **Chat**: the one persistent conversation, with a quiet line for each tool the - Dot used to answer and approvals you can answer in place. The Dot's computer - is always beside it (above it on a narrow screen); both fill the window to - the bottom. -- **Tasks**: what is running (with its latest progress line and its cost), what - is scheduled and queued, and the history. -- **Computer**: Screen, Files and Usage. Screen is the Dot's desktop, where an - open browser is a window. Files is a read-only walk through `/home/dot`. Usage - shows what the computer was given and what it uses, the model spend, the - next automation, and Start, Reboot and Stop. -- **Skills**: the built-in skills and the Dot's own, read only. -- **Channels**: Telegram and WhatsApp, below. -- **Activity**: the whole event log as readable lines, filtered by kind, - searchable, and exportable as JSON Lines. -- **Settings**: the Dot's configuration, as a form or as YAML. Nothing is saved - until you have seen the list of what changes, and a configuration changed - somewhere else in the meantime is never overwritten. - -The desktop is shown as pictures that the control plane reads from the guest -every few seconds while the page is in view, with a LIVE badge and a warning -when a picture is more than 15 seconds old. It is a view and not a remote -desktop: it says "The Dot has control", because nothing you do in it reaches the -computer. Stop asks first, and says that the computer's automations do not run -while you have stopped it. - -## The command line - -| command | what it does | -|---|---| -| `invisible-dots list` | every Dot, with its state | -| `invisible-dots status ` | a Dot, its computer and its recent tasks | -| `invisible-dots message ` | a message in its one persistent conversation | -| `invisible-dots task [--priority N] [--at ISO-8601]` | a queued task; a higher priority runs first, `--at` sets the earliest start | -| `invisible-dots tasks ` | its tasks and their status | -| `invisible-dots cancel ` | stop a task that has not finished | -| `invisible-dots logs [--tail N] [--no-follow]` | its events, then new ones as they come | -| `invisible-dots approvals [--all]` | pending approvals (all of them, the newest first, with `--all`) | -| `invisible-dots approve [--always] [--note text]` | let that one call run; `--always` also allows its permission for the Dot from now on | -| `invisible-dots reject [--note text]` | refuse it; the model is told no | -| `invisible-dots computer start\|stop\|reboot` | power its computer on or off by hand | -| `invisible-dots browser identities` | its browser identities | -| `invisible-dots mcp ` | its MCP servers: where each is, and which secrets are set | -| `invisible-dots secret mcp --dot [--clear]` | set a secret of one of its MCP servers, asked for like the key | -| `invisible-dots channel list [--dot ]` | linked chats and who is paired | -| `invisible-dots channel remove telegram\|whatsapp --dot ` | unlink a chat; its token or keys and paired people are deleted | -| `invisible-dots secret openrouter --dot ` | a key for one Dot instead of the global one | -| `invisible-dots update ` | replace its configuration; refused if it changed since the command read it | -| `invisible-dots delete --yes` | delete it: its computer, its disk and its channels; without `--yes` it only says what would go | - -`` is a Dot's name or id, and `--json` gives machine-readable output. - -## Approvals - -- Every tool call goes through one policy gate. `allow` runs it, `deny` tells - the model no, `ask` stops the turn and records the call with its arguments - ([architecture: policy](architecture.md#84-policy)). -- The defaults are permissive for the Dot's own computer: running commands, - files and the browser are allowed, except deleting a browser identity, which - asks; automations ask; anything unknown is denied. Set any permission to `ask` - or `deny` in the YAML to be asked first or to forbid it. -- An approval can be answered in the web UI, the command line, a Telegram - button or a WhatsApp reply. The first answer wins, a second is ignored, and - the approved call runs at most once. `approve --always` turns that ask into - an allow for the Dot. -- Pending approvals survive a restart of the server or of the Dot. - -## The browser - -Each browser identity is a separate Firefox profile under -`/home/dot/browsers//`, with its own cookies, storage, logins and -fingerprint, the same fingerprint at every launch. It runs on the Dot's desktop, -so it appears in the Screen view and in screenshots of the desktop. The Dot -creates, opens and closes identities with its tools, and `invisible-dots -browser identities` lists them. - -A browser has no proxy of its own by default, and nothing asks for one: it -inherits the egress of the Dot's VM, and its time zone, language and location -follow the exit it actually uses. A proxy for one identity is an explicit -option, set when that identity is created, as the URL the browser library reads -(`http://user:pass@host:port` or `socks5://host:port`); the library, not this -project, judges it when the identity launches. - -A Dot can have a VM proxy: the whole computer of the Dot, browser, commands and -the engine's requests to OpenRouter included, then goes out through it. Set it -in the Dot's settings (VM proxy) or with -`invisible-dots secret proxy --dot ` (asked for like the key; `--clear` -removes it). It is a SOCKS5 URL, `socks5://user:password@host:port`, stored -encrypted and never shown again, and the Dot uses it from its next start. If the -proxy cannot be reached, nothing leaves the VM. When a VM proxy and an identity -proxy are both set, the identity's proxy is reached through the VM's tunnel. - -Launching is explicit: a page action on an identity that is not open fails, so -denying `browser.identity.launch` cannot be undone by navigating. At most 3 -identities are open at once (roughly 0.8 GB each), the least recently used one -closing first, and at most 20 exist. Screenshots go to the model and are never -stored. - -How well the browser holds up against bot checks is measured in -[invisible_playwright's README](https://github.com/feder-cr/invisible_playwright), -on the suites it names. invisible_dots adds no claim of its own: a site can -still refuse a Dot for what it does, and the terms of the sites you point it at -still apply. - -## MCP servers - -A Dot uses the tools of any MCP server you declare, the way Claude Code and -Codex do: in its settings (MCP servers), or in its YAML. - -```yaml -mcp_servers: - time: - command: uvx # runs on the Dot's computer, as the Dot's user - args: [mcp-server-time] - search: - url: https://search.example/mcp - secrets: [Authorization] # its value is set apart, never in the YAML -``` - -A server's tools are named `mcp__`, and one permission covers -them all, `mcp.`, which asks you before each call until you allow it -(or "Always allow" an approval). A secret, an API key or a token, is set in the -settings next to its server or with -`invisible-dots secret mcp --dot ` (asked for like the -key; `--clear` removes it): it reaches the server as an environment variable or -a header, never through the YAML or a command line. - -The Dot can add a server itself, as NanoClaw's agents can: it installs the -program (`uvx`, which is there, or from GitHub with `uv tool install -git+https://...`; for `npx` it runs `sudo dot-install nodejs npm`), then calls -`add_mcp_server`. That asks you first (`mcp.servers.add`): the approval shows -what the server runs or where it is, the secrets you will set, and why; approved, -the server is in the Dot's settings and its tools are the Dot's from its next -message, each asking you until you allow it. Only you change or remove a server. -A server that cannot start says why, in its settings, in `invisible-dots mcp ` -and to the Dot itself, and it is started again when the Dot's next message or task -begins. - -## Talk to it from your phone - -**Telegram.** Make a bot with @BotFather (one bot per Dot), then: - -```sh -invisible-dots channel add telegram --dot my-first-dot -invisible-dots channel pair telegram --dot my-first-dot -``` - -`channel add` asks for the bot's token and stores it encrypted. `channel pair` -prints a one-time link, valid ten minutes: open it in Telegram and press Start, -and that account is the Dot's owner from then on. Messages from anyone else are -dropped before they cost anything. Approvals arrive with Approve and Reject -buttons, the arguments cut to 300 characters. Telegram bot chats are not -end-to-end encrypted. Text only. - -A channel has three settings, all on by default: `approvals` (ask approvals in -the chat), `show_arguments` (show the tool's arguments in them) and -`notify_tasks` (what the Dot says on its own: finished and failed tasks, and -the answers to its automations). The Channels tab of the web UI has a switch -for each, and the API sets them too: - -```bash -curl -X PATCH http://127.0.0.1:8787/api/dots/my-first-dot/channels/telegram \ - -H "Authorization: Bearer $(head -1 ~/.invisible-dots/config/api.token)" \ - -H "Content-Type: application/json" \ - -d '{"settings": {"show_arguments": false}}' -``` - -**WhatsApp** is opt-in, and it needs a warning first. - -> [!WARNING] -> This is not an official way to use WhatsApp. It links the Dot as a device of -> a personal account through an unofficial client (Baileys, pinned to one -> release candidate), which WhatsApp's terms do not allow for automation and -> which can get the account restricted or banned. Use a number of its own, such -> as a spare SIM or eSIM, never the one you live on. - -Install the client once, from the repository folder, then start the server with -`INVISIBLE_DOTS_WHATSAPP=1`: - -```sh -npm run whatsapp:install -invisible-dots channel link whatsapp --dot my-first-dot -invisible-dots channel pair whatsapp --dot my-first-dot -``` - -`channel link` shows a QR code to scan under WhatsApp > Settings > Linked -devices; the linked device's keys are stored encrypted. `channel pair` prints a -link that opens a chat with the number and `pair ` ready to send. The Dot -never writes first, to anyone, answers only people who paired, in private -chats, and takes text only. Approvals are answered in words -(`yes ap-xxxxxx` or `no ap-xxxxxx`); a bare `yes` is an ordinary message. - -Baileys depends on `libsignal`, which is GPL-3.0, so nothing of it is installed -by default: `npm ci` installs neither, and neither is in the bundled command. -`npm run whatsapp:install` installs them into `optional/whatsapp/`, pinned to -one release by a lock file with the integrity of every package, and the server -loads them from there only when WhatsApp is linked -([THIRD_PARTY_NOTICES.md](../THIRD_PARTY_NOTICES.md), -[architecture: messaging channels](architecture.md#98-messaging-channels)). - -## How it works - -The web UI and the command line call the HTTP API; the scheduler behind it keeps -the queue in a database and starts and stops one QEMU VM per Dot; inside the VM, -the engine reasons with OpenRouter, runs the model's commands through the -computer daemon and drives its browsers on the VM's desktop; Telegram and -WhatsApp reach the scheduler through the channel hub. - -```mermaid -flowchart LR - subgraph PC["Your PC: one invisible-dots server process"] - WEB["Web UI
127.0.0.2:3000"] - CLI["CLI"] - API["HTTP API and SSE
127.0.0.1:8787"] - SCH["Scheduler
queue, outbox, approvals, sleep and wake"] - HUB["Channel hub"] - VMM["vm-manager
the QEMU driver"] - DB[("PostgreSQL
embedded PGlite by default")] - end - subgraph VM["One QEMU VM per Dot"] - AGD["dot-agentd
the computer daemon, user dotagentd"] - ENG["Engine, a nanobot fork
user dotengine, key in memory"] - DESK["Xvfb and XFCE desktop"] - BR["invisible-playwright-mcp
one per open identity"] - end - WEB -->|"API calls with the token"| API - CLI -->|"API calls with the token"| API - API -->|"messages, tasks, answers"| SCH - HUB -->|"chat messages and approvals"| SCH - SCH -->|"queue, events, approvals"| DB - SCH -->|"start, stop, reboot"| VMM - VMM -->|"starts and stops"| VM - SCH -->|"loopback port forward
token after an HMAC proof"| AGD - AGD <-->|"proxy, and the model's commands"| ENG - ENG -->|"browser tools over MCP"| BR - BR -->|"windows on"| DESK - ENG -->|"model requests"| OR["OpenRouter"] - HUB <-->|"bot messages"| TG["Telegram"] - HUB <-->|"linked device"| WA["WhatsApp, opt-in"] - BR -->|"pages, from the VM's egress"| SITES["The web"] -``` - -- **One process on the host.** `invisible-dots server` runs the API, the - scheduler, the VM driver and the channel hub, and starts the web client as a - child (`--no-web` leaves it out). The database is an embedded PostgreSQL - (PGlite) in the data directory, or an external PostgreSQL 16 or newer through - `DATABASE_URL`. -- **One VM per Dot.** QEMU with KVM or the Windows Hypervisor Platform; never - software emulation. A copy-on-write disk over a golden image, plus a - read-only runtime disk with our code. Both images are built from pinned, - hashed inputs - ([architecture: two images](architecture.md#33-two-images-two-lifetimes)). -- **The engine** is a hard fork of [nanobot](https://github.com/HKUDS/nanobot) - in Python, cut down to its core: the turn runner, OpenRouter, the tools above, - automations, skills, and an MCP client that serves only the browser - ([invisible_engine_dots/UPSTREAM.md](../invisible_engine_dots/UPSTREAM.md)). -- **Durable on both sides.** The host writes what it tells a guest in the - same transaction as the decision, so a restart loses nothing you saw - accepted ([architecture: durable queue](architecture.md#92-durable-queue)). - The engine keeps its state in one SQLite file and commits each step with the - events that describe it; its event stream keeps its order across a - `kill -9`. A task cut short by a crash is started again with a note that the - last attempt was interrupted, and fails once it has been started three times - ([architecture: crash recovery](architecture.md#87-crash-recovery)). -- **The server can restart without stopping Dots.** QEMU runs detached, and a - new server adopts the VMs it finds running. A VM that dies while its Dot has - work is started again. - -The full contract every part is written against: -[docs/architecture.md](architecture.md). - -## Security model and known limits - -What protects you: - -- The OpenRouter key is never written to the image, the disk or the seed. It - is pushed to the Dot after every start and held in the engine's memory only - ([architecture: secrets](architecture.md#43-secrets)). -- The engine and the computer daemon each run as a user of their own, and the - model's commands as a third, `dot`, which can reach neither: it cannot read - the engine's state or the Dot's token, cannot connect to the engine's socket - (so it cannot change the Dot's permissions or approve its own calls), cannot - stop either daemon and cannot become root - ([architecture: processes](architecture.md#41-processes-systemd-each-unit-as-the-user-it-names)). - The one thing it may do as root is install Ubuntu packages it is missing, - `sudo dot-install ...`: the command takes package names and nothing - else, so no option reaches apt; the packages' own install scripts run as root, - and they come from the Ubuntu archive. -- The channel between host and guest goes one way: the host calls the guest - on a loopback port, with the Dot's token, and only after the guest proves it - holds that token. The API needs a bearer token (the command line reads it - from `config/api.token` itself); the web UI needs none and listens on - 127.0.0.2, which no Dot's VM reaches. -- Files the host shows from a Dot come only from `/home/dot`, at most 16 MiB, - never served as a type a browser would run. -- The proxy of an identity, when it has one, is not shown by the host: an - identity says only that it has one, an approval shows it as `***`, and no - event carries it. -- Secrets on the host (the OpenRouter key, channel tokens, WhatsApp keys) are - stored encrypted; see [Configuration](#configuration). - -What it does not protect against, by design or not yet: - -- The model's commands run as `dot`, which can read the proxy of an identity - that was given one, password included, from the open browser's environment - and from the browser server's own session file, and what the browser server - says of a proxy it refuses reaches the model and the engine's log as it is. - An identity with no proxy, the default, has nothing to read. -- The split between the three users is the guest operating system's. A flaw in - the guest's kernel, or a way to become root that this repository does not - know of, would end it. The VM is what stands between the Dot and your PC - then, with the reach into your PC's loopback listed below. -- The computer daemon holds three capabilities (`CAP_SETUID`, `CAP_SETGID` and - `CAP_KILL`, to run the model's work as `dot`) and may run one command as - root, the power-off. A flaw in the daemon would be worth more than one in an - ordinary program. Its one door, a TCP port inside the guest, needs the Dot's - token, which `dot` cannot read. -- Nothing limits how much disk, memory or processor time the model's commands - use of their own VM, so a runaway command can starve the Dot's own daemons - until the VM is stopped or restarted. -- When typing in the browser is set to `ask`, the approval shows the text being - typed, password or not. -- Each Dot can reach services on your PC's loopback through `10.0.2.2`. - Everything invisible_dots listens on there needs a credential the Dot lacks, - but nothing else should listen there unauthenticated - ([architecture: networking](architecture.md#36-networking-and-its-limits), - [architecture: browser identities](architecture.md#6-browser-identities)). - -## Privacy - -invisible_dots runs on your machine and has no server of its own. What leaves -it, and to whom: - -- **OpenRouter** gets the conversation, the tool results and what the Dot - reads, under your key. Requests carry the headers - `HTTP-Referer: https://github.com/feder-cr/invisible_dots` and `X-Title: invisible_dots`. -- **Telegram and WhatsApp** carry the messages and approval prompts of a - linked channel, and can read them. Link previews are off, so neither - service fetches a link of a message on its own; a person who taps a link - opens it themselves. -- **The sites a Dot visits** see its browser, coming from the egress of the Dot's - VM, or from the identity's proxy when you gave that one identity a proxy. -- **Publishers of what the images are made of** (Ubuntu, uv, the Python - packages, the browser engine) serve the downloads when you build them; on - Windows, `setup` downloads the official QEMU installer. -- **The browser layer.** - [invisible-playwright-mcp's privacy policy](https://github.com/feder-cr/invisible_playwright_mcp#privacy-policy) - says each browser launch fetches a one-line counter file from a GitHub - release, carrying no identifier. -- **Address-echo services** (`api.ipify.org`, `icanhazip.com`, - `checkip.amazonaws.com`) are asked by the browser library at each launch for - the public address the browser exits from, to set the time zone and locale, - and it keeps its GeoIP database current from its GitHub release. -- **The web UI** loads nothing from other sites: its pages, scripts and styles - come from the server on your PC, its fonts (Geist) included. A link you - press (to @BotFather, to an OpenRouter page) opens that site. -- **No telemetry of invisible_dots.** Nothing of its own reports on how you use - it: Next.js's build telemetry is off in the web client's own config, so no - way of building it sends any, and the Dots' Ubuntu has no crash reporter and - no pollinate. The browser layer's launch counter, above, is that library's. - -Your Dots' disks, memory and conversations stay in the data directory and -inside their VMs. - -## Configuration - -A Dot is one YAML file, checked by one schema: name, instructions, -model, computer (cpu, memory, disk, idle timeout), permissions, limits and MCP -servers. Every field and its range is in -[architecture: Dot configuration](architecture.md#7-dot-configuration); -`invisible-dots init` writes a sample. - -One server runs per data directory. Secrets (the OpenRouter key, channel -tokens, WhatsApp keys, MCP servers' secrets) are stored with AES-256-GCM under -`config/master.key`; anyone who can read the data directory can decrypt them, -so it is kept private to your user. - -
-The environment variables the host reads - -| variable | default | what | -|---|---|---| -| `INVISIBLE_DOTS_HOME` | `~/.invisible-dots` | the data directory: keys, database, images, VM disks, logs. Plain ASCII, no comma | -| `INVISIBLE_DOTS_LISTEN` | `127.0.0.1:8787` | where the server's API listens | -| `INVISIBLE_DOTS_URL` | `http://127.0.0.1:8787` | where the CLI finds the server | -| `INVISIBLE_DOTS_TOKEN` | first line of `config/api.token` | the API token, instead of the file | -| `INVISIBLE_DOTS_WEB_LISTEN` | `127.0.0.2:3000` | where the web client listens; keep it off 127.0.0.1, which every Dot's VM reaches | -| `INVISIBLE_DOTS_WEB_ALLOWED_HOSTS` | loopback only | other host names the web client answers to | -| `INVISIBLE_DOTS_QEMU_DIR` | official installer's folder, then `PATH` | the one folder QEMU is looked for in | -| `INVISIBLE_DOTS_WHATSAPP` | off | `1` offers the WhatsApp channel (after `npm run whatsapp:install`) | -| `DATABASE_URL` | embedded PGlite | an external PostgreSQL 16 or newer | -| `INVISIBLE_DOTS_DEBUG` | off | `1` adds debug lines to the server's log | - -
- -## Troubleshooting - -- `invisible-dots doctor` first: one line per check, and the command that fixes - a failure. -- The server logs to the terminal it runs in; `INVISIBLE_DOTS_DEBUG=1` adds - debug lines. -- A Dot that does not start: QEMU's own output is in - `~/.invisible-dots/logs/qemu-.log`, and the guest's serial console in - `~/.invisible-dots/vms//serial.log` (rewritten at each start). - `invisible-dots list` shows each Dot's id. -- What a Dot did and why it stopped: `invisible-dots logs ` and - `invisible-dots tasks `, or the Dot's Activity tab in the web UI. -- The web UI does not open: `invisible-dots server` says why it did not start - it (not built, port taken) in its output. Its address is - http://127.0.0.2:3000, not 127.0.0.1. - -## Updating and uninstalling - -**Updating.** Stop the server (Ctrl+C), then in the repository folder: -`git pull`, `npm ci`, the builds of the command line -(`npm run build --workspace @invisible-dots/cli`), of the web client -(`npm run build --workspace @invisible-dots/web`) and of dot-agentd (step 1 of -`setup --all` above), `invisible-dots image build`, and `invisible-dots server` -again. Running Dots keep -running meanwhile: QEMU is not a child of the server. Each VM start takes the -newest runtime image (our code), so `invisible-dots computer reboot` -moves a Dot to it. A Dot keeps the golden image it was created on, and new Dots -get the newest one; this version has no way to move a Dot to a new golden image. - -**Uninstalling.** Stop each Dot's computer (`invisible-dots computer -stop`) while the server runs, since a VM outlives the server, then stop the -server and delete the data directory (`~/.invisible-dots`, or your -`INVISIBLE_DOTS_HOME`) and the repository folder. What `setup` installed stays -until you remove it yourself: QEMU, the Windows Hypervisor Platform feature on -Windows, and your membership of the `kvm` group on Linux. - -## Status and what is not done yet - -Alpha. Nothing is released yet; the golden image is the one thing published. - -- **The real-VM acceptance run is not in CI.** It - (`tests/e2e/run.ts`: build, create, browse, approve, kill the VM, restart, - scan the disk for the key) passes its 16 steps on a Linux host with KVM, run - by hand; CI keeps its contract in step with the product and tests the guest - with the container smokes, which run its daemons without a VM. -- **Windows is measured by hand, not by an automated run**: Dots on WHPX were - driven through the web client (chat, tasks, approvals, files, browser - identities, sleep and wake, reboot). It runs the same code path as Linux, and - every difference between the two is listed in - [architecture: one mechanism on every host](architecture.md#11-one-mechanism-on-every-host). -- **The install is one command after the checkout, not before it.** Node, Go - and Git, the clone, `npm ci` and the build of the command line itself are - still typed by hand, because the command needs them to exist before it can - run. -- **Channels carry text only**, one Telegram bot per Dot; the official - WhatsApp Cloud API is a later adapter on the same hub. -- **Not in this version**: snapshots and rollback, backups, quotas, network - policies, controlling the desktop or an - interactive terminal for you (the web UI shows the desktop as pictures, and - nothing you do there reaches the computer), artifacts, several hosts, - organisations and roles, macOS hosts - ([architecture: out of scope](architecture.md#10-out-of-scope-for-this-version)). - -## Development and tests - -Besides the quickstart's tools, development needs Python 3.11 or newer for the -engine, and Docker for the smokes. - -```sh -npm ci -npm run typecheck -npm test # vitest over the TypeScript workspace and tests/repo -git config core.hooksPath .githooks # the pre-push gate: typecheck, vitest, go test, prose checks -``` - -The pre-push gate's prose checks need Python with the pinned invisible-core. The -hook looks for it in `tmp/gates-venv` first: -`python -m venv tmp/gates-venv`, then -`tmp/gates-venv/bin/python -m pip install -r .github/gates-requirements.txt` -(on Windows the interpreter is `tmp\gates-venv\Scripts\python.exe`). - -- The engine: `pip install -e ".[dev]"` and `pytest` in - `invisible_engine_dots/` (Linux only: it uses unix sockets). -- dot-agentd: `go test ./...` in `guest/dot-agentd/`. -- The web client's browser tests: build it (`npm run build --workspace - @invisible-dots/web`), install the browser they drive (`npx playwright install - chromium`) and run `npm run test:e2e --workspace @invisible-dots/web`. Each run - starts the real control plane over a fake VM layer and the built web client as - the product runs it. -- The engine smoke and the browser smoke run the guest's two daemons, and the - real invisible-playwright-mcp with its Firefox, in Linux containers: - `bash guest/image-builder/test/smoke/run.sh` (add `--suite browser`); only - Docker is needed - ([the smoke tests README](../guest/image-builder/test/smoke/README.md)). -- The acceptance run on a real VM, `node tests/e2e/run.ts`, needs a Linux host - with KVM and an OpenRouter key, and is not part of CI - ([the acceptance run README](../tests/e2e/README.md)). - -
-What CI runs, and where the code lives - -CI runs on pushes to main and on pull requests: typecheck and vitest on Linux -and Windows, the database layer against a real PostgreSQL, dot-agentd's Go -tests and static build, the engine's pytest, the ISO images read by the Linux -kernel, both smokes, the web build with its Playwright tests, the opt-in -WhatsApp client against its real library, and two prose -gates (English only, and a README that promises nothing it cannot support). The -vitest, Go, pytest and Playwright runs are counted against the floors in -`.github/test-floors.json`, and the smokes fail on a skipped check, so a test -that stops running fails the build. - -| folder | what | -|---|---| -| `apps/` | `api`, `scheduler`, `vm-manager`, `web`, `cli` | -| `packages/` | shared types and schemas, database, events, channels, the ISO writer, the SDK | -| `guest/` | `dot-agentd` (Go) and the image builder | -| `invisible_engine_dots/` | the Dot's engine (Python) and its built-in skills | -| `virtualization/` | the pinned QEMU, cloud-init templates, base image metadata | -| `tests/` | checks over the whole repository, the real-VM run, and the agent benchmark | - -
- -## Acknowledgements - -- [nanobot](https://github.com/HKUDS/nanobot), the agent the Dot's engine is a - fork of. -- [invisible_playwright](https://github.com/feder-cr/invisible_playwright) and - [invisible-playwright-mcp](https://github.com/feder-cr/invisible_playwright_mcp), - the Dot's browser. -- [QEMU](https://www.qemu.org), [Ubuntu cloud images](https://cloud-images.ubuntu.com), - [PGlite](https://pglite.dev), [Next.js](https://nextjs.org) and - [Baileys](https://github.com/WhiskeySockets/Baileys). -- The Agent Skills layout of [Claude Code](https://github.com/anthropics/claude-code), - which the Dot's skills follow. - -## License - -MIT ([LICENSE](../LICENSE)). The engine under `invisible_engine_dots/` is a fork -of nanobot, also MIT, under its own [LICENSE](../invisible_engine_dots/LICENSE); -parts of this repository's history come from Open Multi-Agent, also MIT. Their -notices are in [THIRD_PARTY_NOTICES.md](../THIRD_PARTY_NOTICES.md). QEMU (GPL-2.0) -is installed from its official installer or your distribution and only run as -a separate program, never bundled. The guest operating system, the browser -engine and the packages in the golden image keep their own licenses; the -published golden image is Ubuntu with those packages, and whoever copies it -takes on those licenses -([architecture: licensing](architecture.md#113-licensing)). Nothing under -the GPL is installed by the default `npm install`; the WhatsApp client, which -brings a GPL-3.0 dependency, is an opt-in install. - -invisible_dots is an independent project, not affiliated with OpenRouter, -Telegram, WhatsApp or Meta. diff --git a/docs/hero/README.md b/docs/hero/README.md deleted file mode 100644 index aa8ba90a..00000000 --- a/docs/hero/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# The README animation - -The six `docs/images/hero-*.gif` are built from this folder, in three layers, each -made from the one before: - -| layer | where | what it is | -|---|---|---| -| photos | `photos/` | the pictures the animation shows | -| frames | `html/` | one page per layout that composes the photos; `renderLoop(t)` draws the frame at second `t` | -| GIFs | `docs/images/` | the frames, 12 a second, one palette per loop | - -The repository's social preview, `docs/images/social-preview.png`, comes from the -same photos through one more page, `html/social.html`, as a single frame. - -```sh -node docs/hero/build.mjs # all six GIFs and the social preview -node docs/hero/build.mjs wide # only hero-light.gif and hero-dark.gif -node docs/hero/build.mjs social # only the social preview -``` - -The social preview is not read from the tree: after a build it is uploaded by hand, -in the repository's Settings, under Social preview. - -It needs the repository's `node_modules` (Playwright comes with `apps/web`), Python -with Pillow, NumPy and SciPy, and `ffmpeg` on `PATH`. The pages use Segoe UI and -Consolas, so the GIFs come out identical only on Windows. The frames land in -`docs/hero/frames/`, which is not tracked. - -## The photos - -| file | what it is | edit it? | -|---|---|---| -| `photos/characters.png` | the four characters on a white background | yes: this is the one to replace | -| `photos/characters-light.png` | the same, cut out for the light theme, shadows kept | no, `cut_out.py` writes it | -| `photos/characters-dark.png` | the same, cut out for the dark theme, shadows removed | no, `cut_out.py` writes it | -| `photos/trending.png` | the GitHub Trending page in the last scene's third card | yes | - -New characters are a new `characters.png`, drawn on plain white, all four in one -row and about the same height. The build cuts them out again on every run. - -## The pages - -| page | builds | size | -|---|---|---| -| `html/wide.html` | `hero-light.gif`, `hero-dark.gif` | 1280 x 470 | -| `html/mobile.html` | `hero-mobile-light.gif`, `hero-mobile-dark.gif` | 720 x 620 | -| `html/small.html` | `hero-small-light.gif`, `hero-small-dark.gif` | 720 x 620 | -| `html/social.html` | `social-preview.png` | 1280 x 640 | - -The three animated pages read `?theme=light` or `?theme=dark` and, opened in a browser, play -the whole loop as the GIF will: the scenes, their words and their timing are all -in the page. With `&frames` they stay still and wait for `renderLoop(t)`, which is -how the build takes one frame at a time. A change to a scene is a change to the -three pages, then a build. - -The README picks the GIF by the reader's width and theme, in its `` at -the top. diff --git a/docs/hero/build.mjs b/docs/hero/build.mjs deleted file mode 100644 index f2a2a730..00000000 --- a/docs/hero/build.mjs +++ /dev/null @@ -1,97 +0,0 @@ -// The README animation, rebuilt from its pieces: photos -> frames -> GIFs. -// -// 1. photos cut_out.py turns photos/characters.png into one cut-out per theme -// 2. frames each page in html/ composes the photos; renderLoop(t) draws the -// frame at second t, and Chromium takes a screenshot of it, 12 a second -// 3. GIFs ffmpeg turns each run of frames into docs/images/hero-*.gif -// -// html/social.html is a page of one frame: the repository's social preview, written -// to docs/images/social-preview.png. -// -// node docs/hero/build.mjs everything -// node docs/hero/build.mjs wide social only those pieces (wide, mobile, small, social) -// -// Needs the repository's node_modules (Playwright comes with apps/web), Python with -// Pillow, NumPy and SciPy, and ffmpeg on PATH. The pages use Segoe UI and Consolas, -// so the GIFs come out identical only on Windows. -import { spawnSync } from "node:child_process"; -import { mkdirSync, rmSync } from "node:fs"; -import { createRequire } from "node:module"; -import path from "node:path"; -import { fileURLToPath, pathToFileURL } from "node:url"; - -const HERE = path.dirname(fileURLToPath(import.meta.url)); -const ROOT = path.resolve(HERE, "..", ".."); -const { chromium } = createRequire(path.join(ROOT, "package.json"))("@playwright/test"); - -const FPS = 12; -const LAYOUTS = { - wide: { page: "wide.html", width: 1280, height: 470, gif: "hero" }, - mobile: { page: "mobile.html", width: 720, height: 620, gif: "hero-mobile" }, - small: { page: "small.html", width: 720, height: 620, gif: "hero-small" }, -}; -const THEMES = ["light", "dark"]; -// Pictures of one frame. The social preview is uploaded by hand in the repository's -// Settings, so it is written where it can be found for that. -const STILLS = { - social: { page: "social.html", width: 1280, height: 640, out: "social-preview.png" }, -}; - -function run(cmd, args) { - const r = spawnSync(cmd, args, { stdio: "inherit" }); - if (r.status !== 0) throw new Error(`${cmd} failed (${r.error ? r.error.message : `exit ${r.status}`})`); -} - -const wanted = process.argv.slice(2); -const known = [...Object.keys(LAYOUTS), ...Object.keys(STILLS)]; -for (const name of wanted) if (!known.includes(name)) throw new Error(`unknown piece ${name}: ${known.join(", ")}`); -const layouts = (wanted.length ? wanted : Object.keys(LAYOUTS)).filter((n) => LAYOUTS[n]); -const stills = (wanted.length ? wanted : Object.keys(STILLS)).filter((n) => STILLS[n]); - -// 1. photos -run(process.platform === "win32" ? "python" : "python3", [path.join(HERE, "cut_out.py")]); - -const browser = await chromium.launch(); -try { - for (const name of layouts) { - const { page: file, width, height, gif } = LAYOUTS[name]; - for (const theme of THEMES) { - // 2. frames - const dir = path.join(HERE, "frames", `${name}-${theme}`); - rmSync(dir, { recursive: true, force: true }); - mkdirSync(dir, { recursive: true }); - const page = await browser.newPage({ viewport: { width, height }, deviceScaleFactor: 1 }); - // ?frames stops the page's own playback: every frame is the one renderLoop(t) drew - await page.goto(`${pathToFileURL(path.join(HERE, "html", file)).href}?theme=${theme}&frames`); - await page.waitForLoadState("load"); - const seconds = await page.evaluate(() => window.LOOP_SECONDS); - const count = Math.round(seconds * FPS); - for (let i = 0; i < count; i++) { - await page.evaluate((t) => window.renderLoop(t), i / FPS); - await page.screenshot({ path: path.join(dir, `f${String(i).padStart(5, "0")}.png`) }); - } - await page.close(); - - // 3. GIF: one palette for the whole loop, built from every frame - const out = path.join(ROOT, "docs", "images", `${gif}-${theme}.gif`); - run("ffmpeg", [ - "-v", "error", "-y", "-framerate", String(FPS), "-i", path.join(dir, "f%05d.png"), - "-vf", "split[a][b];[a]palettegen=max_colors=256:stats_mode=full[p];[b][p]paletteuse=dither=sierra2_4a:diff_mode=rectangle", - "-loop", "0", out, - ]); - console.log(`${path.relative(ROOT, out)}: ${count} frames, ${seconds}s`); - } - } - for (const name of stills) { - const { page: file, width, height, out: picture } = STILLS[name]; - const page = await browser.newPage({ viewport: { width, height }, deviceScaleFactor: 1 }); - await page.goto(pathToFileURL(path.join(HERE, "html", file)).href); - await page.waitForLoadState("load"); - const out = path.join(ROOT, "docs", "images", picture); - await page.screenshot({ path: out }); - await page.close(); - console.log(`${path.relative(ROOT, out)}: ${width}x${height}`); - } -} finally { - await browser.close(); -} diff --git a/docs/hero/cut_out.py b/docs/hero/cut_out.py deleted file mode 100644 index 65f2b16c..00000000 --- a/docs/hero/cut_out.py +++ /dev/null @@ -1,88 +0,0 @@ -"""photos/characters.png -> photos/characters-light.png and photos/characters-dark.png. - -The four characters arrive as one picture on a white background, the way an image -model draws them. The animation needs them without it, and differently per theme: - - light only the white connected to the picture's edge turns transparent, through - the edge's own shades, so the soft shadows under the feet stay and the - fur fades into the page the way it faded into the white; - dark the same, and the pale grey of those shadows goes too, since a light - shadow on a dark page reads as a stain. - -Only background CONNECTED TO THE EDGE is touched: the whites of the eyes and a lens -are as white as the background and stay opaque. Both outputs are cropped to the -characters, so the pages size them by width alone. - - python docs/hero/cut_out.py -""" -from pathlib import Path - -import numpy as np -from PIL import Image -from scipy import ndimage - -HERE = Path(__file__).parent -SRC = HERE / "photos" / "characters.png" - -#: How far from pure white a pixel may be and still be background (0-255, on the -#: channel furthest from white). Covers the paper-white of the picture and its -#: anti-aliased edge; fur is far past it. -PALE = 60 -#: A pale pixel with less colour than this is a shadow, not fur fading into white. -GREY = 18 -#: How many pixels past the background the fur still carries some of its white. -BAND = 3 -#: How far from pure white the paper may be: within this it is no picture at all. -PAPER = 6 - - -def cut(rgb: np.ndarray, keep_shadows: bool) -> np.ndarray: - a = rgb.astype(np.float64) - far = (255.0 - a).max(axis=2) # 0 = pure white - spread = a.max(axis=2) - a.min(axis=2) # 0 = no colour at all - labels, _ = ndimage.label(far <= PALE) - edge = np.unique(np.concatenate([labels[0], labels[-1], labels[:, 0], labels[:, -1]])) - bg = np.isin(labels, edge[edge > 0]) - # The fur's outermost pixels are part fur, part white, and past PALE: left - # opaque they draw a thin light outline on a dark page. They are the band just - # outside the background, and colour to alpha is exact for them too. - band = ndimage.binary_dilation(bg, iterations=BAND) - - # Colour to alpha against white: the least alpha that explains the pixel as - # some colour over white, and that colour with the white taken out. - alpha = np.where(band, far / 255.0, 1.0) - # The paper itself is not pure white (an image model draws it at 253-254), and - # colour to alpha turns that into an opacity of 1 or 2 out of 255 with made-up - # colours: a faint box around the characters on any page that is not white. - alpha = np.where(bg & (far <= PAPER), 0.0, alpha) - if not keep_shadows: - alpha = np.where(bg & (spread < GREY), 0.0, alpha) - safe = np.maximum(alpha, 1e-6)[..., None] - colour = np.where(band[..., None], 255.0 - (255.0 - a) / safe, a) - out = np.dstack([np.clip(colour, 0, 255), alpha * 255.0]).round().astype(np.uint8) - out[out[..., 3] == 0, :3] = 0 - return out - - -def box(rgba: np.ndarray, margin: int = 8) -> tuple: - """The characters' bounding box. ONE box for both themes: cropped apart, the - light one (shadows included) would be taller, and at the same width on the - page the characters would change size between the two themes.""" - ys, xs = np.nonzero(rgba[..., 3] > 8) - return (max(0, ys.min() - margin), min(rgba.shape[0], ys.max() + margin + 1), - max(0, xs.min() - margin), min(rgba.shape[1], xs.max() + margin + 1)) - - -def main() -> None: - rgb = np.asarray(Image.open(SRC).convert("RGB")) - cuts = {"light": cut(rgb, keep_shadows=True), "dark": cut(rgb, keep_shadows=False)} - y0, y1, x0, x1 = box(cuts["light"]) - for theme, rgba in cuts.items(): - out = rgba[y0:y1, x0:x1] - path = HERE / "photos" / f"characters-{theme}.png" - Image.fromarray(out, "RGBA").save(path, optimize=True) - print(f"{path.name}: {out.shape[1]}x{out.shape[0]}") - - -if __name__ == "__main__": - main() diff --git a/docs/hero/html/mobile.html b/docs/hero/html/mobile.html deleted file mode 100644 index ec4dc480..00000000 --- a/docs/hero/html/mobile.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - -
-
-
Thinking...
-
-
- -
-
its computer · Firefox
-
-
-
built to be undetectable by anti-bots
- -
-
Add an automation?
-
Monthly: the shop's invoices, the total to Telegram
-
Allow
Reject
-
-
- -
- - - - - -
-
Terminal
-
~/documents
14 PDFs
-
Firefox
Shop · ⬇ Invoices
-
- -
~/skills/invoices.md
-
~/memory · the total, not the list
- -
invoices
the shop's invoices, monthly
own VM
-
fare-watch
cheapest flight, every morning
own VM
-
researcher
GitHub Trending → Telegram
own VM
- - - - - - diff --git a/docs/hero/html/small.html b/docs/hero/html/small.html deleted file mode 100644 index a9241bc1..00000000 --- a/docs/hero/html/small.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - -
-
-
Thinking...
-
-
- -
-
its computer · Firefox
-
-
-
built to be undetectable by anti-bots
- -
-
Add an automation?
-
Monthly: the shop's invoices, the total to Telegram
-
Allow
Reject
-
-
- -
- - - - - -
-
Terminal
-
~/documents
14 PDFs
-
Firefox
⬇ Invoices
-
- -
~/skills/invoices.md
-
~/memory · the total, not the list
- -
invoices
the shop's invoices, monthly
own VM
-
fare-watch
cheapest flight, every morning
own VM
-
researcher
GitHub Trending → Telegram
own VM
- - - - - - diff --git a/docs/hero/html/social.html b/docs/hero/html/social.html deleted file mode 100644 index fb083392..00000000 --- a/docs/hero/html/social.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - -invisible_dots social preview - - - -
-
invisible_dots
-
Open-source, self-hosted alternative to OpenAI Dots, Manus, Claude Cowork & co.
-
AI agents with a computer of their own. Built to be undetectable by anti-bots.
- - - diff --git a/docs/hero/html/wide.html b/docs/hero/html/wide.html deleted file mode 100644 index 98cacb4b..00000000 --- a/docs/hero/html/wide.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - -
 invisible_dots
-
- -
-
I
invoices
-
-
I
Thinking
-
-
- -
-
 researcher's computer · Firefox
-
-
-
built to be undetectable by anti-bots
- -
-
invoices asks
-
Add an automation
-
On the 1st of every month, 09:00
Download the shop's invoices, send the total to Telegram
-
Allow once
Always allow
Reject
-
-
- -
-
I
invoices
-
08:00
-
-
- - - - - -
-
Applications  ·  invoices' computer
-
~/documents/invoices/2026-10
-
0412.pdf
0413.pdf
0414.pdf
-
Terminal
-
Firefox · identity "shop"
Ceramiche Rossi · Admin
Invoices · October 2026
#0412 · €84.00⬇ PDF
#0413 · €126.50⬇ PDF
#0414 · €310.00⬇ PDF
-
- -
~/skills/shop-invoices.md
-
~/memory · Federico wants the total, not the list.
- -
-
-
I
invoices
wakes on the 1st
-
~/documents
📄 0412.pdf
📄 0413.pdf
-
Monthly
the shop's invoices → Telegram
-
-
F
fare-watch
running · its own VM
-
$ fares.py
07/10 €38
09/10 €31
-
Every morning
cheapest flight, Milan → Lisbon
-
-
R
researcher
running · its own VM
-
-
Every day 08:00
GitHub Trending → Telegram
-
- - - - - - diff --git a/docs/hero/photos/characters-dark.png b/docs/hero/photos/characters-dark.png deleted file mode 100644 index c3ea9fbb48a0eaeda68f10ad8131eedfb68204bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1389131 zcmdqI_cxqt+Xk!~QAaPM%;>!{I%CvCCrXs)M2XQw7h!Y~Q73vQM2H^Ii7trV%Lt+- zO0>^@-o4-beCvDvf^V(sr{gOmH|T?;+#6xcbgXWFdu4+&5%DHq+d#*TswX2(H1R z7$o^In-*JYS_N<2R_aFUV);*R9C*UROo;~Rb9eeMfJp)g3 z?)xUmr;>plc;w(sZUPwo?8uQbiYqNk4C4(a0RS+gYi80RRUQj2T5xqc2$_+F;;<%+ zPEQr`GO=oUqVSi1XSD}CzPnd8n)KEyr%}}Y|M=U!=QJEuLh&oTvgdc}eL;QJzM#lN zWwexsm%ytIuqa7y9h*?UaC!$(KT*caxmn~W0dY>)I0T0Z#Deva%8)A-TZBNRZc3MI zAT=zR0LeuWBcACc^4Z}#^t%A!(dKgfc5pZ0byxB8?ezV9y8k1tju-xV?F~P=!y5^v zY&DVvcC}j(<80h?b`K3Kwc(~sdI2Dma!l!r4>64JhIj+qs0_up5)Y0`BXM3=YQvQ3 zElunWc?^bmbuoe7r&%X0d}u{kqQgsekpl2m)?wZ z;MgStUMqQB##uI{ay@WoEuW>(HYYRLf6qZ@=y&)qxSHf>6||}-os4aAbFH%(ZZ*(< z-5-=5ntpKVHKfp8=j%ZHZ>(L=ZdS^IBt(}d&#&M7Yy}5Zr(e`Rl4V#sd?NX`-TKt< zJ6k%0QS>fAhp019v@Y<;>~R>Oek=_>~v+ z!ao^fxI=Q)?1*uIXpzYLrE403Y3k)g*4eqr$*eHTNy~rL&_? ztA^$W;(f}ih~vdfDa#3+Yn|^e|NiB%Op?^Sf%}COZb@>2{=Ah9-ryJ;t~p9oSl6Iw zQthTPtM)kB+#ARAo|jgqM8}YHVfj1+r0;G3uECMmJtIRR)hcY1=`r*_!0Wrdc7B<9 zVdl)`O_s^w0JccLqvXd<#_ZscP`73Mh81*mHxWB2eL~m{U)X0O^Ym&Ol)mRRN18BHEM$?)AlKf zyf8Xf=ZNw9r+;2(;qMp1HxAhRMrA1_v;JlgWlZjGE~s#tS-|VzqJEBvDXH9zl~p;u z9Oglh^>CGxYzEW9rwU*nFp^BA4>RJ%B2XD9bBej(A}3a?`~c&&i6xHBvkzR?BVa!% zY$gC>vq~?km0G<#MyLEB5i3QaTf`Q}mEA=Ufcwn-w_0r!Vjo_rY8+6Am_xQ!^;vwQfr=rM2CM${DOliu-q0-7(=&eu8Yf7=}$s$OYin`-|0iPdK&Mhzx;V;C$Qlx z>z~y6!(2W?fJh2@xiCmZECy)IW zW^b4HerTowFpr5Z2pB_%zboL%CcSxcmoalK)_9rz!}QklO6$7no!h@jA{3%_e48Y# zp+nKUb&O93gJ_YUmoF1SH{XGA`m9$2@BW-$U(kI1{r|?g(Qr;!5Jo|=4NyNBIB~MvogQRwG$J zup~bwgHW-kP9=(b|MFGp4q5pDRaqF6lJqMpFlgP zVD3iFJH&s#YU^>1AIBD5?h-%ySeUlQ8t>h>aqx(kR#67Qd$lm16|cKxIaJq(n)|x) z&}@yfBO@ZdC)J6b6jH|HHtFf%-(gc*v}cC$y6*jQq!6SQMYqbbV&IS2^b_!fEJnfF zvFGpLkry$cL|O--JnfZQp{oOpi{6QqMW^ffwbwYCyDlk(#(6Da8sHj5h{}#Gwro9A zyDS3fy2K5ii@Wfj4Tc=b2gZov+6SI|P*$0Hj{&u6B!Do9MNkYd&dZX-8FwF@k~OVw zgLZ(DeRN5=p)`zPmMY?upQ0Kz3ndZ#?F9c;73(0lM^GGxB|eCI7`y$dt1)!KxF}UB zz$4y2+ADD?sp_%IsE!WQ>V4)2I^Ma<+2NDfBq_GMe~I(@rZ<~^^eHB@tYf9u_7bXa zNNuW6M;KmHIFa{Ljxmir%!Lk3rckxBJhJvxb#+*wqLoLbMN}5 zezxD0Fq(@4=2vs}@++HXW~O+Vs)8z9o<`LtbzOkG8|CB99B<$A1xz*KY!f}QQ;h^V z=|aly^vKCFkvweVbV(JQ2f(=6WpImmP*U2@av_*#d(;rkwA3R z*xMK#^6M*(Z+A|d!~cW|svEOgNM67>Y}E-j%}zGDMp@uS{z#2XC%k=^j`AZGL5kty zw0MW5x>BwbrY%v$JujSQvMaqsenYBh^KLmxcGmTV1^xP-;HfRivAC{oFfuyFoQ3A#v?r`80*@a_}OzVf~@(&?j%Kjc71%}eC6YM+) z=*_)){;T=!VCkF3n@0mMMcta7X9f9O+3^$@*CqLyCz_*Mry3%x&U*pEz#ke_qC|Fh zM&H>+3(@rkk2w{3n&V}6I1iRDRCDT{qyC)$g08XjnSmOE z=v>pi7a{-q&NHL)k08l5W=&t^)z5pn%2EtiK;4 z=;AL39)u#7iICoAqwXMBBcmnz8MhHRNq&=Gj^rLd_PGV&S8R!rYbM~#wOPHTGTTt{ z&1Y&6ZzAJ{#sBfOXl$ocI#VcUd2H@cbL3N^8lXc4mpO`da%D+ceX%+JWclkwoFd;( zwefu*TEN}!`SbY0U_nj1k6x6mBuJx3VJy~6OxhqDU2Ed1Oz4{we7i)Skr)XSPXEu_ zCD8ElSHbzl(SN(K{B4H#^|7;O?g5+C-M+%n)yjHLt%-nBc3LWgH1Tk<$Is<9Qjt<3@vLCUM+lg>X!fVgR1GQeNt_452|bJ7Y65MBK_I+! zF~r?1L1}3zAGKGt)o1M)-=@{eg2v!unw#0Angq*(JT-9Y+GX>|MXY^09v%m;7dYdmab%xz?s7Hr)(Wy4h$+1Uw7aV9l&n#Qs*4- zHb+U8RWm$@`ZZD&XB&~gvDO3 z=mExe(DAGK8!L{HTd^-TD~kVi!;6cjs{W@t>xYaKHO9Zn$NmhD{b_4(&KPlcB<$5D zZU5Pi2UGE$0YHGIA_{Ge5A=GB9nKt7s>4t0sN6v8S|2$td=8+p#+VWD5h zQ!y~v#=x92M`V<9*3K2vAp>l%{(b2o{=w3hIINj!3r9pfTOSUfoiJ!FJ?Mw=%}&zo z4r$m`YU1_#mofK)+JBtA(HQ^N^kR#A^QA|ehCsPM3)VPVA6%4@Vmjy^-KYlMF;g3KjzzSMSQ+r6u7iKA*xaRC~ z{IK0H&v!C1OPwW+h8R7~H%ua80sD&)Uf?#-^-zrCBT1a74Y$koI`Dh^%7!}v;Gk9C zuEYcewd!(a=~NToyTL#sZ%8vhgv|x<+r#!Uz7`;xR`bH;%vkUCHz`u6C8sr@)BZn% z!auD&Xn3Pl@T*2HoAzXQhfvilvB)Y5@;r>rB;RQ|dOt z@eeSg@$vaur1t8lN;x?fW~ZPkD8R-Gtw%AmtQ$fFrgTx5(~q2<3}~XhJB`+ZJwBRw zg@laS)IO~>$*Uj=F506v_bAFh2u#)|;%KZ2$;iKTy+=U*WABUiPya$gT&vd$0p8{l zucGV^px(S`Jbb6|-KwS{woIu4f!lz0&ojXFTwu;NxWj{o7G4>wV}c~mp~S1Dy_Mf1 zf7X-o*MV9ck=q0*<L_J29iI| zCJ}ZKT3-d2T9Lhd=DenKZ5bO~In?saeI|l!T=XfHA7E$(^0N}SqExmgqf?tVE8hA6 zv7x@z^yvYwH>eLLVI^kK=sgN^CpEE_Rm7 zch-I77j!cdd~+VMavqfaU=;4B3vFNNyKw^=Dea!_e#^z-Dn+;D^*k_EUCl;lxN5OjJr+Y zw*bvuZ4@eW3rDACV|XMo8JioF6&WG1vApgK-eGFrq@3W3ucvhyEo!Hf&Rc?iAi!QhG~YRE_a|JKG%e$OfBDXp5Pc2TN2_Xdh(G{wtdmve{3aX{*g7mTXy9MCm> zj-=SeXB?IK;}am4Jtomh9R%>VLdh76-h1QADZ|Rmf!~*fjTM$n9pL6j=Jm@Cg%1>N ze?vy*E}{PrEhn;fZi^_3tq;yn&+vz)Qsn*NE>Ks7G=Gxg;b}ye<92LV!DI(!7wnZ( z*Q2zW;KCh1ITFIAmCQj)K_m!!oaMaw$FY5HVI0U_Xx95cDx3{&12j(Vus1ZI5-xf- ztK>B;ONr1oM_G3K>wSMk#})to>aeuMd$+QB3dBvnujKdY6#Qt_{`}V6 zCD9%y+JFjcQE=Pq^FU(z0`=qLZ#u-Z{H-b=%QE_!sCVz37NSZB9!>U8a^|T#&Qva}IUN|Tz$-WL6xYhVqE)4A8ZHrh^D5l3owJFUx? zOLu#I!IDnddOxJEg=WkDPS$u*+`oW}8ge?cf1@1zTA+FVNp+M|I-AEFK8Y7lm#^0= z%rSgHetX?%b7xYXkR!5P)$mcT1!M(NYkC}9D6HhW2^yGt$s_WpDDaEwRS!WyvKJNk zCIQ)$R)+}=fs`H`&fpZ*zmR`@9Nd+ z+3u*$e$b$Mf6UkdlypT2NN7_N0LLCX)jF4wBpWOGRO;dyKOpPnFKl4J9DTbUxvL!p zp1LVHp)qdBmv+dDXuz(8hiVc{_Ow`u5@BvEu>Xhk9|r{^dXozWLVhBYd_Sp@|~&3c6}?fE{OfcF4lV?sn#j|oXg zRP|#)eCc9tai?9ax3iML-F~+^E0^vA+^X4>Hvgmq&pp``Pb%tnryxrwn`F0U*3=_z z>M`ADZa+#zV6Hy~d)f{(7}(OebInlXfOE27`OWs|Qho}@ckUR|!-}M93L6A%0w&ny zwKrSG3LFKKjY*$MV;hN7BdIHJi+8lu_25*;FiPb2i^K%c-qD1DSSkr&a0{Y(_K)6& zgtJ-InA9!1%J$j1_Sv?_u@55$-5J)&WYwLu=BoDR>w)Hme#Gpo@p*EZk>;_~Pd11V zTt-hn#xUq%at4n0x}u<(qKuGg)oj=Kz467oZ)?|7849n?&M_nELA9F|tzX|detBms zd&U`1b3^~Xjp82I0aj#RktXF`&L1BWY(T+0krK)JHlKFsqEjg2Y*kPkumul)4|NK9 z%Hlm~{gYpNIT@Uu+QFza|Chv#}CO5b8qJ=fX6_#0u+l>IEP_MpI-BFBN|+niZUYJwYCw&mb8~e^(1MQm-f= zTq5}fK3wFgz*91GneETv#dUo}vM`X8a1?$+n>@nf6U?1Ro^`5yq&QDNhr{v~PNs!q z6I1KKrA#U@H|HF1VtSbStO@}x?p&~eYa_k3#(_A-i@X>fDky}~`P$iQc##)kH&hCmK({Ba@70_}sj_FP98N$q=so4RmY{V%3FFB4sXa1c@X_Zn#akkrWEcGZq%n zhN84~)noqCt%#b-EQRYt=0CU0w|Y9K(#Ml`VD?)Ynd5&NdUki@Jz;9So*T-W#E+H4 z$mcIT?Ef|w@g}jd-u&&*^NX7c0&9%sxFTeU2?eM06tf~Ua+~Ly25flTyZPBCJqK{7Ql{H*T1;nxu9e5p6iu~A^-+Q?KWaZz8GE7KEBLY0aSFnhFg zt%^5i^=w~|Yk?dk@H1DztZMXtuS|=n;#;l#sHrb42BMTofN9gNuhj`pwp8)blR@DG z-h6H=2hXw%^jVe6CtQ%qjTH~(K#$!RK51PI_y%qztBouAMhvifq+4Hd=YIV$cJ1vK zqvl!gJEvKpfHYT)3h~=y@c(jS^Iy4BhyL`qrFfF;p8?LZJ#npt z4;do}MQws;As3nN^2weK61lbJd|+P3QpX-=Slw$+II25P2M}&LlkYYprrkq%kHI#O z=lN3>a1V%)_Zk`Z8yQq8x?3pOtK7%`5SY?Z1J?wiLES7>k9kq&-gSvDw=hrV;#Xbj z)irxEoLbWauPOv@UVpjl4n2Jya8chIu~12+@C?23_izzn`^e;ev&SLbKh1HJQQy`l z=>Kl%0Rg&fnZKHdK}pdB)`a(yxF{GWt5U@zpD+?H8PcXctp!O^G5ml)jpM)v zng_8&cETzkzLbYW?RoOr0HM`-(0 zGMvXGsN3pPf!#T;lX>!HX95iU9{BR(FSQvv#Ile~AXSrE*w?E&{h8fAZ#?n7SiXzy z5dYy1V|d*$&+TX`HP#g)KS+3dc+}Oj-9Wgg!^k-#xGi;s`|n<^?~o{G`^AF;>coe_ zs`KL_E;73I)93Lw>XL^hAilVb9w_yU_DH<4PAq|zy-1uFY;=$ezr?vK(27Z`16K#c zNiKf-QiPNpZ4Qz%a=9saBorf@Rz^1BZw#lp9}2-6l?EyR%)^H$XSA%as&=9da>Ed! zmZi8LUPPJ6p*ET+7_vtb+PiXh%zXD`Lvv*+z)t-d8BF+hSZ%!g4^$R9(z(M)ib{M~ zy`^Vn$;w#s`j6NV0uT_LuQw*(nBFgd} z@RdQLh+wL8Kn?Ycua>@zVb4c(>yO7Pw2n4GZKqE0$+1mSk z3+7F8Tw6}`A#QWFSszmo$fY)JX}LLUVOkO_n{hfy75DxBV>9%CP^Mu%8p zvBYz|1jr3ah1*IW_z@nw2_O^ki~ch7j^yhOOrLmMbLaev++lse1ab5r=QKaBk!3+nt<(x}`^0!U|NQsr6B8x$c zUCjLvm&ofOiJq<9$F(uobNh8jKEu-WWUy^a+f&w(G6><9J~r|WnA35qxSpO!VI={AI@Q{W6cGbtd71iz}s=wHe@M@)iUsjBdY_N-g=RC1|+Bz=4h?l%UIesw4M zmIl^hxF*3NXdSd()blwu*(ffXJGl-ch87oXPGw1%{=jNR+4`Q1jpd^rA}8eq;`D{A z!;>(Jouy%uc`)@X4WW6Oj{kSn!@EXtfP}n=@pqxRkSy8Z8gRM-P%4ODY-Svx*pE43 z0^%~9n}rT=JhtVn7?{$#{Eo1psnOezIpKK5N@Glr;FQ=TOFpUom_N>GE=S#`Wnj9z z%dJ7C;8zFzPGdwYq^)e7#G4m2JELE=ZzJ){b{D_pJm}QaC!^_tqg88a1E>_UFhDU) z@RcA)ku9ALygu8cHJ~b$-`pTvXu5m5>wXe)RS#<5?M)Do>Ir`XSsb97qC&hHa3JN1 za8N?=-jp%H^$66Rz&UxB0t0m8g~Ac1_PN@5&DVnoEb#T8j#R1yRbluc>+N_4q8peg z_#-{o@0vt!h%IFtEJ24J=Yx$WOjn=&tNca3d8wc={Jf|2rB2X@Xs*AnXV=$b;mN5D z6t+>H4;w2KKSwv}GK>c70x7BY8m}6Cm-PuA=!7Wr_|%@fH=KYH<=*;;s{E9l8W+bQ z)T@pvar@n)$C1LKZ@~u|4VdQ`_hr;_aze492cW<527`qA1C(Spi#AbYjpCc$9r<3e zuj~G;c9LEH!4XflJfzpW3ML-uO7AdrTZ9mM{@@lHeF{~fo$CuM;z=c&BfvV5@Uz)7 z)I0c-enB$A5FJw=x1_5`VWvWr#X2dLoLx(6V+VFTlA@XjZQ0D{~b}^uPiiH`=86R+quF)TjgnN3Fe79MM|b=7r?{V z4@z?CPZ_KV3~SZhA`h}!1NHeOL_c-t?GZ3oL^(v_sQXlS^hRRqf-0(=o}yqm$%_%s z^&sSjFnP5ltZR@rYzM4U9NgoHI@l2gvH->-7DK+^j1Hj6Js~j$kaOfBf}*h%w{hd# z%MlcSh?GfR`C2n8ct5ZFGbx2s_HgDmM?CZMebF^HM=&|{#tTx6+=hQ&hpy?G6K;qV zNYOMB90Hj75M{MYpB7(IN{%Fq7kuZ5sAUD8RD6pv`{Y!gdyJ36`qO^!G4m*I3Wru>dsa;5y= z=aKslj=;-8zKFhnvu5rm<|tLS0g2Pc37%T?kYObQ`4QAS%}8$eIf%xtw2{TwFXkjO zc~C2K$uGI=fckeG%C+)cBI`pjs`7nXQ~JsB@O7%*NAuUd5}8jz~Mu5U~(Tp`>| z3BtRqhe!6P<*K^*sdnh&&Jd=%&2-Gk4QbeDIXRvZ>6@l(I98>9I zJt^XE#98mj13PYQici~MeG4HK4er-QDZ7@t&p_(2F|_zS1X`11^NJm!eaLN__{_TX zw!&jf!x%s})HB3)^pnes6xrJ5W(G>M6Mu0Bpp}_Q-mgwXVRf{9zwcwd?os%2Rq=wr zpW(>%%>JKtWySnI?dsL4w366l?8nzbH7W~g<6^J_pyvefCeG_YSDaFH?XA8q?lwvi zScDa{EZE|IBFuZKWM~NUVzCF&`WuSyV2j7{OvT+X z%EJ!DjVKVo#4ZvqGRUx0EJcGA!elXOW$iFRk5Z$k>tFt8wt_>8*GRnFTVt-iA!f7| zeJI9sLZcnW@N>Rg8(n|Aq5m&tPMPH)zBjVITj;euN3Z#IGc>vnKAPFEM+WNtgM#+1 z^Tmp26(6jA?w5*ow|#~iO`c_B=j~)r!8&$TPw7_|vgG@L}g zjRb0$*OY=E`p&<6cM%Z{rzIs|JHw?2gvBMi>@8{gKxN}PO@GBO@q(!JXZjuI0DASs zQ@r}$Z|0MVK3}Ac$e&0Q*roeqHTE~T$!#%C z8tl*5OV?%B2hZNp4PZG}E1g3tTiQK;q7J=;lf6Fe}fmpJ1Ka ztylXl&h*$ypY*hCz54O|IQBQTyvHwrkj{|&|AHCW9S^YqbK+T;Xk9cJmcAuKe!RX; zU+wEn^dedK89#eklA4+igMQ3|opL!i9|6OIx=m&}`-d>cth$ z-&9c_{(r__@QLW1_!u8nBejR9W3?9H_i}Xb=mhec$JV3*HhI-JDXc9F zJ1$Gnu6Vb9lAGZpfX{iwvy_CpXWkSywTG0obC!7UhKK~hXg2flXFIC<`9|Y;`hPfb z(`kuA33e2*iy|))GL!@*+RU_EMYZYSaZpm z%O|4dgLe~pp`o#up4KYjkv;HEWgUCc@6=9yqq%nLY%R3U?P~h(?d-k#`i6vBZ#isQ zBK+_r-OYo&gG02l1|wrd6gbvVj^9U)??r)?xAu7@mR~=f2;jB=G3o)2PQ0)>2m7NngljF|OPOnXYejqIh^dG< z!X`y>$DHR&T0D#Ncho7j22;s6AkKySDwUssIVuv+yfIeRtM$QH+~Dv_QFX7*UI8NYf$W0TOM zl^zqP`4|Z{H%Dy%Q~sm2@p@Q4elKq4kh^Ge;u5nqx(xDQ3BYs)k+XXaUaBgic`qRO zC+_t}a5f^ur+ijWbYS`8$@rDet6fXITjnsP0c557JIZ4vXP4#TH~WO*&+IgRWSg&i zFZiOUXyeB6+gvVawRl-qn)f*&Q$ab@3~HRD{MAX0RIYad3m!N0%0a2u2pp|=me&s8 zzXq-gbY2VF-O_uv5q1*_$*CotlSyJy3`mXQnpocPWprNL<`!-xK3W`QOw#PP6+!np zY+jxouFg$!kF8uNoS<%A|64b0zx+zB0fX+5?C=kd>ZW+qCE`t6)69w4zz*(!_{_$UPxGa zeb}tMe9alu&5tl2>tZi8S8A$`VQpOZtXrq43I1wzOR{`*_bQo1CpG(sqM}yShb#Fk z#}RJZ{3G|wM(M;MtR3+IYR;{q0n_HShT~};Kg5K5^ zrxu9o3Q-hL^_bc=>Ww-G{Qxu?$mvzF@Tx<}|7u?MU07=4|DXpiv-Iwr)yBbua}IDi z9dv$LZCS_o7=tn4FFXe?`i>`o-^NS16GCh^iN7$%VGg~8{5e{!zt*ChdGNJY1Iuc( zIl@kbeHxmSU{V+)KxZhzqi^{T4+0?>0UAZKk$Pf;5JV>_h2Ul8yu7^;YQJAe*(sv1 zT%4-g!iCh(Y6Ej)cZ88@JN~tq_vbWd<|zF1IeN}#`_*1(Ea|M^!aoRe!#0`hmPJ^8 z_n7S)Kwe22AF?VN@))mjne$mbIC8&ml;UeR>4n&zO#=uc1;%el4bb|e#p|TutneIy zKcOeB1v>bC395-?1RG>A1~{C^2U+A=l7$302-JWx4~5uS99`g;Q4xSa;?2W`->=B8 zDl&P(xQ3n=DwMr(KB>06UoL7>fN|QO`Zunz6c7BZ3ScGWQz2~>5$E+ig{&Q zOpcnK2NXH`!$HQq2zGpda?ed_oiAWg-n6*>=3keG7n~f{dFHz5s@|eaelVZ zT!z@dsFqEQYF?mfn!Sj!9Oam@DOlz_=BGph0)*j?UJNfRd2ViQ$Ez~S#W4flLoBp1YR}Mc7VXZ@7Xul&GGg4XW^o zO~3ICt0Db&Yq{hBN(|Mp=w~xt-8BJg`+{CttYeI~rf~q_f5wfAvd&WW#KTmxvb;?HQE&GkR7jLy-~Q$I5_uBV^JND!qJ(;>1$W> z>cdU)N<^UUrB$nxQ}^X6G!;F;rnQCx3fdYGUKo)K86S2$$cDA5xX z{=lWj>pb~kp2^;&+%!>3lgi#UKfhf1v9391gGCw;QlVl3&VK0=GE>SRNt|Lq6eFGb zQ9;jmNlru>ldp3urB}Ome7s z^bpC;;35HWfalk(_-=di98U+^x0#Ifbm0`6F(t-3aLYjQkNkxa)4 z%hZ~_)Dx=NU8XayGyQiRm51JUqL7)>$vY|?3yYK4pibL5Tpck{rsMD@IMp%e3iFU| zbn+kbtbur&DFS~i`BYGQMS(}#tgSKdI0x!jgX5m$5m#XfzQ zi}!$pjGZwK*=MryS}NGo9K*-jVzRj(Y=$mHQ48+OMXJ&JZfa*epfI8Qdqo0{v);^< zIx((Baqtthq+tB=QfF7V~qJ)jf^e4{fD$8+Gyco4+IRm}7mnO^Jc_bfW14iHGXw0X zs3?8|F6n{^(0Vu{2EB)d(--(UPV}CGfCxeoCDU_k&6pUdjKbC#q2NhP=x*p0jYjiN zmUS=cF-0Wc(9Yh@^2@!CL+SlJykL?J8f>&;!5Ze=3TGq@T@>?OnbdRJ z4fXQQ=AC!R-;gEZPF<~doXwBYCg8CxaWYFs$uD3`FRGbg1`-R?(fjwzySLj=)t>JC zoahmr3Yml!R1~2UsSaf!iDXy-U?|!tqSTE64l*sC$~Q!GhI77V&o{4SuKk;22=cgR zU#_dS(04BPS1?v5RQhd~Q2h&1lEM8H%Q_L{l;Zs+UnX)v74K^jXnG% zh=T{*>8|l`#c3*hf<~Zz(Gsz51*?jW?)a`qo)H^3>sb{%0c%d$a5Ike>^;C59Z?H3 zqYPKBLa?r8xx0Y5vr7<4S4Stm!xFF~-z?=V>n-pGR#UZ5Jmi|rv@Lz6`!@YC?U{w3 zlbwf9);IjfOoi^j5je#wm!$^G4r$xz)5 z8S?-r{;r~&y1_8J1Rf;JY4M#g0TM?OrD37#xfDW`?kbTiIZ88iJDBJ5IT$}~cMB#x#KiJ;23_eVSfmn`ueFF3da~lqY8N?DERHZ3MpwrXPQv& zUi6`y+P7W4Y%@+m?=`D?zv(?ooXt>B7{&eGjnbBGMTg>N+X6{b5;&zIT=W{Hd{aXVTDx@^KX=+{&I*N=^_!!KR?Sd--XT)%%C zaS+o|UTBElBcK6kM;=}=tenq;TUt}5mx>hl;_sg5jY9MM5_=3)e^+!nM>XQ~r`8cB zk9jNt*OwXpu1h$r$MLq3Zh#7Q2%cE?yq z%9b(d^tegLVqqq$E&a)7dPSdOo(pt;j;VWAllLtz@&)?y10J@wO3e#!amwhIHWeQN zEbrX!@3TnmHt#&n-?2Q~ZeN1?7_hMFZ>S-WP&WUMlZ0QvSMJ0o;{%}zA8ie|xFoM6 z3$UBH20W%aZ8lU9)(nQxBmz~fUs?)O+CI#Ul?Z`lvSSG+AiqVe6+hvdh7mpihd(2I zVHwAAbu%R4V4ogpcFWt9Fwd|;OLj;1 zoq=jHexBTmqhAY0jpMC%C-`k>a#l6FMDNY{i^gW^z~#mZGx?{+{|FO>;^X|UjXAyn zJ&?8<+aDhusIQihU>X=*aiYmQNe=zd%mFkHZiGIVy&uo`(GoT1IXZq`HG?g6uW0|= zz3Zwq3_QfbA7Xc#`PLAgk?NcUNKhk#`^E&Kh zH@2sK2{%NaLl5=tx0ss&CtlboY@wm;Po^>ArcYd3XN&;+LE5TL+G=vdY`YE@5sRc) zrwq8F`ErwVzlmVbRIXG!(V{)>%!w2}+0?t-*V+hH37E9^#J@&xy z#WnTCZyUJhXb~+YxVSz6biBM_jwtgOT?<06ACo)HN0m4u4cJPMHJ@nE7Uh+x`biI} zsFq#6c>KS^w7ceZdU~8tvo-3V;{f zw$tC6xh9&{9b`K0gV<3R0dRY+bnSaBJH+9Ko)#BLCrx^y`Iwt;?{rJH_O!PHPJ%t^tBc?^kk+32(Bl{+50!ys1!t)O^|DAcXyvt0r*N+|Y(Lg2;vschv24x^9@zPVT zZxjH=2|9YTF>pC2^>a7Au#mOIw=ehBVC7_*v$Rz9eE$?xGj_b3|3KkV@OJtOhj2wv zr<8VGve+anhq9oHJ@biS_fdP%Vbi>Ny&sRDbzY$6 zBcoF6*nwvoI8T6(?yuYqkWf2KPGWD zmg8i!7mG~)^8^WlBoUAw62D8N7l|Ku%w*5?nbCoU4u-{;vZ%bP#3|;$CKHMDB0y7) z*fTRQcB^K6D93J_YVwp+vq4iIi*)8QSV!$k@Lc_@xk?VMg>;CnPy_`*y}k=%oHjp#(!^YXV>bJ8yhHBCH;yv=A&R@s?5z+q-E_ZJ&u z;6H48h@?>V@ph_zuNZWFT!HxdlP;K!Jd&$V#?e{W#Bz&@%<)t zW8?n*OLNFi>5*xdVTZbpr0Dx~kZqAOgBWk+bSz5rREQM~7k!?oZwJED_v|T;f9EA2 z0O&6J6&#c7G~eMWQRw!BB#DH!ABb}=>!7X1-<+| z6x$Hk&G`N2iFzYJe@a6K9U~j=`IrWm^;llJ#}J zIAYj46!pRG2y_H zLKDbOwJ27rmTHay51+smA^^$?B38rD7Vnt4$-084K((X9(5vU6e@Z=mRs4|1WNzdQ z`)?o{w0Lq)FV;S+S&um**YP3D`NcnD->0R3ZozRMd^-~&@gkyRVQV``8_59>wL9j4 z`V$Y!V`jM|n`KabLvETZafws_M|u-rbu8_yqz|~2-c({ceZ~}Iu z_-uDO>{zm@=)zCF-@r6FFar1rVrAdnl#r9Ae0xAZM-wSaiN?eI$dkz9&n2@Gm%;U% znsDgzaN?U43%9h)y)(b$lf%We-1~`a77-d3o;CQ}ldI>-(-f|2MKDTIXYhAun{!v3CTom zQ^$`L97}j4mO(@!R1J-j$5LMET;cs%xh`{QiuB;h+@o*yy?tpu8Q6BdnsgdrVf4S; zj(=}pJ6~du{;2FOLQT`X%~rJp*MaMRuzi)V{R0%At%qP#O8bEMKQ{yPQR>_j2Cz2P ze)vKI9|_I9v{`u4JKR)KdEt?h-2J^HqCFt9EEs2qcYVl_Gl!aMZ$xKql^`jE5JziuX!ka_I-sxpOXJ+g!V zdU$`I#+!I=L)@{HcmDfE1gqoLuU|xmayKoUrIG&DyPWs3c1}CoLu@lfD(a<(txgcy zUFhr{jA!+BM$85Ey_lZNO#*@Vcc}UQAEv%CE~;+rTLc6ohwd0+D8Zo|x`ysXC8R-e z2h__ZUhV(X;4x`KsuC^?tJ%of6slNv%k%k`LOp|>$^m z{fkn1!KLf=rQ-$ISI*{4UlD7fKH1R=+@wbXRhEBx1;tfPm|AlB;-qiac=LUzXgm6eXP5Wt?Bk2=SMssJ*5hhM7!Dz*C=zW|_Hp9Kr>`2a7-q%|nP zf}T1W(Hfi~L+{;S`tbi=`r5PJ2#WpzhRzF(`ApM4DK0~4f7$b#Y$f(K=8ptxClL## z*TrM}Y&XonDb`6nNqC;3*IG_l4=Z22mlR_LSmC;$C7m*Jh}_j<9x%?Wb^| zlob$7Fd#v6nOLUn>Day6?elQLB5WWtD%Uj;{j^Bcu)yKJqbh7avn%uAF}t;vdcE4r zOw_CLT`FqwE{qNdc%>d3#N#BdVhyy=RN5Prq7lm`I3Mi!C@BgRX27Eq1GroRYG1{n zeQLVOC+P1=3y!s`u_JS}@a}gW3l!6j%U81!^c1|n6`C~Q2C@PZ5=H%~N1%ycW#BJZ z+n>HwmTrGvd7ZBMSHWuv%J$RQPg!soWF3T8O1F6+wai$lhgf#Q+{8>~eep z3qF!0;C16I`OWEV;&;$aZxV#l>16be*ZHZ`=*46DB*<@_jD@0P;)eA^-oGywk4isl zO~N&^J~@LBNHu$1_u+U4>um7tI2F1Rb0mveP>d3z|8hHiEzK%1G0~VeV?9$v_|1

a%8K4A`4)lO+ebP;Fln!4F&GfV2=_4)NymSH6J)~Z>EiQxL(pwR6E%k~| z`~r?*wi!f@>IwxppQ|;mYaYB(Crf?x(@WxLhIPKxJLz;b8}+D-il~-xITxa-7t@N& zs?Hks(H<}gUYHIDe;|eRo%|5iagWon?+vgXGn%MbtE8U7(pLzs27F(13wZ=|gNUcAkyOYR0JGw4M9x$MtZN zWXl-Bq$Qth+;5Urbqqv)`B-JNb=?8)XX|Cj<8937E&Ye)J0t~AiU5kCv<9TG_$*^Qu%vJAk8~?V>?^r9i=@{eW^u=u zT*FtvzpqTr3uQii#GBQ7!L0Crg>aCdxMYx1aj-|Er&t+}LwSQ)t#@S5-S8~bZpUW@ zYl?A#bgseK_8lo<>hY(G_l~7|06xo7X`Qo)7A{oK^Qxg%!@?1cVk`5L`iN_Oq&U?O zV}wwUKsQX&5I4Ky{`R1N&!35cl@~cpC5pk6Tzs4@l6$M;I`q6kPrgVd4ij4hU_@G8Sl9}uV(T$5>1`|J>;o3)Iz7l z=gF)S$xYk-I-B22^^6M=u=dOxui}5kTWmB2+Gv`A(CQcq>aA%^L~J=XH;n-@5H#gD zO0W~km59VO6=zLMnMo)nf1X>Xg5ZUwyr`zu92?CljVX1&?V8}}<;u87Ud~+Y_1nxE z5zGFB;YD!!KvOLM$vycLlr4i&Ox#xr!1X)^BM%k@|HMpP`ql^9(?ta_ml=Pfk2&Q1 z{)SKr%W%W77heNc-7e+WKx{mdr zlj35=D*Z?8d*%VUWQW$)vCx`?v~oya2NS&`in45FRFe4&KV>=rI5( z9}q6x2QHoO?W%kU{boXuQN(c$d-~8UhA>f!wY4=lpKy2&eia;WxI+?*F@a+p=>EN; zw{F|4%VsR=n6>W>_^a9*^t#D{#^-B(7nCTKw_Zix<7lTo@kw%>Cwr`-TmaP|#PZ&R z55$ivV7=~}6x{irT%-R#8?8O-|IfjXy?;%~n1QV|nsgCymJE?w*2(e+r+IeEntx|_ zBBeeSS}V&T1aZR8OyN@+25=P6Z(6?ykJV!+9nBw4C#cknXJgN0_R(Y+NSd~wNIWl81Nne=2qjG}Bk9 z<)fS`k*l<~Y@O$8iD(&VX!vR6F{QDF>#(t$n7oB)-;wZ?yo`({&Ofr2nXzX|E4VE0 z?nhE{B5OoX?b^XtJ>Kbip8c$QouH{&iGK)*0NxeJeeIP)`sWXnzSt=6SG^Aa-1bMG z(kAr`t2{iA^StmL)?Pd=_I@aEsO#+xRmSVl9E%$DTXDU`0|D9{Z!FrDTB~}K z<(FeyL!zQo7K*W;jfheQ?Gc}S6~K3dX=lgU=+f`*tBn$9BR`L}0GBHJB@c>Xgq`QD z1*pI5qipmAF~RonYV5KVucnl7^L#0g01(({c4~lCND%1Tfv7hYA>5Yi84u_FR@-+8 z#I^u>el*Qa2g5=&yJm?bK#y0@`)iUtS8LT%FFrQj=6;w_$G9Tja~Q7ovq~_)K67N_ z!UT(LV4y67WE6mCmcs^;7(c&&=8TYFsbn>#3CiIH9L_D>Y3@r%`P}_ky2_DemcwtJ zw8Rm!HQ9)$QY9kFNauQJ{;17PmrvSO$?8A*zC;*fIUcoBfy zZS}tM`$+-T-GRIyd+zn}Xcm_1!qJr;BM{bfB-S6{kywg{^jNP~Khcg1`pB0^IofDe z;}EdCbbFnD%@r|cb^<9wb@tQ}{X@ag0rK`Wt330&&Lc$!pY2y&Ya?MsO^HhOO?+B6 zcl?kg`GE}`Lu7n1csA5rDpK4}lD^|{H%R>;J0ff*uBOQ?d`SgiNTI^Vl&>KXEp^y?wt$aB89Q|*x|Wk zil?O^8aguc%H^6A4BhnWBR#xdAk>|&D3xWA_4+FP}T2Sz6fl)=5o zFjGmqK8kxo*;**_tjqT(*w3t3-_M|MKT}jXS!p(aYpY*w10Keg<4-IkWF~RO19U%U z$oQv6^kPuf1?EKTT&x8j-ip0HiT*H)@I1>k5xd|B`dKUU?W*$;Mvd59j8^m$*ifVWt^J}tnnW0RSH0XfyS$zW`%0TuPLLzTvRNw>J_vq+!~Ym z-Z3HE7t05utYCFLYkDQXEDT*iC1d~W`SSW>p+lUW6$+d+9MG}+%2)ZBBMGE>bh=z_ zPAKHNmZYdwF>sR4(lUQC?IDL4Zh#b?U(s}ZjNnKgObYsfqvRH9u{|U@Da5!zzq))i zQpIcgtwwK6NHbzQ*`xbeD2)Be%lsXc#imjNw+3MFhDnODR;BK99V^7ex*siLL}$dw zSksb8!H&dOR-1zF`EFk?e}Bu`qVVnJRpLuu%5Q@(qG}^abj&!FcYmpaL-xDbY8zVC zHQ2&m*pcC>6>urlUo^_UoaE=JC1{^ye(pwkD65Q z(qqVFf~!wY&3XHMJ1P&Ay!yc?Jw+pCU0#v#>YEwCR-d~%h2bXO8v}j*;YgjS1$`3i zI+vH<0Asc8rAsMb#b$XJn2*QuG~Zut4Ur(P51&~4*p}2)3;JiTCKl5nap%YyLy@1^k86M_%ZEPm9LO|n(; z*m&%6s;zX>Qx%2r1s(|=oR+vsa6Rxwkhoq5eN`A*$=a0u0ky1BdPOh4lL==rJZ>{j zO;)3|i8*gvvL|LC;dX)3>Fap@*miXYs%?UXn2zKcnIa){2jHhqe()VEfHO@Y8%ZA`&N(-V=V>@v(chkz{i-FY z;a7_qCta7UbF*JT#WkJwLR0E{kK1I+&K3=5#r<0(VY4wvXJMGGVkrgh1AlPtZeL09 zFX5wcyal9C@nc5Mw8n;nSdbUHh)rW#ORjx*d?n9cicZMQ_-ZDL|2J3qXUXl)g=v1I zc*T6sl5w)|;jbL{?SlfxR|XuM2bMfYG;CpF>>8RP9;Lq=>=~5)W(R z)4muMnA=lAGHCy*I!kwesGXGg(;ZtFf3NX8c7v@hH{iQnlTlSTNfu7g18pR&Aw9y5 zyW31DqvMvhu0zwwx^M!#;_ch)r1BdXAMMR|#95c*d<49Db5YBf4!V|kO~Lz_eU?L~ zbVi~rp1neBx!gQI!bgNS~jM^|9oj&&;^uOcV%tka{pg3nhkK-r!i zxfaVY_(q#oOxEuKJyltxK8g!|vTA&VzKBUMSnE*hb|K;Ohk}Tkm0aRUuuL}Gc48zJ z6~EJJ&C_a|Q0Llx>V7ye!W_)1SiVQTD{AxJ2zMO(L3{S&HGBB2Gx^qN2Wd+CI!R4o z?5b|)uuc{$?-z!G1}xi>6oF8YWNUAFU)GyVwcyEu@AaTgCvUdCP`N(V4+bX%RB)Ue z8xb%laHh*jZ+S*v=dABZcCti)*wmd{dH;8gsW^zT%@|T{oR><0>m^m3?#!=pY3oU; z6xzu`&RQokkD4zRevIdd(eQen3KuF|)rY4gxy=gmtb^5|Ter!3I$$RO1vl~?KRlwP zgOa;VsQ&$;Imgp;G90C>zINBL)+@kIY?}4&6jILRGjb7-e~}JrE@PN?A6)%wes;!B z0a5Siy>0#7f7xQ5CM>uk_U9N|gG^avNVHzcoJ_Abj(HSHn4&KCIzs6Hkn?2nQ^NKE zjtUb%&#P4{EeSy50Hcqk8DmvlPZ#?d+!yaEfrEns814Ne^;x1;ds7B`e|Y$bO?)7X z>qGTFGimnALZFO!0ao?fQ#k6&(JM_9t)kH{pEsYlS06+o;?*Z3yyXDaiqac%gCS7b z&Cf59m=UBDTk>vPNF$+%*XsM)n%>Xb!Be_vWvF|{_Cz|Y%~M8v=OCz%3DR!?F3X$L z`@QToWZ5A@-r_q@GRp#e0%(xXOmWn!0g;XjW)g9I7)EvGC6087b`S~sq#bLFf!9+- zk2UOJFbOOQxwV5@jFE_NfCRAi>ahIy0ul5}kRS%AMIt-OdVieFPd@Pj33wiV_U|^6 z?u*85!}IU|RA-esHqD#ZHXFPD{pHnfQNZL^>HzK=gb|=}^8_@>H2FrOW~cl-ceXD{ zQ+nkSskpCCDbL4gsTiJ^*`BVxLN}{VY7eT=R0*n%CM$e{Q()}VVU20s9p~Q|g{c$W zJF*_;|C;)DAEm9S?>t~rXS4t}UUrrbY9pQ%M z9761y?;;%YqdKn?lX;Q_vLC^}^95Ov5qEJU7Qs}>jba6q7Z$6hO}w!Bh6?8&B-zs^ z+lDGfCtGY!Y`Gw+?aQD2aWom|(3TZRA@gI=mG@fWaHs04Z-)kVm4qz(h|(mP{;sGM z97H!n*2T5xiiH=JX8L`gf5?)R-eU7t(Fj>rV`OujgjfsAf@_CRij5pT{Jp@hcQy zAoGrVI&X@@-{L&APCPq5bv=1TXHLQ&BjxAcHr)J>Yf0E_ff*@3VtBp8oef!^7`vSG z+sF^jfb)G0m4EK;b~P<3al?8e-m3bKRqIe(LvSre=tx~ZuX}?h|Jc{nF9-QFo>dbF zX%W=aN)(lr#xbCb#sOqX@Ca&FdGl472HU}>rN;5(1`hJ_;;x5Xu0>K&7Rx8=s32+* zW+6h&h;*_^zh`?`<0f!AQL6KS_^|L=!0r&ZBp8pmY~M<$|2#MUEfR^MDGi-G7UW|x zD|DcBH=8_{XHc?@;+i-Iym@GRpN-9Fc0*Q8vK|=V{vvybmeN(f=wIt)!Q~STJMYbO z8-@0RqKp30+Qt!$0KV?Mh1Ri^E{wSFL^Kmke+-vmm^ZztRH1o|iYRCRKK;q_n372j zaZjT3pYYCt?8C(rE8Ah#bH@3Nu0zaGBZ$P&pp{97dnC_v?RXsyi4CpVd?YNIjHMLb znMZx4hXn{NT1t_ezdl(k5UL}rH~n?hKRC_w-~nIx9G+Wo74R&giK@(1n4aa#wQJtqDJK8vK(-JxvBxJI`LdBe?0?Hiwu z`gVyc)mqYUE2{g?oS!+XK~M5$PL>0YsC!g`2??q z0EA4KqqxZ+IkX(9x}ex!Q860$nUh1EIz`8(A}MqS=nc6AMP>^K!?X$9Nx*PX^@^0uk)* z;Bpi%gid`ix4ns2baQ#O5AizM79aC`t;cI-gotN6b_bo=gPhX&>Q)olVW66C>5^Bg zy(>g1qg_AHlOD-hRrYY^-(bcRD`iag)5(sM#^B@6A6LF4(YJglnId*?y6CwnHm&)$ z4CNN=Tr@bWPL{?f4Y?CeIp$wg+A<2keM8o zs^#31Lg>ehzR?~E`cO^QMe#N&!zzmGZ+CjC$f8&#`ZXu8P^d#TFp6L}KeLkBaa$xC zK;qk|H-kd#4X-)|u)C&^X+pps0Ro_}U#W50jxTnR@Lt)`L>R?DcyShA&yibb9v3j` z7o!|nzrZwnGDO=v2d_Le;$uBR!;4tmRbhyA+Omndftsf7x}PwJ4^vaXEopYw^_TGL zbKf(}u_Bes_SgMRB0TjhfIJdn5`vI)15BU&vzTACFD@d1Pzj)3Mv!U6rl7zD)z=g~ z>se#sfI|1(j5daQ{Bq=*pDVo}E4Gs1>Y`W|(&Nkc@Nmp`aiX91=WV?{fi?ARJ9d@w z8>m1>x}m+_M75k&6@%K1Q}FjY<0+!jNUx!N##j{OEJ=@|VX|&FyPdbQ`Hl}+^YUp( zg9mE=1&(tD{xj-ebslY8toLEmWj^t#cJwuoNV+r%ykwd@3{-AQ`eQXN{FDL_k+V{J z!+7&iOR?MFD4n_PE1{i^P}!BlG<9UeYYJUuL;>f%s|k-t5;$UpAU$rGg;m$&DLH#< z6g>`Gom*vJjpfe8!TXrCz0sfv4GAHqH~tlL#J{8M+hzHt-pXuhPqXlT9l0(o%gUgb zR2JQPZE)z`#bEQw>^G>e6?sW=K7NTUJuQs6Q>LK4<5QH z8Oio4!n)<#OZ_3wzy#$Vmg(m%2y$hvvsoT4JAy`8NWa<`)BX@f3dzV!W!w&#X~ykc zCD+*ZPTeiya+U8CM}Os;a!?3JV5~6b8&Oy;Y(1_Mh<3w2Ajww{N(V70+hpCKmrrA zk5n8T=K9cdZYA(}sk69HK45#43*N)kke?K~*d2O~n0TAB6XFrZT2NV>j)Z>y@T4+} zBwNgrKVKB_K_lG5raDX4vV9LDlm8D;7qzL&REB5oWgw zgve1mODMIWReS&*AEBQF0xGHITfEZLqLol}M)bVI7}QaDYdB>K&Wos1<>43$ zdSyM{K=9K8Z}+S%wIQ_jUWpld(W8PN(7 z)G}%PN``}P1~orInjb|t`uvc*#9orQHyb=>sbMCz2VBdIJWVvnkp}O=92ihNxqMkYmb`S zLrtTb!Nk9vouWotGZShUt*$3HqQWGN!YJR;*hjC%3M#!|u_(-97g5Py^`gT76SI45 z2UROC7)=Q}(P^6yp5-)AJzt&aGj@ugc{vg3Vx|0M6yJuu1fxRkv4ae4ukiB2N`(M4 ztN=rrKZ%}MNu>Mn>>J(6Lq@vRkzcrwm;3RinTlR_J{Os}RXHPbBAp)!>LG6i`#!y; zXG!uW0{KpNpt_ttCBJ4$-=`mayB5#rMTZlooz(hdHO=Ho_Jd-Q35n-!d*e4`#YlBv zP4ijcBA(C>gJ_~BOMf+Zk=*w9cZ$y;VVe#h78S*#{uDO(w(!9aliTnm)Pi)7H!eLd zsg%et(@hdD-#r4rpe_G}*NPoz?`DJ!A0=9p3Bb^J&uid;*=msCo5qTPwhi+mzdHG5Ce-3xt6N0cq~1@V~QYQsN>%=(J7xCzt!8ZvzIs& zD_X+Z&gVK3q3(VGUjwA<5bq1<#09d@TfT1h7-dk9+zh3BDHKXXreTkpFyJ@~aXd(X z#5Dke++?qx0loOIQVS8DIoDtB04GrMV@h`bAOxUA+qhb!p&vE`K*FH}J7AX~)wxgW z#k|DtU=o1L#J$wKPR%J!+@@V@of3P=l*`b2w#JsV}j za}Yj0gRsPP6isv}mu9t*o^qC*? z8J0edzQ@lpgRfnu1jMgZ&kKGJ2R?1=jE-yUwoLu-JT$K$; z8rKxIZCjs}n_tBvw^)stT{2%as@q2iN|2{;`T>i{#aZXmkbky{)lAK`B7*Z4On+|`WREOCH#B5+F`Lv zwvlGkL$3EO3li32Wb)QK{q@)8m9OMTR3#LBec%BgawLx&NJD`>4X2>rkz}QtH=ee_ z9o_S+u1Y+T93y6Ti}(yvZ9UAsm~rE0v(>a;`#66sE-hP_=IMKR4ZXmb6TP!Sg%4uk z`Ygz}-zXa+1)|n+5_`~#*ttlaRs6TySlmREea&pHxm?zCli-)4F;4W{N1BIvzw{P( zKIyQLcg3}uSz22@GIaVOQb>mr5Aq55gXg_<-cELFB)v%l!f_t-99RnNJQ=x3H68i4 zdsBXY5TKwhC9Ww!)DSQ?w|Hj|*tvQWpfUMzm{O3IYOu1}&<;hN7ovG}##x-!cTiz$ zXf1$HHHhAqCDY5Mj>g*{W5(Kdw3erN7DaNfSX5~}!bbXBum|Q;#LxDYWx=VQ`2)k6 z(9>!hj$CCZ=vRohO|m(PGa{Wq0~c_C_rsUYd%3;~0jZ>vgvcTL%hSYO>gVT@EHF7e_#+zj zzQL`h$%0tsU;`mNIHPmHU)sc^I5%)Vd=3{dNOpbBOS^`kP`PdZ=shU}_|tWHiRhIw zl3?q|smn^SP_{4+*#6SHrs%P|{RecsdG#3TpQD22z zja`aqLA%asqT*~+(vK2!83?gXZ5GuGRGo6^PtXPG z3!LO4pFl56nMCC65CsPDG7qx3QCq)0n{da&uU2GOKsvXXK_OtPB=e%xKFui4) zUB(B)GwkL$=f=lmJr$~-h_PYgqs_EV{ZpK~Wb!tih};r$KOz2L?gh+ZPVGyFIYCE)F?WEOl&=;E61E|r(O45KF^kYDzc z5J&_f76gse(`pXR8TTc**o!F26EO8YLC0O5CF`!ALR{U%7!Nhw;_$xUQjg-XU|j{h z`aFjbmKKvqS~i(g*qpc)!9s8nm_)|v6Zv->L{2xg2in#VV?s+d_8glzNf&}WUXB?D=QiiE+f=2* z6zTUUES*cV242zNXf;Odj}!-gmXyr?_X)Cn-5*<;?{$U0)HlG$;4{4vn{k`yeJQ#B zc>lWWPWVWx=+eNXS^hMl#r}BUcFv7IfWZ6K>;u835Lj?T#x4!6_(Ahw>#UH@>vg4C z->j)uIx3Vq*RMP9YxHrvcHjYAryu1;4P`)7541FwTh+9>+qU7he&M_U(Nh_2U7qRw z{M9bFH3*P$Is6e_0DcJZ+xIC6FIFg2e#|_6j`U^K$COl(hyD^cYlt|Fh0l z8wJY_+(cS**Kug6tM15q#?Kzw8ZwWJ##98G{G3s>ILY7EY7d{f&(4%vf!QaiZ{*8f2{Qd1|` zP|sACgFZtd5?fnemTu_}X`7wPsSkVfvDmRCa26ycZSJd*0({OcGQpB z&U?wZ-Ub<~vQW`!l{%3fXgV#`rV6R*sE&%H*ZNtV*NVK-*T}U)n$KGKAi3r3t8AsDCAkSX)vU?G_$nb1!LPWZzAdkLxhi4A zlQ48qis+RY(#kfQo9@-Qx2cE77V@sz-Aw~ir5j7B~fUP>h$sM z(Bzo-0F+x=c{wThS7TAdKhKt3rERtS)$^kJv+1KFtKSU7L~U)Ys|&EjsleZzH{#Y; zyrk0M@5;3Iw7ucNXcf0;?-j;i`q_5;k%zOKlwisgbl)&(w^KT2`LF#?zZR7#)1B%c z_aQL~D_qPga9?Z-gwW#YV!4~Wd!(#l&uc#lgQh;HOb0i)Z_zY8)iNPr-Yc<|ijH`d z+q=|jJs3q^&rCD_`b#n`CRh&JO+T(DCmSr%7QRm6-N^Yp9I;2f%|CCIAi05Y2OxkrHPa#Eg)Ou?}B zqK}+vj4tmZSqiyn9bIt7a8T!fe_Rie>*!=laCC!A6ryYTn;%@vwGz#!Y7v`~ISHH= z>9o@mUh61Wo@TmraUb=h7-Q{3R!KHE;QdTWVIL>S7nf485d*xHHk4Sk|1zwe19{lgK=P+RFu6GN-72fg8>=@s%}f#L#bty)#tgj z+{XGMo?@=KESLo?MAa}3xA|9EV`?GjndWD^0Fv6;bNVE^euwqh$(LuX4E!Az;IhdW zJ1tk0il-+S21TMi`$#BQcALZmwo5GGm<5*)D7|!fJle6-Z9@r)om|ntV>PPy;jXnzZ*mMmwzNCp6FUJ2HbAFrbqtheZ24mXEz{$`#n@-_giad zs|GQ)e(#(1Ll%24=-^Se7|N*T9SP)H*Lt4HN_R5a!#eV3M-t`v3daXdFi7_iST`{_ zKa3HSrERob$e455NnB#QCKW$iK!@K$U{%f>b=mvQfW?E=V87-%a{+tr=y#+`*V&bR zLxiA5oB&3Um2Jv5fkAB9wL;zo=#tZ@rY);{{U%{4J5et#2j(VGiUms+^+NA#V3&zW zqrWmd<#(@PVN~n_r)^W_oLk790yV{nLAvo+`wxG&y>!9urT2xS*LRmoh0>?_x7QZT z7oiqcNqDz)%Q$mnb^n}R6%|`{CWG!b?@TTpak}2G^W@*WYh7aqOJN&0bc(_(_@>w( zbR4pLlL%9A*>`DfZw2_H#nveTG&YLYI$U=kU6Z~tGK^HtZava6B`KDWrrpEK9>(9m z2?Mos6z%(cATOm?fwEZsiRAMU`7GIPY2picRZPc>3%nP&FIuJ$lYU2Tb(=odv*xqSBB?4rpmKA#h`N`|>f zEFz>5fVEDt8J*{Vl40@D+7v&FW>}?PBj=i0cMF7(gl%|ALGzSGz3swawY9|a5>18H zFAFBTF!lq4oyg@jVv4dP;mlYAa)ka-3zbwu_z$~V%RIXT?L zx;nXJsK&wcjvb$~-K{0^0b-j0CJpGV|KFki**glr>m_77yZC{tyRZ*(aa)}zMhVVv@`$L)4;+1c2EzQhDJ|N>Z zV+kuBx~@O=s^WTu_p6Bt(V#6VlECRmci_ZHOyw5qpB|MZhjw%t{N&(BCQ{d_@~*!v zsj%E$7zh4gUN&1MmxkE0Avj)9sh~D}mW09DD)aphD&N|X21(F@P(?MBbplqigzMar z6Xh%%{hr-q@O8j*vzH6pFYupJm5t?On%Y)JIu+_uP7l62^F>PM%OHa;B<*Kp(9gZJ zjNn<sA*GGE9-B{E)&riU>VELw2vDRTx(*H6Y;KJV z+MFSj>{$spPh7?{wL6!UCZH#}er?NT!cYs#AE13krlKd18WRRnn#Lx&#uTNnjE|t5 zTfHUI++dxw4y>K0tD3HFBJ&0{J?`G}X%YXn#T&_Q|0jv+;`~?I|1@WDA{@@IuawF< zFXk=|-X7%LerfGV^loC<-|M`|ztzl=!o1>6f5yCorri-pc5G2H5A{Ep`XV1^$|-y$ zuP3aODJ%EQ=_x1jMSR$>E&fMp%#<+u3bFx56Ql;`7!lIfGVt!1oqtp8Lb_@PGTldU zzJr!;-PPldpM||~|CiGZY(cc5-|!(5Gt$Kpj8%l6?&o5?gQGFX@vWQVQno#}yCHai zQHyU?CC_z9L8^BZ(nLS7!;ZETH5Yl5Xp&@#$0{cGP8C1vy3-{ogb9ZuI3OU~8dwU#OVtkm)P)}+L6m;?Vt&c6PPQlIy=qOC`t zdhG%KkHIv%H|>;Z+JA`+(pfj@m?e+COW!-5dfd+jbH?tUrMKRbw_j0RF#RHX|377A zUy*n@KbtPV%XJ9(u?{tt}{XBss&|!_LuVtAC2&bf=$n@xG$|fu&;8cxrqa}%r zk9D00=;U5W?`}qSfw`Y{WB!2Zvg^$x>rt_GcsN!UDnye9-~#>BXw0!ts@@A+s`9?r z{_=ItXvW71aWq2QDuvdYVszu9I?Sfi6Okc4K=;N)RGCd1@}5Fe&&ox z$O6x0N|f3UoG^k|{;20Es`6c^{viR477eqSU0Eb~=Q(6=4}Sbft6x>mF0ku|3SZkw zM9_kmJuyb!&k@5wS3v_KJ<+>S3>%X)@R`5b)ah;bDM|lhpf^x+{|gCp`1}VF2)4fJFdxeJ8*#pev$*ir=QDmAxztVP%}0SiN-lGm;~jfZ7Wm6q zP%RB(5aHfL^n`negr(v`1+~h)n0T=w{bBgyls0PK>I*0xA9+pxW07JU1)f_=wVHAe zbL<4A{zNKbdoUYeBe#|%z<7A=C=^~^oflsdp(;AlA37|(@t*KG8;P6+AnNfy>q$x7LQByKFPm=@gvl$>P39!7Tr{F;VCV@ zCvh(>TOp5jv6xt|ft7qkXVp*tswxCs$-6vjs~;f22&XZvy%bKqLC{VO`r~cYy_{Xh zU=*i7nvsA#{M4!cu^p5}b?hgi@K}=LWo4}SFMnAR3_tS?H4C~tu zna5@6uV@pVLiL`sLCWG|byIcdYU}E@S`rrQcxRELn>ieCE?25En_3=wM^n4W2u|ME+*|Oss@y6Uej4pNG-u+D1LTgystH!uEgg2$ zZ`PguHa7>!pg8vS_I%!)$G5gxB}76S<4xtOy!ss4C@!jq?tI(=_Mv6>cK$9x|Mm%i zh^crAjeF%2=^HVrqj!?~a|}M8&)YoCzt-JJ3j{s-zQNoXyS-DO1SeC#zi_-7Fb@wt z_-#Ks`}&f7vM?L(sb%E)+ZPs|u}*XPjS<`GxtXjoo-yO&ubYe$DE(-Lw6{Cd1i}>z zzot7MNaU%kG4#A;rHCFddLWaVTt~J|rQ6O19~S)M^}7>{Y`MyQ;cv4xSWb5Hq5;Hc ziy4!CsmGV`*h;JdF3Pm5#Gy_z$7Nlv`43k3HzVO|~65c8*CupQTSiZ)q z*Xi#Y%>%RT;v0dZ-f0mZS4A?AppPea#3)!tzh81iXRH_CO)dL-i2VfC9_`ktTy{9GMTqMy=QOFmy6wesD> z7Fbp{qw+fTcNcqB0>60M4s(f;0l#;+no0WXY5ic-6}`T1dh(WY7m74@^I}r+Z|a%u z@j}O7157!O@5?GA1^xw~v+qL7X?U{l&^u$n5cA`MsBXPuMBcFcho zUmcV4WkfM11~FW;?hlGCqM2mBEtV5lf!Uba|c#3Ix^s6f5+!GwMi}YcF zhPc8(VZxN~*^b(`SSdQWKz=Ap*ODbM^0?WpLqokxPD0v-GnQ2Q^bgs%Z^vCj2qLAZ zUKrQjR86-?THmCEX*g%tHmTWpN=DaKx9eTM8%@_CDka2!h^*sI7jiiLfz)(vYg=VR z5pR|jXC_(X=Ngc?b#BGCw~=qpE-)Y0TK?!!%2lG1lr$aZJHEFc{a<56^Zke(S>m2j z(|Pyjx9R#EngmQ7?|ZhA0*D3XzIejNCpOShJV8VTH41cZO_6 z_|%hA(ZkGdRcPk1jL{lqH)rN0`M2`-M)_Q{6Klb-jCa@_osu*;|NRz=>eG4VQnrg3 zDN0P&GZ3jji99s<=tiSPz(7Uzv~!z*yKStVaA7!cC?HzUD0dt!PXABxZ#Zy!fVD)v z3UoDGske~A{cEo^8v%&rHx}6iE#d2wA~}s;uVx5O0>`#I!6nL-Am&fGjj|>TbbkAI zX!%|Ox@Kz=hU2%Yg(M)NXiW0o0a9dgPb=jZ2>zgSYEr0l6WA-&Zj`=$(t6T>>S^1w zSiF0`v?jkSk@w`GH31A1KsBu2fHoPn+Dj)jojyF6VC_H7T02Bm3IMmHrEo?pQx^$% zO5TpIp;-He$;qN`L+!@$4tLMECaGulaoAo>GuvDNX?4{U1-GZ?Xu)s?6 z>TA7Qp0z)sXkQj8^5b<_QTv(Qc2@zIK}%7e)5SPOqM+Rr=${DwIib$GwK_#1mbC4KYYo!f-{zM zJNRVGC4bzAR7DlQz}H@P7VYE6;ld!rTws}{^9YwQAw_r1i*W>OclPh2s1EZ@x=}pj z8YE~J62y&`Ry>q`)GR6V->-OwG4vS#1)?iD59Tf|is+<#y!x)Y6TSaR9rE0N76|Of z<~CC}c2pLXixFA*E7p=jOvV@}+~hbOG3dmYsX;NMO!hi$pwO2rGUfFTrCJb;2VCwJ zGL^2AO4wZ`+A~O;MkDbRbR;;aHE}|)3d+@7cL3)Bmyl#7W*wSP*D^NxU+{hPgimU% z-9C{D!DmKOYNJegLucrNym*lzSVh>%4-SR@bYE$qXow;#?`*M4nY}?eCY#TmSL&NL=KQmn}s&kjzt8X0q3VdT;w`kaI>+~G0fG2Cjw>F4nvZJ|s(VNao zoJ%KvIgx)`17YWntN}a4|BtD!@QSkC-WCK&=}u`z8l+QVz@Z1ELs}7Oq(P7vx`rOQ zK?y+#X@+hQ0qLQ;yT0c=-};^R%wND-H~ZOpU;B#N;KFP2oXg88f8*$cFX>xSt`hXr zB>)#_7YZ2WCpu0!5I5NzQVMeiTUAHf9<5sIsQc8v2F`xlcR)gdM z@n}Nj!L&L3X49ufWt=h?*Lek{MulpSki3LU<`B^tVLhQPArOW($+4G?fh*FOGB=a$dZ_%@vN+_^M`sKg%)!Oi% z1?lZ|>jBD&P-3Bt(W~mfOaGxJaIIdzA1$VeX-yd7O|PyTf^Ec!It)+UGP|TXj2lCI zfX*AP2DiKWTBMOu@37Z^HnsQ z7#eIch9NFb!=x@R)!`l-5ZJXJdXZ2fL=u>>bZ|)DU`AxV!kTim?MqBGlD8diU)s=j zFddJ#e)5Lh4c4tmHT*KwwDJW;Bjut1CfDoE4E-|7IU&v=()*@+9*JJ7-$};b zMCaIh(0@E_T*REUg%o|9!}8&rHJukS;XZvL+3Ha6+8)36`2H^*t)>!>=@6KxB}A8d zjDRDG82tQrB33l#fgl0xRegL8^Mcb5b!Kf~?T$;8>4nb@N@$joG=20)eCyh23u(`u z_sE5*eY*c|<4{`iholhUAM4*t(Od|4Na1xEAmJR4J zN3}s7@ShFSD(=~@Y!ypd2gaTdc`dB+N{8Ay!a z;e?FN{%+mwv1%^N-N>!CAu+8&!I-!|yRt3nA9ruEERf1OJxOl;2alWH+iKDZ?+r~9 z!rl$1&l75jAltmowh%pBS`XXVp{;Zz5VKo_DHAdtql^~@R1dr&!s8hEV-t>~g8xbv zd02EEz3s{AnjE=q#}W#`mu6#!4xMGcg6D_G7`#@(*l3})^;_EBmXpN?FHfJrF8-Xu z`vsC**ZmLtNA+)GaxVL8$;?J(T9n7CK4vSI-#Yuo{yU}nyZruVNzyvy2oz=v-1L61 z81=n*zuEG zw$C(;ohZ5IdBG`Qg=Al5}aXt%*IW%5p$y-W;x5jGnRNS@9D z0e1}Sz7HjgM}?^7bPVdqn>)XZ*J9zewd%%Xvdr>J@g^}V-H7E!HHfe&L` z+BAUK=-Y$k$bY=RFx^1$$uyv(Q%6m;NPqke1I9E<>Ft1&(ny{li~AcCLBe1l^B?*X z?}kY#CIiP^6xWz2lTM#MB+P_{M#O37P9^aJ?Q|jw?@ga2SgN#Y>Z{|DkK)JpxQ~3p z@UZP?j|^Wio~)&+enW~lT1T)NzGa!+b0^&rG^f3i^rO|!j2sbQk_ZCdm~rbSeCQeQ zAv85>yYfR2^Sgh!ScAw5WGD+8Eos@VfaM)q*U3@l*A*knP4s?K^(29#jLT=|$p66@ zjt{wls&u@jdS&j9oQBwDkOBQ*gT5cRmJAZ1G?c`C&)9@?qBm;0t>3VtrPQf?l~Pnf zESXk!V@^sfx0v?~Gdl`M4_Vbf9bUYCp?@3-;0}>Ml3PTTHO%rs#O6^J{q5xJf`=`v z55%`JkbX`STyo$Gh3vGt8dC7D3MvOth1N1&hiYj*;<1T%k{-iU$%_v_(ie{#(+n|@ zDBkxs$aDeLB9qa!c<4*S%JnraF%Tif;s#5EqP%4IdcxDopE0lMVw>jfJl=3&UhA8j zoV5JyjN(j&FCzfFokOVGYXbn@#?PdCS0YZ{t@<%UtSFW#667U5Z#KT+;<~Ajo)Xo^ z?~2V-7Io*1R~5)t8HwIFk*5TSuQVIu3xMqQ9pgR@o&0lN-J4ICm{0im6UeJtmK^<@ ziM4xyWtmMiYSkj6_pWcIlDZuKC;iQx9Asc`q6DDa^wiqbBSE|u^HOF9KV#=D!U+Qm z`B6wAe0mi9X!gQ!Pm*XF`_AWyE##Hd(ecm4yX>~B3E8`=V6&iR^0mhd7Xn8SSvX|T5y7Hl$olXreq)p=4|9s#*X5nRT!yKPfsflN>R-HB=K!y&= z?PHquoxBK(8s+w`q@-=`x7+`2DC$DL-O#r;?Z^paxbiSr0?udbA;P%UQ6;6nF+~q1 zDr0z`igvY!GTDlsJA4sS2>6yLWlM^*ByzdnB;R>8D!@xw@`FhJd8)O@@1dz}r}4AF zy`LRUuk4zGheLC>$Q|_Cawm&h|3Em$UjNL$N9z-PtWjAVcokp6MeFgI`9oB(eLR(NrdCcb z8;GXgBG6;$dOK`MN;&ws z-m*a+8TI`@$2j<$Rev(b?;Wd>zM`i4y{E_>p~1mo_{KUmT~E6%-pXu<&X9c4l9(%x zWeq|?UZC)n?L)bIG%3Ktds@mHmNo{s@HG5vDZrz@8*}r$i6$eJ@j_9h_rM}i&HOP5 zCb$FzK9{`lZcN>3n^H+TE@0_pwvv_o~;b=gVz(0`)Nh4PiAgknfH z#9Sq^0qzl8$OQqLP~im@vcCEG2xv4xqAE%%w)y@q?c6;5mTy#B^UoHR?g%PUklwe_ z=Nl)A{pm7Z#V1HRnH$4w8UJ9n5lek&n9uOfO6BHmkAJAW2}$Yi!WQ}%N3&(tgmSL9 z#n~Jk9jQJ_>b{YRYraGoFWxO&v~1kT-ibb}+r6HCHAWdk=uU55F`%q_r~m1`@f`l{ zzZmPa?|;Y#k0%4Kst#-FWl@jgs;=7aGdvGkuT$^XW6b4BMB|So;2dvT6{6IEG<7`s zY#y_m5+}Y-+TK76c zm)b_8moin9p{Ea%?}RitG-J+gMtisA=eoWVYj~s7N7GUh&kgq#r+?4dQ)C#_U6|WM zL-u18HmFE46Hg`L9{R!jH;&(YJm(vkDPPvey|$)>&Bhg{VRqW<5MCEHTDNY8;`o?% z1!iuhFcP1}mfv_r`nPFJ`3kokZ#k}TMrw$j{Qwgt`#uT%8`t2w8nGtib3{F}Ueeye z8K2S1l^InpkZeL@vu-|Q62u<8lt}DXr2X5<(b7Wk&m|f0OP9&I7lN5V*2OhTdIg~l zY9Q+|;>K$v2ld0Tx%?X~lxG0##KE1F)O*db|9;$xb8<-5Qa=XGAlg^19FRfpm>uHx7x<-hg z0{ixRieU>rpA8(-aNS?%X=RoR4DJ1qe(_WY}zqov-ea)RaAio!~2IjsQJCx7Sh2{*Gy*`IodJ=L|lD z=~Q}IJ`JFY^4b7RHdjd~!^C`B$in77EvfV~a|Pq6noIdz#)~QK$9k@kjOQmaphMNM z+#Ddlc`DJWckgE8x}HXdjI9SLrUBz5WRwLw?KE?w*1VdmBs3@6mz~9$S~r}h-8`mA z<&~$fe!`&0^8fQxkFKHCPH@z&o@_Tx-{X9=J+iQoFiF7VDio_9h@hWUz#B+hI<*++DUTNxI+SFSNa^R}6Y&Y#CbBO*T0=jrl#9`P@y%;I9bAd=vej zr|woVrBys3pQ6N~pU%8I*i+<l+NsO^S6*~hMxTuIIdOrbP@v-nYw4Ub z=05gFg&$;*Mk+=ZwewgWzXI5uzJx^$zcM);Rch|-QLEYGC{X?V#aQoiJKf`8cdk3M zxCUvXk+*&Y48N+T)OpKj8q~LYE&ZkyLx-mFvk(4;@0>Nlwx&;H<2NL{@_&eWU-!K`{-ngRLe8B3DQuJSC?* zbO~5EK2rirM<^>#(!9ui_R~j3@8Y1nZ)(dd_4+Zp^It;x!4$bBbyMQXi=KaCp+nZ6 zx?w4aAMhL5UOR*zQgI5L(zosmVGwu9rvhOWRKmPK=wQh2hM}3Gyi9+JVZ1wLJ7Xji z62qshga`Mw=&A{!0=Q_;Ao{r zVfwNd4{+?yLwE8XG~T?HqvI$BasWHoXR8Dg9%%EI>_WVH*W~a>YfNiOpAF@ zeME}6-0c2&OSGW?&o}VMFkhjCo#>D2!!Cz`Sz|%S^#!9w)8&h*kCz)HmT&l$MLO$FJn!)TZ|$1gXRPJt!n}YZH>$RT|pOnZR@FbPt@zZ z)Ke?(5Y28TvwoU7pu!gs7b0_M3p$YP$2~4x1wmv=4*e#leW5b25-=Mtf!M%Up zFrE3gP;x*&3sZa!bsQph<(sfP`ox{J#5=09uN2kSBX(pm)aQ`FnHuAhq)X69>78%< zc*u2(ps<2H1U-Wieb5Hk_m@EX&rS=|ONWE{ZihN5C*G<>#Kq6Kz)asu8TVDEs>wgK zA}T?|AY!r4vITRG^kE^x;={a5cBvzn&RCorH`$Z-a&(c4inG@3#(@(0ECDj%yIxg+ z$OctK{{*4K#`6~+{%!PEMZ1@f$mX{MABBjJVhOIy?!f)x{T#Tg&2D4`wyH9{w|SEd z$J0T;Rvb$EROyfs)uz223paT3-QS8HZ|EgmH4pz`wa{kxrfAFk$751rS9GG$?He-w z?R<_W!GR=1@A$mQ>^am=SBIwzOu6PNM^FBNzu!j*0ZbuGj@Zf_;0$ymm59 zQP|`uy%OhLPlVzc3NH9&OZx|>bOy9-e0B1d)S*d7A-DE*R|LK=Ubk|@lAb~~{bDH7 z9~B))HlK(&;n5%{n=0+3G-0Hb1X%J@H9!Bl$i%LiY=#l=gidTZlMwryH6x)TxVLjQ)Pz;f@T)LHq4DRkBBX_uvu^#5CliyW)wE?m@Ja_Aq%R z?Pk?Nc-!?O=ThGZNIvH?8>>=&BTP2KAuMVO5yNTZ*FIPZhe`mwy5_SSBH_sH#J~=T z#TIr|2lgsa;nX5Xo;>KBPbn>*KO6q84!!rjV;1Kp*TAWGbF;=KZYAYo+RG@6NW6Y| zM8lUe?xZzJjVSdSkr=pWl-IOl;b2CR%}u%@Q-!)UX}ZfyCC^p+v4xGWzC$cml*P*M z9C2zO9~#@N3F!g=HN^>=Gy2PHe~uC(6@Y{}H_khx8EAd+klhyP{R+pN8Dq{R;eT!^ zPe1mV?h`?29hp>ht*@{w+PD$CQw?J_6S9BzJElzW4Arbh(?2KcQ`2v0mM}?QS5xJ{ zY`}YSg1(SMDZCb*OkswT<_(j&8E%>eQ%U2IU zaU_8#4g||jjJ7q#@WnIp7j8=b_XIi9eEMtTNa<^(woS@AK(`mY0c^>V&}b9- zbHL|y;vDv72O@%Ey5f5Ytf7LHC&e&`>eE=*U zPpM1Fp!@)eE;lX=W@C$L$L^RolYR%Jj7I1nL+#)6*+$}Y_z9JqMA+5W7b1W>Bg`n; z@qD!j>#6*=G1l6yKWL!+6hDcr3U?$CZ+ay(ch4oyZ=_een++bJ=)@T9;W($J;bK(1 z5hmZLwV<7t%FYyn-`Z$4n}X&8dI3(jzg+_7f}2cMT2Ei~>}yqr*y8DX=hl90{d z1O->7HRv!eX=$P=Q;&E+G521dIB`kc?_SFxcp_Cv0?^g%*b_%Q$#CmEJ?FAC5E^zp z6V!~{$7}2BVajogf~Sv_@Bk>zSN3?k>b9>p@U-{-FX21zCrYw~<<$6Vjr#08{^cA7C5_@*TE` zt*bG_<8ky}TV-n0bQ|=wa7Nwa#;~ym3)@>3+d6=-nJ*#*Xz8~93OIbBbX$Sn+=s7W zf6FR0r)T!bVXld3OEVT`d}x$*`Y6meJ-o5APfa-2!{au?h)0bamdspHxIMo4+X#)o z6aFKQ&b-j~bRYNjamXVH=0qYX6v0RH;*v?k60fF}M%Nfy)niaIjs?oBZqQG`5oK?^ zGn%%dXN%kIUw{m~0%r@Y8_1fj-x-YFQ85r=UE6>5l?UhNBz3V4%qA$cae#spv<#P8OtXdkdOXE(?N_b zgCX?Bfs@GXL%TR&y|boPCN#$1tAlMyxhY?ILvC^ic5o&bPX~kEN>{ppldu;6FuD|1 zC&T_l#Iy1cB5Z&C7@}mD_7)A7aDf!%qMbXVR48~#$6bp~KlbpiVk9Nn#-3OO52=hE=O%*;?R6HE{$6TT)^gPc#A-i`a{lxoA zaf*Co`n;oZ{Z2zuYo}z~0Uc=F-uhLt`}0%(Tx+%>wOCss>NvY>nV)M?8f34-@~i^I zxQST|qm;a0L`|PA{)C%SHng_p)A~Ro0e)){+-DRUWM~56#^DJ?@VK%SsX)BT-gl>^ zSpxpB86^ITHL|-ZAU7HMm|yt=SMKY6G%rJV-2qDY^3jU&Zdg!ZdYoUkvg~<()m>B7 z%}L_j%?e{L5UHThdnz_v8#y=Y9({7}AeH{b5d5HQhp zZ7i*f$nHM^+4wwG*Bn14n;gd{5`HhZ%Q(L1hq1M2SVMrR{q^$}4Tn~u66xD=Vx}6J z=e8?K!G6KFPiV};-J{m~1vy1Yhcd5jH&#e~uzynj(n&I<&nWepWM5Z z#lSCn>}IH8m_oV`&uAS}HBG`?$P5+zX*x_RB;z6Aw`rf<;3+eZf~a;ZFfn_UAR4h> zT6+!7n%3>J?FyNtQYuA8bvrEYQ}f@hmpncyb(iCZeh#6z8E5*%N(1-BdQRQ9Nw8^2iRV_RMLFxD>1ML*Sv%XjdB z+F7J{yR7CbVl-T%5pcrGU0LC#o-lyOI+&5Q^-OrQKDuw2)SPR@{K|p@&YRb^Lhkr5 z{6Ofr2b%qNi7nzGmN8r6YM1r7%HnIodcD8zD4sJ)ag;#fSw9N!M^%{szu638zuZ#6 z9wC9hA$67^pG?YdbqCNtUDz_Gy(1Ifz>8dzGL(%g2Sz8C%OxI$0>Y3tr0Ye~AeFafsR#GXg}cI`Wg2s)!RR9408IZS|&4)G<*_Km<51t&DQy${wR^1E6@Kx{0qD zIARgedU-`qx=Bmk^|$0vG~<8mz^&Dl1JM&Iu@PgQaHy56qVoc?w(Edby_qBrg#bws zHT^F*RWHuQFx6vAVm{34j%c=x2_!#$sXQbh5w2zR5(OVm9M(#TBxV7rB{K-{nSjc@ z4pKtJZsyw^+w4l$Q!J)kJignB;-5R!Th%WT`{|dlLZ%FFRj?Pf)s3PX1Y-;ThSBX^ zC+qfsre2c`ya4Y2uFcaRL~p{xmi5XxM6F*yAlA+@Lj^PetZhykGTq3jfcYu^W7@VO zfB|`0?{~t{cHrA~(1z!AplilyW)8lp-RuAF1OC?S4gHFj(MkoFgG(MX{XJR8jJ>#e zzi_sc8F1$0=@Y)Kn4JwR=775*w?f<^-{!-E#hmBS0=+05A4p2;z2fc5AJGo+T1Q@$ zfa?sRVQ>d+%r%N(%{;mot(V=_BLxfIK5bBR-eBQ%RR14ctsk^QIrFT+Cc1&U=AcmM zIyMHU{o@OAPZw>p#>-2Rh-%?aLr)_1?ACtC)@a!7G~Gq}j}1rvbU4?)XsqUTkBKW~ zVxraQhrDjMlzOk$^DDY3IBasz`DIi?-zU>ZK3BBrvGh;Q<1NV_gT8h9!~Pg|ei+7b zY|I8zFsWx_JL%?(g+aV=IL(=IbkGOV@w-f^D*A z{+QB9P~U~jA6rfmS5Pa?AQm$WS!Un+RcY4OXAZ0fR8e||s`p`%E9D5iA){k4GQ&!j zV<>R_@Bq?gahv9lJe1DR%skk4DCZ;})!r8PDrdv7I2$ndzIvsFSBq$%dV}E7!S~m{ zEC>I0gLW6^YK>@32vXeD#G?-OGbg7w#3&22_jG}lsZ%oC3n0c!_WKn)ucnroT28{& zn6re#-WjP-xZzrXLPuz|Uv|%I<36)Wx*RbqeDd92JXwN)OZ9Y}q{}c`f;hP9iH87s z2b>5i>jLJ9v5{(|P#Kmm)BdJiNeG9kzw=yHITdax3~OCvVpencc8`yy{XJ&{|8Xu- zw|tx_A)n=x9;r40!Hy8@{qVc#C2!~w532CMNB)pvka(roJSKSDajKU?|yr!Z+P6G{s4{CGgt$40D4T3_#p4M^`s$M!h;Eup$XIzy+eq7&U_&Zr>Eo{SM~ zT(yk|tHuJjBIOfgIu5cjCU{Vc7_gq`P6sDw^8i-_=e+9Kr|t^M8WFQ6Ghx42^W920 zLAIUN+8q9iXtw(e{vVa;1gEC37=XSsQ)`?(zi^Vjllbz;Nmv( zJI}UYPw9a6@X8B6=LVF2TJGxWud9X#`#9`u(J*S{Z z4he%2^`GB}oGWnE$k%?TAcZP!aA;hHa>1qqSO*tIb_1U4xvF%W`Ak~#n z`}tC;kKe4B*kDP5S;=Sb>V0>_v zeQvE9(7-DB#SE6d`fPCLTdRyQ#;PE3XF%WjTyoUaC6B2kld;1^?a1kaa$pdh?9S$n0fp zy!jr{qoVcD==&b+?mTtJ@~Om#{+wm$gKIt8D^hPI^67VLW>tdYingvu&WxC@eaWVh zMRf+4*9kUwpCX*&smgDd1YVCSPrWGGT&t-mC3HuRI5P@=Ds3fWTi3w&%g5hvi!8s^ zqB}C=cw7JG@Sxyg$@~Y>p<)!EYzwCT=!@u){c?J!38)v~{@Fte*d4y&& zGfG9=jb_wiu8=NH87gT1$t}BbCni_Rel?83vW^OCgU%?LP9To$b%%G}fn@N-Di9kq zqcWap_=vkWpYaJ&ysor6w$K_Q+?tr>B%XV{ZVV*CaxIbneDIUn5nh|PG9vc7t)i+QlFL}C0oy5^d0pNJ5}~&hRft7eQCBGcwI#UaiQ;i?6W1a^>D$x&LEZ^u~Bt z#iR=A=O^?PZ^0F{x|=>Mp?b9fVu2y53BJ`t7XhHBQtS;#(3399NtKK37Z z*6EKf&of=^Z@9nb_SDKIrX)V<34HH}m!Lq^Bt#GO$$^k{lvZis#Sd#=Ggt53jlY9W z%JVL2IrJjK7NUlTj#SBDrsn#?SR?tMa{*(l|r9*f_v zx#0M%zi9VKxw3!u(bk5V(OCb`ifAPC5a5N|Fdo-OqNh7;^R#^4__>b~Y4&6^GYS4+ z9fO|u@*tkNALU3CroO6X$4(w|lKNy4`bw~ylUyQD)AdgN+K1k!POWcP^nt|tnB!iE z0MUh-5;a(xJ+sF04QbIFpf&l?u-uNuiLqgB|vy__m<-vy_U zL<$Xrr*_K;B*`A@#!t+=W$vh%HRkRS14F_p!u2s2VLFBJRGKxv_@ko}Rhf&`77rS| zofQ@@N-6gDHIOd^)WxqL4zKhi3JI;3Z9ki&g?~9+$w$se{ z<3@(44cKXlW=+F|d3pgb;76DnTo+i{g*K;jF3ZpXP0cFcx#Zi8DF6#z%s?}^#oCE{ zxVn5Fr1;3?0wpJsKy-rj-SKD4XD^vr>zj?{IV)equdKK!Ua)jE0ZP;L6}~Xs69n+wYOCyN!iD;<^`_f1(ZN<@2nqqxBW=vbL#uqCNrVO>-N<{P)4|!Fr_m^=^@+pe9u~n%3i~B(DKiRGS z)3S`Vj~*O~{V)#?Lwos}pJn#nQnB=|P;1F=9*!irt-H$z#*pTon#Q@s!jqIVbZNR$ zE`fySgByrK^&Ynda#wz5yS*+puvOgXYRxMxv`hnXm$@1|n zXi)4c9P-$PO?8B2Z-(Czj7Hn5sZ)m?bL}%SX|nVIA)_2E7o+~wC8hk_2ZE!x*%aWC zQkXWqhvf?JJzyuTJ^5m|wke>=_+L+@-|SU)OIa}4JcncpZhvtq7J%B{w7(@}ql9Wu z_@bnWR%v*wkda$-J9jo4a~||J6^|FNnpy!`>c;hUM(YlBSWx8w1xwf1nb;Am){AKP zV@r!C(t3kJr+f`Bd4>+r4E-pesWwPzh{5i|g163g)h1EaDw4<@&4og*6KM3bxJxzr=(zeTNa5>IZXU zgg5roWDTVx4_A}10HKqp6nxydTh|%KW?gv-*U(2p6*|vVatpE9c)H26QllLRO^LG{ zzTmsPw3ywuNwSd%$kcWv)Zy=a^(C+p9^TZLzY{RNcDvd*bK2;<%F6<6*jVF~a>~^* z%_TAVBeK&nZ*IcZ7}x?=UG3|Mch)W`?|zOsN8<1ek+gklBy7CIX-|g7<;zIF=fuohiM}o!L1Oac`m2M0tnK9uON^Ll!E2NQMcQCUc9n^lR zlIfcuDx~Oe6DK@k^KPK~!n&ot$dR9N{}hF%rLQ#1N&(W^uRfg0@ZkEHY=kB!;sy~` z#o-cAH1Xhy=u)9z=+Li))OeAP&NiZ^*<#}s`f1x29Wk?j)J9YR9h`+E-2~T0PC1NV!pTwr>a`9` zgl9-)L2056JDU&|+3V(7mq96<)@b?HF=o$>=Puo2TTJlDcI5CB-|L1Ei`H81HB+%V z^==w%k-s0#<@UfaW!A7ohGM^cK6nHf5hHf(Kl@ITTxK&f+Vr;LdR*;z@+=nu67JL~ zXZqy96q&AeYl|@Mt>R=$4c%l)Ml2%~nk#H^i%NOIoGpPVk)FvNyhX&ug>@vP2Oz41=@A(h~`IX!u!GY8rzcZjS0(`wBvUaJ2s|rr& z$*4wIA`>+0QsnB$MoMrvvMs2l8P5?T94|6o*_8HnQ%5N9OZ1Zob!oUP5L*>9F0FaC ze#QcLxKa!N$|gJdJ|{4SidhM_jFsSq3(!^q=CemqN2~p$Jtq+WyVljiUwu|zC6T-;VJvN)?RSFrdsxcPBX1ep6K{uhn+FZ<`d6#%{lNE9-+ zC~`)c%1f>3lOMf{w>yEgo}p6oueM-Ihw~lzWDvzcp%>Ch$HXeI3-_P(Bp>-c(+we> zQGc@m8=ZzLMXE&Pl0vf+N=6e(^!tx02_QCEnIBVS`2uo!FV@VYp3LTl>Q!|%X-57@ zeL4!7WYvz;((QW%(}t0%u@qw8Su7nMDnTTc2X@^3+1;0(bbMGp=9_gU=d z<`!tQgN+l|TpvV!4S#QDg%8~YzRHakwo}|62U+i^8(FF9z zCzI5))rmB&+!%NdcsiO({w${6TD)N@&bbA7z(<7c81Ds6A8wT|O?*j2|9!1@Z*%<= z6XI-6yFHs%=nv4=-041qwz>hvUH#$$yC30+jgkw%HUXBLM#o{%cvP515o}&bOl3+% zy0q}= z>v`_EF?(e7-k@!VQu^?ogVgOs9rT5R+G_}#-0$&}i+~`bks5|U*C>dYT#PX^F--6|3Pu-ccBB^a$1*{f|zM-uW~j-eKI4Avu5)d&986tZY(xBU<};;8VjV z=aAcsgx3x7esQbDila++O@YLU=+Dv0)6u8&n-s7d4J=<}M={T&ss8buqm$)|_2~X) zmL~qgzh0meW?~k#kz{rH>zvs*{}s;>Pcg#{gR!GiDOoBhbBZ^&1g*Ya0si!M$=+S# zm?G;N>*SDq*<0e{xI2%2wM6l|^}xg<&pYDmIu6(Wdnw=q?eCEtXPaDwu>eG&wcVM5 zYyl~e^N1zW$OJV_~fiLaV zk*$$ETJ5VhIzld%{w%fPig{Y`kW3R8gHRSxion&kgT@wSa8l`p$VFH6Y~zUU9Yx-IV9=3L zaD)X{{3J+LtdCfdq4r0tlS_F%#IL_Kn>{bXP>zhq51kJfEl`g0K3qc6pVCLZI0B3` zff9uD<9D_5t69 zDbHO($z~xGWT1bDQDak5C=>pT#vM8Wpc@w)&ro7nBXpX|JudmH7$c>C*qJyuT~2(txQynq2(PW*ljT8An_WQ;a630N>z?A1^R1igo(J>Z(EL zL$BkXidz`BSCcclQCr6>X>CW|+Lv=GjWfU1h6E!*$&$q~YM9l>p3;Z+@+F?YxNN^* zOJ6b+5`a^`BosO4U)-BzO0~&8H2u*zWoA%JxzKywp>(A5=UH4-XI~g|&FOIB&nDr# zFGqwIcLak`T$hiN_sTPdV^7V#^t*l#xv`kdHri~oqe$2b)sH%^Mx{|RmWC2VnWo2( z29Z+>YVO~h35(M5+8W6h**Nr3Qecw&vFd-bj;#@IF4`G6oB1-IuA(Mafof=OIhY#c z-U_<5FXsOos;AQp`BS>*vj2-eZ}N9;C}t4!9TkPgx0&fM(i#WD~Mck&@E&2CS zdHB5EwdBTFx_fS2Y{hcGrD-S8ts2f<7*+D}p1N13Ch?9tZhTayI4~z7hw#ZeupbJwjT0Ba{_E zGuMIjvjV$Mgpz*;Y&Q|Sh6xZ`F;{2{H=iI80OQ_@PMOQ2G(B(#8$-a>a^%xEcXX^a z5l0BG7Stkxxy%}X7fps>!~jwM{DwZfLYf(@m)=wRp`PhWw9boKTxUIlyccn~pp(2Eiub9i7ibbx`|)u_e&gQNmdUdSjU zF%fUzoZ(q@+wOa%`?WF(2xx9Qm6GGNpe#EBtmF*rV)lxl!%vFjMIz%#RLN8jxwPov z%1$+$Nw*<+d{H%>n2m_3RN*3zGwC@Yy-lCs@>DpUsT$FjaoTS<7&A~j5xaVxMQ-@x z8MSPucN7;WwjciXXYgd7_VtDfd4?3Xgh6gxNvwpg{;PuDtOFKZURoJkgY{2B{>UWQ zD~^4*4XJp7zuVI7rTvsrP>0Q(ovknNr6esE1t~ZN<0U$?q>ysoOfFUxM_l8Ujnh^Jo=@itG6*3+7mU z4BZVBq4lc~RWyb^jr}-6`6p_HTu5K5Z7O5CWtHolO|hrL{)+f7OvB2eJ9Fv4;l6!; z#+1tySzZWOrEP^WzHKA!`0Cu+@n4=|<5z-!gwAlh=EK8|&-LL%+_rhvA8+W*=pZiv zqz~gYqK)}RBwqLQViPTzAaxas%Ous-qzc84>X498J#s~QsE3Toj(TIX*_uMzk z;#tvKgLaux+Vf2Bpm8iXA)}RnZ1@}f-AxJh(BH%-B zex0>KMR9ozI#^%lhdgR^dmDrxKcc`9I(@9KkA=7Z=1&t6=)r_|Q%`vNm3n zT-z3~E&~Z>k0M_H?2jYVW#>j~dqq|20AP;@SR~%B12bgcZ3p9JQn^=nAk$LoUlu-_ zQ@-ydCjYjz;Qv&e(L;aRz>OI`pq6Y;CCsjGS);rUTU;%QUuj$yB!CIoNsH&NMX$54 zNh_VuJA*%snXiP`GvB|=q8n8a)-Bb@#oKCL z(5iB60}^rQ(`1{OUTaO0DHyQtzK?mtBd^UllTg3{HiVInNLDhmV7ki>kY3Li2*A(? zq=eqriYVzvc0pe!e30mGaUIM=3U9W^XgBa{|Mqts=Nk>Yzl!iQyng+In30mpZ@ZN; z1C4V0`DkxYANzmH^K(69l4KS#2C)0FzX`P<4gL)(fBx`O5z8i@`beyi4K3oovUJ=MR6B7Ky(*vtS2KLx*^WE9n`MNSEBl6}3)iI9n{j#}v;y62nE57)>RjKO1fG*C zNhjMo@gBAwMGc${sS!iEXj58Km7*f}S~H}^>~H}_F_gf??5+T?v*6LI&kSf?zpa#z zfr_eU&w$$cM{MHJ?I`LjMt3L^?~0Pj?whnuaO?3_UIcupH7U`>*C0|sR4f33NC(V- ztR*IcbQGi{B?eXw+_*}J4NHM>5-X@WNl_v+7~tG@E6Sdln48xuGE#kfYy>~?7VJ`8 z)FE?Kg9&}s-jukJAqOZeP}UxYgl7Uk*PcFjV&=Q&@sGvE(o$w%N4;NHN!wax+p=ch zV$Qt~Iv;kk^fPmYV40y%#t)i5|NDSBga63!+ur;4>K~0$I$n+ijQ;!?+qExU)tvAB z?KOR6S7^tRQZ@yKJOt+!g}UZ@d==!YXZWI*`cZP2sE1eZ@0sbzcJ@9AtL z3T)n&$8VGqW`;x+Jz|0dVQ+u@(YdljP1JU9$t?9GZ=W zc8dmLSvAHMU1CH7)<^O|Bi^1XE_ChW-?)b4R^CNb$YvR1r{kH%~_m z1u>WB0vfOBUh#)R!aQppMBoPFI>%qqrhg?58^!3iE5Q%0-7R-4=4Z)^&Ylu8tnP=a zUp!pvjrCSiq1z$8^vrO}q+Jhg>ZV5q_%KhA^|WFG5H>w?{PQekFIt6l#PfugdiJ66 zf269q4AjW0g=xJo%Gj}QW>K8>tPy5V787BdFXJ&3Am;za)H_DU`G)P@ZP3`ZZL`6| zw$<2}SWOz+W@9yIY+IA0v2EMQJO91j=h^$?e3>H<|Vi4gWyS4uk%gz;RbDS1ke%g&rP*DbT!Ih*Af~ZacQI9er(<5g z_sTV=290K6>b-hcKq_(}bsCyO!i)k8=*D}=?cY`&K61~Q;KYa)V$W2OkVwN#?7F<# zV0rY;CPya>`vcj}is}MRJy-I4*u&c)+Pph;2rG+HpxwGh`M}!p`eHc;nCkfnFGM-Ficc_xx9Y4oQk#`zp8T~62@WU&oAlI z819)2dhAWmHq5BHE3ZjzBXQI<1xsPEDRpW5c~nRx$f(I;$9U<15ZSvYy-4w-!i6O8 z>v>O#@jsH@b{3Zp73wut`a=<&R2q%ziBe%0vIvtA@O!A8`2*1 z6c-kE5*!M6nd3$zennOeAup$EiE{@>B0-qu=NXFE{uLLsdzIjMr+AEk91r$A$5_Xw zIde0R#&E0i1DT^)y1bvnD5~C?qQz;d1x)}+!B-Bo_Q)3pltfbhucJy6p4;w{wbIR! zm9TLt$2}TBF!kj-8{PO4%UQ_5erPHNLu=Ae-!Pu;pZN*qjgP~qmE>hNh>L=L>g>X<{*=I6+F@^H69uWLSO zV`=04UxgK3a)sx}|DUW9@DuAXdTeoYdP)<%ZJmnNT3mEwFyChXOW>Yd5M3w{pUSSZ zG6faLPgxO!ca3}rD8{ogFej;kJ@~#Mz)_^N8{!hH{x7tRR&rozVkoTuhb~{aP^iom zzC7v1z)>>BtSU?P^g|r}FfBcq*%dQcpXNXglyYGVpD(GZPCoLUo%qW3 z`*sIUREDq6yjXv)asXEbOw3g`<%||ebOF$l^?Sutq?46A%%%=)cc>6|xPV=l%kkur zT;MHcsTs#C6gc#SN!Uexpj?&OhEQ@0?{Y92dESacks_}MY;R5gMn2$$sZgQTS(rpx zu|diyM$E29&?&b3D1px2>d^L87`+!lLZ}+l;2$&oPtiC($N(*R-Dt68vnES7@4I{I z#oxZE7D;%ixM#N+cI{gI7@cAA&(}b%_JdinEWIT77O?3NJUxT*T_||pPk{}it!MiH zp9YL-pcn?H2=HEy@%Z&GcHWFF`mcZ934g>1Z#jLv1NL?@@V>K`62jXji2rXTImN_f z3Ra1zd|o%-2BbN9PW6Akd<^gq{0O~#ib0-ERDpYP>X{E{I0#RMW3rSL0{Df37jSrg z{`iHVpj>SaeOrBwwi0&@_LYkLZOPv)8;Le1Z=>xZ+#K}bV|p9&)imZy28Uwvx0rnn zNA?k%li)Xf*DdFQR?J5Ca@ELutl1)YjDeYOtjOJyZ7y=SF{1uF*Y#BG+MM-`0|D_H$$89ea;Y-3;j^AK-vxPTe*IiZX4Te2V(|5<7ws44e%ufh6_fgT88$SI(K zQiAns^`puP81SM{x9a?+8^id;0G3uV#R*g$1$&=~gD78spl%xbeDp$mi)H3Kx@UHH z+WE%<^0mDv`p=_sq{Wj6xT#B!vxrRCy&mw){Lf)<8SR(o%tiC$9oNe_i0`p$iy1Y2 z|2@2rvZ?``CM_}+;Qwx_6AQQ49*tJPfO<@Z$37b)XHi@AsDa)ra2Bmv)^2kqD+4_$O zU6;CHEphhG!0qW?^0aE9ATv2*SyFYI{20Y4_o|m+)gP7yTKYCjT(jI!mR~i}vh%XE zEoCQ_l3>yU?$OJR{QR7A99_hM{J-#2Gh3=umw0=~OFo>lpDBkGayURDJ(m79MoU{m zW#;spEQhQ|nxjmcx=Qtg$!*u$uR03IQ};23cNkeOqk#6ZpCzjfCVH&wW8rp6rWe1T z{g(H#9r(e67wQyB)lo{=NZkb(X_?*O8m+aGrlq5ZGBTUhvzijn z)q!EZ{T&(f0rkfE_DPx);5mPOu@kWpcFlID3Z<-J6J0T5k+M2YkOXXRfv(Bk2VMCI z`l`)qEt>^%v7~mgZkp5l3q&Tu4mcopl#a!;zt#V61kB1Imj>HjGIWanNti?r@Xlxj zh4S|LP-N^SGmO^Z8=Tx{DKOmL*K0?Ep(DVM-SY(FBcL&rF*x_*#h9q(FqtnFj${ab z(D<4)EDI9ZnCH&IVKl@#8WRk}fwR$%beRr|-RXD!?R5yASPJH(o9z7Etlhjke$Bmg zB0mH;1-u)F*%;$vfV}=V{;(+GD>(4wpS=(8Th!Z=8Uw#=bTs_W#sR6S`=V1i2c3)C(d(4^SS5LeeB~?E)KE( zi$IKKfLI$**J{QwsZ!`+O#}R-rEFL6UTGc;>2d{HH;t>-mUk4>G~5l7wRZ|#m!cvt z!^7|wM63@RMqPD7+N3_)?HF8V9`T3-WoYGV3+}NNc@XH2_5uXd?d57XBvu0~pBNn= zvd=S=Q%7**UaSz@tFqn6HV3gvhhU6!G?=$Pu6(Qv@gJX+0ZHUUttHgT#;B0K=uE}= zP=@pM_1o7=X^Mr~P2y%fR*|@w3Z*khd(V)x#RQcJVC;EK^jesYujFzexchK>13`7- zCgH2%q57z7+;eai6(M?c(&aP6az^OP!i9ltUIa!oPm3cc`H}&1JHdFYfEbA708CDQ z;?dtc7{3tRH;%D=es9Z+89gnEdEy#@Rc6H3eq?f1JQ+?bv(wILYqiAtjT42-(3qXkMif4y6 zA%<{Rq+I+GHeYM7!#E4uQT)}Xgm3x_-*8EZRlr z`Suht?3gv&WUz_R0cL5i$Ew9}w@}IrC1aC|l~aGatXfO4fr2#I-A}=^2Ex^`ZH(I~ z)(pFYu;C_VP`HT`&1-+nX-7a?srFrK zx5UJimzksgE@qENm=#WF#73ph-*aq$GeSff<4dHg)nPS4OeDjj+#OzcU5N}}E#RHF z+-D8&C9}f^J>~{ck((o2GMY0Ggf0F$fwskdEa9DRyYe%=LTCm_(8>L@GEmw&3iFFV z$!PvfN32N5hm*|#8D$_4rItaV5goamVADXGUMnugW+Op&_fu&GkWFopNq;Vy#vQzo zETDnl2Wos!sykM6!E=n0NI6p4;F_N5*IyK2C3*9J%_nGgmfNBl~ovXK$#)XuWO z(?FM>gVW%44V+%k&$<{ zrO#2}YnpBp*KAtw^GvEMdI{r~$Ye^1&BfJZCEA3dLeC>=+htISu5*Bwt!S$_SF zK-CcmCxf`l$Ho!X9Zs;Wfsz()J~$P2!XJkMexjC;DnFC%8IP({7T>7(YfWIdq5KU? z0vgsR9|oS;DCT-HaViv)SbzgPApw4md4MsSdUBNa0JVZKH((AL{GGM@gmyFzs~70@ z_wR42GkAi312m2Rn=OvDEuQvrwk^JxMd+Vc|*%`U02- z5|}9W`UJ>MOIAY}iP7f|WhLv;Bv~d17=g@;r`8K`0)HXUbqm>hXptS3X;ja;7(Ptg zqIshbX7KCt=UX5wER-{LEho-?V0?150g5x>ea~^UWN^EL6klInLz%ZN#3LcSlkIBe zr^ZhbfAsp5<+-rQp5N~L9f^K+WYa%aRi8u7ufHUOmcD0opweRehTohYt8cNjVZ>If zM>_6Jz{KE#4L|wrBfEfd`qng8K?%*74|Zl-(#p zIKugC0FOLju4d1V*XQQ$2IsC>u5$A_n52ZdKXv^&?xknb+6>=qJA6tzXr+YwpKyie zy^FwDACgeQCx9sGy&`Nr#bMxMZhEu`T6S~97(1#P$Eb+? zTbWHm@YZ|DRh}Fr)cD@>+lpXnr5F>?v(%zZi-MvB%$HWASIEZ~nRXLAFf;wPH90(= z#pW$j{IX=8Pg{0k!aVJBC-ce|*J~Dm1AJUeInw0==eeN-DWodRcA^KW+AvwRrwY0`e3B4|EP!_2%;CG1IFsMOsI_~7HckHLXBhhX!nwr&%ySDRsoGf zNdx_)idOO`dU z^IUZa9rIlbCP%(Y_EgdgX=pBL;0ztT#^428qdUVuJTAB#boehvR5o&LV?&h?5xhff z#g%BpCqxeWUJ(L}EK=vqiA~Nv@_+>EUX(B_V_ZAKz7#XJrGvmQBk<4^fHOkp;^8yQ zsS_POxP<%uFCyNQ8j9m0dN^U-SV|c2&S2Oz*YjlvBX?utrm49rrHg=fJqP^Scia!+ zw05-~JUqnCUXPsDTNWjQKNdXxw^dg&A)Gq%fbrY)crV%fAbI=Pd~{@JgB03w`jnJ< z{7JFvzn&ZUzZ+R$g8%a7{pC7cCs!S+J+*K>M|)EgG=21OuGYUELel*v(|h}s3`M1( zHV8%OQ?oZH{^NEMTDE8p!}7`*r~NS27!sErt; zzNf&bs6~fYZrE;fmd+7yxgLg-=6`&^bs)xqT|6gD*!Vrm=lY*f!`UlDzcbpt$pJiB zVNn~sJZi=yEgnbp#9qwuck=^y0S~Ru+m!g`H;heC(&veA;&+x19IwYepF+QV#vSdF zM8J>7|M6wQXxF}-rbED0{@83Ti*5Vi>!w@BUW$_R_CDyg-@`vsn1IF*g=i7Vw_`VE zcylOj{T)sS54l5&Pw;ZO?!S~Dgv&C!ZmdUbr7IlTP{Jk1GB2g0a|2^eoyrm! z*Z3z~73pkhvAo1aSyx1fXw5sP`Z{o_dpq-AONf846-p+j7m6>y_nTK4Kl^^YPb=&$ z$O5jsS=0ST0fTA8jUFd^HMch@=H&%!LdH9jm+I4@gfK2whdf4&ns6)8My9GNU^xT3 zsBqf4OcyWzZ0E-(4pt^NmD3=D6-@z)W)^3{dU#_g6N>chR(f$N@XjqZ$7PQ_CsQaeEeO95Xa(p?J)| zB-v4V>htnng80yE1`wZ5i9#`WIL_!x@U3Ub<$u^QGTc$K%xGmYL+M&ek0p!_(@bhr z`8~qtSfg88zg2L+%I4>L_v53?&E@D`7|}85C9(PnA^1J($KC+S4sqp0(H0xT-PT;HP?R!W#*Dc?~eEM?UV?Kh$8So-|KXR|H z?bve|8LaHpj6vm$#-%o)o^MOC5?KeKOAm50tw5bF zz&W4-B9mz&CR|B-bZ`motdm{qSb-N(B_(o1-Dw`RhX(BIyi=#8i><|C{XLTx6H@gz z##-qwJ(RH*@DRi-W2^cH=6SPy3OFstf`z<>fF%^3j?Av#Q<1yiw_4)4?(XnOIZ*FA zTU!qfb+~wN?$o9)({D$u!ef$Dq1$1v)xxxA@i#(}bB@xxpf`1X;1EXkm8MKbCnYko zQ=9CX#+TJ`(6wKHVG2%I&ubXQ6lYnl}#5e1>fzN#oNNFMKBA% zuLRu_a?fp`TMSk9E7fie#lomgp`ot27%ca-09Y|c({cOYM;8nZVjS@R@m+D3UzY8K z@h|XX0*Lf%bcV$UI09~wncDCcs;~3CK04|b)#$kWKq0CNaQ;y)WdqTN-%s?vF*(&L z0&Ek+#YZG;)%&rp%W+7uCb1lw9M_|F?QtEY(o4!?dz%hoCYNk|a%?uWCnS5}+yEP~ z$u9Y2iL6N>^bB5ihT=!^H?X~6o`q=e?Xi3$T8gY9?O46#)E98pkh1LeYCN6f=clcX zKjnWUS;3vHkYx5PVka7n~v7z0DjYp5Pd#_SntpK4d zUf8ZXLUm%URv$wHR9Y_Ssk=^PMQTp9KeB$#L}xK%ZN`HL&MO03ZQ%n`13kVTPD0hK z`l!kmVbWD6st=4X<3}%msT>bsxf?zgu^78vl!p_%->OO0SY3&LvdP&h8g0ze&p+5` z&4$<#U5YTVgXD1p!H9wZz3k!SqnFtC`GDK&f%R+Y?o+%MqSjm-ntYNr{Kj3_ocR%u z`QGQ$#_zE8Is*@{BY}f#jmFHH<@aN^Il19PCknl<1gqLjYrnpV0p6xVDK7*7iCMv% zkHDMwgUlb%1b<_Q!~iY8Lw48 z-Ay5Kq9vOJ&)lD&#Y#twstO$qm)L89OO`@)vT07FYW6^h=!E>s=ggXqHsPz%F0eIU zX*<;H@%d{me6B}x1PT8d84565jBp1vjCX(x`MMSz#(0p7IQ;VgeBWDdf$DY=P+PoS z!Q*cp9~|ZK_`gt#@tpbP+Wto(pqXGSafXvb1@+z|t@4ueY3WEk&c?g`C@WD~RqXp% zHaZpQZ#SwCQ6_)bOc?5zCZvi=CQ{Io-eKC4`!<^SDTI@|;FjswiZETr!?r2{hN{v0 z8}yVRo%i1UrAK~8A58h2`bU;&PNSIau{a_ufYBI-)KcI&jb~gKPFAFya7HKhP{+=} z7-||ym}BqaKo+>-6YH-B(qi6RUEOa@6Zh(r-}#nd={Kf5vQHQVe_PMG+#nBtqT~No zNJ2Z$xT#)AE&C68&FtE^U8f6sidHZofsH?r#+7C|oo^`9K3si2^~8cSo*j00kLW|T z&W^h$N+QZE$4>5y_4tBAe%Ok-BLTQ)vDyWdtQ?GBjqV=p&Myf?H(a)4x8=U5vhdEh zk*jRUA18o7kfAdp7?0iop||{+lW72l?*2fE$p)P#NZ#t>@-Qwb7 zQdn*>$EMem#TP|s?M+h1sU?eK2lcn_^>%mP`8m2K^o%zdRH!- zakVChPFfoFD{XCM3>BDCycuFAC_-8Ht8jW0j1fOy<)~wP39l53T;24p zyB6J>{EM89IC(SCJQz3E6_*3Ssa%7ro%1PyB{w4QAMfdCrvDRH+7UfPtMhdI(tDA? z=s9yS0uTv2*-~0w5I5K?JRCbdhRd&j?H2*zr9o?Xfx|lv!v_ufw7$w%OJRu6L`7Cg zX3puj1i3UdjnWztf>ymXq!=P@+H>ZIS`;V4pE}LE$EuA@zh(YyRM(-8Ri7k^1JqO& z3d!<|3XPpgetpwWc!%|IjmeQkrPvE+ z=q#Qwi>D>bS(>-A3k?~MUVE+Jb*^{$*L0DTgKz6O)*5Y}=>IMoE^!z3^EG2=w)~q@ zerU9|aoFrag3X$w>i?lh<25o1#(dX{=u|Dj0t^=KfTRy-r3*`>^hpxZs`WHv4EC#a zcKF#Ih-jf?8I!PpGKi?bK;!VIEi|rnBqwm`vp+~>zq;I_7&}Rg;bPLLkL`o5w61PZ zni&0Sr;~z4OI34h8fh!fnqJ%hjg~TV2&1D^&8b)*f3-oGAs=}zs!e-)#cjHYNW8eB zg1pSBD0|wfHFJ(e-@Y|)jY?BW4zN!nu#$g1!#L*_0*h$CnIKED?9kLgs;&{ji_y`r zbJQNNUsqC|7TmVu++Ixb?PIbAe8@;_!*pN5e7J@VhYg(LKaNfBbvGYBF@y>1lOg}# zQ^v1xm$Z_10225bt|ui&j2s&VrMcmyZbMlKdyh|*Xo|vzE!e+AW@LqxIbtm`kDXOK z4~0cFn40aQdNxwd60%%3CON{skY>3Y%0{Mwy*UQ!GhKdAMIX-4dCTz_zC-%=_Ac8L z^M<*d)g46{9rg7Bt4<4ZV-}J1Rsk29yp*#~}VNGBufvW_f z`67{teRa4z$!wx>Vng~qvU7y7upWcvDsP#AVhIqFPFi0SbC$@cwfps?7gBG{GB;Kq zGG|-nfD*11LU1|(m7S|Yzn59wQ>zDu0BNXKl~M3V-Mez+mWVr4$oeS$JVjxi$$>@? zgPWfyoCqs0EEXa$QFI(_CP0R6$DJ{(wJ|b)XN+_O<4Xh@;ejiv%q%X?DPCBGR1v#( z2r~Cm4Lp7cu9|wa{%UFZA9K3Hk|DK_lp~ z66qBCxbb7q*(%rW^4IS89H|YiSefMT!{{x<_zq#AQd|E$2r?m^oqqq2Ri4zf2?hs& zZ55y(;~0|QSF-TGeZckAPiV3bkv@(uDLsMm)bZ*%Wpz$S3r%frYt3-qi@x4-75#qu ztcV{ZW*QZZae^Flc?;>50r{UvjS{v;s&5IRw1zTfP>m(sXQIpx-%;L}{E!|qe@yC# z7sx%oxDBxF4tdP|G`I++SkSU30RKzanEevNLYcBYgQ7vncwS9AZ<^JBpq>^ zX|%-g^>vQp#z8>yL%Sfg!eAygCZ!)uI22?9A0wkJn#nR(!XG&a9L_pf=R)0C3zz&v zSdj$zaa_z$U#LqWFy_%s}x$^~11IX1?g;CYfuEbn+&*~)H3 zt04y>QDo>>{2It6NdQ^bK<^$qP zFecc!>ZnO)VU4a`WqXu79>v7RFj+ud!@fHCtu8T4oaOtD$8u(J&5#|q ze@iB>1)T{V$i$*Ov(BesIm??Oo2RY)g2UpY=BJj5<%0lN>_l~*r=UEln!(KtP@6tV z)haJh$g#R){cuM-1Vmq_k6e5|AaOq%$>?W2m=3r0H#`RJ1PrTB1JioCDO+&cPLOx0q0i`1_F9OLxl3t|=j8QG0h`34iwLS${4V6%<4+lGnOWH*e8)3HD z;N!kKk|K%sUu1~K8W~0%&1m2&a+5fxmfeZz29AGXX*n^J7mlh5SI=ZT0q5pBLO7bqcGuFAeaC7vfclUUM>yS$%HPJZBrW$Xw}nMW~Z0=KgRHZ&D<+SO=(yJptzVX z0xtuwhZB5Cj@1%qG=tRUltHn-e^MGMj{jUw;6G@M<|I6A?m`O57c^=VVYH*Nm z^*nXe!@x>-hb_@z_EI6~n7wwVv zgg%chfTv=AT55cgH>}LG)kb+z-_Y4Ru0dosjOe zo6#qd(IINrqfhtYD`jgKM@JR#S%d9%14`Jr#gzE}Z^3}!bX}*dQZs`+&4eV3o+#HW zg2;W5VrPSsY7R^|f{XzI$k;oA>T+*8xYt;84rEBuie-{@k_`B^oTn%X(FO-z`cCx> zb(RY4HVp(E(Df62OXu6}aF8VzPdAXY4)DN`fAL>=bOV-7{3_1Jr7q_zPvB?X9U}j^ zvGwxOG#scqaN9>T4c2)Vg~9U`C%p`|4h}vmbS! z#O-TJqp1tQWQhN1xs>xdpx;?A%QsD)yVTm=GKy@DZ$^Klou}1I;5pke9%8XQ!XD{3 z2Bd5JIdnllNS^8x|9u4_&%HC;le#hzGeH`yE_!&(@9-d~%TCQhn4p`RLMKQkFWi$8 zhT(3%m;HNUB<+X+9zk7F{fI``<}xt16*$5RntA@aM3W2t!5O;a-n`yf33E%oo0Is*f( zT*#bl!+Aor1OR$Dz`IDb;WB=1^_GesRu!y6=Vv<PB>%ro2Mt_J6P0 zF2k!dMmd7r!bYU!5%(_1{UoI8~uKHHh( zLN2Fu+tS03vzyAF%1e)iPnbwCL-cc0Z@mD*h(au`j*BzIn-VHd$`qyc2R(pRyz;Ap zL53l7Z&`~fT*$hUOa!)x zGRJfWR0gox&0FEV!cPWfaF}iw@lV>z$hDbSX7$ST(AL52N}deLb&tG2PsEx?#gFh! zWkOms#qPhW_xi+<4rE7D=>#KaJ@OTsc#ze1$mKiBD;88($vzDRwrSTP_J1iH0YF_6 z_CkkRaWhM1F&-9q7L{EbhGe_U;ArvID`UGY&KW6qYZmN{_-6yvU&+5H_9EHW!u;(Vr)6dS* z_NXl@&kDt*0O71=rbGxh%d5LdT*a1gdratz@~JK^GcRg8+Blabh7_gV6jvev_r4J=-ML!e*vUNSJoK*h?rUz>;Qk9f$pg+?LgDAT zevkibS0bvR(wunK#xM`#26WGFJ|8B_Z4RLL$JqhR)Av6p#K;$99}+{N+Tat<@95TZ zwvnqDo8e+_Vl-yz`J~2u9%7L&$Z?uegpd@)iWt7Cj}}Y!BLZJCz8tcTf7?Y-4JLFV zvRV~>P{(2;J6fo)9vWW&A^uO}3Y`p_w<{>JQx$&SlqQnF9g@CX_eOg>ZAXsWryO#b ziceBBSkWs+C&I}6<6Ff*2Z}>F+m|8Vfjw?AZ*w0G9^?#5s|R>6+&cIlo*iIlhvRjl zLJJmR)>eu7pR;7DE69gYm|(ONP+UF+CGr(hYF{PSAoICDk? zcB_c;)IcD5R1_(;AVk8Y~9b)L|ZFLD$Su zbx(hADp_uK)wB>c3Hscn22KArz}kc7F>8R1$gjAXfz2R;s-TZI;f&3BQO)z%%N}Jz z1N0OjMph({*IB3rR#d=(k~kC5pSFx~2hkQh^9MEiA~^m9ZG4>c zlG2^Z(S=+^V>$!q%M(WJRXt8!fDUold^oy-c`7Wn8ZhB0vUD1w>IXTj=%aWqoV`#CBsqs%d}2c>dIsfZs_in{nCg751U zC7@_FZQBduD@ygjD`*2W)$sUqS159~Xtf5Hh1;^4>(bmFhe&kDU|c(LN3cIr_$|#* ztfIUh<_SeJ%)5{5BLj%4NeJ;v_`%led6cWVMzHy6t>fDEGp5F69-^CJ?+TzeFDNB@YB1(Q6Mg z_?65j;8$H%B%W6qaOzM<(&40BsqOHRaOz5d>1Z%RpGpwXd_ut)H@om;Vs3GYwU0dY zx8+(^1THy)iv9_u_VQB3eu3)~yJo7jybQs7bO6W|!sV4UFl5x09%#>4h(iX$IlA=-@IW6TOG6+}{X~8L3Gc1Vf z6*~cDzgIQFzj2~a^}-g4NK*g7xm`%P9uUma#ZR()-8J#kt?9TL+scWFgE=C1nGVqj zgw;6CW@0jd)?sEY+>;?K$Sk?dAH+5MDWWDGd|JKjtqruDxuJ!z`L7BD;vHUYsbOQq zSs$RG#3gvm!3~>H3Z$yrp3ke0KsA3Xlh+>p~;Mk-W*7DC7S#xmckp>7=?yb0iA&|7#|!!qR`jZ;7CUc! zL$R}_i`oI5x8^zEWZy`k_|(zmU<9w>eKX6;a_Yb`dQQ4kKQSx_@QDxF%^^DMA{k*z z{g%1j##X8?lq7%H!{?~U*u#2Plw3NL-34P5jHOXlR$+rKLo2)anDiH7j+Pq4DBHpF zZz;W7nhqTXL)X)Bx6oGa+v08~8utK#hJlI(m%-}H15-hu2Ve*%FoLML>l6+I&Oo4} z^4$#=Gf8SzcT+HkGePc!R_d|ica~WJ3mX^RtTeI5q21P1p<%E~_IHRBq2{qK% z?jQ|T(dd;lG>Xd96+%z~x=v*>K8C>LyxfVq_ZrD5D49a>18#G^%5!S@XV>mS0HIHK zT6ECg9n>#tE&cbl!)te3%^JLDmsgYcS~W=Tzr8sh!yob<8sV78y~ICknqsF-5EADH zu=u&1%-s86529WZ4*uFUqAn{DC*M5HQL%S%D@nZNR1I}BWsQc*mUr6%9pk?n_snSo zD2_&#XP8!A->9$?;+3e!TqG0mFANS}B%>uHSki^nI$Rtqr{Kx#e%(YO<`oifoL~Ps zo6%!TVhW^6VE6YiSK=k(={JNLuH3TH7sJ5(*OB{GjYvqVp?>CDW<|9IT5Txuz@l{;;2Qe;YQ_s@;RL7P=jA9ZNxqvcvU;WLMEU8Y2oTb#-u_ z1Z$nZ9mie7MOW(2j`nzpRJq2vk`=owhg}K5I7>$}8dy zON0+2O;oL$pAx1xZDsgx&n#8NIttfg)$X@5ntSjVF+qRRQiM2zot(i%l?_DflIY4# zrfnWqW)ro(#Ma)pKLM=sHN_{wm>6%h+!ofqTYXGW_FsO*hIf|h<`br$%cW69jS!?FFUo2Q<5TVP zFFw!p<_|qMZTHbCpLhqel$a#iFkY3t7Ya|qa_%dd^NI>(<+X|aW`qjUfHPV-ENXUA zhP~yeh7}s=gft3;2(V#$M5c80h>@zUIUN5Lt%#D*eYNhlPqUu2`DA@Zz?lq*`{|Vm z6uIeCkN67fqGs4*Dman6{bHYlJFCK?MbTi_rmWWm-NTQ7kz88T#)MSw@OGN5jGunav+8Ygu08&x@gSbCY3 z%o?+vH|~)--KpB5R-aUnx7}lCe~^#Q5__C#d_VGjCepUF6p92K8CH~z`x3qo*(6&{ zf6{jFa(_BN_U|!Arv^%?-8zB|tpfg#XnY_3@;jU4NgKCH6ri(AhHkd`d+W3?09IW= zLXE)7?3kbe@G>%5-Hj^9N7YtMGbnAa`W!1pIhR`jU&doBbq2%VyuZ?DdnaXkvGEfv zA`s=Pk)F_ykCK6gxSsud@bF*s@QYLPi{bs?K-)OPxOCXQB)lm4 zKf(`iQTqlz06HF z6VQe)pNZqB2ab!uMn!PSx%!asHA;2vme&a9+`6Ydc7o3Gg|a!#1I+8r-9Nj5&h@&6 z?)r>b=y(p>_?b0-jbN1mdb7hrAq|D{ew`D zlonTD-~6qxmQ{$`ujQHE*VpucklG!)ylvd#s0&s^&N4uM(rkiZdVlwAw^I`m#*7cv%+F0mKoJVrMsj7@mGbkVH)kEptPcVq+`gbSHn`5;OMJ- zlo_JU9ZBKQ^0#+cmRiQ?=9ihRD$zSFOJnX%aS_a$)EUgMKe%hs?La8!TZ=e+KGZm` z|Nb;>+ncx-gb9O~_)kAXh$B2ER(DWKDu@Q5l;{;Wp%9D(D1_X|@mqET^$*zz_CXL` zh^?&5{?WxjS7$VMfM8R^mRHr#)FuX1T}83vJm}TKT+3x~Am*&s2a2^Lm%E@PJQTO+ z6Np;kp7CjEK&x?8up*UKdeJ^MNAt$k` z?y~&;R0K`Ny-5VDf`AGk0rD|%bBh&fI|9v?^@dMqD%k}gdqPZ!J$1iR?Vt zR6e+ADCphHX};Pav@w1`z1>haJbg5|Jrg5-cp}$-&$igAbO!=7MGcOl+pM<3`U{G? zudL%z^6tf^{ec%ZWaK8RGyl%=F>6N=8Tm>TI-v08$lOt+fD*y^aEX*q_5Yke3H8nz zHwlT$E@%7X@O)y~%f3amSr~?)h&3EpZPn?WCr3+S1m_Vag^Hm& zT8Y?xRJ9fQ+rB5pXe5l1U-H325>mEjqX?vA;+@@iQZy+kLEjJ5b;V-2pzjmjJDNpP z-cDF7m*f-~Qe+qgVmc$Hp7rXO)p|*@Y}j6I%whvbL*l&caUxVzMO6ikj*kH$#l&*8 zplv(iFwkBK4##S}GSR}eB_$J=&=o;TZA6Pu8wF$-jF3?UJMVQb{3E(j-XP2<)Caby}KN0uG} z$A~=ox@&w!Q^B=L`0=Op$EbnG@+~*{Y^%4xKX^93oxlRe*{9u)HQtmqw;xw`yM~Rf+G|m>XHPXa!p?Sk6V74O7GxYhmvrTQLPH@J5w>x z=7+czwyfPHxxUM~y35J>gZw`~{6Q)iIBp(AxkZ!i@?X60E_yz|x8D5VVPJf6#X(qc z2u_9Ti-ucT@eqM);yu1OMXDo`f~LWexaA+k?n84#HBQzbng*m41~l9EIS=HRO5I+p zW?UA_md`K(#rU%aNELup9=k83PyljKS%@ng zA7jyXF0v@8;5qtJi%rIZW~arMbmlcWcB-gKv0EJ%{za}}*6Mp58KS$5Ye~$=6?+Dq zyi1u96nkQkY2)&sRR_E6O$GINl7*QiL~$yaS*aR4U|tc=A4LeGg|2|?@86tmu}9u0 zokk-i;;Q08*vF8J@118f4mEPc?m(K@XV2f8u`8$?+sv-hMYUwIW<-in-{53t-%`4g zCfbS2kFz&#aw#H5$r4-t75p2xq4m-aZ8>LoM+v#DX2qnhPo2<~LyX4hQ$KWO< zi{i~%qZBDda)ya!<_e(QIA(TA=Po4sq7vQhH+lMlxjsi{9Zmbdl<`g7zQAevb)J%g zCEIA?3i3p+*mKaCUku_=sj)(73!W3HxRDzkx%Yj%>e|;HF!_f##K&S>{3O3-QSo|B zyvo%)LguExQ5G6^`nE4Y&1yi?g;{a9CE{u%^^i+^_|%;wo^8_5kSuZmqr2QDEPBAXyKzltp?0Z~Pr2~^EO!IwEm1?#W)3UWmCFa1R#0U@g= zGw_-!5H8=&!`&tCiJ9l_d;uRhjIfWLIQ#qDbW0v>gyRekyTltL@+g^_C6113tiJ3k zqzNEB+QmX+N@y<6wr-1PLZw*FEUv*YlBJAbAug1!w@7Zw^r*6VO^mZSWkymebd-c+ zn5l*Xn$))M#YlB!uB9T@nVbg1i3uNlW!F!C7jlcx+FZrg_MS;VYQ)zj#LgQNi4?$? z#tkABNR5iao&3fx!Yy#FhV%d7{{vhXPp{CCIIfh(L&dxLck?s#Yk22jbRFUlpIC7( z^0ys)g~z*h{Pa71>UFPw-CJUcWHP~fdb<9`YLr3&CDZpB4ed__t{iS+KYMp4POO&4$hzFvc(EYr$OJ#1#PtrLjQA z=89~^ZJp6EtWRUN#@4dto5T?4lsn18070qhnv@)*WaliWDfc2`H(8IyD3cvX&L%cULoB@>o}=Sq z#0lGN%P{l|-N1Q1Cu^h*6?NTERTW*^6}uW}H!ZDiSu{&dPAe8oO-GO7Sb4{G(~^cn z+qTq;+CEnZh*#Qe$NBk&#j3_T`@GF^L5{iDdYIxR4GGP#TCEWr>!UU6qa#4LxVSKp zOV{B;z?PkNK-BQg$F?(rx48$1)A=37@*sQiz9=}B%qbd#hvxj5Srn)mY`-~0gI zdVYsW9;K2;QSEU3b4YuiUwk(5y`T1>m)ws({QP75$G1LoI3b5P#Q%x-mZx9F4R?Y| zr<@)gqt%+=D}1h5`I~tE3KsG>a2v;pEHCFybxH4Qyi_#e$SPzqNzMt}|B{!RwtSu6z6Oxp@? zSn6kY2(>e4ZK$BV%)Fs;Z*CrT#8z=x2y5unK(bYU5FmDrpS|Sgsl>8vD|esc>S<0E zA3}4Y@(&Spf#&B(+@T$w=D)sphLrBZaL%^BU1+ES9V6C=(ta9)tNF&kmAYsce_@`gE>jCIZ?0sT3l?{9UhXbswEDB^svPk?~+LWrkE|XwxY% zltG8mc{GYGWTI8Dm;9P>KD2ZviA)_eqEfc8vlSU}qdO$*Tl@fyQ{Q_O8Pjv4(k$Z26m=;%?@UR!eH-+NUnRP)DqzVWL9lAoxT9_5ccrO)&yg>($uqZe6XmpD_*!@Ez z41;aUdo-nK(vo#RVg?!PKGq3Rt;>DKdSE3PGTP=#$?i?5LVPw$sDdER!v^OUOh_#} zXbWy-BD;b#&swNq-k0Zq6}nmf)~_%^Q3X`!`G5c4Ipvj$1$XL-*JS1W?LVLm6+ZX8 zw|)!%@G$az^+Mml?X=*tH1nAxZU)C%9H*MdDnvQ@9lwjkxy`v1Bc%9Xgsr$WD?Zl& zgNbqK8exIXqkkq-|Tto-( z0kV11Pc$wRQU=`s#U9WF8?QMUaYY(L8VDJNGlU3Ly%Wc34SoSqA-*yJh8B{>`Zxc} zHlM2z=g{*X{_maexWX-gm&JGUsxI;DY*vr_Q6C2wzkfNWP#)>{S|s;d9QmSi+NsQ?p_*)fs~Cx zIIYshb*ZBeBXpjoK#Lv9T#+&gF9b1Lk7P87x~@qn5o4Uzw0YLt;k_qoCS@aRj14g% zjATipTc|<^6)7d!t~1ezvo(6kipEjg;;EaOuItKs*_u7Y@x6`O5QhQhjhfMS19elQ zs%$SV!9h+YlBgFAP18^}HBD19^p=m?UT*2VkzB+Tj(y)nd~k$1P*pXHrlDEZq?j2xvv3hFbcLD`LLhAtDMeC> zwA+?`JrGl*Su7BRx~f^Nmn_!{zTum{`KxkL+HK1Z{ooJ$X@%pu=6c`rKOF9*hd9Kq zVEiY~d@4RXL~as`>cf0EopJMWMbL+F%R8tXvGx&hk=hUZ(b$n=OOR_U-Rp4rGMwvh z`WUz5BmChPHmsc@)rv)Zhn(*au5YN^yZMgcd3;_Y;pM;+R3vDgfurYnRkP)f-M?g$ zH=OD7EHAe_e0&XEK1oLTWBLyMpuF#J!VYnWS^QhiJ;Ha~{_ynuxBl{@xRXa%Rd=Y} z4Jv+|Lk`a=H+1 zE`{KfMGbf*N2RU=24x$Sds&DIet;^PsQ95q-_WV0Kwj9&GvIHb@;KgaEP*Ep)tZ=3 zsN9nv_sM>PG?%R6J-+MmMTAJq4O#Bf`CsG@Ef4pdPoOvmD?Z8N+LG(XN8GGyZh7G- zgeBGL2I3c`!_2xjt-H)R+VV)MP+P2ONz9V7(JeHhxhJOqO}5INy4l&S(5Eg9$CPjw zy+%c>@Gmp#h@BVc)q*@PL2f8r`z1jzA}aTsLoht2Q431JInS99J0ZhZlh0$)8JXt= zY#XyykX#DJR`lK#u6IT7U83RvCk!`nJJ~yM^P=|^TL-TGe2g)p;`V<(2?!W1E9SI~ zo$O&RH&SR7lSzo^zV*hWI&eF?lj-*})rUfs(Z)f_IT-hssnbNqALveOFeXAoWp|vi z+gI#R$QLf#n4MW}Xg2YVI7fE5>}N3H!MJny-Fe9D7^Kq)*O}c(@sTY_Afd*@6-6yW zA#vbJ@nI;Pp5p;_dxOChVSzFxin5L2kxVg(b)DW7cox=^|JcYIThG6-rYIGRXua+FEC=wy3sNAk^J)v_zcS4dU@aC!-|h z?AvL)l_HM)x1>DxXdk76$^|rc$el0$O83lP`ax=L)HM%nzJr&o{w)q_(L)^KS1F$P zNgg___%x?H>@rT2JFezQgj*;9Pb)Wm_rIdU26Th=8zVd9&gK?k79Aoj>KqzVL0bvp z6dkrEIP>0w7-=w4MXpVh;Ori)1CX{>aQ0a?R$`fELNzikd$`fz?ke_ zDjC%l9Rvxhg3T)3mpK(NUqr=2EMDMJgmrjG36%l7FYhTJTaem5YlJ$M_hBUd%7^{~UY8u7 zBFbBUr+|eBnS{u-ul!Pc1;aU#JH(68PI83cY#x&bh`r5gTxFu7P#gO)DpZh%uFy@i zTrWME+d`5n)@Ow>C7NwMp$UxRX78l|=c^)eE^~`fh?|PoQ`I_(vmn9zLNt|Y!zIM! zGF>WjAQkXUAy-6lzcC6%wE*>?4kaLAX?AJ?q)bj*OTQGJzJy>x&YY3sul(J5@xy=4 z!vc6RE7wEd74bd1E)Bf9c|AXS7($CE zKT@2QnsJEaCgUbcW+OO+Dv)9#rbIt<2v32`ca-SYL1jL+gGln3gpT+lVu5Z z&mFBTN4kXSejY$(>4}l%q59zG+dF?_?qJW>WOw|=eKCuaM4H6(z6)TvpPcq5XYAzwc<(0yie@9D3_~<)ix7xIEVR{ZeGqCyh_34o_dVV_ZeG8^V~;#W*Y$LLN2r2rFJ@B6)C;qbxxCx}!eUX=4?XG3tV@>5hC0}N z;%mR|>wf?Deed`F8R>az?RZ@+{Nszn|8%&k9^w%HoZ?%bdo6>z0V&W|7qoH?so^G% zvj|U7`A2a+;p7>f2e`^Y=&yL7pJ^hp338e1nyL48QJZ zL=m^3ayN+n2FpAk@-hZ(!8-ygoSYC?kmOSkJ*PT8gS@4QJuCMSLN&0eA0hikNctQ{ zDBs?#*=#O|-Ii~C_}S_6{XZ@q=8qg5$d8Bkb102o+h6spTe_6$^xl3Z;I{HQsoZU|qw>O6WS}^)0V_u>;pYw}r(Lv@a>K8a7cl z?-goc@WS0zS$H_9;Buo}I1@V*h%G^2BXG;ZqbH7L4bMNPBrlwtC`XmhW_Y%T4|mqu zN>;i-*`OQ)H`kVC*3kP?JS zXuR-upOYUWaGk6zNg~emgwWy`2zg1=n#6}l+~M2qK8Ch;8S1kGIp^a)4#J90;`pvF z=JlsXT(4K$bi(P4U;D5B{(5}_Umufjkb5LY!v?3)d71bBspg%xcsAeVoO@F2NHG-) z0;cW=9UIr@V1gY+;z|l&_9J&SDIn9rarc|Nmx__;J>?2mLd?ZtT)69O;XXk=WmY_w z{hg6neO>l8i4(Enc;0PmEOe{R2ooa`)6L#<6e3JE6DAapsS{&HG8pL!Tp=Dz_6lP; zdQ>tnb#a&@#N1|McFZ5pt?V$UdexLw$3lEY_KxwcGiBF8Guy{;C2K8-R;=! z&+|n682xJ{JG01;(PE`gEM~_^OUExNr3=)7%l7k`MT==4td~<%r@<=Dmv=5Z>}+4O z;IPG7JaL+=4^(_X$U8`L%MB^s=q*$fZ&;lT1=+g>WKy;44xEZ0Ma_vUxg9DVf`hQ)5Qq5H zh>IWPp&)!#75G9T50^&AfU+WT%E_<&Y~0#9;;S{}1_{^f<~4LCKu80Ki8n=CG?woC zat|bXkjK+%yk|KHE4$py#cf*g=B<&3!$;9N9PJ&%uc5d2yL) z?6#dtH3chn%e8;?D~Vh5;z$01Q|>6J^Q?d)=ed9J(=1)b3#-rOuz>p&i1z1r74TGU zd9}bRH1UX2jrO&F`=Tz8J7n;7+4 zXfhdbja^>DB{0~t-mTHxm}O6>aiO;PSZqOxU|WmFpI?A0wj@$2k~zcbD}NWx!}*{4 z(=KxayfP~f2hXd!ckxQy@bd>D(IF1;@f`{N45YVs{I#Ec$2)%Njcy~K#U1A5(v}UR+EVoy)Q+3!3ybWRu|)% zG3RUqi&E%MQE|adYqy+vz+N$rOX5+OF!l#9QY|1Q#h2yq-1cJ*&Xg-(Pb>KHrlWHt zSJDQvCHkJL=eXn>-5sYj>CDP8&tB`wx^QkI`q5%;`7zp^x?<^Z^)pTU!r9JQ%0i7& z^dMez+VNb3eIvYZv<Wbx}K^4673`5W6azl=ps;S61GV}w-C&#Q-D;Sia@9DdauJ4V; zF(}Qlrmg}xXU@*f$)hN zg=W!^Q{wXCk~l<`%fw>Y;JoLnzxHeYwIBSxKlR`FEN>i0H&>o^llYOto%Ilh_&*rm z`rM=7Z-HMC$OH+9TeEOCsof(8j{r5vpON(ia)id;0C^cf?f?NV8xk9wj|hPvOQ5E5 zft)Lx6RMn1xd&{2%j5EU?hckt{qei*FO^hmq#}S^$IH=Y-s1D${+#>!c<#_>CgJch zeEuVRexKm)JtOZVc%{|^uE+aJR{97MpmL8Q?wHJTxa_&^Ud>{C4y!Z%M7%KkURr@1 z@m=i&q^G&)pXU!1z<$@vCtldpS?oe|B#gn;9 z(ER3``qpP#=tStf5K%sK38%HPu3)`@g#%aF1lTQwzJa!bW(A8Nob~YH0C%&H2NN(1 z3O>TkBb#I2-9kSW5;F_|x(FdDPaFx42>4_rk7Xr<3NFu;7h6l`Ndb*izZY+gIPv96q6I^a>U+zbE{SEoTps-Tmr=HJ$ zo6Hs=<5}bU9b9%ef15$q4YFU5W3rC9G@x2+K5|4g8RlOzxp;po$%+{oL3=c{q}cB-bkz#p z-d5UW9l!Gv9jO#d3*6#(Fh^UKjs`|65x<{V$T+jmm|Inh1?Q|gIKY@hU`#HI-6u>o zBBC-QM$GgMv+DDFiSJ70LfnjGp|fPil{ORQiYNp2tPaL~nhM*cbLIi<$-KBe|HVk1 zn4>qx*N$u02Z$5Qgd6OU6~-F<%*jlA;>K;3<5sd|s;LyI5~>bKmem@4%1!YgyX}ri{i`Q?vQWvpOq4Ub9GpX( zXFl*p5e7P#&|v)8&evsnAJy44GiBz|{(vo+wlP^n)>-G#)o~@I8&r1VaXLftzYtHX&Il;u&S)EkCBT|hdAe2K;j zBwwJ~mm*C<+`!0|5tqvGD}~E)ZiNwbGm8e^-h>@FAt4uQG>n#k70PqLhU?HFp+UWE16riQEK2%h zqQ6j;dvRw1G|i6XAUFs z5Qq49%~rWK#~e{4IL~6Sz&U8U7RiYwG{{0|eOm-%$}sek06>A1?cU-_;a;3Gm#)!n z5u-5VvIbYp6Uo3t;J%0}_Hz}}QYq<-MrZ^Im3^A!w45wUqAXXI^m&&u81p0fCGAIf zU@>hrq>A@4*@^1R{&8-(@lxwWqlfB5x)gcvZ<$$$?(zY%CGVBf=A0`cRKZDUQm}r6 ziCSSf6t_p&P^9SecDaSQ1;|L+aO|u*rzRTRS(>;aghYj>`<@&V4q>@oA|l+ocb{(P@XpgL8tPEdw>`o8Vh3iQ{o?$BA$FvA%6hrx z#;xmIoY$P6T_8>gAs`}LUTlcvvxBf~YC=`nC6qER-n-9oz2er*o19-{Jsx7#_iK%PQy)>JW0jNP`_dwgpikHIl|@ZEZlX_Q=Dr^+99$*>K>sZyY*+? z;jKf0fA}K*ki>zham*GnukuN{?g71aS3(sD{ zS)Xa6@WxyGOJ8&XDd%KH2d;;%yk-tbqAaMG+Q{KFC@Xj-- z2=a0o=?QX4rbDG8I}cis^@8Z1L)|_8MEeYv-7|b>^94g=>9 zA9wNZy!a%@Ev{7$v2c&E2v1V+B)C(W(s3MRLEr|FhfixBUwP$?x8UZ|@sSNY-75E5 zC5f0NpTLE}vn}NN$^wII-Z+Nk%C7t8Ua-`c5Ae*r%yXB(N~l&s`+T-JsZ&l@LZ6iP zzNl#Bptin^lnu0bHo)0sX5ru@2wepi8|XV_Da!SgFbtV47dn}Ms|4p^(?eVcmkRkp zxm>{Mu~4fLFO|>;O=FJ3(kjOlEEjO2hSLVLv$e(b6UU{(GcPI^Tg!hm9v(k+pMO+= zN7*EJu~Sq%x0bx_J@@1Yt)EBa9w~2#dXK<8s`@$p%l2uKd!8d%5%P70_yPXl`W=VC z`Z2y#Jsg5h&iJlh$LmiQTssO}caCc}Kj-Ve-Z$5ga6(q|2G?j}3ejQ%G9y*wY~7UO zznljo59HjDb884=t_ldsf>}nI#Ecf8A4O~+`%CqlCr1FQsXMiL|D=*&-!j6DOZ1np z5Gknu8I>B-K9!%%gbrh(LD@Mxz`WyQj^HQ>j?zK9GXmYc-$a|3K_DjT!)*V@1o9-d z7#I1IX{zj{RdyB{>^}3}N0$d$UvwlOl;b@!Mwum2*x7&Vt5VAE=1P`X21Z^g)gn6! zjVq}bnX^unNvI<8&pPho+$cPoWyUB_m|LCL&tj`#UOEG>6n|G8N{6Qu5<{^C(Of>do9t6Y zGKV5oG?_eX$~!x;_ffr)@sgKLfr*lR~x>Z3W+I~3u{Kb{6od22PCzmV8 z6>)_NoGT$JvZSXtT@CWekG#&+q?7`nLT(kQT5se!pb;TxQfw;z=UVUfxeo@4`oye|@ zP}hjFLb9eJ)N++|o5s$H0o5ABle>Gk{=TgWLxX6r=ZteE2211fB$cAHi6I=$oR|V8 z8VN^eRYQLXv7P8rnzc|UN)bJ7ibzlGKIU?Ht^}Ju<-V}QYZF%tofX_^cF*+`3yCR{ zhX}{N@wd3kzw*D3xj`VS@QRbn$=ToGohP5mFC0eeKfieHAMm<$&6`5v&60S9Q`UGY zj=u0qB=$^hSHVL+fV)KdXu_a+Wx|S>Q0;8YrZP7WXL_4{1KJ|ep+hXs!36z)Fxc}t z2KyULcAdF0{z=6)tOCEp8NzI`4iU^6#0V@_Br@8C8lehM$%U37Md2(+PKD{2ChN6H zEFuYVwCjZ$jTzj=?0GbyDH%Y$2tB|f>g~eG)>SUz?0Bhli{QfygXhR3IQgCbh9KzW zpZl}e(%@B1VyO)eU%s37u3y7D52N!Chxj;*$N+95unv{S4G@B-(VDh3yTPii2~{Z8 z0s{ak4TW})ZCxQS#2ro|r3~KVrbYrmQ<{qSDJi+Ex1AfULCX4Wuh3s?6m=(vn3j@r z@r2B%71KI*|D)#eALnKQh?iKoUHzIl{X+Ja{pkLC?SVq4rL`-xOA|4Sxs}OEg{xr9 ziSPN6%nCOVCd=B=Nudtt9xQR(w&s275_9C-(Mdx*n+lAP)Ko<-A;ihyIx0`>hs<%h|R zMzshryr-^fqf?}4pU;J2S7SCEn$5x^XQNy6UC+=B480L!D>cD}mtf;xlypZ&D%GrB#={ND71|n6HQ&SS}wVNexL2IMI3nNh{;4J&7#3Od;j2!rg87y zeR9r)Ua`bGN7who{x^|gB;|+~!TDg;d+2n2`=RIVi}$#3;~IBv-!k&W5OI|dd_d~m z)!>7NtXy824Pf2Wq~7K$!w}K6(o_}oqTy@4@$0|pPyNa7`7X^oT2X!D!0{bNUh+88xWWU0*D9@1|k&I(a#y`H|degwY z@;rL|4L&UnW_R^;>7!CHU}H-5pjjlllXuaU+frOI?{C2^U{wi2w2f7jExmOm+`p%s zwN|QV*0At!Z4FK7JP+m8eY}R>ebar#vs>kZgU|_VD|qUJxBZg~_tPw-Bk4dS6NrY? z5hXHE=@a<6CFT3%)qP&pe3);$cpo>L3vzxrgRc0K=Rd*MAOEAnAUedyMSR=E!@THT z!P>tP?;huddlca&wH)I(`kaS&>yY6x!$l8g*~Ai?PSG0LBqW973T`#fW;k!nGTv7Z zz3}`-x$NNBz;fil=o3drLJ-9x5TH+G&YK14l~rvbsbzw*O~yM|Hr7YNtT)xIAhp8a zGRG&vy-VfAt+0vUBHUUFx0XEAxZ7I#LTblF1U7chII2r+trbox z<>p#h0@Yf0@mzW4ML~O|@xt{+sKolU+SY_&n;PzCrHL{@X;V>CKfQsQOa1H@oO>^D zpBV1rIiuGNj!Uk|ITagfIU>o5-v2EB)e9Z}!OfpP4BU_1I0!2~N#p1m*G|`54;43Z zW)Z3tp*bZ>Ag94*I@!?MlYpXh{Tt%HSb>nq8bKpjds6D{@3XR3*B6;6!K3wusyaSTDl>e%3k7PuJh2DM!-#N|FUQIF&8S#g%qOu zKm}Lc+X;pi*SV$1XvuNKg2T--12Q#&h`6E=(7AQ!gV_X?eSL)%3y`tXMD+o>g1gD!Fzy~rq zr3J`2`Jx8IV%#*sW8hX_pN%+ly3+7=R0i4@Iky za1t!>uMyF~3VCjys$%c!?RYtvCA{Ry`5w=ME98xlJRv(eNoGQ3?#LeFd(C`kkz&oG z`xi&vPmQ4hZG=sNORP>AN}@{2sNY67UO{sW29M?*3C_B!*%nI0xE&AF)`9LDD`xuZ zP~Rvbt{&B`6)1CC?k8m?B}1XN%vrXxu{qvATmY90z5mcx{%iWo4}XXEoP-6p4tM`U z9O7SWoc$;_mkT~cGjDdnYY=WZ;fQNr_!~_)FhJj0!5Hh#r&>aNg4CyW&&`)e?hrDf zJt`Tx3)FjXl_lZB5z;Ks_7Zf14mNj@u!QOaw8d#h9=1q|()wnCx z3Z2A99?QbOZkD@eaUb0Hw*aXS=$bS>hLT*QWImJs88as8WqE0=%yFBkpY zqe1x`IpLA^AM>QP{KE1xc>iJa{$G!~Z|7xo;;A6KAq>0<$HNXzIQjf9B4;$VMqwDA z<5^GwLM)uh2E?Pu*}1N2bVx|DRlgLEIZZ9-MX~v4jOsF6LL3mE(IFY+WGrggq@V~W z&EiaDiAZDO!`v1@&^WQn6E(u79m76|Oa)kgRAyNsBjqB^EY3!u#3<+pC<}Yvc!u~5 zi2~ zU0DtJ2Wgzsdn?{KymL75cpn%v+CDRC{uHljHZi)h@N}xA7>iAePW06j6K&TP z0*fOhCB^~g9E)bbas$8CJZ2yi|q?k=4;)HhF8F?cmoH**b;_Tji z>N>Dmtymu&(cisGjFGCUa3XYFN8k1w9j{rgmc%}Cak*io%6h#-bE4~P+@&ENCKzw?hfhF2{J|A`Xc-oalz++h##Ngdztj~>R~UUO}6i{t9$IR6?}@+d2J zliHo4`IO47fi=o0nPydSl(LEN76G0(6&k0!|DJH~LizALSS^&(wIH3cTpM=(yi+!< zl7r>%)mfvIDuk%4*3czI2B<1q8YQRHrm@B}*2>a5&LV7zpknE58LScRb;{s{1^*rq3p$eD;JGBp%NX2i z2vU>Xt3d-AZt}&me@f{QanI#{fPQEv#=5h#Zq-F zXDQHUp>q0)Wq{K)T(96~Uy%PF%9bRGqanyK>LIul)E)oXdsbXre3)lFOLuD30g=PB_Ii<;)S@TG*7%f0@5n4oY z?$FedV}^Oh#LTBt=81zVMxiqEBGox9Vs39yR_}SjYra&fVOO-?)vg8iQBxB;cTZs_ z>X_GUuh#MPffR-A1R>+@S|iN9y~1pNMzP4G<;C>swi#DntXGacGrI~cLV)>s=0Vd~_AOB+2i9!G{E>9B zH?Z~;8Rg(ho{b-Sx+$ZlcrN3-9Cr^wW!5n}q{QCIpSo|RRwL`I7Lv)UT__Zb;+u{$ zA%vvDl1kR?IgO%{;1QXMX}c3q3S(%&c;{(Q+Q;76hfE2u={T0|ph??e=u&x!Vf0{D zYRsMmJ4BZeE;G`WLz}RoB1NQ9VHn)%HdMDrFaA893n*B8sEgo-QV1NT!V(E|2tWDH;S<z$_l@`J!l<8>B+k@Mu`uvm|c8=Ry@2P`urfCmWFjc)Lf7L-BC@TYi&B zS&&}*$e;H$H>$+TX?T_XQ+`5T&(9u4@&CCv`}5okFXPoN@o6se1|N7xGRLgn`ekT` zIHNM40fGak=rAAzJ2yF+omjdo0-xF_S?bN=C2z??iwnWViVQIH_B;=ZA}mNYXGnP` zwoN9gkwV+DLX=0`!k)cxgQl&Gw}QIYv@0%BF#3}ib|j_w6}V%w>FUqQ^L$`ZiOTr@ zQ6ZhdH>fNiC&a4>IwaZnAMHI-EQyCyy3EUS+<_*u-LXmaNRF#4>#5+JMEfpEt=uIoE-^69+$FmexZh>wp*@Wc4rlY;!+zx$Ja?Xy1fGrn|) ziIk#ssi({k2NY%JTTZT*ChE@??L?jO_B{@a%Vu`Bq4d47tf8cw+>rebK&^sBvpu#^gkp7#)UG@;4@bOhY_Yk@AgoScr z+fX&9+`4m%z{3#k5acFRxQ)m|2sa4n1h4gzOP=atrj4)_VNj**C^Th(N?9&o6@=!# zqP^m46N>qqxp69-pJgt4(6!Mi;}(WK6TK%5o)K&+uFa+Y5WvWIy}XZyo%c0Mp(V^y1vO( z!cc=(STCTd1=lNW4`+k2xm1=5$L$lFCq3T_ol|Z%!sBbWxo|wYf%ktT6Qj_q9NGxm z`w&IhIH8Zi{T|k9#|J)=34?G{mA;|?)l%4$YqM2ha30?&FTWu?q)O;B4?iNr0baPT z94#HWHan5c;3l_r0b+(1T8L4(y@W@v3tfh8D_pCgZj_4%AG)83ts|+?aoVD>y|#j; zhHVe;c@FMx9qj;83CjwGY{Cs99D4{WVd0I!<6?1T_0Y$$`Bklc;!3%-z`@(7Tt?xQ zr~2zpoH1(OeoubxgT6kiAYt;gxF{Sx2y?1$OJ=ebPxY1?~z*K3|T4D?_9 zI0!2~3FFvte7fM8gHs#}S1s_(3E2no&{=Y`h$gjpE<~;shUrK}^JkUcSZnP@6lB}5iZ=#5~cPaeuWK*WBitdp& zGP^btnddKNiGoQ)Q3^M6YZH~cFSua;^EuI7=SNAF%wIbJGG*2zS$?+jLmfLricIB7 z>y6IeV-jTSAAl+0KV`LKm(3|uiT&=CY~9aNyv9ds4XZ#DfkQ61>mr62e^x9<=C&Lq zv$QMd7n=$z%8h~wUlM7q_?q`KukgG}Bk6t;XlEr-wk5MJ8dt8%(c-2Q$#$JJ&Wd_v zfR0_Glk#FdD6Y0VsZKH@6J&UM?^e;R)pN`pMUl!9WUekBrEMW~aPlfRdm8#*g1Vr) zwVqucqlzjZ_^Ak@xrkk&L&dQ7xE10TAZw^9D}Lr^Mb8vbq9My&@x~p`6{Uzs8hK$0 zYSt_`4aZ!EgRtTdhxq3imw$stW#EZW@j6Mo!FyhvGY_-+jL*i4G5OR%E|x&cr4eqN zLz)J0b+HC%?b_BBb%nMN3#mwaxit^K07JW*IE<|-uFx9d#_k=yF&c&}?EW&GqwVER z2-ml;T$(LG948fKg&>;H;XdRJS=>YxH|_iGY$_z1l~aer4#Hw5w#(&xC`5@I$^*KE zzHq)%1~(wp(g;L37F#MEpWekIeq?-iz$N0>s9RZKI`?)gT(N$LWxu4f0!?!+Z=`}; zJic>6j(+oRm+g=I1(YXHPIF>?`S+>U{}OLMjOhPkaq;*0RF`Q7rqphfw5w%w&G&U~cg$aZ53ZgH<=WGvO6|}p6 zv_YI28Oq!BFcq-MT*Ww>MaYp`GE+fPftT-mk%VIRDc>NTxz~Dh1;C-zFS?KL6w}f)8`yx}4jQUxNDEot3YH(!d%43fU zBt>X3=3}n>-F|LCUxL!P|GIo7E#a;#C*2;QR0^FT&qN6r)(ige6j}Lo7*?$_aGhraXfb%Zk_= z-D%M*Xqtu?BYodnE~GqOg)p-gDONE#lk(UoVOaxlLRO{gIzm-J$tGk~7zTzoP}g;_ zz^G|kdk={b=d=Ji4NH=8#`{3!1AT_N2}OTwq>!%diG}XccRkKKs=6Y_OiTkgXEK@1 zWm~LKjqu{vYl06{uEJFT=Ny~!mhHA>=v%})hS+g=c}YJUb8>u4UDad}`nD(biK+=4 zpPJy}@@z{8c3g+SY*4DIp>7sr%?!QS_oS5Q+K##iGulGi2vyB;wZu7Lv%Tc*b9Y&+ z7I^3A`+>{LEnYlzqXZYMurUmzA(NL85#^iyz_)djJ+*yDkpRsdj=jY;Hb{TvSt`Mxc->14#Ioho9TLGbzL}K2$yF<*BLQV zoFlhNf8BAZwzOETt@q*b5-vNtTDzRNzk!cz;6jDfQW&ywwkbJGFRWHV?vysdrD@ag z&bAddjwepx#wm0!6ze91qb1a0!VRCGO-h|1mgo1PxDN(VzTmcep$qWB2L9naKD74o z=wbmcY+b}PH(1n9koYxh((^R(B4iKgl*+%zcV7zMw0_57Kpx^>X#B2!{3O?w*SW<* ztX8k34o?xnZBrG?N679B(Hk`G_ER_cmr_a9$5aHzN$Fdma@NoB_#NTyrE*@uwWV_F zRJiQmB0_&@mLMm|dZliy1$PI|J2>lW+*8)f8();3tau zT?<*odMkoiY}~zorNWUj`pnjYzf>+-IP2hS<17W{q$m~)ggHbLR}5LXCBo@i2u^wa z4AzzK_z5ggE(PwLLthD-3wZyB;gz=?x_}Qnt6cVwo!}ZlqjGr$PL+BgGy%5T(kBBv zaRRp+=rX)-19$I(4rOlZz-7gYlCqMcBRRN-vKf@ig>X{A>u<@Mk_vcuZNr;?;cjR+ zUfm(-t6A|8+V~N+@fq~^Y5uDhKE(6GbNts2KYJMbzj`5uL-5HJ-}Y8s_4-quymOsb zhl-cq{=#qhL(S1`>Z3c>l@T}4w`l6gskQG@OHLic4$WIMwPYrMSyDGPxcEX`5^mA2uu3zESvZINTn>C3yEQTujyauXx;mJtY6|m zVTDdz8)IfcnI#$W?E7T3+?0gW+ry%5mCYrbpTorkQ~_?^boh`tI)S5W!tw~hN^RyA z#{JX1t8gw)&S<%VoF#Db85!i_G2pY&)RPU-LnH3MJM8SbNlntE_-8!Ma18 zd3viz^?ZfW6)qQi6#ntkTzz-3j;wGQ0~ee*%fmSs~BWXljvk2J5Hb=yOd% z>D3B*xsXQO{`nIf#SNwFlp+Wzwj-M3&JSG^qOqi8qIEB)p%gE+wyMy6ClV=Qls%u_ zQh?F&USvhx648qIzI*743GEauNGl0~J5t^Ds8$MV)N*nL7IsOa|O8A$E^Pl7k z7M{;`6;DX!7Q%_HKJRTNx)G$ROyH0Nsw1SSVRLTcnrewO$7p|!_V-}u5ML&_&I)~q zv*&u=BDuG5Ok;D0VK7>SRA~2{S?5#>B$auB1fx5|jfrSnFbkb=LR-Y5sM*zwlq|En zi#svKG#@rPl~UP0Xm8|}N!^@^u%gWWeN{MdcFk(`;E$~pWSr-@9q!%cj<#LVGB=Xl zoNFYqApzv5P;LgBTWKytvRMzd)<)Lwi!%Q(i!gohPyLCUxzNOWQ|1@kz;oGizWj9F zcNo!!IK;<(INX1#b(5yYp zkw-PtZX>CO*zT4u^R>LK2X~etsxL*Vc&R+WOCz#dh zY^1aguM`op!YIdWXKlI5JB(H=PQVvZLr(eiJDJayd=LZGTE$U?i_k~QLeAZxbAymzD=>D!JWMqZW@k{j%XG&+ilC{VngK}P16*?g~OG7SuAR* zDiEp)FAnbl-g}OY*BqT3oHz;?NeAC z{aQlvT55Mfz+;!}ioh*|Yly5Ew7Ry^-3&|@lJP*%3Z+QG$3wZPq$K@7Ycrnvw2uF5*8wO>22F;O)Gj!=#G_dY651k6h z3D2EFKPcCa1s~x3&tzV_6l5jTM-b1IVE~OvSPON4)mq37HpOXi(Lg8~@YA4NudGik zHbU21x;FL7x`ykbtZN~OA^$f6EFCP$eZAc((Lo0cPPlB9He2rd1uyTX(=ACZ$eiK0 zWB_ss4EcGGpJLPf9QW@%%~?F>kG$ew8FGk!e(_E3dObI8J;9=SId%0Ai*%dg#Y5EY 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

`>@Wq}<^#Uoc@#Xm10%icL z$~LxE+t&o}RQbM0wiYO%T5sCkxF$b!PP*12foXqJuGv)0KkotNYXNM)Z!Hw4`&#U_ zkhZRq&Z1CrO7Mmn`#-G;TO9xNey01TgQ7w39+KBm?`79f16*d9=<(4qvP7d3H%qFUk0rQ8kh<L2m_ z&;66zPW;o*{=-jw1?%$rUzJ3F~vmIKXZP`%BQCIiFG##7u>f*#;zXlAB?MrII3d1ph$D*O|OqxJP;l}4X>&)ygKJ~suILew7(WzPsdWe zJjwi?+JF6GTx%EOT3CP}zI<*CHPp3U{k&Q{>~)4yq!gXj?+s;abV7PPb9t#YuK6iB zHjNSL#D+&z24~hv5+HO!Xbo74qjGO8+&_a=tGxaQE*~p7&G}0SWpN_55yhfKWva|L zf;uMkg`%=>LZr-!C5u~Ht2&Aj#xzmp+4e)qdFjGyLMyDYxGxp3ks=wb*(x5Us$wX? zJSkP7IxB-L{Jy5@$LX9fukI2EsdAkamRayTlXQwMK?5gKWz0nH6xq&MN`}7X4~D6Q5BT(ME}?_$(7uEsOK25_g7L?~9d5nB~MPSb`i=NTtGC zKEty<0aNAKl_jtowTp;_$=y**&?C}Wh{zEi7@{L7UWW7ZikN7pTE$+bqbWa{f zBo4*$$ST>11F~*Vw}xS~D!S+(?MyR|$7sAk{MsN4vcU#`IB(Vc@n9Rsc7uk1_9HUH ziC$MH_C0L};mni+QiPZgzb5+*VnnPA)ZQ1PRme-8gErn|qa|fCEX)*;ivnBN++mgb z8Kfz5T(#hsH$LWDJtv7}0y`YQ=+w}_iB;xGS8 zg)06cFNMIDNal-B-op9Ueuu_OJJzr&R$IM+6!~Dv6FMR}P4~stuF-5%it(i-D9Yb+ zo+Ztb&hx)!h$GVZa;+mmJE>0*0y(G|#m?lud`m{xSb&6u9g|DkCb9aftI%m&q zxgWN6&GVL5*LLlRWo=a7o9(`+E9w@r^_#d*6vVosq~ppyB;)RW&-dj=KlnQ`yj5Dh zM1P!vyq}-Eon3C*ZTsnI-~WgC${cu)gLk033CDdWbZ>q5m0zpwfVcwwmBha|p$)zy zMn{Hh$`dY#0SN+4qj=x4YApMZhJi5`JAkZ&&e6C)j+wS`tX9G7A9Bwa_oNK#vo$gb zhtZ&om_7S`Bpnh>XVx9N!@y=`b9g_DbZtY^2C^ozAc=|4IGl{Ang_EJMI~`@$FaLn zcB749p%L0(79HX;ZRd$YqHP^{fUXVPxPg=+p%q-~AVRnH#6HtHvmQw?(rpajP{6m2 z%Gse7GY(y0@_J}GM`#^!$TVY7#wZ+1<@akacWKp8b5c_B^O8YJwQ^OlNNILe`;1Lb zRW46{J}Ejm1vTnm-9Tr@qV1+VgL)3h(Q!7PBEaIGr@a< zGjg8RecpSVE|kvnG^R8cC8#RFc~rB34n<*8b0({usHmwrl4lsCUaXXoDNl-7f>ae2 zE4Y&BIENSsCC1UTcGFT>PxOZ#5l6S`CX3aSm0=ulsm!}7G^>Ut1P+IRv-5_FJLkOm z%B#Ho`XjO?o_gvjR_l)a-gA9*gAYQ}w5BF83^-uDH5(uMo=iUsJlefZw_dU8I@aBa z;ET;(wm5=oAdBawmkE7&%0mtdNK=*ryCpFeX#!W+TJ|tdxXcM@TiBOhqPBXWazW) z1Ns6DloQOOajG)0> z!c}ULvV7sV7@(6J%LL^`!Zb2h%U5o?DgPXna8>LW5_X&%7hp|Ek*}2Y zj?i7e;j)A{9PBO)iXaL5q>P^sF3#Z2Q??(vxiOo76b;UZB3uo2zwpqMSf&ehtG@J( ze0>w(FTbXL7L|vF1bAg^V1- z6|wZwyXC)+O24UN2Ow)<^8(~Y!p)}yy^`bbdo3oGV#8TgWweYJwO`i&)pA^jOyi6O z%)X{V4H5L9crV6QRU3}FhSG(CnVc-@>NzfQc+>GV<@2jAoy_pTT#6V+`8k*OWWw!u|WgQ}>~3 z;d-Zb&%H%J#+~Jss*9|M#UGtWsjVutd&J_xFo%o@Py+y zIez4YS-#gfCYul|oYzGaDaXE^69cgvvERtR<9O~lvi{J?UV33)a552`{z~{~MipkO zgp;K6NePB+7*BY)Zrx z;HO^H$q-iO>g8$juBPkry^w|af`JpVc>Ut3Tj-W5i&7!4$J(Y<`aLYKRaMeh`qZ#U zM&^YfZVCKMKko_82h=NiQx zZo!J%_SxV1Kg$>Jn4jl`whKtKcL--sA!iTK6k)hT@)gn+i-N%vslXwj zv1s}3#>S$iGZ6*7M$-;`{5tOJ0shV%+u-aDFplWq0I4%W$!3ddEs>i00ZF5&MrcAW zuaWHq+Lj9OZjB~y8i^01W!8Ugz(v)(Oyx2@l<&xeKy1AIE)-gH__Wz!u5|O9Z>!hBP zA&FHU0^m!sD4YFLcBo$=8cbz_Fu@!4{r!-NHsHt5yEjaj}4QQ@N8? zm4X8ruR#vbV2SWLy-f-kOcEV(=i9$SAOGkNJLRRWAq{_#*nSm%?O)dOuFBg~_yXWX zx%VyKfsROXZw5o+&aPeR%X4FsrxL6Tw<*zxWXeW*7^h&JR_he+r+Y0eUbZP7)u;%0~Y?ew>&22l7jJ<#wjI zZMW@zUHeTx#+$|Qet|Da@J>}8kT`qOy|4Ich>YHX$Po9W zJfef*9IV>Lrt=WkZaQ4>#LhG3i0`q4bx{{^2-|hTdesq1_5FT05Q3)-4Z&*x2W+g^ z52?6GsabwFWj_cZc;Yyss;oC1!JBSGiKF+j*S(Y@7CE8=Lh4ju@ zd_F_7HrZkv_{I^(jN3uzESM{l0PX}7mY{Rx^B0AXM*xGlVBw=psgX%^>odk$K2tjl zQHY%UUXEktHLoY98_Y$~jeMps%Vg!IN4B%e_=7p8W?vqUk!g+_pW!y)LO!HiOO7P z;I2&;dl-7W_vny`$^2zjtrD7+v+b6)X}OU-F-9)?o~CUHp}}GHHci`Dzx9sboATWT zE2o&~`vWN_RP5S}V?r2d+J?R#Xgjldi_z8&P1{)fzzJ>Ju)996da%N&(jNw#v!bAG z)#AOaiGJmGeAl=A@DF|X4*>5g5tv)B;%967_N%9Gy9?eLp5fl+CD!e`*z(qIdW(GT zwL;feXifyiQMtS_W*}!FWye94>p|J?EO99X8Zgk>6%at?;-zH~TV5nm>);catu`uD z;7ekyR-osS^z5+2;SIAiu+t|Kl@Zt#D6W~~UlW*6$9xuv&r>^rrILeR01jh0mQX6b zw*^Y@6&fi$=roBs0y~9+B3+4%J9%<2UP2zHRw0w+z(PfLr^I?pB9=t0$2%;}hf?`p zRW)jrek;gkc0iny#(JbmeSAK4&S|eS#ZFNNkP40L>>TOf>P8tm!S^QUd9e}hZ12w=AZuz-?|rg4D3oh1_!HW8JzI=I+KRX z5Y6VQ?ST7&c!vjWu3_BU_z4%+GUCkC7rCKmEQFc-Ed90`RiV{Vxc5t@JNL zvl8UOR3)bPwqK~fbTV0lbFaz|6&lv!b- z_W#;P)5-UQVsliLEA+%BsD7_sSb!{xnG2XDwTQTaxKZatW4{=)_T`vDRn3s&d`es# z!$KW@Dm)EkEFn*M%37p)d97UCz?}=>?p{-bFB2<->bkV%EK%f-(#*NvQ7AYM-L-BJcQ zt&%`>v{DL|7frptROU^=O|=n5%A&C*u{AC7$|pNd(c{ePY{O8j3MS9hDkx6Nw1Xi=2B!-upZ9V>XR58H`r!f-)(+3?{n7k1j!O6sPve7>cKuiiyPNtip zg)W#BJnDjQ@|u>(JN`I{zsPlqn|)DrjzY`@8`WCj*v#SB*rEPyG4pAjXMq#wL?!~H zB!1+L2^Co^RP81H4FWZb;K>A5aAZp{-QY@J)>%&|b~Pu-d={0uV!%UHM-Z1MFY}39 zktM>B7ssOA|pUN*gK@Xr#JO%2;~9`f7Ee^L?G9zZYmiT^wmB)up*4;gSV; zL`yPeK%NS8_Zsw|=uIXclytBJMsgXa35gjRu|$VI2W^YN7n5ql#9l2gWc^unhFRVy zvbNZuOni)r0TEg&rx)6OwTx={snhS6pDX8!j&14pS&n_=as_;fB>5yqc=iykKY{1I zYk1~%2D)vZ?d|5r_@G?#RnGGPl&9tX*M5tRiiUf*^%;mKAFg1$F3HppA);e4lfF=t z6QoqQhaSznA^5(1)+u1lJ*TVI_^t7g_ASOjEDHA9$M+Op(YN6zLm8i=u~Qn_tvm#7SbYW+!wg z8^^Wzxs4Ic2P9qE7x^97Cf2_JQHv0kL|aApFaN4A0pG`mNWN&0dB#H z+jiUj*R)^vBfM>hygzh&aR|KIEB9YG|H@xD#-4G!A?JalBamo2M;lsHgq(!nZ7zx_ zGLAj_{eeuvdsBP38b@M`Y`Tv1s-bIJluR5)HfsYOhnR3qS#3HR*N~zRx{mF3!>WxW z&E{W>r*#c6MpmtI_soh_QdC?48xKRm9WtSDWS{9;PuE!D-8ob6Y#M_x<6y^`B;!Nm z?%lv<69_?(IM9Va*Emwn1P`ta3^%#J5s_63XZKq+cZ1m!j5aT<*N(@JBbrB6>(=%+ z;@MwCd{d4iTB(Zn&<1BiB?hJq`v|S4-w8exOIKB#7u4Ba3@4;srs!A!e5$ z#ZD@vc%*EBDltY}Szl$HKS$L-6`)if<_U(d_3CUt5@RIimbPgb$3(0EMA_R`a6&a3 zxWTN#K>{Zk31*ogA~bD7PMN;%Cp#0nosLXq98H#_YXjm1Ck_1`TL1w707*naR6X&Cx} zzCVC-Y&IL3wgo2y=W)(+=nrJgq#Wr7yANYO6558T^xT;EHE?SS^0TUa+ehETTkk!^#y^E@ zA95C6;JkY?Eie4MXZW^H?QN-_9gI;KM$6MhAQo$&2;A%;?rlk~J?M3<%$D-6zz?Y; zI9FwF*6S?IpE$OkNWfZq?BPEr38xtj0y6 zHZBHNw@6mjifJeFG1fMeK{%ApY-CR0u4)pse1}l1L1d;=(yT(EgIX*zmKa@qk6TP2 zOSsOLW79ctDf4uO>}ZK|UD|ki!F5H=`%tdq@_kqW zJq@L9+zGkNv*AqzxgUVTK{hDZC~TF#JclyrVV#KkGq=>a@W6|4G&T2Sjqb5Kh3vXjqvIo z9w+Dr0$5q*^hRdo zASd&2RlAR69&R}vqy=D6Q#kb=xnk9pOTlebl_+4_qbud=M%Zql>+CyyV?cAIC%U^3 zM2Xkd=d~8w`eQJ-3UW_CMUBgh7UHW#)}ZVfVTf>vvTotr3-`CeW>wN4V(JxFhuP+Y zQAtra2s{#acFh-DIN^U%F4^!duG~j}Td?A`eeSlcn3@Yh5JjACtO7wZsv}AwG;2cJ z67&X_9-+HWk@`;{!^hC^WpubC9tL8ciGu|zY9f3oy{Ls)a?7N4S=cx&`32_O`EpY# zr^(ZWOtn>OzHwspSO#)dVpy^iviSQ9t}ZM*ilxO8q+qi6m;=J|;4F*dE>;fJ(qajc zEEaLIdcuiC$r7-T6Cyy5-~XAVEaX^CtS0njR#H$|KoaF=SsIN_*KP6tx&$O_lGGzW z<5*N;628>q^Pes0bgtGs;X-EkrT*UWgilI65I1R)yfH|!0BlrFo-X0oBTsE5D<`T~ zPuh&w2(~bZRH;9!%y^ElP;+sma=O@lxE4+B z$hG#Uf=Tj1Cb0}qQ^j%VLsc?t0asZNELm=>j&HfBR;+HpireQZMQ;) zjK+w*{s>vGq1&1ye;d%WNBbUJMi|X%r`ivcppeE9@q+d}5$c9LTmO23^tAxD*;mx z5L1;<1JdxVCA>8nh~bI~LFz4$s|_l_#+N)A%jWz9$kkxDRPeD%VNq-%mSvftdSSP7 zaHs4DRTS|7achGw@?yP_%?fT(FQ_UBDpmz+^hvqbD`+2Bm4EKhRBRj=z^@VM(6Y;& z>_kM7d%x;?@}uATVeNRgPdxtgpX1TfU&|-|MLzSJ$kVyuc?MQ?VUxiWxrcN>=xsi5 zMa9DfRNX8#g4*jPBeAMlq*>W1B}=j=v){l|U?M*)f~8NeS{Eq8+gueq#1Zw`prp_i zC_s=^TL7GNSo7^=*DB4)(vLID9z)@|n4UY@N2Uy6c6 zbSNNXHW*@peN?BYq83XWdtI83Rg=xT&8p1Xz4eEZ1kyCjsv47=aaB*LKKI4SYXTn} z;+m2etZS_T+`1a1$ptnlzblGmP{x5WX`AIvg=G4&1TBD(l;=Ri?sc*;N-JPftCn>( zd6hfg_T75*2Y$#2&jD`+{>JT$bK7p)KVSQ|euNKn4|q=qe17A2yB8ilclKpp*Z0@# z_dELj267}cj@7DT)pm4Uz&RnOgrYc~@jjAE%p+^2@eS+MigD<`?WD(BM@OGNOUx22>Q^D(>Ej^*Rufl7`6PFc5t%Je*a@ zr&y&KvMKdoaDm5>B;m5)8=I4ZQ_jv@Vb44i(HC2a?bQaZ;-*dV;F|X_M;xVa}JSEta@#1VPxogvSwDRj#P`T1jaNH@T}Ks+OB1{+jDhwP1ej|x2IcmG)=?d za6ogS%Zd}n+4h|4n`^++t=BYd!+yVKI2^dS-kBB1c7q~}V+0R}!@&yBoGD-o!@y>{ zVRy49rNqVEb3$WEAALU}3f_BK8oUpD&#(TjU-1LK`v-n_Me}9q$JhJBAHE&kKgZkG z{SR;9ZFisH+3gFQ`!~_a1G@Gc@9xs@)X#gKU;H>JV^NuihBceuL6(|RG?kvglm>JU zx?2DULjfmBe2ySi9la4abF)%KwFpr;R$_=CP6;mv;b{v?ngX;HM5Yol3~O*fh}#mj z?}Xu1h%c99W0`|!u%d#YBpDS0JeF1C(`F0&8uSLMMo;C~hPq5HfWl@W%U|XQIapRo zTW0%`3SLM_IMQ_gBw-8`YHKW|H478c(5J#k6&?o^6(G% zt#A71ZHND#Y5&11U&4Cx#a#F=8k3R5ieVhuB- zRpF>m#+_#I`f0%@$BGu2mL#dXj@NnSX3q2DVzuiQjav3Rf*p1u$^Ej(Jms|UDAc0KB4O`{S!v%kV~ zkJi7Fr`E6VTV5S_`SDNkpS<*`Td?A`ea^M@npGpTX~e59wg@8Rlo8*uYFb?G$-^fY zul@nt{1aSy1<8-l{)#yE42MLDHX$I#b{8{0q0=Tb>0AsZSSPLm6qpX4Fs4I$LJh?wLiOO5{%a*&Hc%%wepOn}I&tDrhd0993hCtNBPoBpak zzBrYlpsY{$gC6hfk9Y3s<|OV+Yb+xNGo_(LqEYKbmjVkEpH7)iwjBF1k)0=%W|h+e z)F+fLW(q?VY5x=8<%p`NN$&Z0CiHg#{AB6rg5c~vcoqvzw*Wp0I5H(|IJSl;N++m8 z(c|Z)4$ZbU1%;t^>PX-g2^&(|>ROXA8B{ivXBi!=`= z0K;avrA>++AtSQDCaZFVlmnZucM1AykBS-An%{7#`ZQUX=@}52z5jH&B}*?uCFf9P z@Nw$&QlO3ML2I2Xqm4sau`24K_@F8F{D|#uP38trYv<9sfP4AO`(R*c94x9OuE-{4 zv-M~aG$zxGCK!6el}f*HkK_?H_fTz+(4iX9oTtFIBt^ZmB)i5b;$(IXMSVlcJXMs# zBovUL?06)Pi>Q8yIQdZQHc}aDqA3Q5T_+JYjo;!Li^TXc7mlW-s$pYuR2`eG?$K06 zicGSW;F7)0mEqJOnhd0HK;9z$0-RO8k|U}S$v5D}0&jGvw)VZ%GU?8*{4QSqkq>L; zgZIyQ4E(WwQP2G2zrs7lD?Z>F-a_V{-2Fx0&hR>t_p>5LHR}~j5h0DGa$`heE-Q`# z{)|IWn@9%03|(QKeuqtSpCS#Mw*&^RDXXTV-cNGM

kV4fl#66;@zE14)*q$+ip(}$ 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�qUd&&gO` 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
@OC>;{@PWV53 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
#1}45t`K=S}G*YFHGW11~BZ-5i&E0+_3P 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 z%0DAWlkMJXpgTXdp%>hTs}T<=DFh!ohoNInElz;~`U7!OS@DZ=zjKtYh9G*y&%YS^ zXzLYHuRyy(dWFahkd;v&wuP8T;W81yn5Vn5BxT^~M7+If3>+;Y7W`govPdVn&1ob7 zqDRz+@PS4W0PKJC4yik2+bN`&qxUhy6LXF}CVt!XKP&JdkT(0BWPA+zV;wrsr1n4v z$nob2;MVU0{trs})E}-dIx16Zah64 z+aU(?_&Sk$?93~Gua!URdkq@OgPQkJqE}hJCC*WRZ?T0iX~jL_B4*@BAvikYPM#UGiX?}?=^z?pxlcUH16@LdL-CW`=?Yip zJr(hKvd9q){980X4>LlG?@54u59F8l()tkDXpZ#aSbm6Ttydgm-=opyau*}W<8ga< z&Gzs<&Ow4%<5a*KUo8b-c$IN&7mazrQq4a^JGQnoXux$V&q zw)<~HZw5QiJ_B|=sQdR*EAeNA%-=zO{Kw(n|7T$5KVZW&#U@wfE{K=~c;a<}9M@$; z_Z+mB9DhX(r;l z`r$m4F0ks@w}zZE^0L6u(OTmJI~1j5Qb;mbYiPBi*M?qeAPog|+p*tPqz}))IYV25 z*M`2{*c=Wlmqn8xPc!l|q1TRn+v)N=&Cm{5H1VV-m{jNIe!E3gu=wNC_f}f(cpa66_dcibT}<5L68DM4;?F&^Q`R;wb0Q0uk8Jk&rRV zgmXUA_2q^fS$!O^bnLZpP?7TSZmk>Ibwl5F3MYc-P^}>$Be|jP4SU~_r6A{Uc{|;T z4HXqNsG=ItT8!Hmo=XFZ3Xi9b0eIF0f{t}vv6MM-N(I`1?#4_*Hz+b2E>;0&qzAJL z6*49KzuEhjSnIYeI}>WXk1^()Ywi6%&bjwG!mo7LP6=>gAteGM0fI_aC}1H`N~L&I z5jBLe07xz%p)4dMi6|gt0Z~AiGDtj>K#GTCQcjc3w8M{ZIKpxLhzL94zRvmofA784 znsbgZdZ*C(m}{M|cx9&L5cUm)&b{aSXYaM*MePk!nvejjdqql$>G=e-hQ{eiq?H=% zw!__#=L|egupN-w&T}{^?Aj@y1WwVn3S4*iZH<&^gS;z{@4aIe{iiqJveRHtgvc*d zuFHoA?m>iz!L#&m&?O?24Gw8^v$;8|HA;fj4Op-6>r8`zD8xe#-FI8z4bom@<6y*WdOKuA}2II9RU4sC!XhPWdY? zkX#_|p5PzOkaXp>v+hhFK^7lm&`%(i_;4+c*~!w#a*4T`I8Fz+~tV8$r~E(zk1 zGO6nZMM07Rb%lus$zmow1wc<6Zr8E#P=y*$!6dDsAnU@KrFDfBg-$cloM2mn8xyPS zt0nVI(?p_B50j89aO=^xXpckwdQWy{CyJ3AM74umxaQev>?9Ku2i zq=fCfci6SVq_bDh0NWk43*KHFbp>|sJk z8EDPWDytJkfgD5JflL4zy)~`q#z7fAEM6jNIH_e0jPoSKzY7pv{4GV{*vsNPWO6e|OFYKZN#Xr2r}AKn6$5r<`Q#KmI5#8 zL5cCs&AIeQ4pQynI(wK32GVmF9}+jQ?gn{RxHdv3U7}~!3qc^u1YEWlXa-8Q$NDN& zuE`v%X$ee>NBsuRWun22Dl(IY8mZhJL|D4R*EfhH$b5z`OLQM|4Z!2xSjT}2qB5agrWH1zrlT-EI#(vC%ibKGcGkq2CN` zr|?7q1qCKEL7oK?H9kbKN6J6a{$0Y$JrLumGRZW<`=$RziB z#VTNd!l-;ObB)YHJKv_8zQ!|)KaHRSfdrDi<_l5nkQ616o-gH*qF>AKk=)Wh0g z+>#h<((mphFXcp9MWe}E45XCJ0BVDEVC{lmzbJm~#qdpcw9Mym+Z}0=Ajt&uX&_SJ zTxZ9#uI_>HN5XdNNGjNN!@k+@e2+uh)*Z%Z|&133}_KBP8&>@cCs6`a< zC?5s`BdLev!=vGed$umDTIw`FLmTZ z;Ezy>d1t+4m^BrGy*U7$Kw-anR8`UBL6d~XXC3CstXylUu+Gc-NRWkbRYsdAE6}zb zsLdfK4RftQ2j0E`wbGn$h6ZK9aJlsmxM_ev8*3X9Fhm_91^X_zZH?diS)qx~Q%$UQ zfs;CrQp`9K@97p)2^GhbgIp6R{^cw*QS6446Z%FY&Dy9WtzlAV0B)O;yn&9ASkXZ9 zk&qk#UI#P^7?1C0jS|N)0p}^^H=XO<>(z0Z45cu^F4m(m$B*kKCpidv;(~SC@pf7H z90)^})y_Jbc#i4J6H|)PKoK(EZz+p>@OQeL^Zg$s}1xwqtg>?~dD5FfTMN zZnyeSZA6n*QlKV2JMzp=V7+5LC74yTMiWksx}cOk$fZQ~YH8>wmd+yxcbYz2EqUMXUIq{NA79pa15ESn3ia9JLVcVd(1)neQzVSe>(gAu{h3 z{`m!d{T9+*;l4xD1e6m@q7z9g71H(wEboBrMpgXzMB{vKz(-}@Rwgc1q)w|*DQN5#Q7KCSaJ z?KlkW*p21}jlJ|9zh_Bz6HSQ2p5>UmU{NOOr-zD|DQ2_-^*;yznFJHhQExGb0XG0I zvH$rh4CJ>5N=2esVCW*)9e5J>b6kf(%1fsrl>awQt>#)}m5k9Mb6$Rd#U+Hy7|=k<^)C1C^!!k{k{`$vbIdu~LygI(!YB_UiyHrZ)G_EoO~xGP zm=VU^9!wjA-;bGeG zQT+x{7pC|<#d)nw@qPDE zjp9I$*}FJ=4U@r9brHY+JxDxgqdF&^uTNn%xp3xyj}ai#hw7W%V-XYQb|OIsH;0!3 zJiUvm(pQLW4Cz?A*Ih~s&Y)4L6O_cB0sRP+uYvX%=&ZO#AJxb)TgeG&{yyya55lIe zY5YHGJ>t)dZpDRvC5=Yz^p8PWF+WUsM=dfj`ta#~|M{Tr)Cbx~e;|i!Q318ZoV~Cf zrf-5WI~0z#3G|&~dXCm6IP9B2Vu=CyJLNreGvLMHm;3qPeHi!5s5E_Z>>~GTeTvWc z7L_dvugSd$UaO$)KsCW$>G9GOLuB_2uuu3?AAX4cKmSkuhw)20wr_y++a382=r8{I zpV2?^d;fFNE39i=gW>9G2A_a@rhTB*2JeyPH(K?r8+xt8Zdzk<*Of`&=&v{1nG{ol zuN&Ih;c;p*RF^&KyELsdsp#nmfTG&tLqk)g-| z9uX%|q71CE7<$xrs4y|DW59t9m4ro4983@v9mhqZhkH1@1j!@8ibO%raR6^q;P6l7 zjI1eyZ=i+%PU1t4!ALp+QKKucZfm@EHRi>Q!x&ZUR${ z8Y1kl<=xFAI5-=EMNcSYMr|v9jw6x>1{K2gTbL_S%CKI;WEn_HQK+PQP)CV*#`IV21u`k5C-kk-fFjWY*+@Y^>kw~8FJ4zi`aK_^?-tZ=KEXfVpvGjMH-|sx zc-eJe@4T)<%@YeeuzAdjiCAKSZRZ99fx1cx9|j-?e6JK7a{^x8;Gft}j{uwx*;I|E4D`YuApU&KHZ8TTl{h2>&s}N1l zxv)Y5f;49iS`lU<8RP^BGuX!ewkb3_cMyFz@M)ItVY(_|tdI~R)FJOCPO=-Hao#HY zRwLc)c zhPc7}#$Iqu6njQ@Z13pa(7YXk`zD6Q{MCVHbWl*wKFq~}gc4oadJuz#n3-jY5S~J{ zptc6&j&kA()NU=POo~)ysHaFd?$jX56Vg)wmUN)EMPsmhP2uJaGEA5ZWT$aOb0T_w zZ%F5Yo|HzI+a3aFAl`FO7ixnAjA3V(R&}bNJqJL z)L-9m`HR1RKmF(a->nV&TYOs!epS!-Lutl2E$@Cm+Gn^l4v#caRQ6Ewm<6fJQLixS z8-@uSa$nGn8k{mG^vY*ln)x#j>+w-9Ac8o@4!_i+Rz%W$BPV0yx*0cqqh_K7J~Ib~ zjiur6n-SS5!sj&-hmw1w4sr~nU4b$|6Dx7BR@5s{Z%lY~7qkj&yWq=b;J1I|_;TUg z=(^t5;xM)*CFQ&b%6$_=;Nj7#7Km||dwq&X5R>ke9fO|0*Sj259}>c03Ow&HD-8OD zwa{J5=q0Av$UBq3K8&GC(}i|^$N7}`9`mSuT@q9&u32;F9LV+NsL>tj9yq<3f?dp& zj|8?HJ@P!6BN-=C>?dj;`)QhYOVq%mkdWg14tKjXzS}HNtZAM|uDac5a9c_khKcC2 z#yXWT;Ku`T#X9Q%5c|+H3ABy9HxsUTiOR6%uuGV8bM)ITG|Tx``CJZzGOW|wIEDkG zpVk$US=wsb3ft{Cx86EUT)QKk6HO1EpvxKXMzb)KwJ5a*eIQ6}NvNLeTbMfN4DnmP z<84(AGbTbTVq|on7SpjIHFeTKattVTgFKzMDc&pOlxW}@D4oPrDXW%9^Kk3HwbN1L z9yJ9~+maJJmE%3+BgL~n^bSW_Qc9vA>`{eu^b!gG*`U?P=mXVzuWjRVSe|E^Oh$aj zg!Bl+Kr>P#W8mRyh2%JADTQ4)_U*?&EXu}H3c`a^p-sb3zzP__QPj759i*CohOIU!1u~`VG08&LXOvPK%EAqXRpAvg&8XlyW<%oD&cE#l$pSjaSn&*o^(_ygb6|J;k|%% zkl-`Xm^(}&RO=gu9!a>K4nf+Fz5uzKpy0r5;~vjwMxY6+0X1kW9=M^L;}{cl>WOJ= z$Icp>gulOcS-Ge6MAc3PnkdEf-7441{r>!uUTHq;6hZ&)tK-+c2!2upEddP_w|57! z4Z;t<>A3tvG!ou?cO?hrsl@+Q)N0snT=Tf`MOL>O?+rsY!ENg_I2`K>M=n8xlLYgQ zHBk4%)F%q8o5Q^wglYslO%rPc)~!L1fRxaC!(I)oE9)MNA}&QeR#dF3W4{{e>WIh9 zaZl+KhF+mStckRaloFCYJX1k3hWkBcH$HFMDHLN6kuxwa6hwQ>M4%)N*{J|o1lnn2 zo+gEYrUr9byHbvO7EXGh16G(w7dVOnH4D@gNHnN#JD)466o9E+u?j`PY?2F*qXt5J z&@%?{3Q^(0D|MQHr#Ycyp!=Y?De4Zat0KcN&rBoR)=4#1MOIQCvM8DX*V~5cjpp<+ z<)eZtWs=ZtS02xEyrbL(scINS`%&rEyB*bf@Sr8Aqc>wMPt>ENqDO1jRvps0&U1_H zjSgd);N{DXpZh%wVO(xI6s+$^lb}|^+pVIMglSQnpt#*S=`x*!F)`8{IBTaVZmq0t z^jM9xqa`e%$9lBxjx9M1uM!lb}pY4K8Jbo_H+lM)TghD9uj> zG^d%kqy)_wzVmaZoQd`C#>!ahc)i_lemdj*`!n`$F4!xDOI5J0L>MhG!$E#?BZ;O~ ziyB1I*;Ev{WVGJ!cDdrb%qXS6PeAv|+MY1a!dcs=iRO`HtdD6UbP;s9ob@oI>cf2N zs0s@@g(hIz8Y?Pt)K>^&P$?_o-@Nu z{!oh<&xS$$P!Y7&F=d`lGe45cZQs#*MeRFM0+v(8<+^m;kj^Y_(E<+S-x4 zoyvrgH`LkyQ_M>t{TG}wq$Jp`S0pVc=?smcb@v8AhDb(t+;+pycExY}um6kqm49do z#lP^qzlQ(TZ~Yj*KYtJD^q(@x|0D;&QQHwoUup3g$dSaA(P5w9%Gy9kR8o}0dWl(> zOy3?15MSbd&mlgoAwmyjb&vq&k&X|s3wKe_Z*mu&&vF-{G}dCq(6n3uS#TINXl{3g zhQ_kGagQPol^3$aKf44W<4NJ$0)L%p;JBcRXe-CJHUm%0Xa3kOO(+`+eqVb|(S^nL>JOzz1ETJSGO>`0epU zO=t$Vgq!nJ?%2{%`4FT*3it8PcH=(J!W5n2_qXGU{IZp2#1y3$LU|97K!p*YZHJkReouux@~S6y)Cvv~K|ajJr5K%saObYo~OW z2J{?;h7-_l_n8YfB5_?NIVwmfvd6i|5il6033=!)Jh7g|pW`^)!o)I;$)F0n#lJrT z^0nV7EgB+jjvA5uf!b01PK`Ll+~WFhTm}s!$NgxdLM3Kwm8N2pJDEbJI4@a_S@U7c z@VjA($M0TEi)mC&Je-qZj+)~B9*9ACsGIS}3X(w~!9j-TFRaq=VLBfs155B~*k6NE znn#_)5UTx7DF_M<10$?Zf!+;WzQ=i60r{GB4qk=lN*+uwH8y0UmScSW+rvK}gt+rC z|ze7@!uDr3E*YW4C8vhc&5fVnB(_te(YhP z4Cvr(j{#yN-eOh&Q6>{afbBvOI22*j7u>TL1w707*naRPJh!^Z{-^ z53D~XI;1!Lyx!p{2k}){-Ma(!olNGalm4->;y?KQk-7CI{AX8)(Vgz8a|1L@NHHX|ZYV-5Z0$Gnok`}gu;rjU9anMpj_Le_{4}9oH=sN6 zvT(BzXf+AZlr-Rm{Zb)Uho%YhSMMRGLh1kl6RrZg8nn;Qn7qp=0~19x*TDK`fu{^_ z8#mcmDRA~^vy=N^$76latz)+pCLXk(gh`&Tc*l!Z+;GEYh70J*FDOXPx(^Y$wFSxw z5K&fgxL`uYf(eVxe6G5|P{W}en<|b8!Zhj!m0~1O5CaRiQs5pYg3&#Rfp`L{RVIg{ z*Oem(i$TzR`qrZFS47afbI1bFfFX*citZJ+euJUmBs04Rjl!q8Mh}t&m4X6s3EsxN z8S`EV(qTxN@N{}c57UE6Cd)!KDl#+%Z#{b!FJ%MG)^TaS+Uj@H@1*=k3EpycTA6~**4BcBTTy217s zj!ubdz;#D&6#~Ql<%PJQ!XZapE0SbVC3e8_R1!AtlN9TJY zl1cSWv-tW0%HCjKF6euOMq0zy4*3w2i9MsgZLlvFzPQhU6-$83B^>Y$S9XERc_Qi? zQLhjKMgf4QnTh95FBFVwi!Nq^??JuLd@!a(oC((o_&l?or5k+fkW&Yq&d{yGFBkZ2 zg_Id`n&B@iMXZ^%14wq%448Llto&I$k>O6mfq-vLd)uLvuMT;hcplfC^p3UO5!~S7 z*qgI5W~=ZoSLn1bkuOnAQ;h?Cr4VzFF-n-Ul0Zx0^GO|;1imxbD5kKT<`0L!ZykPJ zA`cFQ=e)0+O{sjH%9n!~V`1K0=eB)-X(j9BYlxOpb9Tg27&1tOIqZG-V z(<2MUnY+hvBHA@erjQ=uah93q`4sFjK1Bl)s=&K$xt`s z6O9$N0=9RkaR}X$KoIpD89?rUC)itu7Nt<%0ADxA6AeqgH=-ABJKPoWe&#hO0^ban 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 z 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%0D89~VpVKryXJOJz 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%0AKpcS{1yKC^Zyv%GYa3Pk#DKWr>~bYr4`Q{$DFFY zsMne`2!fK1AjixQ6UP@L^?IdTCz`K;ayk))Ba%-`Awp`S`!=?A8lFv`k8;;4S0YP-td8O=b-e}G2W%ekJ z(L@K!0yzm|v8crqO+3*MO7*WPw!fM^wzjlYCun{3>eEJnX@+UB{Lc`eovp!;f{>EZ z`}VO3;_p}6mMlQ=HCHXlLG^7{Y3MO6fvx!_x)}pJaz)#ww_&GkQM#kgv)Z*c=)5@I zKg+syTH(J(Gf3#<5;N`;FCa*=&(=zJQd=zA>iBnR7pwEJN5}*hy_GeOJ9twagt|0B zaum8Bs&}bTE&%l3&0P@zXiG(gvaT^Y7n{$UqVpB4Gjg~g+#YGAYt$XQLMN>|V9KM^s1l z3q>uCOhQMpw_U2a6=y*nbh=dM z;)@qP7C@^zSfj7yYLOrL1iG95)(&w+>(zwbefrU6pO5Xl(Zw4p&Q#UU3{D{n@{L;G zb-wD&ob|JctkEHFe?6;cV`Un5w2b;(yS{bs^HJT#H%|D77IsJ%wM7@G$7mFl+N_Ws z#rE36(f2O`tst#HU5M{}?gzr-&ktedQ+G!`H#Y9R_Al}ueCBuXZm;nTula^=9fa>` z3*Yhl?sGr@6$J@v>nW+8gI&-`Tci9@wwJtWlM%xR=gCL7F(u+5j zr)jZT=V-!tTeobV9()c}cVZ7?V$9JIhpabsF7kq62i3-M$iG4;PfOhA_?LIMeRb0O}NlS`0EZS z1cP=GXzpy(W3T_iCUF97mpY3B#gdxZgW;^I~}U(R^Rq%M|ymi zH?V`B`J)%ygV!E{2xAtCHwcP@N2`;vdXz|T=c0*-?Vfj0Mes-%MJi`@rE=INmDH-h78t;e;BI#%Va?S1UI@-x0{;)zYj-F*J>7!e6BRx4IFjTVipPDZg<8l$_Y zi$~0il87O#WS4PF7N6S!IS9q$?Mktqc^bd-M?ZZ0Gdf*3g_*mb_?LO_Pe1Y}|J~oo zPrX}R-@X0*&Kr@`Fx4+A_ohVt1FPS23(L-ftZh(1BRLfZEG5*l28fiQg*Z3iSR z$nuEJvk3~u6G1EW>EeyqgEjDb4d$Xq7x5;$KU#Kzl|D)8cFfqaN7>FO!%j$Wlr25! z;PY$hqJB29_#s-8`_#n;x{*o}o3K3k-v_oxj^y|5;`i~$MtA7npSFg(F1l@4E-n!1 z2mBrt(tn4e*aq#a_WO)Gq0Dh77Dzi0M|R;2yX(|rCl3CeU3@d~HfbY%1C3#KZbVHm zv5ExB?it$On=UL^e2ppr9$cuJ1H2gFaY3^nwV_X+!0Vq!hC9MtB0RjLJpDAtE85pT zhUF2B4aVolr@nx^_;xsb9=*FmhtXnXvd3)R_%$H9FvZ6KyXQ!D|K2GlZTGCHY;ixG za1rILc|j*#wFZBINJ@7?nDz}{vo}y3cA}5H;wp7<&i*s)=CXcYd%duWM5^D8 zu6>$g5FMdhlybGgWEw|Q%;~4a7rp9DN>^xFmEBd1Il^f~j)OV1o6_dRT(QyQ+@ft; zfarKhLtt6K-8XSD8?hpY2`0jZz?2w~(i|;q6KxnrU*% zY(@1}UC=2Ao|nr=vQj1^nUQFCP!jH4!~Je#CxjTSB62TB#*nG1Ow6`dlg7vGfk!4T zEL>%wNTW$ZX)d0CkS{hUr%dBCD5npRIq_XY`;U0SsI{I1ki3}GmV5TcPPdch@F zVW%!8yg@B|#ENf?9LBW~A>DPlHnHf;B85-dD;{|AVgNkqnMck% zaN*3%qF0`C;9JwDd7&eBB;Mzi&vDNSIdUhr9OEr9oFERw0hC*KmHH!t?9_Gjsw3TG=5;X`}B8NKCd#2Fb?Vt`tHorZg@sQqt#-?&6I4e z8wbJ=VK@*E_sHFI!Z28jM}35PM#>q=1yK`aNq0u4fHXz5!m=R6f(M0$F7p}%Vj@J3 zTVSswg2241}~M{Z6^0&Z{M{$4mlcy@x@1Ki%i-7^zbgbe8@o?mK$RLNqo zB}3d$+pyX7&wi8w0?q_z6*Hu*EF-N^hExY&abd7zDNWIddb!P=$2kgFryyY63GhTaxNvO8h4as6OYBd5vt<4(Q+Rt{CoD;XVCr+mW$8jL1j3DG38HRzB z6GI-zIg|YUYlECJAw-JLgs3L%U-U{sG7-Cf@rLk^6G%=J>aT%j~^F^8_yDrK7k zTPIXGU89rz`j$_0%WT;MjrQl{9qvFQ=it*-k68#zb2BiR&)NMt>wYfV_057$dBvl~ zI(0%^c&u89$@Wvl2_8-R7_>EHS(>e99`R9%&D(Xc`7Om@;|rxV`|orL7Dm0OO=;EM zQ+)kIEsF1YZPX^rlL>vw(u`s;DWwS0RhTAay4v?$FUtAJ#7M6{DokgXuki8DRi0ie z^BK;sE7KD!SK;ZC#^s?gd(>8GCTbW4NP}>C2G2f#=bsDQz9)oGO^EA&qq}E`_g)M< zd!D(y2^MQ<-+OkdNpQN1I#n#Vn6EV>Uy0LGf~zx12{i4| ze(I$_kC{;?y*T+ph)!SY`#;?XX*~o+x8B4))`RuAFyY1;r|Qp17Yc>A#pOuo?pY!3 zIpeYy?8;l?GkEt#LPncYdg;d^zYa|iullV?VlFa^L_5E$%}+uk5lO*lueal;zEJt3 z#=vK8BA@^4fxB<}8%Y1jzrxSFTV>z90QlcL{V1>XzrmCI1W)m|@KU}h78yu_EPf^r zm?7f6$3<+2eU@hK_Ni_S?~9r%d-M(LI&8p+aj`+nI3E6Xl2r3+j7wP`Le=#6Dq zMJIL+=ms=#bBb(q;H5Xr{r4U>q4ydi6I>WmcOr^@go-YTkKW9`V6=!)Ou*1<3qdvt zhWmZieZ%bk-XkKa3wCaNj0XRi!>$P*w?=oTB=)!zzEL0_cEW=FHHrTF_eh(0CywZ4 z;EOl%N3rK@!eVbOY$S~9uCApncq+2RRy?VF55QA_pM66(3i81b{iwpzEBNqFz{@|2 z)K`S|G4keTsW1OLA~S7zLc;*h-a}q|5q+ok^WUn66(^uD{Y%!bt zD4KR+1<_3)vlm7Lzed&Wv2?+TfL_&p&KjAyE6~*4weE|s?p!E)5sU0iSG+~2U7zQ$ z>st4^K>xcvbwqZ8tUfMvH>UI(#!~SAKL%uUN=p=@jdp{F_`X4$a*=$HYS@euJ%+dc zzHSn25>d%WjHw;tzz{0v*ZJ4}k#})nzYJgRh!uaCUti?2pZb6o-!zcFDSgLhzuG>2 zLMjX)6Jn-SB@Kz=vs>cb5luopU(soXWifnkgIcdNT?iUXT{&mcvwQM4y@wnQ==n-} zy3npO!JVdBtGQ#kJKU`n5(1)`P!{T&2U5s{;e?!^ozH|a!!*G4VsQ*U@kt8aTx=^# zTW$}?kkNRdU9afnN;n;naYUwKjmWTNR7*A?g|>!_iXfobC?+1^r{$9vd;v1)Z`NTq3E98Y!_oy1%U%_t_V&9p@rh7)NV?LgeEHh$o) z^Wul{4H;E0g?d?NG^9tXxH}-FWSHt}v26A+5pseGb(sljt}R;+145$A)%s}Ju=QbX z?jkXFPdp~V7|q4qT~c^cPRt33yA_x#GBtODI-attr~793X+gjK26trsiu;K7zOpqazLc98=U78oV0<{(9Hc@={S?WYvGC{Is zyz9bLugp{?Ep|8$(5PHw=8-E`Dw&C%7zQ*(T8xCFFqB4{7TTpkydZZO8IEXJ&}o6GqN3K|jM1L$xf<^3Xi)=gDzxPd zXdx^!n!R(Gk||}QZSJ*K)uIce%HnZAJ!jmS!Vv7aJS4*Xk#N4y&Wkm=vd4KWM!MulyYOO&*36p=8UxIWZ^G>7ghRHWSNy;f1%CAxzsgO9|IeRU6lsO2KJhR7CpY}< zKmTsE{44AApZ@*)s_~Amrp#|>%8$gG_kSRT%JcV6C?kZK7#5UjA~sRtkQm2|7C@2wevCXhTcuPXC2EHGyH+bUUNbIUi9;w>AQJvz} z97w@TLURz73e#+ESFn$oW6$BXrcM*1VFZDCgy_xaTGb2D5HqCGQRrS5saqi_C8LB| z6PUF~PLC;iyZ_p?WaiRMp3>x4W|6HJ9b#}dwH3Zq-oB^Jb1eI<*0MF#0&jPaSD9IN zt~y#?LVK&8vAPYrld;dWJC}_QP5X1*Q1s@obaN9MCVIu6r$89`{;>M|y6f@iCa$mu z4cTckjF2J4oBg`20}KPwCTrN0D{XN)M}4a^u;HguCvR;LD%#y0PE@MyrtU?{5Ier# zi6dAK&KAn6mV=JtI>r#cFYv*_O_EvFG9O39gIqbZuN`NLiRmw}3WyHH}~n1?mDU9`Cyzac$>V~;Ucj|*^d)+#EM z{eC!XH@C+Iu8Nu94(+xdh~AlD9Rv8>h{_h*plzoP(%p}XPVd>`(pKt=|9;|oX2sn> z)g5D92(8s^Fz$7lH=9Jk0!ze8``8=a{kAkNhsa`&jwPkoocu z`TXtagKwJVg(0cY31TB<8&{{BL>=te8V`Yaj!0HYs~mFR6f>{i%v{bkndgJh!Hdml z6WZ)~J)aA$xtm(m^yWa(X6Ftp;^%rP97c=l3ld35Da8a41dFYRA{@s=49dLBhzL0( zYP9%A!D1-{T~qt|yljooW={N8y{Q?f*tw?lSWwyNnRboQm4M_Y)_vo%1&`_pTZ1(Q zbBBvF2CVTL)~33+NUf++OQkF(q#9BrX+Sg78m##}n@fK@!Z<{ln!s^B3Cko#3YgU5 z873D$XrRu@G7HO8jUWX~*UHt&7PZvXs)*ss+y234r^`@F`6Ml#l#%lC^@9WVaQCAa=A82ku@GV^`?dkB-ZOLLTP5Y z37gS>qYmi*pJF%ay7+$9-p)`VbrFJzI%?YlwV_y%-9!@2$3j@i2ND9Mw$+0pUF4{C z|6}l2S{GE97$i_tS*n_7B1g*9Jf@;Y*IIL5i_&O}hd|1KrP>a=6B10jZ&`d zMh>euokCeWlB*UI>S$>+q7f%%rOc3$Kf6<-EddE5=hua@2-mA{eT3yAl-UIuO<6A6 z8YWRFS2#Z@x6k1HZ%U*i4B6DQc?hI~b$;sH2%Wi$-$)U?S7Ym&?e#YCRi|3&PHUm=LKP=Tn7|^Mc+1z@PCJPqlbqIC>b#1H zJfGNpch$A-s4gx~X*5EMDn%C;nc=v$ur|qp82z<16U0R<;%VJq$An_@a7vX=-+$W= ze0=`NpNxrb$``&PEPU(V^#^$W=kTxaydpMzx}4Bv*H0(|rUm#;zm5P36G-9Q!A@swN)WsxL;oBj}n>r z=O-VNcoAO}MfMrvxbVvX(?EqiyVj=>+Y z9X?{9o_+F`N=OH2$=u?2?8fn6MadkI+Z)T}s#n@l&2`$$C8u6=Q}qIU^kdRtq?L*5 z%a4fT4a4z(gn{-nIRbyQlW2@EEvRGoMFnli4p7$#xyi_j8{{cdpDwgzLTa`w>y=gQ z4vx00u68gn1;cinr%iT zdKNLna3Ud=xu}6eMzu0=p^_OSt@)3Eg+yRsg<3H z<=n3BBoSJxB)Q>0BFP;^7cWsOjq3XM;%i-^F;jhkYTAerJ-gE4Jo@@&F4{^+i7+JE zQa9Hdk*4Nm&?w}?i89TUay4YByKq%2su8JMMyB)zT1-}WsD@%xFrkd+f}1183KHu1 zF%zYN;8*EPN)d2H0s1#~GG3ppdF8<=Oxd@)*1z9-xrVH^z?oY=%rSWHY95}G6PtQ}l;qu|q7) zqdf#&Y^+Li$A0t%U5*};5L}3(reZC22-H@cv=a<(p2QAW9%B*|7lbS}|I8+avlx)# z2y`Du$>SFOy6^h!@^Aj>e;J;_$WPr~`TPIafq&{xy<0W^%6R>;f0*x!BR`%JzX9RP zjQ8KW%nxWjkjGo1R2TOd$tMqykP>kmh^GO98fi%j(q?qJ(55qz2aEhz&DV<7f&@jf zhh$1X%VM1W=sYtKxsP{uNJ|Kt3#Ak*7+z+}5Osl~?ji}bsYmUI{oH6sI}x#H zCXeCi`Kns&&|o46i@nm)qaVUrkkPfUI}(I+wVFGB##DZ)!dB3V9l;tgkgkXR&usxLNW3x^Q2rC z;ZVd(Lz5NcbG3YRb*!;gxI8KI1==%$sycD9npTF$CJu5GKOugd7j>>TGf-r-9hkL07_rh>2;ewk7M|b&*cW z(KJn^uHuNEtWy?iG_|HwkCLfQ?8t+#T#b;iO!nWw$Eg48Qs8n?GzjxzpKqFA@}|*n zj69qxfg6EcWj=L?v6pMf)+ebxLwz?LGM(nye;H06n|T(6)L*A zaQhfnx9(|^9YLdul&rz6+KV;15iw$22}GjBDx^~ESJs5|>n%>yau=jz5+_daeg*9Q zihljg|1du`z^}a>_%+AC_dUP;%=d@5aQp1QFa|^l(>yWF7fP*MuhsrO3OC2dp#|o- zQp=3W$l(}SmQ1aMsaSl1HW(zAA?s zD~xKWs4Wmh$=(Q`W~J0-!VKW%6d7`) zRN?7Tm=>WCD78}5?%&|+aP5RXac95BJA@#lJ!Py%X0F0oJM*V#W5OC{wja`_=GhN{ zhH#k*^P(%3xwTDH6KPunrVCOmI;|n1l-9b|YmHh!P2>rY+N$kWe3MaTrBdM-NJ)@M zSr(5hN!GwNv#wC883IxaELB$`;xaeGr&n2@o7x&Nm?-HwfrP{|HReUBt&5J_R5B^8 zRhBB0NjSeT6UKPT%opMHM>D5W;^~$0=2c~$0?Soc9&H_7CTOjhz$GdnR1UX^co2qL zt5c~I4#&XFO)$Djgp_o>mm%7{$^%T-#Y7#0iFNW22vNu>tb2$q#%s%LbXtM3G)lAU z7K2avxm~C?-Bm!b-5|NglPy8eP=m zSUc5)zUS@y6@OFjPq?|oL?9wYAu&3R?FD)btZgzP`#pnhu{cztqHQT_}M!F{{EH zwsU*NT>Zk^&0O6zXzTv(b`9^Y*oxgS_4e=3BPAs6-n#=e0(MOopN|H2ws#>$wb}u9 z{)T5i1C0UhGcrfGj_@?EB5@hhT3^<$|0L1^Oc&~he}dt&-vpPRM$5&>zn6rT7szLx z8OHEhKo52ht77EEXyRx+n*kD zcK7Suqg;~j-DdylEL*Ho7s%}Im+v?9iuIz7KGu4(KLMkUP4w-UiC()n`TIRtQydZW z=wsQ(q&}$$Df(EL*Hji%wTLb-IE#(NAm<6|(#MVfS2gA!`D?02gnptDtXm z6SZ7;o465yH}0CCz_r3FV5m@D)BfCt==@0fj_;;Cy+j{BB7_H^qH+uQIh>xs={Y(b z;r0dGzlRRb;JthFcHGJ{FTxguGl-qrFN)>>lcHa*@I1g>A1|^+qpYGN*~AKACr;?Z z8&xP`#*Yk~)WkZ??&)3}Y0jdZn5Mys%qu%_N81^p_Rsh?)STAOxSx0SwJBvKX>5dy zx4&L@u|pC;j?z<;H(^KE#4|c!_5Edp+q@chsKu@gR@+|-Wje@=r zQV5?eN&i}qd+zfye*ee+2LIjn-x00e2`k>c{!(853cvZA3w#ldUxfVG^rPSYSP;r4VI-w4AjyHb92{IB<2G$44zMISa5SECO8aM1Rh+9rb@UynGoU4mB!VY zh|%1cijqzi4?>9O5LWz@K3%Dg56q8mh>MuBYgr6E9>pw-f)!v&T_ZTOd4BL*(Im)i zCLSYtS*$rbfP@i!n62TGv1VSiKs#h79*l4Y0TCfxD>QDmNpZ`RR1Dkhs@QP6kLF5PTVx+ zRh_6S3exBlx-{DidNYh>#ig!fHd2K(r$b6;wgOJoW}j&sOx&^9=dy#h-9HY=-n06K zC_Jd5!?e^ZP@bUsn^{5BDz-&cKor?)jT0<@uQa%w$%pbml4}{_U_b9Jk zQZF+hW*dg3q1PF`7RN$1s=LM)7N$0{m>h;mq4`PY+jAHLlc@gB;fVMWJw#TOyex10iORNVzuR$>|H?f}@*c5k1A+ z;Ch{C(}Lt^LW&lUxuWxoE`@L!ttj6bssVX^OH!eH{E`+RjRV{rHnCOD02k{Jg(j4F zCVg-RL!nJGDGXMKE#}B2i1kU|T%lG%@Q|KXS3EolA?K9{At|{)zSC@6pwUhB>YJVD zwynO~i((zprbykmg5p9mTC>BD1iR0@br}P+fL<45X&dT%h(^{)R-{|i{mm8TQEbjq zU~Wi_o3c8C94+KduLb>$U;OR*Z~f_iO?mYhIDhtupSZi>pZ~+}R?lDD*Pr~|d`~{| z)tvctLHL1i^WuBka)n@P#Znf=QzoWBor~?s$3z^nIX0IC)rDYL4dyacANzH-u_DPj z%Bkb&S%c8EA9$%~5sN7}44o@%C5&eABE$hnM_-d0a(#lhpv!FIxK@wq*(t4e4)9f7 zj=4K*tU6x7zkYRYYx8GJT+9)@QEtxzqPuv2?Y%7Gqp^j5v!ecF{rLfjd5192wb0WK zFRq*Sy+>Q!F%(@RI#IP=sQTf)(>i9aHKZ*WrB#T<<2q*hzLbPgw}_9D;8@*+09^Euho0#f-jZE`c4UA49 z-q&3T9A0Rr>f49TV9_YS3+#1&ZuRC?zy52hOjpfLL?gMJq$gHMmHxzKQwpTeGp$4 z1%0{zb&W<*-4zpq7uQ-vmjxL|(#^rBaqE8c?E}9jTG?L9k(sS^F{lz6c# zMsFyVZTafN5)~^#iU?&gQBL(3mU*`2dtP8J@N~AwkEIC58~Z)3*T9=sjW{-@t2%WA zjw7U~q(MlzB6I!{J?N^zSn!|{P+EXZoh|f za4cRRG&_HJ!?I`kYOfec^1-94D_Pe9lOQ+W@&!Hr^y`@T{Ncp60{_vk0j=_CVO7#PF4c7+s()#m%9HWP{^*_lLT zi_UrL|JCvRVckQkizqBkppz-~OOy+&w5`tZ2uTY|&QJ1?HMEv+cVZC>f~nYzj@2Fv5trj$}wlX5o=)BW4q|NVE4(zK0f7iy8@y)6velF}V35 zip?Yb?BfCo32LS<-t`ErPRttF=5tHvXMGlGt+p>|R!`fa-B>9w!Po5A>slTS7IeeLsYZl^Xe7AFYN(CW z;5dHEw|zYP^ncb4eCFmApMH0u{uTWCy?^}sk@Q1^;k%Gh|pT_elXED3;N+l z@Cz>?-odjk!1Q&d|Ll*!>F# zZM#sd*TZ=`4uxGrNVIVvD=E~33fiMK+OC=0&;4mfABb*UTP6=4Qf51oz)2@-;&r`{%0_yLtE(UmN9@pt(`n(gpgdMeH_RoCdB97FBLH=3q z#Kz>}XV=4SOm>1o+fx;swvzqXsJoxj$qdy$Lno#Nzb{Kg<^`=+&}ibB=>ZvL(AV(M zABRuhlkRR=(vfx+$C+tU8tq~y}Mwz6L^;0{NhF?ZnM!k zO53O&y$;&Eu(P<}qNw*n1@#yaiGk1{G=)neC!Q^tA7h9|j<=uTpL_b(`8#j^$h$@I zm;Nihy9EE`zy2kD^qW7!;fr@X|Dhw}4~)P1JO8%!(HWLXXhM`g$^&W0iP3{)ff&%B$Z52HZpJO!-6uoo z4#mZNHLW5k*`$`Dy@xl2Bm@(U3~}3kMQ;?RXfX!S5nVkCJ4M9Z@7^6CgtQiCMXZ=x zsU#AD5{YEr?F|yS4Yve^YkQ*V!a*`Oa^gOm7|Gm+6L;xmb%(@YJXlrJv%MFdlL^di z;mkx6n3zziJ5Q8Cp=hB{)`MabU7H_G8zE$}7`-HrEYqnNRiZX4OvDhj28@W|Xc5X> z2x4O}#<&(fn!AUZHi{Nv$g3+h#%S+Vy?~^;YtY2?-$ROa7?NJN^_N?G%4TWPdb zY#(=XBArIsb)r3737uAu#e_pSu2?QXt(o5m1+FvV>F$V2s*n7%pJbKt;W>7EFI zAdzSR!-NzGDZ9vFD@@R~X3r{EsST!?cD~v@90nJ~^zNV{YJw#KFlNGdvgX-ou3L}-2pnahfjmnKN+65L} zJv!G-XyNQ!?VF#f)&+G+h7mSG?_!$MS;WT8wL%qSY3NkpQlNOjD#i6VTpP#go2$P0 zTJzuCg`Wd01mqBq7YF42X!M*n7xZz4Z+r3G`ZFJW2zhG6ul-~Ep+Ea>1^vZ){i)x} z7xRg)=8?ZD2ELq6@Bg6I>qe(plv)>tLnP=-h~^m9>d`S&BUIF4dB`r%p_vm^Juf=k z-kFeKsUCq**Qg6?C^o}QHbv5CO|)Rn2E*%*$Z(5{w~$9)%7e$_bhW$*s-zzR`+AL7 z+)vJin@{l@5TLy|}@a zpx@s99SM*IZ)Pl=2o$V%?2f?hd|Vr5>~3wR&~}6~N<3uJcrYyYQtZBD6O6T~t_B4$ zd$NgKgY6+|ZHS7Y)K{U8iA>ZZJ7RXcc-vwz#0!3LH1$Onb%ahsk!}4k6lX-zfRO{E71NrN!HnYO%nf z!R@UuWEdihqa|5^YXuzF9-_syrrSg~1QRSpkB19k!`&j=GcNv|J6%kI%@e|g?hwU@ zWUV5#+5RC|hK)Ft&)m+oPp+4%H3?JnbA=ZMbyK#;H&ldVb*hBbc4cBEn^UDX40SJR zV4Jtr=Xyt>a3WgYyBjZfvfqhK5GJxK{EDm;v0mtul|bQN7s6YDHgm~t^O=o7KcJv?C*IQMy6()*v1<<&z_;y>`4;rIQk{EFRUeD!bRdnNI` zG4nm2dGFi*s;NGha0NwTqb@T`xw6a)+A6~kxV;&8_AE1=64EL$D#ueMg@6QQ$kCde z!@%K?Io(8Zf*}g0<3Nf=Ow0*Rr;%s(2Xcz$LQj#LBRLpqzNt_aI}fIqyea6e^P=nc z>cj$bntOA)we>6(gHWA@&{>D-&GAw<^TJvvU3G~)DpZ)A29$=lQVhWw^SwE0$1qu& zm*P$P<`Z9!A?T4GxHG&zL;c*@-=jzQiKwqZ79+Ann%Fa)vydD%mq&{@N)d7nBu_RR z50P;Uw$?~9B1SceK~vpbJ2lappBdDPxwWW8k4z?-${s(pSV}7aqiQX)lO%ipSA|-P zZZXeFt2X~wESOO+=0#U{pGe?z7(tb3u1s@Vi^ENKkU!JLBVy|#swPNK%pvFVM|0ze z;35%U^LrdzZy=Xqf|uqw(X}e2Dy6`6F$%~&PNYXN#3)Yd@I9ihiBasQ)}kvRwKX-m znMXkkDN?Jl6x&OS1QSGH*Si)IJkS8y4cTICZ*OunUu?8r7ptt+*q!#JPD7l8s~>fYl$}>70$00#xe2m zvhn(pVzdiYLNKw;;WjWFAdHQ4gfu9JlX5yKr&~ClY#lzGA}KW+fRjjz)2d?hnj-2k7P78uJtnPITe|{YTS*?B=Ml6) zjId&&D&6+QJucM+Qz?iEe|JvvT1=$e_p;rC(HpouDyE+ww2LQp6bh@}u)goM?6ysq z(Q8l=b|NBK8?QZ7TLQJGQGUNe~M$-vch(X9h zCXbn!SD&Di9JzkqZ)N@u|3%(Kef~;&{ZoJHi|FlNL%jX3Fy-%&SCTk`EMoO9ZDCpvEHyTLOO*C=8zi0$=|G9w&$g zxPJlp)(-h^K1AdUdO@d0s0GRQ==h$AYl2gH9-olZ?7w$}7ZuKvow0%$V9i9hbL6*O zlezFVX<>K&SKYQ`7x5I}2=bn+0v^d?u_aHt z-&J=)lQoXl7nCaS=)w}gYQ13F}pSS+m zlB{(woHWPIXtFA-`x$xJu8U-kxa{ZDwo^Rxnq1x8oA4LXBTQtmt;?vq-Ib2tFt@N1 zJXGCkhWP@%OXYmP_y{&)}M=Gu=#DUdOkM^?vv4i zG;G8a;&v|27DFE}kD5e~s7RFDQuquxevw1E@JNP) zEFes0MX%MI&>_&Ks}-}mT_Ab|wG?z|wCn6{bfpzX;sZg2kR#!cA!oQg(dNk}($Nbm z(*&3UUZg?xNP#{9P1W2q!ExW?!79I_64GEr)~fb1J8#+x-r9mK>S<#Hs;G-H!paUb z{J9cbAfnBcdm?Y6!&2~OYu%KcZI=nR{(G}nMm49+s5iD(X#- z8jj(YJvk1 z7M+P?!-6iA)`}NZ5)zfg-P19EhG2yrJYvQhaFl9IWXBU*pWm)mNRc=uv@Ga#vdD%Y zXaqSW(g#N?=)AgGQGU!YBy?`pob*@`72l0(^T=!6itBN6JZr7AQj7$m=1^*-(&pKS z%PFxe6Z0pZz>628yIX2_L%B}&98~oT(@Mi!K9f|=YP5aSDwp491|laba_Oza?8MTPTX_g$UsII$Q)(hz==TvM-B{fAW8zQB*}!}vQ6u* zAfqAhtr5`G!`P+0QW;BD}dOq=*qM0HNen3aZ75Zb_)~Wb@iE5MnZ6Sq{jtA66IIbVaG? zG9ly1NdpsFCl`b$2aF@Mku-$g&qhg2zxe zaz@>*COb4}k4{#V&J4GyMmLv*x_ei8!6ffU7|mUGqaDmbKM+QUo);c#@535uycXXw zRojXMPqoq+=3=|8~?S<>|~5;s>dYzX$StJ#HQW2(oa`HfqfBzV+scf`Ksc=f8f zhOjyX+fs~@H4Yv(vhbF>@Vbyjb3=!+%jV0c-GPI&AC4?RJI^=-P)}$zlGGvQtY1)vc zCPGE1b2E&57YzlApuscUd$#-9EAP5S%<25}v|Xa7i*lWXr!zcW;gi?OCFS~nD}I-R)0h6{4?$ ztUGVTD`s_pHram5@iDSuUBViLB-(5}P*$Oa3GCEK8x7w3Rlh!kKQ-TE^zyH8IsVu9 zw|}Lr?|=Kh#E-~@?@5_&9|k@k&kTOqQ;gi*4IGad35{jCQtK6wLe9eJb}%ITA-cHV z{;93HNFp-~i6K^Mi_EjlM`;L*2aD7w)%FUd%uXke^&z(*sMJ=?$h8=~Z5#$-P>TSL z7Q@t!*!cIXB$NP+W^_EUCMQ8$W2tM6vY{-skwu6pc;noijm?_9q(IJL)%yisWVAOL z#SzuA36MR9X6v!3KE|u=1YZ}FV1GVCD|Y{vt8h6t9$wC<2BHYl)yCS*vtZD< zY*BJ~P}0~)1LQF<9N~DEINb(rp9RLTF&u398%AL~W}-l;1ym@D(#pa(M$%2PJ?PxL zuESavlGI5PMu{l3QL8WxfgzbVxVX4C6pNm*yfGIp^hQy%>u|kRO0C@91af5El=Ss2 z_?a9U8gvJ`Gm*6?h}s;o#?9dSqDnyapzE?IX z?V9QC@roJ3I z5ohd+G(LU%-9MbtpIn9`bH4ESxBuTb{|o|Y_T-~Z~{IrE!I>9uKXp`6IW*@&t@wzo;VhkQPFt|aWH<@o_6FqccL)Zxls?X~;-ZWk?=lYv! zO2oTe!~5DJ7=RmFH)y?6w2PLQKt^juuC8xY`@TEbnzH)_>D(Ksx;0VvD1T**2YO5J z+;cJgtS+i(-ZfpjK&&^odqX$)K{x2zu>##iA-0FIq(1GBzBO6hk3t2VJVIi!xC%)E z&s-3iocuBEh(h$5HCgm93q@QM((mj2T#$+wud{I8bX1Z ztlqd>VDh?0^7?vd+y1{duBV+KC5Vw7c5zMGW0ejrrkR{35#I*?Q9TC6liODc!9G?+ z)vkMR@rKG4JJRD}g2#N!_E~iFv9L2hkl22fhzT)9Kf5iui9hOY+*cp-i|*oJ*+`vz z99;afkFt#qQFsD<1bOCvpZt0pfH!Oegw-6d6Hx><0YbI$DaC2Zp`devG@7yV;R&f% z!WgL!A3<9n-XQ6L_VDwRj~|iwL)xo1)USVr^o8%B#*CgP^c+nEaB~ZH@575{a7@0b zSlV0eeJO*odR-|zIn7rm$)NTqNGpbFCw*?``Sqf zRA`skgb}q`<0T3)Ct}V!C48Y?C$FX2ziVqqRnJpbbeZk*rDO%w5KZ7A)kB*jGMG5S z(7<7HkdE1!pYHCKvU7=5HOy8Nn~-C)PD2RpplO|p=!IN&%k|g;Rd;U5dW~0#Mt2qV z;$%weqM~Yr;Z{uY7Kee5GStQ6I06TG&KOUI(Ijw^8*bz|1EY)al;n@rtP3Jy-`g6I z$Ur7(TsM=CTxlYF!V@ofVwOslgm|xf;iw|Su~3#AqsZQTcSs#RMGtrco9;gbl+Fq+GDx>8$ZshuX$ znDok(i7SoQTzJhBGs*)qU*i>zOazH6qI}XW{H(s>Lw)2@XSA79ENb9J4m^_^UU1^% zu^$7GL?jY8lDU(6l4PO=5(8s6k-`B%h#?VDCgijd6GW`Tr==jx#6{ZhNCC&r<%k?d zBaU1qT3L+Za=an9C`lcgNl_>Z;+uL2f;2VJg;OB9;u&p72*fIIS*)Ki6%$7EO}W31 z*19!lyaOm9xcFknHgmg{#UXhvrR+BT6&Dy(7!r-pBOVqj!DE$>^?GzX^D4N=E(&@*!Bhyt;PjpW{Zn86W1!c9 zJk3l`zmI?aox9~P^Xvcnd-y_({P0cWM|0%+^0ROGt95<@&B+t4Z^${2qL2;)`7lze zF#uCa>@r7wnMH*JIor{k9Wa z*RH&5`1_va-P%Tr>0j@TQRy}^-E&IuCS-rU+!f!SwN-lW`-bke5F-=F?vN(?m=ZU9 z$1EmxFzAnMDH5b%2a(vF2W#1h@goe`n$>yS`oMG@Oxp@mtvlo#6m~wFp`{BQ<^oH# zHK7!vQJ7;f_|&&Ka#m#H&U7RCc3o<7;Pu<+WCs_8b#YiLYOxgFtn2me5CbvCEgO4h z6zGi%*ahH5C6goY2%!LcmSZQ#yx)VFHimGfM5R8sDm(7{83ax^PxOTf< z=}nk*;QCwzZZ%__Ph?*(dW$mQt>%8V*cFV7?6PazbOMe9YpkTaMUMmzl@7_Nco9`E zkjW;>P~GJx>|C;Iwv2eBU8`Q0EnYh`3W}Wz_mm)6#TF}xsQdq8-aZ$Kwgr~gSKtoi z`1kxKUjHxtRer??IREb7&sQ7#NL={Q*!WeSx&O`|tL1E@DQV=a91fA^_XnQckKEi0 z+}J8FT zts%cC^IVyxN{rFw$uu)z5XN_@VPg}f*hk!Y`A_Z$K zhv+W(ETj|&h&lU{P->+V`wVG_jK|2~HgLL&Hs>7!<4t5ZSsX)lQa~3B^tiB<{5$JP zzqy_Z^I2IYqan&(Lo%9< z-OC8gn$;^6$mh#itvTOg&7zn>a-OY(}nr9PiEVH831Qdu+TjP4JTqiYpLa}{TD-d&Jxi+SYGGAeOtjt%qJi_G- zEEl*w!gTh?xXIqDlu8J2IKtte9B-822&a4D#it|heKv9bLFDd5;CNC}stlv8*TZ1_ z%^;052**Pr=Rgd?I408%FU77Y7EjWe(NpHdme-}2h%(+VgeVb0c@2{|~owA-0LPu~*WXLCu!!02sN~4(r9b!jcTKmGo@U-i`AUyB5UN)P5#^$=K9gY2>BSeeCc=a`Vaj9-n=_) z|1y95vp@BH=;3cckH3v+{NZ#B_gp}qT+n`u=qaJ6yrBi7N9_$_u^he8U%ZjmNfX`e z-(BFv8=vX|jjM|S7H|BC3p1*VEUx*Isb46B3HBi3a+g zCy$_**rFv5P6j!N5j#3|e8AljTaC-}Bv}-vDlo9d^ID87m&%pQrv>SBsxN50J zGAJ{`|Bt%EUL=A3J-@3JrFUZ;HORJpDxR|Ol&I4M~nke9?EaclxY z1R;b3d4Ygm0z{DoN+NN2Kqi7bkjROM3`P);kl+c42TLS4IF4h-PL-?Tx}4iS`}@{f zbB;0krSZ^OA7iXtJXTqpQ+sWF+TUfZImaBAerfIh|NU23o`7N|nK;;bt#1s|Xbz6t z9UR{O=(_J&?HWakBi@APy_{3J+0w81(%FBy69pD5a^rd|ihIMl9h%7f-Wgmxp0V>X zus7$$qca3MPg|1Hq1JmOM5r5IlHb28`+e01``GVcKfj$q&;>@Fno&$_Njbz%bXrID z`g8RC;|Spldhlrte$;eSrz6Rvd-{0BXLB^g8ufeBafdT<%+)h z7UWN1{uEih1@C?hz5N#2K85_A_U?(AK7zMj0=a|xkKl`6MZWqa!Z%;T2NUvfLcTB} zrwPs{yQovNbK5>cW9(zY$Q}WdbdSrDVV5Y@N+i!F%Q8+6$l#a_Yx!!xF^aP_=G?BPyYsg>3{P5 z&nM3x%&*Uh6~BjHe}O;x<6q_BD`)P0Vj%s*^z+~R&!$@?4ujDLLPe4qp12v7vXqrm zIwSXIcO+(XS<%&9vT4{eshe7k<0;Zwpx$iJA5P{VRKZ9Nnn0EVDydhl8!{xqG{HGK z#@F+?b0sX9_H?5xGqugO>4?#q2DzAXHAJh==ZYqGs!bz|!Gsg;29u8FkHHk6t)eAa zgGehnd(42NoV6-pj6T;lLU$JqUX=9Ro=k(~JO?Ze#TQG`-CWt;*BUs{7f#mjRGMMe zIvUCID9P0(+X2F5K<61|Vc^7hyeFQ{D3z2GXT1QCysk6~mk_90j8&k4voz3!Q8P_o z@D1%sMi8F#29kJY%nSBDJG_lO!71Q!=eE1A##cLZFpu3$tEe zHWq=YRf}!ThtV2&Jr}mMio`&zCLCznO4ufwtgE3QL)x-YhjAi!w1(0QAK4C*Q`@uN zI_j}G3e@sIJvL-Ck%kNrp&BAw4h_8&tT{Pg*X`kiXhkN_xgpgXd!fBRTJ=qH=d)|A zv|4CtzYvSoiK?_*DVUR}YOy@sb+txK6w>{L)7uZ2-+jtbo@ml&G_q8S|Io}MH=dnF z@~J%YoBE!K#1zi76!~6#=6gIldR~z%d>HQeQ0|E;3`9mTW%j_xAQ7byG?K(tB@<^u z4B5vDs6F7>>!c#xF#O!|Hfk`Ts(rU5P|q*e5`8ZqMGjyR6A>r7i#E1(UN}iR6W_c-`wFhAEwXXT^$?sjY;+aPo(~?)J#34j{d>C8O4K%&TB_#)22)Ve z1r;8}G4udMaV~DyJB)52w}>ExrI?5-#%)t5W8B6i+ssB6ZMmyuYg~AvImW#!+C^Zw zI<7DHnku+r){aMdbJ(rza&pw8HjlTNY!NoNYwaKZL;pnkKm2?DYGD0FLa*QBpPE19 zU;FnzpHctreaVHlao|fa@r4+9E3!cJ28QmKcN1MH!=y~F?iue!wBGDG4iRdlT^Cx- zejm8VVN1@ixviB-d3;80Gx2V;bwRaxQJWfy5-(;9*;MbvT+Av9LNCf#L(`g*x@D(B zvuC$pqNHp%1gTD&3T1Z$bjper6B^;sAKKhr?~TiY*pVsO_`=IgQ*Uf<5gpZBuDu~^ z&CJSo=2C1JS+mzZ#HOfHeL3MO|D2300G110E6l4kztRXrt-v2d zd39&|=5aDdd~QZXh{56`VqXp(jQA3E^5t<~+NT05uq$CLgb;}#nmDmGYT1igR`B-I z??fL;-Ck!$z}gsHOZCQ#$6%C3*2NnsPR{BPEUp8pTD_5X7`B@i?Bi}O(qnN$dhz~6 zio)hrw#H<~8^|W?mC=NDbtz6g*xfw6Id7yZcLEoW zN2`4uZ6dq8WXG)Ab*j!!NBz*FzIYD2&65c;6pM2`+JDwdo z`r~+-AVuZXgF%sA-NR`Rrlg!N!uda28@R;enwk{qvQB9yJ`?a zFgH~woAZCO?t8q6ZuAy!k`Bj{xqtR;T=m!0T8vB-qQ{^uaQ~H`mg{fE82BTvzR0`p z{ROTc{%QW&5BuEyU;kJ5r8)7RX5klrZ+z+PAN>1revgEP3_>mNd@U?%rR0S#e03pJ;%$f@!*?Mmn0&OkiwIUIQF{0X-=fxX}-n16kC})Ch^K-4jS{ktyh9qb( zVTB2n#YJC%s>TLG$M_xWO-l@OW@iQ35)%IVaY?oB*5m&*KHs8xxhi7w+{V)O1Cu#`h@L?^51l%w#o z&)@#u&4q;31q2FEOb{_mf#hqWBD=9bg+o)?L_jG8i-5|y6TW=xli2m_dn{{jl(*WW zy8If6lYY98R1R5d5~)rV1=*rJf=?pLY7rbE$i6Q&@)PDoXjTcxzd{heLwPAS>q%@0$QZ1g4N z;ZDV;cqCEV+zV#M2FZa0EA=wx>j=ts--E`ACZOX1g>mmx> zqzf;W3cKE0_XU}+Gi-bfTdk=ZD{3{iXq1G6PG?gWl6C4&qnZMUAr2&_b+H;!Q^U*42-@7Z4dv0oe< z_^Wtx`Vd{AUZcA-`+Es+@2_8jM=$iqTpuU~-H5l_9`JS`XvBlssk;s8p=qn~JDb`a zop?Tq9P}ks;waj1r?(v&FQXYMFFU#6GlGq95LRsYmb$6rwTmhSZ}N8mhp;*9yUyBT zCae*^iCu~}T`$q1DOO)2y}2`Y#_7Rw9Prv1ur^uA$2DchpOIwR$K$kVSIIr<%l zyhA3V(rbOhkn|ry{0L6>FnkP4HFC+TH*kLkuSO%o9O&&7HB!y10rIe4oBqsoaZ>bS zE`FZVp_bC)ZZ^7vnOVEHfPp>tHXcM6$zr>=df`zJ_5UlTr;|$tKZbbNvL1y_osJU@ z6s>Uho^W`*aG+*JkNfWLA%{hCf8Lv4zy9Y==-8fn|DJd3Q8&l#_$F9mi(N4i3r085 zE}UQ|oAl^m_H(Jxy9gZr4Muu9^>$DG2~d3g8`_?6Em&>zgN&xsYkM_>Op{@7Q( z#^ono@$ic$reD1L!jJ!na5Y!D9Gw@nu$Gl&Sy=MIl2^+02DgRSoX{Zdd}$S(-6>vh zhqy&)w49M4lHS}AUtMeywq$fEhWkH_NGWKyw#_T`RzMQ*?u<_6w9r1$CFflSSAMrf z)s?C%Lr9PkC9f8XH4f-`gohJ6xF}>C-L|RT0BXCd9igom&6O}&Lr8Nu)M(R&u?jJw z*A>M!(psubFezA+NHS&EHlI2=Q~=guj<@cnJF4D-SX0&~eM!-T7`1Qq0&+Q7+(a$} zBI)u#Jl&fcWL`ZNFCq<697u5>G@Eg=E|z0SBfHZqN^*_6Ww2HX3r0-1vM@_wp`j>6 zGlQ56W6_mLB}g>##kQ6#LvULCRTi766?L|IqrvVua! z+$*`Q6fc-X84eq7A;pn|2}qD&_}JF-=!2iqu;XGKJ-fX|uN}v*Ia?(N;cg(@pDd^H zc{O)qM>@>~eO}>eqz)PIe6bNxr9RKTISzZk{kCY<4INc-w)<8qwG}TVbZ6%77OXW> zG*f$SXM?))NP|G}T; z%hSjoOp%{L_z`XC1KZF#sj1qy)|%3CAukIp&xC1&7%0~p_4%24yPiLI7zV0akC9@%hte=)}XBDE!+Gr2SHUYh==a5)-4Xqhyj@M zVH~!Nr*!m!S4Op3ER#6Z>EI>Z-2R*B!GA`&fWnV_GbLLMn4cZCx-qDe0^I7Y2i4!n( zNAljR5|7qeA7^vB9uiABsiWpf$+|@@XqUO_uJ&cNlC`0)znxqmR87Ff0UH_lgxzMUofmD#y;WzHk5?L>1e6%a*gO^mq`z z5Uqk1k1#1Frl<>)8?@O3EAjP*5}sFqO9J^bf09rB#lOHOKdkfmKl88fOEvJvLgf!j z;K#o7>L>nKDbHxj9uH`1)z*}NQgb1M#%Z#7wUj~{5>dpk_O(%cZ<*K1viQ9!=3>rk zrfMVSm6AQ)p;XqjvF64+7nZfLER|(3K}E;zcZYdQaT9WyNMaw)TeE15R_vHNX`*d; z2*UGo=620CkG2CTBF4j5C)+*U`Z&II61$4+iy8y$X z!n$OO?@)}$&|IX@MI^Sp>f#zd2mblnM(OeU($C!(15GQrRCpnI*+m>C4C=99{akf2 zg`G?H<9Kb}C^}6WLriE5+?GnNZ4<@Ts!nSOCT^)lcv0_B4(*MvccqeqhwT zk#4rE7Q4?~5EH#QI*fsFio}>K3VgNt-ES+ib2h;Z#ZoX(P z5J<@;pw?`W+n2ufyoYU1(M?{`*Xf(6S9X&Yyg;Y*=TbL`iR`P0!}QkJ*JZ6o!_f7w zvfY!gQ!V5`RyqE=jgwBQ=$~tQ?z<>#r(lJcyk6JHd7;+4?{$C>BQZsPhJ~0;q%ipS z)$H?$9t4*C7z4NZoo}~FSy$fu$Un~ezw*E3^L_mf+ZgO3*{l|2II6@d5i|NIL+ZFP&A(GmROeZv+(99NxDCz730(WxU zvK153U^Si5$>4=O9_C1esA9sHeof2aI(0Ea!`%3|xCGtB6V02-y`ij!26pvpx(O2e z`?A;JQ*ZDelyd#&Dn@BJiP2PUvh^%B>7H6&K!PBPA7lK?y-@nS>NTi(grmqV$jM^F z3oqp8lWYG4yRQ|Gc{!Yu;%1yx(8r4847X|qrQ3V-`TK-vK*~z{-d{)7-+=eOg?{>5 zs4P~CSQW-Qc=J`{%Rh;H{4>bMKLc-n9A13{au4IhuGtvj1Dk|p6F?n=A)Q8}E{stp zyXfIL$#S^%2SG$Q2$b64*=@&Y75{VS_mJ#k!iJ$cieK1G+?^oR=@Omz5Dp@QO&}(} zlV0;eFLh91I{A5{>-HFt9+Pw^RlfL{BUz`97o!mF{f(Cc?WDg>k7Q1=N0kKK$u9j| z!~^Xk1s9U|vord0l4RSQNQ5vbl5Bk*Mim_hoaK>+_#g6b{n@|%`6T*-`Sm%m;`i*t zhHoV9{+W~<1CQzE5gMZ}zGkB=ieb8f zpheNpn>Flc%<2oV!HVf}0;Ys&LGI3`8U^(EN?TW2Egs9!9coI|mC_1CVY<@X4I>E?>tvHqD3CWfMJ4!ux`_@GCY`Wzox+IkBS}MqbfPS)XS~-9 zk4zV23HgGlNC)SoX{xfT+#f5+*uZPd;{(2 ziM+0a7QCtGpU?54O&g^aN-I>#<~~=HCdLF2EdC^G+18L%ixsv+ncKqC^TIuEIGrCD z>cYF_+bpciRBjYL;gR>Oe2+)oa|MKvK-L>e%bW;Yc*TjtL}Ea=*MV2zjuR6BVU#mN z7>!WkxXj=Sl_^~q;^5H~$;N?oCOig29;~YZNVW_`IXSVR>bBWYfauXO*;ZL{8lX6) zJ$MFbNJgvBhNO{DR_j~bort#^Wxdg!-V;Cgz=SfZb?G$rxPY)>j-81NYqk3$9-07z zO<+NDf<unvA8sMW|~{V-Y+J0s&3Kdx)Y9)kd>%D%EO=-0fLnI6%x-9lKMPD|sJ6UUp<|dz4O4i*3 zgY);>9yfRXUu(oQBay55sE$-I!`=`gjtgh4QM2^~f;RtJ1u2;Ba;oW<9zS_^H z!JN=Tw6#?9dc`RkoaJQG3zyMo6?b>SI4b8m(-RDX)$-!WvxP-$ej9@kq?R4G-J7sx z>hx&0;A2_u1_md>#3MRHc9GWsH>%p-^JM|XVp}4+m$_qrn?+b8qh%SHri-8L#+BH` zSVu%lj~w&{VYh6jU}PUjzE8QiYc3o_-A*KOVMce|+Zxh^7uE9KP0WKATCD=L$xSvC zeuI|Lx;TZc?G@N&E?9|PfeC_8P|YtQN;c7_(>(Ui*><6_-|r?qEhgZQ9>L-jEL~w; zyusSXTVVXrpNj3*-iz`RvG7-czxl&Br~kMA9KTQkeCMml(RF=tp^F+F zPZ}vI)7`-NVsTp`DYskZ_1n>Jl}bDbK?C!xl4~Zf)f)c6A_#(1rn?Ef6-us#)UQg; zCc-dEkTuCmUz!FxhH(f;vZjCW^=yiPVGPtVAi@j`O-SX}@l}%i?3&fiCZMX|Fy}8>(@#=+G-5lm!Gu=f?*3>OkJwnBV z68qfl&4@l^G~GoMA|`O|6b<#JL2O<}cRHsxFRR*DSkmC=M`={ycd6NfY7rTp3f~{3bGv zfm-ccS5>4K9WF&-oNO#_ZYWr2G=w2oyp1&h)##$yxH~7#=YhLBs|DaOXy=OwU`jSR zONc^iLJK>+M1_Ok!SAqIxBgVWS9_FRttJQ?oLsX}#dbNO$D!MNsV)YzR70V9y-vMB z*4OU4uHsOat87A^+H5=urcrV;Qy+s|FcjRR;rsdE;+Tn|i!V%Q9Z4}+ zory-ND@bJ+(k58j1(bmp)kwG~A|u0)5RGVFP_?iSaUrPf(lU}b$%!wXg>PIke-rrC z&v)EEgkSCcYsmSVr0|syz0*}u9}6}5+Op~vjjLsVH}R0QWfQ$yA<n2cI9n^^(I$*=1`R0Bus)-o z{x*{Ck?9SrD|(%+4l`a{SmEpZ@!sa$zCW0C7w1&JUsO#{(QB1`Ez+Cyi-{g2*=Mw- zx<{h)ClSO@mw zh%O+gyODC6o5G>gHTY*)Wq)3-z@1k+zKc=S?*!iXz3{0MFY2Lzp4Cjwxfg$Cc>HZx zp9v2m%-=;n`I|_1MAuJ^Mw8#d^Z*~dhHwYNEA;ZA(FD_Id$nOS0$Hi><^=a1Cvmn! zNCxbW?BiEA105+Caet=u z(XX$VxJ`W@q*eEbnSTGQ{+gZKatB<3{r-wkPPPamc8W$kicWyh`c0A>GFn}wstmO7 z4Wj%q|I_ui`0tK?>GO&72k+~1V#V*l*I(f8|CzVk{me%^{Ol{HuT6jNH-A}LM`1Ve z^OgDC6Lro68iF+%RVzg^jZ7dggoFekUuW9;D`sg*& zPy7h+3vV~71Eu*Q(KF~vv)}jN@a{VIu7lJ@uW-m{RSQv5=*eZItp&Yi!f8Z`qxn7l zKsNxzo;OazUK5b4+dv&s+8Zc6H+6F?dLHpcb8wMHZ{&{lv$_`AZK377bsxfzXxL_~ zyE=B&yyY<3yfti_#^8nHhB^ttoC{6agbX(Bo13J1O6sDSrZ5C+D$lyGawCW^xgcX( ze~M7G8d}w}ajQE7TB}=wt9gU0tcBVti>}PNQe0dSNq#hqK?Xud+v+z)8#+P|;t+lF z+=w9}DN!t}-3sYJb}ocd8>JWS#IxWy5aFlE8Y5-3tk+;p0%E(_^&MrqWi*;K`~8J$Mt<@N5g^-;XR>v00vV>0~xyZco8Llwfo zD$K?y-yH5%X|vB-n#B}t9jw*y*FFZjdRF@a@Yt#C3fL5lR1s`(WlbG-z6KMESdP3m ze`RlWNU+9EE6sKo9i{KhkG;F;B#y=lYif58YE#e2i99iI_x6F)n>XIHU#-}_RyPhi;i5Wv zxj9k7RsQM=adG#42$nrwiwP~t>U*fwdzq^m9jUlTU^Ulj2EkVEvB&nt*!o5skF7zo{B=o?HgAxkep$VT_j?!@2L3j0UxFPD;u zDtd#zCj@noe*YD=(<&RiKn~~N7-L}t?VTEd_pR}`2NmIVg~vw|U`TMJd6j*0c<2rv zVyU-+l^(&Mk89IYtYKrs!6+5y$(k#dJ7GE*)nalSei(!>1s5dC z3(83dMzILV9JieuvpL(N?9Ngbw``ZAixgCjQ{sVKaVT;THrm2Qy6I6s)*-dACngs% zYCkxef0eyDB>VbhBkP3219x<``RqUrY`dvt?slqNl2K?N~dfQ z1c+B9TZHoIw+Or^@*n@%KmWrS2l9*mF#n(=ev!a8zVzm2e|gPMw3=zHp`{YEavGGo zNtgyDBq+I&OJ!M$#V{q?L#Y=HgO6RgG}hWEMVVJ9#ae1LkAi=n_H9p$1SiT_L`d~(r9N*9AzD#0BokEBy3b27 z%0}Xd61HZr&GE7&2X=vzu!~V_D<;%pl%l@fZcS}oX+~@?aiY(Mu4z$>=7Y~c%>{-g zw)6da?MteiU=c*N`+nR=j`C+-AGxrHdUf0z<7P9xcUa8#$ZE!UPjml2HxYdFcQ3 zW3J7_sx^xfUSM4-WmU9A@~q6yN?wHZs?1N7T7Gnx zZe!`q1DcT{l948clW;l*BR-9dafCQ2r!%~M8~DPP6K_8>L1XadKui$(no%nunwVyq zf)Qz=5xauII0l9!o0&pu@1L1Kh-S~&7S-j(o?+;5HMSoX5qr*3u;&3`nX8G5q6N#h z1HZeI#B7KhOiKV>m61Ipd z*`k3Y*nI>$RjeMO2)4P=$E2S1ZsW=k1MmBXjp(YBmTBsQ$PhOHuY_p#E*8t&S|-Hg z^RZXvVj`u{=qyg~Xq!PJA|(GeAAb%@4-q)WFMs7$zxzFDXbRl!{|h|+hkyQumlE~+ z^6S6z?|zjpeBq}#o&SDX{ARpy3T~t!_Zos&!}~~ND40Y3+RP0-1-SSlnm5AzqJPQ?8IS(`~=_o zHNzQBcUBy@tw!ITyzY@*?J3>_Uz#0D7f)RM{_4$N-Op(kzH2v&byt2p)GZ4yV;No$ zM4Xm@i+_&MFkQ^iw?cjO6b?ccHDU!-EmEZ%CGYGp3mKe_4koi04_kYvK6{*rb`J3?c8&)eE zF35Nf!vhR&Alhmv`2Do{Gjnb5zQSX(Cz6JL@m z4b^?yw$@P5%zzV-e*`2(Lhts;xwU4gHqhdZfY}ad(d|;3TUyMD~T@0@5QIVH$SDC%dG!sFYdb?M>bY> z*yTpaojhLDl{DBd=X+~}_guu{L>kqiOT;JwUecmulP{`M zDk>{VG*N|zp(h#r_g17ChRKRF3MoZGidN|IJn1lwhQOTHtzg&D-T~Q28XQCyHWv!@ z{S8qiUM7oTd7iB(=IGFEzHdU%h8Crjg>uWp(?oi8PrI#@$E&%2yz{y#xw8D8rC8Klk99Z4y2E9p4NR9FU(-#Z*BR+Sx{GNXO+kb{{F3jJCO1b2$hHg2xPZ-0v>L*hEB*rlzXVBD}kx zwWA(_XFlqS+J`m9AF43~@VU#mGQdtbMHM(82J7OT)2P7>2COWWd=T=3u9eXy}=_lI$K-&j}5euoXsR*aZmEbfdsXOgn$yKj)F_Yg7s= zFlcQ~y)ePfCdz?LXt613s^^%;h?Zv8Hbi7RSramPu8NOW8(TyhqWgMLx_ZNlh32Gb zu8+_IX{Yy391&iN3B5u*xM|rRBwxR7f{>K%jfNWAwe1S-(`PH`cmf%s*cPNhiaSW)D#ouRuve1A{i+6!^-o|C@aC>;EMG z(GSzS{!ji3{PEoQdK~!TkA2~f`~%PP_cx+pKpBU~AdNvPDJbh)nXjuQa%B@VahSK~c4 zwO3?SmD(y*3n3(83>!5m97S)fQA?qDq*zQwIcTjByGHsXMlw+4a<(Xd5R@dwqSR(% zTtkqgl-UJf!9;(!$TbZ@$?iBS9xs#vm-`WIusmmL_N$UgBTa@gFS(%_N#0zGO_?Sa zjOn7xHQKu{#m8FvU%#Gq zZmNotyk(1^DYe>M(yWHis>QGNns}>?1(94TEjLR&s)6OXQ5I#Lg?1KVirgLx%gyJ=wfU4Lq!gJK zrQYl_*|a8v!PhyVp}~ZS_%lm1_}lpvym|<{ekXm0XoH3ezc)CiUyl z2pab59ZZNN7&T`&2U-gz&?${&Ru-*HQ(zhc!vI5)P0$liw0M1E2o5(=#vtDOhr9-s zMOi}QeDP<;uYHf`2u@=P&FeIs`sDP9pcb2}{@k}NknW<{9_@87Li9RHh?sD~*AQK( z+D#O4$g|s?YmY*aY9?kq%!S>78bTz6K#*i~RGL#KbTb!)zUHN%6ch8R8QX$Hr%yCD zI~NE_3{IeMQy1G($j3kzc3OR^nGi#wkG&OaJ}y0M}ns zuJRWs|K~sb`QHAA=IixGA9FtaA{u_0o7}N_WNfcLs#P5IByc}?jSE07H;?c$48`S;zbpg8HzPr=CHxG~0 zg0KV9SX}gRbD_s{i0bG+b0iw*K}2yBOf+?|!@*b;d8xYC1Q3U2XeVqOzdCJJ4vvP; z3Nr#PXi!@-Sbdz6ois_bb1!x8A2XSt!md>p#kdIL3_Ju_Mz{^ge6|8Xsc?IQr|+SU zi${An0xLFT`7W9t(cAao{cphSL&Dn!bodH7SUpxXy8;h5pFFamlM515@8i^J;+vNC zd!`cw;-03uMXB_2y||F(NHWlaqvJ@eC`UoXvEz84r(C-+D1cJ}w#M_--!B|Yv!O>l z8_7a%U956w(6_@e$S&^h>upAh5vSN(xiwz z)+eN0;qkYiy+iIlK%c*jKK`c1Kb#47A47VD)(GirH%K^HF6Z4F`|zFe9vngWda$UU zR~VHhd82+fid)n~QiI>5)dd!x7FZ+P1>_?^r+(gb7iS6po?{`JLl|9z;C-y~05NaWEnn6-D>^ zBd|pmN%~C8(2Ug+FD0@Ncl_0M{zpEBwb3C5@nbLkN69KS}N%@5XTW+EAx7#<|pL(2_cN6;X+CYZG}=-Yf7lK z(=98ydX{xUrLoo<;VR~QfAgC22d`0=DC!sqr;`;BhlmiZp%~nWk~2glKAe%#(A$c> zU(lK@A2?X!QHYM-^(N!GTO~K7v*=3|ojMA*)=kaZ)<$|bBSWOUzZvOah=%kZk}V|G zJ=%cUAiC4NE7S*bma8S%Ly4G)WS+xhuLquW2Jnf)>ba-KZ2*`#V)4BTX|&jDysuMoKHZz$28x7+q?-oDVSiWI2rhAf8jZcU(6bPO;$DIo97 z^x*GbmQ1}B;y5_*!1HC>N}5i@DX`3sX?Ww}S*8wImDcXe?LetDbW|qto zD~o3AYDRK7v!#BH ziP5p`9>Fpt6N0$1R+p8KqHPB9p=;>)a#fJx?;CFcwuP*RQL*-{u;maYt`I?Z4Y1r-uLf!OtT`(3; z6X!P{m>co&3b|00N?8h*yMdSjA(}&8E5ws9o=lXZ%`o%gn+6%IS*Y%;Pam8}xe}l9 z9$%An&slHgDvVPk-JOxw54+Prb;lrx3mhDmOE8YL=GCn8L6DeGysO$Xwp&N{dIq|f zBT~KCAu-rEah>fo&ZF^|dI848kVx3Zd26OO&j79d-0Ox2+z2qOf4}ZUTG_LTd-LCD z8atx5Q%m<^3VU=&?BCBJ!_~*VEr0${vI&L)>~2_#4AL#GwvP!eIJZV~avZiom@N7u zy8~0^-JH?WQF7lKj^6xkY&g#)E6>lE6Z&RO&M*Y#*+>Vi!4!q^);{OS5uV!cLa`5% z(d#NbXVMEno!Zbd(!1zF6e|XcN5jgVH{Zuq)g2Mt6%>LumktyTZI(B#vPT?Vm0Y!P+DGwid1x&CRi_Y|o~6=f9Ipw7c8Y*4{YXOt!3Bt2k_eX?IuCDw>yR~Yp4s{odT!YwsBSt3Ly2&0dc#nYS=N#y-MddrgU+Tk1JM8 zjGkFrwy}3(y!7065d){o05YLrLh$pcdo+`5;UX@0V#od?3F5imtgg^%hx3i^0k<1* zN4twvz_klWPCxzk$m4(TE(m|{^@TqOKU~6!5B~sh3Y-YsmG+Fb)gm^Cj7f-^83f8& zS?5A2YJ#|IM7>fPYiV4cVK@bb2_)KmcfL;ylUNgTGRj$5E7#}7e4Sb5#B|aFcHj0L zc~ui@G`PDrjjc6no(};Xj5?s+5S3(2`kWgf z*#KXQ-}~Ma9;ZkeBY8D(W7~);P<@f1&BbOY>slGd=rm>}IEl0Q0B2DivI(5FxF)}G zgO9Tty-uNt?6Jo^N(XC(ZVlSt()Vf=&lr<6FAsu@?zF76SxkbsFr$m-MQOoA^6E7M z6=h2H+%_s211%^aG^XTpzpoEkhA=?%`56J;2Mn1qsrX-eF`8PVE!|H(qlx(OK9 z;-b5X31YONlaVS?6_VloY)z+j&QmhllS*?@%DyfVfweRkBWber=(;qn&8Uqj+H02s zo37=k|s4V7r;vXir%4ASSd9CCt;7N>RhO1S#~#-yA*`~0>PE_EOZ zobTb`KJnp)Rz_N9MO!9fF+y#rEEE?W2Q(;iErfd)kFItO$1xxT>J6?-<2F~$W8~pg zB1qc>2BKyfXm#6{c42UBg_t6D_eMn$r&1x&;$yd)L-x5*jH1zLyR}wCm2q%!OtEtl zV(>N5q1VCb-`T6jaN3spPGbTdh8KWhv4-jfJo5pm6{HsbX@Bi}@ibFwOq z${r`QX?{g%n)g^d>D8Ye>$!_8V@xLA^cY>V??vhs(*qDgG_r3KtHt`_SVagSA{zZV zg$*96ZQ*ZJpCic_>ZyZQF1O)iz z^Xluq!*cVG|F}05JMp5EEh6yRn}fX}dW5wFZ_GzQ?m!dn@^^tnj{rFmI^d;<;YGB_ zE}W-{?aAtqCgCF0%HH%3);Qlq8~%bl)o)2hz0f!M<#1hY4P6&_e}(58JiUYGPhfuZP2nzLZ{PnelxJvA^99 zzlO(cq5fHCcHxhUHMi)A<^_~Rx5UI=xX~;o6e=zX>E51v5JD_&%6V{6hWNSe^cFEe z(2HnVZ|E!Ru^EHk7ulQe0sE}8zt0LhE>?i}c0le1!iQ(tcUJV1N4S0p^YV%w8b~8*oh^|DsnsKA%D1w|pUdt|K z>5)6_Ah75$FLke(Z3K(u%Ar^SAve(@LGJ)LNXVX!b z68B4#FEPe%pqC%zzwxU-#sB&nfBo~x^>bmx@5`_M6My0>Bj;C@^@B$EDE{2n|LCw< zQ8}cD&vTUPuNyG}Wu4u{T6c?<)D_u2KtoZ4e zM7o1su|>m_4o)v`n!Dp&{qxw*Hk;f-+Zs9IO;2^qxH4vsop@36bb`@(PJPM3Rj&8lCW)Wql&p2R*e=*p%%}vYGw?HK?YX; zyDZAhen((n@J(D4rN~0i#31P)AdOTl)<~90BvI9zfl-rhcr60Mmvx{Kk!V|7U(lu$ zAy_7-s%;XQ2zpAyQzX1k=(5r=o}F@`{hss&o4A{^m*b=g`FU}HaU$u(_ ztf8W6Ikws$UuQ4c*=nt6p@z)#`Zd!8<G2Xq&YDrIr2;u zp0B3T9md1zxgi=iC#h{%)MykTZqXpxBZE%K$T~gqU2(T^50W*fj-+I=qE6;u7m%3a zzM_K?#)#aF=n(AlyNlcM6dRP4FxoSswIahFF`zkHaZ5pDFuYivVK!1gr(SH$TlL72 z*qoAa$Zgk#w&23vI7HgRMELO6`KP}5b^f*g=<}KOcmHb@e&U??=4s^1<4528!{qM} z#z>ls=UB&RLc#z-w7EGXhVz}>gLNi~#agwSFyE9V7Vh3ABqs8^Vtd<5u&6CjcLykK zX&x1zHWsKA29yR-NN=n=-H1W#0YQb_kE`5zK#k9v6qA$4{B~%JD2^`#U4fHMeuqM zr?f*)SG;*{V#oga7Kx^Qp10iZL*hc;D~DiWg}PXTSC6LXmo3C#5j$O2(P076K4(9U zelHm=++3*I_C0uWVMo}6Cc2^SH=0J+<9nJ%lvuvI9Gti2__dsPYtSxUm{Nt@gr}Ri z;m5%uT|W6#dA`DY(>)?Xl;k87X@;X867E)o=?rP`c$#R9v=r_5hr#>ywtOWz#$1N( zx^e-Oi(X~e?|JRfEeXPykTH4l#^`S(7b@qr7rT1=N@tY!2Coy|q&V5b*IRn%#7I2a zO~NKR6PgvZT)b@;vO4WzrQMzose~!*Zr80Sav zSent6osi{`D&ph1xT2<63#u%FPV{%IP$68WK9MPONL>wHwFWDLn?(Z0EA5(RJ3UL>I8#)|Fwf zc%IY6L>6~%BJo+dEylgGD1m@PBL}plnc-~}uBC8WmDdl#^ z&!&5O{zKTsQMuS2KL)2wIMfX>x`O&M8q@A>6K}G10cVhXEKxC01lVIbh&4K`p4$BJ z2%BKfj>Td_#!)u$+^)%1syZPc3TyVU^)4B$LK{)U*F1hM1}i47UDzoQqme6Ww0S@p zq?6ec=G)9X7narMRFS@{r)1p(fwaI}lu?xslf^?-+b0id0`XECu?8DXs%~z-5MENK zTDAS^S}L{r85xayG>jIJV&WIsl22PO(&Z%41dC0{#cif49z$c-tCO3m3le28k$#W= z*!mYusl|mK(VOWWyIC4&3(Sjp+EJvc#h$csSnKIdEa`P^aT7-Mwe0BgZ&~deQN`B8 zEz+`byA|pZ$XAOPD=V}ilCPQdCM=KY&Gfy$SJmg+(TGq+4{WBD^Z7Q6FrJK15onyw zaCv2fidJFHfzl#FE2LPM9wPS=$*WS@NX;(r(@1NL6oVV2n#ItBYU{WdJnBUmr{HTO z;qkHZey%1OdL@jf071#6BCVPLGlkBI+V{Av5M$(gXTrMZ*nSZ+r%148#)xGB$!!;p zdL+tm9^KY$qP`?@b(DgZw#6iEQ+_8?_}m;F*KZL!dn~I7!W_ZNAf1#>=T$1iZ*xt&7aTo89_yF zZ1(-{q6d?skA36IX5aR@qwJf_PRHo)^(^L+kNZALhFy>#X-5LfV6h?E=?xq{)3K?# zi7Vt~)ZOvliitBcu*W$Zo#2OP4&tGi9(hUCI7Ualh$uNUhsA3reg78^K#h1f*GcT0 zBqJecuUGctPX_~O^K0{7;jvhZ#JoVwNUG+F2(Ju5C>hEP+7-Qi;*N_)pY%tlEBeXb zBHVw34jI7f-G5GLfi-1wFepL+nIeA*)(<_t}DHD2eu|ubTOn&}H@iDuFpYQkY;a=|%EnCEmiwKMgc_2!J!+mkjP9^CAf-Z!T{aKUdMw~9H z>FfTm8>5ZS zwil?T5sNJJ!6= zKADL@Tquw{ThvAo@dCvb1!7eswAFo}L5+h|+LjsmBK9Z+Qx0ZR?rpAD#|TS|2!k~x zb3>CNV}$W`aRq(D+H9r>$upm`RdwVnhz>^9P$4nVYNn_#s9_MJy3=j@H2p880G(-}S3l)n885wADRBXD_13|Tt=NmB>bh>imA+cCv0;zr zkq`-|38k0_DG6;^9CcnSLdYGmdsI)|7Biw@!<24fic&Cmy5! z47+fs3%%}6Fr{6TRn&{q#R@%BqUN?cPow3tYOZz+>f)@@j8bu1k<#oqsx_}AdYnk` zMt6*m{O4Dv_s~0hAhaQ(4-LLBGJMPrnVaPE4~cwO*7qbW)S4h$ z@huL6&sjpL&}3j7Cd;Q@ub|liesbHItMj9BIyb^7gi|0SLCzD}q9Ghdi_ZxON9zk= z@``zKr-2t(CAknvl`x4RmKCPgceXOG1#Ro*FzW!JKwiI58_;$tM8}c(rb1V>dozu; z930rAwR}7fZ(umT*#sHQ(RE%#F#3(`Fwho1WUIgjy(hd%tLyvU(nWm1*KNM}%k0rQxBSs`R(ubhc2KjE41##({N6WiN8F?@H??j{GwK3MwI+wy`oT{Ab%uE{;Ykcia@4m36I-PL#v}|$Np40uO{Nu$(KqCyGProA zxubm3C^~T?sWo~ny29P)#dm|jqQg|7E_RLM*_0Vln^EyZxA?4Z2~IH6Z7sg38T23` z(1@hbk>qWgx1~Eoi|%+0b%I>5IZ-;kwCYahT33ihhSNiZRD9mn>f$KrnaOOVjJ-PQ zR1ADB_okA#SVA>GvOSU3Y{g7zd%?ClQGDGc-ES||GhLHmU$vq2$tVfZ_QIeRRG+QD z)ZFeC!j{FNeK8}h;-T!d$*QOn7vPw1PC|0wcXa`YQ#A;TG z9JzdXB8?Wea2g`&8ss!Y&Mi`Ew6P^OZ;<<*M5e8wPYtBSwp-A-Nb!;o@*YF(JDx?UE(+;=B6xjg-|)QL~2S* zN{!~ek5RYit%ka%CD7JJNa~SN7K2cGrzF`}SWC0$6gQ6ah?D@fhX-mkl1`97ZM%p8 zRkDjRI#i%Fi|>jFzi;dubQ6U-iBvtlp=8^?wyNZ{(wcp5t2i;mZl>zwBK3I4=H-J{ zY!6H?q8C4gER@_>ui3;3*=QBI3c4Dl>iNBqRz%_U)L5>%&5L{Ez5icLggE-S_Nf7n z0vQsV&la;co{WI8-WqX?7BlkH_~cvg<*y~;xsm5eh)Rsngq$%rjl*b_Ndm(t&?2Q| zq*N+`j7H9=)r1CVh}=Kee)Ia=m~WY32pb8euW=+a1|map5@|7mmaV0VkzhEivvrSw zYpvPZ03i*DR)u9=sN!RtQ$>RKIyf3lEyiH=A{RCZ!O2Lnt>-wHYAp81*NU>|0Q9k@ z6UNxqn?h-g;-aH2o?X@CH_7WrQGx}lhCmF77!oO16lrZnY8@!lw%R=1jS~tQ?H-O| zu|P<$ZHzW*%{1*%vL-;;iQ^Vi+oN&Bv1X-IpMM*rtw>0Om_QRD1ZrKm4`2E5BELDG z&wTYV@WJOh@gMN7kH7R~K6vx9oTjhYgO1g;SE%n4dGBk(%L%zN(VMG;*j5yXfVouH7|U$=`3n(U^gt)Aw!h~&-e z^P#EQ-QPzNbv-n3`#3PM;~5W>i7mEql9%tj zQH`@1mg--UQBHL@sa9Fxk1P)#I}!GZQWincOAOV|q?~JQ(eJ z9%uCLB>2i?aUj9nGA@E}M5>cV4nn7_y%}klps$S{17c(^J&ZLyM#X<#yC9;|;Df(b z{fyYgMKfCVxE<;DzKb1ueNKCvOuxUnASvw6gvH1oga_OIb^AOLWUtp9#ZukiBnP2T z?<*Y%7VSW(>68t2(UV4y2ah3q*DQ`^Bj)H%*y#7Fyfkrauhj`3iJjQnjU&ThOzLq> zqrj-!_FPO$&mi38CSN4*qkM3A{rTkjxv=8*@z?DG;rzu0U%33@H-2f%hWtw@qE*Sa zg>+8b$vt7Q;?~2%D^5d%_komGRN*q*F`Y(p8F;fG4FhqS(0t*P?isTsK_3gkYKM+H7-K3}e=w z4bv-QvdE8VFb8>46Bft;=?yzREJmbMbEQ>p;!cAVKyE7u&#SkPH;40Sgn)>j z_b5mh(CiM;INIXowz#k=+M>o4(J~EI2zs7bG;=y#;1sFz>R8UOVf#s8iz4A3|h^oD$$-POw2)dn+CDik)^l@q<WF*ur-LPs%CNeSpP$Wr%(c2hKVM3=29 zb#CZ7d+|_VoZLk!XlJRPqme4AjZJobnj`iNn~u0E9vdqp1Y2N=pSP~oje^`KC;@$5 zY!lw9$17PuSpM@r_mA;^{D1!&5#C;?AN?x-tuK9p|K)FgKG*&())$fMP2hQ;#Dt?_FOgA}c{5ZZS6tXbiti|9o@ z@db;z^V%q3y-6fqXx~qzxu~rO->DT;B^1Mrsv2!&%S-QP*zfNiA7V`c^;9aqPs*-; zfnMx~T$&Lpy7^_4ErY%tHv4)cX?P#oGTN1xjBZq$iyM-YDxBEcn*^HIztN{y)xRh87HfY1jK0+mPnPNeZKQq zIG^EshSQ{^!JHFWmD3Q+{n|Bp-9@}Axowa2zRXRwhL$lPZze*vxpgBlB@;G@IPC_b zTIo0;UG(EfSS^m`kI@9Hx77q+sujq|Lojy*tL@VAv83Nb{?hm36;x=YBO|$~@ zt=jnGgYPf|PNztWCZNDYLm_zMQ+98Gc!ZJdaoxd+jnQ2gijVmn9UP+V54QLtaY~aI zAtNSRuS@VfrX0l2tqbsl9>AD9?qh${!X|bW-=Dq6QCHnXkq7l;aN%V0V!V--^o54X z$VuuBc_CL!XdpJmwra5&AvDgDIr_&*7*EPFLl~4i_1F(<=+_EElZ{XWkZL4Okg^p^ zb7(Yg3aCGx>Y|EuRgwpJ=9^M#W4;yA(5()FMzMO0m~du`$8v#O2tKz5o7dGT0h?H* z51%5op6rt?N~_jnm*@>^clmd-r^?|T@%%I0B45R)rc*FFji3MFESxVEZ+1Gv!$TwvM&VfJhG?J^VZOmM8QHUm zl3U&GGZRL^G!B#%mbrNy#l$!g#0u@9d1V5WN({=wE8%7Ea#ttPZ3DudNYB{B^G9Zl$v z>&#LYP#*_6t0Gy=OB9-Bnr5r<1Vz-y6io{uM6`)V68X9ooFtkz+7I|xE|pR1;2ul!qoAHVtej{FDo>kqtr#d&;-go)YeY`Q2sHe>~z1`|O< zGg*4Bjn~Kz$oT?%uiD`K5a1N87T#oc^Y^8ux-eN?2q@l|e%37_o4ZK(LL|I#7j^RT zRR*q#uDl>xZ1e(EYoLE5$R%#12<`C+@z5;o5g7H@4sq&j^q9oR?{vynKMz6osDS>t zx`-j{W{Hg$;cI!Vy>6fzm3JF#L|@heyuTq~SMclVjqTo$4Tr|<3zz6YOwm7o{~TS& z5&g6D_>?4jEJ^m)zqg)&K4Hz;PS$G8{YyjS4%SDI3#_y42l6}5 zy^8j4@q&zR(X}99wDGfn$OLVALF(Lu5WRmAyO8Br_Hdf%fxICVJ8zv-aXeA+@T-d} zqP`#*>0bz|PeL3|V}USjAZ zCx4Bq78}$K>#a_%>Gy3oh@9l`Jj{oCrCA*eK%b4iD<|1$CSB~14iP=upLLIgIY#pc zFQYRDtEu-G7&!{B8Wu^uk!9rNGaKx)htWhIt+|m*<;B*16O;jZRpczhw?Z30-|0@; zISNc7pK;zCB2I#ffXZPkKzDIPe>PlXAx&w|xBm*ZZGnt#NPBBx8G*&G%sT8SXZCu;RlPe0`#3 z%eif>QJOm?#F}rx3uvwEmeA&0>JS6LomfrPu#&3OTsD_#&r$C#OkBhu2t|tvhuik| zHLsLf36f}PaVtGCL|uS!qp(QjstZ?LEd~y_w#+A7`IbKN$jYS+6t!56D>qx;kVq=5 ztVALg9T;Try+)uoY%-82+K391ObF%#8suVY+9o8qFos61t5GpZW)Q=1TP}G-q!Gv9 zjr)L{M)W$H;AIfBWhX6IF|o}Vo)=rs49Q|S+>$I}&tRJur%8yBX-b3p3*pT@luW&v z+fk;;o`>$pP&FDv6l9o)uV16rC-i!y-o0An5K#%^U>Vi9*#E<> zc$IPRhLxg=Ey|^1^*nEu;!!C5KJ04j?kWv#vy))TTE38~n8QnOJgdSkf9Q#4n%7mMg<%aaL!VnB1T zd(ai>B5hMnYj?qP%e}kFB`ee!&6ze=!WiLlK~9rr01Bkh8kfsz&sA+U-v<|AVw-I+ z(G;cau9<3;a7jS!)F;CfhG5y@Jt|B^-1Qioq7hJ^e>*BsL=H%7kDlncn!ym(UBo9n zgPOx;E%>I;1*==eCvo4f9|RbLLnCL4D(M^B-64?ryLgd4xR5FaYoOF>mt5R%pFIL0 zOhR@_g$Sgis0KLM!4$3-!K}RycEl7Zyh4kV-)=MYt3U; zgiW{*f~^N?wzaDSqjMc&IRZjyO6=4Xb+>Fa+;@kcECza^7OyP^6Z90n8TvJ^Y`P;` zr}+1GEM*A$onw?WcbU)1x)`w{7c;h$>di9$^KCH-#j@J3?|ffrE}Ci2)~ur$N%TQX z_|V~S<7hRQAsT^Vh=#*Y!JOqE+Q`@hR79IShws=iolsVp1x^ zp&{pFvyADs5+89H*d0d(QmM#v3UG}i79kDJepTSWU%pYiv{dsNZz_>)_84uF{XXSAwxr` zw%5_Nlklpt=Na@9dvv;GwBC>k(pFp3^c)^QgU6BeeCLe@wmQ+EqIE^$x!bWeH=Omn z>sAOicefL|H0I_v_Fo@*12@zM%`Q44P=eC_Z2>wN8N|7HHp5AwXeF8uTm z`Ee1x_~!1LKmWWuQcAJQR2sPy9-lL>Mi>V*N~BW}h7d?&B94(Y7nZqDn=+G$L$JFd zo7?^!>PKV%$xQ-Zpxpxrb=_+dy3KC z`H%~M`P4QcwScK#Yh%u@M}SD z>f75`!najH>?l0`nIXvU5nr_xlZohGEZ z31^!cQLEP8h-VW(^k|S)T|n7|ch$&6R`L;U&t^EP#pY10PRaCprHeCawfU@;u3@wF z*)-Z~EjNqy%GXB8woYnADXWcf)e+dswQy~XoJ}CnkK0HTvWqLcev~UnX#^Ew6voja zLL?Xo^K^;~gN>y@nw6S@jS2I$@&28~eB9j$6QPDO5cu*~_~wsJd<{MqR{TJI{rRUqL>~WM2tUTE=TKdMP{kJWXJ8E0keP7n@SQM=s1nx%?#=y%6n0oxbZq0InN6z%U=_2T0#0r_Pd(O8= zR)q1_zcmy4bOlbvge#?*uwq%v*mrAi%@#XfZ*ct<`ssV*5|H*p{jL8G!(AcW1g4x$bkS6jU1)SVKJNx_WV_Ue)_~e%1cwkksQ+nJtts2M5hR!i4u}c z;MT56cqPbdqn>f|^BZ&{cW-K~V+=|cl_fv_J<3FyjnnaPY~irx>`_U@*0qvch+JVx zyk11VPL%%yQGf08y8q|Gir;r%Kgw6%zGC`lB786~T_}xKU33tH`aE-e_efc<2yp-E z11@hTLQF_5a6WOm+*50%w#;xc%UV#iiOC&dbzN*Ch{@cX>!E?65HDv~3akr~0zmlK>v%WYQAN-B*uJMkbZtrcswPoqVKbSJAE8b(vx zn?~wRaPSOh-3Rax%o#WK6{ktmf}EskSRlNQdbRBco-uEe5t zzpX433~hLliKMFw76%v2MS|>srinyUcd=lOKb7D#2jdo19EHeW!5LnmSGTan!BCs) zr;p^@Y)z3EFtDY4Msqtws#oZR*2$t*pC@bHoSH928>S?S=?SYHN zyuQVYs!p`%7C1q3F_h^2#PrdZU|nfXH){ljur({Bd46hgF;}je zP(uc9IMWb~W@t$!@f5Nb_Pl%M6qyji=D_UlWAut%IrRe0VC*wNECS_Lch#;oq^TW~ zt$H@0npR^ahGg+W>XeUmHNi;FU6-D-R@#ncBY1oYn+?1-eK#lH(qIsy_M~V+4Hp!3 z6>s>HzwoE{i~r95MhIWLXZ{NCS3jR|e|NtA#=p#0(|7oB4g8o2AB=Cl`n7S$h+dhW z7D{WJAMUu^-JzOkW!}(pVQ92l_A$^3ytP7dnHBm*U{CIY+&rJX!c8tr;Br*axBmP#;(!Im}XbEMn(?KLgeQE(cL7$G8F z+5y|>O-L6-f;(2U+tPgwXofe{Ed#M_1q+G6T;bwYk1^RiTdZ@g>tfD|BrpscJ<9}R zgWvwm8uQ5SXefA>-bEF06IrSkUW_iaH$AoE0h{cI{bSau)2dWttDtPS{pN(M$QFUp zUGS23vr!n>@^I6@<}l60>BGhMk_mEE#OeIa8$YeM(2_t9b$6x}$;1U-u}2#ecz&{| zl2T-gBaI6Tvo+cCVl|s-w4rrWYbLQ}#Y3!4sNfKj={ge=D;R+yMBP4*y5_bwti&_e z&0T6SC#{?2qZL4UexwhtyV)P3d9-HYkPbpglfG~k*gW5JDBYpkT}TINhBjM%Hm7rG z*;1u8V?^6&*hF_aRu$^1+iOYeG!LZ~TPrWCGS6z_nCi>iVj`AWg?X`S{rGH#ld{6& z6`pQ(?M`A;lbY?^J$pv7IcqKc<8*=)lxYyg!O0@xsXYmFy}dE{vGrmMQp(5s@Y*fB*HD1=@h3HuErCSH?6 z6c90X6_1HFwgPV0=@rMlfcQS5*1oXtXd=&IO39rj#|+o56uOyMuH}8q^0`CcC7yJP zO!A6PUHv_>4-VC$Ncs&fHcpAIc5ERz;NwX3aiJU02Bwtkbvp?}tLw}|caI5)H)-N0 zUVVWdg&$mD#sB!<E-HE)$$i$M}QwGoCC7(A}&?$yZo?(9&!ie3ZP zYav(Vd>UAm!g!jve{IolIcLHs45RRH8F>9LaXv?PgxfvUUkeSK$HWj5<2jIqgtkJi zh0+SOR@Vrcqr7C>8=X#P#xxjNN2^60wz@TSi|@mlXJ!b|rgASpx2hCXf{3H&h2l|3 zr8-H%sd6Wvs_)^v4ueJTF@_ZX69t;!DA+KpZ&DDR>?4*i(m#my@AS|KPcnwVys-2E?s zQk9T|I2utvscsN7aakb2FNQ z&wW~94rD)Y0wu2#s435V+u|L%gDkYw`{ZBs>%O($o<6bC0Y zr8Z><_I!^QIGq!B50Sf95Y$9T!w@*%N7mV%k8yyK8@FpCjwXPuSxG}=2o^)54HIlt zB_-R(mTF{%7>y89Jys}S{CndFYa;Jw3sWC)hN|82Lq-N=J*0zkYh3@=p(SqqA z5rP?1THV*GyS_q6Lm;k+TC2x}*jmu`48D$V8m%7aqag+-?p7Bj$e{-(yFt~TZ*f6S z)Wk53R`ck>D1{UQmmo$@Zx)s8lJjlu?82;|)vlY@9iw>Hqh*RN&~~Gcy6{281QNk( z2xj0qQCp@~t5GzXN7fnHMLjmHl!dC*$8I6YNEAbl2@5%|8zojLAR|c<#EJXyyd*{Mg4UKl9K36~6n=|NIX}4A<|Qum9QeAEu=L9Fc#3qCb+f4O{d6EVO$^0M^Wv*u@gNy(W0OC=GSsMoVzXp=r>4n zL4yk1?aq8F@*mJzs&JJ(dovtF6~}9u?c8hQC58Ov$9HjY%VN#`ZBN!P$HiI={fK{# z+03F+fluDUd^HjJy1+%@={Mo~e+y+sCnX zW78SNb1w{AQJ_rFPIiph?7J%Ldi)yF6AIv>h&0P z5>C{YG>INpQjA7Lv|1ap?$nvE`w(AWb7rh7GA6=#L`pH|%gvhk z>V-}L+B_p}=c{T>ns6G>6zzR!pc$h0CarD{Wq_IUSR^c1zgZ z{i5iScZ|6QODJOMP!Uv3H7`NXHKQ3Pel*)O6KPm9MDWnNrkO!3L$Z-+WTIFTzqn&0 zsTF*J3WdUokqR=Eg_%O5Xd?k92AZ|0n6QYDjvLKXDjo%b<+G};B!nc1qM1S^Nua7D z*d-uh#k*3g;qmK2o+~9+#v#!N8{%43sH%v%gURQ)teK{TNMZ;BqK0LxRF6e4fkdxc z*VZWRn#Cn4R;#XC^99t&75?v9Eh0oQc7(f~8+h!7QiF13<&l|p%&e*mI&#y@_w~w5 zA-P1P7+{i7Oe8aj-9IL>FcwHv!~ecYA2CU!)=ZE{(Mo2fwaUoI7)@xAwKASggfviZ zGZF{VkSNzHO)4=aT5IH|l@y{Cu~_Z7xJ;JYm>aq*p6TZEzQ?t6mziosn=kxUwR^cV zIE{!#E7C__$lO-ycis^`d7jt1ps_S=^o$TMVBjWEyQfQ!C6B(GfYBKt)S47pPbVN^3LaZ3=rV zLIg?4HZ*behBZ(FDi+6}31heq5gEmrzQILdvm#U4(1V(Ux)wqy?z)S+vUuz}@QyYFT;w17X^x|oHM?ux* zR_Q_uCp}0qi<;e&!JdtjHk@V;0JnIJwxjxjZ-i5_znfQED^%Z*k73_&B-t^ewtnZF_LuVsiWU9JnQzlcNC*L49M>g7@tr?)cf0bfGTyT;=%r;!DSnsnG zBPeL`JzIj1Z8+25*kmtko1nrzUv{EGh`X>NSHpXkrsQhG1M&XsIGDMj94J#s9BN$+XKo1|<1)h!Msl+}#E4 zE_Q|`ctnfu`G?WIFO6_I3vsl}c1aN#c7c+rqDwWAL~zlN`c-Sq?$OZcnf~wDsdIxd zTBI5qSE*KvYIUb#HB%PJ7>V)Zf~8)Bb-@N!bdwMvo)Ia#W6hgNA|AnmHG!nrysluv z@+gQzYYYcL;^5*e6UXk0p+m(c)Lm53D^tQImhA?Z3#c{DD8oZ~Y+7>+hfV(ende4T%pv zxc`Gce_bD`)tiW_w4kJ9P0-RwJRxv*KXCu%0fxZy(~UJ3h7@@9_MV(gjWnJHLW+!I zqU6T)Nh!7P;p>ry`w3cQxjB&uXl+G;xxdFWFpPqo(zcndQcRr2 ziM#WKTr;_3mUX2T+g}*Pp>5F~61w1_5raLWT0L3=rMO^MTOhBEd8ssQjAI~q^x3P| ziRlzcgKIFOQ;o!g0?{M%QZx}lZOybjUhK5!0HaORX72Ys-KJ>ck2T2mNvFq5#t=-* zscmzMs>f#3Tx`A{Y*OfZKxqeMg^wwE%nn!GMRmGI`lu`OQw*HkeZMZ1riBy*Y2gs* zXvZ9z3I3}$X0$RB6Q2h_kS)wl|;7 zjdZfEoO-iHq7ti6f|}4SK`o6K#G>i~v>3?2D5K(ZNL4dK1eB0WjFGd6F?v|&7JsF# zD^qddi@ED^4i>MV&F5a5_nQjU#T8bp7AHYjW4c!VzNYS=mhEz@la4GF!s#kLpBur! z&S;Cu^{UjRF${_2S(%?3E&E(u?KqCu`80XG2B$p@9h@Xv?3e^02B&#FlZe_>LYmb2$$TgHYEDO_{Hi_T0s+fn`?4p)y?pW3qGIs@?y&RP*{w zCc3qGHEdi{aWQFh`dLFv_>?TVMzs-=a+d!XQB3bkt2a&yCPc_p^4iqYoKs==mgRYVG^YLbes^i@TjmYY&y zNCT=$2m?brTTCC>#T>qOzyv}uD6LjnU7c79MGHeZlhVmVK4hn>s#W+}rnHe1@0iAb zw#zr_`fI;>$$b6O_k0~b7gqeheEpZc{S#>X<7oT`Y5LQt>Fbc2#~Xk~bLqFJXpzm8 zE@z;qyUIOZV{Im~m?J#6vppsgJIu`p10Q;v#6^&^k8d~7?*rdacrGR=9)mTTS8x8s zLzF@n@^%;XL5PQHB5qYvZ#CuJl$5R{y6y?yE?qt5f#Q{eb ze=k^bXjE^)7T2%k{XMjHvIqN~ryhPjzep>Ei=9KA1Kj+8E)mwrk%%)|X1HdHV_rSh zI7g$|(cpGNWQM^bl{v%t17sM`dWCr~5smM=xnrcEl zvKsfn{_fFfG%iZ8G2n3TXBS?a{keQrD?YUbCto*r5l5##Z?TeM-}60R&A##Pz2EoG z-5WsiIKRzEBRkQg*A#nHj0<)*(@i{zdUOZbH1D%@!d4#_yr!@{RAv9nx<%d`?!ztS zWPdg#Ic+ApkgQ*yZ5)s-hGY|c$!COEoo?NLJGgvVDDU9*YbKs>U-&kjgaP6`-$t&e~*~ko$j?+$rB8D5UjTi<* z3oMQHd?Us?Sj@34qh<9n4ag|)PHFQ(ZIyJIkhk~9n=|1&dcIuQ8z*WAQ4v9!i#mFa zaw(oe=L^s@SjId~x9INm(DC2y^zIach$TJ3T_7yV5OadsFnI&GM#`LQb@t zEq0(bd(Bd|BCX|owXQDPCNUW-vy0@8yxPzu+w~$q&4?N`1V;^4wea*vAYsMfAknte zL9B4A*4z(T85lfIGH;^cg+iea35XV|lNGEEQ$a?WDg%*|BzHJjmM4}>>D&s8n4!W} zs?%sqA+_%mzYdjZ4WKHU>8~}VO5QSCtt{T0Twx-MSyze{l*TBYE30*j&M}c<+t+gv zkf@ZFy-(&2CVySju1BHLq;5rdBR8A#xot-Qt7dMJ$v(-K5Q%c8waTJ1H)d|EG^r#N z&J5f!5LJjMCq|NlZ6J*#BT``IKU8_F?>NUV@G!ozdq68em8JztU7bjS-Glk@N{ERx z4Bp7eFhokp%=y_7)NraN#_425)aTo#)YP>SLbOKyCM~ynr_c!FKzjWEX*4=S18$4C zylX}0hMXdd10iQCP|PcQ|GGUpGI}oR?47b0k(Pa-5zy;GnIEAlaTt)H^lqqaHjdHh z=gF+fxp_2#=YfyT5?dSX@kU#-Q9@3m(_z#EO63N5K+e;qVAa-qT&N}#@dkDC&YtFC zu_({R^;2hPV6GnqD=ccRwuwSa01_LYBb1@L&lL z5<*zO1L6rDY$0RGk}V-*B#dNP#@NQyH+E%ZW<*v-ckeytp0oE}Yt8vJgNHG`xz-8s zLi!~$eV24}&)sLQZZ=;t#{d8O?;n^RULoNK=l5>Qw`(D2N7pCA;GY!<&Dq#iNS2Xt z*%X#$$nLyD_O}*q6FRyUqb?yxoPpWQ+G-6yoYrG%EJM;-Az~m0^iouivBBwV9qZst z#Ht?>R|e)FMwpY`-#Ivu$L1XMb%w~8N7!gbGG!NFTnQIKa5@E-&D=myZ=Wx?I5b?W z3qd~2(-b~Hh;LmBF}(0_42jdJWOLMBxn25)pTmA7T#$-UO_Um)fqlMcPhxNbf_M?d z;|~UKV>^sxWJU`iK^kI)Vw>7%~d~ z>Vgl<>`3v+KREPcBWjEUr-7vRT;A@k#o?YUZS2c0A_m+1UOpcIvKMcPJ8VTDG!sMs z)S}z#J)hwHlO5aVGln2{;e?2AS_99|)-+RJ9tL+=tG{-h#N$4MoRq`PrbCPWV53!- zJKX9p*@Z3BWNTCds4018HJdR9#sp~+^3ELB5(OrkyLFHl0!G72c3)`kPGS&47I!s{ zy^D#omQ65V2W0j8KHGYIS?y=utd}WUWn!qzf;BcY1RJYdvvp~RjuRa&MVA;%D5~9F zuLCD*u!Q}DB##nup_NELgH?o#B;}5Hl?#1h7B%Kn zgp{t7NH%9E4M~%C5Rh!`21Ghx zBRe<+A+QOO)T0!K_|f9B#9|AY@N{gHRmnN{p0HbFcx!~9>~}`P7^ZsNmKB!KAYvlE zE<(;8S}B+HfN7Crn{&3<=+O=yvT6{`UNI8;9CuWP> z$W>U+N;s+YJ64dUl-0xx@$a+@Fxl*clJdLofCUD&yV4fqAptf%76Ez_=YH?emAs;XS z$2>(2hsbVcQ8iN*QcNxwbGn<3m|BZ`Y28J*RSB_k|0)`VMf(PPQ&+BPF!9vL`4&uc zlcq@bYh;Sz1bLg|jK-rRu?UkGl@M$`k1vEUNSbYpF-S?WQRr;k5GOjRDz&S> zhu^CbFN1_%o7(Gz{wP+-vLPv;Y7vY!jzlx<2u45ctCOQ#Xy=FlE$SqoKnRVTXM!YB znCaO})e;Gpe; zkb$osf7l=2nZM5zev>4>ma4qglZm^;sR~-03f){Ru*2%nqYe}tXa96%xH)!f{vN#9 zeGl^eNcf&0FI=p-SS?UT9LHUN`^h3fx;IwAqd4T^tiGlv3}Hm``uZf+ybTwzBY1`JauFuG9QIh)Zhv@pdNPGqo+D=CLih{@l(++kIX!q!k*)No*lVLEYgSl7^J7hPb z&B&~L6ye6j5yiy|0+Nja#z{@=urw?9ln(C%-X!=Wny_k?3$fy)W(GXDz+n(1jxJPb zE=WmNkrZA};ow5$MeWa(5LG4@88sKBh@iXio>yd%#wJJ@w<_76%hlL1C=A_SZ}stR zCl>G7*~m_t03u!qP2Q`CMy9J6k?z9IaorA~rq?WqSNGRhFCvK`A9yN831V!Ew{hYC zoUbB2+m#?gt^{i1{>{4mjy`wJUzj;l=26#jlgMmidq0ml1IXU?V1ou5CL`;SWac2Z zJmgRK@}rkuPr6?VEB-U_c*Xwp#NB6s{L%cUzx$8nVugg|-Fwz$VfS#y!{IY_H-`HU z(efuLR(R~CLJzcc;r&1O5xd7{_Md(PA=96psih%m1A4gK!#txYTLV!9axe$^X+hKm zVm(*t+b7C-MW)PrcTd<)<{C@UHYMvyT~$=ZL)Y?tkJpF4R0<4^xQntz1r_JMWY&W zI5c`KTNl9!tJ9VZCtHqj^a0ZFzY?QiBE!ITC3B&VU~#u_4%eGTko^RcBHW_yPiUq2DB{JP8LALNBxxsUqaw^= z!5*r`2p0m8z*#H77#1vQ(HS$DMx#>LG5eeak!eDok5;&!O=d15(jr6?aJeW#yAbCc{d}e^XLI5w zr@?e3BqPxfBmGpYF}$0sI@wGJrMT)gC8P4p2XnDXFnh3B=8PDzEdKqQy;ib}S{1eX zyW8STy>Q0u-kLQ(dq;WmL})^|*&{Cwgk6UF3E5BRE?aSDt@P&wsST-Ej(NADk98?Q z9(E88#M>GD{E7a&S`2HBcFcTiktsPvz&9+_2?TL8tOGQqzB?J9AZPnd*@|QGPygwE zR{yoX@-KCGq1?RwDgT2{KjnY()30aWKltNs{~!6jyyvxc?pi0$VWzi2@15Pv9U__a zTv!)tpv088xxcq&^6^ZF2~r^J%yrj$_Xq{!S)ZOD-0azZ^ewb6^poB5GEZA$eT&p+ zXDgyMwK>m~avH{lz^=P6?~ua-?DpvC1X2-M(Bo>wkm+FmE&-OKW%_!!?>mf4%Mkf#`@riNPB0Sy?i~RjI|A72^Bck-8E*GPP9K zdH)Ef0`HG-cFM)woseVTcrv{pLAT4!QfWLMMj$6; zO2QPBn}aZC^*@$-OODolUQYHT)^Ee8?A5d4;?O!*pTLd>Q|T$^}>k+7c!OR30tIJb`L4TAT()pEOhoG6fSQ>XoactKqi0;k!*NlD1;U5ZVqWoQix{yv1m2 zc1<1s+BA*IM9iB^@zr;2pt{`Q6_jnlf&duK?_*RuNjt{hK`Vdix; zeI&{*N9Mh-mdf$m$T70pDf`1rN|~;mRw~D}A!1JH=HxzW)H#vLcLp&)o&!M>=cCc9 zmby}FCnXawuhsTAAy{01Irk&eWc%D!E9=^bDcGNQ!6J93*iCa}+D+aN?{w`Rfm}BV z(bo42zQa<8!RQWMUBD48_pS9WY>X)joK6ir82zGEWi6FfmECL&$=3Zw2BBoKX%qN;9xQ2JG6bkH}t+L}RoxA8RztqEzs?7GDQ zgrLMpoj8!#@8I;T9Ak5`kI)vStxB3amhj9)Kv)$`O6s;2P;d5#JNN5AHH&P~ZOf@5 z8YsnF|5~8!lzDIYRYvc)xag`26=Je;*Bf;4^^IH_8aAHwjWEz%WEi4s1SD~TN%yr@ zcfvufx>0(1X|xkuv0B~5`aS^SGQ#yUm_$^Ji0;>WHNvoP(1lst|$2coD6 zERxkDc2gi`p%lA^V}$eB=8yf}qPj!_dCt`4M2&9i|eGdhJ9Bgc#^uDYa9Yl3cVHq**dSx3z@r<-Kvz zjm8p!-7~FqQjWZSJyX_3@6`k^zU~{(kD?x@5u8Tj@jN+gLfU~QLKI>>vDS7GU(|)(lsG4H+*6vxNcNxvQCeGx z?0`g$yHPg0xxHihdT0JeAD`534sx^JUM!ZM??9 zV>tI+z{u?19dF!6r%aDn3iJa(h76)c)3Lnw*VT(SQLmbd=NKs zEdsIgwB>SMQ!z#a!J^lTmyM30i(Z<=L%5KGI~itMjO->CeKZqFoSvY(hkOgk#TTrQ zI+FKhI(+^a`uGUb3*>HR`?2?5dIb8deU8~xF)=_{x9DOk7!0R~Kns^^1TJLW#RUM} zNx=hknXbqoeW+*s@70g-&qcLREfzw?-^cZ-gW&4Fd%6Po?Y`FFd%$4FY*BcLQ7)c+3Ou_njqwf&1Mn(mv5^qrHFP z+$u5&yN3tDVTV3FA-hDLGIE4=F0|#D^G_h$>`0TlG_azmwuZcWrY(hfu7=OMI}q+} z;bw+)L7z|P(~-U$DfI|lsOu9U?wKabJPrh!1mZk7N;8u3L`+uE6&2cfAr91V>D1$s zspln8&S%g@y19iZ6JOsV`%Hg2!OcYc^bUD-XAarNC$tIT_Ct+^`;?rJ+Uci?uAULr zl)ieg7bS*>7At%)B_w4+>u6a`=&;{g6II={4m=Zw)eYL{sZg zaw^N5VHc5N?vu8hi8Ue9>>{Ct5J(<^l>h+%07*naRITB$xZ`sd(X)w-Najvbk5G`= zQR1cBg_JDnNRrcW5bGe;VvU*IjLgAvcDvJQ+$jra7Q&|wgpXe#`yKklBeLJa-5xnu zvsGs?3}Z^RmORbKaW!F8YaXqT&{MUd-&&9-baR}*dNaKtA_iY+O_K2UEb`tIx5_dnfZ*LWG=g#_+`5T|)Y`q`*RBE%eM zH8AgXQMG`!+ zr@I@fyA!$;!<~0EQN>s9l(o7zBm|yU<^3}}oz){#gndii^sE=OxNs3uL}9X}AhRX( zF=t^vnT~MI_U}1C3`&kLWicAXm4?@1N??Bzm=9*0k!a^of>>iutScee^GmtT&mBd~ zhAw@iOxPS-AWTMO+FWUJC4^|0Fl&qneve29FnJ)Xp%gB+JKdf$#|t4r^-74Wmk5x4 z$zazM4P(1B+XGAq*+(m~dK?K+uH1Bv!Kl@!K&Vx%qg+T8Vc z1oe0s7lUlX4B6C6PTkY)LR0sRmm^vpjkXaoq+3L8y~C)`3K}p3n*#F(p20sd4~@Lc z!Y3%N?&n|rjnngcYU%C-cavmLLhqc8g`ka3Kfd8`h$z*mdKM88qfpjHsSCB6;DK6A zv?9XIZDtBWDQC{-Lhk`|Ww!*Db!E!A%G1wTM zSFz^#sZ-ZMr7?0)0Hf21P>Zb-QjR9_2uA)au^AyiU3}{kM6XIrfz~d9N4m}VMkdk= zg|paP5wYVLF;{-XzDKA^5dXQ1`AoO9;kFza)BrW%f*q57>1l1+SQ`tCF5yV{rdti% z8WWoi*u*vc3i7p0IV0N8ub0gPZN=SY`%pU(SxyT|KAtlX5vj`c|6gV6LDRuG`$Vtev-_NSV z7HJjMV)UnVRc`iy{oclqoIwwf^OLX~yOS&6_@o?8%H6%P-wD$m=G#mPFwcpU>|Qj` zsu6R_>J9v>^|I(y99Rgn-q6*A9JQIa0%_drlTm9np|MA_c8eJqKq{LSgVRIIZWCgs zb~W>AXQR?JCrXT3Rm#D|$+j+u2svjLEt+UGdMph=w>2^&W_Dbp0g~iPEC5EP6^%%P zWO;GaCnc$nLSoJnz3(XP?0zrZ)X7yBrZ}^kZfL!t!3F@8m9A%ENC=r}W?EK$VW<4c zzwlT1t$*Pk=6Ao|q5mO&yjZ@+bn_b|`35VA^JqAGqrYO}x+L_`>|3uz1iD2}vIF*F z$p7a6Z>muXel?=61%2FoE_N6uh2eIudTF$d&yj2&qbqQ_j3*=) zsw5K@YPzZ)$VJd0xLD!IBgS{KMTBheo&9NC{Kai)tk%I`Bg?!9?lY(uYVgo^nF%01L)%NnT9roO2wXrtE? zJU_zujD(J?Z(&)`r=OasZl@?OU_Dwlz5560er<^7P*#l25u=%DN{43`(^q*l5&t8v!>!c}+H;26wB2K< ziynOc&(6n~YoV3ug$NRCtfF{4OB54dg{$kgTZGRr)bv#@C-(^>qwYYjqdA6anuP5HGg%$r9IEd>mqb~)09pOHJ}|4<3!(s2|OB3ag(PAn- z3E3Rzs|gllpmv&CW4Tx8t7Fl3j_f;HrflsnU0B$*_=;N-B*bV1q!bCG$gH-IQ}qT( z>s!^|$QC}*Hsd&J3dk-xHoRNIw=}e-Et-Jy3QrAP>Lp?Xk1U7+!=+q0ti=`_Iitam zr?t>pA&P7=hs;dVg{Z}&J&fdG>kShrOeCsSBUxaZ&?qJ~IO@W}LLwnFo+%U(CzJ)@ zfg7Uf^1PLEAyWkBSVSV_;um(3gyl)E6p9C0G|ucjP^6FV?|91U0t!J18kr;mRv>I@ z{E4E4C;C zYq#i=qM4bQUD%<$vGz_1*&S&npz5l`kjeWy;>RzDw>R{4r5%f}+r>8@0j(=iqct~z zHyOny^OSB;N$Atbl(hqWub{`}qVg^UaxjWR4sa|+Ur&Th zo5!W15|GIYvvD+vF$zvE^im0jJ>li8RVb_P1Q*YytkpKfxxgV2b`i224?Pw1T%dUz zNEZ6ipj1cNdc(Fh8%IjrxVpOdP9YkDO@e2sRTmHqw@b84`psHiFG#@vd+2-U_Xno? zuV>%?l#hiM()dV~+ub+*kv|u-u|B;gXeGsn=z_LJt43xDs`T@TTAo2G>uQC<<_KhU z=Tmpg@!^v@(!8U*e*@(S=>_SH<_!$Fa%m2_PjKfyD)iE=DPFu8R61dIhTM>-=yG;v zcH5d~`naNXg~uZ@2f`dZf+H9e%A4;hCaSVkz7r?(s&hL!+3nKcuv~_|DZT}B6l!-I ze>Xae6&;e3m#(5SM!|7Z*avYcMUNZkPI$S9KQ`eB_*y|W?4J&I?8va}m~d;v4h_U{ zcQ@TwTcj(bf>)7k|K~H@5Yl&VP;*VA^2j5xV)Pc zk;J+j2{ey@7J6h%k#%|FINPKs~X=( zS-Uo~=v73gUKJO+XM|K`%Pep0^8D6pRn^+%oNs&TLE;E5P!*`vu-d0n=lKL*Jqb@| z6B0~WC=HH_vaI%fg0g}6Ba}r{Jd4hy8PbQ$4lUn>oHj%~ThM^FZ6r5a< z-T31%AQllI>~^p}_z z>bM zLOEwoYdN`)Z-TJ*fuMleJfy{|nzFZIc`Io6=C4Wo(chr+A`74XQJd2LNB>)XnMc0c zGoJwuMHkjnVJVeT8`3*d4oo>RqddHrn5V@3Z9@CXx-_OK5^^Rk70J-ah*;yh(K#J$ z9-DI}CXm+Xt!+*ArqIugZ&XSR2xYf_b(^z?-C(& z&L>;^)uyys3EAR-v_oyy7`!=5%yXtUiwnzBWSS;QQ(CV^Xh^=^7$UQ15d^JR!ygSC zPj;`|>?1krHve_8waKUk9h9N)*KEHcJv(cA^*kg;Z?6hh`j_xXe5g`>^1TxH{f;F0(*TR{E))c8q zkHQ=U%|c6!nqa@T7?rYEgoC=!plzZE8%OdK2oecu&s(Hh%;tz%Yq|lohOVl&(WJc? z?o8MKhufL^7dJ$N+HDUVcOG|H?4=&>O9F zzqg_K{sa+%Ltn!%)@=8q+J4+|Vqv&4ugGH~3U}1+BnYWDn*y=*jduHa_q|3)f%|(4 zAz$li*PJTRYfd`W^dt6(N^jBXvQ)GMLdx9S+;Lt4YdM+#MC6KcnIHRNXb-EI3iI{NXNlhS=B62^@0mzMCi>gM}ST8~(Srq+If%g?YospMelUiJpAXRrmwQQ7340Trs9;emLjWb0 zsGHv5^p&zkTa#LZ%9UX3`raPG?mcj$+h^A!msq0)dMo4?g5JRTUeWh1_`dP2xvx#T znn;ymMxS)Ba);VtYLA4ENby_z_kZ#|{`a5#_SX~e*TRZFwvQY3hh)R$T|i;CjagI3l1+{TNCDNxO~o?^6tdazOeX)wBzN&y=_!Kf164dCFYX}=k|OaUT=Y{(A87V8%bU;!@cA0Q9!7B8Sk%xmd6weDGN5aQ1E&KDUBjKw;kYwsN z>Bue{*&+LTh$SO(a7SE1qFRG9nzLT!?*w#BYE!cu}=Hg1 zjYe?~m=|f17^z~2AykyA4aJ&ERjPd(#ia_v73q1QbdNT%*R}by4(@{s3!4`SgihrR z&wMUN&RU6_=@FhoBpQ)I*k~1d|JfvwTs$)3U~KUj37U{&Mf=ekSHZ+N5(tOM8u;gewiCT| zLI}ipwtGSqx!GISrc}pcd)8a6Y#YLLG4<}<0bbl%;WN7HymeU3b)~%{JzGC^`xXzqSak&c0inhfXa$&kSNfhK<;7*aOPzti2E#IAP_g;*UnvD~q?&ppit7wVG zf{2k{%p<)izSU!qh@Nj>K;N8fT+xxkE=cml`&yCRge)ChnyGh2$glU4U#sPCZ}+K?jpJt6NmXC&aMUVq+Ojm<+gLY z`+D~MgFpWM|AAke7QU(Q5yBK>M#SzR`kD0%%c+^Z#R)F+l(>62lTx5AjyzWN#(^!O zM}r~HiTy4^c}G~xCEQyxp~P~@=ZhZ8m?uGY!3&~BZql<0**(ppHHhgc4tX7zmaH;fHL*+uS&5wn; zJI$tV1fENW_DX>-y2XlZ$u2Q84*A}VU}22r!wI*P~0TnQ1nH$zT~kb<(m z-ShI>zs7EV%TIs%?{Rwmg57LQ@3IyX`5~M8FnG#Z8+*}U4L1|8h`D9chtyQl>&SLG z`xVOl=K%_OC7#$wuzd(d+%$0I$QqgL88aU1v1O|pmsxoi(S$ti1BG`%2or(5q6V~dJgjrkN+@} zkBFKnD47r=__u zBqr<|o!rIc-qi*iM5V5oGQ^3yIcLABcb;U`a5FNBG$&o=?rRS`tH3%l{S55|3z zyvX7w8Jyy@vw~qgBI;BgU$e_l%!qs#ALIF}($(FgE~*~QM(sXzN1$4hEQ|%kxUmce zZtm8;jc;}x3{;JLa3QNU6JJbsW*2NnsOO7{NYsSWqaY;Rj_FVy)#ga)8;A$XP+p(x z{Ujm1pxyDiZDZ})&x4xlN+%@EMkWhbEQy}XQp30@SG4m|ly8R2ue|>^_|^Nr%-{W^ zGOz#m4c~rU`Ni8iUVr@Z`+xT7`3vfLMoVK3!re{eW-r{{29gMI4s@-Y*TqCoIg+M8 z6LYECa?j?Hr@FF~Mo592BicL1QzHiD{yviqwk%(kMp^zNX=yw?HD0|Ca_(jb^ya&n|81_A=FFTEhuviN5a!Ug=5ZyaK=wJY zd-2i;1ZrBP-h9_&H^AFBhWeks8JQ**`RheYAt92I?NeLrmo@hgC3%a!HQNgaMlu>x zsyWU#8Prytv<9^`!Ur91#BAvY71L{o%4HoT7j>CW;np&4t<9i z8&SF!kn2TU5w67%E{y4H=7>=N&^ClE9s!|F_h=^2kcjkOtO(fIRmsp-tk8Hgedr#R??Lrb_3MLe3_9p~e3))Ij z2(xV2>3Oy}y9fNULtRX4T3t}QpCdh+$bXQjRFr8FZf`QXIf0r8;`F>)nr*TBD8#`2 zCK4y1R%M#u{x0xvADAbL9XX#mXY5+s?ZXzy)7_I(U5sM%SRuqnN2#mbb4VcP%+1Yw z73b4AQEAn|ph! zzV0@GLHz=(Uw2@N0qU)PcCqx%2Y9l6i`7(R#+S!hSpMO!0^YwK~ zkRc9k1PN3MSvx5uZg#gs5elY;7mqr^qo1rtUXgw#=N&is1wkT}WvfR?>*ScpX{J}h zyrmGRt$Gh~A>>3(6SXa9b%C1{2+hPE2r08y<)Z?>@bwP;5BcMt`uD%hG~bcJ1Ii@* zYPN6^k8KD{7`AO>lDnHl?7!~n-vkB4o9{1yPkaqIVl|KtqA^(f?@oRhf_^P(aU$A~ z?@Y+I1Ke74h%Q`27^8uEbf7s$f)`;h?konF&+gj~9z~d9= zz3qd_6*iy-sFP74w74kLA`_XcpEHCtQZI%f!bMaeDp%j{QWM%l7zLv)RKL!XpYxN) z+JQh7T~Fxc{mI5yt?Tq!LtjgZanTo{rjd7bK~c~ z|J*%4>QT|hjXRHO*#Z9cI)oCF_q+yqLb?2Z06Dt2WxU6@E+@ZVO0Z*|^h z`HvcT;e*dAZp_$UUF*{op(Sw<@K!GO${1Jna*5^`bjx@pLWzED4AIdj_H0ETvEw=F zhH_=3UNCBW*Nd3sYAZ3e7rmG{hu~xh^|5yG-wRitEnJOfvsffj^lR5&qdzLO3)79o zwz^K$Vt|7IWokDO>$cuW7Sr2zwpR18=RgP_^J4l2@U^hwYhlG7-^ZE$Dw6IKd7l6L zpZLx2+<5-tOWwVCLobCX@0o6Qs6?j2f&IfhO$w(sZ|G|$l}=nL=i`aek2D&qoT%$U zL|E1*0*OPpr*h`J9K8u`?d^$~D1p+RDYbCsY?}mcl?y@_$hzYY@0suKNH;fz=ig73 zv3XoCS&I$o`E068teGNHrXjSYGUZGD`+&V(|c0xb;G3@Jf9*cf5LqU8Z1#m)_B}A(IJDLY^#w0Znm^rd=Vnw~+wa|^KB{NkT&ua3B5&4mc%o52&iZ-KNNbmrVzO5G<-5C#% zh;&uX2ouT9(-tj)%O0$7Vgw5zdaS-mMABo8_ znOSURDd};(W29jEA6W%v{%C6Kzx0VOc_a; zMltF|j`qF%n8-i%r~b13>wn{47Q#+hUL5&nzIEVV{r#_J;s5_1U%lbuyT~VdVNQW_ z42g35l5&1R%S!LcvW!gBA(jZlX-97jDZxpD-RKeOx*6*UqN=RNXWNvtg84Zl!{^b`)U~ob1()$Xv zYov$hxfM1BXmyc-Y?W6l%C=Eljn0O?gqrGzJn-F-_AA^$Fd~+U7jE2<_5rq&(d_l& zl&fPTL>qhDRZHZ8KXBJEtz8PZ>g0;i@gG94Fr0cH?kTshkz&`_JPYD)c{&^YVDyUm za2#9{8vHwi(Zo+eTrUCzyM`{>uJP2~Ov7rT;LJzg`-k}WyMGpW_>cJ6Z~c47`i|X{ zSxzVF`bewA8Y{J0b~YBBF&I~N`FWEpnyWBu4Hn0FU&nxW!(nT}TsaO#=K63pY-|MLXT2W`etjWS}A3^`%}E70)e|c>)Ra#loCJ%0{2*-5Y`z z(uV}KwQZ|jNWOBAY|bM**3b44x)mzLF|)o-@}h|}uC4F39v6@GQFE+rq^#DEU~yVT z#c*;4(aAY|yTvcj9=J<Z`*&aQUHGFTte86cn8`$7N%`?)oIzi0-! zT7+7KvKUHVTjlkACgzAnWqB^tB1lX~63V%AdS_&-{b3@{#>`I9n)0n%BW~VJ%)3lo z8ee{OVw%MSny7uoAgDGI-3hcYCgQZC(&$Zn9JNS}y+`bYDBC`CL=K2M_uqbXVv3R5 zn{*kI)ny)1HP|JJ-%D-{2!URe9*t@doLZw8^^k5&ef0u!@a}B) z@zyoXCP;Eog^Cc9Q43>ATd~%*`6ejoBM!wQ(8in-gVI%eE$3r>vAtXv0=Ur00Sb1m zvxMC-6?Kx*g-Q`(xT0IS=`~>IT_EQ~PLVlha-Lb&!g5}DasQgv zcdy7(qO3~P9Z51j`Qm5%{qqk%7w@YH;+blqx(Nd$T!g0tTT{n0rv2ce#o+E`CAuTB z*5-7sA*buxD z%Yx>lvFK|=yZ%i0ZDN$;Q{jACxV_EHd!s;&$eI}JJKDIU2$gA4R3p8&O&=Z8hRreo z84Za}gX@tHI<+s&*UqZ#qjHQ5siGSCvbnc&v%rmFU9f zg^^G)s4`nYUHMQHk*|L7s%Fp^7q0|?L)ZuvH=T4W`)w*e&Z9W|lBO~tMESJXZ zj8hn{{(T&?Q@0xKl+6^A61)eV7O(A&=#B)jnIPbboXhfPdzrr6++&7L`_CcKO z&-2OlEqQV@W`;DwF+n+Rlp)S%Ylzp$sS+-18HS0RoD%ALL3NS+xCX}pr|G3hKEx$M za8w1J3p}2@Z!^Ja^;=G7I6vF|ZQI+r17!IM*00RS`uN^sQXXM_kJKl-0OC8_GsWOd z`9T&=MynWtiW+SX825I39~X3egxu_BX>!`bWZ!q`ur40!+d)=~;9hs|$>ahiE)c{2R*nrMy~FE z7Yeoao#hPEEX+I8Hq{0_3YwsKZ$^eF{tP9Vb}H&pdqkDJfZ&X>Y4-SS9fM_=e?tWKJ_V zOf07pl!cHIp-nutuTbrznyA{SbZ!ne5ChBcWOI**1u*EI91f%qDE-7)7gjt^6(b5j z;GlOr+<%Mt(@zN5T__Ui&kL+G zdhIBMaDRimyhYDP|HdZS5eyIYAX9z2f}`2UPW85r3~fSnoDBE33JP3gquE=l8%Lc|j++f^98U$Q@bDBP&|B2K-n1aV={HTIQ2bU{Gd;wo(OtDE4WU$H8}hMygX(k^P^301nb zt?|@VJ$6KWzH2;krd(Mu1Maz;vJ zJ{`z;hLGvK5TYJA-+W+T(Srtmw3?)=VyC3snm@ z8A>!EhPH!l7zmIX%%zHKeRJAVnb0 zP`goHS~u*ojM#$#Fz`)~8tegj=k&Os1!6RG@E|JovyvuZ+DGDzAT*;*tix63y?KwY zl&gKeilKzVoRP`oyAx~;92SxeC;g--=ItK z2B$a{L|oVRrvzC{es1%$7f@?i5td&&Hb# zAz0(ya<$ch%r3rfEC`pd*)|fzU5ng;aBqc0$%M_luA@*FWQ+Q-%B(ewH6)l0gjVV6 zg7#u!(sXgZ6N0&MC4x*yoY8tj%kyP_pz01ZbwR_(REbWlNH#{*qwRCr*(g>qq9L1D zBJL51Xs;%caMh8>IH&4ki+}#fr+@Kd-m3}Yg2k~(&d>|0%NBb=*dbwWnvEDX<)Db# zcS{G04JrIA2tQcfv;6IUk#GF^KgW;%D9r0GUi0qeo~IDdx9@-F2b0`!_Cc%=4u^?(H>16=)XrLkQiOB0{m6c&><__3 zZ@R@WS<~5?i1QTr?2~(L_rhseSi2HZMAVy+81*N`&g+k6Uc8tQEw<01XDBS^0-J@tscvxKgV4?x>h>=E0@bF@`wT%>7YlI}5cx&8K zAtV!d1mC+{C5d(4I|t7)?=CTy5KOGPc8+T$COGUOF@{n9xFk?f0xJdl_S7 z4EO{6Jp^-C5mm_0Us|CzMic+HKBz#E*7_yp(o`R&hf<|>qy4c_f`ur7wVBXHn=&Oq z_CgOrt&QqUsNg+~)*2}bdA24(2)2G{)#5B#!}f!N1~n)OE}FBojrVr^xOx&9kH?kY z`N41V#g}jRGr#g*<(nUWpKpEktNi$9zr%OG_e+StPk#J+eD&^gYCQ7h?dKfVulVw- zpKt!W z3Z|Tya_0X2o`;(kyngu&UcUI4-~Zun^ZA!=_$UA3e~a(`;-5tno{vw2*!k-5NBrOa zo&PKR_U{owFdAdDxus{Zb=8%YcKiv^=06F7WQ+HR>2iJA=L3SRV@B+jEmfVg;Y|aj zlag>aWP)_gr|NN(UcQyiTnGBDTA`mgNa+B z3saWG)&@&a@?=qBy(zs5tpy`4MLSP9Dbtk5AsWF}g`rGl6kLp<=* zqEWiV4wtp(#OF>e0tD+uwu`jSk~8p;ntExfD<+^=a58{X%1++o8$yBQvacP@Kv8QFY5|`8wa>0f_+~~v3-psWsZF!x z-Uu;az``X4V-Z+~K%?1vgsb<@-uyg`Xj*Sz??GN%nxP*!+Yi9O=64;<$kDu9MofXP zm5{N#ww>Z|x1aR@qCj20Y6I(^XR%s|M37rx=TV-cND_Vj>2U&E^udTJ-C~H?$h#X% zQ@kPS&Uk5q_~+uvAwuaOd)X)*I!tSY%SLsab6*QtWVj2Z*DJ!u?y4z#^yiMoZqqA4 z4n`9=7I-QaBYxP!N8f-nprtUB_GeSCU?=K$g!5Mr&-R&1GipVBhm`lwp6!@CzC)9p1c}*2^se@a zGb*!Rj5CBg$S;tzXUiw)4UPWY2VOD-kKOj0qLfQ)N&xu^I45`rMsuI8L_W#S|H(xP zFFcB4h=i(LL$(#SeX%TFhug$EE`B&;-}|}2LpIXIEtjUh{G3oB15W~9G<*L~0(>Nw zD4gKpf#d>(^OXQduS5|Z-?0@&F8C=fnRjv#Zp9&@(93-|1R7Vg853V{*;tK!o|E1- zf!4JUW4!(lsre8oW1RA_NxR?gLulosTaprPh5fCtd;#T$exGk5UO(>d{oEyiy?>8n zqB3blpuN2llEAz7P#&S4Al{m=zdy09HEdfi6ovOsYJ$DYOAg_dn(yG_{nwN5*TRZF zmXH4>zw;meoBY`qnfz9%PyC0!`~R5!!k_p{p+~f=wC5w|r)NrOq-agT=jZn*%I+qk zdS*SJ&9xz&ri~mA2*P`PX6a{c;wx_UJC<_fxt^>5q%g%j^R!0@EM@iaBGSEqJOG-v z;RUb0`6o#)?-5qCHTt`07BKjQ*g-l;QD^ zkQX=R{&@3*Hb@`c(p#audnR;uVY%ax-U%;fq` zaQv!7X3KfrO_zqv#-i>Fu3^~ct=YM$DJ5)FA>3&~6j(a-&0EkwdU#=ub#c0c+9E<+ zC9Jg>K6r{S&Gwq5+wWovEo&wS>U0a%N_}@ko(r;8&!6^45dRJV6N8L~lyxVp@!P$a zCe9rR-c^g5-D0Zv#?5|_;W@aMk6wjXebMTmFnUK;ju4tZ7ineCunh@U1HVF zDv@1K5AC?D3xi`fExvkSQ%y9H2)Lat*ifJ81dl7(d>T5o z|C?B&xkyHRk)|F8GG@wAjH)yiOqg))l~s!q_f}dpxkmAO#5|K0r4qb4*VGsp&wW8j z>|AUTCAw?EzJDapR4FW5luA`w-0o%KRu1gMoHw@Ku1@W+NEY#XR(dc}1<)yIU%X@? zG*(V>MilmPAWX@c2Yp4gQ`Xh4lWFHDS+&B7uE-iFKYgU{6EP=3N@y*1U7yeN#|3e> zy9)Feh_?r1p3QNILb0ZpOy*owylIdkvWsYK^iv_kWN71c-NdIBdE)n0sn)ddf(jkl z=|p<@65c)1OCj9u>@{OFM`&FjBq!B`i_&~4)|qlFSNBYIJudXs7UwbA0$GkmqWd?o+aC%xFmTUK?7>F5SWpqrlNV&NNv`zm581T`g9`p z1amg2Q3YLnHMa|1d`L=? zS@;k3__*_vUF7$>^8MP-x}IG`u>)O*u@cqBr&=w%Xr3oTqQ~vPy66X))4g4q#8RNF zR^;3rOstrLHOa#P@+`!giz;872yvaFu@-l~x&U7T>>m>8lY1m%aWb?m|5~Qmy0=3B zx0svUL;zx$peZ3li{9Z3?PQzI6t}!Z72n88v<$%Rb5jWBcCO}z54Q=~1$&=tMNg4{ zwu(MiBTnRSDb8Gp&j&hOgEueL9EE77pBp@N!t7{CFKEb!UC@gQUAn(#zf{qQcUD&WJL(zWS+@v_I{xi?pL*5oZwgfdMQ!aE)Hdbso(sS8 zcm5XN_)~w6@BHWg8~nmw_$6NciGPAtp1HZ5c>Mf#iGTM$AOyI%yXW0ce~ULi{9DxL zH|*w2hyg7tF;=9lM6GB$B5k49^->J?^;{oL0vF5lHpG$U=I!d2Yxky&S_XR;`+nWs z))Im@$oyOcCsM?Kq?vhlV+J|UJ%Hf!<-ONL_ND!mPsuEnh(cSeCqvgtLH{p&JrL3L0 zcns`ehs+U;4K2lMUFz#!i^((bB#wX8ZLMWuEWHqHLUOu`7js63b;3nRz7|hDhKzht z?dbc3wp7C1&Wd_YyP~fq=5aBFsyN9)Ot4S|LPd?oYiqtiwu<3`b_oMJ8!lCru@P`F zum*Q|vJnrP(lZ~jePn2Pcxcl_|z|9gKlL=^zCBM`Z3je9NZdRLaCT4T|1%pqBH;!TcB zyB+gEEGnX^i5J9*l(pNqTsz#{%?O5klj1t|n#gN{W$rPUMt0omNgu zp*0g!#+(RZf`Q}7+|>JBB+bJ`-6^$G8?+W^O)avcSuwBHhOpZF6fX^ppu-r~i6QWC zpPdMyoAX_q9H>smNI809R^P;cL7*Z$ox8chf!kYKuk>a#0TfCp&?8gM=6=WA`ifc| zWz4-@jTj(C+%Tgi^LG_l`B3?`%)d|uU!0M(s3h+2GERH2MwafenrrC79U z%8?nR6=9*XELKR5$)mBP6O+)RjSbTrDC08$u{n7IHQHGat2KzyU3@pz8RCR9adX2@ zfBKfc_SgRd{@kzqm-*&r-{bq={Y`%H+rME=YRP=#)t@n1hOE4O_c_b@o;Qy_;r;Sc ze)`1^cs{BC-(E6 z6a#tAq>$L{ZU`|FvqeFKC`@tY)$7+h+`r_um38Kj|>0U zpZ?1{+Ws8oJ$Q zt()j5r@*|AOp^;3Qs3(3N$gz2DG)Oak*zXgf)gxxiAkbyfgAxEjH$LGeM=8js8(q8U^jm*YhR_)25_o z<7lbtMI@q$7=u%+oZcq3R_N8vX{n7V!+zd#T8$jkS|@~P@7t6XI2m{MG+w z?WE-`pZs_JC4S*w{_pY+zTU0>VSIe?8*uvalpA*6LRfF zrnrspX|f4tao2Ml!i#PVa*Y@Fdczv9FTA1O+*Lj>_2Yd`YE9Wgv_|X6_gsS>Q1nA& z;t+zM_P({5xcb)D@X4F13QS^#n;6Hz|wYv;g`!tN|J`iMo-$A$(f9)Z5XcvvOhO6eSZ|5a>qk6i0-a%I! z-&KbjU**zlZXngq%ZRbi;Y4>4#yTAHR|S#X_-jFgoi9LF|L^V9H9Dd^ z7r&pIomMSYpVvW%oPO>eQ!(oCLqxt|q6)2SMyySUF~kYSD^keO@15!D-V0`+(qdmp zGZ#?-9-T2d%jc_cYZF_z*yj5E^{N{^?$vamQ%JwM|Awh1UPM`2QD#J!hCfH% z{a6Xd0vYn%4rvXJh4$5%c3cSBDYe1vj;VRx@_8XV+*w0(Im23QGg%9IZuIj?xZ4q4 z-y!=%e_YUVqSubh8OdU}^3e?8lIt!3YX*(#H119hj{42<(sl7gnM~PKgsUmlWzOba z^hSJD z!;mOYw6SQVT0$fZrHSz;8jULUn>}<|s7z`?33Kjt&rFZjGumXrVuAw4mm<2+*P5S8 z6%#OYtsA=C_!9a-e2CG+)a4GI>ADrhgS(Q{qeGl*5zINa zY~m4%(uiqiNX=@9*04!RI-N$P(6n=tUvl^Hw}|s>ShKSdtC*WqqR~!D0a03AT|*#< zRzjX_abH$g3;O%Borx7BN82pA@>qgl zjp>T0uh?9LDw_&k%uT*FE1KNhm>}vf+ZgfH6Z(9%>tPp6Xt7I9eyQlw+3xe38JQFM zenC%WZx(z*t779<38)rZ*so_)7j!3teL@bCH=$Q+YCC#Br-1CEkz}lk0jr>=W{t6> zBXc4Iix<+R8F5C<4WLQvxL~m&%n7;Kqd~1`e_9B7vc^Ub!frBU{L;;hq$U)hE7A;| z=VhqesYwa_8~pD+|9S@ggFXHW|8suuH~**nT26$VY^fhzTu@Gx*87Go>`u<^W6*f_a8$So<9Hk{PgqR=d?W06nY4o18Qh- z#QXJwrj>$_qgY8MJ7CCNvLiAjMsZDnxlK)PAnbOq-@$Gkm!E9ztJb}4}NWcrOGDYH)k=@Sk#pYQcey_!VXhWB7;=<_B zL4zjLMy!dg{bcI`b0KI9(Uh-0j7ZbAlOnxBTaB2JXGC`wYR(Yvdh<+VSYBougM(K) zL%Om`Tg6qvbvUzAgSd(Wx!UJQFyfyHE()3sNSu-B0QHP&@pyni1j$HgHrDp;L>@)N z)>;;)WcvtL*j%y%L?P{*0FXW$F9OpJdaXuB3J}%Y((?}9Jua-RAiy&m8ueAzo#3ijx7>Xu3kDH~-DTE@{ zT&8&xlm|6#QCJt!R#_XWN}eJKClQ5V1QbHZl%~X_8&O8=k|hSARAKEE>5x+*reO2i zY7rxOa^Ztqp$c5M-`vG6hTYg=s??R^CY;cVmQu|@)&um`DWy@Ini)d0{okNXBq3D0 zcBaY3vsNo92#5WMe>4FPr87+y0TZfPijaSYm~|6IDHc;!N3+L=3JDOLlr;*<0~!*e zkf%VG%1?g!5BTvfJ-+A5uYShg|DC_fPk;I&sLI{_J-_(v z@A7c}k{A;yCw9{ zAhDnCw);3p;zvLJeg2c*{*QV0{v8A%&Vf*D#~qukxnwlEoStCECm2D|qt%jwgH)WE zIZ~)5Vctcion6bVnBXTTHyTADJ8jCSo6tozv2(=gH8~5dHkM;2&z+Er{LsaO3^4^n zZ7de`*qh#HVmyC|N{V8-`a0tHlv*tUWHVW(K&)2VQ0>ff;`U}@&XLo(aaxULG)>7& z(Q9?8Mx-qs`BR-B)`mevHzClJ0@DeLyIkDd3A%DflygIF|K zRgTY5L~5_3 zEQZz=6Mq#gP+^)TLWoA66tkP&G9a$3OFL z{R-{rAEVs-Npg%a**UlUL7)fmzO6gOpPM&Z&0J|4!DxHt(k~6U=G2Pno4~i->dc1# zuLAOLp* z2%AUqHTxPq>Lpr1TzGORPLFKzOO0|YmD56fVtn6{PRstAM^c!tw0uD37GrCy({JwGM9Gq462* z&sH}IEA%tOj;Pmm1{$&+AuKL#NvH&L>WBtHoY9oM=0BR+)gu#qQtizO8OirLZMDUX zX6W(KV0St%%>_N@qX{QsgxD=sLzcm5aFQ z==aGUiw??ms(I|_$&cd{On@X;f`uKI`rG2?arW2n2w;tR5m%^vCTZS(8~5otj=9wf+feRhkRI)FX{R(UUcjL$sf(3pND5 z)C5w8yOm$~;@JNaRPLGd1^=t}AMroD|KjTj`Di7+wWLf<-8W6SX4qKaO_6{ovKPw;r8YQAq%IsC)TAAN$k>& zd4C}0jIIlHS&5GHT-~Xa*>kgh;MKRk!}MaNy?;kPD#_cM|r{rwqQ zMI=xk3;AJ3cs^3UI?Xo1Q$_0I3D#=DhSI&!EtkP<&?(e$!j9XOpy+v}Kc8u}6A!mY&WJ|a zMfOVXjS%(_0(~i)I3j-Z!koErIAFYCk}Zo$y|E@Knrd^gf{`4u6)k6rNa&@S>pxlM zS3fl*N94sG*=72hBU-98O-F&aG`dz|v=FP&Ak$z)q2PnA74RptSCj=+B@vBULb?zv zd;@r9rD-7%saO<5(nz2iQNmGKW==M-L30FX7jrqx8kpxuyt`xC-@u~Ob3xWl#u~>R zMT3a|f|?Ydiw<})Rjb99D0JI$dX!e(nnu?@R~KZ6$x1E+ifuLRP+8Hd;){tOigbDk z$l;dhpPU z{_Z8a`&Zu7U92JHk#a$jIg@BKN7#-vU0)Vbo(Q`{dn&XidoFA9qEx4K3ml0zd-6vw zAq)LjFI}X4vW6%McNwY8qD5LG%rpJ8n8UR+D`ci11?mOk- zk$>jnJO0(L#T9?R$J;ae*Y~6l-3;6ow4BW)T`$OKQIl2mW}7nUowhcMEVv@rsS5{e z?`QMI?siYQJs|Pq*Q;)*Il~kOyT*f{t3a(L%Bg{v4d2^=ycg!zw}hJ={b*GOZ5^2> zB)I~;2z5g)>lQQBT`&_PBpn0@tKGSI zZtIthJ#h+HQP-b06V9Y{EEpNLu9`DCey<=m|p)H z3Ov02gp?=B`HAzp&yn`X`Q1-x$2TmGKO^#v)4TV?`JVl&k9dCbmiqLb7z@kO6RDk8 zj?cu_>C+SC`34rO9>4ejZ8@=F zeq9`)&E^lkoow?Pgyc1q6kPx-mQxQ3B z|Dz_>h?nzf4PG`vNH5l)jI+7wQHXnCdKqn9+gu=pH8wORTVJltTuf2y?~Z@fei2|2 zf;pMu-o$?DV@@qdw>USq-FuhIzO3Rx=z;wW(L{{{v*Lm?Y1lov5oJs)p#@vBjQrBY zi$F1Wd%~PpCIXFyN);10nXn*U1fE;u+Mv1=bg}DB>rS)H|VkwCJ(V~-E*U#p)Y8SJ zw4Pjl zddN!J>cQ=1e)zHPN+E*Oin4(c?HrF?`-B+3yooizPvXpn;B9 zY)9|ZRtYhXQX*=gN};q)Ta?`#Nki1(&EeYXChmyI_8vM0`aYs1?T(IOM3NEfHTpIw z1S;J{D~iNuYZoUd<{Y@WNv!8eYt{Qf9jTq1BdysnsvZlJq7Z{n#ppFb)EnjMgaR+{ zW~B!)x2s&R<9d}<9^@j>ixW)y$lZ%OcDtD%!JP8F6J+f3JFOKo1fvFsFo(>XZ#e8e zqO?LOg`7;)@tsfK@cEk`(|hIq{uR?av(}Zhop?OH_+S%uO zLb&cBE02$F`0d~Q+kF1B-=~d6d@!LxN2x`LZca7bt8AtYNq(%7*!n8iaUZV{V_=$u zG}-@`rJ69q<4V_P5nI!w9B#uVI8uz9H7K36HKt?{F}+k;a`8|S(iE-VglsMJT46ai z%DNDfGEE(kW<(ROKlN=-Zsu_%Fm;AWUr$UavMh!3TFe~bH6Eian2>j^ zb`9nT>#4I??1aZ=7#%I=z;0(`j^(`4UHDyU0}-Qh^o|mUQRux>&W*!iVmAwYEvN>v z)7o0?OxYtmnvrFC?^nWPhnImx-g=BjDRm>@sMi1`#H|k0dLvKSC^FT>)eJ|k`qsb% zXRWW)hF5ZoM$voaus>|^VuH~z*4juh+ZbAPGhz`&(omq3Mvy{EGZ80mcIet@p>3a~ z6^p-tPOZvh=rPuErnJT4KnBG_5;`l1Y8-)w-RL$`n102!?L*E5nOz??|gr9UX0a0B5P@RNOfsX^c4un@e zAG|ZCI*b2q@rLZ8)}(D6jxOw&Tof>08g*nRCahOtg=z*WUM0f!GkSN4kfi$efy;)c zS)){b$r_#gbcOS;_8e&#RpPl@qjkP=$zL~jrz`Qn_2=pC=sv2UzYcOi_|M+ROacec z(Tu(lCz@)?8=YM)!i~k7(g#6iL07%RuFSsmUllowHI09^E*J9VczOS)lj|C zRF6HiiDL8;4+58XlIs|V>XUJtAG~;HFz6Oh|+l zonoPox*2N*aayc~BE4A;V)=@&3w-=bpKyCO^Y*KiH?^S85aS-r775SV&>@CzPAAOC z_JzgwBoVYmkGdHfR=xbUR9Ma?cnH~Qr%Q11=arbose54kAtNc8cvfG>T2ou?U~6w1`O=Ix!D1WLYfE89^K4Yc<>V2R&oDp0;ob-z*_8xm z+dHuvf)Rz6H^?u}a2qc7)a(MK#mNY@!?_#T<2D+3!3k$XF_A#@_?QtVlYvhI+<7^z zdECwrBP}j~DlYzM!QOLF9~Qq?c3iIO;^LCo_s|FI-l%GVhe4ijZvl#n40MarFvpOO zA3K5fet#WY0HS({DhVDB>-wB6LTS%M@KB8|FQZ2nT_}~jFVuY8UH!OV_o8$&Ee(we z0rb71N08GHD#?Ws6F($dfQvi^JwxQfak}cogf+w=`_2DJe zbwy|-Cm)pBXra@jQM5DdcTD$t&c`E_Zdv6q5KAOg!&dKQ235ZN@sF9}-sbRbIelr) zAWAJ`fi8rckZSJzrh$2X;KjGUNw^D~zxW)U%<+{Djg#HWEdxgndTJ0&mWQr4XBw9M)zAOC|0mbGY^jQzGOYeOV1jT&hJE zgaDyi^GHDUc`Nwn>Mq}GC}hDLyxN-~gnGA3`KG3V%K=Fld2&f#iiRdry(s(k5qY^Y zn#G%=Q97ClMMTo(mJK0#p?|n$M~-76%!$?lx;B*JbtJ2_d#RKznTArdlf=jjQC+$q zl`MfqB5K{7H3LCfar`Zv6CDkSyZf1s|I~N+_OJaa2&1$ z^hBt(A=YkDHrmCh&=Hlu+L{}SoLbRcWFVF~9K}Qoo1+kDqMP``nq|=nY?25$qPu7U z91W~}W!b^ump|e5b zxJT#c^LIp_SM*%y>uMy7m!5OFt(q4_OaRF@Tv9XZTsU9AbAAoGMKZ}>)2*XwaHr_ydl zpHJxH8TJ$5;|KaA=oiHoOk$!d1x^K~jO?uFBNCA31vysw<6Gou-8LAkHnxa%6GNRA z2s7=tz}pky)T~fkZS$(tbM13L=8o(#@#O)1I&TpSR5nqGJ{#dCObOX%v}VhyU)$yg z3LzkCxioW9+}ya%M+lAQ-B)}$eLVyJ!5;t8KhH0u$YC~Ye}ofF&sOAiH1|k(Fto4` zLm-4kJ+}+ivFrA`aq_xAvu5h;s{@BmUZMSLG>4^ljEKN4AhVMaio3g`3HrpdCZ$`G zR1!?DZjk+f_IxrI047if(?r*R9#0l6BqmyvIl8!_ZAx)%CQwu9E~|6jRJW>$q{s+i zq7-OGzR+H**%C+iJ#2@^)&Sj{(?P6( z5VO?_)R#b`=968t(!B{K(dY_!N=&<%l%dyWi&aQ_Ym&Q&L?jR-Y~t44{WtjLufB2z z<>UqP#@#m>y_`8eza{9I^ZU=Kr=PNadW$l1``LGSXhMDZin6??EN7^XeDS+~&)nFD z#PMhUF>ikBub_3|TfhE~^U<&USLi)*e0;;{`5n{lhQs|wNV=huEVeG+a`WO7f;4V^ z_Iu>r3m(4n8%Un5c^r&T#{|MBAJb~{xzn%h+MU?uZmYuq=Dn?z>tc}|t(sE^ zzi{PpA6uhdFXKZn=k6uCXV74pYaU#1)vb}F0TV2jLU$+mMyyl+-59*4DIW-LM+~6d zbj?KBhgT>GPH)V;<;`mCixI>`?B7THhezvK(_~oL&gLd#XWy@{P7L8nxHFvc!E@~0 z8Ydw0y)}YPZ#FW9#UGArRX`VeN}3TS6B5N{`?KYIDN=FCWYufbs(7vrBkTSu>${C& zV)6<&m#VEt`9(!?=Ha7P-2YLT)8_-9CHSl+cK0{m`K71FcP3=Yfh57qa}^{Dhr`a} zb*e>a1em6b1Yunor_v~0nPOs2*@Wn;?UQ;7)Y3Ot;dj1s&nK^EL{1!+h4WG$&c7dD&5#7v(V@eG1a_Qj0J{!*ZX5=JT^EM`< z0Mr&NT10Ft^sFWyt6a<=N_4eASEZIpo|1`8dUDc~$=Or3SetdRXoD`kjyGkwixTZP zsXNoV7w^NCzb4AH zKjbg{qyJ6*^!NWscKL;`&uom0F1qR3sdpBinBqhXRtE~$`5wlRvG3mmYzW8Y*=p=J z2aCT3i+#bPR2 zZ6@kSfqjxK{Ytz2^F9)yP>T|h3BFpl^QXb$a&ol0z4uOv!tI@qb7pr4M6vpqU}FdbLNpOZh(@dl z(dIaV%c|E;`bLzpxR6L`g@A5Tw+)R(B#jY-O7DxAS)z%PR0C`AJ%W!)HbyF?7jkgn zhAOoe&g(N%-rMygzDEfixy;3(7{ylU!9;YuRjWz$L{6Cys9m5eyyQJEzuu+)A${DxJaT{gmMNW=swJyt@g<&~ zJNo1z+S_CZ{%EddeeQ6R%|X5s_^MsR7X6xr&~2~rA`pJrVr%;wE|C~N7h3`T`@LOo zg~e!-7PDY;iS7iMJZ>~zHDR;BXBqh{pf_So&gIInjW<12Y{T}4=tV#L{2mve zBFMcp2bseqQe(spj29l!1(i#lkGc>e%2lL>S_F!C9Z(gS-JLG#f&{tHA-JMa$W@#{ zbMwTyHE=fP|EO0;ur-v-J~vgbJH#tGM%4e`u_nvU{Y?CrjYjb-TZ47u(QFi7f6Wms zP{g8L#xaW*fr~V24r_~`$v#_&=z`-fSNo%@?*S&r-EvB5_4<$3d%U0^7)?b&0XdQM ziQoKwD(uW!`F{6?H1f!xVOfY7eG$k_!E-+T}GPFUY6wR+v=EL-tY z7rUqTH?XeOlM9pIS1arf@bX^x;iG&((<9GQK@Q>T$@ptw#UIPZO4vb54N37Y{PKU1 zFQ4s33DB#-{A+8Jve)+g+3jw~heRj^)=pm< z>#30EM6zxprB#GZlxQCJ-e|qT0_)o&aWMhMayqhp^`5vtFuyv`RVnXI=u(I&u$~sA zb&_OiIkT2$%hAFzHLDh;b|9T9@_wZq%~_tq9({6WtibxT7>#KTNSCf5PPWn8@2$z@&U#&(^*CG9L0{Eqzg?jgTi4$2>8lr^=j7^1 zx7kS`q+}VJy%8p}7|NZwecSp>2tpV;aCPUMJ6VX?k;)#>ouU<>bcVH3Fm!F#>VnwO zC@`S{9`6xk%toLZ=pOyi{qI9i+Yy>}syjXk%0ef-zU9+@;?HpR3*X_RzxO-*@Zb9z z95nNAf5-9h9dCa3_bESqOZ)1CXroob*K6&h5Z!gt=;uN$C#q*fuf1CKuC)RQVtJE6 ztSGHsXqFt2{YK#Am{}D@uBHh>0Hi7FXT6M@0nZ@#!g9?F2LYN3djqD_|BNH|FIysO@R%BBXOeB9k z%Kw+WKY6-s-O~G@-*}5T=UQK}i&NcmZ{EzCr84bQN~pFZupL1-EYYxoE(A27L4y|I zj{gaQ1|1>@Is`!j8Mp*TytgG#o-|9G(P zV?LX^B|yA4M0k65qJH&E8b`wIXoBt2ibe>>(F*(X8RpfxM7^5mYVnQpO-2SQE=aBL z?wP(c-(YwLsjC(D#{oh|N`*zBJ{v&>A>AGzo0FreHNE<2q0i0oO>ahYp5eK`n`gM0 zkeeIyywKmx)>u23;#pGi{CP)X$3T2>Kx;?eJkpnHgot6FmyV>03=x)<{uGd4M3VJs zrau(qFc7>*s6~<6(HhZ`EV5)6;pTvzW^`?YG1~p2_+bHhZG@O$%tjU1il;*+Oar=9 zkJ4hT(+pb`y1Ya}N_ z{Yq=LF)y9^?t~mh$8TEvjJ9wow$$#qg68^`o9vDYBPgINdR_?A!9+rP6vN`eLeO*d zLy;dOX2bc1Ei<(kZKW^G#F=TUK8Q6%Hxk5_@fsVFuX7c+pfz=Kw)=sq6n9?ho-NKM zxa)W$&@sz6&8Jn!6NKc4WIrHx6OhX0G!2`R`{Ept=tK^-=n*GmZTRrs_GaZqGf{6! zZsu9>A}irSF(G-TqgUrQ+JHF+{UEv3%(|V^)uzck76KL5aOj1CzQ;=KZ+m}qs}=8g z?t21D>`a3-8qzorbEYf{ZCx0K8`{?FmCeP;j#>vH4%6NO*%8S(A~ACqj>H&<$8Yic z?i2E>nRV@i`)_gg;uU3?sq12bx-yeL{XQWkjxS$Rzxv1gL-}9u#XtRry!_R_$_Kys zZ&F+1Zk<`@XW}rC54T7dtXQ9dMS;W&TKM4ZJA^nO)14Q+z0lsB^dVd@)82H_-N|lE z18tocN2cRFLmCl%M-1j>*VZq+`YY2^5VcysMw3-bX_d{9AVSQ-I0%QygcZs0vb|d) zC3xKOo+~PjiB=O=45Kh4!^8KYL@%DS=1rLBMW*UVe9!sK1Eg*5x;A4OSj_QBB+K3lHMCR$Ql=(OEWeRr#F z#VqYUhC;MLXtMz!3F>nrbS2*Umv0hTE7nCXhE>c(w6V|AHW*ef4!fnfTfuIR+0cgS zCBj2P^7&t^0q)`lT^o2*hs@8=PVNXym;BdjNYayz|JvGahS3fgJFk+A?u&$bwUD2(h+gwcN@rHZLwO!$88%m(| zm9W0y@P}nhZ-tj3Gj<=(f_OvECfgp2TKD4R4X-{t(909$ypm#I%9)@_Iaiiy0`X%? zuhJIQaf!mT0|7#v!GZ~Jg<3i)fiY#DubY{|ny{8i>2`h(64+$9 z>WyS=iKoZTd2YOX5qR-B&{_fQq6?1{@G^k7C}MNF_dNp51cicl zqrA~vt*}KosS6EEXwi`nNrSV-OQkh)fX3jt*wQRs0yh|`y zvIa1{?@oA2KT>ZPZ?tcftlKTMH?siy^dkwz#yN z+OcaieD2k&UY37fAtZ7(lSgmeg_Y*;9AoBtAO9wQCNP5AtVOBj;cy?!b*1vhsfpqY;i^66q9kB`1I57^1ENWB>Z4&cm@AV)==LBQ6}=) zM21R?VV_e&w74xv7Rwc)Aktl2V}!+>=HuhGElLc5szR(vE6{SVcn>up&3H`Q-3?4* zASNT%tV^eBGjfO;dD8?mf%CJnu3}_3zaNJwAyTPJC8fYPMXR5!9SO?K?LbZu)yh0~ zmPIM0F+__EeR^K~Y+`$em;x~g5w&|(F+)le6KTZ2@n&#Hl${}B2=v`B+?ghrra*N% zTFm0QM;qI{b+k6dBn-DEqHd)VhfWMa%3-^qjG`H>cD0FgTUXAf$~Y#5A<%j?QDPTF zl2J9*h1R-7sCXo5BsdMT8C_Ka(Z}G{J8czrFI#*`OhOJysm06+!Cr4!3qc0*koR6@ zYt3mK18tdI@M(L5){KlBvz-w-R`bwi>r2P>4I+^k62oAp%3fAGANm9sWH4;KT3t|r znQhbwSsx64`cM9}{muU%G(vg!!y{LI$}Rtt{S78 zm?X2ugM!*?y8~QTZ?-nPt!0~4lbw&ts3CrH*kFZx2*h!Agt^ukLIZ$Y1(w6W7Ag4H|l&m|Yf{sqXaSMdzq z^qxE>ymKLOB&QQZkO>o)tN~q$tz+X67}43|ITjZ!Y=Rq&u9~%Y>zyVXxiqj zjV9o4PEv{18!)wKHwj$pmjkcbKGW{Iwi{f~bTOFFt%RB~A!k%7H)G+Ke)+(!{?aW+ zspPuyOWzs!&0oCZ<=uh5^Me!r==a{zYq7ZOZR4u0e%a2b5-xk0WOx>B9(B_F#tZ=_ zGi+#UE*{zLfBVj*b?Y5{WTXn-`q$hrs?6%w_RjVt+LDn7CxOAmL?<;tMbS&)Cc2Se zu{lB?{r;J`kRUc{&h~nhOVq}}@1@y=5PBu}$y@{;#f1eYwRt2N%|?QWv^2WV%IP#a zsUeBo@0;)|1FtTIDB497q@Q;<2%5#7Z@ijc+@oRQBeD4@Y~rh{d1TX>R2NnqxDbP| zpV!%*BOV}r1nXzOJO3`YiZR*f72(R5aq=-U+4mwZAl*P$q0An~l(yQT|L^2D}Aj*u|rkUt&j|JIg>vBlG|7J3B(Uf+sG%CGy z`Z}9aT>^Q?Mvgccs=PAO)iK%<=v3Qmv`&ylUX}1vNlz=%0hfSDfXPqZ)!5B4n%hBQhNl^w7hmirWN^N7?Y22i4i+m=Jr@o0-`n?9LL{J@w9LFh%%QVm0S@2}AtaxPH1MJ2?oLM7fHO1qL(Qba`v<6woR zUg@>aweF6guIB79BVX7;EbO}_60}=`-AavDPCWn5<7k=}j~c@Byzu6;ub2g1|MIu_ zhxfex_3v{3 z?N504;vF|X`YFek_k8^8zs&gI3qoCZI-U6J%Qw7x_keUI$7nGiY7T?gl|*19aziE) z&5e!_IwS&#z(6vQ1w!7a6J8WaVm~9^O2)QAkuYQ!+{z^0yb+A{Qaat(myXahw{h>4rj?v- zNFTj|<3RuMS6<+Wgdq}N-diNd^D{AL!s{b)9BJ>Kt+5-U<<7pF;at(u3C&%zQII8= zHF_|&e1CX`$Axw}qpbiQmvWfgxha=cpF6wzH;?~c9xt$AKw@fvmr|c;z3o-{-N?A%)1zfB*SUFbPN+`Dk7;Xa3q1-U z3>;s5Ks?;g>m%CN4L{%lLEnsr2zf9%Lr8Egww`!HvQ;-86s5Cp_(TZ3np=H>wsZm( zIT5C#^Wp-`3zq;zKcFOI=8#7}panm8ttNg5i%0p`p|_=wl_y zZV=z|1vlI47QGSe5G%>&lC811In7lsg%JOF*}B)R8nA|IxWt0t(Hgx$%rH!j813Fn z-LB_V1VD2Uq6Bx&UOBee^33h`lxAWJxe{)~Ee53Tq$aU2c(gXO`Mi*VIWpW?X*T6c z5lw;+l6!db#fZ?F-xezSd7tK@QU?lDM;<3f9M1F1uknG1yX`x z5RNw^)8SyBrL|pfu%BGzI)2NplcE=~hKmQ(|6U|etHLmGc=c_gx2=_sMw$jfJ~EEC zwsTSCgPT|8+>MFw;#>T}Uk=><;2&}Oy}yJUUP3A4=_TpT)B{_-YuFnzE@&Y$9A971 zlKbki5l60L8ZM0{Yx?xv@h@p$x_`m_>yH?ZN6T1GN-1_vwPuH537e3@T-Pah1IM4Y zH;e2r0j(`JIa-6FEKs$Ryg??DkUg7Nwm2KFqo}};VVuO!+H@=CcWbcOS|aYeR?1?H zpp;=cIL6$y0+O}~$ciG0T8tI8UuWKgC;lC^?m|blKzXBAlmd0VR8Y3Lgl*oqYTTs} zhQV#VSX_}`w+kC}H#>U`H=3v+dL~W>nF10rDL9=X%N6RwsZRUc6VNo8NMnA&a_n9F zG=J%0jOtEzxnw(U!sZ|z1EqGqZQYlcE-^-uud2k&n&9DbpGgQFF~`2IM+IrctV?3# z4=IatgVb=d!6;u^y-1@@u1W(^6_se`BcEqzGg=muYQ;Wrk)Cev^TH%noD|eHdWKi3 zw(My(VKWd}f-i@<}gK; z)0y51(-0Z*Ku8gdFt0ul*KVmd4Qdr`#>8<-JU*Q$-Eyu)K?b390gdD#8a=lt(c>64 z+j|V4$?T)O+WZqmskKpCr&mFx6GC^*kzMm3V$tX>HV6VKs2k6$4p3S*VMS}C7`&k@ zd*MDvL@PW#S=0771^7XC`t2F7ELQDRQGgSi#=5 z0Vb%};!~_v5?r+5MSYK&+=K@)2S$l3Rq2k(3hn}I-RAwAH^IJ;M=^0ph9LxN$oED< zs7=YuqcS)BR~51dEm|y#MZyQ#w)}RZ5bevD9}$emARvwB^H+TS=Jz;E_mCXts|28`A>fX{lwyxRJUldzE9x0m}A=;$R&fm ztM0M!yYj0w7g}6M7xS|6gP;B$KmO?tnV0jGNY7~p+KnWzE%rXuMKJ+|x|30&5C_>~ z)VfDxi0Ixg3~2)gsYRk8Bx3Ozt=Z?Arevar)|r>a>C`9{LQF_9W6T~sFAxXWqft$8 zq@*D+jF})xSsO%U9EH}^qYAAebb9POJT+p73^BTk+=w1QH*Zh$1CfctYZIQIjeK-_ z8+J`&2p&V~&DG}PHAdNKAFT$K-iX=$-lho?lO&Q+!+Ir%-77KJ`qX_N8iP@F5TVxU zzl+r$B^V)0-CdmQoT?HHO+l@Y4nfL{(b*-34VrzDuH=%+zr{lhqdW4DY>73iy z)*7w;TpoELS$5REo*m~OUC4kt=kEpHTs4TdM(9>|^uwU;%egx7Z9D7u^KS-){GKcJ zg6`jbr|M485V;aQY;hFr>a&V{UVT>DC}?xq2QE-qb#G4V7|cDt#i>*`T5Mgouo+CQ zHdkAtxZ9Co|NMi$&l}+E5fo(;OZbJGjxf1^yq;n09%C3?4Kle1d=oiX>=`l`y*XKb z<#&GfbN;ix`vZRK=YNIoyvqC=f8j%Z^;;u9__VPq?B`F zuEOV!E2l?~r^`kI7ZgcG(vxliAPsskvGmJ2F7av~Bb9IrjFWIUMus7o2{d&+yn$c& zaNuA2mtOG~|KtZ8q>~k1++@Zv@a0+fTfg_r!^2E1bvtBp$>Y7=h&XYXv>SeQ^Fdh=pBy9d)_j{pWkrQ`5p5OXCJYC(pN%mU%7I|aW-vv%dcUlaKKku!d>o;+_Q&K#K z{t~@22;91eDCzsemK*<>WHkrt7x?_}+>o=tOS#N{kqb?x>V=AN@OdU*L=(HXB3M*tWU0SK;>Cpr=52@?Ec!G4^{vu7qS8(V{z{_zU|r$m3*e>ju+d943U9W$P494jXMMxD!*PV0BplSQu@Hz|m`dY+aQ{sV z$Tz}@Kcagqa&Jg4^sZvaI%{?tvNuIM&$LsM#Wyb{CA@%E14W+J4KDo~zgTDKPU+-C}fqJ_5)pFwTh9dE5zMkgIddhN7Y zSk{%8GiewpOF>#kVx;wj+N}{BCD3TBE^A9fx^~(;Q(I?Vo(U-s=L6vwNiPn_5bZEF z4loz`n+IDs?`Nn&|NNcpwT6-Pw7`_;&ohGvVagUm@?1S~y`wAy9gset>k4T=hkzUt zIwY6^)JQLd&^qm0yih#Q+({emOzhC-ZjSURTiNHujTK4GGvNf(gj6dOYwJc%IE?gB z2u;vu5Uqs4KAQrZRx9>Q8Hz=-5XFQT$C04ToxqNp&WUh;umV+Et%;oQBJTy6EK{b} zzA;~|04LU1OTE$CYzIE=G?v}*Eb7r2&T0xIqFAPFQDvp<;)?Ee-7ZQG$%$@C6rnAR zw?F=Zw?Fs^AIvlI`Xx8N_6r_yA4tIK?|p}tf9f|_zj~mRLR(h)d1ik1$oh1mH|02v zf`L#R#*Ib z`KmR$KSRDHefS~V9n6h>GlDkO@&xfU`SyUOj^sePJs`Ie_4y1r5sw2pFZ3^;V5z%W zRV31@b@X(IgfW}HWG(1vr9WBpfqiq8*qS#QqYDwLZ7c^xYeBn>n{Wu|(}LzqIC$L6 zxe{}x4~izCYA1g9l724qb46y*FW(`zcZ8b*{qY24MKqvKv(YzNby|kfo*Hs@L|z_< zQK>)p5~+=FrWowaVFd*qf!i4dG4OcsB=MvY@6k!BWr`v zTwp8}8O&Lyb2XyClwmfpoTwl<+4HW|(6^p#&Hwg4`FG4$q-$e-{t-+0W(EFd-25!$ z5I9!hRyv2|1ReF_@7B~-6)&PknkG6%)T!MY*(s35Kv1Qw)|gItAmxMI_pKrg!Xf!w zE`%X^fh8cr;JC};4rDtB)U&djU_A?U?kI&gI;v4R`gn0Sm$#L4d$w4rAZT429cWaW z4d1Q71C>Qhz!Y#nfEO#&(YT%=Y8l@VNe8qQw49-M?1%auXNwK!-40A57Xd_w_FNm5 zI!5Gn@?7(9ahSKw9cG7b)egm)IQBg35iKIgQ2kLY_M;oG+>(4El1ywxbu*+>_?*<7#{Ow_B>kxMgk)1Bzn zh<1Wx5_jZn=TF04_IQN>cVoQj7JF-s&eku^)*c{7iwaTC8R>`@{H-vZQXr?1Jlv9| zBkEY>ttF-#;wi8voiz1l7brWWUiI0En zFY&=I{aF)YG+XyBmW^hSE|*S^?Q`VPYuu+g6Y~x|_<# zY-D#{1tGpPYF4k+M5W^u@n(wz>CMFw$;2{iw=+WwP!|N_#%oLVx-r^b8@+r6aRE_p zetrtxe9a~nLFn@XEKk;Ck?10I50H&mryF6U zd$Bs2vPXNgc`!vJj35iz&h)wI+(b_xBo^yL0s#nyO=>$X=)J%fk>2iMJ2%L z0gZ+*PJwAi9F764gyU`c}!|0r0=}s)zisVMt zz|9E5khqzY_PkQ72?~ZmTq~)hWKCM_7T;hLLpKa0p=zU+=26JWL}q(5i9Lse3q=Dl zs?WMqLJH(zaH>!DZ_As}y4egiN|Rq>jE+FleJPY6W}@u4=-%IZvnZ6cI?*fz6V_;F zm>eo*yBE6kEsRXzD#7MND)E|ml`C3xzX;@r7V}c-%Hz}LeE!7`czS;8!V295h1>eA zTh7$)Bcix|?4k>&R9$*g+Z%~4yvtWhsnaC3iBGsvf?Tu^+nlJX==GA$Mc@d{?@wV~ zXWo4E8E@Zy!7`sHWuP6P7pN#f~b=mAm?B-`9T;a z7x)N_Lm=l!*Tz~qTJd!&P+RAGTCB;R{60@chM+@PJ1N6?ZF|$EmCiDE4hM6>u4kJs z1YucB{FR4bV+)w)#yndbP46a_E31-1C!~l-Wtl5O3dCfwEwz}z=6EwOO_|n}WvQ%d zqZX&GVFJG18Z=>DmF2ADWTczYY;Tl@VB2eqs@H0_IHaNkjXb@p%!?VsQgRYVu`wVb z7MV$>b)(%RvGM=nMWobf0+7I7Q|a9r(udVH@I;R=jz**C6=KYG9NH)tvgxurtu;bOCTQ|`VaVBHTT3G(YmBHULS?N=B$FK} z&jwowf{0aqR2Q_*MretV5F)iVhL{O5A+pl@YIA@KR$A|*7-*INxpv)sx8FSepgro_ zgx-z5nbIwaXfy8!9&=E)#%DJ|Mf5$ETs20wNw#1s>}qDqykmGeO`!LKgH1iwt<)j%ZFpcvh?Fy%6M=BHS3w!S;(zn(zi8i^3as z(SIu-w?4PO@h0fxXY4a@@;&(Lh`hRThi_}x=1v#u_Y=0y;bhIxo<}!~pL&xrfE@hy zC;$4kMsK`2;stBw?%s(_eBozgIXFFHy=p#RQX!nKz}{SUB(WXJi#Mu+x)4z551S~) z&-VAher~mM8;^>f%tRqsu3{RthOk@&?3*ZY6H#m;jzz7xiv7Kwt%++<6oZ`=O1+S? z=h+Di3Bq*grf)QC2?z<%6=X5<>Sm(VLD!Y|zM z$G&?<%8+B^_^*7#uY4=6My|beZv=TR$je2pk&@Y%sidDMWYoD zHLhL*?a`tbX=pI&YnmYD#9@rQx`AK#^uVwG(hCk_;`={&U@e8e^qU{?mw)4q-}uhR z>$~y2VY-yg@BZkKzx@xt-R5P1hcAT>UR&Mj&F|R`Rx*3^&~i4K#&i_sH%fW3IHlnR{!-Ha+F$=C^6zr$ zcbwPbHw*DM!iqn#kI2*phLWJI|MBnq-_x&u=g(V?VIs6R4jkA>NC%C z;vkb{42DF0c|c2}o@U!S1AyaZNA;tYG(s;1u z>)l`?fmYDc;Jl(=JksBtkwYe&8}xXxR?&HZmM`wo z;MrrzA}RFCXWE+?nHqAdFh!)8d*6b#Bdi4`Yj*2eASEPKd!5C_8WNF|T~X+E#vn*_ zcStgKkZif_TXtxSkVj&zL?HG|l7?tvkwVj%CNP+f*#&@|D2XJE-e-^fSWP&9AywO! zFJ>(gGJzpPv~*5yo+!@?>E3cHB^%B$#6UVu#N)*Htq;A()}UAFywXbXqF^Se^5V@C z_doav%a6Y#zJ21ezw!6^+yCdk#`5sM$AA7`y3kHD zbFYrx-PEL!$Uu-}Ij|zsvRWe$E2f0o1O4elUsl_o*Giuar->NVA%tuNe6<2j2#MjN zkC9JaTM>UXH%M)bAjyjYw)qN9N8sIz)JA-LV~vVag|kOe)Mn`SDWOZXLdPLn48f_v zxx#AkE)oW7^!3%`Jhc-JgKfN4=w}lb$$cV>iGKD5h5}1L^Wgb*);N*Dg%2?xHv{4I z4f53!^oTyra5y0MN5g0bb?lr`V|wo}7mJu#6^#qr4}@2@gtyPgb8)2C=Ge7@q0Ys~ z7&nuB&gTW4tzo{!2*~Q3Ggb82C;%3NU>j|Xn={(;Cbw%|y9p>_Kr|q=B8LGvW^`W7 znL5O+-P6=O1W$qW-CyRf|LB_)_@C|3@3^UfyC~!#&_eVLxR>ktW-OHrDXdnY8z$O% zMzxWT$(nWAXth%PHtl7muAgzZKa!IBG z-Z9K{IW^m?Z@Iv#dxU0xHZ**&t^{GQ^-GK8p!TZBF_DJ>LP6^0^iLN=WN?gKtu9(n zWV}P-h(6EM$7T+)8*^TWZr$UJAQ9{!+5*I61@L%rlj^dVs3=7G=HhmXf|0$vk=hli ztx8PWsq4~EAden};u8O0#U_z}ZY~&iLAuhx?Q|X%U)>4cwv6wqE_?`v?GNeV^sY|t z>dl_FZo(0xXNVYa%#i;V=evlDvpOakNkBHy=APx~{p8?OiIiQa->m`Rpbu(Lv{P1r5Q(n=zQMBBjXT{xvT@{w{f(j9RfN5uNbRw?drP zx41%yUjz)g_er+KiN%w-XmtCUyEi&^VTSGw9n}sYk;cJ_?Ao_hm;H$Te!}KWs`I@`eKc^%86~k%g)M>>EGbn^Cq;1HEdQ_07V2Bv$A}h%S zE@4Y`8*B>5gT(=e+ICO3T=A`l=NSB6p@_1s_FYC#ve=+4wOmNLDOnEra4>OH^=9B^ z$mq?ozOVaQwr}pVr71r6tcf>M*lM4e%^@yJBzMWvYHHy?SySv-Qnbuxyc#&#;Mqa)vQ9CVmUiZiM1QjbTFc0OgG63GH@Mh&bxk z5O8*uXa&}1REt$En_NgP7u<^yI7#QThadCy56haqKJn#gN>~A&{b7y4Gw1Jq$)K3DHCbtz9OA)=ijwcPorz z;4qosFz3K9B$m?2NjTh2j8h_pZiKEN7c$Hqd(}uGkPexS(rU3rq;QGxaspPwJ_{jI zYO}RPf{U4CClQIiPmAlYvl>B2gH3*_9xI_9ndEV^O`WT z0lL)IZHp@EyV({IHd7^P^Lk^8mUM9l2KZS5wAyX>I(=hs1lk^Xgbl?FOk+cQE5O@- zreF1w`E?TxJKNRLIiDVQI(@~uKDi+HA_m<=G-#*w|6&9Dh351%HKJ^5z8b;D#fdvL z^a3lH$f^+g$lt* z6DG)!cp*A%np$zfnFJFb=0otkNGFHD;TRYv7zT^?7!QUfpKZ#t_v{e1lx+_XV1BVZ z+kGg$?GMzma(Yx=+{b-?mpq@Pw@w=D#d>SB01_(Wl*pP`>q_uzAEL*CMP*C_!hwg= zGfg`wh>L@^^;&i+?KEbVS^4Q_3o!+TVWO0U*6s7Ciw0AUCZcfK7tzFF$`%zO7WX01 zBAi+yM%yb}yptf>EShJFS_=?EHUWtkohIjryEw4cXP)P`M%`)_H-&b_I8oEeyjt-f zY-b}HUzNZ4|3Xm>rUm=vl>P_x(I#R)82(mN#c5XJn0zPKn48N53?5@d;X+>sPCyhc z4(rX)-7JEdJFgdYMIU_&8C`G?y@^}c=|IMh5AY(vjmLzn-Bfy6VDw1D;*M$c_wu=m z%)cFtln~tY-CR2NPOTaH=x4g(@8hk)j~d)L>1K;Yc=jU7sOCt|zMO1?xnNCAUG##{ z58gOlfO`|EH7~1iYr+i)Si?G8i6^E#(c)u3ht=n>>D|h6`O}aFpU%V2zivNE$A}ij7>hk@wU@vC3-3j}%-NK2jy~yFYs5 z_kQ}!uYd2Q?W+{VO{foi?>o1=zR$cn6{aDPa^^>G4*ce~;P3s@6CZwf$1o;-_Xm%B zb?U?+@%ZM%=U+VWT;Pkx!owRyilP&I`sp3t{b*#eO%wNrz^{Bf@~408p5OYF7vvQ9 z;b*rfonQU#9iP4$h}x;O?@@3e2%kR`{?p%n$3OnTnYATCPPAU; z5|SZ}Xc(OKcYx_0UVMlg?(FQ@oqRk*s0E#y3FBWT^mVX0{OL;6P`SiibQjcY*LPME zBqfkn(c*cMU)KeARJ$MWF_3-USX>CO`g0$AOg*|-!fEJYqIs(sZVr)rCCu3VJaUQi z5P>g&pP2YxzMU*Gs9p)8s_$DPe(v-=R}^IM=$Nos3cGK|D=|gC(0evQhA#fx zRZI-E-Tzy8POVVumx}gmwZM2Q^i}pqAG&h>67D{M_zLQif3L;AzwP-(AA6(kb_Xt` zjwtACu+De`ZGwLCId{D5HKi$fG6B_iCvdcM&G{XiXXWuNeDaYE)z5!mCMuGBJ_$;l zeSay+s_I zyf<8(2xaMvhd`b(?QAl&kl;4mFdl9Q9nQ~>)V4AXM}`>D))`YKX=E)6y%kRNoqO~m zg~C~9iWVx3MHW)X9FBK{DS7cfv7Q<+NAk@rtyJo{5OZL9aWoNaYv!6Dkcl)*tkHc1 zEm}!AF?{k7ygr(PtyY^r5&D8Q{fa@f^Kd$^B%zLzxEjbV6>-9cdOo@dmA<%d=f2UCbrk z9?!&^iI4(3pAEgau6E!#3@}&v+Y>V0nRudF&Ngd-C84L8&>GCmT!42Y90vM%B}|t; zQ9+m0HmJpacFOLoyF|@z*<#x51Z(cL?sNdp@pH?n%9cqQ$zrN^Te}OL!sHHHMOi&; z>nPAv{ECX9&aLZ1-DvHiB!nrC+`N2A%A;lAZivb1g)GeR6hokk9Y90OAerGX*=y?s zrIud5;-jDclyaI$t?}ZwewE*T`hxS1e!>U;^*_stKl7WEn}fe6Z>M<1uL7lYFK%C) zHcdU;%xeYo&TzQl^{3zEf zXZ!t5GT#P5Ba)aH895O5Ko-l;ybZV9hFhvu);^m+38m>ul+0XCJePNt#j4##u#;gT zi80+UrCX$X4s2^wo$0+3*FyF@uy`|C%*axZLw5JGy=T!5YcoO$feXyU8)rgS4SbL z5N^z!uB8#eWQWMDu@(evjdp%SS|N?eVnkA;ua$5#aaTXDgduu1v0bn*Wx8~FS&$bu z_TJ`dnSSR5`S2c*Tl&KpSv%n%7WWf_x%TIk5E9HQdRox?8{{~k&(-kVY6ZM7WkT!p zwV@AZG$cZ{ouV!kd3Q3|{A7_OdR}Z}83HU86F{+SP3_HuC!w1tV+`JGE>IKP4F1^* zvMz)nqX~3gh}j~96m5aD2>LEEK7F(L{^j0V+X=}2pCvX_HKs{BYJXw+d`08j4#&xx3VCz;manYKV>cYdb zJIg1uI|6(u)Y+QIVeo>6M}O=>0ZDce87yW)S~cfR4$vz7X(fyexpkVyMwO6Y^cpYZ zTXWGeE_AI(9?bRLnip5QJI4oW+B#y;dN^^vE_+48^dEFHBS+ zjuW>z$vV`{MR?8EX`8<_T)RH)bY;t)Y&{bDp0@I8V_PkYXuM&bVjMfmEj^d3)%l%H#i%HRiE9xO@^-443dahn< zU)ib;aVKb4ov^YiVCscFQ_uDthI6GCi$h>C0ZCg6A!j2ron|XAcaVcc&uCeU646YY zq)SH*8I6OD)jgJIh1SvN?y7XQVq@1`u+^3oDJ$W2uzH}XbutGhRWysaA&I^25^OLn zmc7pAkdkir*60ID8k!9CDse>TM|53~Y}_|(&E|mC&~`GMZOBNNP&w1r#pXoGULSmKwG$@UG2#_GkVl{P+*cn!ZGq+Bh8- zW)ija%rG7~9$&N6mFMM=+pG-H&T+-v{k=7oqCB1}^BHuvM$9 zm2nD;)4&h|AwX%HIL`LQMv;ha?&wshCQ=X9Y_^%&Vh0xWhGSl5c? z$P{FcLJ%<#wh*?sYa8z!QV_bvy>YL5&V{(6y;FL{c=uQG}2bsY-|@(AkA8~UMv;(68X{}0MxhWB8{`;ht+6~+mf60m!y#}yrhWX?iisewCfB;E#RW-ZJ}FNF z#4HRs5Vxog!CpHD*0r*no5iw;n=HC58tc;DBT|GY+}uZxqi8nn2BX|WA3wF4C^e=? zKNZ^AIZlb^TrI9}wf#^UogKCbLtFQ>Fgqu#RasWuYkAx6MTmzAll2@3YSc&{yfeKv9976^Ic=cC7~ z=M#S~9tX0Wq4JH`^K6Z3Z#-);u|&KxFUl^EXli>L&CtQbOI zDaud3cxGKYlgBb|B&%&N`0{S#<^6zYN44|vkonfX`Z1qBR#b!>gg0*oo{N&lfj3{B z`QnQk!Wj8mKRoll`D>r?qaQx=OTX}vf8$^NHh<#h4;(@zOXKBD%Q%8Z7**Gs^sO1r{~J^b0LIC%4v_wH1mMC;6A#DV)U%cXn)3x7rKx*!g!Co z_!vFh_#V6Mg7xj3j0SiyAg{7D^B*sfYwr;mxDXCF=|#}+-0Ylp9|<3tF_vd1q?|nJ zCwb=37Ks!5ex3ZD-2@gsM(J4eNX7&nBNs}`!SAQ#s#ud#Re0yZv&qlNn@Hl$Xc4SVhbcDK)h8HViZy?q z^b(2UkwV&SE?A%Ke#?WW6HoSjpB^AK__^;2#~b*;?{?PJ1gS9z^P_V6p>TUAJimqc z=$C5+2$fc5PN&YBC493Oe-60MlIHZ&ULAPpn66sk75-y-UZ<;cj*^olr) z)Q4x*hnX}?R)Bo>)|!ML+!`xkZSI2g+}_QV9o?$&p!9bqJ7h1FIE^q4c6ePDG(mjz zf&(wD$#@gd!Ci;v#Uc<;cj|k={x~9`cviL-*1dT|YgW7;qq*n-JDD~)6@^Lgn;CLyf}giH^23( z{MLW>-{k!6k&pkve}#T~pzg)7T{&^-D51N%bT9gN)8qpB7H&Rx$*=sW-(vjYnZNs^ zFZlB9lcC0_1QpBQ>{k4a``R8E$qbT7n>z|fDjQvnK=(a+;K;~bxFdQrPH+)RmdtIq zB?5Dsy}%F+IPOi_RabY`I=Muk)97jr#)(eO$s!2W6ZA&Xh|1M_Ic7LpLowVRtTB2j z(8cb>+N^+>k_$fy%a=c;i&ER-O(q!P=x&lT?afNgw}j&XnUv6~jnlcAkSKH$4!N*J zycnP^BJ1-CVML3?SA;Q}2j83NQa*a#D@tWSb8rLDF`wZ+uf5ixy$8xDvt-6rBq zL~Av2eDoY+cVHMPArPiuXG0PCx$kQB@peL9-a)kYAibl@Vkf?0hZ^-9W{b5*7{59~ zU6EvNJCf{fjh*bIV$H!Ym^h`(pequ^L<+ukZH)oCDa57u+#Wo#!{>B~*{D;evxlSl z`mqTVdc6c=vlUe0C4M8C6GLnDOnV&hfUlp)ar~#bx?{O%QYj^9mrgIUI zyyp_)VxH3LU;def441XNZ*CecG#`=osUx=1{Qgh4W60g1zwJjvJR)mbgVbYGWdA-k zEdkmn=XadG`XNtmKclWQK}=ZHl8x71T?bW^>X90oHYz2%^+Hf5f?T3o^59fa|9h~1 z+t$*p`y(C+*YW#6gggpqu-Fmp>PTyk_Yliguchr^76XO2E4n&y$2y@qYF^w0TANx_ z(biM1+cmvJhwM%gM~#|0%=W2a7!YYD9PVz>7Hc@kGTVMPI?=;jvxJN!L(^)t%=!H$ z+f*mr93Q%68>>6-eg34glit|e&il<0A-Hh0*?qM+w~Y^2>{)iYotV&ZqQSwFEdfH?Sg}6 zKdrz0k1^QGxwbz%v)o1^>f+d|5X4?jxeq!2qHc4CMeZYBSRPzZC%0k z%(a_XF2{6n2s+sZX{78;-qK8%79B1ZjizzEm)ga9Vsru{eBm)sm!(~t8r3{@q&6G( zIa?z(ZTkg}+6qySE_>w1F6D4k9g3SkM$lTt&;O_RGrj62y5$;?YB`z|wkEIu* zYQIuh$j`3d|KB_=LPqCYc75-CUw;tYzw?WVagP+k&f{JBE~4wItgUdaXR1~w6j&pD zCy;cHXz;bTNhMShu7va+3~i&H@09O6SzbFy>D_BeRat5yMdc<2@)QY4scSc*R0u9~ z5QZVxJ=RPhVEZ;Z$EB1ABD{UOvMh}lgc$oCfp!=J!{G5>tC1n@?lR+qMN-yIh+@K< z9`@KD@d44QvbN573cTonxG6_e8B-!iV_@%dYo3}{ABLe;Sd<7 zK=9ZiFfs(%NOYnIZ{I@eg-<`Wx@FwzveykQBoCkQrA`xI+aE z2{{B4?y8?f^M?EP#^6DqMcZ$xH`7;d+ILsh-zRGfs-xw_&*<&axR<+N(by-o2!XAe z`RQb?^V23u5G!;xoTSW^lbxOX!2JL(!cMb6T(~iFsagALv$!}Q3VaaZmiJxnfK)+O zfv+0!N!VTBDCmR2LxYb3ypT(?`4*!sJcGIcftOd^s;n3E{?GJ-IeFnMR z`~eE@{QmsdU+b`!Y&>$<=bBlO+1~Fii0YSPyNyAw4^EKpO!uYh^}qXgQQ2cdM4>!% zrk8zoiwVS>NPBa%J!n~!AO4>5(MQ6kKQH|Br}jNh_tr9K6<)ls&wW-QjgVC# z^pzwJyv%R-AODFTe6tvTBdqu%`B>0!rqnZiu0tZRI092>rS5Kq7)FM1B8-8uSae0m zkq{C&2+Q*`PY>^?j?7ogp)z%ll&CH%8)9}B|pW&IM*GEa8VKT^b=ZSXMYK&}Xy?@i@Sck(|-m>9ttCY6KawXB0Pd zHpHR?!}8L*ImHeG(i&}93DZcQ7j#{TcN3ut?ePq^lL;~A#p=G9&6#DG{?d?RLdHZq zB>G&eL43%zF?m?f(d>iacA}SRuKFRMZ)Yf5?)?hsjJ!Blv9xuF)m&;4Y4d7m(;-R^u-)C!Dk0=OdppE{I)2W$B|=f#5eIjvY)bn`@C-v(;bQxKUj;Iwj7&r# zf#`IODA7g3;$*l^B6BA<+;U4+k7tlb(?TFHkm$X-tHBB(MV(ZFIU0g>IjGva8CK~o z+UQieSl(vy%vD8+nry7sGe>=4r|u_n7AM5U7Ji2(GDLJ< zklPU%C$z1|U`68)B23vFD)WrCVgiY|piiq6Epvh)qD}S&k_4fj%T|#@ZYT6{fw`K< zS$%gn4Tc_D3QUQL`Y z)EQ~t;(z(sH>>YI`{UpGU-9?;z5hPxe8aaD-sqbj{lj>C@oO=5v^K-MN+6|)Rx78c z6Rj%ga6?^Ibba1}&J9A4gT-}h2J4W>!wsz#%F+$Muy#|_577h=_!x-ZNF8l+?Z8`W zw1}c1aJUO-YnE@Etf|l(RjKYc4+kT%Xm5lqcsvQii-B-|XNA?}jA*03JJZh9&XxjU zv?ilygzDR;rF6xY%v*C*DfLf8K+rcpq=)u=< zRZ{jP(198$TSk2AvJ((O*m}dV=`g7dvx@Pe_t+hy8wT6O1G{M=nUnY7^B*(*lfT2a zUVIm(*M^ecgfQ2_ie2+4TTkXv7|{3Ku5gLdxn7sKI!9k84}871^R=gR{P^YfWq%Ly zU)=bS_Z_#pi*}3A*&2fW-pcubcR%_EJpA3xuY-NV#>r)ZWzQnA*)H8wV>I$Xp3Shth1#YqrfJ ziBaM_8+yYP>yG?&iD(jw{FxWPNh!gLeQSm2f`rBupS@v=l^|iMDnz zbU;G0=M|5QqN8QC7?kk_<};L&ofkGIz2SV&I-?=&Q6X9tg2yU!_9!PIp?yK>6Ou;f zuX!xvPHr*loi<>&CFUF2{7hXJBz7c@CgA9fxogy?O8-N37GD?+&(MYPE8qJ|e{St3 zdRIz2v#yn#B7+NGTJ7!O;Uk^nG0`>fymUfT(m~MGg>5JjmBS%( zyiLT=I4zB`n6VVx61UiQ9W2NoN{`nCx6xJWc@A z=qUonqeTUdQ{;Fwv0+ma=$E3reN%}c@cQ+@IA-cvsl_J6)`X`gYf>L3bE>biay~b1 zj=~{Zkfcn>G{z0i=SC@wVMyk{x-whFAk=E4#V~{`(SyxXDLPRAlR#|0@j8l0OrW0# zw9=`?6kEgKBsYbeqQ_bJ`n4@KAriV3^!wFBZ%=Kgr|$Hc;KU9i4B2@&Yz_bJu1h<4 zA!=hqoC1XeVvM#Px&SZ)6Qo#5sF;btopvI@qBQdsDJ2&qMRx%~GGSc}Mi{z?IyUix z{XG?T$zKY`Thf(cd!7^`uU>tdPd@%dQaVy=F;REFT2qDhg{|+e=vGI$UeEVG<@YC4 z=+#0k7qO*qX*%_5qLi<%7afLP2`$)bOTAyZPhExceB$Z(fn_efZ((1js~ZEhMYV}V zcJ#PKmb)OXt3|Z=^&*(aHDnv#U7FDhMA2Z^|Mqs^*FN6d_6FZN-33LNE{A{aZ=W$m!QqSC&o-Ea6T1c5YiZ_r4f^z zN7mUQ;6hFw%i&bKe&z61r4_?H14u(C~IxL4}jV$S{Gj254?UkaGDq5 zA)--fYokbINCVOvWiDPX?c_WVaxig4>Ex6kG-|2DoS2RW=4A$n#554&NRA_=uB>&o zW~^QWoxL^!i5MbP3-kF6wH1b8wCY@n^a^WPsBNLFtKF_y2hgAV^{OA@ z(${Slq!$#+}i$aTEH_FV)Qas>ZAHi1Pj$G=4d_DsYRD0|4du+*uV4kMdd zB!uK%z~Ul_sykJ~?g2bP!5hAUQA3Jf|ARNl!&S4r_?hXjIW1fq<7Z46#ffuriJ8b^ zPI`$j9b6ReakG*w>Y_IjC}{AgHNBjV#G1ghH(tNG;V=H#U*V7a@(Y4^q*K3I$FC@s zz3WA6=`;Y5%bwaiHsT^cM{fxH;vw?i``5nBU-*qXe(gJV{MyIDxSjIDW+vD~nqG(L zmko(6?cJopJ(y@%JGWEhm%n?*KYmk4(I{S`7jnrZyT_FY5-;~g?XJQck)F}T&wbNC zxVwY#4vmA=a=cH#Qk|fh>|A=dH0h0u(v6s?F6PgEy;ko-O zeHRxM2o?Mnyh?KDjt*Ge-tJA6mpqsnOU=XfdbBharD8N!90kvE#;7RTdJ98GC67jwlX94S6t zhbzH`KzZl&pRw@ov6<% zy$dm9LbC>)YB$FkjYZGg4KMi4C%-@ph55@bktNdON>3+S6jDH+E9HE$7>?daInb*W zOVbpY4g;kKYqg?L?@A&Q;z(=7@+^->f(reui7G&>QF1@PQ?g5%W**G6;2ssMh?TC zIc;tpqf1Edwt-2$u&?HfR|!xHtyYV7*rHaWg=vfSy-7q6Vm9E_6EcSAaiR%dmz;_f27R$ForSG?~=W&fSM zma`EiI>c-T&ZeDK)eFVCn`ydn&M&SdRY!d4`+|$Bc1)XBzWUvN%J+Zg`^?X0a!m9P zDLqiMqG}ElI%LTV3?woUbBdeDIFZwwWPVrdM@G z<6$5iotpA|rmW94W=Q1ehT)?R&20L`7u2UShUq;p+`d4A(C5_}{r46h(&vI42jp%r zvdX)&ZPKHmuElRu2^~FG!&e7$;E{rfp;ACrb+_ee)x`!9BOzoP4{CxA8IqyG{eIJJ zAUH}@lUm`&1uznU`wZ)7^oJ>1Q|8GC5~z~_R4syIN>&gVBYjb%R>PI`X5%#&cHEr9 z_8#}fC?@WZ4_t=+T>P{9&AnwK=4e!sT1~ix&sEJ2M$zXatCpE+_Hi{ALW&j_bY6|X zGY!bRqW}B9^}mCFm8jNl+${eb9)IP3&VTkF|J(dpfHz^}DTf21#oT}aBu(Vu$a#6k zdR~zjnO?j=duBOx7ccnz75w06X%nO&k%mO?#hjpygIum@c9qMozMcl1gdyazV z&FU_~P&>)A%ba{EY&f;5t2INl&`+}o2*w+uXkdlg9cd8+iP79~jfok?5IvHt`q~xzI=X`v-JHi}Dse&n-b5D>lE=vO ztL{ecSHu)C7jD;!zSI8n_t9)#jngf6pZqe@>)#+uuV|$pai!~Z-{gu20PneV_wQj7 z4O~ZfT=#FBc+lm2TkMs|)kVA)0Y~@e>yBP$XHxMsamJ-#bgiZ6df9et_}5Dt2qy&W{hxy?N(G~4VIs1C&&47(K5rR7@1H_F?;kQXP&5jGI zoL~_y#0c%WgSj>#3em)zA;K~%I_ge{`k6+V2<2pAk74voS1*oj*ChnQp!W_T*_Yea zPDnyJBnZ}AurcIc$LjZ-554UPWK1^3T7dzixkz`XMhJ3~9hvMgdewvmBJm>XRjcrd#|KF=QJP}3H}%{*NztfT zfD9ISr)@PCl)HJgU&cDgW4>C&Dn4QtHBT_FUeWRFUM_o6=>;tj4MyaX*r7b2WwwT2 zb{kF;7&5AM7Eqc+sHD;6P_8@wB|*%b*JM{oxHW>cuO~-ngZhu@i@`X zk0#1!ZM(+J6B{`5hpV|$I&V|rx6=(D{`Qam`oH&!pZ>YOQv1qUjOZ98YypULHTQQQ zu(ZxN2*Vg@%|wziz_K=@)C4;VD~%9^A&WQGJ3%@xUnIWu>5(+9%uDriyWJjhZS+Sa zC#PXlp*Nvc{J-u;SV4M1Yh@`m8AuRoRyy*y%SLmsc#Ppr7)BEYRl0)>h1Qi)g{N~P z4V9PCK6fx~AIsc%dJHU!Qtt!PXlrq6jW$H$Z6FP@#|n*y%*#HS13z6Hf(kBZR1+}N z#!?E?n8`8HI`nQiNiq4^JJ{UNi`{QIn{BPEjoKjhE72I8lr2^usL*?(6jPq&Asb1o z^}Ug=+KEAs94KOx84=mthkc(H)ngA_RPM1H>c}6F;KDwSKnh_Of_GJqDp6mng@_Y2 zToy zp>saXl(kYkR;{Y|G8YI^NJ%&x5_yQU(kZXeli|25|p`g z*0Uj^Cr9pwAjn{~oEEnGQ|N=OJ!`RIeOBf6n0R>?2(eMB?*dgQwK1=T6Ca`p4=e^F zuq>U^Q$tl5Zxh3~QCI>&eBD?3{%bcX2V!$V2$yIYBX20BK+Ci8|WKkc9ge znbwN+$_Or&v)>tpi8jGf3QKK-=yR-CEQ$mhq0i@MbnT>+8HPmD&b-VFc|c+`lUg)h zxt;5r3gX0#7)D}Dob?G2rBOW2D6^Jkwc5JUdNpHAG_#MG^Sbv!TNhNG7`{27|3MX2 zPZK$XkLaB^F|5^Y=w z9+oE7opl3gK7AIuhi9P4)&F_T^4P!HdY{UY0(2FN_X!C<^;1XZ3_}V!5cU2tIG>s;3 zr&-iRH36#bg9OnxuY3)#Hed*rUSxmSmEoI&0Q$lcZyb5p>?4&SX<|-rn4bh%f4(dL4k^1qKGiD0fUPGR4xUW z<;80ue+0|tTm-t4 z-(Op8a+|`RI=z702IL;XYl}v@du`DkpZ{2?Z?0+|tJj)th2eEz9H6|jc;_ZY5dG>i z<<+-^pZkvR+y4Z<_zZ^E5JnptLl#b=ym?TLlQ2zQU$P|X6QRE&KR$f35Pu`A_#^u` z@ZCq71IqUke0%wu-~T_2f9jY2^{{p%M|u^)l$c)KFx*beUp}zBd188TLynQ!3#~Or zH%FUmySdo4EF^6VhXa8|Xi7U*h_)dQSajA|XT#IU$m>_1GUUv=pZpkcV^wL-w1*7D0#=s4L~+M5~2nz8%sy zp*NXc1L0<%FU|0!p4ZsthK$)VPSXH6T7P9OgiR2jLVuoVbD`H0m4y(G#Cm5N#&xxw zMXBiMP35^5daby~A}ICg83`udXwPRyen(^y>bVdOBXS(ID z$MsZ^L$v1Xd4VAkazvlc)&K_jT&#k=tTb(;C`f{SUXd}nu)-n;5JASYH;uJbcehz1 zS3+?|S~vKAidKAS^^!Fngpd>6o5v8Gx!@V_bd>5vnno01PzwdLws5q7K-fw?R7_-& z(m;wv$Eb64zZC49~C^4@Osx={h|+h8swn9UF2291k&RIgee>WI#+KSQ$Uo7lpO zY3hi|C_;TY@$M&I@c8xt4H3iea-qrW>z#RL_SjSizmXGyZ9YN`n=B#=mqVIUBg z+id$=jb4B=KS$9OQQ;75H&MG6^0Bxcb%}KM43*}&@|)|yf_H?NCqq0FNGVuRt*pe_ zDSe?le!=nOhvbj$t*LP?^hN2t5e@_KZbEWG{60jKrUgy6jNkb=;s^KiFFrHpiC^~^ z1{jTCqlh~q)m(6`k;lOfBG1n-S3>Lb$1@TF@zsRZN}pF76Q$8t`-~EUyLz@b96Q~a z03(=-1Bh`%wbGwv!ZezQBSNc|hfFqCn+72sqHWaA&2s98WDVHE0HN4Moj^aGtSH?( zJTK;?(~h}nm=8Hq-%pi}}<6)8%6URam^3xD-n z|0@5-pM0|d|Cf6_z2hk--sH$z4HMFzeAEVV9zd0~6rZ^gAxy;BPz^@BNn4_XGEC7> zyTvA_(v;pBA=uAu2fI3V6GdeQ04?T7YwL#M_cNo@uF_!6s=78ac(@Znx3sA-5RSL> z7LYRU@fUseg85@bpC5@YhaFuQj+0eVM$g5hyKtbR>j}=q?``$0O`$z04?pTu4cz_w z1hLT8N|-?FYVO48V8YPo2T$B#?XGu8!AMO0nbhMzBneuQWw;K>Bg%@cH^DK4tC3)| z7@>lc(XzULVRKF-BT3ZNnzqSAB3jK+s$v2s$p=FoF1EH=qL}Q9lLRl0NWZv^Hh1dY zwD*NY_o}lsLL4ilZRd*H+@V%Xk?~S~5EsC($AegOhX%Vm+Bf>4mFvRx@4BZlU1}WL zvKee@DK4m3t37@51cm+W#2XIZ`WN{4m;YsCd`&0O%X%$wa2?9mg%sAP=vP|-OLV!4 z>JqLyFMF{?u5jZ!LjIaW@g8YH-zQRBM}wf3-?=LE$ospHtDn|gocZ)W`rr{F;{V>)&U#W}?u^GkItGuI zl|AB3hE6PMb4cU`UO=nk6R;R?vAaP!9<#3Hg3Cj(_rTjk5WL5 zsK;=G7>rsm*xjwALmnYi6IW+zylPp!=xi2fi360?-dA$lnKwtRxVl;qER7H+w4KrC zujtxsoj;fhOXpzZs}zl9r3IUKlwCel7R zQRGNSqZOZeHL3>8x^gNDr{}kSxYqLj@PEeN`m6sI)7>k65S3s2{!jiN|Iv3o{uBRF zU5xb9qf*vJr0?Pe6A!?cBjX^ftMy5m$4#Udn5(j`-Fqt5knCN_gAs;4{q~XDdw4t* zmQw9j_v}PfWu6Odh%Qi9Y7KOS`K%^xScI}DU;T7}ri`OdtE~;g1bHwLRdr!sT|2#Y z4%1-t3nwzE3dIErH-|`26FWRU7RDh^Rd{|<-oAmiU&7;q^3~^+7q8&Mj}y@aiYZ1b z`h^;W%+9)gf!rmU5g zg)uwDu3pg7=3I=l)~IWxcV!qeh>-;B^ycD#1Vf0_VnPU;h}9{DHg9)rb|!Z*M3i9e zcaPze5Oy)1ZC^}1C%Qe411ZGC4<1<XlOJSg|VK>{W&={_cNI518340$5QGcm6Fex$iw;rhCY>*B?uqBh-bP;*a5 z?D~jDL#f&{n-7T`g&Zp(bV7nd9ymy#tS~QjkJSogwQJgHC1tf(7HQl}ku+HBW*Y3C zFlvf@p79u&ZX)Z_n9qe;8>t9oZQLG(n_F`Yx2E)_wAI|c*&}nxY8$xwyTq$k38Zp* zHU)MbBdrCVo+_;>w>O3}pHGeIjO&r|KKY^gN zQDr4%qj0slk$)qq>Ty5a>YzcXtr7(Cm{4rok10}HC)7e3BI7g>Qea&dN^7VHd5Cni zc{vCyOX0LEyttc8WGzB%9>vv#x!p3i7Fl~Pwym>9zir`qYgnJ7dfQ$7-7 zBrp@C&|0SjB?Tj&l)~IQpSPLMme00)v~M1N;2s*z%=1dh5gCjy-EF=Wb(j6x;4vCO zVxzN(!k5)VxJlsk2rrX0<(@8)FrM89&nqkgGKjgNs|y^m#|t#Icz|;=lh3u`&2x_T zCgb4qa`oC?^d|h))O~2^PX&hXKAM01S_5>_OLWI3l4xIR-Zt+pWr5cL`9w?z;KB!8 z{on7L3R`s-cWnD63FiK0@kqep4deW^lCxgDUb<=|H_$UY{*>KhvL7(Bf9}g7At>W%E#iGa9ZM!ea*HK|=-qFZ!}I5EqxmnQtyWP)pwWleVb`<*M{(Rf{zFibqp zl`r2sv#cYNHY9YfFI^M~TfOP`gIjT>ThOb2u)4oj+SQDKDO{OIt|??5>$%5|^(#w6 zzX&XJH=%S&6CM}kKmYzC|H*&;8DG4aJr;EH*EmsaLw;Ijqc_*HWl#*a(6fDq`Cv%d z0{VQi&p#b4&V4Ji#OTGA0$)^MLT?g0RCru{{5Z{G;zFuW7gcS0wO0f3NkAw6`%P4{ z2^`Koj!TEf4u@oMIr&NyRIa}CqL* zMA;S8{>1<2kNxnQh4>p`#UI(n=fF!^{e<>qCH=6_U$?svT`QpkS`qTif$`NH>v`t< z_R$KoLn02@@V001Vs${NdlR~~LTf7_-dKZDEfYNFWOXu>+5)lLVdpU1aQEV#))xA? zGv)(LT zZmuo?bg+Ui&GRGO9VaOwH>0_}EtAO9|Buh;{n4UB0LfuTvh}(WZjR_vr9M26Z(kDb zk4Ug)xjEdj<&`$i23?JO!O;A=L6{Pngs@d@-Sw)gqB&j29BVZNa}1CgdaCX!fshj6 za70_BFYCqiwxiQ@&&ng2up~(E-1x*mqH3Yh7%;rKi7vcr!iwMptuB`w_FY)<9)-fM`xd0@ zMHkTxm1>7`%Uo5YDmS;ceEi+-Fjsgp&z!${hjhGnrZl=SDkSdvauFeUe245Zl}I9? zz*9RpEu%9sa1)M9WJJ_*U8BZKjgUtpsVpm^o%;BUt}7vA8-uT25@<_?{l;Kpv3MrIx&ni_SBs%Ct$`tg+tC^}LEzou)R+Z%d4w@oL-lEe z9FbBjIv|>GOS-_#08eM+{)lGpOpBtAvyH)Ff|Tf5T>&re556JMEaQpy`M>9b*+fG|;qt4O+}-P!xOyshKl0-mgtdKk*@`q*#T=FE zhLHOAr{tk1-RI~y@X_LaK9T*uaQZJXK1 zX(1Pqh}S$lQDSeFc`dUR+tY-N{#(_YoasWU===UhO&B0*aEsK9=3CZqQT4xiJc%v8Ts1}bb$O) zN$+-k(*Sxv@(aVAp5EDKPwey_)e%VtJ8RT}wiWs&-dJFLHqlu0*b)4@?;f?_drQfq z-Dv083RNlF5nz3`%w?+CZbC5PjwE{HxfXu>^c6q)@$azyVO!51-co=5W1hzY=i*!L z);g_q))i_Nx0almR_l?lZS-HNLd=KLC%3LYLp2zA;U04Ztn)x zGE-Wyr~xseU@wi}#8)Zyr_wE%#P!?J>fcos;xmmE-t>) z$%Owg8L>sRp<;B%<6U4fKslv!s+u@to?$sbtHIzf0klQNab(QG&C$pfmlz{oyQSLa zcOs5>#DY43A`%%0bSE__muL$Fdb1cbl|WxQs$rkM31ZPJ6&@ctb7~w8LLLH11I;55 zQwoe>B*o-&t`UtI7x!UZEoMOijAJJBzKbZf1xdHFsjtbwBRpg~uRG;YB@m+t7sQ1& z!5bF6x#)smdLRIeOeLKys{sVG6@bvh^^1;fOvI#^(xa=V}=icwLj{g1v3)!g`*8&Rd?~5t)>(a$5;f1^> zuKfM}!i5yOutL8ktmvdT@ZqaZ`RMI;dH4JU&yO?9+*wwmTiPP*j#I}eh_CnJ%`F2R zZUzl|BY|!b9JO^U1Q=Z)HB5o&kVq*|R%KnGv~EZGMZ^^ovw*eOdN2yjociCJh*5n8Dd?kG7Nznqt%6KF%oAILKMUW z6-E~^`jtfCd@|x@o`m6Go0i^`@fZlHQ){)zS|^VMr?&RmFA*c#eNRB;+6`@jhh?cQ z4vnOgNHI`rqjjsrs46)rFYqaz5E-oADOU_L7nVy%q+z7Z3rn^5 zpct`cVzOybIkTWUdeLMw;bnR4K(5{SWV$27cEUfEH(*kisWZ*E|pwd`$0SyE( zF?ee{5&4}6fA6z*eEH4k{152k{3i3+e9PU3%HifLffwD~(Y7cAWG%4F5J&Xji)rm9 zmWT?UOvp!r#YmnulErpFaH`uO!)-De!9m~{tr>d^*5I7gL>1i^7YWw5^&>Rm4g6$+ z46Rrs#swMRjY^+S=ME(zqlvfoI&;6m0}WS=$Sr=rNeb@~Bcj49K|T`n;Ag%5{@F|h zkHz5XusLFm_Q$IjjP!oTN^sFe-h?9;Q^F>^&?m1~ocw3QHAUGYIxHpHuiI5@%SIX5 z>Tpd72O%7k^5~7*^-9>01wC6-qBIxI`}?_kK0mLl{(dI4X6!ZMAvwt!7nO7u(uk2e zB)AB~oA7cFI0B1NGGr6fOhzQRQ1%8}kos!pnvndUv!fl3cWoznh<8I+8s&%22jCX6gmx3TVYo5g-#Ml%7* zD?uLwezd?L!Y2cK;6jW|gfL_OKU|IF(Xa2~;*gC#GwWsk*kXuWe6^3AVzrKNC-f-r zuEQ6y&mFQw0)?v>rhF04Z$hc(2jzng;Q7{%!SPC1F<#xgRrh&@Ea<$6w3Ii`kk2O0 z7knPtMJslV+E10|2bk{-(ydqf;jf;A`kAs6n`?TvnoM_UMRbu?=?1i%G7!Uw+D^3g z{LLc#jj-a6?Bn0&um0L2Px2Yk2f{40w`aoJ_<#NT|A)Ij^^5*Q4PzdW z+0=zmBV9VJote*p!~F-y7--K%vEV+EK6*u|jpeH^(WR2Yz^n@k3+eEZ^vMh6)0y({ z<_iCtP*$3Df=0^21L4g?nv8cG4#r04OC=5w8Ir9jwS!u-v!BdOuIEZ!s`X2vIX{;& zgLXp8wCBYz{z>R-A&vtwjI@UnT^ni0^v4tHPrhP!aYwj2(oZuwyQ6DL^m(DDK)9Lg zyFV>Poao&%n-dhMr!(Q@Ju(c|43%I_o@}|r6puOR76H;97HinV=((<*ofjfu8t6~6 zDWim>olD&mrX=0m# zrry*RYk)KtRv1IUHbqS=W@7r_C5KO5(;~e4@(t;Ww;UvSWXV>{_Q;2=DI(WyQ;$-S zpLNP?IP0do=RVb|j)-1x6uX#Wb2MyOpB5LdTffhc+E_;Ci;q5H`s10?-5vUT=J7{g z(C4##Ug-#thOpofDLYw0iK;}2BqwyN+GtpQaib9kzV|f}MfEt3K%{7)^+py$K9|0_ zn8F-Vh`FFD{nAwmks%*>ar2rn-x?vLH2T`Cx!Ic)@Lhu1+syg#%yfF`O-Lc6L|bNX zXMLAOFU^D`tsyZp+)U_trhWD$`gk^#y>C(_n;WuwEV^ONRy*UpIDj_v?P`txDApY8 z6+J)Fzl3mqLl`2u6nZzzs`iSMN_~7FN+unSNDlP55_&R}_z(%%oK|TZEu-$apwo&R z6JbcS)(OXfI0hIK{c)kM6;3NurS(QSPBwnMk)fs9T(dYH`;chsLU^`(1${nSDmx?)3;WT^J>F&YlIJ0EEl?6zInai!b^d{;(zos)1OYr&4F+n(IL_wp3SAZ zxzoiC&)Pa6CFjRm^UKh39<34rG7PBA=I=VoSI?$C`R4J@Lm2rJo<1D-;`Ydw%U6H@ zZys)6|7le#^sQ^57G=D-W0(%MCY>MYr7#?BXs1qZ=1_|YCrsh#^74JZIn^k zdNGyMCnaPXcUvD&En&yRkRIlp#thlwfas3q59YLwhiLB4hX+&M3-rZZ;vLG9J0AVH zgV?&oT6X-P)@GuBdMQ3=br*XGXsgs`Ya9=gsjgK#6ERr4SDeg=ZQ=*Re@pVkqHU2W z$;MHR-q?00D(Y010An_Bm8>3hWNt1)HCzOG8+lQ3Kx;)pcNBjG$w)r>0oJaAcp=_l z5*OTqB#6yg>&+WR0VCh!(TWgFP&L6CA#X-r`?qLlf9(r>X-KLUfkqHRZ8kr66E673 zF?fN*8qMYmR5Q0n+baa8bZ(j6@#=p|*xZ>GCDA-}%>J`RPBm?c>2R)N6$IjN1L2Nk zRd+cz&)f9sklG$$$B1u8bzi@`Ud7qiF7Ich6LL+ckPH5si^yPetZW6d{@yQN>p9*> zjVk<%HCC@ho?f`&T1c@OUas~K`@iq|m_RY*F~lQbxJN>uw3ReOLTo#{WFwf@W(}O$ zE-}Ds^?0x36q;zwxV75b8j_I0MSR+uQuZ8Kj~B@%6-mh>?)pV|(!7WpBjm{%0P0Bk z5XFR%?xGG}xT|YtJzpp&8`3-EPL9bPGaao;U3GUm_svD+kt+S6k#D((2IA&mv;7n~ zprzSk8|PXhrMlF&mbJ6r$K%vE2qsr>`b%6ip`n3WfqU zv5~Fa=8BUG2CaKENAWpXgOPahX!y|Hk!Xna)+!+-k1ALQIk_)dd|6K0lfJ%cyr=?QO*-i3*(`fJ30mLsy2&JPMe$61>yv1#Yh#^kj1qt^IG}dw{Q9A zgGldZLNGB%tIZpWfzShSfEb16N81~Q7%hUZ6cYyoJ73Gt>|CQ_;(*pkS-E`~DOCxh za`Q5Ba}zmC8R?DNV<1nBRx3GsEMaS;L8!eG)g6%C8`u(vAzD0%nDC*y`fqEV)U^;X z!MQbF;rY3;6y~}TTh-$YEwWX$6QYp)d{mk>b3?cYJHRMI zrqkB_e7yJk)#gsB(~*2nq?>W%YK;;Xe5k5Xg1TIsj9%0Y5st?L-~QGw@vRSk8Et`5 zR#I@mn0muQ-(O?jUqOFHyLh$i%KL%{HelCtyS`5;7oy*?$ z=5|-5tI+~O8u<8wpXXHGG1mv4pC5QWpNWeJk^bN8{b{Uq>z3aK{l?SGIoI0F+nnz9 z)!J3J8k1lpPGVw$;sm6?2S9uvQY46g5GNJcDPzka5+IN)If`uLAY@@8q!1|(B?wS# z6A>VgLIX7FK*xz>7bIW0k|QqGo+&ilT5@3q%n zYtH8x&lvyz?{9_@6Eb=$g0rPV}AsgEii}!ZLT(+4t}mDQkDZYT$HIrcoGbU|t&Q zVsSw>e{sjr3d);@MlZ0N0;P1cH$sf8CGhyzSy$!Ri$KhsT1@aT zj*-(zSxZBYofu7s5Cnfs#Hg7mI?-W6FS&5MZwlrF*;6N7Ful#lTxZ8!35%MtqfCe(W6)d zQST5s>sm-Dl5(Q8LhqH@0@>qer9uu9K@Y5RXPgop6W>YR&Q8$!%Hgn*Q)U>QcdikU zObnf6IWo@&cDq}^1Z+^5b!Lc(5E7Ar7?cd}Q0_#kk5 zTwDxLxO^TLaTFIMjDkD|eXa1y&$jQy3%#NPMQli$T)dF&9@2{U+%66~2_9Y2uS5n1 z&V2*j1Rd^t*TltD5WUctZ9fWkknW%*p}pb~t${~I0mI3W{826%8|Q})T2TnS|s zr9DD^59C(RS3X1y_FAy`bDq7Ao#Z?uHaexEMSZX;Nb%>eIq^3!O1cc(W#^f(t6m)a zlf^}G1U;BxQ}!+%?pn#L*LP8z8l?r7Dv4EPt77GuIq;@B}L!Fu^u;LvN)qu zbv0v2S0%;72haEX*bltq#fOof`<1sGzw32X@7>X&H_xPr0sDK$=s1AhyGiS<3mtBarm9E(`knv$oxk>PTyPb= zk9I5Q6zyluY9femuwj{QQBR zK{z1#mioD{;&Wle@6eB*HTLYoriDy2J7+2m~PNeS+%fIX}YpL z9XWmaiZ&mZ;zWqi8j%8_CtLduPxN0F+I}SG!RZj4R=ne^W|7(4BbJ+NRfT9rV>jx< z5YR=?HG!0KLtc77nn!?4qYYGj93R;Jy~u;-_SMhLe%p(K^h!#IMr$lr%Sg21$O>tLU3!CKiiX}@ z8d|NvD>?e9%?3+3U0lvNIm*l%!NJv{P0azXm8e#!#-11%Q4w$C2|*N9 zf3GliQ=pquK*hy80gZw2**#zQk>AaW|I`n1h_Keq{CHrvy(P4CCQQh+9pwsSVV~Pb z7J5;%a_yKogTBs1lb#1J{VFG2FY^(zYkKXiXZpHs4&SZFQee#F7x&x)hi`s|kALPD z32z<{EiNdq@S4?m6&*)_VWNwm-5PqEWZ8J_S0sy!BCKkxmMDh$Z#06MTs&^qEJ7DY z(ryJH)<7ZzZl1m1_VziPD(m49JvL$wMh=Nawb5?*!$CaLT+RI$hdpr|kq~LeBiafn zWx6-*WJsj2w?_J5hWZ)2IhZ*+4QRIj7?-ybr-YQ?ie4ey?!7CtBBh(_J0}}n7r zJU-a~W*4^>p5HT#_V~oQyd}#(Orz0cf?apIHe@#u#=(&P$+x4b=)+<}jOVv@I9($$ zWtdm=aYl+oAgL;{HCc}bl#EP+4UM-M?9B+zcj%i=KUJg2ROqJzvdhSB2e&(T{njR6 zr$X56=%FC1p@Bnm3I`Czh|~_J1$|oJ)R2Aj!H7?~PQ_wV4oCF;=g9LrWC$kYTDsl4 zUVLt%7Gu%|o5*3YPX0y%AL} zu~r*|gJxowvv@+T616q~zg)$E=qAQ-V~X#mUF1x#*yxucO4{$Z``~+-?!QQ>jap9D z;O&maB%H+zD&Z0Z62e&+X{};+a(LtWx1vDx+-$jsC**2Kb7{Hgd0641On>7pb%u4E zMBWK^=bD0bZrtbTFcvuY_2Of+gV zn`V@ox_S)Rz$Nda+wbCUi1ft-l3T1^oRF9Z+7L;;Kl|E5N9z%t80_b^T9`g9@QfIHF`v_3+U1j}( z1s2)VJ?>nD-VXFS6WPJ;7HK99r`eQN#HUv{*F8r1<4^xoUHJB^Z}W?P`DggnANz~H z^M*S?2-%<{y;pkN&YB9PDu=l;WDrxY(YsKpp9P)@H&dV!7>C4Cl*fbN^v8Xq2af~^ z$!J2|9`my|Gw)@K;)&i+3qHgh{QOu~`#GigV`wyS$J(jA@ue?JeCeZ+oM%qQLM@$; zBGWDzIWHyVb%oX_rPG=XhKC{3+iK6p^@71EQ@wZFD||pIQIViLe@_^1P3)9&psa<% z-1y?nWc~N05uy0(5F^*3eGT#CNSzdPAF#qJ3|voztna ztV$Y$Dcj8-LAq$PH+vJducb22jcK~< z8?9Phvk4|bu=B748yMHx%|#!>yG?xGzqWWM_1tt%0=2WEn8;B)`n`I(kzUn4bVbyt zAh_UWYZ!Bmw*D?_r#fN5Yk^@1Jb&?mFMsI=`0AH_i2LCK6fqG!V(Zd7qQid=F~whN z|KnXc)Vt;fy@)l=`{$J-kSp}JUae2^*Zy&vu%c@}Q!Kjg8MphFe9squn00-_cRu?~ zK6~?qJQous)UCg8sfFylv>IFd`jFuFWfF37{C5{5Msm(ZZJL#nQwnSCbiEW^7GtL# zDdR*aHF1+U3x#nP88V(xZv&?oqv@8tR$bQab(9mxx>B{7&?82cMOo&?vQ(B?8Ha#O z0qIK0fuRY@3=dD0*5Kv_ZuXrv2D`_qGUP-~MpaaVu7Rf~Kb|UT1bYA|#9dY|UsRDI`j0R4Urc#k%#5YHbV}h#^=#4QFIn z*Jfy0@gns_WLwKZb4=-k>XDMpeE2rI|s zNT-qWjv$fRDm^wDD`jn{C@CZtlMFO02IO$!H~-`x0^i0?vZm7HTd5}V2su~7D1|?nZ;^(eQdtC zn8}Y092aNJ2=F2sWve6A2KBoguKvY%Mti3=MWk6@N;bk~JCiH6 zy5cy`4^P_;P2bsU&qb4lgun-f+(+%s}T3_rLV$GhF|_Ac-Youk04nVD9NG& zV=&>q(d%gRen9m#OMmK!IaI=%0I%-u2J&fT=$&4gIk>QF%`}aK6y5m{EjB=vNT6!9 zL#FRejmA<7)9x8JAG}8xN7jc2>arTL8lmV)RYUGS)dTVAE$`oaKo6@q=%YtMgoIK! zy#5aR@*Zh77|G)C$m#JF%kd2%Shiqo3q5x0kuC?0-}o4v&9N_lbRm*l-Du*6q!BqB z>BpJA-=n)s+>b~Mw8N1w?F_fCYSfA(gcN9p0;0rSLVL4=){q#+TgrN5p>R7!kH=8b zxU>1ir=OzT2^6)XwNaQ!%Yor>L3h#IA9JD4i@CDaLYr68Z9vNaia>S0LKw3-+iRk? zO8D>|S$9y)As1t^Cb0ziQf&y;J9?T;9MK_6*<5g4&SDuEGFl4kB9asRXq)1^X%+8%{rhbdq@hANwt z>AQ3pHb_xdj&8VezI!NgiMki`oqsoBqF&r#L1;sy#9)+?oCrlJeLlB_R(yzn#e;MW z_J0riQyR&KW5)H!M9FjlCoLq85-BX$-H;I~T@Q>h5{PuF54x0g4m`B`T2(3Y!m+%i zA6JGJ*`+;s7zhG!u%UZf7U+qU6(qB0VU;7#$CtDe(c|gtR4lciA(QSV8`_@=x>R&7 z=xh_8xZgopX=S0;#(F%lzu#F-XsMRxxX*+k&|f`S^CBl}Fx6%atlfmp(ECDrdP0{> zzQ3_L^|aVMKhM_u&`MfQglRN7L)T00?+}qajxlzzl~#03$YCMmh_0Rf`ecogrY6Sd z9o2^1O=xJeH%I7^_~COas!j#T2~8mTfw+5)zBy37^+*cYMHJ>#mvKV&JNj`Y#1pb+ zVoqo&wBv$|qYqG;x$S}WcqAMPvH(MaoNRz10U1YguANTQ@4O*RBl6xInj-q@cp7N-b^Wp(0CA;bH#H2T}h^4XE_^p;oel#zdqKlnA6`TO`+e*K@|Z~2~okbmvh zJ}+)YVu;k$*!z-9@X&$rHWH^1l}4?Vy4qZ@HIsPt2DK@lesgAbYg^|qauFnm z(vFRG>hxlTcqrm-FT2O$U^;`4fE+EtYHM;V9l4!son6&FU$K2MLO*Un)ewis>CqxZ zZtk{&XGg|-5o5$)YWB7JVZE&rQ0jS*O3IgLjG*U+1sZK% ztSi(LGVRQHt<@uS8d^@MWD|pl4Lt30)`Zbk&~=6?$nN%nhHyurHZ}W4SuHjs*gC{| zvcSWbTtwjwg%F(*VgebFZfleUhWa7iX;aNkv=X8>WBQfK{jxT;s+*4POh?!#-CL8o zw2Kg@6?^%L6Fxg8tk83_!W8qj?|p#}zvr)Kxc!iI?UeZh@rKqMo$R7s6H+v5e{YW5 zjb6dK(H$EqT&^-NMATfFXSeLTIjhRm1je7EOY<%mQLiny7F2xqqq!6I+_lknsTo#R z@J=o9-6D|l^A;05mMUnt<>ux0GVCICdEoTs6(Lu2?Or46c?oajJa4CauTz{{QM=OB z@$q8y(pup-D|t|dn^^2e@753q!OKn;RcJR+1!^>#vu3~}PFltC*xjLj5fXTBrgF}< z<*JW4-euA*QjQCKHXObUrPQyni_^Jp&gllBTCLU&9oYqBHyBx|LdfnG=?aJH@g#zt zp6F#YAwdB0VB+JY8yzNR!>w*kHSs)^wHbvcM#3Pp<6@CnH^Iz$ZL<<9S~~Q_V)sIF z!o=yUcCq!%Z;%axd}^@UAq;jiiMhJ8DiR}-K^W zd~c7lygtVi5^PASb%lPg-`5FPqSh3Z6rju&OO*#UEQh3vbH@}ihD*^H9f96m*kR%j zZJjPNvP1|w6ROQmCTI!PP~6rbZGl!eo*wz;ul^Oj{ZrrKccgeT7vk8FY_kK+A&^Wi z&C)tg#|Ei0WkawdCY0(bJRI$0u-hfpBFsx?UK-<&2m;GeEYhzl>uTqy*5P>SyeA_; zy1TD~MflK35{NmYO)0Iro7^Z5szR-m-6(wRE4K`3<#e3sPBs$>#GZh_@lZJ}M#O7P zs6F!dq_n#5{JE{yWwoEJs?@dFy5X*V@tPzgVaVpdI;pw1A0EZQQo@vlQaZg=hB4c6 z+Lfjk@k6VfQm*3fw4c%Xy>$XYkwRID4@9lj4K4(m#*An?ufZW)A~x39cL$Yf-EOsU2GGtvTQ!7Eqi z-A(S0lCZxSdGEzXytw@mcQ+q!GrY7xeJy9_DCbB{-Z3{^)1iKg3{v@P2r8~bl6pM= z`K@2^*Vvg|pC)ID#kIK7M&TC}xL*Cj+PjmLBE3ZdJEpwn5Kp9RBo}FVj{n$R?e5gC zZTceK6KJKgx<TzffG{DfGK_%`p%#n2ib1@m zC-|~#TUs!(Qm?`|25xd@%#mS$vaT+cisZep+eP*_VzCzmdJ8-~Ro=esv|?hLX=gUr zULnQEFhu5)H}oY?oX~W$i^LGwPr;%pgOL$?SMm^v66sFJYbq|}G!d5wEH0^Tg%p^ zGvt9W+8P;LRNWh>WX2q5rLwM-DFr8BxL~DLa<-nQ#V0wH#;H^y!J=LK`YCHe^GZ$= z9VMpZg5yrYh+Iaz>68jX9+*bua5%D*N(hG4FQp*A`fvBj+jZgN#{=K_{8awi{NrEzdw+w!hhHQOzn2_d>M9lm z;o=>#iKDEi<6^hLMF5Kr!TUy5V^c13R*RKx=W-FNlj$aK=)Rz+oAxxoLp?|JQO$%% z59p%}U*B2KH#hpWBo`ly#&B`DZ_j7eOWeoF8?AG&#~9oobRTT^I{RatdPO1S9jkdyq#Svvc+)>e#Z6Rg97c1X}|5j#l>Y`^)eXW2Dm2|S7aM9%g$fJa5d20 z`EdQ9HiS=?A+)Y$B$3SppZ)cC;?h4&au#@~Vq%TahgwIq8gelDD08(sKSrcFu_7g? z>!se<2uWb)$rZ1ogx>b+u3l!Wl!Dq zZanU6>nXfL%i>%yh!5G%-SnCKZ9@&`bN8t2YjuBCP*lBzC>xDoqr6K;$G!xnAr zeW*>;um>Jo6n2Y|XpY@TJCEMSd*35O9{qPX`MvET2JSZMnl~Ue`b@mKhtJeY|GMbk zU*#;6Fj9|+ALL%p7bbL3!Jf*e?LVevWrczIM_z7RfqPdFZ-K5!;vloOO2 zTOYTCo3WQ-~YhZZ4FaNBneC!Ip~Ol zBUQyXON^MDVkApMbfiikNpxORqsidQdS<1uljt%t)A)5+X`)PhqCIx_)=Z22D=((gRQKZL60C}~@) zgLc+dSX;4;I9Q{)(kVI<5Y}~JeO<}(4LJ@h%YjxGhOi@v1tZjM?*2@m_C}uznanth zhz8OSk*@T$Qo2|JNs?uu4jIu-JDmt)rk6&W7s#2AOj##YVYGM)O+s)1LqE=}bs^u} zlkV?qQD=n|Eb?R8!P=;=K4yLUn%xIqMkUaSVf!iZD?;gKhtVd9 zkawCb8@a+UsOY=H7|%uza>>=+8Zy=(-f&<-X#IRPskO06C*1AWzkJT{a6*rr(wB=^ z8!YO=e_Hbq1ftm|S>9np45(yGmwNSM)gpqjVXu9&{Zs98glyyE( z`-xF@jQi&d!w98PXB)&e$IiwaY{<6dXOB0e_n*<%*-%q{-<1OKc1Ql`ncYw8Tf#n{ zrJ!;*5XVG++bt7ZD%2T0o(wxoC+-roM*s8;ZLNfHvZ5nl3VeicJ3)j{#YJLn&+UfD z)mA*sHrbj}XU4d*VQiDLgOeOgizAW#u+Rnw@9*py2m#5#(cI?Hl-*#Mwa{&Vd=pK; zbX;H+^k%ZcRxB&NKb{D;8Ez+Jw?lTuIE?#*zCF=CdnCTNCp1A@u*u|cfnBm3K4x@X zJ*z(3;SNHZ?QI{6yUz#t6a4fq|6}~n_icX$_#g9wKL87fK^7LG zN$Jlb_ykf}HKFo9j}x7N!_!;JdLZ;p&e5{WTcOrUZ~k}MIbz~+E>o6eq4tWpD>e_-pi>NQ zEg?cz%3N6>O&(*=FV4wY+;Qj@ z{O0b8kWI7^vJoU|H4;y9u?NA#6&*x9>~V5#U|)?Yr5lYyJYoQIe&AG%5RvL3watEZ z@H|gEgVktan4c%syVAo(9t!8R&L{=$8oqX`u+6|d!bC3Pm2lqi^t;@%`fl{c z)$pIIm@#n|)4R2?*ACYi@R!QtG61^jPwIC$aM`pqe3zBR-Oq^a?@b2s-50p~V9)-3 zm97s20S5{;AO2=lPv|ttmFjQ5vIYn z(%@Kl@!?Dg_)x_!>1LPO_G`4RwuQvArpY6S&RPW%Z}@9E?u9%>>aoyH&BU>4LIK?x zx1L+HkzMbSf{zv+t$(~rWNU*Khrt?gD zSczHTX0WxO^z)0WYo~LfpPEOWIB85xq_J6qZ8`Bct#wA1nJ^knLz{RUkJlcuDU{ZW zl{ZJEWvgkz;54mjFMeIDE*~aqXjf;tw(8H-+={xM(D-QI8%Cth=LVw^Jma^(@&vtD zeINW{IY%UQJF5t1`L6_zJ6k%Mnyt;fTf=nAZ4p7zL>Nr=OI=No7qiu@+EI-j5#adS z$G`eBedV)e5guoU8wc46;dke#4g8m?vcnphJ5mIyUM6!aaR(l`L>w4JY8JcSq16{W> zb7!s9A{(<1bEGyq@5U&E7VNQ7I1l`{)_zQpuFd{ClMvL!D#<^m7EicEb~Lrurd!Rn zku^$DTC)fR?Y5tayM;H=o6(2t>+NyRMo-&;{T!+;k_Z9DUFP|V=X~(~S9o^wA(7#H zy;Z75iO7}iVG~rG?F(GfC$5DP=w+|$-zA(l!?)!!%(!S6^>VG8#f?`oifvyH;jcl+ zxHeDd*|ys0v|f1o_`t){i7$Ncy>_1N3$?$YHp9n<2Cd6EdM1d)d~`J$f%rf_gv$wB zRVW3tZ11xWLZXRBeyEX>gl_kf=q3J5HX)E*11SnASbUDf@fgLz$QwqM)3%kMm1#`e z+zbS<$Bz+)p)-vU#UnQ`5m70HWofh)IL?iAQGXwyw#Zr{>ryGDQya)rMS?B$DcNpd%xFk9bhCTTBB)|grhW2zu@gf(_g98&y}dM8eH4?j+Y5Kkh1>hUw72d{ z8Y5Fqv>9Tudz)y)G*yT>l0)QpSWP%FWa1_W+}x-{>Y{w|$;#c`z=t2~pf_97V({Nz z7}Jgx8w)1_w$7%Q7^h6kMzQG4*3uZ0iH^1_RXQR@0TL1Gmllf_Niow~wYngB)K51$ zkZPxQ>nPvscebX2M-&OQue2T*hCRD!Pn$2c|LD{WiymvVwLlm^GOhB|8s9mseCwCK z!{=_)-w7X&4~1`k=QZzt_$xfqUty3hQ^Jj`COVdA!${eS4`_Y4y)<5}-jl1r;cB3d^_6L_oe0tZWgWo4~=_0(Z}0{ZKeQT)qB|?I&%5 z5qIfVkJvcr#a*v*KC_3>QUIHR&Y(}&!Oo*O&IF2z4TYDh*cJDfwC|S z&xq0X({q|R{mP7R9Rs2ls({Kn<_q~QJ?2(>{T4yzUN{qQxCJtcHZ4S_b z&j>op+IV`ZEGO%QrD=!kZ~Q(i_W1o`dO3?mWI*WIdC) zIT51UV;qCM?wd$xadAmts`e@gp>;)}0tru@<=;R`U z|N}-e})luo_u{e`u7iVHaTzbNnE@Yqq6^s zaQG{o_IPzqZr5nKd~Fzna0fk!#gKNWCpbO`x9>yTLrYw!A^{hunHWujN27QPk-bIv zeDd1Xyk{?k@doOX_jopdO2?`67Adz&@TT#^+E*T1=j|)`d;|VmSn(gDh~f`^y^-b5 z@)v*hC-~ccl_y5V|VJ6S3 zyGR>t?X2_4bhER}(rVO-;u}T`*&J);zo)du^OqlR^ZYqwIkG$*&}#XhN~as z1vvGEg-#j++Jt#sSatQb^lHr(pq>`eD5RK?Zfe1Z<&}<-(OytBUPl;&-R>S;Y*Eg; z37uEaN|uNcXhF!+-Zr~tjT$}8Hf+h6x}3-%8{Rfx&B59TIatH$^($(9YtqZsY1-+v znR{GpND!mY9uL${-7c@noA$OY~DkUQ9^0pnHi44&|IL z7c|g5eM@{P$Oq4@$XqNpGsr*~ykRkBBt_b*N83b;5^o15Sac%=bkCA+?!=rDJSM5YiO%9ZG@f>4QKRgr#n?CqFSB2VA#n* zr;4(kDHc|I6d+C`^6ZYX8(Csvt(_hq*!oInG=4>|)*O zPgKsB&NIeyQ_F6u)ZqE;s_)>vH*xnF|LuSFsPZ!geH*|@PCWba7tkO7I`#fLJpKB| z@QuR5Y*MKHUEUhiLYIp`NhDm(0vi0a@==Wh)@~A&Q3j#}nl>8UzIH1BxxiDyM!paW z77@YllktYz`}atBVmZv{Qjp#$OCf}0=xw#ez^W^S#!a3GL!dk^Hed;XRura*;e+S4 zsTU>ecgU)=T8YnY91UKPu7V+Bg(+7EIfK-UJk=~pS2mxKg#!fea|9CRR1u;*CT@rS8-Y!AL_)a+n@go{M;Xg zuMdO$OEi)yZAJeK{M=6r{K%hO`B{LUxaCLw?34ZZ-?L7*tb^aQWE;onU9TiX-215Yz^H^+a0G@G{YAUHxevVi8r@pbNocK(sYvis)*D70IBh|ESTv7-mLpmk;dU_0dT=sLvt}ufLVhKm$m<7>Ob2&kMLuV%06fD7l~ zA8|6ow#B)blJ2I8P2bV|A`IAnDFC4}>>|%!ewp{a_;tqnFA{oS+y_JwWnOJ8A|AOA z;@L$ZVmZ?rQvd9VJ&P(8xpJb47%Ez}g5|p9q8H5PMF64a-}@Z@adz42Z*k9FCOX@& zC|m|UTZf*D2ve?w9X_;bTsex-vj7=yyvMxf*%!W_VZ0@!%Jl4O47;CaJst?L8dwEb zn+oQ`l3F}H9<;i=G4xf<`DeJ<*a0}btCz(hK)ed&RWTf zHpzt>>I93JE{2%%b+(Cee9+iSrLGO_78lgJS}X}$q=C6Wd$WO3+zIhEThnoy5GG)q z(G{yJmPUKq(38@S&=z1)(u+(O%{8T^Bdyo~OB9_O`qb!;4cS55*?H-laj-yp>gXe+ z8(ZIWRTB@yM6UuVBjaQQp(+;7qsij8qBnokq6ihG7bRq;?37}Io6w*OB7?1&2wFh$ zWa5po*w>ckPS%FLIr>`Xf|RLSoX69O=7Eq#r|(p!vScfAyCaHdXpPp~O5qZFbhTzt zH#$YO=3c8V2C+9>o5Gl(HMFhBFd_K{w9pr);7eS!b-f1STM282LNo!H)RYK>p{JO0-H!B0LeAJf*rPcBwbKut&=o*}`*by~xM^O9zR*XKNUCuu{L_HfF z(*V2u#EWMydGGlb*-tn0)>)UC6eA(T%k$s%XXLvC3-1aTblZ>5)=>E_dWD_^je50d zpI_JO{Z+PzFF8MsaG_0Yw5zMXU55K-rKO32?B{iI8u;25evsSyALZMxev#w)n&a_c zCV<{)svcS60wA&LJ#4*!U_zohHIC?U5Sjy-=HyQefI;I>iL4$?0p&$)v53 zlC6_nJ2_`W6XO^-%}3rmJbHwPTtpBl*}ZrbTemJN({#gbcf;v)MBPoUYJ%(98!;t| zKJqvtf*>K#x>6j~UyD#=;JEOey7JAp4}9~V{d@Su&qou#13v!szyDYH+y2}S^YHj> zruTo5*nf9Q;rpn53hG952wBei0qO*bEmA=2UL^UTkt-yAQ#kq|<7Pl^K#L7nZJ6MD zSK;zlvxz3S-NT2YMQfh?XFHWbyHhA0eW1UQ5|4_0rtm?u;o#%udKafp_}30%O{MMp zv56{XcZnw-c;2|+V#0>}ga4kYMy?n(v4;Qrc0PKcp9p-X!z5m7~)@)E{>fnsjwKhsT^aIm03m1)aCo-G{lwpF^_epa-M! znvgwQeLf&n+@RpGH6E$jCGqToJAUj(zsyuWp*_8Z_8c@Dz0haYc->}2id>zg*}#vN z7*N?r6!OkXELWz?f4{i0-@?bziPK|``L zmXqXFf=Ab?n_Peh2ohc1&<3%Lk5fNIw zCFJZ&`AfXkZ8O%&y!1+4dM-NA1iIsGlnGfr}XCD{4Z+C=X)SoxA`(!|wHa z;9i{S;4g9(yB@bV9Q^qdf3C9K*Ad>jDC^*TojW;;MC@KvxV;i+Em!wq^2Wq?MeNAm z^(L1qWXaWQcNT?BV(Vx2$9c2mbzP_!+Absssh!r~!|xM5n}yfE?$@T@b9!yynuYep z)>qRV`I%3Z`BP=u$z{!G+xnvCwMcfD_^SBlR{Q;AXQrFS!x`RxSqsH#d?`v8olw`5 z=OcXUH4hy16|W9Qe)E&~`3C&Cu;M@P#~+bY$#F@68;v;V>So; zln3IF&lsX0Mu^xJlp&AYJbR8vV}1LCE-sx9-J*q}A&Hy$W|_4hX+rNzdA-bqrt8^V zubPu1Nr$4 zs?|{Z7?C304HmWW_7TeBi{F4apI8K#XL>o%IFZv0AtmO=R~*}COz}BGj+Pm|Ec9g| zrjeLOYZcUH7~f()GvtK!g&-N7jS3+*)+}RPtk6j2Oyg8x2%d=-kk;vsPsHap$lVBo z(BBr@bhqh!%*c=l_Z`Aae>h#Ch0To%)`XGWU^!%ihtI6d9QO%0R(dr722(-~E{j__ z?QlYRLsBLT$uPqqK@NtG56Zd}YMITQ6EbMC=9lO>XPan4xs}GOm8z9Oqp7k=r=sXI zvH#ka*nRJpNMHMqcz??}7n-Y1=_bHX$7X8tJhR?RaqI$!-mc0ay)<#cH9A}%N<0rp z#PhW_XK|NJt+&lw3dRQQ_&$8{> zOSSPzccis$0?|rw0YvVRz{o(}d^`xzsdEjLP9P9NL_BIm9EH~UN(>o7G^{B`n=qeX zqG1Q{{dmu_+xG|>=w&ffs9+5c&s^_RYO@ANca4|!LO(9(X)$M0usp|fKf&D&=7oN2 z=n7%X$g>gI4{%)JaiROb*far)3022C(*Dkxq}mZ5E#=ARFDW8p0FMih!H1c3wZ`dScxIhD(z6%0-GoMY%Wro@xhhiK z-IWuvfXpi_8Sy5UgkV8t)nX4cfZPnU#~FQnBoswX-ay_Zq^sq*_fC(BJfC29V}h@? z5=ugLf%sywEX(3{-WV>C2Ae%N1>|;TP1KX)%bO{gee7t%)~5D6hjbnWY7*q-h_ZaV zuzY*v_*vv|Y_xt$3o`=~osC}cMWD0jWb%C?qthN24U7V-x=GP1+(iR}z|07YEbMtp zL4%l7P9QU((#UG()>#IWBPxwqCT^vnk|{c{as!-D8R+to8#+ZBi!?-SFIMRkb#JEv z{85Gz}y0V1b(~#|KPxnXDvSv#tHq?n7;T07Cl&eN0&2ZwpO+5 zM8__#r7_0nO*PKWlZ2cwB$*a>N$ z?7-&}^)PO9gy1nAdKL$q74fy({TtN81e5^tel=K zH+28PCsDPVSmZt$^&;8+*qa&x)gvB^&}0tr^xohiiEfAOaFtmQtbuDnLyt2MkM`hl z=+RywW*7$I%?*;Wxet2vXbmSN1aD^5>MjZ!>QY_uHfE>+5fg|~n;)9{CFeFo+gC91 zh=dUtZ;kfT7DxFTS%*?DukV&)>m&=?&{mH*X{h?^8~lK+7ZO9SM#0L1FpQmbQI^%y zRrDgR=zS9tI=P}>rD~w$*w2E)w98EQFM09hAL7{;e-Ig;kufJCDi-x67wVL9MW#4! z#%CGBnKZFc5Vy0hyd!+z92a(`O>E7NP5kJCIqg?eEAipw_I_jNYTgk-%6U9v@g;H| z>|9NJ&UCD6VMW;PR~K&>J?S!xa^4p=cQ0w0=(@0b_7!$7zQTNbAWRiGEVSMz{`w1! z{q~>NyEUFtuo2+e%(SAOG!Z>gU`R$6DVyd-E{-4T)#*8d)C3Qg&!@DBwah&ov#lG= ze|AhJs%rB^$kO$adQ(>u0ZO*$kF%-k9pZ<}LZi7k!eF&eKX$Ll^!$EGa1&4kUHs4P z(3eRGH={LViroj2F_E}0nt~DsImd`d>DJJwCPvW;afCQ}c6D*l!Ilkdm?~TARFRMf zosRvTS{?vQnWok*^yYf?Z?{G>IlygMgo#2BlC5fJ_qe|fVmPjb|MUMuYcsdgdz4jqdwAruEQY}MD2>`|xD_{I ziU_4yr%k)XKI9=?iP(aR)~sRI{7hI@w(9$@pLTI0>c;>$B6bu z$d=XHwNsjKI4FmMk~7@Dv?i_uXjgk|lt-pR?LVOpv9 zsh=2xX^ONC^Rf~oFb;uUVcf&Bo5VOM64hulS&Yn(+{Gu}#0+9lH6qkz10frH+WOrc zb8O@dp|`l&dFimkc0zrtu<3jBI*r*mpE_|0n)LpC*gT-)N|zU7@?mJDbUS0^lrKa^f!^CW&S{eYh+@t;$2o^6bT!gRchYvq5Ne>! zjpN)Xv(PGZg1IEO*rjCjuHKZsnxLY0Hzfo+562|j-R=3{gAaJ`*_XJVULrlQ){~uC zHxfrM5y(aOC};A9UI`)3gSqqmdzEW0S3#TG9<(__w?A9Rn62+b`?(wI`23A}8Gy)k z;xSXgRXE9&UQ)OKu54es+269??-_EW^@We#{~Dis`YByMrK7B~)rL|p0?o51P%Jv4 z6r)!f$;c=XIlCaD;)8Sb{abuX5b_w$qK_b#%xqPQuNbrN@_FRt`-2IQy$)MTqZD%+ zuH8&6(-gVCHOuP50W;@-EPO=R4mnJUm*|=FJV<-6le^n8A>QA(=R2Bj2sH zp%JDjFip{@3cVAfi7f2;)(goh2@(U*6`oz3nj(?bjgS*X*hl+X4RVepL%KP1-H_5n ziP_xHO_kWy1`sGB7W>oBkzN)t*IK93*xx3WCEEJt)E9f>?W&5Q@#00Y!C133K++Z& zW3t#aCL!%%#zLB*jRKm_SU7pb@i26Ujz^icI64uF9Lfu$01Xmq{tO zsLIx&=ETAfpmpp0#FU6B)6`;tLX5<0F+sI0bnVU&zEJ0a$H(>_Koj43_{;y7(}`br zeBu{A`wpLeK9=|$^iee1R9FTw`d#ywlqN3-YJ72bZL=<2iw0lD$vZ8aa& zu($n1Gt^JSq5;}fbVs-V4g4)chAX1QxDC_&_dKc%qj#H=ohwI94FTOwUy=`ReE1!L98V5st`g=7b zix-(jcQ!bwA$UPMaUsBL*L&UGOGi;|#G2vC4R_!wE=Oo@Eb4~A1xSm3{>iS7^S!kV zOvPPx$sSW0=%>IpJ3RP$(fr!X*KrnC$dCY>gexbCM~4J>8ITu7PtlXYw;O!mF+t+@ zXuc9fU6Rl}qUMS`x=})!-=mvgp>325xm;K$fBgm%a>>qL3p`@!xDAW9oWOHa2c4lF z;P$!jFsR2Adfn3O^P8YdpVUkt8N#zo_#yO@6JT$AUEhej;?3)wMTsD4Yel!(R;xub z?~-uuhLz@G6Lq4^?H-0|BB2m%Y52Lf{r}F|zlrw0%Ch__|LouK>z{AFp9?Gg1AjES z{9*p!*KJf017zQi3b%Bb*h}N6g(#6EFvUQUPE{jFh-9)$Ak>E}cIQSG|D1g`P`q}q z9XAjqpb{uj5yDw`G4@OJM;9nWc0gew`d}&1tc;RImj_DO!JB}5`|iD4%Bx4>X+t_T zT3xBfMot66Fw#&oM5?ZI8Zl<(KC^0NKRhSIzobsakQ9U9$gl+C@EOu$1~RYj(**)P}B=QWt7lEe}>ZGu5t#&?(v} zbQU@XU0J0%R9KlY&P%$zWB>hM;{CtwcM;!zi42j`(~}PjJg&us6|FXUZFI9z`z)?s z6^3?@m+L~vT`c0mi+D8z5m(Gg42H%Jyc?zN7R*hiK?o26AtYkhhALKM1-17=H#bo* z$FAH>wD)dVU+&OnH^}iVeJMV~=(N_)B8}CFA4+7TFpvqf%OKpO2>7UvOk~xHA~Y8- z6*>c%7%bE^NjR5`jZUKwRCuv_pWB;zSQpy5l81?guxho2RfyDXGHexP?Zu3zY9*(SU-crg5p|k1S*<4D+Nbg>{g zSy%L+M!cvM4kmPfVB(F|jXsl&h#?9rmG*EXy!V{=(KGtnNBVjsjeEk~gg#s8uTF$K zSc7PDA_TE@AX_X*&>j77K;Ir+fD!F*?Ls68URYxXNSPA-d1m?Z|I+_x<@l=$<&%Zu z>yhJPV)s?Q#3b7>M_IJ_9XGS+N6ak1j)~x$#F>S_GiGL;SP6{smZG-=!KoA`#!%VW zzNrQEbAJkUtv?Z18Mz6KEU>V$66{5zp|ZD?%Fnmzx(CJf-UFRN+=;0fn)DA!`164}qmL$G!^nSO_Vj5?R(tid%;B)_I3@>EyAK zvI+at4JYgD1Lt6abkiQ#k#d-9B!`kaw_EKcCc@YFx=Q-tj!GxYSAA#(${A0 z0=4V0clE)qz}h@MsiA8_hS3fYYe7%d=nuQe8i6r+7Pz@7Yq4R0L~}PRkCpLRGD1a) zXe~CpZ0#&&K$TvMAR*1kO{)j1cC~*?;*CeAMpQlTjiS}!J=70^Tf@FApw&_PCi0_H zq>IP3DB6oXb~RCnx&uT)ytsWNq9G%-+2Ap{7~^dBcdIB3)}wWX^5pwkK=N=NwAp~R z+3)7Ly4&no5Tp5MKx;8^h!c^l`Ezlpnse9i;)qx@!V0JP(qJgnj1X(FIEm71IKPn; zw)-dr2vcIZea86wt33PQ2ie_yNQjx%n(cjUrR&9&cgBWq^eJ^D^0^Hn*B}ZulhhGNVMzb+(Xh!mbx~y8|@=R`&tuXm~hi(KK<;PJ-c7TM{>cw@BDPV%Ox?o z6K4|}T^c^;;gh4&W&1jL2f9V;E7}|5%}3mQ@Vj_;^$8)L2xFzMCQL2WUXK{9iP%eL zi1uFO=)#JwR4dV}Cn!pCry1wV&0WfQbKZD5oj@(V4pc9Zg1zqAu|W&wj2=g)UF;wY z(S#Sl>YFWQ2zORDPwL#?ThpMsVAc>|ev4j3nblPZ($AssTXv|VOE*pM4AjaQd)x}7 zWbc2U3nGm$*t%k5yM#(Wo4+45#h5qmsEuC;H z^wlFDlR2W$gRQYK+WIpFw5{lTvNt3dbJ4NUsHzB1Q@t51u@as zQcaYh9b@0F=x~dq(FM>8x-KSaNdr_x+sORMPyI7*zQMo#SAULQ|Bcr?l}?WdDHV33 z9l?L%5AfH|C(~=V#!aKcH;M}xaji=9$!1Ud7G!Bur1<}3B(#c#kx;g;PqysW?dzj` zef2+Y|5jbMs%l3t=>}9=JMu^V&|mrsN+;(LWZ;8mGoQ_`d3}0db#d>eds|9B>tR)u zoCB&BnG&SZo3gBi+HYMD4Ys{C^+CGQx=;?vH-2;B{g;Vxh#r-oENkVon#ee(NL`gu z)ksUx#7E28=xXQrjm5AH7-9-m^H+uytyuTZGB-C7?SR-IBs=Qgb5VYg%sD~2K!t0eZF6!K=hg!Uv#brxO0Dgj*tyj#wOE`@EQ+iq0t_yuhzM1zwvL-7GqN#I&hawhsCw-d&$ZFu zLJ+1Q^4@zR`(30Li+3ueQdaA|Y%X<08K=k)GqrV2^UCRH)C|?YT9k(eyDw_9D4*!) z{B7$E(RvT9DQU3!pjG8&9~d&++}JR`H532!-f6WWF)(E7$CbHy>%^{;T8(a+v%LpT zPn|b!nh`X{U?uKmnsEY|*2XX;Ujq#dKX|QnS}I`|m|~#SMhQYnE;e-$nh9+hK_b&G zvM!5}^Ma9TEbd2XrPv}L%_ZE`+@`9H-U7og5<{dc#gX%Y-j(@StS{qrUZGngNrYM~ zt|a*2vNwyG2{}#3eDaEa^W#_i#_Nwij{*6Q_2X~*$sgwb_K*Mk zzw76J{~!Ay{?$MA3;({4bNzL{|Bw9;cLO{%B_D-{Z_K>+weK)Y-z3EE4>{aQ3-shM zuT?G>y4C4U>qSIw=O7Tcr~5tdJlJzzdkhU8&r#K57L@j&tR3<*|9xL7^_8FprwT;5h&x6jTIk}Crp=)rddi0%fclGev4Qr?!ezRqIh||jB+9Hr0BtE1>4WLB4Db=hJgNoP zMAGJD>yC_x=`Qi?Ht@lH;QK%L0(se!Vx-hgqrV%=am9@IEmR3dRp`}B{PMZ*UBU|a zEy4@AMp%7U%*aKlp;z^Z5YF*+&NEXb2jTs@Oc%K8@XfF7`Pq-|c=Jg`s);Dn50@(K zLX?o~eH<4bxCoHddJDQ4fh3yHWlDDTDo*eS-VEG~h>Jz=GWa!KFegkDxQ+IbJYHhV zE!XuzgVA$zk6jb~mf3aKv1ph#m>{VEuhj$^X91Fn2EMIlAqER3uz0y0w){13m$SPB z&KK0du`x+hGy@-_h)Y4_&`i>rB|X0Z^z?e2Ktq$XW2;M zPJ%cZEk^F0!joOxu()7lZ|j?cO@LxTQ64&vziuX!^Y2+X$K^_J>c_;zH8fw5c>J;} zPcRHHXBS75O+cma*ijMW#z=np1Ui}VvK%aF`MnQ?H&05NFKfpznGmQ}JHAJRPZ#}J zj{P^G{w%8hHvic7{eM2+*gqFm{D=C89JYWiiFCDij@9qaMC7QTGLWR1RX9N8j-A+u zxN0VZ;_lcCB&-z_m?WEbgUG7E9k~$+Cd{Z};))>2g%%Of#f~E$)zxJoNn)kbbVg-Q zlt6LeUvQvi3M;Yw@c-(+{bx@<{cF@u-dYn*l~xz(s-T669XOj<5mkc?8aj&k=>u^v zxmP_d=7hqsdsKoCa=kfh@>l}aJg9RexnrQaaBDx@Gw$||&ky@b{ zNrD`Z)f>6JBX=XRoY2DoUS-1V&Xi}RK~@`%EEVn1Fj6-IoK{D6CA3v*er_|MT40Da zXsrdAcGdyd5N<<6XSY3O%R81K5td|wo}7#fp`Bh=m~DdyLnhzc(o>}$O(9>j&_y}w zOu=x8O*%7;1?3=>l}4pg{f?1gB0al>yBpRRVO^~`5I74V)Ft_?8bZ2IHL6c&BRrvJ!pQ=?=(>p zFiT)=2TrGf+jwi#hed6YQ=1*e4l^Q=cstThmHq&SKzP6AfT~g+-_n-ZahUb&;_4De z`#Ut6@JEIbG*FI5^79*uuy}K#mqvcRM{6~rO78^q>nLY9Eril(%aOG_qIAY!u_ZDE z!>tAz&i3dX(qwMDkQ7-9;j?DHQ}jbXi05osnOqj${C=q>Xp$)!hVAWQBL*8v<;@+_Vajlu(SPRu`Hwg1uP@Z!OnmlgMVH8N&E)=! zopu&gf=)arz-R2vW`RrW%q4PT;YLn;hxg8c<{&rBET{xV3GC!x%*eh63WFS30xa5j z88!)Y18!LL$jX9-dsZsz2BQs%hQdlFGyAC4$Q2f?b-%aNsgRIkhJCTbhmerEgLXo5 zwzsV8&c{Xj{D~g0Ie19OS}$pQTv6F#J`ZK+g5F$xzDJnueL!S~DA|J?D*EabpN)_F z%+m{g^9MfseSfH~mHF@r^h7IygwE->kcPyvm{W3?upqHsy>Yz_j>TqTs;ETLm?@{D zV~1_{vE>R%ID08cgCV-h+|RSUoS_wEJynK%rp#&$Q5B?jbg@Qv*hgH~Vuvmj!VrixDq^Q7%XcaS>8o>}Ae_Fy2LaQQF*S3nrGT!S27aP{?qn zrcAe*LKNC#A&$W45gW6sU$*-gt3_11{~n!7sHZnDlHXr-LD$)uRx-HyzMnA);x2Sb zH#AAKs3D_W$YpXpWE*ORU<55k^4auSuAHl*cXm!TERDl?e>#&kw(qO$9D8I4PInq( z(K**)L8Ne8!y zd`E~e8PzGo%loro*lVNpLhqFr0x69I3I22XIril2e%%Bcx*_hxw|}{0VAF{)6NizI z2aD4ZaYvN6XmP6>oLC_jvBf5=*r;E<3n7l&JpVp!Uw+K-a3DM`grPxI12A;cxn)gtn&X{4%1Z-y-D=0MeEilaV_ zgtYg(YL7TjwfK$TVf0RVlOdx;(SEe&KqTxuvTRi&ZMkF183#}rI^7WN_weRu=K^&) zkm7=#ZR08K7R&x-nJ|p*O+$%>Sn3r$He}q}YqKm?lQGzNrh6^qLny)5o)ElI=Z{sZ ziCSZ{qkhO-vI?R}9%V;+^Rxfw!^iy8H-Cv=`1Yrq4xL^*J!jL3$Aq+C36jGdVeox3 zRCE(lberR|Bm%5t;T#FG!s1adfoLZPBzj6H<7$FI%sB z2A=Mch44rI$Y1(Dsf(~S@^+As+uetJ^!)pHnBP#^ucE~o#M+D?psIGBuH6Ry8cD+h zOJS*<&@IZ#L<5c;u6{q&&DbWKj-6f$FQ3EB9wgadKB%oXMvG8Rr%tIRo~zZ!2LQt$ z4EsbJl)6?s7e$NEGdw+nbKaQkO}#djqlJPJV91eLl@x6-ywnCN=C&5U|NZA#+MIHK zmx(Fz>8C40ZajbKXTIPA8R?{$ERsZwKoPS=Go}=LK$Qe1kZ3;kR3a%=QX^yN?AK0bcPrS9t9F&VBBS7wMY|n z0btm6v+hoOm*M4@n8Zfm)ngEhsukR^YkSNVB~jGGBrybPGto%zPVCTNVzFv<(=Z0c zU1C{;`P3-KX0ZzhZ58UGv|=vUwyF)|&T&mj3W>YjGrsu2SNZBk-^bm}OH_r!@r~6? z8)0IrKU6MK2w!uzn9$zZdEX4dUfURg*M~+?)ZXY`uSoX@4KC>JjoPr0FM`u5Vn`nI z8P6g`)Xu$Koh(5l$AKW}D!L^2nZ-;tF*q%2Gf>3fMEJ(D=O6HeFMO55;lNTVtv#8b z$laA?y$CRACOk+kprl*ftzx20djpLIa?Ub$_+ZY#XCfCd$tFbEPni@0hsVa_+r{pW z)EW1I7=>Xn+gEX&aLS2Z;CNc8E+E|mwOy3bIuT(Q#i<$)f}UwrVZ(lJ_mqoIQiS~& z2x3Hr93#aeO;Q$yA&^s|)<##1QX6nLuhj=zO2#$2p68ghhewe(s|*gZIbqP0seuqzh*C2IYeDREqdF6uoX>r>E;Vx#BSx@H7d zu|3}CGQq{sk+~P<)rb`-Hqb!pm7E5GEzx~T=X|mlRt8HY43e=tHIuszw;mYF;0u;9(Q5O9L>?Pr~ben|8dHCdG zeShLde2@So*=#j5p*%GnKY2^veUmAFs_^Y%!_0e&%q4DAg)8Ux7Q-c-&>&9lXRU0u#+ZG`ko%;y#tzKJYVtx5~m>~>Aw1$)0v>Txy!xwUgIM~{D26Fw6B{&?`uVWNpG@>A4|d^Dqd>tb>7 zB5LG{lf`4mEtfcqx)EjEEUa9jak`6=!qs#*D*E{D&$nJWR@}Vm=zYHQ;&1%--3S=l z_3ZbmB=Z=^u_Mn+6oHLG?YXT^>)7hwc6Cp0!QWwh=0?)>Z6G zHa{AXrq_#!Mv8xL=8CK8@2Q)0Ia;fcV8VwlegRG|ly>yzx5W(|olLazHEs5vk(G53 zj>Sk{8n&~Tocks7qO7ak$Ik*huI)E@TK)=Q{u%y(4}R+N&Hi&?#ee9JKgGZL3x9(D z%dFUesgf8{-TZPc6BltEbA zOkHMDSB_;NrGX^Dr~<9hv=W;Q6Bimwuk_ZbOCfsBap|2V&Cq_`)Zl8iO+*4~tGs&i zDbLakHFl&oro1OlBO$3Z8fqn?l%=rFf!+R=Fhp80)pylu^b89V<9K?*@ai?049A&J zZ4-#S66xr&GJp0!es)VriE>=bEk6Y0R4os)cfxK$%gQ<*h+%{jsmnr)1FaS`1mcib zmnRC1C==7Tqpv60X(r#@Ldvvdu>p++^t71cMFLPc>1U+J!J-euWj4h`B-%P%-4%zT zhm(;aP!o&nGU0wlpHI}!-Y|w_O<8x?>)I^3L!lj;!^kS}+5($GJ%9dj9;VuzmkDgX@>&9ePRabf`6kU;$h-o4W19^9Yo|IEP zanh9|g-4xDX&W;Ol?PpTqOsV$VT!t#*xlbEHzUWVndR5MjqWoVlH-H9L~LLV4{Z&t zomL9978@XSCuQ|Z?kd_Y&etv9Rh6g~fkRhnFQ}TZBBgwBABSr_?AG}7!?xfJmvH4a zjpw1zHW*O^-B5eIyPLU??swdM;XNb?Z$J5rd3Ic`sGl_~c0!0$ffI$SVpIsQhMI|} zoMmDB3d_v3VsI}zCI+%tOvu{INtr|Bc6ZNyx}o*L)5B-X%ac2LgVi(w5qDH;_Zney z1PhHyp;|$j6PhBWR*M+vN_+K0ylDjE$x=RkO)rJM&eXopn;}uxZW0>-iq7n(50U*u zeSClhamuu{Qs=LW<=38+xyFHNg*kWvx%BSjC^i!VR%M5+v}t zTfs1d%qS;R2j?I)RCW|SvC2piKND)Acv|661MW!8MZyt6CZx&C!7FG|BV)n^B^i>_ zU)4)}g(3QOo*UCnF?<}1?0b$(y3Xm%Gx2*_yAh4A!-euOvi4Nw2_pZ=r& z)xYt-@eluVE&VcjdLV|*GB-+D2}@&f9H)fJ{e7bLl~R?M+;xaiD73&*8q>}Q2(>Bd zgTY=*tN=zY8TWxSFHI&?#PHWLSBvFpcF;TTwY_`uJ{WmIU9d3*8>F5V+q*+T ziyfY|Rb(x&8*C$Lj{J???n?>wvpxEY+OOD^7XT%#dqYYrE+J$jOcq(B#ZHN07*?So z!DErG@;OAWgc)$oVbvaxV3lNFE9>0sOs|2M?7+Lu%IT=Ai;)gWv+8tNl*19PJYimp zSg|(yf4u@b4P#(`_l)Q7e=pBI`~h|^zD6W-eEWvlw}$wo5u#i4ButFu!!$QfU*9w{PM$Vs{SIX0jgdG^8gGanv#e6tdk zkI}xEV6pkoG8iRBFoH}$csSZ~yx#|+cGL6vjI%D*8x8BClm@$? zq`}1!>lG5#tfH3fE@G4Tu(^vGlDe%)Rguvm^=uYiV0MA`4)nBI(`r>tZySj~y2G&F zXOW4xD+}6EoE~Ele9&M%8hbM(^axrSVTvXOnvWjQH=;E-GQZLvk9KS4WKO_j6fC>t zv*SbBWtdq{(98|3KJgEO4RN#?eah$`E&`9q5FYcDC6y{;ep-r_RfJW8rFP(1THf zL|9HnGFTR+sfplPb76B=Vifj!%hO37Wv3`H32A_JZFWwGfq7Mn164SkD$_m?W26-m zJ_I6VwV~da?aeD|WnFBjsuEq0APhs|?c2g6zClO|eO>D7pM+M5rG zohYSZ^q^*OCmQS;&~AJ6x>}q{OwlNYdJ)fv$XRSx7NxGuW4NH4jLKsJB)i5$Ag0XC z{+|1r7eq}wynVx3>REWO1)A$Q^u?c#UPX7hP@?zd;(k3xZ3T&>l+ME2T2~V%sycll zI1xk6doSnrwZ9WRwsqx$M`H%ZVyk1c)y3*DW};-T1zgNXI8!QOu=B799ZguV#gjA& zxBGiO`rwPyUTxT3nyJBD&)KTiCkeU)dJsZXx{G~R?-%M8T_b9Ql5RL18G{M=n%%Ef z*4XPD1GJ@6)WkY5!0slKlQ5)Ah(cX0;+3eRV0-Ucs_mmLzEOeNjofO&EQ_HDn?EJm z=cC|JgH})I78#?k*3OWXaie?&HQI?l9wTWmv43wSv>LM5Yo(o(EjkA$;@#ax#wi<( zCUweM?K*Y>j@?h0-ZF3BRMr);uQxG9a!&SMG?*qqYiC`%8LnKUQhTQ?ozZ&;s8VXf z61ap?6phhpkTcF5TURs^L#FqYvKCUzq?D{~(ZIuF;qj?4O_{|9g+U^x$I9`z^4`mV zAsZP(yD*Mc2bj66Qk&4V5WE&6SUp=?BZWY3%Cy^|+Bu#IF?Kr__!*!qg(=<8oAB`P z$ULv)B&v)u@*j^E5Gpikzf8#w5Z~5{fQsp|M6#k7J$FuANWxQ7d@2C zMYxl*TYtrD!mA4*vkW*PMTQ=V4@3(LIhec8-O6N$O+6Xh zVrOTA@zH^uD91_drfxzXpp?$rM`il>k(PfA4bOk@d#AtQuU6sl$s=-4BAr4@_0JwDrpnbbHRxDHhd#e~+%< zwGU#4O$_1Uip?p$MPlrI5Zs;iu!&N{e}@-d@_C{*2hRIF!DAG%pilmFlYQOpg^-`a z>(>UP)WPEfMi)P1=nn=u<$+5qY1Okx#OM?DdiI8qK!QK-SucVUHDN?}26AtaWqjga zdn*@XNB6H!Twc$jm*>70dtCfI-Qp28L)YqqST7LJ%d0~Ri0@OSeZj~QFD_h-JuMW4kv1LzTWXns8fJ8MoJ zm*K)B*-*TTp5t2Sc72$U!G4x*(H~vl(XKU_ysj+3-rK3G5B_(4tw%izkHNTd-$uLOBOyCR{Tf)_>=rAf8|f|pZR_RYmYz;0@7K6vI~QAk?iPIHIgJ# zP)0X#m3QVS;r#z3-F<%Y3UUh@Meoz!5T^p~Cujz5+Mo0G3jv?>8Nq}|Xt2JxaQqZ*! z?;+;IqLnH_JEv&cQ2Xih8He9^;(2_@v*9Iq*jav;;zRP2Iqj3c=*n!_XcDVMNMs?t z_Y5gB_4Hu)X4KdqIg?r?gb|wI)-#D5Ct{A&)05}T4kr9K6!LpFNbShlyvr8|BxZd> zsc#sTmpA8ZgmWI6B+}$*oH093*Qrj zQYhubX?>^-v(#0${ck%odjls%dNfq@R#b7- zD%vWwYcY3_a28sqV>;DsYPwPNyhspnaYw7LtZ0UCKQZ<@>g&d7KGNKQ(LH~96sS~Y zpduvHWE7$dWCj&f3zdRu=7y0y6H^?yk9)G%b(f}rAOkzOXHaW)uk!=P<&o8$Hc-?|eGxq^^iLld$H_=F4<}N$>swo+JsuznwXPH` zgb?XeR;vO`WE%$d&tIYm^so{%!+xS4pBP`<(HG>X=6)6GHfRIUJqHCicE44Ip67MD(4%7}eH^}%zUpnz-GS|%00wtTH#G{1H*?@?- zQwNKX(WN0xj1I9I;FVR8BAzp-iM|>VINXf(@6j;game(!kfsEq4_Jm^hmK@5wX{h6 z_{pdx&+j(Ktz8v^^PFRNM?I~*yOUinPWp=T;q%#rc&2G&LI3wZ{ZDt=Nm)KoP9JBU zzSH^jhk>`%q(eI_SY(qBU&IvlZ#NuV^s5|QsJxd0i=R1%q2Z?&M@GljiLWF+t?d+y?ER4Y$CqM?FRR!JZeM?F$R(9kG-mmw5n2KE_QcgSW& z4iz0HLP$tYXf7bx9In0CKxU{=+}PH|XROsk6uqJMd!#Owyph~sfeRb(dY0-A*LFT{ zY?=ab3>DIl34)uNSv&fl{qO(9e{TNd=LysIur9CB{wZ~7^k#ccCs097*I^>>0J4%P4d{j*FIIJ_!mSaHX9>-PJd-gHiD=lOe) z_dZMzD(k@n5g`a=afey9^|&pKx>_dtwDUvzrZ(U5HEHy@5_SVJ3H@m?bavcgO1gnu zB20JoGv2=LjFWKlJfTaYS9Nvx)d6GlIESSnt)9)My;`oMB=;h8L+{(9ts}iU-N7B- zIiqW}P#UqJtVIu84$Nkk!}j{M(heu2tTxmfM_5+62$BYm6>${46C~&jPBW71g*IKF zSxt<-QLLetM-y@tYe;O;0_`1%-I~Gk3F+0yRDQo}P>%#q$Tlg|s#cGTCj43+8plH? zW(;ZGVO@pe(FW&DHvorls>-~Wv#@kCTGY0=McgG4V3>A1fB!4oKmRH*-ci@e)9X)Z zxFp!Gy)zD6ZE%K!t6{pwbyO4mwskT5IhSOXbJB*363%WExI%q%m7Hq(c@Pr@1hEGx zwX)2Qtm~0LCJm!SwMaM%A2xBuCi>(|xz)2uKs}tk%{H|SF(DEO;o^?fca#7gZ{ie- z^W$E*Ut0IERab`TBko_GSZe2Z{EVTl)LJf-2~oN?^J=%j+8Bl16iGnoO7?ga!?(Nh zN6jhT!=+DpHd}baOV~tGrdl&vM)R1S2wlWt{Yqmw*lV1Utu?J!rl?$zfvx}3sRi;r zl2V`*cNd>g=ti(mr&i{{h#1=thi-8`n=3{#gl@l!M0-8L-WTLzxD3hJL=CM$>+Xup zF39Qb8Ume_r%yUJ_mS~MpdK5VzBDq-+h; zm>`bGDD=7zRFU1}BJ6gFENjICUgF5xnC+U~(1b})yBMGrbXZIP-URvt={@=<|IYul z9QkxP@JnUo^>l-Vh7JK8!x_q_Z1V^M5=mLnEdw|tq;)IFTtGpONNPwOObfoQ2m>Kn ze=&3uON1VfqDc1Tr-}Vr^3MfDG~2e)zl&J$hyJ1e-9NAI+`~fO&=GQ3dl1J*No2~; z`RM+8sjZ;e`0V&i=6W!PSAw=GO_k%UJUmrm8aU1Hc5BNwGiP8MrZOJkVq?>Lz+gwEZKi9~8` z%&WQlb8xbdn&>*X0BlHs5VO&gJi;Obt6y5TLNH~^D{8HsBMG8dtzTOwdAq*)H54Q; zCW*NZgDmoMR3)BzNyFs@XP>tI5YX{$q;{@s78M5JU7B z6DMe3adWCdbP=nF#ZT0=Fij&b?%$&v3Zn3KeWH|RWLRH7q6>C5d=x+CVKaMp?IHW|9oUO`8A&68ChORl($p!E9F0|$Xg=pf$Z-AFz$*tN7&I96phCWax}V_*c0-86!X9FGSV(wfjpR5?Bs zo*p{WWIuN~cJ5ycw6Y>9M)65rG+|M%A=tHF)`iFAKv@ehxgczN4+2z=KeA{&6NYtN z?LP3Blh`1nNLgndpPs0Tl5XTI_({`%mIQInCr`ipZyslU@lEIFKW=>IKataizvaLC zW27#W1^(uL@W+jCklm>~3*p8NHcKNSf2#;R_7b(f{Pn` z=L7h%iBHUdf&}>V0H0;}@R?ut-h&#qC=eGm$mTHj#%U27j5d3GS#3ypj{KM}Gw`j4 z!se1cySDw1;qea(g>^>*pxR zzL6}t*BBj|nh4mu4RZb!&prmP-SwOfAs$~FNU@&@kTG0hLd1`Ng1!?KB3Hr+k&B_F zYbS@y*S~g0kjSrm`^c~S8hrcsh@1+973r&sJ{B|C#p&w0b8_iMDCq(15gBjoT3%Nd zWknzM+g>h%pLi^tl-6WkU_l7aA|s zV?kz*LfIKnrmu=rk2To{IMsjlHpX4_O!JYw81cnpQDnPb4xAPKsvvuJ_Q@5&?b7T< zAE7;p#hdKh@Yw7zdcM?%lI*#v*zY5gm{26!@1%>xoZa4v^<6fBRf7Bi`YO~<)aVuB zt@@+A<|^>G2u~;PHMqG(*NzOrkl^W&Z!xz|I4-}&>G;e1so(XRpGy`#7gqfL^zkS7 zSAKc>^PlE#``$_yr3IM7jUDf$Qe=lpXBP%QnZtHRCev^eC=v;w5v5TW7`4$I*k73# zLOGKwq68o_hz*#culW(N)}sVMP*Rxa(g`wAHprj^Liij14}bLksNERN+VITo2seB3 zS2D7n(A_{8gtx!;E#||CB1d*TGlzvkSn0j9>P#lG1m&=P#`tu@hj-5@OR=2c$%gRS z)th`KeQnxlG*pCx9*GDa+`P|_GPFjxihcTq79aresuRb?#A>X^Fm?K#@Y*q z_K3#7^Sdu1`#r6?14iOG_G*1JDb~2Vp`R+HRzmHj;=dUgazb`Hnm#~Z$Os`0&>;=C zh`ZWDv`SLau=H3tHT4Hcia;b*iTsmP$#GWZ_ zVdlhAR#F>DIkAS$Nh`1Wkym;`BqCBd^~R$V9(18dCt=PC63pw${N{mhTCA%%W+X;K zFs4X~(Q&MXSq)ni)F518#ATya_<+L28r3UAhyc6qSA+iYSd%i{*HRMx7$H21*fotgWomMwUhuFDi8< zA?(Ol&9gEf+%mD39nZooH|&rgocf8kdg58X zLHml^j+A(SB8ELiC`+*Btw$o27GG?JscmmKgQV7NHU#Q2TO~qK z6FN^wfKHHZAfxzPkPjcBqfp-FhIwl=pbYiqo;0t>Zi|1mL0xA9q}YU=&LgMZxVeDO z;37IlSo1@obXsl0H+UOtbwc?=Klv{TJolu##B}gX*GinOc)3n&1&(Z4RCr$$r^oYI z^Q8(OiXwV}WBYJ0(GR&~{{VpiuGq3y5U$w21^E1u_b&JHPA2&v9{~q0c(gk>jx(OE zyD?8MiGBGJgTG~uHF)3>gA~*yj?#ncd#GDn0U@G8hb#$3PUvRgu5t zcmJ_JRc8?{L}%^R2c~?=$Oc zDE)401HRI_yfw50W~z{qX@LFK3`NI?;_RSX^^8DJQNo}c_sVpzq-~BK-ADYkt;L6k z9~!fy2^f?@S(LC1gsrgL7IZ1d<3OESmpQ;vtWuyF{Ytgs#sNxiw5Qy(UWv;kbaiu(n$SI;p&z+N+jqZiF4$^v<@nbmG8b}*Xs5_<7T3=%uRA|bk zCY}VoRL}8lU8B9ILT`e{VqFnh6k;=GR!dOUEcoEqTsUf}9FB$keI*QzTHv_C-Mz9# zt3xOX^9pwdShLl*cZ0ZqileI4KZ%?uQ*!Q1mxl1< z9aDr=E19UKwR}$lX~DsA+^aB{*apM)K4qD?*FJUL^?t(tBjrI}hP!FS}vTX%g! zL8{0@C+mrZ(Rw$}c+mFwoHR6jGg(Nh@j6vX*#PK-B5i%g#`itBn-WE6;2BC*wu7*XcGwRNoGM`>#AHLEE(j^vH#QE!I;p`H zyirL@J=4rNgF1?>F|CD#et-}REq@a0yf?!I4{a?E)Q<|)2`SnT(Rnkgrp1h~S*`E0 z9|SivF%$5E8G}xStJ83TqOIq?RrXXUYx}o@vx<*qs$hFzc<{C2y1~d)PGCBc=LOA* z?*e&M=Dpy2Ws@CYum>aFnbEjnLS1m?NYMu@vR(TXHw0?mObN9ag}t}ELyVS~(avH) zU5Cci=vSTb+@+yFHMi)T_qJ|l8mU6jRB@dd-Bmhd(>0S;X~L94!(hT*EU*^b=D|QK zuA*^;eus=#FdwLC#*g`dfV1;3FX-WDd!EjlSvYAUaXG|$Ti4wwPS%h|^K79i_Z8&% zpZuLQ@}229hnV;*W#Z+4Mu%QFGzOdXk&v~Zj}368bwKKDIze>?`f{yt3DD>eS07S> zqPX?KIxTYs-&@OM796A9Yk%W!`NMzYEc|N2te=e8r}SH^ygXG8XPIsiY>{gD0+)qKb2YoE*nPVqF6{ zwHgN;dCgF*ib2&;vYFpXbE#HBOE0!IzBB1Ox8T78MWv{v|NEgkug6_KFt1ic=!3I+ zp;kmJnGcn5?C`;Hm}d&vaQv7!EaItN5UqqD6tM~rY18@>V!GC9L+q20Ku`A)BLUhv zssyU>*J|s~Rx`SEU0_)fYb>m*5|hz}5HnPWwhBk25gQleTfMs0@5R>gt}HB~fKt}ZSpIa8v5PR#&nw9Jx>xS%JRrP?~~9d=C? ztEsSd9c`f{$V*1Y0KrUDY0mUr;QbGGTwL0XGp=eTnk5rsA*OnM4ysndlb(_TDMw;z zd(HMl)MD3DZSs+GLOq+nFiK*nR)Nwg$y|GV!-H7l8;rN)j1S6Y8|Xq{7y~sXGZ}Th zk;aU|IgZxf6{8YsB?RaP3%RUQA-G`S74LDi5@QBe3Eq=dc<~~#zk`d5KwK*!7!k)& z*zP<-ujHkitMqaF}fzXY_vT}1X+Yxj; zk=(THRT_;ZMW%USGi>O(j%78@c&*B^6dX$Og}cLnc`}kuT>5&^_Yq^!0y# zjeL8W`Ll0VzVWa9t^C|yv`vY7l}5Nnohv9+y$bD4jRgZs(zPrho_M z9-_s;@^u8m?^hArXimf6%vqpayKtPTdA^!)L&a3BqH5!Rp!#b6HW(tNR3&Vcm~Dgx z5FNz(J9Jo)i`&2KSAE3GSCLN-1)l?TwRwSAgcMy8dTXX&aoVWFHfOZWL1X;~EC_b+ zNZcY@n_(K}UZGPH{e2@<6g@3&wlU8c_A|(18~O7;oiQc9$KOufyeE&(5gfUjbd@D z$fG8{miGN4Cek*Oh%OH)THPBJgsMgbIn`lIrwS5zNYZ=I)xO{PS_y+ZP&QUOL)5(q z(RyglRcQyuzCE61cs~7basb^m!hq8U zQb#+F(%JK>dwc%n!lAy=F;X+H9m+#xe9Gp$Cqp?xnh=-46|^SAXVApe(~%$gp{Km} zWMd(|>bN-+yp}c}c;}3KBEmIe@p<%8o00AW?NmE!mukMGqIQ4u-kn1>PHg{13t)&i zN~;#JeS(qVg0u5+CxUY)B&VF+)>aC=&m!I6%8 zu9rJ>iuMDl74m9vYl-%cb5q}gm@}yzeq|WZFq|t+@WIYpCxSv&3&&QFQ%%OCX5d*L z4A~OQz#}IEz|M; z5SpRsoi$?O{IOh^aY{B~*CN1N&(%U&8gWHhw^!FpUh6w`9I<`gOK1MK@{S7a-Z3pT zKN-o$8Y=Da4iB{@nm{fZrDFxzHS$DTLd1(*8;e>1vxmAU`m#M|Lo**oyEf01^kxXr z)2!x+8E@;vd3Jc3F?{}9SYEZNq0{%ZSV(So>Y3I`xfLX1L+Hu=t-lne2ytruxz6S^ zh%jX3cH!&H`YE^ZyByP7^00j0uJC!?jq?OmlfPcJs&i2hgq z;otU0Pk67B=xgr6(uRwtWWNnHY$z{qF*1JTJs$OtH-Y=-FL`x$#IFmrUx}j)<(;k! z&JGpFI@85BT*w77v_YR&N@_!Ht>?kC*(z*RN?ORi(m&ebio%izn*ojsp&#tom~4Ym zi;@o$InHMUQz8*bL<&(d#W{)w+-Af-+S<^f^%T0^Qs8NA7SaM~KC;Hy0%5A=5bt)# zZnT@}D@Un`;A*p}n3xZW^PU`6L^`~4lw{b@?buU$wZ&`nEu~bbLGcA@N`&nWx9^B7 z%=MOS>tb z4M~lHQgOXN4WwMT*8@QV8{KeV;aVo%FmW#{!I=f`o`pk=95tiP6I7^aA)s{81n$s9 zybp9;0PhhOkl^kANqc|7bz-PSGfltKeWj=5tDX}DMy_b0n4Y@PT3;|`3OZH1(+Cw= z)vmsifY7Qy+-VTj9I;BpX+!d##5@#N3#E}KR4Q4D_2y#YPAZwKnXHA9BgGX;fSk3Z zw3G!{ozQ6}Qz))5sONolye~atb!_OllpTX?n91DmmP4LdbfTm1!$r8--;<7!HO*(5 z2Do-6vzzn zI9G$%^_q;)CoNUu+Par55zn@#Qmt0w@y6ETq_F9cU56YG)cXVFJ1>#W;R{F~kjEpk z>4-1(R;_g9kS8NjBHXpFF*89_Xzq;VgIv^eDEwdrt3n;GaI*MsuR0&^y@^WuxI`w_8jX4S15Zm z7MhtTgwNjo=iOhwu;SFQ)b2Gh|~dB6*uf~*%06AN1RvO)Mmk9gH(@m36Y`gixpP~gB|$ZX6@PP;l*3` z``P3z&Chb8S&Z$VoihZ3p6IF5-FY)}qzedy9-aMrS(Iah!A?u zX4?_xOj@dKvaw)6DG$(-)T%$$3~O=JEL86)YehRt;UP+mmXu#7xOiqRk~~#PR=UAc zD=Y`Y@eiR=dk5q8OokB`5L$XxT3tbJ3H90#{G}SwP6}L%Mt>?xG=qU_8={zz+ODB4 zAlr&e#fHYTdz-YRc-1EQHY$b3YJXgX5Da54Vz_*T8gok)v@@+&B$rkX;7#PLtsi3u zRv=Br^&7)F*Vdibup)J>jerv%wqys@&eelicQqG?*=mWT@lAtuaB8kdXJ(3WjJPFQ z$7N|}}NrOrzghMgm;aGW!Tn@Y}boZ$Kn?)D}?gdUb8+%C%90dg}t z8u_aYAo?aNA6C}*imtmO_<(aA-uu>V?or=5(a&OuoSQ(Tp}29zaFY|~K~D`bCntwK z#EHbriEpP}PeRqg*p7h|HoDt{J z1~V4kb*Fx^R#$Qku~@z8NtO~zPu510Fkg^Ts->=LRdOxlQb=*7)I^Gj(xN!x9pbFp zyJR)`ZWFgv;C`;ewbFUWqv6KaMOg<6nFXix0di9M&idYCvMK;+`-G-Jv}A>?iDpWM z&CXnXX|-!R+a-cmy9F5y>{Rn1rsy~8pQsg1bf+km(maho2kOB?*0jNtA3mR8&IUR)9QXz03c?`KptNDgR!(Ma6A&1bVWXrKx%SE{R4_ffL}$4Wi70y;HswJZfG_VRcC z_V4?ff5Tt*oBqHbICmnq&ga@XplJbu(_Xor188ziwV8Rz&QpbL&o*O77|mu$41 zmRhVWz-(11O?YoZd$5%Msj?&|;dqRo$}k2LC1s`STtj6GsZ>(Vh*rAb8*$7G4#VIn zRqT71iV-MQ7)GV@MkdU;)ht;b6jcLpUs=}7aS!{~h3OvFW5oqWoP{(!7%SGJ(ykRF zK@}l6Ws%jM&(+K~zO!{nf(dHk%n--Pbl0v5ZD(!A!*e1{bZ94;2ZEG)Ky;sOsVAS3 z&@VV8Kc>h4{Yxm+>YV*=s^+aiul6Pyy&bCYEkcN<##u?SKxN`cqX2LibVYFTA zEqz>5dlakf7ssKuIa^&>*JPxT@<7T5d!D^Faiio)ZH68?rC`R{u5-xNljdTCE|kvo zJi6G@`=0&v#B@lkiyi4|(WWt(p;JW(z2HMnijaz;>Ko-lD8*5-STH_Uyq89KY4o9U z4S*SI)oa_&JZyWsH=Wl=peAmFPPo{4d+oM4ml+joAKQ(N5CW<&FNI|-M#%`i;jPtb ziCRSvRJI#wVHSJN)&%=o$SL4MAg0xR)&-;#HaqA?$F$EaWZ}@N6cM^+)-J^n8(qtY zXU_H;QV9gS6TGXGbfSe+N-6DL9T|Gg>!;PJ*p|FHkBShpqsGEGIF_Zb5l?6|t(t{W z9p1NtjW~ke(03i86S)?8=UerknI>{pg4p9&(?Zvoxv29U!8w+in3saqNG=om{cKx= z-cz!ff?Vwh{kV_S`6Ncan;}keMjp&+Tz*}FhiWowzbv0-e%NErZ?><|^ zg)TU{Y)3RFV#D_4I;(3XbhgP1RJ1pB->D$#@W=8;e)EU_mroDECvTLu*9-GB;Bph~ zrIFs&ir%fT8yaDa)=ky;^SRMZLn9;XSM<6=b{^U2L(*N}F*Um;=AI903Zq9Z12Wo7 zfT4X{-_kaxq zq6uAZkYKY*DcM3s7d`KPaLLmr8|G={JBNrv>AWTKY4=6dlb1ps5S48V&`$J5Cp(cU z)b?nlQNHRK+))~F{WSkSnPFYK&l^L&V&_ZW$gO=4I(eWDYNKB3yClMQ|Jy#lq_cuoNYv(C(8O>|k40(Goh=c789UdWJgnkP; z*blXD3i;a1yuF$8r78rETm-9szH3d+zL`fKZbw$_5rMl3zFOV=Nmh6IK!piypXAIy zVPCJk-dr0HPp3*AGepSy?Io4l!#UAn{5wfCZKMj{Ubm%%k^Jd;Zk0wS^J{1)vlX~( z^pul{>y)02jYhM!b?0%T^Z0hnpK5U4T?0DM#o2SY(yD+PouYRT8&x8ifkQ6sYiJ9O z*t%q2dvmF5-V<)VYh=O(f41wzx5pYDYK3e+WK}!i0-in-Zk}7f1FWV+SK;NivaJUy zX5s^6fwZ@^_B@Ab>$G5iqtLaCN1J1N4=%%8xsEf>srpkm`5C5o$9{f=+tlyd6~1q* z_^dA2T5#9AiXFMntlU+?H2T{2(a5Ot-; zLpPu?;s=j<#~LFlLaB+R90_h`gM&HZ2XiK;DbYU~VTsgKsL2vAy=<9u&&+{7ZwawO zLPdsP!c)nFivgW&V1{q?7RAz}&Uw;{d-Ta2{rm4TzqlsvXG_qIo;*+JT}6%=O^IAq zx@bRljw_`*;GSH-rbp+aZJzfF<(P2qKepl0vX}v5H{h-|)UHS4%3-=?WF(AR>QZpt zQ?=S5)Z6nh<%t6mZ#i<56^BRj%wA_+%aIoxn8~QlXjUd&Nmv50KXuY&fl_f&=v_ze z%t92r;$5Zl)r=Ot5-0@c@nQpJkM-hu5&UUldb%l}x~E&Eg`AP#-#hfNq3Jt)Y>iw| zXq6wTtw&zl@3oCxIg=`iT4Bv8B~sCriY;`iB&}pJj)G`GDXk921`?S_BvZALYawDL ziYx`y%w7`?N1>9{hK1ETwld=I%(`;JVpv;EBx*BUuDnmr4`}=#AbtYD0PTWne8TS|TSC1&`OX6}MuwfXl zsBuA}V>9khfwV-{90}c)&C^RXXO`nVQ6t?v!<>u)gSSDpRHS;ASBHkmRpRYEnhF;m zzYiB9>Go(HxSQ^5$RbtJac0pImBTi6Ye^OP!O@(N3C39JDR)Ld|3L%1B# zoT;}H{$gyxu2p=A4zZS@iRz28WNoLv7udK_p=>t9OyCGMmaRp zY}cWG_)q@cO8HqRUmLjnG;%u+z)C4_uYvdb$X)e_I+i+FK~p^s+PL6jj=F#6o_Ih7 zF1Y8%o?Y>?Z~x2OXRl7CjQzuBJ^lKe={=b*WOH#4uQ-ly@g8nlaelz>d)#shd5fDn zyzg*FMFvmEiYx)=BQA`%oRIABUBJ=dy9CJ_Ox=0h)>=(9D$;M7G2NR3CQh0p-A)6-y zet1SVei2@O!u8wdtm~eVD@(L;?8ldZby4Q3jDv}!4Zy^l;l<~L55M5JXi4RgU^5E+ z;K)lNFBz#esLbVoSaI^@tl5&ThokcLb>!L8K%9({p{=)j+&R|CMDKp%QSnAp0pg08 z>ZZ(kFaux8gztaD|X6*uAHuHXHO*PZ-!?5Js zbE)spG)`3@`8+>qdkp_Q*wPcKyeh43%LpLmgRbY!^{TD z7E-F#9iB_OZYxDwcW%4(y*DA~dJntN$VZ7w4wU~C51R7|}juJgC`DR2?TNAt`RrHk1S*wK))x-{!7N2*5_8myDK}!g&uB;8o+Rx`igOgfO zx1uST@oJdRl%NCYJW6*`bkUrQTHu0_bXKKI$-bY#9*f3|1e+Rb$>+{?a)t2`a*-e{ zb`EoGD4iNjB^Pv>+l`~5Q$hL-A_2YM!|mP%xIvIwslHVv)kcW%8Sx!8W=eEO_XsvW z0GqE;fBIkiM_u6?cW-$mku?XjS2Bvy!^WY}qn8fFqpP(M0{xHvrQh%yGq{wI+8O5ykNa!?w*S-r zSutZ?IaL9kDk>Y1#t0P+>BMRMYGQ8tJ8dTHqLnHR@3vfyAMx=MN9Q+m^##}EE$g&L zQ)G^bxJC=j7OQ|*r$o96JbBWgnn_7XtHX6RAUm0_4)^d`S=n8hYTSp8i-ydvWu;W# zjD2z@$ec`DsIboMzS;$zJ?+sP(QGvVsW@`1XcD9bVpP_(a6DvO=*dMv3MJX>!F$Jv z^&y?76iabywITMhC`+? zQ^>j6{jXIfoXjUDqo&mZIJTSNq4r0O;3TaMA&Auoi1YN_Kx$@fr&guVIqRZMr655W zx(*lYd30xDQ8jT>JtceQIkKk0cJ$!PAml^|L0DsDo-$f0!>C5aDQzh29i5j}GvJt} zN?I~;F$0^lim95Fb+uvnG!>Sqvd$1!&wM8wZ(upv>$5~itFRoEoRqjWx`qf{XA67u z3Dr!-<1_fd;fj&seQmh7(9mxupFZ-=y|Hl*ojc#N5yiO&zJ>j{nHS|D#9&6qW~^vb z3E$S)tPi5bDXB`K-7`5Z?@>)x-iPj+!0oq%6^J=Kbhdqf)BXd&FYBNt#Uz2%V+Zt6JE^ z=wv5zkeusn&SDbaMHolV#YLd^Y9W)7&%`yYwEc#y<<&RHG9qySK z6ZC}Y=Va>Sp%y^e+t}frZIF$j>Cazh%LCmawE759GhQqwG1b9sL|+_W3-aZ`45CqJ z&{LQ}UnpF()cb_hV@%C_(YFLdtCeWI9(G$!6+S5 z+izzzdc;LDIygbDfTs?9)v7(DRSi7ScED;PYNK1|Amme>3XKeK5`FI*p<;`@W#HD* z|L4aUIg3CPdojotkJqC~g$O2V!u9nq>1f1e&mBU)NLf(Lo* z&=&-QyM58F4>tP-nIYPGJKN73@&W(I>Xk(lA+v~Rjc8#uZdM&1R zu4`{VM?Ew$`4bOwtIM3_;kr3dH2PM-Q_K`WJ0B1m!3MF%w|U2aG3diJsb&dqz* z=}t5bXPcEx+sG$uqcXA-4xp6=*P{nz-h<(}!9m5g|RV?A{0e zq2sfABh0EO+YM%nZgW)PiF&G(YbdiKNgnEMS`mOY8b^sn1G0S<>=%7Ws-L0qrx^GT z@b#O75RpET-1L3B!uO38|6l#}EBKGU$MySl{_6K9qV)7`VJ`!{+mfi{a3uMTjjs%K zrBtD~j@c`{Pp0LFwfW&3qjyBt&adI8{-%HO*EerbaNzAYukM%r-oO9%QCoVYo@f;& z(w9=HIZ;xfq)ds4JkP}afq6MF=R^w1+9`*wvZhS-k(?~0FnG_dALy!(({n^UAB>Ng z=Y>PQ!K=gLiMo;~BoZseAMc#!P!D{z|CA4&eMoq6NxnT2HXEd~fq)-6249({I}Ym+ zLDl*meAxOz(e<&SWWM)Lk1 zSE2jh8O#2bSXYLywff+-o?n)+u2f31iWDw}k+jYP?eW`<4UD{lp+mMExrPz@a@z*YoueM3)xkJ#i11}Wx?uGH-dv5E3bO0zwgdCD5Nn~= z9%`bb%v>g%@9Fx1=n60LHE-%IFJ#XuwF&x#TRCvl$Rdi@K&NKdevci!^z^Q0D?L4) z9*>tm&_Gu`K>|(#z6Ly&YIW)ecq8@6!+R%!_x_CU@-5+dMmn8Rqk0;2YOCTl@uaro zYN<^~jIBka0rI$9G(3Z)iGO97XfO$1R#QEz05T8Vn9>(cf-Iie^l z&=FW1ERCFj_edLfu98_P&3UUL9IS$s@+O>h|-9o&%V_FZ52qq6OFWhW-i;#-5srkuA1; z!<8ihim#m^!gD3Ro^Tob&{1PT?-FbmI7SmuTxX<_rJM~DVbfUx|K^^0cZaVVG|tW0 zYe;e_pzDe*s|iA(Z7f~ebnklHhdbc--N4~<<@zwQgv#9a_#|u`NbiVsAk+m{7itv_ z)v*;}R$G9S16y|q^}xzn|0?gfU!YMgn%CmmNOu4~ z;NyVnI<)%;KfQ&t#f{ap++1)M73beGTEuxlOiS3PbyBB?DYwc@hFJM-jt*V~ya zC7e23=Z$Fb@BKr6)8E`#C%X$EKmJes>wf?qDuk-)nGo@7|C!(a2enq}GFg(oG{aUc zjX=d&=+zUYgo?_5jPJ2|IzV@Yc8{QY!F0IiaCgtko7L1OgmsFHN!g7;Xy{(&gz47$ zw?BN}adqJcuHu}hR>yKoXtvfYyg`RbzN;xAVwI$JLpEEZq;&9TZ}&C74g*!Rz#@L z@S0hXSkSK8zws@(o=U5!2u89=)efXpscS==mnIGuAx=sz!m_};z;Uib4eTf3{#d!$ zD|bibun5=paDQ)S_;G8di`yeOr;MS^Pa3(RwtGt{885bfQ)%K>5lZWqS9Ml9)&f_q zby7KT?YV6qBmSI#6)~FBIngR->hpQHaUz#;>OO6P0Pl!7T2I6POQ)ZD-_HXQm2-kZ zP8A@(FqzWM|I$QMJrlD|Mv7LKcNS_Ip`eA=>gnTJD!yVhJ*v$>eX4J11P4*8$Z%Q- zt$M7SDln26B}y@oH5E(poT_{r_OqUw5yp!!6}TFOT@Tw%xa=GOBMqdiimY6)jwDJx{T zz-@kjaPdo!-49U~zFCDkKTgF1RjtZ4A4_Gnj7-%;sSk-K8-fN>U+=) z6>C}|TC15H>^SIhj~f&>o5m=4Fq-`#<>mIh_44)@3Z;Q#3F zsujtKL`9YYF<7ndZ~TqF`*#M-LoDm%arVAFJ`PLr4o-yjgE0NPiI_g*z8Uvq)Dk&m?!1tx*$@yeB^N<(2o|G zuf>w+wa6KfT#GcjtQi(l66V>HlQ)B5%iiUz%@7v2KNi+h%pkD_s)~^<+Il>Uoz?6C zeIF=USW_iNQ1xha#Hi#&s3NROMFxnoQ0IaV$~ZbB12|ht)7olU)XaFfz`7Q?li91b zI-$1qIgD^)GjgjD$x`e^;)2=BbFr$ET-rL&#A?wqVY2HTGPN|LDrqft53ew<3bEq0 zfnJPMQCn>V?UD}OvAY<#+h^{k%#+8CaR70ZY9-y|Qdw5(2`^gdio*vX7c&@8?A|Hr z=)Aq)*9DGKAx5RFHpz`E)GB0)I25n0E%H*L}0TF|+f&QzO`&}>yW z0UwN}ukKvRV;`5>{jw32^yJ^D@0cF7p3nDMn`uMTD5Y2j=9z$W0>Em02w7A`v;AyK zt~T7xVuq$@1Qs(`NTVg{nVw?TmhC;tsiH_u&zJ2xE*^JWUOXaBh1=_yzITip4?&oY zg}g>`GIMdi@r+xeC_2aa^#WFxfvaRE)MWIlI5yBu=@z<&_J1;zW6nOl|GmMUuE9;sWhDzuhYplezP;qAi?Yb0>hlE3TwCfoL zWu457;)AE_Jj*$X~f4_u|#ytttUb7BYWjmdJe*ORUKm7G*wT>4{nL$$h*Z-%#<`2YN z8>}($1CNBi`iDEN#>!8>P@Z2W=IeHLEFh`En|q+3k1uTT&nGNZ6Hvp6(vabL58qX4 zcVVJ_5EEUGEeOz1^ykjNVDsa8D9C*i!Mzy-+^Ez;8?~zm_;MxaeQi&tH}ga-@Jw)j z=@tBdqaNx5AnJLGcTKI zqmc*n*aCuAg3hO8eWL}WM!Bdaddmj%%^AXA8|1dN*JC3mT_|oN_{UI2rF^&56I?Xo z#!=5C5m{R8*4Qc{x>oCO?cmh}Ww1J$TF`Zdv`6wCI!{OuBrK4gLwbRxy{%Dhi{pyr z0H1$n;gxT*fM9ExRdof_yH*VznvP+629FUf^;84et`D3UF=Ln(jx#hD>*`E~e0LpThRi>YY{Wa3p<0McQ?$p_%e; z3wqmVINtWHW}b4^fvf>tJZ$vg`dRf{NlC6qGcl7~gYC4}z2~8>rWZ3^Y`|~Yo?#1h zYIKU&=qit!kpjCWT;FiW$7b{pvHF_(mQm?|`*sapI2fBj_O2KxSzI$a$=UEgY?KQJ zdaq{ac-m?@R)yV(V51KPtEs&RhW3`;sS7!gaYi!&OK;bNoQO6fXLA!h_#N!F@MvRW zfD{@@1S5aQR@!X7LT-&x-qsdHC^Ou=f=BN|cPUnp8R6L%gzX28Z{HNw7w!9&W+IuJ z8LTsZo&+OVi`sMS)CeCA7;@$Is6R*G8pDl{=WP7_!q9; z@cm!kH&*=r;@6MxAH4pBfA>@T_y;|yK<_fEPaIuf>oeIoc3lPEGZ$g(AU58^EW*}9 z^-A`M+9}$3LRZmHEyL)3>hJm&ev5z$2K95rmL31Yzx{9hCu`1jC|eVGjihBIEi-YR zIUe^+(}CqM6JwzWlpw4g=3JQTLdk_t92?iu$9q11b;mDz_QQOZHS}yZU=#*I(jykhpV9{g;QE}Yskt~%( zGe;5=g+n=)@)q^q%UJb=h;&BMD{HKo!qaC!FulMJY>UxY`+We#z*zCr>l;w8s%i5*fK5 zaioxl^`0RI>e1oHEBwW#_1Y+T?rhNA$LG5N%4@aDPLiYn- zWL`euaQ~K3JXRpFA}WmTl9E^In_Jvw0}5$>#P=Nxo_svwH-r6r-rnMt*#=iZ*iYBI z(QA~#$HmdPj=3Ir>u$_kodZW%_)dMni*m~y2}h4Y6YCxCbx+ua9amw)r61Y2z$hKP z>jip zGZSdF&h|$8J*Qz+ACfM5PMftf;u!(lkfXVv*+?a&)Z(URhIOE(P%L(RE&eq zKQVpWjmtGhq{`Ys9ZY zSraZbg2lMSO_BNKD{5WQVQhWqqmjm!nY>P_|lU;tyWs} zI5HuWyOHf&nD?HzDn5<)0xRP==RG)+4>t9b;l2P4Y~>eLdR(wqK<@eCv#b9CwIKhc zjTU>}@D4KL^B?6sp2DRkvw@cZ@dIw{?Yy&8#M!w@9zVsUV1Iw~xTjBW=?-xfS3GWY z_?Ypo;_{Y|3Vtm3LGZcYVNf|RMk_oQE=*sV_wNQlTt*>!n#0aq`Do2l`K7nLt-h)cIa$azE5m=xY{~~ zP%TVSg}WKv+!Vh2MbF0{1^g<+eX(J26MNUigxO`a1mrR+Nrg2kYcgFgez$UWv-0sr zo~K*Ka!72Sde+(0GT(dh(mF3yxW6;(a4C>yONRCvP$$;OJ}=C7D{)r3yGZCfflP^w zmV_`j%7Sao_qT7A8ayhQ8ew;7B3w>NHw02FcCdFII!9iz)mC_6zRzqz!R-ceO0a56 zt2ZEgu8{5TYOctVIK}ieHiStR(8Y{j0%)p+a_jTHs%Du$_1#bR4vB_yrN?RVsj3e~3Dt82fR=~kOi}A7J(()XNq|wq z`j=utS8-N^deqR_sXP#6Qiipd9=;}6lD)UoJIty~EkUKg^$~(7+W~eR zTwN-cqc8?x*DFuNlh=H%d1-A2mR?mG6ogL54V}6!m0IAV_hIbqwPPk&8z%YIydy0s z@0331 zxl()3*x3NM_h{E!V?gK8{uByoEdWC!Xlp=s6Ur9Z0{e_yWh4cpFBa^MYTLL?hm&Tw zs1Cmtyec8~_^gC|r5g%is&olL_Jmw;t2I43Izsa|x!?bX|K8sm?J{uLz>xgyf8#&% z&zj*nn$fzXX28y^N+MB8BIRV~fpuYxE9){*Ql=Nj-~zo1kgeq4$V}mXwBmaLoi^6&baf*bgwTMy;ZOUGnP8#Ia;* zwtc}TU!QsMROox*7z&qh`J_XIaQpi z6laxSxfD{)1ZP3vnkzM1J(`n%79r(IOhQRY=qzigVQcr17yXU4Bgir+^yqOW+A!XE4g>E&%Ov%=9ZD)ETeC4Q=^}(Q7 zOABnY@c8NRQ{CARSsR^OPeOg85#+24gX8wq%JWYr4!4=@uCrT$Le93<_glxKXFVFM zMo)r;N3_-kL2_g&+G=gn>WH~8?d?7r=SmpmjDS8@If-GQQ>yr8mXTZu!2i#|GvszMaQim%^7WDF zsCaRdBGl?_rlCUT2Yh(S7{0=B`BUGWEBpN(DGU8zTaBcZ!iMY;8Uy-ke=k2YO_VEd zzU{xLjTWb0|L#BewLkCQ|M!0TkC1zJ9tvjX7=|{;EP_VI#(9c&6m>Z7@Gh8IsQh>T zv47{+(y9Bu{o}vx-%?eooT{9pnad188<;h2$ig_j2l@O<#p*0Z?SnY8O4x_=yYu>N!fU*Lxx zwZwO}s*bUP?a&BIZTNqJ^?i0U(##KTa8J$1z*s_vNHF-06(ntXFgqc^efi6!IpRr}ak;a<*l*K%z28+}Wz-)Cg% zEunv~^u3dE7yCZl#_Bw(f+jQ8 zGqwB1BSCLk-NLNszU|*#`&@^XUcYIS3vJ|qgEZk*DW95A!hh5b($Ng{@?JAHURQXo zW*Qkzl?UzK+K3@?<*j<<`CCwrTmV~$kUEV;x2Tf=mV77C@I!#PB z!DblAINzCR-3O$-wc*0qsAmq@cEWdO$6}iWyi>{dZnu~|7%$BqULNRI4N_9% z6mDvSrdrO2eG5DkO3tlk(5M%u2$VDuw$nyG)nezvW~>k_Ol3sCf|g9t3^Ah1WY3SB zP+Zvv5`vu<%M9xs5=yJG5&OIP0jhmFKXy=i+vGLcCqpoTNy_#-6oI96`8Z(8cJ9j# zj$I1@opE4|5Mwll(^;0SJQympy*4hzj0U41k3g@XzN8_}+6?BX=+W-Ix~i#_m*6hV z^q{>wTr2U^``TXPQzK#AH`B+~*|1~E@U*R0ORM;3#1V5XH&evh1e3s3|8U*jG&98Z zR3FmnNjj4e&Uu>=bjFMx%}aMSN6n40u@S2e@+V4-8E?BU*i2IA_We{n(`RIaM?WIe z8Sa0!)qJ+K$YyoQ&2xLWML@Eki+RO9df)MxFRUk`PTy*goY-S3Cr4iUIW_NzpOtM@ z9(R?Wd0GD$OZ{nv`k&F&Z*Zv3*{2zRextnA!a<>Hv;DvC{yi?+@Bis9eBWsCePhL6 zSX2vPl8E<_Yv<`)#`(bFJNi)2aKv}Y95Sv0*DcHehM`jXO6@AXchD=f2NxnqtQFaH z85#cUKmM=$Z2nV*0ApR)SGU;gYbCC&>k z_n#S}yE>99yo@jD)$z1@N_NT|CngpSlE_lItqbY`$$7q!Uh?^;{{hd!1wYt-$c~J~#+mdKhH{N*K&zxs>tVPJXjit_rv=so$cqB${MT(I5^9OE6kVZ@1$CG&E6 z$&DV^$OUi95e2%O*@Z_e%ZyXU_;@5PN0dtU!6judQCpaqIq;tQh)zd32{!Plku((~ zSl2k40qs5PBK7S;ese$_c;BJRf?RCjE|Ly!Kn*Wdrj`2Un((7P!0>}#Vt@OF{d9{G z3G}Vc)b{!kBcVo|cdYAyUPqj`R#RX@jX2%oRu6;ckSBg_{yN_*-!6Nie6)O5uGo=C za>s#;5ExKAlVtpO#fRgT%k5(>#~qjBhV8IpyV; zcr#LnYp&DgR`f#s{r``DnRiANVo>Ju_{KFY#Q%f;oqzBorRb?9r`B_d_`J6|qrDp$ zK^rXJn&RXjJMd?FLQt7Oe6 zLXWqU=*fO5kSJ75yjl9an^M_s&{&!0Yp(BKu-7{_ZeZ3U7wjkkx!f`YPgi?NQ2NIgb|_sV z^YP9$&u?#$e#C$9lrATh`M@T&6*UMoFVwW5?=R4s1MwTr35(*l&WbZ`5{v`VIatN6 z;VvLLz_+hiUSA_+K{ZfX&5@50aUB{nc|Ib2Pd`|MvfR#iw?T6z&a-tj`VCGy^vylb zUwnggf5Wrz0YeaK&eVC&{`%$pkvq5N*hkdc9MoZQSVXg13ZIDjso_tF7a*S2hE59ty&;RBo1vc+b-( zf!mvvPV99an-IIUDu`3XM*;5lux29$T<?_j& zE*{&xAg~CwhT-=WzY{byYQta$@MRC(rZDV6tB=YYZz7uu>qO4c5{WL@K8DqlBi}p9 zQm9LF!Ot1j%Ndbq)P7t4RWfcc!AocdZg15ddMAhElRgBl=e^jMB(56NoB5?iw-_~ zX0x$3*RZ!O9ZxQV%_cBzouQjI-qt5?gLdytRI&L+!``<_4>L?YB&y|Xps@SSNo04p zCeFAvBRQp8Pi99;w0@7bK~6)A6Y5aTE$a48zt;zGGF+VNJ?c5aQ(NuMNr|cT9kNAB zu9)B>?^r6%uFEDMJ%S7 z-P%kDC`PsMV)Wy_7i1CEq}<&rPN5q;yP+^mmi+9yCg?Ts-nmxk;|#0rI-$R_L6dWi z-Qx|=G2bQPqWCVbE{=MmTwIO#u~?$1b0{6+9J(GU^Ms^G=vqTgTFI|JqiTWqNEnnn zDe5}h(`UHtW6F}K_Xk9J!g~Yhz97Lx8cb`VJjNv`&^pO10HUCUlyqB_qAZMToB> z*Pj-a8(|!UFgN6}z;GeVN9E;bmFcMLE-Q{TWud6NzOC+Oe?G&fz2iH<^IkB3hjjK- zEnNoJq25|mG)QLpQwLB6=z{63D==qtxIhQf@1UX!a8VIDq#JEewyak5O(RW9 zK)MB&dfY{CB#YVMv%wAADrTHa4u4caN>*uqfS^hr5?z2kRk{xPD0Hq6sC578zx7-H zF*TiUqr%X}TYV{nU;T^!w*O%+iCPjVC1PBOiy149`TwDfrk2;*UYOE?sO3Hjt(h?bWJ>$-^%!L?jwwH?$_)4zi z(oQ|?^_Gvy%dOJ&9U^81uWdqC6=D=(6b21+;;crfcMO9gE}60x`mv*AC1qQkr-Kc4 zL+D705*KA%F_gVJ;-PZ55n>E%`og#c-#JP)3YIhjVoqjS>-vsmQev!ZxAuZ5wc>&q z8XT2c9l;eUww`+DkfJD76PA;iJ*uZ+p>5w_DM>R^%q#4Vw$6q|%sTZ#blz&XVz%w^ zX0$59Qk2enymO>z)f{WIpUv@z5eO)ZqXh=gKp&JuBE`y@DkN#bf8gd#;k(~1lnh_^ zQeeEOER(Xosl0hn`RwNt$LmU-8$kkFVnXn2w;flP9h*%@zctZ!7(Ct35eAR%tain9 zig>Gz@O-BT5u5aTZs79Zcznko+0Nk2NYP3= z&-L|SG!oY~1FA})HbQG#AJs(V^ZC4;>0QHvS1P3#X;J{^1Hs#bLdCw%qGq_MwUAGa zuhObMawVliT9vd~^+#N)83Gn1M|&$-?LMBYa;;=BvP8S*+i2os{t@n8C+=RZ%#*1) zQ#SFwoLwoxm|?TkbM;wm6{O zFk!JDT&w)B*Lte9hpUY=?!DFWU0w`4eY8O{Jb%6N>Sba&!lSD|yz1~Z8yQDDaX$C4 zu&yu+1DlJ^!aoIM2&h_pka#n?be#}7M~rZ|Q-*CI72)mkmHiZ`)u?)O4~| z#97%~7|u#t3b_<}E%bxEKOPF}Vy`<_Z5HH%rCc>f`d$dVJJVKbt4^S}v*{JB)asdz zjyEqdH}^AcEO;?^oGNX;X*DQgZ@Q;AZ8Y3wG7m70!eLoh*TOm*)k~bW`4xirfOj3K zRC3L9A#hBNPe0jn{bpqtjH;;^F$GcP`TEv-CgJm&>i+Dv*TmCQ`NA5JFyLI}P&?+( z5mSXuDZx`6Xz+G?aUJ?=e-~f*cm86o3Hg8b>yP~7U;myz|GIzf2Z?J-iLH*Zb1Y(L zUKNiMPwf?-y&+#Z56EBlJO21zZ(UCkDBgqjsL1dCt-tDDJB=_;9I;v-NO;oD7PV3L z!()N_<4K$ zo!~~S(qk*grJ|o^6T6=V3tz5g5Rs(ln~V&d(HM>|(feEcG@ysi;qGhb^a|HiGa@)M zNJ{6yZBRcTex%lbWRG^8JxC2Go%I0Hh@RrxpstxWokOZ=16CE#|_Exm9G8=By2ny?y+y5g0tsJG2Mx6kY-^ z3c6R^Bk*7J)Qy=fI330u$m2$jIOUeSp4*a)eqn?iy;ZyBE*)GKGn{n5WaZ~{!^5@j zngJ>|1CtlHRWpr}Eob|!vy$z!HA&eu zuSYXuynU`*zlC()s2j@Jcvhp5_OQKz%?~)1`)0E0fUc3wCfMJYnM@j<2|HbU6g#?u`gL+fDu zP0!zFcxk4Wey88x1bp9E@fSSR0^l3`_y-HsIrh@?$nB`&$S&dhf$Rd4hg}!gh66Pe zq!)6p^h3sv6~C#(jl=IMb(hf#8z*FhB8qmFRVflscmI=L`!j{I%cQdk+|UEcFc zhc7eD6QwFKz|Sn-;iwb8`sx=WyDgvWKjV{f!%ba?WC}`jii&3yebJ>ovykbK0u!u4{;*mZp6gD;{(=R z?0K=iAsal3ujva^gb%{Ni+saMqAY}Di zvg5+XPa^D3v@NtQMi`i19!6u`WXn+7_)8i;q10lfUoGz`)lsTtHmW*Yb(W9Q(!jgUvfh$@=fCk=?3NR} z!@CT=k{fHis%!aChil^R$y$BN&(=1Csnqj0T2I?1s+A5(LF$03idK)qq16$@vR~dc z*p&kpY(8AN5!VNbGd;-~RvTce&(Kx+5kgleLq<0dHi8~1Y4T21mnn<-WxPe2xRaD zWo-q*pi89mb`o1(ToZ4u(PJWXJJ#D2ei*;-m%_cOIb{F5i-yBl6S{|3|YhAja{ zv_51Tu{5NCb^7@_kY~e*FKMQ`_C^H4Oh)}Ku>9$-|J-+Z`QbPD_6~x49ItgZc{y?j zd-mLNyqZxm9X%IyBpiGE{eax{$m;;lH{|a+>MKWj>(Sc*x$V%yNWWHMR6@?=?1^O} z)(uOY*fmKpYvra2TiLcU&F6f~7x+(q!98uyJwNvBil2S^7s5UF3xAydTzBo){|4Uw zkw3=kpZX1a;6`M31Q`%M#BJZeY_mTXBQA{i@d_7K{NB?AB_yL#_o*_LM7Ip|HPhv6 ze_xco6uN42%1$!A&4v9>{I37m|Dq^f3Jyo7LjPmG@i+gEb6iPjrly6sPE7MX$Kx&2 zbkBU8Sl393i6U0>aX%GOHVk6S%JaLz=#{ITqxU9?F01hKFHD5{!LM|D>zfM!;quCQ z%+sQjPB4 zO2^%yGW76h(=*>!j*GAvlzJ?T7l9fbxjL4`u-b>4jEos^ftq2yotgKUAqd+G8zz*g zSifd(!d6X6nT6#jY*73tlznL!X>USnsYvfh$AX_QQ&e!4{B~*`t)<|CLP|_;7PMrR zqg9+Zb%djJKc}M&(eZ&aTQ6!qR7>OpL!wtz{Kke1uRj&`Z>@PCFO_9h4tH?eSK^{< zw@Ux0a$5mLey{)AgEs8Kldn)HF>`NxCmL?qs7=t}3?**yKW@CSkDEp~$dk{K-?WOSE zmE*XWs5A~jAJh=`)yzfAN*4q#O1`my=ljn#gwAn)ue^PA(<_M>IuC;3K$J(XB1X=Xx_P=h_Ti zo$dYNoY}uQFg_W$`e=g^kd(-WN?xo}KCRi-6@mL>;yXW6dG*2umD`OVWsT18h;DmX z++l{#pIb2b$us8N1&iz0JI{;FhVO))PY2J7-t%@7xI;LGf!PU*7h=~_b)gW@-dgmk z^0Z_xe6rhNhfbh}B1H+J+4-2Bg_F_khm9!R0cFa>DuEJ&v)a*%1WxC6(S&hJz zmGxkCCii!V_ug}S_;Jr&Zz6^BozEhXlsc$Z##U)sSvXjeVy)YC!^v!cg3?&vHf0cE&he~VTWtA z9q$+xPgPpqgMxa8QuPkqqN-X|YpcgP#qmT>WDECT+~9-;uWfSBu*lAz!zibu_erR% zwNTXV#if)+tjHFSD4BK5#F$8HCN5S5QnMKxQYyr_vc^PQ66=!f<6$49~uY7!~gn?;SNjSqoZ(XYY^f#*t|cFJDc(d9$L~5xT%~^t^sixq4<} zm*bt87<}iLmI6h1@~Ee*m0BT$z=`9v}DlBnAFq4)It z$RYF`{J>O%IrOaFv3ezikrV>Cb`*N*s?^R=eL>xoL3#hpzmreDFH!t|@ay0DEkA$$ z{a^pje3iV|;USA>({~o>UkiQ+_`Z=VdXKL{EuP>zbF%sX+WqbS{7?SfR2M7`5v&JU zoP+BAssF(b{nO{Q0eh{LT1l$oh7w?R0hb*-e{CC;4?i>^H@9lL6CrV((N6;P zBA{RP=u**JtL)I&&QgPgAM{Y+ZHD`XM~E|g?amg*AKSu3wbc1so1iO}QeQC9HMWi3 z7fsxB1@sm(6KoyaR*MmB1pUm2Yk1%_xc6FO{%u41UkG|#;7w|7;ELXhRgg^8>Mu^! z2X{?0?QOE0uhkOwU88F(t@_|S(4`5zRZTD+#f%}V8qs2M=w#F@|5VJ-;LU`gFBNVT z9R#;icp~t|j2Ij$=f3JUz?EyYC02bxFcXG$jc&2F$0^ z0tUeyK}tcd@8J1cWcn^TeFleDl;;sGM+gh}jCMV`xqx8wet@o>w2O}Ya?Hu!YkS;nA&x7I$PHq$$15Z z(Dk^`f;P309h=FrluWJ7bXhW*vISd8wtI1I#)*?*q9mh9)zSi(MxQ;KG3u#T#A=(V z%@k6c8A|jW69(0&G8DrcWDE3ajz~Vhq2S6BG*&c4bKP`LpnnXPkD3`GBJmY+e2K~i zc3%SBqHBh}v$;rIVDI4a($3Z(YKFrrqqJxOt{V}8qREU!Dq>WMy&1d-iY_fUlhxLYqmg9E)yS{w3ePrXj93~$q6&Iw zM30SqEuAnT$J6dilQ_+pI5y+Krv2S*s|_ugKd6nQQ(aqY6s{lYKHMYNPw?`anfSbI z(1%9YkT#ccttN#BqR1(Pbg@;wbS3}dacaYhWzRem8igBGANl;f@89&lZ>;$Li(h}qFCbg|`F{NrKmGx%?lGOaCAlk{FIxkWcpo&T_$e}b*z*zl81iE<9@3K-j5SgjuHv2lKFwMWGEss$@DcN1W{gdU_@af$Te(|gC&2iy7%MCy6 zpL4m{^5qX4KR17aKas!1n^2i+WvO=8uPtqmw6aKL?kce!_|CHDgC`&I!N>3O$#*{G z)58lEKXK5R9~-|)aIg89um1%1)66gb@JDfj@U5FqiBj3>z}vSs{NUBcy!Y`F{*zZ< z<4>>OVXPzftbEix<<$`RbNkP@W8sVShOIh&boVj$`#o37hF|f)kMZW^Yd-(%IluTT zznruce&+C;MU+rq@yzY`W&X>2dHf<*7muhhQR2$}_?r8duaWDKK|II#p2t^@k?i;9*SY!XPw=frqK=Ps%VUB(W#c?f`Vv^0 z#JskIe8scla)geKAx84Cz<$8LaMaJf$g}w)WFP3JEqXuTOHariUoX%@hg){Ixr5x{ ziupdPw)%RCHQ1`X4hojt%@T}vLS$$yW}cp&(tdAdi5@G;$O=_Gp|zhwZs2Tti>iov zf?CT}X?I7Jf;u5KxxWkLJkqJ^2wEsDZ&mfoMxwfU&cqt+y0lzY!BI#U9J!nn6D^d| z5o&JvQ4e^6f)lIaDGFYynJXM1y-@?CQbmc?<3tFqCp)Mv;5~F+Z2R6BAWw!0z2b&U z?kjo7=umK*L>(8>a3pT-S$8)~n_JTMo;1wFK58AJ=02g_f`&+BqL9fpkZSk$(nd~O zJjdgbujuL>v&)3qG1P!CZnmRSA&7@sai?S(mKv%wC%GXAaBQ_s!~Y^AgB*(GlE zfM{UH%1`ZohW~s1S$4AHV|ffDW=*V;+1Hh4Zi6q04&@hbe-XZ3^D{R;&EvY|E5nDx zxN_8c{4|n2U%1>|GK?el<%XY)-(`2Z;TL`Uqip)X*T4JcSf-f|Hy`4)vMxv5EZ{me zC8G&$raQW;Eg=hk`m>+l`SP5d^gNL*fl83h4hPb;E@+PkbgMgb*OG6T#vAT~uEsvT zV4#rwcoUA-#2@{HSF&eiU|T=q)jA@_%Dh*~t>CUZx>p0??GAmrquzC-n+@DwQtvKs z(~iTjV~#zK^NO#ED{2LKddp6gMGIOtSPAMYxN?-O>_$-tg7A2vczG(yAFMi}1dRS)1 zoRxW1Gft(3Dn&`E%!}1S9H+w9K2<*a(8SqKzFpXCJ)3REcdrX6SDrmpmc7sg$7bUg z3RDqdc6|Q%N=k6?sORJD7^&^(0&$Y%RKc zucLc4^YIr0Z{KEuIQDzx=`&$IRGxOOnId3W9NWRMze~7nVSF^eDqK9dbMj$_RgoMX9nynJ4H{8)MN)P})MY!F^ms5pjQBBz3Sp&l!t^Z0hlDM<*~ zF|Tm*CNm$vN#HOU()Vysy54hfRoU%?eh9pJ+wskBW*%KSe$ihdKxJNGnjNp7XNFxO zm6f0R$-?!u&AdGJ{PiP@W6yRoaQWR(D&c?M>uIJXOrJP-iAlBqUI}4sv zkg6yxJ@-z-hpS?t)OV`e4NzeLSA$oatds5c!D>r6=`8?K@K65of8ZZJnJZ8mgjgL< zGif-7a~_e-4*jP?s-sneJk*WosRE>(sc-+xzx4aCCXgy8lD&KQ@bAHCSd)YEm4MCP zL#+gDRN3};MAa&X9Ef@gSX+bzzx(Q6_19W$Q0DOIPyDIU;^jFLa;3|e5HsBx>1zM% zoj0r}C9~@oh@M83buGvvn-;t|lomXyeA~`CdH=)A?2kM#c;muv*ID6iE>={Bq zrQor(&IjvkuNlHIDrr1$80mP6w8CljK|_DWi)Co??uNJ-TFYIyaH;_1<>q!}b;N;(?e zJ7xTRYvNdJ$J)6{j-HY|VbkM!M~R8yA|O-cXa4k&H_sCvyk}kmFGi3Ftr`z!MzCRo zeh~cV>FBw8F8t)5TKVSBPW<9uQuuHDw+3P?y!tfp^3%dRDSd$6JGNa;H*a(IwNK#F z7xo(1Zf)ka+tF_>D5GOa9R~t8?|sPIvFG~o3D?6T?uL=;;CQ_mxp6)BooDjaG?^4q z2Wd@Igj$+mLd_!s71e}}6`d>kt|?+ZqT^@{S+$%g@6f~SkPVg+nimVeZMM)SyZ(D% z>5ws*9+{)f!-r&7*nS6fH3EiD@HhXxygXf`f9Ut{g}>wP=JS8)ckz|p;bVtSg0BWR z>Z{OK7;9!!&$cRC6)tLKS2DYj*pN?dB>aY;N%E0@{Y+f(fra!0?eYaEm=Io#rK zslzXgsu0EIoH;^F7FeqlO$!=VWxjKMdtr8V7YwT}&QgnMUD#}b)egMOEK9+8L+P7+ z+;Fv}V(IrP#3eB=g~OYXU-Fk<5Od^sSP>jP1lC2FkCl`%qZ@eoOh}8#=4%v=cWT4# z?6|wmbfafGcFYIma0Am`iAAk?Y=P;Z9PTsgR9L>!5qx7EI1@fg0q<>*rwXYrNawh} zRhB99*#`^rN@haRL7^^NgVF2&gAk*2UVEwXI>o+cgvnW zbh&P>mh_#kv-##v(Oo^Fe&t6f7bD%>4Q^SW6t-1iz9(O9xgIv`cbD7_BgcMVe)5P( zB+j_FNZ2pp$i5@{o*W!0d&*v@HP~IJENIOJ^s06cti@m?^#Ltm!NDrjc0i;$-1$CR z?AG}19$BUN9t81!oczm($m;?LR8!wQ$zZRGa_vRM+lt_*xp|vEtR1 z+Kx*1Yku_a`3G`IMxJa{J)+*+WwnyZOiYoK7Ghdhm!%moB5^gN#kwZeHL)z2<(QZc zg>|khQ)ND8mZciar5au4aC@pmYxr|HRcW=3ceVZbZiM@xGELP8VS^cDd^^9N(v>7k z$Z=NPlbn*g@C% zFghh=W!roFqaIgm_#d1jt%Yvz?E0%!qR((RHM#0sN z!(HZh$ZR&A<3YK3U72U-HbTJ>kCikQf;Zzw4z?enm|{y*FM(_q`S?5+>| zjXCFP_de}Cw|V#VFFPrfNlHjc1Q?8H%7Vg(f=~sRf-o+Hz!AupLRA$|UoxU9L{)&n zE-*$EfgSV#QIru-1{<7|gpf!OQc5Y5nJ=4{FW2p-)Q36uIp?JkAtTX9 zTK^m8p0oE}d-ZG0HRt$^|KMV@eD0rbc>MN6QNqbH1$Av{4-){t+$*`fI6M9Hk6}Oc zBP^O0^Pcxyt}a%zpZ){|o~mh~Y6)0YuIAEJoSFrXg5@n59-0Fl)(uah<#Bt+g%oVI z1znYnde}}xQ=;{lpo+ivJ7$>TXGDMJ_r3Ox*T3mczJfFs6AVrrQB$o04K5kU7O74b zd4S7UgEj?5UH14di8c=!8T%c7?Tg=;((93Q#}Wg$|MXYf{k@}yVG_F0&<~MKAKCVi z?GRb7A{VQ`xE;}HL>a(M;Cp!ZS#)!X_z0Je(TmriZlS19Tc^&M%@0leQ!qU|`z|$pxF-Z@qoS>(Y=%8cwr+iu8DuyRsD&s(oHWD0X**;KtTmSmmNYHdg#t+> zHGBfO^)hW+c#@bFIZ93v(q@N@(*#$^MFX1g1eiL;l!9+GD<=A^3b%& zkVODFCI!=fCQnUd% zSYj%N)CI0CaaDnSB8;iCee<;+ z^6Tts5k{Cgh+9M^3?9rm=He-`ZZNqtNmPea$H?LHXuOa14Kl5f^H-7W8wsq4J#q0K zsB27BVi4l$VREoJx|0TtQe9w(L%KGa26M1P7RfauMMw-7@MB4K4)yVjO{>Z zSA^vm!~TllV1r+*2~Cf$24X#-l_!=XIFGtOw4U_O0Vg;rDjqZPhzSL5;kZpXK4vT* zC0|=WG&xA5$Adg_p1ZF`J%J+}|7&i){&nm<`B5(4_XXCA4j&E1KFfYr;-|Oim+fM| ze(&KkNC>=faly)Xw1}Lo*1UiJ4&U@uALbuF_zZvL3;&d&SYTDS<(8CIc`|P3m}s%= zYr*@PTbM4;6qffM-e=hKJUDxE`h`6A;DmPlLww=R_wm-@Y03%W1seSY98bT5mmfaM z;@nWV2dwUWlDCd7=xsw0dj@WEFj&lZL05f|%POEY5-2H1fq8pnkasj*}YHW5uP%5j@6##}Txr5(hZk6<6hQ)_XeYmH6aK zh30vBMAMW(Jt~?ilHm|7QaT?Vm4tv>=`jW-DJXA17XgRUiBVntK391;nrhPENIA6$ zzer$3DHB}`Op>-0(j%V+OBs`gmcQDT6pwNw_{`0 z*24hQSSfJ3M@O4{Pf}%b67TIMC_SMX>B^4S_JpQmss^+g@O8&jZVB~@sovt-En~Z8 zX!>*=Hyc7d5-X6pN^vlk+-Y`YM#5Fad7BUb3UY>V2B^|7r%{WI1}6(_e4h651?Lb|$|$mI_gd$OlTsEX+c44DiO0j55GTHRahGp;`D=Oo^)K@3=^F&Glwv4V zc&<342_;TE=hK>(kDfyg_xUeB|3C7Y8Q7PaWwcaA=);6JsgUTt7!E?@E2`W4`>%X0 zUpRlr_dWPQzN&nY4=-M!+Jg5J2W87RP8=N`@Nl}|W8>%f`{Nfll8SG<{Z%ZBiXVCS zSv9l&eF`#a)W^J)W+gTYU!j!6x2B8+qLWMnr zy~%JGB6~sE8$8VvSolCQc}gEBhDg~@xNgFv40YIy&`;2Z)PI{|>Z>ekbUla+6Wlp+ zES8pSuUu|pD(oVLX^I%9xz_o$DZn^F>mtAMLksR5!e?LGQa6sWO70F2Y1)D?1m1mL z`PIL4f%lO&9!wOK;qlponlhCUcsjCoU|6psUwkuid~7+{3+y#%a5+R+uT!n&(@SL? zEf3F>ho`B7@)h@luY0fZ?w1XZA9$MmaZwy*5&sfS)2*%V$1g`Nuyzad2RH*K>wt?OC*r z?KTi4Ss33swk#IOW_h#qsl0B8w5_st(z3d+eDwQ9UVEUl3&Huz%VEF`6MDWzCPiw4 zd-g7R_cr5?eTMRX{vpbf2EOrYV6lLQPf}vfc7vWAGwdC*K0ReMb!_&I==NHMgC(1T zeYVS%&Hg^aUc;slwuLg7k|~cfOhK9a$Y^{j*E|N|7_S&SG!Q36Y`S?7#vJrW6e6mr z(f|&@CnE@K8XHqVCzB{lB0s@GP$AlofkuafcmsRPfgB8ybD$85iF#E5M8u`vF}YY@ z_bXyr2NP4(W3!_m0q3x)6bOY1wg3}js#bzSG(C8zdV-|tR~q#?xRVoPb;pq24B7}p zO+;m4f(13H^tPH5yh+tVO!|#MVnkH2l88~Oij6st6(g8{Mw?-h3~3bCArg}cAf#s5 z?6x(KuawbKPm$#mSPX$CjFjC-IZX+?m_~}pQ%?E5G>WCeZ#4{Kq;L_x z9>EA>mzF>F5g!bjZF1|l+$dcK+ij#M;f3c54qDH!_T0JeSf1?h;ENsOX5iVEN~SS# zdFm-@W&e&tH315#PF>03UQO%^DJ8j!tRlWw44Q&FwPe#X3#KHX)QbX4 z%Rl=5j*ouyg0d3s-!W7!*@~yy>Y4koN@0X$Bb*#r_RIA}h{PZMF{+P#jPmIP_G{in z_?q`Jb_3;S-oU;2FeLz01>9P|OD}_k^YabeG_qZ`Z0nZIa*y-n9_NdFPMenVddX>3 zb9TJotf|?$nx2-4l97Rlz%*`&>d;}6!<-H+*Z4kNJ1Ll2pt?@wJZhi7ij>WCeZPm=4m2UMWMb(@7IC2QBaQbo!$3Xs)Wb+SPPD_sBL6hgNHY%9 zqo?sB)i7ea9y<=$VZe5M9s|{sFdB3DVKHfJR)H5^!5N4U= zOPFAFx#hW+3T{7BarS89>`9>SB9qtTCccfV&H~*f^nIjS8lHdI@xBi>*h+c&Xv7-j z=%mC?k!kQO7lyq<;mtP!pZR2@tO{=3wUl*o(+fViLKUU5w=W#uHtZdc$~LNU`%c3! z2#?zGUBI_E2>B~I?PS(m`sUe2Uv)r#w4ak zG_BJWpb^t@$S{@9+`hFL;8ctl95zwmSL?6WkjAd9*IdTi`&6bp=FelyWy^EsL*^o* z$;-8h(JEDKk~BVT3>mbDSR<*e_7Niy(Zs~%v5S;7AtpQ1S)73ik5!LTpS*X};}ELg zDZ@xL4pd{0>o*kLmTK&1yAAC$u;{l`!$28FDnH?dJ|(~AYd4*dmsL5Taok18oB@yz2<-l*bP*@gZ{Sq+)O1V%;uC zl}ek45z0a-YMa0g(t}x3ILgLii-|k8h5dty)3b@O_rO5iIBePQ;I$1JCaMNL_o>LI zekib6D^)Apy6b3`ikMUkxhT^$>nekDP!{Ros&0g~uGp+2!#J|svurzf@P!^{h2uL8 zSH<)_166Af6KI!~x=xNZejIUy&@L)g7nV={&;`zT?%uC>@J8TspYjyWusE=oI+BvE zllzM+(gUM0LSZsB>jH;IHN!^uv43{4{=%oIL*mq^mr#`$SEsA)=qSa~KK~i$&Y(SH zeeXHeldxS~^7vqnN6isW>qDN@EvM}sr|y9B#Q_)gfVDlOvo&K?GL1vxX5uB$Rp>T1 zn1Aj+P;G$0MeG^o@Fb%ru(qBcaS@unft)`X*R(<9q0^joy=(%(}|84P}lc9*E{Q}4nR z>1JSe#hD^vOZ49RurGcPx`FViAA{|L+ny{I`StLlx8sAyrTLaHqWCT5n z=mfGf=!GInfo*_kg8ecL4POef4-666M6@ta2yrDaM0mP}{u~(xxV3~=PS7f*0IP|q z%*KIDS?vYLJ;B^HgdbDbNP;kIE^Vp1O!ZtI#9mj4z<_>sO353y%j8~B<-X-Jf>zn} zV#-b!+37;=3pyzBIYqz!v*}^vh38OPriLNJ-0)^7qe|ThBta?WHt?fc{NMiD1X|B8 z`f3=}@Pq%*aQaWdpF+70=04oJt5k~~XSNh}Lt{H?)6q0N^gm35r<+@y+vb_DR#7J z)IeOaM{O}PoQOqy!`cO zdji`vY%ieiQ@N4-8q-#=T@zPN&}D`F!29v1KDo?@LrRN|dR-D|im9~8OAGA#4DrGc z-&EvCFwY3_3Fs;!N0Pp`Qh4Z*qau~H*yK_jpB-SmMx3A*7Z_`aPe-_Sf;@i+ZH|uF zh@SSaERb6+g=oa4FxGHg_6J9Dv?(F3vUzAD*hUGj4(Ou^dG7+A%f>*DfIUrRPBszQ zlT@>tS5(sij&_2yqj3K`6(NC{aN6WedRtVP)GF5V=5St!UrOr+=4V=7US--7p zKR00xO33CTb^?7cps${yy+i5-Dw_s(haSJ4d@3^&4Hj@gur^ZKiKafq@+LC9M$x~C z(>Jl^E$Z?qVlQZl4KehXVoKI5+eq8MI(XU`sTRsd_UAaj3|9R7(+}{0yJ_sHu!bl- zDuzlLprw+;RF(oYLX?^cfC{TnQ&Whrk%~4~p&#tXXtx+6n4)K8FY(nGU9*B_#ng06 z^@>n;jCH`&TgK{=t{Bj|XR6kWRgbn4vcD!AKW17?U>8ViF~)-JpzM)Ckj6tb5lV5hMhH+jN9 zML}d@j~1KFtvezXmxI|dIIOR+eTDS}b`84PgHJCo4=*s4hk74|BNo#E<)y=PLR<^3 zFJMzr4f~jNjdVvmKHtYp3)VTj25VY7QkaQo(s)4S3apu!D5*_{N^@m=z1uUQ4in$G z$2$cl6Hw48s7$+j5n!UA$kR_u6oi;eIn#IC)iPkhE0h!|w?ULX3QiQG6H&lxnSq3~ z94A7Q0w-y`jhU{_hqQcU3Ueo6$Kbpk|K_`NdJl_hdnQJ%w+1Fk3L+t<&sCHV3&2yG39ptemXuuYLlB$@wMpDfcd#Dm`9ebN+FS zaEREipdH`K^2uj8KYGAey-4f7jsyQZM@3C(Y6vSP*VBcMb6WgEF6A>!l)xbYSZn~JmLjC&(o%&oDoqsXptRFO(<_TnSqz?riFQ<$Ltxo;G~GzuN17o} z4I^&TL*F4&q#8pStnEB5c*>~Q$tRn+wTF$*?PbU{UNsN6YZ{bRMO%x!a==tOc(O@# zoMJ?(2DMdH#%P$viC_M~ir@BY5Bd0yobe-{3fR_izM7a^$!hHpjodwP7~s)U<#Ic5 zTq*B*!BV@(Gzk|gWwgT6)5zHfryJPxf>*fLM1IxR7QFn7a`slh)CM1*tQywmJzx1= z%PTLJeExF-4j{y8qw3h2Fcv>TJ#Sb8q37mhLN`VRh>^mz#;TF)AYZ{1~kP;*%e+j_yUEEwv75tB1hGrTZPNa&MkrKTXgLbBtx2KA}3X3Ajo398VT z97$aw0rB}UV2UZj+r>1kFY|N#m;)u(@PTSd3{KAk{>masG$hAGfRNK!cDup*Tm+a-hd-;m=IE*ImGlm zO-3scGUQ=x1~&qPA_rqg4xpqKSPdB@F{trGZ%`YvYsb#LBcd+5fjTgwU}74FGnPDb zlmlDVpdmS2r+}47`#c(~m}CDb2Pt}3Kb$;4DWrVyb}a4N}bSo3Qia}Y>V z2L2RjM^80+n$gqrBh5HbjXmuUSPTQzW}-gZ(44O*yMaQ4GEQ*WrE7GEFy;iR5U)s9 ztVsbg1crbv9p)Fkhs`VZ;n6Ae)0HcSn5;ZUuLKNJ5QYHTwdZTz*YF?wiX+Y+t@-@t z)E*~pLo_{8lymisR{R;N92RPMiA;zQ)(iRae6C6^bT zIF7vU11;ON^4WjhQ5r|vD(#-8X-}1HO1`0OQ)DvP+gi4rQb^!k?``?vAGy5ze|;X$Vp2%F=$aHNaDCnfwBi@@MH^B1@{k_o;kv+!LK%SgJ*4pO(JqdJH{+XG5fiVTJS-87HKSC_S*cG9*Pk zS{GBH36(Kd1{%=y9=zud z@^Ae)=D++dUhos5`xq@TZ5nd4ZJjDCnGUfvrW9N^Vd=1wQcRI*9B8*O0~HfZ*VD$4 zg^x6Tpx6u)eMix6Sd1g>6ge0N%4wk7PPk#jO%uh`67QJ$Z!ulYc;c`h>VVW@;O3ogJr(3UwvaEwXb68`YXFimW#!l0=w*WKqfA~CPKHAvWnM|?J85X8Fl z{8B3>8eFi+8Dm#vtw;{rDhBl#_;fBo6fz}f1P7A0KiBz;*AE*vU`dzOclUmbR|$Z| z2;w7F491lS?8w(jdS230-OLI$rrMv_GP%yXh?oSQ8k4H6BuFC-Zn)@ialk}RG4@pB zmSz}OjQJWLI~G&NVi;MB1Eo$>VM;*O*ijDyb)2ZDA+-g&Yk5a}+DwRuL5)R?5{-pu zk|~#@q~={NQ*s#tsT{H0XK3~o`@=ACa=Yd3{hAO4wwqnq0T{aEdgE+@3xu43Y|}&9 z#d>17Kk<#f<{4aJ`JwNB2x6$pw1Sa>H(y(Ga=YO97fU|-$t|Dwrz8Cq%34?+7@DP0 zRA5VkEo^e2D1@R+aq52PI6kr5y?wx&ulID@k)xA}rw>OSzA<5~WpN-BRiLO0)(T}~ z5Ti8vhN@MX*5U_GyC|runjikbx6a@E42xU0*d9N_^u}k{fARpz3SZU37%Obiprju!EfV*TxQBIzh}p-m#}pgHEI^h-vqbG4K^CZA zFbtM%NZ`XTK(|r0U1aK&*el}({2Ew89F;gwma){BZk`$ zTKj^5k3B*EhrflA5vLmOD<)qN$A-9V z82g5PQ{dMneqAsQ1z{=)LqWfRev`lp?=x-PgA9QfVDW--_v=Hocc;?6htt=gdkD)T zIC+KW4vAe4<7IN5v4D)p^6c^qT|dSg-lh80|9kr45Pi6T$s%oo4tWFv1C@hez$^;n zZk1AIF9K2v(t@rO-6|ZrWJ`7$;q5JYu!M^N4h^V79$muvZS49D!lSowckUD1Ex7jr zkpk)hmWph9^ht-@+r!fYtmz;l!>?UYU zf?S-fZ6p81 z3{=cu#jGz2Tr6qCacIaOLaL;jfXgxm*&GL{^URqVjs!ZIR8d?P97@fgEgfwt9-Otf zu_SBY!oX93wH+|-l&yOkQ=VemHyIZf42?lulM5SJtm)C_j98E8VoO-`_(jiDk13$* zJmL(|3f2uwV$o8NW=$-fB&SDLq%8Vf-`PpJjg_gQo3(+ElO)6#)H;IhBhF&OQ-ny2 zV`5R6z}i%n!a)ocqa_+^R4dejGc__fblAg%dsJG|J$=N~zR55J&XeN%F&}YYnk%}XeaM+SmqGG&(*OE&f?~b<Aeog5m-yolFFRbviobu^Soa6)onx5yM-k0sXa=f zOtc18r1@EM4Ref?L`j+Vla3fo@WLh+z;lwoj3^~LoS_g99T_Pw3L`>gCqVI<#z4G| zcr7VVY)otImAr+pX2|o{t#`?YGAiu7V~eW1rw1mj@;2YxZ%{HZ2rMM+tx1J_3trQ{ zb31TF64+6QP}&5VjN%!jxH@hVZ3ako>jjm#e>KMwNSb2(aB$g|>;*zPEU|}%rz)*~d^Ryk(M6{fc#e{bw>IAhOaXxitoMf>3 zCER3*@lE{kkeot{5N&d96$eoZgd>X0hFE=(QBy8#wzNq&bgsCEaR?2@98++Jb5B{Z z&UdVPSnjc)p`fN>B*Zm+|A20K3%Yf##-}Kg#L23S1?mN2kT_Zu-=ckqomym5VKxWU zk;lmMD*}-%4$xhhkiV9Yvo{+DzAq7n* zg|>i2iQa07!+?$x?*0++**o~{CFWv{t|sJsLeKi-7U&~5lS)_~6~wQ&O?>t+WrJeT zx6d)768i!3?|miHFZ(*iPkxH(Q=g;25l~!N5xl}?gYyIC>>0&yT7FVPQwh|BYlr{D8w zwwr>beW)$|8PY!CP7s}fI};08Jj zJ@^gLN5tnu9DE8e_&yEpI0u%i`fXQ%1%>Dp)kJpclyXBDr|aM-Q}Xe55T^-rBvPhv z9}3t`P#7fkgy{z8I&lqBkYF9T`MSuN>*RpV)%5Y5(@j(QySOH7Q(z|rZLYuyp8*UE zsslQ?1VR+a+W{dBQ^qN|j^eBx%DLxYONc2c!jYho!sT_y`)~)Ekf+f+ z4tWKbbie)1*7D7`n)bKqD-kSo8j7;T}=vh)}-@bw||Pf zUnGqmm{4PUpN^Lrw8(&nGYLF#7UK%6lsM}#F#%vjR7&4dcxa|T-48V9TbAoBi>{}c zCaP{=u^CvLu34;ms%~U&@U+87J4{slh#M!&MHQ!<@GtSfYBDc}Dx7vJz99(?js-23$BIBHtP zT5yHMmkoY9VjexFIPZ|NEpj=a+bQK7O(R-bq!i4Z1^VF+FzmI+Kl?Q0+fRtW5UVN~ zJ>NYd-Z~*{*SND&Y*jLL8{E5JM1SQsaPiN6l=gdnka~)!u~3yMfo2>LKP9Kz{DaFu z8b7AwzOVlfTm<-s|C|ZI*Dkx&rXd{_A(+Igj#$P@>8paiF6oygU0X9$B`fDRYbrL& zmTgtjS4)Pnq+b-Q_FGm*NA%4;{j%Ybnw}*do6i3sqJ4+5M$SiKyd>7SPKQj_=WAW( zz)lTys!pSt&-12+E}&YV>r-NTn81mhGex^|s92=;bVToegeMO^!pX8ES&{C+{vYJ& z&(^m8KmS9#vd#B1>rh*u&LVXUE}&Hfl$dIPDHj+ki1&y#7!1aR^c)aOjyr5|VW1vI z+Bjf`3AgExO^==;ziUtzkvAk+|B@CE34K>QQra>ATF#y))uyIo_(3F`!l z17lHJA^mU-B<_+$${mnUfEmyjQhUdg0_HnVBD*QaVDr)1LNwWtYJwOLa|5gh5w#(= zLm7SmxN@)>P>OtB6gLjwl-4)*G_TfeH&1{%FB9@Qq{F&a|4 z8>Uoo%}*Krtx~&q)gG3_klRXIC7=V6lhxIGdHp3jaM0!*TBMkS4agV~C)g>CgcxJe za{>`=d#vw<#&8(RUm~;WzGu4;J_3J6UL^h6xNR<$I6I{ zk#ZPuI^xD27nORrpc>aS+ZD@x!*bfPHw~#R_C1v!XuM|`vO|t4jYdlKSOpgq<9%|s z@ge=}%Ee!e>J?xrC`(xE;l;tQ!TKq|S0@l1FuQW|62a}g(~~A$@Gac7ZBE;^ZDZP) zwr$&XPxsT-Oxw0?yQgjQIsL{jzVqFjf8a!%y4q1UyCQ36R#xU(xl*+pX@`Tj8~>nP zGok8WvvL14G#ZEM;T>?N`$3s09^2On7CVqC;jT-^Of>^w>K665O}%@d zSyoz=LSArr=<~*~M+J*~iSdhx?NTxbU zrn)4;9tv(4ueC@1xzjc9_JXPC(37(_9b@~G73zjzP>S&O)<(LgpWi!rtvbm#kOrU@ z6rOZKKZjM$pmH6#^Et(z>9Z*W{eb^9^4@4|Y~vJHR7KE4bJHzc&Z1*Hj&-afu2Z^7 zRwuDZlqpasKr&7`OkA)4n&NOP7Wa%epuT{Nd9cp%hcKt9*!EHFgvq!aq(_!Z%ssBB zRQ|#l6}A|Jm($3aTDIhyklDPdIjdSZyo48aVsE_tDMyp9he_ z5wC`)otf-1><)f_izYRBiM%WLV#C~G2oU5%w~?QL7UK zb@liHurt@{bLw(W9ypivW-V%Kb~jz}KN2 z@y(iK^pPCh){R~}cn5E4#3wVUm+l#IAF5FwC1;w%NGEhCiQi~k!B@D!FrLitVjtTx zCQ2)-&jFCPtqLG|&;#Y*IjDGKpQ%s;cyzHQH^a_=pnw|>c)=$s$nA0R9J$(v)1V5$ z&@+&;WwquY>zWZx@Fx6ny_un$vIlI7Mjs^}&#&NtB96iMLLBOcpO-X}wwNrHqs5-RSXTZjp*RpR%#eMRLr?|JMq+OWy-QpOTA#7bAoeV1fxGJc{e$O>h%o8&4>gYkZYfY42T6EM@tG|%(}qlctMLwair zQg{xSz$~ju2StMG7T5pMAyJ!RPZKvBP#cue;MYvIx-DLrZGJNkl1>A zE)MLWc~t;#NWTWIgI4@w$Ce1Gm_(fDEBpbVRoT{4hwYWqIGu1J!oGcTbIE%k#BFM!?_?o=5d)J| zE1tMI224SAS6MqB>BU%ls{DM%KKQRWH`E#l{@CQ-2fa%)Cqa&`%$WH3|c z=`3bOrw8jW9D%%GS=rq4D7cg?>LC+(K!T{9l(*rmb=X@t0DYkKmtm+?Ju~CaHx9qf z!@k;3ZMLE0r0_7F{Xs;%lju2N5wQxyEl>FpkK1k&1Wd6|F|;T570Q|zHkmvlp26O3 z3TP1~rz@H{$x>w%RNMn;3c^AT4pbF6V_8WJsK0DREFhSL9MBIB#m~^R;_q9%)U@EV zW5>3D=|nL+IznYUg`G1Mov^&@>>z55aXu945{pq6g6iq0py+6ov56|nrc!9A%ZhC$ zCGH-b{A^yYA{nI_(!XF2smX#p(e;riC1n_6y~;Z7VJ5CWWPcIboFPQnLdsU$yCb=h zVX!Kzuv%qj%=tl~(W99aCnlp5bgoyT6^&CqMV4+W_%%IYui;YG!#c(*!xH?vJY{=G zj(3uxJxJS)lm%EA%@hMx%I{y|ljluVTg z6P3)3<@yJ(ZR(XWTTI`5#(fNADMcAkfnq_jC!m_@c0a|TtodUEUFe69>!O{z7b7QM zN7l-w=QljAkZIDJ1FJT;xI_&`o<1xuUogmtuKEaZ9wiAg{oUnU6mvdjhFni;#bGh; z-8dvu;hy2t&QNw3%e9W!>oQ6@{YMhA40LD8gM44Xd&0& znsp^N%MY%?6g>jBKX(%Al}DeJibkm@6XsE1k5gtMoZ=)q54;3-$6NsXp>1~5hAyQ+ ztxAo715PqK9ra(U?8{+MWR?wEMi!$u?htAw|Y!gxaD$$D{P=W zA>%x!zk~z}OBIXIz_JfkwTJWltuu|ttzprJ^NEHKU;owVH3Yq$Ius=mO|VH##v8A^ z{7RJCJ~3OgdM+%~%Z%D^TY3c|)l|;?YxH_3seDZF^ej(P$MxAODl(XDxKKXRN{$EJx82|uJi{)2QAb5)v9dZI5IEp#<6UVYDZ=lCM<|buSDIv zCED9hzKfG$ZrA(gD({YSkji+=+ppCP@~k*J69CGy^MeYy%F#EuUXqDPHLEx(6@Z4Y zhAlWXlD6h7Q2H*9Gry3CG1kTX&tf)A#?+ZJEtkq1`q1!6=oe@Y6-GC}OiAo7ds zlt?388M~Y!!wU=>52vy14r87;$}{*24l$GxvTj#mf#!}5HDumwR;|1UOmW4YnV zk{W(}zuwxGVndzq0rKIEh*)~u)^D`u)-|`tDGR^oT4@CEiuCCN)ZI7r&Pp=k;-~9s z6CcuFICXunAFd?JKQcuHvVXoVGIGqi(zy6R-yF=9itlWrVPm!%Ps_rzd-5%9cQc9l^%fKy7Fj|G?_-7H{Jz(yO5!VatBZHs4S=OZPsjC@eb@ z2+J@3kjAG>_b-IY6D6}hqfto@DZ35A;ZI?KAV&KjB_A>&b^-FNFTg)B5f$|olLlE< zjv4bq6$-~@69ynu>l?*nJKv>tOBMHO$KcF{2!tPR4-GLF)c8ev`VZ6MH6I=_sVeZn z%3{DnnW&&5JOV&jkG@rF_fD`nfguQj zB*Z|RlIw-zg+$`_$ML3+!oYgjYE+mxjnE=py=|ZLr6IK|egTWb;4+g{tZ?JD8OyMW z931&#trFyL6~rRi6c%|@C@p3@W7hPs^w3IkYrMA5PkQB;7Pd)dot!OjEF zKfVbw9Uq)ywZB*~6*HT&%|O}|B?YX>RLzKnMl?i`fs_-&Pc9YGRB!e@eYQnD2l7~d z%5ja^fKj`K?!!80rxC#~gxI=N&}=TEn-YnFg||?KGs#I7+xmt}RN!^whjl^-GVL{R z%7$^f`J4ZlItV}HpgJc>gGm>Bn|)!B9EMql!bbrz@l5+1FxETKQ{JP+boJZsA7b`% z0Olq9%xu>y?|^QN+6m3Uz)G#RVkCGo=KXb;6mgLwdJ0d0_jOI*&X@H?0~6c#R8zk|uM+bYQR(J&rd7;< z^BQ_?9|*(S3CcV#(p@C7ru$X()i4$}Oh;{dmRlo~uYUmx&R?(-`@%nSVTKIq-v^5C zh!xc=1~_W9`^QKdeZYBbJs;n9Pm%MQZ`qcSAeHMvf63Px`7|!4!AyYn-p(H^uhgNv+53Qqigu!vWthoJl0@@ z?$hWCsXG60I3eOVlQIKgp<2iV&oj4Y@*$UOWEW_L%^aPB+c6d;!!HQ*LC(ljl93lR z4g`a_!cW4ig6mmBn`FLcg_&fscP&Qe3m2}5R9J0o@dYaUQJOu|RGn(m3H6shr&7%N zMumH3Fw37qGAwxGnlc;QNUT#eM{^^GlxAz4rPT2kuV?A}kS>A_R!cX*rFeDI2$K*6 z<045ziRwcs1sjH2;X)Wd>shC=MZ#&8V|)*{=Qi?b9&xPu;Tn%4S6DM!*Y_UI%^BJ~ z=m1yBfUqIX4xPWrlnL;IecH(ZiJL7`bipZrS%WH6{gBM!ja2k}(t7%s-}wk+QP+!o zr{74DffVxI_Wiqe!7y<*ct5Wd&;MyM5JKE!YsePsAbA?FNwX2?Ikb&T@VP%a#>BDd zy;iqbcB87K!GjVWd5Q+2KC=_Fuk3xU(=JP+xFhyrDyH5qh1f>3-;)F z4`%M8@^{Qv0xm>j3!c38t~~u|3bZ_35#6D2@Y{BL%dVv+H?L>E47Ed8#<10$m@us9 z^dxxM6yo%q0dCcMv8he_M9I2gTBce1DTn+*9;lQ~#6znXk7V$Vyez}}Xj9!0DC_cx z-!Pn8#$T5h`MRaJ?2B&y=`@Sb_z0zC$KAH!WHaX?FE!RnN{;Qx*xqZ-9IGL}bRyHF z2(Q5#Cm-h=u3D}NP?tNprPcQUK7Rj>eK+0$&fC8e*5$@}QkXw$Xb_y*j8l=>sRCPI zh+^(oi$cA zG19FL&5OzQBDUg4{w1@2w7=6}#A8~cew~-C+`p%rw*L6MAph8+v-yJVd=`&1DW6In z?@donXHeONwGd}h#&vd;FaHHVlVbWhkWo+kSYOHZ+@UnEj2E%5?-XXMYUd=w_r9eV?bnB zVHQh;!l9NQ;&s*P9ZbwvIs`&@ArU;cQ=k`W9ZSt4aZ5-2xK!dU-RQiYzvCMXpbLS6 zF4UvOQJ5fXoG^28ceyTi=2?WGddO8%D|%@S5w|8f>&>eO6ujPGpQ1%lFT_!JU(~Z( zcp82y!_mw??^)(b&o8}b#TD$?9{#e<=a)EDx4iSHDO=yx9#7mdcPEKPDLK#!lf^@V zEPQyl7S@EYKx1d4)f!<|peTR%!}`Kf-UdeFu69`+BBEBY#)9=w2MH%1nYmhD#^ARK z`Ox#h(Kfz<53>_c`4O+%pYK!YJ5hJDqF7V*dBfm|ZYl4)Vu`Sc%FT6}EyxTz9qru3 zAi3~`OTJmRtMF#4MLjp9eq)4iLk(9IP+%G&IKi;(E2U@vm1s02+WcoS95Ec7O*x0H zxgL-nq^P5grWYa{H*fP}31KByJhfVXE<7A6#~5}FLOKyN$_LjHRsWc82??-Tn+S=& zb-d7UJ~%`6+1uj0k~%tHW>k7Rid9ay?lXuXovW-y(t*GK1{P;p$$@MnTMXH(dxDJG zOp`L5I;vcX_M<~Lj3KePbsUCWBb<#kVVMIeVi{AtBD=&fata%O+p?+;Nay|OnG)PK zoRK+e$`y=HS-F5YbcELu&&^OyU3Wk+gh4Yb&4YjwTFA_;5z9a=UtGVN@QhOe(6Rd& zOH>NVH;5rljPV$RLrIAUVG1a(Egg)MQlFhgl~kZ8lQM%hFI)B zr0>&=EfLd;@<=yg@FT>X0Qa?viUIG0bf6rDsWSlhFgVSzUJkhWPL2}gdF(lP;*r6t zF0@HlM*0#=@bu%>Rk7%iSfG<(4##S*{dj@sMaF@RbRAVU#xc%{&7Z|%Aa8G^85Phe z29u0I0R3wZaYLut7FHD~ACgM$)M^jq*2&^Wln}|6i@T@^_ko(T%I|SM#SQB5|-tW&amJsYE$Imv7OuYhi1z~qh zWsNU}7zFB)bYc0h3UJXJFy4;c=tHALZOV+K^1({k_%?N}A|0z9b}cW9Nw5f=p1DyxCMo(Z44KLVBVv)|r+C;O=+Ebo! zllg1?gRJa3@GaIX-w)JXUL96(wNjQJN25a3;(>c($FQI$`(dh(EYU3+B$cVx7lw0@ z!ggifvKU6bnylUG`Ze-^K|+Zp5mikoEldAhxAFZ#8W@B9f_FGzV!};_5ASEzgg4Pe zlN&gpEnR13On-0_vtUzJS&B8AXxy3gJAystpNS@?e8RQDp}uA3@w*|j2p7s94>{f0 z^W-q$R7!lryMVj@B|4e8j!UE3L54ohPC{4gB)wAXUN${a4}XHmcRuGIwFr8NH>&|g zBdVllYpf4oCA~Cu2aKBWXDZjTNjQ&@sTK<5{HF33Jh`T6;XhF!s=@7rsFkA8nzQx3 z_@^oj| z>_h^ZJ|1Rz96sUsJ?i@C$%du$P8^}+uTe8L7#!3<8k@@zEvW{F3+lR@9p{%z-mBtH zJ<@g(p4u;AIGZxm^30*v7}*f&Y{=h;Y=y2W5^h!Z68jCnd#_J0N}nX2?~XgH;GWS(K5gx};4(@XY^}@SV-_LJ z7xaZvFgW`-oLUS$dLzU><1Dbp5jcvUzE8qi&a|#qj{+z|wSHsc`1NHvrojH)buGAn zJqTq7=la_D(>eyMA`8!qi^qo?+RJmidL;gJlLC~St#d8S#9=IIeMsumk(wmQ^5|}q z9ph!8Xe?r#Wu$e~6-vNKq(oeE#Gr(j9{sLS&}ypZk7DO7H1AlXOn2daJeOwC4?J8V zmp%-y;<)z_r<+SCci zVW~5x5T_&q*-kf{-;RC}Y9-1E7#ymc5OJOe#@Uhb6`X(IG%;>Xc}rD|#8Zs*eyS1? zp?`!5dPy^fkF~1%)6<$hR1hm;g%+AHrz_HvGhZ>`B4NjN8=YyYS0C254Wt}U6d{L( zn3n2Nh4Qsz4x;5yr0^J7Bf$*0h(kN&h$_8Z#2xSl{sdQA{-!?|Gbtu5xNLeMdj}DA zoV&Dhi=7&k^j3Q{6|Ip>J8a2{xS?$;bajA$L(ZVFrv=s~Mbfu7X9<3{*w){{EPIL0@IfIHZ4wzPXkz$k6|;jd??g;>_=q zs{0ZhdlczWKu2=H65%-e@Qaoongg>>D2`r}!j~slHFldzRFx>_(y!z`rfDQ|glzsjH4U#{68Le?+>JYpgnLfp4D>U}VI$WlWdf zpg3?JyclAF+I4JaHm*A=tYC{BHRJAZ+~*mDT=*z6Q$W5#!u5X=Vu_;aaO2@fv% zSE#SAfrQ)htH;nP7mGsXyt#`%HxmTn3Uy^j69qpKE@Wk)n$(kXG1v8lfz~>fFkab- zA;$t76xi!^@D^Of^Q{8m)C?uIZHq-0tF<|01*xOuG@e~POwr1+Svxy%3sRb>@vV9O zi`gRNrnc1}QRz@s6;7lrcfT2}eu3Nm9NUM(imLB|qn2t5$9VI|Y%KMn%KU-oo=vbC zUk^I}p;Y~ag}3&(UHdC(C*qr*#u>2e^b5^)?vzh%u-Hv@qTWlNcdHZJ8T4pQqb(Lv zGK{*yRgCttt{{!@Et$BPB5tP|H5(uFar31V>gOY^J3Gs_W7k|)jbzpUB8~k&a88=xRz0?pSMjJ!spmz?aybQA-wli_oQ@kU4A#(vqnU-JITh1JQ@M$xhqlgd zcp~h!w8dh2S(}kw8uSC_{49xh8vreaZM;0W2C@wlxx~GD5}+Y5Q;x|&C|NLqIshux zjm6iDz^jt^fxyHOp>=OXegAej{M!8OI>jdH1*uz&m?21m7xVKA3k^eNE15CA`6@Ct zkY?_-G&mZle=DeQn|`4#@FYI{9P)~Nu;!j-majonQs++M@Uy*dsvWgQ!^bMLbx@ZALD_!z1JfKB3)hBQxU(Z(OBNxezTsCKWT{m%hsO>TQ(HlejYwUrJS2~ zr2e+$pSQpP2QZ-?pv(P561a!m*G?V9UFl{&ic}05#o8D2#);gy$?$rqsTX)tQKV+c zHKmq*Erkz79LN1;L=l^bYm?Hm=z)btQp}^)itB($iQA*Ymiq=S1e83!LX5;}KY_&T z!HT;30i@bnSaLMB1ES}^)g^y*h{lzQSize=jNV|>aSTHg-;Z(hE@zfZfhOj9)3T(Q zSf0814wiaLbtFA^p<22Ob1NSiAyA}>cH(7d>p^R>w<#5~8t~ECM-ElZF6 zYT%qzy;IOXZ#-PK>J|hGUVXn>-% z1YVN|guF|HeHnH~wfHmIpECgmIzI%~cn-CIDh72%?z7v~gdBpP(qRg{pu!EppIC9> zmV`Pwh4+>jH7zExMgx5Ky$}+Ql}wh20`l?{^gKYZWL$NyqI3haZo zS4d<4s>M5SOWYOK_?Dns05ngD-q}QD!9qyQXsJiOheb@= zALQ0h3Yy5225m%+}M* z_BCi+NR&phgsJbP$Az`#?Y3oa(^rZRVn2uR&=)P%z(fV@# zG_qzrTor%Q(xnQ7!j?oQJ(6e<&IyDz5RHq#BnQ6#ZIg{09k@@%yO*s~*^!A{R(`Zv z?}wp0(C-X!8t00p;4RZjpz#4>`Qu>Nb zChxUT=9!ils9_c@%Y6Dp6rJgCC(0tL1LXZ%#qem2KdeX-0b!fkR(@cQ+wppdWukHV z&Yr-_)Wh75@kj^`+2LoaUh%tRTx<Ac2 zFPIq)nFJnMkNFb@U(``}|D z@N1KO@H-~rnvZH|Dm{C|ob5n1J^FbsvSG(%k*$*RT0uoKR~=UIxn6TZ8XdDb>Fc^6 z=Om-(k&_GA|MD~Q&&J0}9ybo{ciNt(rwsVOo``F|T)_|sl-$TY)lk{gGTKcv zvssFf`nF)AJ2uc`Cs-INt@N*n3*p)vPRRZYuCMM2ju--U{RZf^-kW4QC}hox`?|7m zCc$u$Dumn%;ZO+C3y|sD&$|)|Q2%xcu6sb*y^#V64R?ji+{bD!5y6Eb-)fmeDKHXE9BVNsS$E-4u&Qy*6|Irs zZR)lghtkP@3PUIOr~79Am*uNX?Hv&1{*5gaw-j%4Vup<_ z{XKY-RQ%4Z31oSdPW#tHI@U=|Zx%$*g`gIco#hESPAZsO?nt~2+GJ|3)2N)?seNnT zMQ;ir3i=O$S9eq_uJslHqZ}bT3t%RP2}A095y)j@GNZ$S=6_Qy5(Yu&d! z2bT%{@Xy`1HMdVn9&G_nIbPdo70vGYVjT&YIazVohOA%;!D7wmc$AHeCk`JDzzj&N zuYQMvHs?VMc=@EDl&(lbg-SyQ`ug*t7`e3&RFelwj^aSK$*gyu7>rS3a8>U{-C`qe z1*G2ha}t<{iUh;06X5b%ol)x^iZG)LDD$DpYo+3Bm~A4Oi6QvAqod5lR)%_WO~JW~ zRRzAtJ0nv~&mLNVAf&zrbN`f);%ce<$RkfXNf2BP1H0@d5orvfI7M|EEZo0l|JM>F z!WDE|s!)k`!wDYPZF*&zq$$cCL&_DbW?ZQ8=VwN6;X@T~nmZc+Q=+%1X*k^vzRri& zmNg}iVN7o2;saOHmJ+pU;Y$4bHAI1{;6<&VT7)1FSFheX>$iX2LY%J+f+2DnG>Cxn z)La2~hTW@sq;dy(Dn)9BOnlH%ZVIlPbUlN`f|ySP9^bLL&C86OYYueY#?#H6e@9tl zm-n0wHY+8UvlHiTr}y3Ie#J8z8YyLC8-#giZE3-ue%nI2Mre~)s^xdh&*%6e{ecLe zxDMQ|7t(|P*WAXU zw1D6E%M`s}4i`Mwd z3m=eYhF)$^kIW9-IS>KeSsftteqvATff!0PIApi_&!v8i(u05|@rhuIzIsN&KCh$K z88U}fKV$>d7~C$Z8rw*+__s2{LgUPb2$9eW3>Cd`i+;w=kPM!-_;bJvg4|?w)57%& zqrrU3iR2Y2PW;7pWopJ;jHDWSO4pd>tnDu!r}F#tE#wxHU#I`ri6X%@!5;o zhZF(!H!YK@5z%)p5z7kQFu|g_KH6v3CvnsZA$S)j)a4Y^Q#q1re8QOy?V!D!k>2bw zT0)MLKF0k9zjp_Zsnp}yyJjx(EFFdSlL(4nR%(VFwh3Adr&CszJpuN|$wBBh+}UJo z$PuJ^*hU5wKqK`>-*^L7NZ}y^)I>ZOEjO5Yn&yDk`IaQ@uFLc7`KyU|rl+#StFtcD zWyFjrS09g2^IKF!-bYrY4DgBMzZ#dLj;S>mG@&f4Pqo@xDVnl<9rzCl>BME;G$3R+ zOZf~>uS{z}f7zSE(7CK`R^1>GX*e}@xK(pp@#Y`zUc&_%gsaivdV5=t>JPWdhT+aU z_oCP$QUXb&H;-Y|k<4_pC$N@zkMXZz-+WQ+;`?l(VbvXx^aK_Wq`n_0CVL1Ox+P=e z;Mgqs-LwU zohbhrZkI)Pb&T-#;gp~bXU6y0&lc;!99M3R0i+WlGSL1PhD$xEyNe^miriaBVx>Aejwm`S`8(1#>2f0#QVg1Mo)3KF3FEVDXGGQrd`XQ{xI@@RKH ze+z;2Y6aXgk>+B3oIHO4U(R-(9zSjjKd6A3*AoF63AYZodA6Yoe;t=$flC>iWghn8 zmkiu`a8nG_oY}1Dc#gl0Ul``B~MakCb)EE)nq|Q{+l(6@IQWIA(+QHS)CnCZ8hD41X|K zF@Ua7aOx6NxKi3dPy}xjd^%nyDB5ldQ5$nEmR)P~M;x57oFx!Le6&Y5kO z0X-{9FNbX3D&3{l^=x+urcQ339HR~>-C zvC7k8)+eW|VrIcN2h}Voe#>NluXf8`)Fg=U-rKGP1sUxF4Z5+adc^};V4J<+CrFjr zB7p^Uv3NF15Ok@0kh>b0o56^C3!@iBUTS1YYEb*e_BOd2lu;8wR7WuWF?+;+B>FQQ$uj=ZBqPcs zOK_LxRRuj&=S`biVjvwEM#(2C8Kfxlv!sgO!R^U*Tt0!QL@7}ouiUqcZfv@3aL19q z%?-Zv{=z1=rGml!V#7CaoqvXonQTFZl_bWDm&yaXDt(N>1jy%kx7)$p2JFa$mN%cu z=CE0w!TTH*8kPh4L5Y3ec)V`y##n!8?zx}TsO`*0I3j~?D06+dMfqrljS5u@(j#*I~qFO#vrC`{bYAuZo`RiT;9bQ?*(?ur0+xXx7} zw*ZBjUMb&X(3WY-Zq_ceCfotCL!oUB4R#Uy?6_r&yJ16Rw?esKu)Knc8So*H@cN|X za6hthKg|-d^OeP?E{UVr78{mSwOxT-aDhfY%V^|digNIGLb@yCEvSPYf$6kE%%Ejx zUowIRxF^A_VOAG3p~&4VYDnjC_bnMx)AO{~@|vEoU9>(i=Euc%?FD3{3gJ^7E=OQ_ z-0@{<3PZvxLqB00KWXL`qYc69ecNnlwB%W@l#KS zZ}lX*sMm^5|JDXnSck|r%-|Cyr|rgGf1=gQ7tDar2@@oYsZFffzu=?Fz2o<54&ehC zSHW3<4ShZDxjM#H|9}qIWklvBt!B7naAW~R84|7Tg~3h}OWDnz;#Dno&eng3NW0td zALF@sC(dP#R<;Wz9Y9@>)MhNu)(1!b<_pVx_^y0o7yf&N-!a2{>J4|PT6{d?8(C0M zJZ@sq;5g7bawvbblnJ&(U%)5UUPSO9AaynXLEi}3{u?Dl&WK)m8a{^rrpJZq(X2## z+0^-$c4F|8D%oXbch5O+SP$%1owVPl{&H(9PoM$G1Pu>A{W^x{66@NPA*At2R*W>I ztX8{olJ!pX_>7_#Pxn!aH?Q#>U_0{|N*`hmy zZ;Pis1f*K_!57*?@IlJ6@x5Aov;!#pb}{jHq$(hALujFQyhrYB(!(+0h(ibf{-(CJ zoe&VpNBlPW==O2u;ruQTz)T!*efWfCls4_v2AW!{II&Kb#9hc|6w3b(YXpJgqU79I zjj}9y%lq@>`sk`&+*Q2A42m~!1DAD;Uv}luB&o8O(Schc@f!RVL7$)~$M=)5Atn?f zGLJGN=AC$NZ2D+_=~{jomurjtf1KohEc~-<=k@H8?!8}s_9o!|mhU6L9wN8r5&Ft` zPNq`7J!s-LnpmOSofpU^*-M#_7oiF?%x}1|5x3Q_JnP4qX1Ue7j3xr*K8VvU@i9>sW$nWiL1vx zGR$Y4`0zJ&{XD|jNeVR(OI53^Ee@}?IS-7#`tP2QsF#b$yLqI1HLa9=>;bepJ>8#6 z8}ekQygDaJr~Dt%f)*CXkw1k(viqX{^MU_y1|bVqbj_EFK=}Wdho1=_i>y;jK#-Qz zko-&L!9PENjOTq)s%Io~K*9TJ@^8fE# z*^l=+JwnjLJwIduRSx0US2u6&?)8H~zb3i(JIAkfem)}F1%v(faO%2y35S4_>(5R7 z@Qd-Gp$7`wqn`Vv4XuFd;FS)yo-BzkXhw(Ih^Lx&kex40 z+MF&ua~LuUZ{N1bdj}uKWIEn~vA94FivDZ}DRun43fhUz!X-%~*a6Wj&fp9L8IU2- z*Mpf!kmo=7`p+RbE5p|Tj-pvJ0j*Aipgylt37Y||VhI1+H2>#C(}F_pURkBX%+6X6 z%Ffen==a8V@hgUvOwZejJwU403o6~O9$3G3-In8&U&}K;KZ7Q8?-euuztHo)W6=Lw k{GSc{f3u<9Xik90S+oo|q<2vYAm5jagra!0s8R6$0%-NC`Tzg` diff --git a/docs/hero/photos/characters-light.png b/docs/hero/photos/characters-light.png deleted file mode 100644 index 37acb08718c8978de2886d8c02a2bd65ccb15dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1431892 zcmd42^;6qxyFH9UD1-pTgIj^(6bKH1;tqwjP+W_=X(@3PI5@NqaBv7rXeckAjQoxc zfP;sFlNJ|MbD2AMbRD&v{kZJvmGx_C=^o?QVLOe-no+e_PMU%pjWVLGn*xQ>_cXxb zC&o9YTJ231{*I_U;57N->dsSMUL(^1P)nJcMFV6Mfl26p$Wicf0H$qepk>U)tt$eM zVNm5c-^y6pO|K6AH8tT~<{8A3ScNP_5xSjM=eoR_?s+x4-E3`IaX#OQ8o>@DH2DAf zn~-2ADT2XZ#dL;u+u$Qd6)%OBH1GClIh_=&Pe@ciEP4go77g1B9!EwjSrWLPeS=fc6{-qXCVjYh@ALtWzNaAedJFH%16e+m@3E{iJ+$J2J~ z-@8bd#PyC!Z07jCLH)KYgI~r5JL$+W;;SeQ?)j#sn##zbh`ZII&(gsqNym{B+a{;G zCy0B>#WK253^E6BiHM-_KHS`YM`Bvoa+VjDGNb~jON$K3i0vx7QDt0}{Ta)xVX0E$ z4JW;>>lt8u#EH&)9B{ZQA^N}9>BXe^v*X*cuh2;bS1?ww%8&z}o-qHFSZB-mK|Mn- z<7zuAga@WTr~;_H2}9%nNK{8aMJZHK0x(3x ziKNPU-}cs|eq7b8?*haIcZLx(G(Pl;u0=gaCtb-9|KI;0H2V_l!D9;HXQ3wp)Gbk$v*ENBl_1xKP`iV31HGQO5Pzlj$^=rd3d6Lom# zrs8ikl5s_5r0^>jF7)_fwJjpxK<*YLSK5!BV;^cilpa%;Md0zq`9bEI<9W56ROsQZ zRpe_$$-h@GggI1hJG8jIbX(dYwCY3TUi;~2p)y?N?*h1ejeP(jJWn}ZespCaRjA_< zUfFYisc+XGe2vOqv{eR=)@_BF=)rMFA@ya~KSUz*Y{IMcZ(C(d z&H)sPv>xKhtMQ4{oUiO2>iAqx1lGVSBE;fXy0@~zEKw9Gnj@OptsM}Xo-f+}M#>{B zP2lpi!1KcvLM%yJvcSgDlVL~jToNt?0yCw+md2?Wq}iUn>Y3B#stuU+_mNs3{|c+g z&ny@6i6c4t=+T`2Rd+)f1{oO#q!_PKsPHNeeWw@qD^4X-LzE@ITa$E!R@$Gb;>H->& zcc{M!T_yI){$er^AJ!gd=J)nn|Li^V-tXTQvZXqlP^tm7e?CBIabG_lQH8oFO`l?) z$n7n<3))fF?q&w#r-u#vfYo6Muw>rjI$t%otq^?TJ%sFF@w&M5hhrU%{+&GMpGW-g zU>-qtuXNfs2JJ6*1v9O#Tz_Yt9V=S1M5H2~u}hYu>C@qI1z$Uei@a|O@+*S}ryeBKlR{NbdbiO;)wC9~f~s=wWx zI6=C9;{amQq1^AV{6xC^#H^0?$8kvKnaO*zH4?p?>Y4ocPu49bR3<!kot*6`v`n+L8UsC3HNRAkToW$w||*;;F}n3 z@?Aa=I)0gG(L}eW5%CvXu_R=z$&@tXD>g@u%XgAX zUXgf8_n`JMMB5lr(s^(S$%HA}5)x56P|PtgFhTreG_e zT3ep@lX|;w^4^8O<&yUB$nk8c-hX<{Abs?^4}|ALJ1X+=?#A&%_j>&XNLJX<%7<+X z9FTy=`QG+wwt7rgEOAPS5GIOs@quaX(6H$kXR+5m%}PKH7F9|KO_&-HwehDP(okM~ zj0R$h3xGsXxUSh;^4$;$1l^W$S5M>>zTEsefZ&W6Wf~y7%?c~hEb92TR9hXFW^On6 zcU-1SoT0Mz67gdv_fKud-pgzl`QIRdf>0mz`LiqMruD^WGJ*UO1kZ?z!!WmT(7lvg zXvrCcUx|vwyW{7)jt$c6$zEXy$S}&qh zJ`$-@8qI5UP^>(EpoLW>>1}1R;*yv3_Q)1NBqQVgNUiNFhlfGew!~vTVXH49#DA_w zAKmlsX=xU3r4?>aentl`(05(c$NR-W&2#5ilD!w`yUt#Zxu zj4I9YZ*qkTO^%4$0t3~wOZ*-u7@Z=^*GR`ULM#3~_iZ&Pb~X-e`DQ0er_)b!I`>}< z8T$*6zd?Fzhab+>&a3YqpPD&`$!3_0|H+Lgdl<(Vt}cIH=Lu zK6ct|g7BfT;l6U+mVX$Q1c8#~eK}35x zJ*#3gJ!OdQqO)ywmq;B=jt(=Y1cY5ML8Pv&s_||ppG-qJfsk7G!uk0~80E^Bll*3q z%SPvf6(ipp=+X8C^7q{dv0JmfL_Ij#QXTaYNl1<`LnTSmJ7*TVW`^VEj2Oi7xE)YCl@Gqmz<1 z25C=bIgnAww-xCL%@BUNqs)70HSv4_UoEH4%67vv zjuF_#F*$?+y{inRv{u{(^BNkX4 zizeDz&i?NHF(gCdZ|d(#oSXN*mV!*_aE+^pmfX7lR8fS~4D@@_lH~49_JjU~U->@_ z;6a#DIiUw1Ssb-g`??ZB7{;6g5%SZ&!5FN7r)Bg=iv20~6${&r74BzWRim_8y)wM7 zC!Vi*L_cdaXrm^1b~C&>nkzN=JNv9N|IR+_6=t&2Oh716rak1L?CT9RAwI<;p8&Ln7X!+ZKGAIsTl7vMk-ab23c8F=8euNHz$agL^(=XPq zrrOabtKf1zSy2PeM#Tgr9giL9`xBsf~AiKlb&zmFnWO$K|xgtp&FcUj`Mg8mH$nu7Q4~CI^O~ z`iUIfJLvLHtsfxY*SMudJzx57R(3xyXE+RQb9$V-9sXbx5Q0`J@p($?wMv*;4$M_@ zzP!%)nT)=$5KKzSo-uTLR^c|S@l@@7r})hN0_n*Lw;kKid4FmA`A^6FwhVstSHs`x zY4z*F@+l=)&NoJwPPQwKPk&`Sjk~lu-|zBiEL{1^UY)I-rUSz~SX7_aUJm zY%xWwfuRn>AR2KxVDa8ZNer**o*6b3_UaJNt4Sr#Lmnhfa&m84MsdCJX`^4GIqL~g z7@RKbu z`1@Fl8cDlbqK@C1R+??k7I>?qt;%=wd)3Ko$%Kd5?^G7 zT$d*z6-%o%rv8a4;a^cTJL-8R#KjM=N!)XYhAkGlxho3(C`xBj{l0p}pBaeJ;3wcC z8^aj`t0X51*|cY-47a-%P#Ar)E`%g=k7VT0%U6+&o|ccaUtuYnTse}9#A`UnV?n~= z(1f`MJEh?W5`x(vl_Lp_qub&p05*UN2;&SK=?PnyuqjOB?nKLSM9TeOaZ%%n`Fv4B zZR6Fpdz=m%GA%epDd#USa+1ap-NjiaQq)){3-oq6s8<)*mtzpX&Aa%2vmVjW z9vjpGE*CMk7Q=?)AOorbscGl@gm3bN`3buX__mphNcsm5;eh}pb__(z`87`osg#DR z8q1zeNi3z6{>0Kj;8xc+xON`j<@3wslY8$CNv{pm_Gadb6u{fhH=t47)qlXR7xXWp zQONr!$<^f3N`5jFHYXvLTogZA#^Fd(oNt1|IdnNFpiK=7J#R)dMvr7vK|n+_6rCOd z^2_7x8>4gOa0D@N`I`bhL@?tq(h4iLyuWRT@J5UfMVVxG$T4t~kXA_e+&er()DvFD zLkU#o@j8Gf>IrkPL7($01rhnTOYKIo{BmXbN5?CkI0@A*7nY4NGF)l z5ZRR1e7V^JoC1qPiFL6yIBv3T*+ZMU;-pi@8k5#1o>SxfpHZ<63jfZWm-M;4a0mDfOh462jwASMmv^lEq%HKk-b--fr>uTe^fUm8a;^R|fzMGBKf zIot9)(~q2X%9gUcoBngu)?F-*39RQ8tY?vcky9HiUKE9c#CQM6hbMcHbs!Yb%aR1e2(JG~8o``9B*`UwGhKcH*ISeeeNw=Oc{XZIac zTk%elN8=429drK-Rxp)8n-~#4hfl!D*xMD86*`cjXf*cW=-VPWrt71%uQe_-Oxt3wV zVJ5|H=QVD75H-6zZ!jhIF@qJtFSr;X9|`RW9j*BAGWFQUodr`9%lDOr0vdwKy7U6K z-2Y!5?q%>-o?GV; zc=_xuNt*5vO?XM$KfM~X?`+ZG(9p}IKhWq;2TWvh&2mbZdUPY@yazy5X*ra??T0;r zU0r|oxH<`#FP$AeyL)a*DxZeX>582D^s;fQY*EfO(7vFh9Vg$v%H{a*$pzHP+1(jg>uA)fjTt90;tRhZG`Jk_ zXN01~mu+d;RR+1+sW#k^M3QmjbB}JI({})MZOn%l4O2eJ352z(0A4OCuXk3zp;tF= ziScjKlS`mq8m_&KpXZ*#Iq!G5|Lr}3&6=%eZY$@Y^4zsMuAiE3KW4J-+(qeybP@JJ zCa?tA->bDxez#SXkcPwt_4=0^ac6MO&#yl`B%GfkJF4fU_Mt%|@)LR?@pfWVhVn&> zeB62w19UaoigJh(w+WAro?>{txx8l$SP3Op0VQI1Ew`VaPHH`tub&T(l~=>;Jsk0^ zf>R0TGj#-oxAEM+|IJEoZ$AE|TZxfBSkVOw%75Z0MKPX41fC^$2KXCC*YjS{{G`t$ z%1lukw3W+X>mGCILDEA|8y?#bU*{Aup{sX0tA6KjbBF%4L6F(_$n1UJcqaRd#uL@` zh7y4SYh{WuETq4oUf-gk4wT=!+38`s5p4B|nWO5cgpl4Et+86jfpZU08`)ncQ*ZQ~!@bCm8 z2yDzl_zFt3UW4owx!8ToJAMKJ0Z+7sE^w)_p{UOrpLc{WdXLY2H*O~T1nK^l(y%q5 zEdQ7!bbpOt4GnH)eOhCE>PN*Q8*>zdE^|iY3E#Dt5TYnar52Thfxx9k18m}I13P2o z`$YPNd}c)++57Hx3i%0A4D0C>!?E_prl_VACNI}xFNW82jV3nzI|R4D9dj5mr+(|f zkx@qQ`Gj)C)9gqNa?ZSb_GJCIbo}zVys1UMwREL*9_f2Q&^iZ`e<#e=y2*-+-OwdrNrQ$z`BRO)C9o*t~Hlo()*bS1(`RcRp!yhVhlo)7I(#HfyygeG0R3+>p4t%VL7&*0DU$e z)uPlh-dm)dfkQ(ubyfXO1F-PgLS5RYD$0G+-iD8zk$KQRzG(eO3mA0~rDVakoTm41 zA6Qq`1W%ZX>T_{369k_uTO|#IFaKL4gN1o_)pzfgpnqx+dAz0xTF-^|?=qbx6CF|M zO@ms<34?qSI2aN^5}Sey@9%ya5TZ1(mQpS8tH`8hu@>)#m7rsEwt-M}!GJYzNlf2H zy7G{bA){YN!f`mxo`{VvuVK(CMljTO(oTAU>)`M>o{K$WFlDG9fRO@i`O0$n>8bUW zr)AsPZ;B|fpxyb{!@NV-yXDvP!rwS3I{GirPUCWt0hXh_FWyudft>NwfeXMgE4`>! z_5h{9?&@HZp!tWCu)H|`T5om?v_sxp{Wpg=w?d}GuShwFaSbJhebWVts1`-sZUin5 zRmCZ{*`;DoMU;5pJOMNt;sDBoAhb!YAW9fE1^*E4yh9+BL6QEVVI|Q;B|z80y42vl zo6d#OK(d=JGG|}6)2)Apw*@-A8ss?9-Oxuxxi*W$Jau18x6gjRSb<+ zBer@?d`EvkANwW2Byh1M(U`TTE47Aa=J%x;s(7+qX8-W3<)@z3^=Pl_=aa?dSCDS0 zPGRq*slb2wnB&i9M9V??(O2F{y9eAF&@JODEkLkVEK#!OkWqnFTw9KtF~Wr7H?gRe zlMFT=j1Zs*(or=TRCyeQEFVEw0sx|0L10vkK@{J<;f*0*5FI&=OYUJy_h%&15PM~S z{C$U8N?8o=wBrqkw8yzDjp4WDYXeO^K|1m2A-pspbnZMs?mY4SL&Nx%nc@~r@A8Bs zw8TU1E=re}DjuWis>MRb6@80oB@QvHxm@vHqcMHeCQ6_Y#<#Mb$ReNkj76uiG~RwI zKJf+KIm6~w;1C`o=CF?6ZoKI|8imvlygf_fzE;E3Pq*8im90i*t^YOPH3#oLZ|q5X z)P-&_(bE@RJo*%Y_C#btH>hWxN+>Xs>YFJ4q)*lhp=9Je z9<>dS(w+_gDXFW-Y@~Bzra_{80k0<`uz=fw40Lljq|?r?x54UY0ZL<55Sd^YarWM6F}dAaq7N;1rkQ&f#$;( ziwdMNiKp3Rts+eduIazub92z7gyhXeuZz?~bdEZbbn`wLke0-71+h5T#{pgE-?JNo z#2vv`l@l`XY1y5|8$EnCZAXMLm)fvdJCdvPt1Q`7$M zj(!naEnwBi^}3j<&b023bkKIcsw7CutOBkr(FPW{5ImnkLuGUwBM(Q1g*QAByGOji zBjEe6C%a_tXxBSA8&DjrW$hg@@yC`-@K98ie%V;`f4H*hkVF4^slcrk*qU~Kz1Di! z>wLG5Xvwu;;-%tsC4|NC2WU5>ro@ZPx2hrPcsuh+dW8LRh+>Oe0gR*9f)JQ(SMXXo z8wU2ajCG(nW2bC9N88Mob|-miXscCkZ`gHaNjX3$!V(|2jVOea?&5c@rY_=Bek?`* zk_EdSItbLWSSA32CG230D|G;F;q6y?$#bd}Q(@kfIKOyvbEhi4pR`~CJ! zY7aIUF(o~hqiH|LoeQ<(u~aUOiZ2@yUn~20~MLg0Hcg33F#6fU!eP4xWhWQwBVS51(tzf^g9EERt-h7JKCFsQqQ7qT1l* zl0BCN{unFt@#1tPHU;rI#FxZeP7q&5+GaWR8M|*XTxa_pAjLv$B-y;@32d*bg(tvv zob=|$DR+o-AjsE*b(gl3Cj+um^y`l{bl!2e_Zt6|HDC`(U*TM~h+K~9fx5rWvas%c zsoh5MkT>3LIsM8lVKRgd7AVLmt1Hy_EGci z_IytMAGiSTbrWs-hnGde_p{3Rd*Su!%{%@jOj(+@N}fueh^Bmf*n(}4_r6Mb;+721 zYUXeTpvT}eNg1SxAITQ!F7oC8LSoJdU-f2_mV`;^Ht^7Yr7OUQV8(MVDlTF8BgF~LltI1Yrh4OUs2!CX!q#B0CXv4{{~H$tK-GyD!S{mWZF zl)n}Q=VC{aIofw=`#xbW+-yB-H6Gu$qHDzl&3}qT`k(+A>8E;Cct_~GTi5u|xM1%q zS-e^^^p;HQ`oMknKqvmc%gA%-3Aheb#diA-nc0JX8)?SYp)294bX zn_>?9YX;36ZB8^jzYp~URSX_VqNqi>a_ZO*R(y#UFbsjj{mDiiKsc5J%Wx`44oAd& z(Y}0g50P~giL<;>TJ`89PaRvo__QecB0w+VzIV$@B~=^^1Z;P1!?`}ldTNz^#^!y> z(TRgY6O^GB3$LQE5$nt|hEa3$P@YqWA1P8_D?AHf%|+pwX@WH_@N52E8ws^%x|u)L zg2e2%>$edm+}dt4%gngb#?;=Gs>?Qhid*xc+W62{62J%wj+(Ul$dWr2fkh@7$`CC} z9p-F=Nr{Qb{$4!4MpF&G(3kK9weQp=QStA;G3pAYSnDssq7QLtVhtzZx3ZocE~&U2@?;@ph{70*#h;(4WLzQVt1VCTu9ncMnA+kYkN1sy$#Kihg*$ zlEhEsgW3eIF;q5N#Q7*S;>$l*)n9n;B&Vdxc81-wpYyY z4JOfeax6hv=WByrF}vBqv2V+S!g{Lxm86fAn960=G-)LEdKSSEp{VLI{t}-=k3hA- z{jaMejY!|xqLB>|P2%ujPg@_cD*XO|m)0{XU#D-vAq|i#JEutPNlSQS7#Y$2W?k~~ z+cY_|i6}TJRJOi5h`rIHcXw&DG&ZzvsE`Q1JY@6oB?KA|E8~lk1$I#rxDxV_ah)iw zK3ViVPGX&83vX_;RVN&0|MIr{7u{RSNTOkm2%-wmj`Hz(plsR`jZ;RcpS-~FK08;1 zk@=2(WW0~r687KSVjSoA5o30*8z{ev z%K(nSYv8r~2zNZn(j;zG3KMu7cJ$$Tb{FMOj1MltukTvu3wkZMS=aSw{X~|5>3e`| zHFanaqZ*ntC*Y3YNR=#P`v3v!pVbD+UlTCxVs!l>f$@Od7SDZeMwKd6K(2y9()#_? zGSVbo&GBdplq(4ZU47~uu!^j-5}@UVaFeLZiN zZ#>RIFVUYwo50>XY$c>2KVFTfJU5U8Ek#a{OV}1F#kNQ|3~e~M#{pq-Y=7Dp6ncI1 z<^o3(p~q__7KMy`^;@s)JDW1Z>rQy*7oWrw=Ag19fh5xeXD*xXhf@;l>N7~DtyEZ;Q`!qGs9kf&6aNb~iM{^rIP+7Zx!0eD*h#RhUQ{LkpqusuHf#tr5qg zO;+EeUdj>ORIEoSaI2TiVWWgKknm$Kk%s~;S2iG4vjcZ7$rwGU4WWj~5`W|H_cS#Z z49Txt(%qtk`>1MX*dV%2)$TadWXiwc`R7i&|qB~dpUiXJy9w)4uyegAQLUvXHChG7IFRcna>8XMvN;j8gN-n!T1 zdH?CP-SYuUkEQPEK~|+L<-c`UF<}2aMX$Zt^P2$tB&}N7d9~{Bh$2x?QaUb!1Q&f( z5)2T$X1)_lHdJ3D?;?3JdcDXyWuSE=DwDRwXUbl#jwC#cNeWvDV8jU?vJ15b9y9r2 zA(4kbX$sI3Y+7p64$6OFu#aB~#v6BxeWz~vlg>Ik*1~ju5McZ%Hr~#wr9%VHQQKbz zv;hCn+I~tKSqNh)$?PBA@YnS7ijVr7A6DcXqNogGKO%T8Fsu0mYvL}YfDzfqtz32HE4wz`PQ9} zmr*c}CjRU$;L)Gw&PmaTJR_7$?3E;c^|AKjfgJqoFksQD(BtcUXt@UB@6QdRVeo)h zyd6NUd(ko~Oe8SCt~fAZ{s)xNk3_O)$Cxdvn^P)G z;Vxf2LKu5?3fSH(L&SE?MhIk2^W8UrnnBXY5tG|Bmffb(D-|I9%4UG$N*rMiAud1SM1-;@&T=L~h=`|Vsb;G( zsk%m0%Y_1498ZGc_~@P&Kj4y*{8})Xp6L?;b4mGw45<#a5sDj;X`7B;b`gdMsu}Vw zMo{C<3CD&(FDYn%e7Egbus8?BQrBe{5zRzx!K7c1=R}H_tj-tJYGspYy3YQgvuQ9c zSn_x~_Hp2UmQg_05Ana?iN*KIUnGureU|BZ-e8#ca7u$22)t-63f4EnmmmtNI$CM& zfdpH@exsN0vCzI522iTOU3g-ZxX>FSlOrs-2kF5v%*!y0Ig(N$r8XF=Om-25vcF73 z#=~IWhLRJ?n7gRzbIzB&cKmF>HxBLTF*)M7mO?9YI{6{<&66eSVM@~T_}aO-9;`ONNdrMr^v~014K6^dL0dPCbfiW$O7Ee2E6VZ% z*`O^K#> zVHmBGqzjvu^zT`J%Nsw9K(;S|ijntxq&Dms>jTIP4P!ub}&%2^3!6y3C_LyAb1Dzl=;49Y2zggGIaw}RnI2j#ORmz1poHI;` zlbH<2 znhKrp&R4PjGQ0luSGI&Z{t{c#y&j_3As!K)r(kto63)6zPK_X<(m!W@_G-CmT6Z1J zB4X$0l2|N}*5$`2wEZ)fl*uopH!oFb^6{p^V#Zos2j!mDk8+xu)R4^tJngo35RVgEQ1v}hzyXdh}?Q(M`0?i_E zvk1_xihY1i>tT^1Vlr;dY)BC0tz!A2aEZu-=mZm8tVKnuiHd3>2TgL z5nCCW2flL@4u;xhdwH~kna`PZywS$%aCw+OHv(72^_;$>>fY#%h(Isp4fTutszzds z9fLJ*k(5i&?~lJ>m*Zw-0gtevVb~th-1A9%oD0o6to(Jd*!$`($v@}%*BY+H74^;! z#}Mx|*2*gH_J7A=X}(QLI?L+f(yy<{21e0TCpcIS|8nz(t=$`m6*n<$JmXj;ZMPaA-1PT+=25-46p(JtK8VYD+Ia)3`W}#O- z-;vt~oH$(toV_m{qS(cA_S-s#rLbn}W6O_=2ufL|Z^Jo^pi|qo2D05p9R3FjAHG~( zo&pWrC2p-zYee2J%uGoG$P+w==67itMI&tuWgy(H4^>GI$Ot$+q=p_pzC3mfxIrPB zuGK4)sWN$i_Uq?L9DFT6=I>(&;<5vQ#-iPkqCnpRQBT098^kWsjthJaPwF{gpCc9w z*4TAu7iJq=Ra-sWd8rNt?vBobtNGDDTl2!nH?D;^h6*)7RvoWb&PR{5U!F!I;#nW! z-yZ7J{CDp;mr8D{h8#8V_?hO2Ld0#4!R6^zzIp8kkBGF5*=p#>hJG2vH8#Bc-m@-u zWke5<{v5@h8&^RArdZR|nOM~_BXR_8oA0d@r-t!jYz!fj@_!|0^h_g|l7n5woKi(_ zeG#WdP*~vQrir)zsA0RN#ITRIuPcG(O9}Le(WeOm?fFOnlxrHqK;niAR;~|()Trk~ z$*kJOgl=^4fOd^P^73ez>4{z;`x5EjY~OClYR(9A{4+oC{~{v9E%&T!u4`oHJr%Y_ zBeq}NGUi*>f_Te~S4SC=LFMLaZOo98B#)K;>1Su}46J8G5YC34)(D|eBMZ#E+`6#hu4V1_ytem8-HZ^W=9#d{dJqzb zlp-s)9$CZxs|;eV8&U`?JYHTLW*2>lJ3J4qZA7UOLP;x?uRD2=-Rbn7ICIXe`5?t2 zk8^XD$|UtcZJc-5fOP83axw-Z5gtR9ED9ABa0pvHm{<*@Y)>)vz=wGAKZNe$W z2p5)%70ztM@RjoLu&xl+L^qX%3MjrasLo~4R={g;eN|zvon9(@JBuD+c%6RJaPq#Z zZWJWeLUODCe@!K{qIw*!80sMA!+AL^eXu@(7#A&95|!lJpS7|OSFZSOQjO4U@k1*#|ztI`~s|< z9{h#d56-Y9B}2akTd!2kM)Y_N4VA1F@Un!js{p|zb}Pn;t?!&=x2k&}4`i60F5=oo-L8rwoU*0hp&I?t}!i>SFKJ(np zD};sCT1|a)VLui45@g?VCof2$Ft3Yn$$^BS2EswC9H|q=d3JiG{4ey{;705>Ch>X> z>-6=8<(|Ghc%fU7N0GxSm9@VJ1oIi-J(Cb1U?IfeAv2govY7e--n^o<5hcrVx1*4h zYDT>@U|aA%qTLbp+q=EFsYGHngm>p@QQPFOJ0pM6pmP4TR^`IN!#w>E)_9suFwzpA ze6^zXgpu)B%JcWw_@_xaoi#zQpmD$LB(Ue(J_Q=tV zx6fE=iXOu2cQsZi(}prQ#|tpDbL5eMbo?z z>Ii>Qyx+ZV5VAzZsr!haSg^vY#E)_i0d?jA+;}k#lQFK-DpSL6O{fzw$ zV$g{hO;NLq8E{nuNSV1E{iE>5?b;rP#RAGIQfMylyFg|U$-E#3AKYNOV(hGAkq+u( zuBLz@T27ijs^Itn?&#K0DgysV*CY1%xSv~H{p}GCpgwV^0k~tlz;Tk zZ_7=2g}i$@dJPemlqL2-IjgIk18w`h^8c1GZD<~$#fJ1;-x*1l!|82y$ zZ0^Nj6jxGGBt{WJujX6Eb^&$elaZ)Uw7K3O{_t;)Gi*mc=bux2G6U`*vS?@8f8|@B zGK3wPcgU01iLQjXundfS_U18zua^kEH$9?Yz#xhw>H|n0x~v_HRh6^<#-SMvs1xwg z`oyG$H)cmNnV}T0g@ZoYWNA4nkDyPIKSP5s6^UP5Rw#u);2W^xBjsN~*9L)XspPgh z;Sv;t|IBYc14Ir#oig9EP?B%A<;fwlXlXmDI zkq349P0giTv0vaqOW66Ht0AY zZ<+BQgU6nLVmwE(pM|FE9h@#Rs+<8IJyvws)+P9W4{@@#EAP|l#vUo0Kj0pbc_Kz1 z@c8|Mq#hc$R0}kyPxsiy26|X`Ft^9mgPzd7AuK`m(o^6uvxnJZGDuiadC#QsAjoa? z=}dv4ar-Kv(ubhJ+?aQshmEaAf{v=z3bLe1lX#RaDk^tg*(rbE0!j*s8Pm`6zrjwi zGL_Uf60ng7zYp*@;`()|*ZHhH}{1FxRbiQ0Pf7!Z&v)86Q z)$Um3eJtdcq0`WVkTM?$#jFtU`XjZNOJF&FAfrFZ$@Oe0nXQoa*&l%zasc^~^=kJd z{q=Wu^N#a2Eii*RFF`Y|%HCKFg1n2yDot{@5m#)kRZm8FGov77#hs=%se8>*c}vL= z6--KXS}qj@Squ${K#GCmLa;=pAE0(ROudFi8DrvSAI0dh*C5svtKQF-z{tXTB3?z4 zAdBQ0(R+S1GWXAJ;AQxp^N&|N0f52#TA2r@Gi9qEI5$t-`W=^TJ|k#gv-FL9UXuPI z))c)(W+!GRrbNooYJuSEh#gB zp|n^=qXy}vVKMo}Jjfg0q{~x(TaRES?{q}RY_fdDO`LrMY!NOi9SuMTQa^9}X;56x zVf1R;CCXXDt>3AO(demHBPPCqeQ;fd(<_7`Nk@buTSK>iKhZghqz-lAqfz&`q9Zbd zre`z9FdgXd^J27lXX5CY-6uQsRpa;@se55t6Ub`ffX;cb&h&pDifARZTF~{XZGG+X z8ZrG4zE;EQvPO2HV6&J1%F*T*6DGFLIb?fBW=I_KBL_wd?yx$GNnxfCeaZD>&b8#HfPFu*+ zgeI(PkjZ7PA6nOsC_Z1D#h;rCv9_UKU$7H@h|!mkIrvN{84<>4ODN?Emr!QLNutK0 z=Dhc{qVxe}=j$M-55n2yTVOU?hT*ALXjEmQ0N6%4MqC3gxr=GTcZ@pn+Vbke>KBv< zKIUADZYEw=CJQHjU8|q`BY=P9vM^G& zipZnY`A)+&-rrp%9DKg7l|X44uSaShTCh+=IY(6F(CkrbWW^z3@A zKKnQA4SG8p_PFI_H_f&JNqf6Rf=Ec-PFcPt_}xA;+8%g+w4^p5*iBFD_d7g- z_u&!CxO{4#V~Fa00&t3cXNTKj8(!a35mi@Zcz=3Q^&?pqwN(+rLSqERMdV2fP~n;S z*P-X56w9DN*IjgU{3zb+!KVG$T`Ga*J9m(}A@&&g7%|uw<9-jh4!y=FHiyTs-8w;A zBjS=lkn^h)?I4#|cLZarMx$013cI3FqMsd(cdu8hv$38gvD`)|1yK!wHQW75Vf+K+ zD}lQc0&%Q{X07c1$hoZ(g59d|+pe297}3kEY1W;2h`QuG>4UMdM*rW&$(%#JqybuDPI*=K6vf@Sq{$NM?Jj@R>yMcgA&@m~U2CBiac_?g6wiTy zm~)0EMw6hNFCrH@lc*~p6AMB>lQYImC%_*-E~M{yalpmCd<{F+4!ir-RaRYNJrI7S z>4j5_2;8HTe`)NPo%I7D40MNW>Pv7IrzjYAQBo;{KsTCou9t+z<%nN)GsTPr6AU@% zT?sd(-kXhHpt=L36AYOvgk+>D^dHv{M8VKP+ZrNy-%)j3hHzg|~oYT%z( z=UFv~#O{N{>mvmuj2mx+T$63fKm+Z8+p8D6x!@j^Kh*|odYwW^hp{g5k* z{l%<~j8^t7HmK*P*jxJ4YS~c%ZP@rezgqOCrH!g8q9fnN~p@D_fOp=w9S^do7aA4zcL|5HU zpV*it1S&==ff`qfeM0{iNQ+Z7YwR_o9)4**RmQ(bH2)qzFLI>3+h3vZ@*oC|v6-^` z8(@2KQj|c;@7csD^uGDSA0`DQ7D7pvrK#HW&s(_!wem^5GoO^l->&Zv!g?Iq$m)pX zDyUYecTV)|+(MM_o3n!-e%4rkn>W)=rpJPXpC0Gzr`wIFG}71Yo(0JH9zQP#-cT>p zE|dL3k(NaZ+Po0&NiQQ}SOqIabnHTVeA0m4+Ir=^vBt!@y-~CqleOOawchSB*vNO~ z^uSQ17qjfZC?>_|FJ|aGu4-qAwyl@f@a=3B(%SckfU>=?IsSB9m3|D*+&G!{?PPma8|m_*-pUg&)}$Cj}OBc*kWimD@1pHndIGEhuhoX zj2^ScBU&Zvswq`@2hA^MP?c_smXeNbuctsH?FmI+86NI zap;G6*5~rApfsC|)UQV?v(7Oi6s;KJ$)Tj;py)xXj-`FQtG8;kl=7oxY~oUgeBvNl z7iMIn;pqBcwfB-1Vz{pJ`tWFG9(klwmV{KF#0U*I#Q|go5!Y`D$I~VbaG+BEkEpL; zYrE;5E>fhp2MF#I3+_-H3N2bFS_oRCxD@vQ!QEZUO^XySPJ(N3cX#(U&-=*#_XXg} z?w&m}XJ$4}BEdk3b2k76H4n#k;#$ipXcC8s!hgjuSI!_wHa9wZNB7iot_z@rR|S*T zER`J|zuW?9C{qC63{)r(U4zYWRALD*NX4(HWvbE2!!gD%()m9UG3t> zvcsaYhxe`n2VC6AXx_`KP-2iXrQ{M!c;;H%>4~$qiJP!&9Q>iitijRR{jLr9H5pSa zso-#-I_U3fv*@@G7UjGsh++g&z$MRZP;|xHFLheOkM{WDNj_Cujmn6GM=(N{ix~dj zbvI`2cKhE8JtYjTHzpaxu&)(g)12pTgfITNv*$Q$i1-h8%ZD&Q{FCM7qS9JL*+^_C z6&vrnGmE}0ykA!S$%1(|Fe!1S_vGPE`w3+a8w)&E@1O5srqXOX0U|8>70jrykU|>@ znJpV#DiP)|x`L!?pqr7Fz?JYZl4IA`xdgB|?>F_3Ewla#BWGu4#K!-jTcv5#)@9Di z7P}_Srf3G$b_=z%XfjN2v7}($%qlApkd3@VsB&Y3lU#PP-ebwkytOw_P||k$!kdmL z^AG6Wh)EJM0$3?eLOIDX?FXBC$8LJ~e~FtQIHiv9Er#oxYsgF$9p2jJ8fHa0_hVPX zABMj;I;VftqCH~n>=5p#0Uv*b6=+ zTweutwIRl47RxP971n0;u6Do3y02Q9Eq=bOcS$WKdU$wNZgwhalyH#878cNh}yO*R2z>=4U;?E znl4K`3QDb;b(gb7F~?C&gNBx0d4CJ(*HSkM)b7rU`_2fjj;1f97&n|}<;Pm5bS{k} z)b_G_MYR%;>h{ZQK{dZQd!dO+D<1xqX1ervLy3SmzSX8(T~h=;?2DRI*NfF}{n--cT+?}o0I@K7&YUU$E<-97$bcHc1 zR#O7Ml#06CJZ$6+JM8wtX=S;7hO6geWbn$o7UhH+-A@4Nz`y8H2`HM$`wKQ)^reCv zJlMZw3dyOUghtXjus{k3oU!JUV~g24V}_r%?QIp@7j~L)KSKLS3D~5hY9zV*cJ>r# zlR|%A0f;&OA*Ek{ML9bXt-eD}KwZ>HJCt=pxfio;Md!fRk^4Rd*(W?lp7Va7k@vq> zH0-78YBR6;x;gNig_r$u<8xd5bM#*A7=gk)6P}uEX$QdL%RH1?l|OpO_~_ zydTg#&w2pqBP?4KXeYvcu7+G{dN_5yHk^QaRsXi0Xa#-j0l> z{QV7otvE6;Hz%^}J+Jfr1Lj%R8160p>4&~I%jm9l+GzrO+umAPEeb2wm7m^Pdh;<) zV*apr-?BR=mNq{0HH^;rag}(7%KtXj@4{m_)Ep2?up_7bn)5cnNOm;xW(S-I|qZ7)pB}qR#d#dVDftW{@EMS9l##4Dk4RRm=?a({W*3; zi)CLnr;J(rxODN9 zsA|G-%IL0=TlOQ}66J~~%~(<#PxxJ?Bl@?1y@L)ane*K^m>|T{sS^IZE*v&NNE_K0 znZ%pHknnm+Z=M(~G$Rj_mjA#c_=|ccZ{vzAAt0pEfJ12`bA>4@zok$fQv6Sl_%e5D zIYB}v8%1iPGHUwpDgJubMyI3!PvWWQXga6Gl5l<`2l`1_Kvn({R)?&1_(aE= z=omPT6j$ouVBEGb@#SQt1RMtD5#bli4@_jJ$x=|71e+gg8t`=!Q3 z{$YV|BJu4SZ|rm9l*PE>=Zc^A12?$c(jU^Bs|cJR@2xeRhc3&l0QB}VDS7QE!|4FN z`P5f1Gp~{UJxp|T^r3AR=b<8}!!n}LF}y5pvVe&OiS+@ckyR8BE_UbSO?-2ObqS7| zk;}!jnl{~z>QF>J4M4NUTk%7B{ZV=q#Xi1uM#fV&N^=#{mBdw%>F!9smys!3-O?N4 z`&G=&M9q?Z9482vT&BB6$RanJrG)?3#9UKA754@XA_=tAuNAiyLJE+?Q3_I?bVU3O zYDu5IeINM`RLfZ2sW+!1MB(|+7D#$!y1JJ-TK?Jp5ad1@YAOINfg)nKy5Bkav+G}52U5y&rdrj9KY^Iq=)r;-;!mRas(lE94W0!k6NFzF*V9)$ypa>1!sYU z-JqpVZPGZc$Tw1&`j+yACxSmb73O^7vTy><4218!4Z8XTD4Q^O`~53s+ooHEg@kc$ z@@dGxNT;XH+i>-^pFxlXA1Fq`j4~Nsd5F9UR-{9Yhs`c44rzwvDz#$C!`MpbG1FhF zZ+`V(M4rX#`^FdAUVGs9-p01iV9gY7?GsnEwQcC0JPP@oPWuaR$^A!VI8+*+d1&O_ zb>Nqt(QHUp9 zr%aU8>aFX?y-yOuuE0A`cH(^qo&W;K+pym|tUmH16mwjxPONGK!$qB5ANLt_s0L>7 zPdrbAe7c2NK&XU1y(@RmCoju~${jg_hNP*5%s0YgD8>;wC(YjGH?PjKJ2w4_{-C5D zpI`q8T$@0aynPFyPP~dh$kF_CJV*`QGeo353z8N1{FP-Di9IUGgmc?xiKMz~k(0dz z)?l7s%gX((i`^{B%FfXY?eLLQY^7C7jZc+$?#*cxL;gF@{_nEog@b_3x!2F*9uqzz z+|D|d;vk9D^6$9|bf;;mO|X!I=WVh!N?+9O_jzyQkcKf0rLUKvV&Ab;bI}@1kV(pE z;G$3l;d9|IS-5*d)_9!*O&{diddQjrzgz{4p_unB7|9#}4@jyH<+Wr;`MDEF7ze;7 zA5bD3NF#_h{LTf3&$Z39^C@*#+hpmHQJ0Zr=|UuOpkL|nIE^pYA-GE-ZYv|Jd8m}E z-?mS3{+jeD_9-IN=hH{i`B-x{-Reuw)>$+m)bXY5us7y!9B_GQ6vJ|AFca1@iriZtw^Z-JXH4OQEu0Ag2u* zO3+ttGC40>egY_ZLf?_TgH=;E8Db_bjocE=k?SPDNu#QZWng1H+wKeFOwa`mkLk0f zrfRi~SLLOvxN&O?)@|Wq$t6U4@4Z90=yE!?xP97lp8m!*hoOW#m6*OvBo68N2jgXT zy#4=)5orGjzVoSQK@IoqJviCA5c+ZId7O@f-VtA*$UfA*Z)9?nGg-@*GWdGOYNsb3 z?mfEvjIPSh} z7pDL1$v;H&bf&DM5~YEa7VTQ9Me-a6?8u6#c&GX6o43%Zb07^n^CX*O>Z|_#esbE7 zUIa14<>_|6F*Ex9(gVU!rMGC@>Hb zCXaWyGL1X({u4WoAJJ}48!1UE{v*`-|7>dA^~tk%>Nd?AM#jTKI0t<2Tdm( z2mgMd1e$`ULDu(j-<9GIJ4SPRs9IlNue@4&g%&ugv0O$&$-F3h9E|;WQ2B5K1Akcm zD?sbxJ~}@xtqgT02P2c?k|4(#{ej?{VF{ij($@oxF;|WFjQ*GX*Ugw_R(8FiLbusT z)31@vB2j5^m8i$+WVB2oiDBYO)GNPklEPaZ<$Hcug&v~P#qkyeFS$p#ae<$5uUO;V z%GSGrI_ojPha~}51p&fwJc2s>7+P_@aT0=js?%_-3roZBUF3=r2aojP%B zBY6eM=G68TC-}1p5h`_`SM8VvGD!`NEJmeO^6vK4*wMulQk`r><`22PZoojiy*2pa zRSOQ)RtDkJ6(BC8j1q6h9XrAyh=m+>9m#tQruwDVj_*LEJqH!(k8E^asd?54Y(W|Z z-b?WNq7IjCToYPHCB)5k9;%(hJCgXHbHBv64?Rh`xdRWg&(}6iwq*am29x=J=cieG z%YDc5;%jdv?{TzsTjYZI9LtH{O^g4FbM^Y=Vba!}2tqLFX3>g(*mT-~Qxz<*z_ybJ zS;j3wMhIK9e1eLO4!A{5n#9M^bBBN+jBesa0%6imbNtYU{G$roWT-h+Tn@sGSG5$) zt`=G;P1lAHr9_cbsOysC)ycjeL1AO|DHD7Ranl0z1a8q6u)0XmHD;)X@}3tSopur! z=27Z9k7y?&^q<0w-=BDE`+X+=3SXkoX>Vqo>d@jwxKE`lM2-EH_?*lxtf`79+le~; zc*%Q}3i2Wnl9n%JsB&SFYrzaZ3F%`LW2wiu#BjN(#)iI@cxx?A@MS9Aw}F4#Vd{j` z*YSPQQPY|FS2_>P-a}yh5iE*~mS4c+Y0Bh54aDq>h@L|n)GYzqHy(Elr?1sfGC;x$^_&pZA&BpdzwVFzidH z1H3A7Kh)M#+s&H|5~SOJ*vD+~ns;-mpad5g)OkT7nJ=POAp;xi;boA5e|~u7A9>FC zY5fOG=KgDlX0ylgOh4I=Qgxyu-o!0F?n&*U<+d1 z*l}K6=1B~w!?-IASc{;fE?ry;|X}nUq!-n&r+5#JT5; zEvoyi4jr`M53ww}nbI94V=^YSO)}GOg~h}?Otarj7jl~ujj^`y_;G=MNh2#o_YoUv zAr1n%!%sUgmN8{7HGyMbIZ~J+>!4aoNDVF!>Rm-$27@1{8#N^SvVV%xY;R6C<9#lL z&c;Q(rLQY4m<19eKYt&WL zV#;l?{pMA_3SarzvepbqC;CKQkND~C8fNWW){hx37e~*IF(zV*U2lH2rLn}{{6>+Y z`xOOW*~8khTy)){J#yLxFO3H8_7Y41))|pcPbm9)NmI_f!L?dhF1PA1t;+epE$2>r zu~t;lA1)<{Y$GDqxHo&G7KN;7e z6C;6Rn_>Knav^ii&@5gztw}C}ltB_%p}dMBVy}~#KRdprttOH2{ryNQV zm+l`W+%GlU{<;hG;%7bfF|o0T__q8LF-_ItKiY0C_5&joLyZc*yz5`aH-B>_%w?U# z(lqJX-{{b^PuJJ7`?Z1xB9aCH^JVFkJ2xIoPH=lN$?C0VbaAom-mEBPY zBDfS0Ot#ZRe0+Lqm&<}z(pq)Ch#??Ux82oMkvR;jKgo$j@do6~FZM89|_ z*z?K=ZC))6nX{H<5F@TJJ*wFuA?_-3rKz=?%j?f=+}JF^1CvhNuyXb8t37})n;KR* zzZPV-*JV#PI#*9u;JBXA?qipQm1@tAd4?Hz4CE@O#wqFJ6FQqv7Kb;iTv^#xf}P0Y zSIW<#P@a0NUz16lBQgOgd7%UD?Na;Z{(OV@@at!vKF|i z10M!n>Ay=jy68JtRWyhZLfGaHP6xLGi}=;cJVU-?OYDY@b>0ge#6jAcJHdZCs*UC6 za2l*-oWu8dsPV$Tay%4$KYOh?$5w#PKiI22P|{n#VfW7@P0g}Yypw8FL1T^A@WvY` zjR`z^N4DT^GSr?7Lk0QDLdqq&F|)5IXiZ)TkBz~Om&uVB{=hWre;{-lY*6;R@ePwW0usliP$WCw&oTV5XADQ9}d`NtRH|8s;Zn;Rwz0~ zpiH%LpWfm@#mlD-JHh;lugzTRs0e;*U46WzCU$3MkPugW_o0sm+mi)htpwW$IWCXa zQ(0MI`J6(8H92e%{b4i%*PzHAq9yxLzq9}QZ4m&0fB2cM@ovgkaF+4vo}^cBHvc-i zmmD6ArmI;&Wccibvkr+Sp%qno^KBt?r0)%nPS?|iuN!@?c-4%Ycty4vCCRx-9TAaE z73!gpf1Z5R>9lcA*vC|7u@EE&Lf|;KmC*b7{R|UxVn%-v9Zvd<&yjbVszW9u`Q<;5*~w=dK`yE!^ZOFy#J^qR>A% zG$aY0Ivb$_$KRv8rzE%p^;=;}?}J0Pozuf)KB!0u7H(pHt}`s7U-b=Lz3cZsOMKCf z>s-q{L1b3yKm7Txy0SZnWP5U8^f7fYW7zY_wD+I_Gd4VfvTeQD|9ojhp&6??oc1UF z=You}q`Y*Zs#YrhI~QrLcLUb@_{s}slm}<{m2jsdg@_3ijSrea-==M;T~Ler3tEw= z$7kuLu;bC_y2lE-gD3PfKy4tYn1fjy_P+0%A;y66{AL59CaT_QFYvR>d!&W;loam_ z)u<$n)~OTFgS1*r&k*>t^4cEPAxOBNqd) zhoCJITcGix=srVKrT0Mr>alBB4cXi^&jxT7T50J>B;<69n`C&cg{TeW zF9O7`TV9fuU&vM%;tNH8al2esyl%fgUs=7&T!D4@Y5j*g@cZ!xJtKE+TDJKl7RIYH`R% zR{YH`$eF%f6)Kc$uG%X@MnrAX>E92yi{g7E4fqW7+- zR?9Lev_Er=3_>7TdtouPy&{Sa;Ru3ZWYfn)vo2j~7TkA^{RFKnun?CR$!lRCq9aTfu>RCMdvUtTZC06aALlA(5KVq^hkCM)8v@BBJB3Tj*Dqw_;4XCdVTImrv{Cvcr#?BRm1MP67Pb{`SYr90~|vmY2KtCgOtA18@r?)dT5;5 z^#e@M@(zo9hSSyRIQ)FvMR8Mr)PB0b#rSk29{vkEDfe?fZRa>YNvF4Tji;}%=A+QJ zZ{L=lY>sES@&BWI$Nd+#Kq`4!Dgq%9!n163s2SBt?ASm|Yy7t}pWlZ);G4YiMfJkO zw&r4qdp@;!oNAz}Eu}+u)k7+8{oLwM2$+0Whn2h;-iq`)2b7IDsVdq0pheLjNOqzm zFO9^Na1cc=AOD-EYZW(t)L!$wbW_@VhdnI&SI_aU5jWee+bcJ4Xv`XdV2-Swk_N6D zBAhE$At=2!Sk7PL zyFEsHb(5KoUl4chw;+zndH~^jVu=&oJYQ%}zQ}z>*RS63zBXDNYdCB_CA&*zc?RMgHKhD!uGug# zdhFyVe%cZi*kH8=sxf?bH9+RmN#@hr9UhyeR?@>haYGf=D-yMZtdsV^YRHP{U$J~| zKMgV&EyTN!7sqKa7t86)6tfjn42n>W;dKiSfWJVBJ3GS9)E@F#wv~Vb)*2_iHV^=s znMxUZH&5Q1M4Mn2Chc)NiDiTtA0c_k7~CjL!iNL=94`|C)nA91u8tRi_bt0zCstco zt_jEnM7Bg<6@0c?ASFW;iV;@!r7w}w(J89DtnLVVxQ z#0*toAiWv$vOB;d{i)mclhs=@?JTTADqx&eR|G@s2LHTHJErdK)|-C`rxbPZ#<7>t zV`wDSM-+_}5_!D3L;B4%VPTgj)ijPs_d4*qJ+=c&Jl4`K7LU=>5tqGlqz~e33eJ%M zHD6O*gRMmE@x^tFU}10Kz^L4R6VX`yl`(66;4Sd)TvU}okYk^?Cw zjA}^@uE21pl1-<2(jmL^VO(oZc}jhx+D7+}_rQje!_>u|A0IN8M*c?Y4&#lV;W(2U zV1}T%;dE8DdYSyzo^*!))ylci(>c=*78{7T1H|GlEqB;!y8U*-1CCAvIwp(QrtWCcI$Tl%(Fakd1K2rF1OY>QD* z95XZNHr~HqR=tyE)5Q}p_RWJ!_lOF2{fNmpZfzvUmn}xynT3vyA=Ob?L0;WDA%^^f z13yj6)phAKk&tvus6V=I*X>>dYA~Z4&pdwy6GLy5f9kuFXMXC5EmVZja1Ar97A(w| zSiD(7TculmC&C8ri5|6jnoKka3?6+@*d#q)ReTYRP{~U-fv-HhoG$KBiuhgs5v2Hc zR0QCnzX5&b1gF(VY&l}%igDZIdduY68`1WE{>{0JuKCFoAZ)@VA|<7`2&hOK?N`?0 z9M!A()RQJi2g#?wpj!Dw>CWKncrE!-0^?(c_T{75!^UJ$QJUP+O709nbjI~6p!T`!5got2P@hZANJft0<+EJtX6~)CL3DT(7 zQ5P;@ZQL6&nr6EXg!R(!83B9a;9=+3w`4(w#wLkZ0u-E*U#Zp$+gUgCqb{gP<^+wP zfdo4t{YCHOoN@%;zASq@4kg=)`;7bf{)dQgx^TxBDy^V-0joYoac^#qhm_)8dv@E! zvQ+ryoC|!sWof^U9dAe7lT1+I3)v4Sf$*m~3bmv9UpAE;rxH-jCkw6rZbgcT>3lQ2 zA&oF?JuU-AXk&0l%lY-ypO;ZNG!?+ic0e#E7ZF`9wBsaF%-n1J(vy?4zqCASDKE-Exty6*T5a@kjuU?GwALSGc1a| z;f_aaVIH2zU>a7W#h4TLb6`||zXAMyx)Ze@!W@Tz9rti9gi?SaV@_EyhQ-NpFoNkd z6%=J>+?oy7N9P8>v+VTsT(MJjd&l`J@{ksbS|ytlU1uK+`%11E5J@IR^cM|&NOyO! z!iq$+A(&H_l4r60I6vAS3p10#|9x4(d}OFP<1^2usoOXdmdn{c7CP@mwcjFgy4>AA zAQIzE5V*&2#L3-nWNwa47FZ@D%a=|&GJYfByFh^8pKLG?Ra%=LM@>tgR`UbL2w7Hk z?t~jvVhKMPHrqtir=p|?5dFwF|5eGmPA|okWT8bDt{wN0WS8L=DQ|yjyM=@mH?v$5 z%c|ek%T~=dZ4Y7JuV59r?3l_r>^c(3U*ojDZVRGiD0p@(y#sd;x}YpMhyhJSx&#Hs zV9``Zc_^Y?YjH1m3txZ$iVcS~9%M|ORl%_`HZ`W?{i)Mq*O6uKf0DaL{mrXPa~~KP zS*3LbPNEEUvi{7(bBv@6O50q>O7}E>-~p@kJvCp&%;WVAoLn82JF=Ptrj=5p4R;Fg8+ z$=s*K*jaOb8R)ashtcQjC6;H;JBr~#MZNRw7E!;S761M2KWj&j=(N*bJ+&vg%v>z; zjh>%xg{2Cnwk|k$j<=ndy!fuS2ZZIyOn@1w_}pZ~X=i^3@!Yf_&9y-l(9fioAEZC$ z#gxHnq6*{!lwwddkc-sK7(caKXnlr!m=wuVKEHP*5xO`(CMpHPoRrL5zNQZj3jy_O zAvWbtDL)KCqRHKy-tM_jam#$ZCzBxG{m37)<0topO&u)%=RazE~>wpCqYf5Y2E?E z;i!WCxj?=y?ww}SjrlL0Q2J`QQ0b_#1RJusIC}Q7qVu>k87^hMbeZim(sUd$UIO+6 zwx_~k@la!sVtkw$=eA!=JSL_vkH|+k7GxNPxJ)A4(DzcPQ0mejLpdiPFGwUu)7Q1@lu|H|ax0p;N-zQlI!P>>%MuPp*} z@I1c-`TF+=sNJO&^21E!>;(0I;YyKn5Ql&I6@ozAzwnk3Mz#aNtZWm+ruFiQa1*^z$bZ@`X{ zWWwKZK~9iDb3H@Iqfb^YdQ7+r%xP8GMNK6Z05^4Sv1_1g#REQUj6Tend^9LyS3qUp zO;pm1$N_zF9GUn{Wpdv|CiS+UYrrv12K7&e*! z;7bs*zY-adHOnV5hcaZ~6O99EMZol*iBS{~Xfr7)%T0N1_@kh186A_7vN9W?@5mRO z>LT+vR5bbEP5C>oxRO}_FAi}Vpu4!DjM{uZmUOn zy^30=otqOcC>KUlS9Pa=Q~WLid>T@4=m;yeg+*Fgq`|y>MPgNki%6MVMbbj~rr$uQ zo(Q+F8b&{Jj0_fmR@Juv>4}il^D`z*1)cahm}w;|Im=OM6k%)u zzcu>}I)5={cn!dZnE~=f3l+0`QSp6}Qo4ACnFVu~e0_zmpQ0!Y}4E!LaQ+$V2}Nj?~#X&8lAe(*G8xqM{A>9na&ZyeGWl zY&MZU#VKp7DW-ln2@8zfD9#;cMt>`Q60f-|OvgqLG~uqrA7KSVm*agZuobIpR5ehF zBznJ49|FMKfP9PxAeRqrV!it{jo&(Ii9fTNKqxy@O-uJp9W?DMeAx(Er5F@u_XFBA z;Do~!p#<|)rXKG7V|c*zz~|YW+2|^y!bL-xSqCA2)$Rk3XhINYiIidoa37dY)9B(B z?gS8lLEO+7=6nc{^=#jJQ#Un<5VqiYOnni!IdE^-T7P7Rmjb%oTZ$Lz7I7 zxaT;zn`Zp3+T|aC6f3YIi3-KPx2=AQlHpA^?}qMvSnrQH>6sC`@+$WLF$06rRf%k3 zkjB~eWhYc?^pxV2Q{arxiI)`2XGc!1x3pd2Dipd)J^Zw-r zq}=A1WW7fcJ`%HZytL)IEKz~FBsytT4C;tj^%v5fQHJk*3hC*QAaaopEc73S*%zD9 z(~p1U#0y7=#+QDflA5$ra5ytWpL*4k^*dO+JUUoCk3tOcVWyXQB}F^PK?_9XvDOXtzXuwW0AY zL-MqQ_9U|BT5IL*=i@vgbUZ;OrfIjC6co0RZ{fqP(dN2#gy{Sq>+PNohPwT61j3x`j2?{DIks$8PaG%`4sP|RJ zhhs&aG{2^|A$SB(K$z1P;Sb}KDASg_1-29vJ3I=z4@lMcvON@0wj64yZ0X%R6Rs)s zZnvOJNwYV=*c>po>r+Q|i!Q>K2vlgL!7PLWWH00EZJaZU}=a`RCEd<}iTqQry zyb$^YTFeGZD2lA!REnod6q)~YDr*i@oUiJSr+#;~d~rKYg!>?|uoU(qs>QV>X6Y{M z$*q7U<`SM$O@m}nyHvAeFCr$jaef}D7)ujxW>z~#kM<~x4;D>l(foXJsyAG}$g7<- zq+Us67;WCIGU@zu+fNp~wwl}?zQK)uPxE7i`Tth+#kJ-)W`$q=uGEXevTus#-SO+6 zcB7s;6vjuArz=l1nYBBT=IdnRrx@$h@hBBYYC&^6zeddu#v}hq_ z8MG;^aWW;WVOWr;c>1k=oOIGY7MaiwVNrV~IoQhYl#MZiS#Eo_&%L?;PR-$`pP|sS z1jj&50vaMv(A39xUWhRSm%i)h<-EWrqMwJfm%etc0Q;ZPmEym>o4sD2X_()RhH+T* z`TqoBP8Q2KkV~eK?SxL{`SV8aiWzx}TJmZp0f_YDNTF|W5^#v$;G@)D+>3q_0rIGzUN56O0-Hn*Ru*)GdXP}DLC*`|3wi@$-{K|bkMc>N(a@+4= z=fug3?OPqcL!Z|#T$p<0_>$e&Gs9GAnl2(@YhNB-I#~ZpCH_AnzT=PqHtnXucb^F|C)UEGI?Fu42K0f~>0yI|7*|Nly zh>KeF^Ji0AnK`573Ug-kJgFg++R0-y!L+}xnp znYH(*%j8P^{8|lBq_8DvChO|#!>dcuD2ZqI^=vPi)S^IJ_mUSof8hH03w53}5Vq|DefaSq_70Ga5m5vT5COHOP~wfSq*=Vdxw)7hVyQ)Cm%gKG zj(zq&BJq$8IA9p?jQ~LYfqs1p&WJv2+{ML3_5?jFUoqaULmF^Tpi{h1pT`4qX@x)% z%wlLTK?!DzB_T8lFjLwPpJhiN038oa&_0|1i(dG^dY;sZDg&`O+VEV8>{Od}%%H+E zj(&bH1mIdYB0aEUHizUNh}LJ~+HxrWhE7^Mm%a_z9<6%;OQfz<7TZ%?hi5j(-L-1m z6n=R*@i+-Nk)nQ^U+}+`+t2-!tfz6sZM5=YFl$&R-eBu_whr|;IXitsBX#H8cRL)UakRmBF zA`AEC<1T@y{3mN0@7xW^AxMc?83w`WoDxB905v|jM&dw8j$KBwd8j$^yjehq##b!uebxKZ#=Jw3M zh0?${CDa9|#GK}uM=95wZl18m%q&ILV`x1*8V9iij~E6SvXN*FalT)CbC~xBFF2?z zdj0*9mKR#7!XANS<{sxy-x->*-20EuAqS52g$HPhWNoP*rEdNt8~$H|pmTLGNjdgM z{-N!F=lM-&tjzakhHrkG3)kTiGJ<5-vbn=((nNgyydjX^LDiIxyG?T|jN5EH@@U2>>x|_Vrar1 z(TM3kgFRu)ur6gv3XXKMSGl0Z?Vq;9u>Nkb@1)Sw@FV##LWGCSrL?2hi3>%-U zqgqgtT`-)evlrA54i*SYBAljB{l-IYSD)fgE02#GF7f1)Cq?}(??@kJiaH#IG$Ux| zLD>Tc15rv=R%e~K3tNd?D~9>yt=tHM5D=}gQJkSy)yJA5TtMWW!KO=qRBCe9mo<(Q!51|e-c(R*xY${MWsffDcA^L03@$~DCeY`};`TGqKjq%^l|GSQv{8YR4(~2K@%R>s;$%*G^FA4XzQO_v{&yNq! zCNJL57a(C9#u-u(FpP zzkg<+`Q-L_h}rt{Az9=*#$>+(x+6Ntuv?6Y4ZDgCzC`x433k#N#Sgxp2l%z5^xQo; zi19yhg_T}Nk~YFz!_9=_LMdwwf&Hii>7p}@s+H1Td|rk4oFs$}y1uwwq(x-Wy*C(9 z2wfNrsgWxtCX7%Wb?ZAyQV5BAFm96XWF4nE7*zWkF@>A9*OW<1DJtfOt(SOEh<@@$BVva$-CJY|EwOe=62^$KYRnoKXJX1*oXFZ`z~$+4%6fTj)^s zafH$5?ZA7Q#}0HU0!^7d0^IJgRR6iUZ#`o-CxHlZN*EUz-RF5OTs=uS@wnspyvLRfTCDCT#Q?}s9>{AN@(-N)62^YZKJ*d zby+4VPObnC(yzfyhkEb#1*mwBXn|e2*T#aG zlX^^7HlCDJ2vnEjzCb(Y4be6@tac2Vk5Yy$WgGT*$GZd=Neb|K_{XJd`oRrvi||4G z(Sd|5j~3 zSMC4bL~8!eD_iS0TcLbw$@cI;hwhf4u+)W{m*$iBGtRLFI*Fjh(KD2SFQYccKAhVl zLdd#v{P8k#pJ_fR1SQ#E^orAorel>f28pwhDnm+Yl#HOHiC$(hV!JhIMgch%JehoI zuh}-SKAuaM)z2m7pV$61UZJZuyYuQ&jdMd)a#!ect=b2!(Ah*pj1l(JTAXDE#SkO? zZhCWZ<>o6T5)tIt?DIAV<%e+m6{w&zB(kY(aHT1?Z!0lm|CPoYPV=uX6CO2@;I&I* zBE8LW-m>j_{cb=BK7N0T+Xpl5l7U682BrMiP0I4me?&5kKb>*%g% zG;kabdn1mlOI}$yDxWsl>61)kQ>O^Leqqd=YS}wP)iZ!sf!#b(e3Ro+b{OkmQf~zQ zDue7~p`HOIErr`-Cfc`rZ8vdh9AO%JOsHJz)J2jY7dgi7g?KW$N_`ShkLjk@!wIBN z&9Fr*yY%a{dH|ZLd;~#+YiXML!`w->2w#QIM_U2{A83ygZEpytIW9pyO$jHJ%7T40 zj5h{M-jvdWrW0n`;r+3}284zSm*^IzHNS{Zn6(pwV%WE=t?x&wHRMZO({@=dIM*-K zh%FG9tsZgz8P*#D(#b(Vp_Svm#1@?W>cQTAVP#(oV;r4eHDY42su3SFI>i!)K^W5+ zt?yvy>#GEbg`ejI6Xks{u))lhP_W=0YorP}??TV2;^G+uBm(Qs01`Ft>CazqvMFd1 zx?5Rg<>pS(JOC33#S3Z3eLwU;F&R-S-45qD{f79X)f!Bp3=anq58XK%X9(R_55Ij~ znkCLTGls3IU>I~mBV;t{oPqSl#KHPyAB<~Ku|ofU3ur>E14i6C#815|LtA{`&bqc= z8!x%HF4}p{2^%|}JP53CZtTQgGVx2wO%fn1WpYa*OH=4P9?Rh+R6T(auspV;{s>4$ zS_Dak4e?}*pOVEnnAeb1A4*cmN*dXQ@*BaOv&NlwwU$6MWdA~x8TP#=96KCF$J0E{ zMsuLQNwIs_an0{VLhbu%#-!x^RYTCyhH+djU)u<3Ggq#w>&csir$EF z{yi9y(JPSN4t@T8W#;tS+9p#V%S_PmS60cSfaR@hgz0!lQKO+#w5}e@m!z9ILszf& zx<|>;7_~0}2KG|9jC`Ro@1M-~H}$#%S%5 z9CM4m{frn!Gans#ODc1*jHq!qw@e<%ns8kZua8^O)0Zj!9)-P01j{6){N9i&wX(xe z(hy74z4{9-1n`iJ$^AuFa^iY1=N~Aim4r7cr7o<`t(;1&9!WjW7@%wih=UztU$9?p z_l0y^5X0O5ep92BRU7F}JSLP0ty1_WK8M5Ko;>}59T=Ulh9)O_v5KuX>HA-B6qvZb z#EOI=AyINj_NXTEglP}Gp5*EKoY{|LL2Jna0EG}+x;z7rp(qs*>ScJadDS+2rqBSF zn2QS+g!T|<`ZlQEtCio#mRAY`Up6MuZl1JIWCYRX$)Va(fh@ktx8=Ye!1*RcBFoN~ zfknUe^vzUz#S=E@Ea&N%KFIuT#brZ`;GCwN{k#HQyik;(UX#))1l7!Ncl}@*2|sN9 zg|HGEVd~f-UuIvuL2(#0dTe}vlb~WSHbbG1UUd(kv9)<~eIHp06&H?<4X4JRuQ#n- zq6N&?Z-nlc(83Tzf^;RmY=I328za;S+DVjSXjKRy(A0Kc;IvA$V#M26-K)oW1;b!t z3ZijIijZL}(7=39It{Ekz_*=UIVAV~sDv~lEQ4`)qnI%bI))n`G`3ce95F)+*6ILwlLvFX*RUgB;4K;%kc1&bMPea@RZ-v zWnMcZXP}|;D7=XA2uAUrBlmLzcb8^@9&b19Ni_evemYkcTL0qeux3o|xT=ng&er)1 zj28|)=k$#iTkjTLO0mDayG8D4(C|%TpyiL_50ohV^MG`?^)Oz?c1EqmF9#w@xSYm!N5i`mX6O8?w1mYLbi#A*Qo| z7T?Hdc$e0PYRp*91v#bXAFTH@7p@wzA-$-f z1jGk4#oA1+iymHy&KDaCjqs+?&r$~Pipd$o2QPnaA)|5jB?Z3gP(onvYA^j)*yU$L zhF2LlD!E9(tOJRqx0-d5K7}`_W8RH1Y7*Q!1#a;B4)rlnS1xR`^)hJioy>`lM#0)F zMBp*7sh{=|_0Wh~6PA^=6rsBGjv03u`hL6NQD&RPPpP+5-+6QgUEVT6anmLYHEt}ZxEI-*R^Vzz#g-N#0qmKSPguY zI^Yi}KOQf--a)1g?4@#LvYYTw2=eJ^y*+BnJ_wLr3f2o_p0npzmqgUGr<_beH>me= z_0zg8igK&Yd9F1`8_hpulm`TG`T`O`3{op>f>CzSI`K!}g~NIsSArYtrG4h?T7Qv{ za=;#L$vX*M0Mw?s{!wmHH?F$=o?IsWGWd8gZYR~1y=m6b1XJnWBtEjbP7hTa=m{D% zx;!=t*7+fBe|$&aa)LUzN9XgJ-J^Exe^0pgZNcw*;@*c9oSrRotF(^ZxzF0tHoKeZ z8hEs-bv1dV2gJz+Q+&RGP6Bfg<@Xag-3dCpQ*r-MEZzeT(@R8;q5P5=!olpuuvX2u zO3hlFs6YmebU2+dErD4RlW&V5F`g`U18cy|bkY3%v;z4%T7}z;7lyXVkl?E*36VIh zuTJ?d?rt8wVFU>&vb#mT$Y>Q1Jk{!EI_>c5bNGuJu%Hrf(G0dQEM&VOjP34?3hNF?o*ZcMr{AS8ei#ctm6gvHx!_!NL*SH+B zj8zeOP9;+wi?9z&lG@qv`Suo&PWVYq4Nk)1du9mpO{l$RYO!Ktbjyd>^f7^z+BZHA z1C+v+{hu-K59vF5XG4nW6Ll@7L{=#=iYB^bUu0f$;cOCb8sEpa@Y&MqOD722e|&gu zxU2AsE{M!HsYep5#Ao3Xcasz=epyWJM7#&jnY*HHH&?rIzDiFJICPONq`jn43*MGD zmj4XIng8FPSL-*u*7~U*Nq=&qZ`|*o4P9r9)uI&{KMHwx{MQ~@zP4)-molEzji#AY z%=Hxx)UdG^0K|oiy5BGgzJQoEp@5{PEGe8H0mV5M(Mdvt3IWa>!t_x_Wy$h zkAdPnID)~Mb0MoVb=Bv`NpoHy`?$JfJx#P<4z=?vwa4tw+%6EXm7Hj%u3Pp&PY0v@ zr>2EyqGRls^+K z$`XWJ8c4&`d-=UNcUyap@^oE?{?f> z$$NbfCa%tj7KgGnQg=Iag(vT|_sf_7)5x3Nb}-7^&)g0ewyeuMh=qeq8N+Rphk&2V zE@N|fPfyW$^|@YStSw9dr4-nP@5e`Gu^SHzz60Cu-YrG52!4G^gRo>~Q!LS4x5hW_ z?T;$5lprF+kC4yeMYglLuR*z-@tc-XjjFJh#&zh8y=sQ?l&V=*n+W$*WRBxqehZfD zUK2@?^!Nu!cTXH&X7asxY7;8VXUcR}oxD3a-6tO{;yC6LBAuVVt< z^i>eTjXJ??pGu3IIR9PNq-8dQk*P<4Pq2_b@^Y_1P6K+&fij{taoGRnd+d@zjwn0| zl=&?N#|LJ~CdsmfCTd|U92_e~9o=)RRTD7y-#$ZduxT7lb6%>UCk4gVBSU+`+*Hm2 zfj@z*8j3J-y{h#+fPX=Ldexl{)k#PEMMoo2T$$o{x|ExqmKC_&mYby>QJOKlO=~O! z>+SAV1ZG*6V-rUzHc%_7F7+kO9`@`q@TodE2JicNKnm+n7_;L3tY_sb$^HAlPSW1) z6_SL(6amA{Z?9evDSqx&81!t`esK{xdRYPdJK;UP<^2X^ylY^Q|0oFXyH&j`Ixm~9 zm1)KMnVHt}jmslnx&F*I_O7e|fYF+D?knHWKn=nkRPB|0eyMj31+ z@CDJcg!bS9#7j&2{T>E>2#2LWni#&au@=Gz&yM*%o$=cfkkw7l5R}Vo%u&ej*~7~e zo{MoFqSgsauMn)>G(CeP6^HzLRk1)$%)H@p4`xwge6)6??S)8{-EPweQ8lv&*;cNuV^ z_!_C(nOpwgS+-=JW~=iMd6sHBpT6QMM3z-jGXNKsyrFVWBZ zCdmmZr|;$7&F`94sUw=8MBT|Hv^)&Cb-fE@Mr}gHEOf$k%csMP76OZ1KE@z?$4*jj zQfqj2KSR{FGKX|%zU=G1_2s4~8xx)+%;u8i)gshjWp#_XIk~jwYPRTdw+W z?txR2dMZ}wR`9~3$#GG^82ivL*XWmT3K2F49Xge0v!O8>{%U$1%020YC-1LFQ)npU z>GF9e%ZAuK%(R<^&52HZoK#YD=5pjS<;qW$xLVZ_b7Ell;d~uY=3X`!WogN(k3_lM z9bBQaACu9fjMpc>QD<#5w1+Sv&-^YQ64j-4uA3@vkVSv`=!*1A?IJSjG{N%UNgT#M zXkXR#ziOAPDGxfB<=e9(C_metZ)FW3FJ@wkP3hW2^No3hrD}}p`6UI9+qfZ zHzH}j!O9%$3XwtT&ejTAfS12fOxY$3AH=>T;6{fb0e1|bIihr$n6dRH8v2eiZ@gBq zCJz%V*>q6hR(qz%%^rtSZBdzS_qo1GEu`+@iYxE)d<*IPu0`0?ND7_}o{7_hAmWtqURz;t=B+%I}+ zk(=u?8N>J@533mzl@topy5^-^2pxY4FnJ6g>^SYWp(D0bRJ}xM&rK*@Ov=h66x$W- zw^WLFC{(?a9XfSp9U@35bG`#YI+5UnZfSR;9EaIV#&7>#&*~CaYc_5n6D)7VZ@C7@ zgrR`OL>*AI2jg#!j7lmrf3rhCbmtnI7B2y!uCw{!k6(WTyMWw1A{jMPD>*q%n(5=} z+q27Z6%rhpO&QBKI(qkph)qnaH}^{8$a`koag~Vx0q8O1NZE_mE**BHOpToP zd|7_6XZc$$Ud6s7rd_7RQ)&mCxWD|_huo$yZB_$7*w0Ewb9qD3BBahv0vrrV;an};B9Z>KkTysO1KrP~!kyar4KU zpX||o*QBqTBPZzmEaTM_y*q+N)?VFXoct2Ak^Z2Pdqv6DtULRY)J4c%df$dx${eSu z$`A@m=i|Axb!+SyuW6r$K};??yTy}DV1Lq6He?$A-C5yYEb`ui(~q3CR&Y5w+7ruc zVd`#;YgNgr_&=GZRRkqZheUxaSN_cmqy5?^^jT0)1HAn zs#kv(%y`l$KuYOrKHvg}Y+b08?LEknj=F^E4&<`^w717Ln|e!*^XlcJj-O|j43(k2 z7XL2R#o|}{(K|+(=fXR7(V42ph6@KDq0ucB`6!4Op``%DuGGlD`m>Zj${i0nRqb_1 zHoQLMnq?J$jstbDXUelO?MK!6bIZr$rVpeNx=jX(-W69SONx0+q{?vcV83a`=$$M) zW>*&?3)`)eH2%j)+wv1=8O=4|Xz)*V z-3g^rI|2CU^z^j*7b%opbh;h(N2^ebdt7Btg^F5{>jRoteqi9VO?EDoN|~Z1TukYf z@i%VZulwLhH=9lU&&3gv1aCq*%veAtrY(PiPecbRTMdQ~`Yu9E!j~>T zg@yroxx0O1OM^r6_n%9BW3(k9s1<|+R?UCrLy1jco1Yo6@o z^@d$e^&LvLpMapKjV98{m`x#h<>%*U?;#H_W$ul$lxOYdd$-gs8b?E*11*{V)vDdA62mTUV|jlLZ66I7Jlbg(KWStZCY!>qAczWL0vLAsO~}_xSI! zw3Cc?>p|1F9SpzWo)9pD>YgMveG@VX6r@m8oj^ zN@b@l4&?EUFbgqnC`FC#Nc*ngB5l}=Fy4FYyVo)8B_Ff7)xUE%jK9OBs3p}#G}`tt zSV3eVRjR!0M0{ayuosmKifMVRns6s#R3P^EbmD&X&D_cWH5d*5Thyyz;s{uqz7pbc$gQod$2{cTej1~lYronWEN}ZeunCy6@-JH` zIlQ0q1Q?|Sn7_<4@A@#Zp>41g{OP|WE`5fD$lD&s2BL_|W7vmZDo2)QeO{Q zFsO_2E&1oaF5Rm8<5UZLt@{V8p;;mhjx)j`Wzxo)MoF2U3mkimb#hSqR$*pBl+3Bjb760VM*>m{Fqu`_F1yC>4^hTmC6M%V+SO${|82WiY%&EHc z^Z@%4kXixwgZsU?L>%`b+Pa2?s?_ByT?*_R(q7Pm4U;i@R*9>9l2-QKhLKF4uREA_ z`zgOjAvqBif~EwvxWJ`!Dgc)W_2hqS&6G^m9Ni*}RC*BS1q(n-QGpAi?`?S!W=s#f1xM|yQ8ACa9rmm=`EN)`&a7X5E$m!D_ z8DTspz#z@O6y}kJM)9(;vYjG;J7i4LO=EdZt_S5pREm_j?j`32FVuPXoUz!)6$SwO z6g~aQuRqL7>w$a66tPPHP!}KGWh*7)G3Z&p;$9E1i1?>bP^q5(=);&ccpIWpGH|sc z!`oj@nfSEe&2|tm7~cnog|6k(HH^~L1S{Ryx`VDy-k=u(3NEW+jVd5OM?&Nv1ehN{zL12=zeW1$-V! z#rnY@w`NqorFQ^P>G=kcDQsCUMj9?cO6Y}K<4mmn3<<*W@wt}ds3&Dr%(dE||j|-nO~#68Q9&#!FG|Cghx&cnfk@ zsQFNF+}_TnkMgf@exJ*Nq=DnEt1*F8#?RYl3Ku+Qx3)IxUH_G-uacy#KYw(1CFwfn z3xz1y%_I6+x6ex!PCg{{@}Dh*=WKGs*b$I-CTalN5^t2$m6@Re(44T8{^$*-Q?`4! zHL~=l|Jv*5zrv1Ga#^B~65Kr>89f7N8i}5epnT6*ouP!T!L);VBE6x=Ds(y9tdhGk zO#@TrQDK;7NH;RUm_BjPDOLpLC|V~TfAt^y(%Z2QT?55_It)KghQE_vQm>=bv1zK&y)vrVExs7GoR=PGnQI#$TSaRl_s!%^cozJ()OK`Gxj>IM~hrd zn#I54Wqew2V}cJ7PS~q$>W>LOZm^ylg7W&t&pj@ht%Tf3d0JpoD$Kl3;Q6q&FGsAE z_hPiA6oR zC2IXU)} zgO`J<6#6=jHqc&sLe9@d7lEge@z?3x7Y;=PcLv@^UF?y*;x363JK&-CWpIpUkyJH!(ZTwPW@+0s z%K2l72Y{weNSYuBpxw|RVk|B}xcNJq;lvm%zdmE(#J7?33t9>dAW!hO{~dCo?Oto{ zbf)SQ0cOqE+N@+d0xAcX>E4T`Qz;f%beL8jKZ-@vt^)yslHazJu(G~>dX$)A5sn9_ zL@w`Ty{Hc@ALrNEyX)_#z9jqp43Wo6 zn`k&Op4S?q5=2{JpC>YgdqtI6WmiZD`Q%X82L*RJRP`By`EF!$^Y4P$xwVw}*awP9 z9e0nvm`X`LEI()2mrU!>j85Nc|6zB~>1Eaf=2x!I99@!gF5bO~3`Dyz;9pY7RR~cq zy-DMd_Fi<*acHa0QxLaUX|4r@ovwb2^qcqX+*rJD2pdbou(g_($)518bs1p78<-`l zF)iJJxo&NI_%KT#W)zmcs8~-V#|QbB$e#&M?6;7eYA#;VBW2;YQxgn5IM1`*?=0Y0t$;qu+%bEYmsV_i64T zr|(8j;qdyoR@iC?(a7(6Js5pI< zJW2WPIOq6}Ieq26jRtF%92U4fbV3AM33BrSrlpaU{)t0$4v8Gl9sq^FR#IsdaK3gK zm>SSJR(8rMG}t3eacp?|VfXLzrLI5jy`InHOhw(_#iBddrQ5mfZL6op>O3rmMzzYB zd=Jpo8J^809=`5XKKmi;hMFKnd!W zJ@F)m+9niuD|*7y08r^qe6e7vHm2J)1(o=HXMUmvSfqXQOBc}F0g1hU$4NRKZA%5( zG)SkYF^mMBbSXH#(1R08A5v!@vBAHkMXpM~pW0*&iyBV+C@oRrW+OAIpJt+rbw0QO zT~@7|%s2*h%Sxnaq4)^t+bg>F#PP`@p^)JfH1tQW)M!#5kG_Z$_C_cOs^gNK(IY3o zAb+NEwgk+_oE82eGx;A$NJupJ9>tXbjAOvz%lqwrGJ`LsLMDkv1**^#)_ zlC8Ym+P11_{`XVS>G1!GRc+r_$lFt&jWf0G80Wyt&b`xDiBoeKnUZRI3n#6qH0tUT z>Xb&j5BZ-btmCK|g^{tY`Cabw*L=wgP4rj-*UlaAdhEV%q7UC_uNMb@Y^hd#?VW^o zllh*EN)$v+&dPRCdP?%C)xI6l7wA(CsS@x{w(u1-n1`mJk{|gKLyLrhGWrG|IQ}jEN&Dv}~4Uv1Co2{7s6qB?f0bU18C;6z3hIO;X0gL z2E{GuG#xX4TM0UIvojxRl@i|_no->HwM2Ib;WTAek+puUhMsV-yO|<}E6Z&3A!L00 zqkpma=dT6}S00*9Iq&?&-F!=tKm@)2)_vfD31KA)p+?Ckd+x1$DHhan?ra@u&q0m2 z4#bw~{yG1=Aa=eMHbZi1gSyhOr9DSp#C-f$tWJMfD0OA0Bs`xf)=zJ-niTV z-p&yzD>urKj;6MuCfCkrpwe&!0>E4`jhVn1hu14HZ!$nf@?^dh7QUy0PwBfLD5FFfm-Yj#F)=Qo~)#zug} z&c?gC-j3}U^E1Sw2ynkR0?v?GgoCc?CvoZKMm8iGETs^8ysu5Bl?laCPI@@52Az3BMnBPl$Uj8GlLO@Vo!0t2u9a_tbK5 z)3Eo}eV#M%us)wpE=C7NdQ1E=${G`lW@N>Lex|HX?pb4Mr(BH>;04Z&7#tNib3drE7_}i zVyh?+%P)A~Fyg*^bs!3&P}&DFNIXS)3Hl#Syg-_n1uJ^B&4*~)5?9<-R`fY*GmdM=|u6M#8823c#`#}>S zvSEMy#8jO6cDd_S)%eskP4h)y%b;Y$G17&XDOcR7Fp?=2!Jhm*w#_o;>NGYXIs3&W z?ZWbE*vX@c@`alJy(%8H{!(^+81N{foFr)NyJXuLv)S~vFO?o(j-~syV7=CWO(%Dx zpHYmhPAneyamFB+vf2=bd`rnRaQ#Is%>$I6&ycQi!7+w>5*KK;lG}yuP>QG5nrJeQ z(tEfwrRj-=>LL*_G^r8v*jgDwX-1ePc`;6iyA;}hAKs4Fzz#)WIgL~L+23?2s9*$L za{#~~mif+tGi3~O+IG=2FN2o4Yz{L5>b~54&UyATn}uHyNVC>Es3ep*{ECLMh&SuW zlqgOT`)tLyJ-~uceKnMZ(Ti{CP;&PX_G9TaHI|S^%lHAH!jb{zdgA${_Lu3nWDsiCyaBXDz_{4Iy5zq=01s!=F+4m>VU|f$A4B3zv*w=n2s|wODH}9$CzI#w_f^@r%6oqAU`=+Ow9iCE{5`^j;pq&hPcpZ+{s<2JCApWg zq!IV-`kt*n#1x_SwMe8Ftrw^Gp7;CfU5erxZ}Ty%gU=7r?_}9r7wTZ2Sni)OOP(Y{ ztd%inOeWl$Y%?_|meJ-_H_0mCtiMMrbic1Vjj{6uLO%Tg=!W8sy|B)Jeor14x+pY887^qQ>r*ijo73Z zVu%cBHFT1j-{!7e-O8#8BXapv=b~Ju+MM=|@1@NHS4gn%JF~XoDMMP@E@0&X$sgEPYwRc}7C}lHg?N>$DKBh4Ez%@VqD(ek#{rKT zPf~~YpdVklR@q%+;xU0L5l6^3)DiJujJ+k8I!UFw`SDTJii^b_fP|5y{PW_y4fUi| zwiD(q1vqo`KfS*PQ;fVL*Dc)8!&j*2DF7$DprtcKt&`Q|hy!h2yObaw3sZch=1vL@ z@SZ3#L+P~mPUuwx*ryiRGdEbl;K^lYAq@mk7-wVSG(UOszPL>_IGQu9kew~0xYk3? z#+`(pMQ<880WyiG^MB6o|2cherPlHO>Sz+^3)E9 z9T(oKL$iGY__gg1+RF~L1G1dDpGoIG)y~`fQ;rUzz9)4g$?cF#?0U)1 zT`X#GtClVN&veiZG6!;9u7*xMcvftlNd_(j4+b?$KWyIb-@eQTZAiaE1?cS=(V66} z^RD(qxlT3L$~3QeJ3o2RI518xqA6O*?HWfUQpsb5W@g{7RN~tp?aUn8p`#`fAb~+O z*1DGu@n^0DVZSYr>*PaeB3_SM?unBL>KW@BlM|i4#kRsYeZ8NtX8Nri0hO{;^;0eV ztRCJ1MEBuln-4Yu-04&|lhI_1QRMW^!eN>kev zdN?qUOuk&;0zGJ>8P+TrJ2zcD;vD0JOo+ZF+IZm+_~NhPfF@O+#C@nT5vnbw?<0-$ zex&?iN*SGCVU?2e$~}>ULLtV;ZW*6b_1wC8v6B|J2+UlfcouiYiK9xZ{PHM1k+*iE%lR<_N0 z&wuso>;23>3u}vBUJIb{Ct3%sJm+Jv^GwhvkRnY8o4g2MmZO8oegXk{Vb<$pydE~{ zh$!wv!xW;6u-7-2vT&Itbry$`YLW*QyHs0V1J;<&lxbl#OcOiE!M#?5WPTkyI4j8x zZ(6Ez;0S-YN|g0jPS>GOJ6B#%#>12k3RC3E_?Ci@982>KjH`ruJ1ptRVG#Ci(oc>- zvCyd?KK=KFqDW~nFP243(J4zgnJCR|J^jJj@GSBaecp*sCi|)^6rcC9$Sb|ibC)Jm zM9|Vd{F;=}+%V(Yah2M&gjdCIgX!GLX-^P7w17~GYVV%4wZ0~IPqtVDp|1z$56Pqg zM99Qr5FqJ;NLxmse5OOOz={hyVJIZ4=Vz}v6_~>mP*OI@XwE_)=EZ29!BxJrB4-l> zIt4MLC;0mdyPg!yjk7KQ_>ggV$0}ne@qvfGjj#aXM^3%YUOxjYYm-)OOSjby``a(4 zu4WeWMDLRZ(l6J74pnqd*VdcDK|Eic{Lh^I$o>C7xsZ$Lu*fwD>h0F%CAS&s@`l8- zHOY`2!|`w_RmiCj8f0DF-$Thor*aLvO}A0zGV-w3Px7_Q%~zTR=dlpDNg|VQ45e^P zyx)smqF?QLds8k4f?YKT_8mXvPNfk0LcYG|DweB;5TlQ>)i4VeCKHngR!zEdW47mL zdjHHdzsw`!u!Nsr!?X(VZ;q1*mY3d$SAWaTvmLS^2Sor^|IjsCoZd(EWK44jmTf@wwhjXN@Pd+aK?&2M^4R zmz0^jWh64rrxrIoL+H?B(09FgO%G!GbyyLQ=U$tQ$$}DaQ}w2)c8hc8P|C={0OP;y zOH-9sw3os2^``%>m-*q>0=eBq(6OFC>${!v3+F!z`B-|e!+S?^RY|8ia;nJ9fzIHE zThB&Phe3ASnZnuBv}xXth~30JW>fpA3x-H=iiL&V)Hd}R2nbb_R2G-alO5rhD3J_% zyiJ9>0rE)XtNP^LcPyB0~u7OQ}m6SZMAduZ0Zffu4Zt93lF(4%m5 z(?YGPaDMuD*Xyrct+RsksO*Ky?_g;9FPKan>SxEl#Q;>63s?iEEF|5HAs_Qlf(zuB znv{K@k94!~-2N(qAg3pZNJ76vEJ>IZwyu%yUQ`P0UWH-;)A+VCiR<;e+`3Ohdqs8yFvE{9r``0rUxW0<+` z&|6;?k!9LS0B@fihUDC48W|b&`nUw-K5doLB6Fzap(OV@lz=hVw;l#f+x2)2g6!+D zGq7$YHpM7-Zz=!yLD**OrPF*tk;NBlwgYCyrDm%+3HP)xkstZ@de{G*WV?b{0#L}l zoJucrx2{Fs-PVmYav)?7UsjXx0;Qmirc>%LuA zJ;3Q(@Pb{WCVEA|*zz~d63MD$OpE7IoVeYS(S5F|g*4_a7W=h!lN}Cwr};JGIC0Tm zq?nREGl6k`)EzXocUy_;30+)eC(gZ8&uE}^wAvVg=%K7v4)6{84r|2;4!~1P2O@Ec z-B2+NnX2oieH+!UBg*u_B_9p=27ZZ*J;1Yu%oG(xC?B39ykXPU;Zb|dulS9bv}<%_ z?Vms8GqK(C6|FC;?ObtMisM!K^f#fr_ll5|4Nrfe7Mk4~c3$pd(;oi6r+wRV2hIH$ z-X}Vrr>@^W`ZM1w^r1U=TLoa^g-2wO_86$o7A>}mT-aj*HH0d~xlp++=0kzu(M@VF zPv#Pw3gt7TGf`8_1ZowEl1dYqEP~o+pbgB$?H{Xft*I9X{ZhUp=>SPH-g0>8Zq)rc zMK|&t2y|D+{zGZcJ5{&Tg4)0qW|KZA2Akou+v_D{F zk0rAAz-U7SVBTQn2)&6~b%|JXx2z|`QPhBw|FO?3Hd5&2o(5i}7)K5r(usEu*p)tU z*a``3GlA;LxR3fHfuxE50NMR&-x++#rc(BQKCX&sKR?5G`gk0wR78i>jaqfN>4a|J zKzlw}iVCn)anrF+rT1mJD?vwIp70d>W|zyM(Sig37Dsyzxx2PeboO{>Y+GApR!+BExe=5K`U6w4cadtv-@3EJBK5SQ$221s?u-Iq1wA zdYe=ARhQNOb9|4@|GQ^qrxW=<7N?~jHqGs{4GV6&$^rW*Fxw|8G3uZrfiU67ZvgG@ z!ajCPOfmH-+2-;)iRTd?zLgfo@RL5?SA+Gj_FnS!LVm)HUp%QjlF8@xGAFRc*Kc@9 ztK}^EMA%-Kf9Vz7*BXKm!3ty!S^7-}Nt0wWqziwLt%h}Ut(Mvc1?DsT{dPb%1+l(? zPYL|Uee2CKdYZV>Ry8Z(h8UD1tw8-r8u!3%Q-n?WE5RxWwLv&}Iv0o0I8DYoj%wiE zv9YbniQmnbrC?H$+>vz5%`sWF7t3pk(YVJ8;o>h!Fez{B!g)9e8i#fY#FZ!Q|+|0Jf6Qqs;ZQu&E8tGLa@U z3Td(?BkG9cmVWBQ7ngf5%s|4wpD0{Sr)fs7BM|&oyz;GaYIN7LFctZ$*>;^r?U?`P zc&s3AhB)X|ll975c6)-XaqAHH=Wz~=T4aO=QhlM~d2Ag7%U8Jy= zcP&kXR)k3_e4bCSEH)07G`m*GWng8*Q95A%stZjQg4=#mLIZVt4~O{TP|B9nM)4``bc$Hv;($JkMIjJCJv<(GA8U!FzUC@*!XZ%$-AntLuyI$ewct020{45xiD&wbBi8_W)x&ezEy z@vJYtHdT2YUF^1aOtN?^H@>}}NNU5fwdRuKxYW0ICUYzKE^Fr65}s@S)*K{xuq1F4 z{g_BuKu=#!l)xJxc}x#Xpk1DEHGeoO_97I=%6JU*#NG7~jgEd}O6OT1=wMls@n%5L za203D9-WK$D3+;6Vv}nESp{;oGc64%Up<#tt_c}9yc-7-?;G@Z9-T{w%>AL1JZt0g z*;ojmC-PbN`{9L1FM(tX(;emLAsvcLe)WOv{WFLz5LI{~o7I_4683+Slu1EDM+J*wM5Cde3DU&fM+w@F)7r;4cyLR9EuQ2nN3P5 zJKama$9Icy$d#v$bK7Sxuk=EE^O!X&K^#^DWsq``{^Cwfp-x+DJvuG3M^h;-HkEfO zapVf0xxZk0-k)!x^;m4la`5M~(5RfStMbK7d7pnzkFWRZR1ev6MpX>9O_w9-Td#m& z=qB^M#8|LoE=Sk!a5(73cPA}_lnc9jeP+SO_A|UctrIiJRfq7qAVxleB_%jj5zkHi zf-zBR>FqzX9Yxu&kck;hGAU#=HqzN%18RXV=H0jbz6`@K?M3}kCOnOQ_xiF*n+S?Oec;yp5{wk|pjwbDd+y4>AP7 zv@>NUQQ!AQ^&l_aidK%nAnyrGDR%Am>^$+ATu=68PdzCeN>7yl>Q^XpKtX0ihG zA1@!)Zm5zU+&lJGcq-{h!~FJc=qL7G|K^p7h5f&?PoxiS=-WfBqI^P!c7+8E1bg2v zuOZ)n=u!kZ$*tK@(rM5;!6x43>2aL|ras#}sF+(W6 zQlQksrJ2Po+FlJv<4H3i%;1x6BjoY}Mt8qS)9~jX*BJ$$1CL39Zs-nK*bW)|o2YX9 zPUkr1vzeMi(2`quK@#^@bn-vht6ZXShS*%~QR`pIQR{=2rs=&rr{4Y1;Ir+^8!_-5 zT@!YxMX554(&WyR^ydIXxS~-^j{c6Cvyr+zAk0P{Xl$W{IVUFvbBHbS7hds=s|jf5 zx3X?(FHjh}&fBGGkmxtXa1Bjocp3QNUV4t2tPh|oXzq?xjkUd2F~t@$5eYJD_0&AD z&ui1mF5 z1Nt6ybJ{L14Ywxdv(@YO{X~{X#Qt~jX?5MZQq*m1I4aU0-?${T(c@! zQPn{SB*YgCRyc z-Vg(9$3$R$kyR5*Ces6!bB`sb>-tpF4&$^pLOIEy4%_YI`X9`|ngP$r#O`vxJq;}_)=sRFhkCY5&{IkCVCyKzta_sZ33R?Z zFwO}pY;BF9Rt3d=Nf%u0n-$r2 zR21EHXwO_3<<-T)-`UV3|A{>wU|DO|l~xoh{J5B->x}wuuj<*-ZtTK7cj%UGSbFc_ zgMSgzzdmUH7e2H9`D%AzIjcG4z9jqn6Zw|8n%r0If5jIHy?LYfc@^q4O0{Hx-8?@@ zsR0MGx-OPE`wzGOzJ%18<5CFJOs_BH`uG|sJOJLMwYbA#7l7FF_Gc({rSvWB5Vg>B z`qf4Gp^;B$h>^~bwL6uvieMt_s2d73FD`Z&V5AXI$7=4x@uXMAN@-5WZvB}T>LE(w zc1CI6tRt!H{$%Uf{Q@yKT|Y-!^*rqE)R<$ZPDUjD*m!cBbF<|u$s@3|s9#5V86*~; z(}$u=Y1Hs+Hl7Skb2L^fUnqa}wN#=wH$7-0=j&5srcilzJ|Vd@#~_ZP6Cn_VdX1xE z=n*R>^A_t%?iaJmoErN0jas}0%Y33KyI|jz>1WISgM8NxQi>DDNvQ2_p!FihR?s(> zKGnRQ&>CO0FCm&JTvX3ywk%5T#VNw3AWZ|R zRlTe4`KYVjD_HO8u=T$idHAx3OxcSz;M1FjMJKzuQ6t`MYI}zi`_vQ<71|pDG?;tF z(@cst>x!A^%}dE+m%>4)hsZa{{8WxdZG*SBgg%FhqN2-O$J0R{gw10+C9)4 zyQQ*@yJ}Ce`zq-%-4E{R$U9P{nJ5X8l_d@q8&>o%`D!KN71%O|BPD%-7Ev$!ecXvq z&4xp0#iV2N=_$A1s=dlta(UxW!Z*~8QMP9aB-4!?(i`hiR?I@x<5b;&oM)|%=&w)bT1C+CWYF)&_gRa z5m#yOcSq?6!i~b#rN@h0y*z-f4hSFgy!t;uPE~frHKr5Gh8*)`Ewu22?k&4rXhr+9 zG?iA~uX`Gdpv)rEmZW1)KL<o5LZeJy!Z37&aM6{@j zzyErOQ-k~e#ct#twzjA3mn-i5iBBw__6%s9_F2m^x-47ZXV)tjMc!%Fa8D!a8()iF z2{4SCa`~mfFj-qOyC(I!T5(m~{!%FGZo#i`_W|_JJA|M6Q9s$Ky|o2@d_h)P-Ogjp zf1-;RiXvsX{-P8_wI6XY@S>uWJ@X@Xw|g?oK`V{!x-S!&r(lD#`SvK&=N|hex#1ql zrDZ>xFbI9$z>(J=vfvJh`HBpmy_|;Fa-!nV%V^t5Iq|tw&!JtqDl6qjS+btJcS>hv zM&I-?oK!Y#e@u>LcGU7D5@V6ZmX(RSDQROk=q*nldve$eF2_4a7Nj@__r90kpea*S(Sk^6M&66E6@JgsH+~HjKm?G`P zx1od+H@4S$9rqkp1Yl)~+8dibeX#!VaNcKjUiv@R@b!E7iL0-YV`ZvQE<*`B{i>wv zS)1!izkXdJGpFVhro2Cx+&1f$r;%8%;pWa290?CI;`!4V1EeH44UmQz@?81sQGR{$ zn$NAnq?dzTr0L<=kZN6_j|y;O5=six=*%z4{`jo|s{b+g#tHmKL#2Mc7~u5Mt@W2! zXw3epBa+!|P*W$W1rp2(=M*VZdZnvHZPR*NZck$hF{m)7X3u*a1$>|D`K#J2p0UokP$C#kGXA~WU;wXkQlb1|*(oma@qv>BqK*giVG ztvmU#b#XyRL1BA|88Pjn`5zX9GA0!%y{&;YtU4i$k{oF`5n8G_c3d+HJ~?;bB&#GG zO3$w_cXI9+OME1G7|=9OZtv_;pUuywlf5gJXGXsU5|W3W7LjPMXn^o`oW#A+efbhJgJr!R&f10`Y zA-Hkg6O3Clg9T4}o?teQm8Ge^Jatcd|l%yxDlw3KRB){9MWSH5RL65Y8rkyK!nJ9{NMRaoC}Px%=i2au)^ zA9FykKB-m9zwG9-PdP`do@~!9vMQDjbbEX)PYKU`6Oc; z1tJiwP_E<*lmE(tcl!-#k)Z5uF+iH8JdnND!Q#Pd4Yymcg*~^LKh?OuOps}2U z6CNXXwTIEZcn-fSS@;#0L!L@Lf`T07ajYzLNFg^4jlAc)?|BK>%A+SD@tKxW9?T2x+bt2{Nd7R|^MVi`m+KAA}YH zh_x7%p@M@_PA~T}^%B5hM{2oh_P8SX6Z+&+pNCA_0dy@&AG(KrAf%KnF2cCA{jkM@ zLwiyONh61#UfH4&uw8+SFBx$bB{kwC=H`Z4GVlM|3ycaSwTKvq=2qm0N@-nVGXfy_ z1bjyW!5R{ITKe$e>;}Y44C;RFEl4d|0%ChN=2cX8)O1^7_WhgF@(M)dOa`FX4@v+l zz#Fd;XUZ2c7R>51Jh+YX;>a^(RHG^!`ImtTY~t7*_~709*iCiL#?=<26G?8HwXYAt zX0dVYPs1`Xq?kTw7}5j-LuyNqEtcCY7$f;Mj^8O|OyPg)GRWK@XK!qtGvw+9Qr)o3 zi1292QIk)Hu%|0=m6Ng~w*q94)hTlR;M6YJsU6Gq@pRP5&;D(i!W9a5)nYf7Ewm7b z1mF+s1hd4*orO=^4EZdcZw@G~KP{|TY^HBKInzH5w+CO8h3>>YAvSOgZ@N4RKVmW5Tt zsX)U(tB%Y@bu{o{qp%@wif?=G-uW%V*of@WY3GF?S87zf{og{vh5p%@=5g(QT8(`@ zI3k6@sD??Lv2#I~{I<&k+Ui!@zAc0+&-mfeyC)XP1*d|QED7xL$~o%8ZZN) zw8A*gk&2VhjL=S=li7Jv1FtdCQF%rSm~#Ap!f=U~g$N9uvaYfqyxD(}A|%(1;*0W+ za4y1Gx3NlSq+#oo8nO|-Iq^4v7%CDord6N)S#A+Op2q-s>G`qdY2kIzgoKR^*p6o< z|Aw(9WbRi-&MRSTrn`)Bd&UWt@+pNq_8_v!G~3fX+s9!wu)O^=DWyIKQ*|+&`2D8n z{PUTtTwLzK^L}6a=yP+Q+|S$phZaUwBKm`w?#!MJzaPSi;p7r+p8+aW;s076cyhqn6NXfz&~ zIgxdV8+s)%+OJ_c z{&}dqpJ$#yG92f7EdOTBlfFqyz*Y{)2JN?}Z@4qXp zAmSc6XUgN6jAef{!NwgQ9Rv%?cSo7Xc`Gn;w&mCiMwA*-2&c$dtx1pS1U$Av1@NCo>IXYN*}L z$Z8GpK)2UeM6T#Da441vWD`3!AjopVGtK|`KQ5alw6akzB%BX|6xA%1%`>!yjXxtQ z%h@?gbW3G8yl^=aF0}I!sW|h93@-t!2q3!vL0#oE-J-Dxu5u}Weo8$Bz%rQ?6E#o4uNy4iQ-tL;6fi$(9k_H0rWx(5S$O9a*Vqzs{cBcVI z-|pdS#l2Pkl)(!corGNZKDGR#+mtSk``WM@Qit`} zj@aWyLjX|(tn=##s4m4%`Nt?GA|8Ye`wta7HF76EYG_b?2B}!n3=riQmw;yKW{7c8 z{&^KF2suJV0=xqgm(6^^ezgO5E^7uobKP8;a zyRfc07894F52i*=e&aGdCP>km;-!cM_jf072c*0+Ci%^t&mXf1SP(V}(U~%H5GaaWzT&tcj+I9r zO!rPIb$~@eQMe*Ixx#t8H$qJ-71=5MER5_aJilUuObC(&i3Bmkv^l~!1p<&(5m2!t zF~?OW(VP$<1kC>J0zM#i2lTblBu$uW;e|0`@U{R3lA{S1kjv-DUqW%QC5rSgdG$x* zDiU!FRAjOrq*84^M9v(-N{~iC{={75*50s36pUzph`&H1@4t?O|TJPgp-(T0K&-8aFuf0o8 zLKu1gs0Cb4tF}0?XjYE_wg2}*-bM4h$t(VCyLjTyclz$)N5zgZSjrJtAg{)l3Lj~E zJ1nF`P)y92_O;AiX+cf{IjxX4Sbcm)9xY7XsVuh$tDuJXQE$ky#DrAA#QNue9{lD}ggEQ%gU& zBIR0R$~(my#Z{c*;yz#!;7+yZ{@dEP?N{wI-ULpw=aSRnUvzVQ?Y#o7rp|)8S1BXA zXNGGB>XMDQvN`q?AE&*3YSpsC1+0~pm$JXx2D~#8udG2R*ruy9#vx6eQ0?1b*%6xA z_<~In+R@!9vp~TJn;k{4$N`Oko*l)ukqVxP764R?vbei1#oFL*|8gk^E|joV>?FSM zp-X=1qGewMOqtB2QFy0u=~U=2hSZ0tSzXxj&jLUA6!|z!2SdnJC-2f(Yp@XcA$w8Q zmCILsM?>P^&Fo($#yv8McEZ*MQ6_q?4Lzg{P~)28A`Gi&NBB$2AyW2oWZKNAzKJ^_ zQaje3o4k+j3dgROfAanB4ScUIK__misiR)Zk4S@9hy-e`JIf-mikrFCB|)Y?3a4>L z+)@;jte8G_Uxs`yPtj*k8u&a#roJ<7rtp-*43RtmMqf(wambrNemCCx!PD`5kPYr(6v`UgltN;kcIg1jQ!!kH~+7=Sn41Txon z)~@*Q>DhxPW>h>jdw6RPX=@8=PvJ){06DkASFB((F=5_{aoc0({9OsOn3jvJt3QAw zJDchpv5&+WX7S*;&KT&=hkO$&oOw?%I?7;+_MZ(uUF_E~dnJKZgOtc=pu8}c5XH)= zaDyQ)wE~v=^lh;v$!BqIEE#Zk9}Yl61nS4PI44j_Yv;`(N&NUj{rvEJ0$Ve)cboC* zm1|xWo1bTUM|MV&8 zl)4daXP-Yr8_ZgXOs6m8GRXzJQCCzKSrfWT8cRhe`R2X@%-IE`c}lB@gE(h zj-)U;3L<_#{z&Q+pw|*q3s|7*Op4^7AlbE_8gQ_k)GuVk^D(EE{?t5`3W6A=GO{bd z$-E=t94z;E^fg*We`J1H^fc5Jq_vtveFok#W^kkkh^G>O>XgErsy#k2`#fIZ!N4B_+6}L8es0Xjwa|i_%wp!C0aqB*)H~OGUMzN(A94@?#8*COBb7? z$pvD0W@GA@ENy@Yi9%(gs0=b*s}Q3~$HU`#u{e+LbX&O*28SkjgxZsMXfcHXhFaXK zRDtj}Y_US6dDoA?KcTy^%9P%_XJeOV$xqfUzuSHP=Ta`cG}fjLidk}`F6*Y>eeD0) zb$ucun&_O@Hexc_D9ev;6(=Ibs(A!$FL%M)&e%`4~+W1NTmk*4~we ztJMWtIOiQ>ax8S6hk?}y5@TW~QbO&RK*^LP{PD{$xGr|4rs%>@&{}Yi=EElq*cNms z7FOJ}4oZD5$i$wSC@}4jKU~YVZ|rElM!2K|l5W&xG(=jQDCB2&E+Ojd?eZrpUKl_` zr$1Q^!**|ynkWY?jNJJa!HdH>BE}#qBoxJ2;13ccG_!(A9;vKx`7qa1)IaC*hlXB& zR#s06xizE(N+;myIQ7V%ApMl~2}I7RlAt7#X{V86nhHcJSB17liRlpvfpZ=Bb*)h# zY)&$LBuj-=nKveifFdjFc*Y0GI=QDi#nRVB(!@QN$sBNz_L@k7IM)DH5Gamu(`;zu zmeRayz*O%&WhE$)qhq#Zgx+H**hZG-M-^v7LdX7q;bQxCYvjDdFBN44@X?Cyl5|4WDtmVfif+RD z{-MdDOIa=TVD2evQWb5js$vl`=eQW`$o%h}lqa;SseW}8TeyGhSobAxwKKq-@Met8VYv#K~h7 zdtoM7lDFOWApx9+=yb*dTwWEfKiZ7*yW1*+^Lrb+-_%u(Es_YZkLoxc-(4{_4fo7o z;-xtY->vtD_QBjXQtjoY^DSOUO2)>uS;E_KJ(h z*?uSFZ`c7G6?B>G@*z0ATkDG)rN2%7O_+tuTwWFth8Dfazc9NBI>(~FyghxGsT>#E zcz$$}IRpL?Jl#=uZmh2N>Up$(x6X0>tDnM`ez(#g0lCkNY-WvMEWEcO!IA$;HP8_Q zB3U*K8bimmb$WO63c24n z^<5~FN0Aq7T(;^}p98muZ)Bk2MEV`Rkk2~LPW_-B=}Y&f9&x}~zHOD2Q(9cz+#%;W z&we>;kI#lQ3G3*oSIWvk+oy3}`89Ik-YpzmTrQB+ygmg<9O$I6Pt~7zEXHy4$dC4p zfl`!3X!)~fFh-U84~-}dX5ZC2OLn@%@2dUB9%&y2ts7c>?#DQkiiHlf1cq)}=X3F!;&VlWn${Fzr=nm;s z0jnDk&pITHu1+fgPyaGHWLhO}bGTUY% zC-|}9NKN>fcZ>GWw`8Q5ZZ^B9sMPgwbBp$9U#_e-^-J_Eoq?YnCPaj= zouUTjth2iQoV1yXAV^%k^SuR`s7);!-XKDn-jL) zKD+^2=df3Ko1;|EHt`mM;9`##xDTt0 z#T_}H6gXzbV^-1?j? z4S}$^)JmaaDXAplwx81^i&)$(Q?S8_79$KmfOZ=QN1vFjO-#80dK2`gslnP_sY-Nr;hlfpaftfMZe zU0jJijjwsjRyKrhNzGa(xLGgcEN?d*9oIwm-+Qi+9d9-~Qu=C5Hgfy*N^WhPyty@Q z+$^IH|JUewzlsof(nWOZp9`(zRa!229&N}fUf$q~S7(nZ{&Uiy#m!wST#_p78dOxC zJYw;9jVt4K7ZTF5wv)*>zlyJ=nmF*|23?fyF2Kck_UymEXQM3egF3f6HCnIdjJ2L} zI5=j>VcemW36a7>Q}wBa3FqiuDU)ACUq-G;j42&2QFxz640FDNEiDSU(66P0L(+x# z>%o!EGZm0y4+jdb8b#r-GS3rUC~zM5lkXt}aAtUavfqY51#@A*$PZ%@Lk&5Opl6wg z@6$`~zm7{d-#EsBh~t~kwM9UAD^Nkv#tJcznF;D9(m^wYlPHye(HzfFHFbocP?t0j zoWKR$c|-s>Cn7rYtp^l`@1ZroE|!LGKiANRkwSEiAKCYmGg;LUB>7x3;_;=$UP$Ep z`ESlzO;lp@Ma}%yjMvKMNXoS8f0;njpqdDk0zAS!PHy3v7HnGGsiiHD>ja5N23c|7 z=Ba})2{b4IBeXNdt2E9~-iZD4q2QQnqn(vm#7I$QkfX^Of?nEG0+nIS&e+oG-b67pkncL;ZpU0uk^Cvzk2VnwsJ^S)1K$*}fWyr{>BUrWG{oh|8*{r2ScOJsQX-$)U3 zGHhhrm>9TSAB+*3#phw^JJ4z}fQCt!)cX+FI~%X;{>3A_5d(asc7i?+&|mStvO6G2 zWkMGU5UOCRcQ92d3;$Mswq+6&7<=%@Q65&_l`ZmBrz0DujlpW(m&L3)>8V(eWD(dPxh#}?$U(z_W<@Uc?SSr8wQ=mbo2JbeVuh8&m@k*f|(;%QJ@!#*_q zRKRlcg0~+XTe=FXHRm_+MWChhi&J%AQ%QRElRlp-LPD69;R*5&E9Y%Dbs3C9Xk zVD5^xYHw(Pe2M3;@$okzm*S17!6kxSls0TL6Ac{x&ay`mk+7tt6~+^<*MIGX3@0F; zjBBotbK9ynZ|2_QL*j#d);6|3uw5(&G;q-rh3qgAklRLSZg&8sJ$H;Ka0(WErf9h2JBv7$Sgl$g_Ie5&E)A!%4?tf;_ZVr`_YSM3p;ol=Rq`R z$Ozi<-yg_q3fvCGx57sCm2+YKm&-7Wt%t?eWKG_VO$vaHn&# z=$J+Tyz?$mB2NX+=}O)1RT>PN(V@*Dn@PrdXBN|aW?1GOpm`!igPutMm$h_@L%b%i>ke-x2VCI$1c`(w|@^^J< zwWE*Eo)UT@u_FzFjaW^(`DT45SVt(QoGI?Oly6?*dxe$AOU}=~oL1*WkV47t%Z<(L zny*Q(3fN=9s`W{e20NjV3dPQW3I}nidJG0)nkFAWjpH+Am!#GMPT)$DI8)Y8^R^&`-eV)G_5&yluk%*hZC%dlCrtJmuN|t# zuwSUw2xi>&k7xEnKw=X)yH=NDh-exj8=UHSzd$Su28uL+6q?A!W167M+=2rT5Zl=N zxJ)HElil~dv-aD7k%!>#X88f?yDO6%E-ChV?8(vD^^H~hJ-B7slN?GZwN`3ZXdkn8 z^O}~FUUi01^2#h&?$wV7VCz6F;Doz4=6FJENsZ$oO7TIO!XyASx+uj9!azO~5z5Wg zQsvU5Hr7L-!#ipCz8zC{s^u=CCDfgR507Gy;}~@81texEDsyTMHwjHDb+I`YiIUjy zHhcSRY&d?eFk@5v+XUiNX!Qewi!+e|xdDK($1}?Fvl+NxH2ejVbmw)2EaG$MZ98X& z*;gsIKR})S|02G#)XMhH(B#!J$>XVdcU@4DQG28QHsSuU#_j;f@5SU)M*hq{6CAJ7 zWA$0Ix{Bd4uBl;5AqYX($M^}lFwPDaQ=egC~cEEW$eldIvAvf(0HDaZ-bYIiF5=*<~n3Gr3 z-*>*9@`D(i;ru)MDkh<8_ueaR=U=dtXVAo-%A#%Pv;5$qXllA`oa@cZ=P^6#H9x}9 zn9bi8U|XHRQHep4(u)Y9kef*Qpr=dvz(x-A(^0}Fz+!IIABiia)s2lIGK@N;;WVVw z0vD;Bw8EEJ)BHBb$XIKSdSItVES$>bz3{_A%XCeNlpE7(G2k^8cicl)>k^{jRU+(L zqIKUyr==BYuA1YgZbO=?Tt~X-!ndlynO+e=nJWaSHWwLk5w3ljL9Ua@E0;L6A*igr%qy+F9kaD*^{+cx$ixjjI5VN!AV-)S$$> zc?7}5#rnyUe*G5uvq%jGJ6cAMYZKfW*HrH=eAEnUFe{wD9{!Mp^kqSB*}82|yC|~4et=t94=NwcI2?ADQG;XNpTYSCu+|@B8^e8Ur@AIe zOBLP30|@W^t6sj~Z!}4Uz){v?V8eMw1@>~Dbu!ZbAZTXd)@C~YSNi$a+w}`0(vUlI z*}u)ibjN5}JbSnLBae@{?>hst*4Ebc|NmO(|4(+F_^r5Wzadn9bWYAB&~I+fz-wmQ zlr3Bml|L%|pn1cmD>d&62u29v(_Z8lm4t%=3>P7S?YYIJ=oHGUSBi|x0R7DN)u-LEmg9ljw*gLqo><-$S(xPqB2Ma&6`2P$N-M?oZhkUAHI ztrsU!j%9CG{%d%nI^3~Z3847h@}Y2TLw2`{vBhe%Jy5b@F;k%OS75wMG*@{eWqAB*>1Lq z6zrHe^wpF#T=atBJK%*nlbF^a0}uf&thL3jCQoIW=Wfx7eC{r`gfl8zU+fFI;CjxK zSX&FItcXaHBoNU81Jf{QoQ!+h zgT(RH*EM~5ub!4(0#=1F7>E4pvg0{YDJO=0MX*npOQ1HM97cNh*!lVVt@p3!nXKG~ zza7b+_|s4oEqS5ZHooKR6!XNqXPdS9=gpK2#_JZdW18gU)GXMJJ|iev&=K&~t!l6Y zoDEuy-ZhQUPV!#m<$(Zp8bBFgO*h{~39<#(9wtL`D%B%)-JJnE_e^F&5u>_QZqs7# z%HxR@KfK8)Fv^eH$|;~N{1yzavlSF>Q=A@5DjhcoFo%c45|-xIvR#nQyf!s_V3iTj;}IqA>rImwM2QjRLs<9c}%oPI{nR2}ozl}Xw;KykVw6xJ$AE&I0H~rL_QYeG7%(Mn0bng>U zZJ5*mgL&(rM5xENfqKE78Z$Oh|N~FmrjRdBKxt4A7&rhAF7; zCtXiMpg2Nt+A$}|P9+WUnHJk31G_Y@qCrFAseeT(TzwA4at8S;=3wW3*4iYLPBPi? z47=TvwN9q7(10O1Jpda{y;knrI0h)C8oU-(ZmxA+l><%vL=yMiqA5|ULL>XDH1M)G zBb=cm?S~Q@nmW6B`(Fm3I8(;)QpKZi^ zRWdJ63cVaaH^ePQKPPdIP*+OWDtERpHd!mfA5L}W*{k<9$PmO&$d)m@{)@lBldU@8>KSl8_Fn4E8Hg zzxM8kWS9CUPr;K1iP(RHCpqHgtCrWMNrN)UOG&ZSX^K0>cDuNPWIM(dsUST^@kGFg zF8_V5>mU^ihk&sQrF<#VcG`3f$^biYWwHsWvmSWtSld;BN#AYa)$;N=)(m!zRZK?Z2wOj}J5Bv@WO4807zzt1?Vtc)&Tr za!}YBwLQHr2R-giCWq-%i zt4W0Zm>bH}$&ZL2`5G7ljZvY+!H;7CG=4KXu;nEbQw{pjurlR1EnmfNUQv?n{m>!2 z9pK#3;WW!F0;i=yS-y%xnW40z5v?;JW?yBqW{4y_4Q6Y0|=P%TujV5Fx zAujvf=^x|$a*RRjAh<}4h%HWJP7GHEvk9B&3R&Ptdz;sX(x>sGBe@||%r`O#=y!#` zRw=o1)!9T+=`YSf%zpIz%m3+s-@+U1>9K#~i#ke=Xf}+DxEc z>eX3V?kf38N5}ZHky&R@+|Nj9xUkS9=3BAfCerbe4RfN0(v(>;1_P==YUs%<0q*L4 zR4QDK>;#fV&a|oVB8ARUa@O6C2npg ztJT~V07Nu>%enlyaoMxs3<%j~4|y;LPAy@(O4x7X@dQa_1nugNR=PN;fB3%@omBhw z>Cf-`F+@Qdzoy0eC0)%_j|$sQT|N)Bo!`^_7s_7vjlR)4RU+g&_H;M$d`*)@@D;*C zD(KXc@GWBV4IqF8(@1Xjvey@9#-80^+15F^A(g-1O+n<_xOqA@IRILFMU z71vy{t3AXLOh#Yj(aR;xySeX#d6cg)70bwMANlF^(3NWxL24vn8#T#WtoiBT7(#MJ z8>#H>9!_OQQ;nxOWA@igEMj#Tn;dAkmqH_G@>l}KxbU>C)|TRg(R7I4s zGk1i<(U(H-dkH*J3xgK-%3&GJmBtsm$b+wkd9E$c0-{*Rq(ZUK|udE9d2`Yd?Nv2ShhfC)_D!e~7s8CfP$H?)tQe5^R7e76d z6rUv#C8R`%OVE<%4U-^Gyb&Ysnjh4G_~mdwY^BN-J@%D~r4-CS0>;7jVY!t?dOK-b z>Sz+iV`M$1IqE!G7xvsyh_9`0Azz)@XR%h=-%?JxE*ccE`OD>iQ3oPeWCeD z!xCS3f=5;<>gP(|J0V|qE_P%1h-e7O2%{Ifoi7QFwEmQVya{f(S+RC(3&A!n4D%~f zbg6kl6rc3_ZWQ+0^>TG~8+*)n4A^&UnXvq zQrUoTiMjBB((A`TKdH6N!+2AB6-`)$qD_azixq>hWURRICzWdH2%HPw&Ghr=egY6w z$!bQx^>~l^my12c9{#zeHbkY+wL+$Ip%l!Z1Ytt+r^!&ZRH`qvIAP1o*$1DPc#bB2 znDxdIAp~Xq9f^Lq@06W(kVHkc!}s4QWpmoN@B`0!xM^hY7^+Rw7fpmP^P8hmhF1Vc zHsxw~1|bRlz_s6hwc_XTK@^m{x<{Rsx3p7Szo_K-Ps4$O!wBb%~bA2PS z^+5P^oA4#e2~0*e17n7&yQ0Git^qG>(juTTKeGQ$4tA``ssiKCu;6&T(n;pToh+dN z=S^4H{8jS;BLFPsM63&{$+GH2IlZSiU}zVOsS=&o3zQcx)Rp87Bj0;}83b>r?_0Dw z0fb2<@nCLk4r8d3QeT*RPgOm%&caLGj*n-=#q}VtY_8x!*rtZ+#@`)p?jTk3*H?^l zv4x$vjmA^Az3n}ZpBa@x9tvdti9&?xTgE8X_=2v!o+l6mtUuegUB>+1yiDfhj=9de zT_^W`+ha~qmmgcU^v-^lvv0beCLOjHz(;7l_I{&f1hUUt@s)G|VThin9Ly)vOPoRz z>1jRqF~u8kpL)dR?b@X8<)2F(*W-QF)@|}Z$=&9))R56pN4gEp8_le?#N4$T9R#u) zL-69C>E2~TWF!W~k$9FB^z>k|@2E>l&#KzIfs88POnR6uF}UJ2i$?TbXekc!*f*3^ zi7hL9E36o;__{Q_5hRa2A77>{9fQgdFXgiJJ6Ij;=k+SSCk^kHB76L}4;t5z>4olO z*0ClN^(QnFc5zJks3iYH^|<%TPngv=UvONq`Cr5Y4IhXw2DpSG15S>Ooe1uq>vuyX zXS}t~x>4G$OP=WA=dEa|iWTK}IWR!l2pS1-yq1$<#et#xG7ckUlD$H9w$Wjweaoj2 zgkexxmyH(y6*N8`ke*rrH;mr8rfN>H5c6J~6lb(it5Al!DhsfA1DGsyt(J{m#>4@b z)A=xuK<=LyRM~V7&cs3JB$nkS_`S`{OO^p)0%j%h9sCwXv0z7)&iHr~r(PG#rK_Hl zV>!}T0ATROzPs<6oj_6rJwGjxn^f=lO6h*gPRH@O(k9D3;y6YOOW6dkX<5;tL1}y& zmr{)!jAsbxT_@)-Al~0}?8|xkyv_b`vntzN`uLpk8!k8U*3Yi^?NO`}Po6ws)KLxX zEL?tRJhl`QiBmc+rs9iJbmzFN_rEkoC%iSHqZ+R8$7UoBWl1~P_(e0w!}?1bsBJ-` zZ#?{`SjJmVfO{UnJiuJ1w*2b%3X$X6kNzrWhlNmrD7spV4F(^=5t_f6**%9x#K;Fo zMC0B^tx>i6@%rf$M92y39mVdNzvL>Da+TRHQ=W$b-er&ivC^Vh%B zeT4wsEF=#~`24u&$((bQ*qUwbweZVjO8UDr=|Z#KJbU!qPVJ_Sj2UlRiy~U0RdR0lt^q}O&?QPIF+eXMIo$|!wmuaN`h)^ zTS7lf{OMew`EwL;x*Ca3dgdpvi3C-;#C4+j5h7bc?cz?~gHehpCm-P90QJiI`uENZ zzRFiU+!yo+<$xe6$Kp#|s4a!~eSFyc~A0(?%=yJHA z;aa4D4@hK@);MdP?${x9+}dqsjfbYAVKFdIwrOHv_}bZea*g4}Jrr$6I-1)px{L=m zzKP|A&XK2%;~-F{@3{Faa-Pr#X$o;5`MqvPHCZ@wCJ?SkKmk@U+u~matg*OYQ@P9N zE|E1i4d3&>TLUQqV{4h_1L5lbn1eT(O@)nZO^#0%?hCtoPm$Bd`}_MT@@5uH{RWXz z4kL6dIfCKk*=@Ws~a8L0Ab#+N0`*_fmZ<|y&Iv-C(Jvr;qHM%jF2Y9B9T6Knm+ zT=pNc?46Z*n03*Es zoV7mDZ-SJ^TO(_P0$-x}htY;c-W^yy&=*RLkm3D!0GLm4wtj^B-pUsI*fQA8?i!Wv zg)888-vR>vMWRc6mLZztb~EN@J(UP~*|+>->w_erD^b-09YXRcxn1YW(z^0pW_pM2 zN~+5zvyD&u=RjwU+ddxIkq?zcTaxrYXL#GrP5x^GV#;0>fk~`gPs4^felca@slNZW z-?v68+_pYMCKwTuA(!}QcTKF=_KYo^+qay8L9XZ_Z$Kdj?=Yq(b6nt(&|_cLjUuoc z`Fg%h!({2zIaZj@oa=FrWMSU5qOSLbjo?<`Go5P?Co_&kwJ#_N)xb7Mj{+b{LKUg~ zvDyh68#-hS4RE`jk1^i6=}B~)>TpOFy%nH~dV z5QI(gYgAkz<~L>mWXF|l#b9<`q(UO0^@%Cz9yB|6g_;*PI$i|1(02YCEb%ZvY5H< z<&STJ+PHXZ@Xj92x81|INa#v_}e!zc%I1)_G*RBNePG6 z($|BYk-h>lCnX75@)YAhB@T~$Cl}($F%K{?YZ5B)68}4*X~dZWEtM1#O>VrR=sx79 z+v6(zubJp}&+eW@S1alwS@-=F@s>hI?*TNb4x23$rj^77O{G#xl>y*Z((%J5*A+KG zirB0wuT4**b>p*C5WzRC%X!q=;wN-4;RHq$nHM()&lPP8d49Ov%5_tz+AHNo)qL7N zGeSZ~`>;55vl8;g+Yor{TzOxKVvlM(*Uw~}+rkwEj?_ojXTci-LsK`_s(~MmSkEtp zBK0~T8CizBMQ&X|<$?4?JON2v<`b_6ewXi!$I^ZGISTGYoMUx>bo{?zlAoy8nx8R| z_z{HDl9@(P>L#FeZJf0_SOFy|2o;n9mE)Q4g1(zoO>P$f7&Z&S%VFE0DSHr0#*f2REXn=JdN-ll^VjI7!y zY}95+P@WwjVsjjU%3Iha#U>T`Hs(uL<~sF^spJYYaTwL=H*?p8Rq8N#wQ1Uk@2HE$ zCAzW6bgvT-EOq=ZRuz;~90nR(()7w1bHq4|mi=F-FQ+p99FT*@v$CblW(%bx{^esM zrp5woLk|NtU_&0u+4-&}&ojHNHSYF_R94@N>vUFn7K37J^5%+<6nYx{3n(#DU}>s-l*&eg6Yf`=apq1~8>Z_p9c zt6)`Zcc-aCi3Ss6y)O}^94e_%rC#QuxZH9iBf~5SKt~dLr?K}@o9DqmQ{y~@>YC71 z#n5-9ZvbvmYk9ql79=!77>2uyO`M0rcG&Ih94naFc7)An!5w*uHujgpZ=@(&)p@qcYR6hoe0A|@!1sy~vdmHr?01~is7EyB zYs5kf+IdQp(X0ryW?*$S;yR8&f7-FucevO@4hUn^e=R)OENEoQ9na<5VFueC)#c zhY?jO?=+p1H*fI&0rWr%zf$6Xo>h339*^jYaOPD+_NjRoV;-f69ntJEGncT;>GcxD z;$dD$!Lb!^M2H?E|B=({ALhThahGuC3}|`h zV_SOcHa21_tk?#zVsUAY!-HKe*pf>s?1?qlYJn*i3H={BGsAYq&E!EYkB?m*W95yi)=MpK?%_|$i37O~>h8?a22r{{D_lhFMpN=e5-Q3S)8|!cHcYwO# zDJ!yh^dg#x5N4AMGT=aD)7E2ihl~xKak~FefU#Emj2%NJTZK%!gV6CbC-FgQn@;C{ zNOollj?m>DI1qo1;E+iiOh_-H6T@6x`_~TEH<{j$erSMClaQonPp+81xpt+rjE4WN9Qt*n{0ySk4JCqBc0281+PMw7|zutR{ z#`J9PJw$`hqP~aFVv0FhSZD?H$xE6Tl4Vp_A&I-4Y@cElcDN!vHu_bz6Y;6AEoHv9 zY7%hx7QzZs9e|c-SS8^q0(;-|CqaFFy9R{^PXP>-m@J= zpI@P$=0bmy=b4VjLgX=5Vxy;!6%QNBMGpS+HzNfSPSdlz+CzOnqz6*RZ5rnWtVOyN z>KmvQc@7pp^EjqMY@VZpE(;bDnM-kK6eO-7b|_t%_k;?(N9f0SFS<(4TQrF=aHE(S zI|DPz`&gp!B#n6^=`#_M@Dp1mTb}+D=3n(SxSDwK&wh@;%s7s4M4P5q4-|9e{d@R; z2qh)jyoV3gujOOg(X)+heBs3@+*mAlZ{M&VkO$uTzW4sSSANkKfB6a}#DH@pg)2r2 zgF#GzOV$qQxo!!4fZWNis#s?*)}onuh*6AMtV{HQ5JD165K%RWIv_#}Yl=i_ycpJZ zlBgDvauFd55R8$DZD-C^Xciz$NDl)*aj@ZtLC4$ZBqg%3h#LA4BquD^`$|8zX1&si z8Yg)J*^oZ0*WrT*M24P$k+hLqTMgExTuCal>qh<|qF7_oc^GmvL$eEl6N{+egU1I? z@B!2H6h$!}LlVviUEdSWV>$-A6GXGQ6qIGj;o%{^_jFyGtXG_+SvGhda7BT!hS_Y6wHEI^WmzUsi$YnK zgb?YPj+p5m&N+&zpehr2WM(UhO!|l+eg2%Y#1LrPj^I6InXb3*J+8DAg+px;cKEKR zH7gDd4(N6k+`4re@q%>@Tc&)BwU)9d5~V|xRnwpb%A(+HKk)Yd-H*NVM}OQXe?$xq z-Ie7h>cEGOxc(oXM@awkC0^8We=Ue>P@dbjs0^Ao-x{~L~ zC#c)ca9}O_^(E%TWvs24QQ=BuA8rL2Py0wTm9Og&{^zIpH%dLhGYvuNZ8DftPf&L3)yKmMa)8pwCD$$ApvWD4(<^Y44v{a{LxSt9~wW*bQL~q zm<@-CwMD9~vl+T60?^!9Am=j~(+YHcJ8LVDp?JKR1sQAg@!p!WWD&#tL=Kvdf2}o0 zbc411#_*R@lEYe_BInQBglr)b>}X2NOsNqvda$H(uvrG*_+q$b**{j9oJ*OUcU=or zrofAVkhwv!n4I7^5uQlCz~f7Y#MVf%h#+>;!eS&pWSWHJ>nei?Cgy~WZd~5AfIudm zGRg*(WB92KRwCKv#Mq3-F2>FpB`5EYR8W(QX&J~DL#xupaEqH39L7Nuj0BL7igSZi z$Z#elrh-V`o|x2WEtI+V;?KRwP4LH*SfX-HFfqR1obpHYoS;TO%Rte|=X-K_HmDVf zN=(N|0VXCA#qe{DiE1(0u4o>6YpWD74k*yjBbWZvUoh?8|6!eRY&ve}&u~k=lRMix z{x-Jpxf!Rwz!h2WfD;~aj)#dnMC1a(9HG)4Yxdv#$6~)sHXg1<`@0ZU>FHH0G6~A( zE_(s*M++t?id0zcPg3C*n>+1S$sWYc(ww1h(>==>v~7_xW)W$Zi_2vq==6Ph&J{(* zR1GT3gj3eo=lfekj75z?w*;F-bNvcqs*JqW@fo2pWDB#1#4bHQhWD`ZjekPb!15pe zLxD@iaG*j@q(o5L;g-LKxpB+~f9r(hH+%zIHT~ys-1;c{yMPzb@m}K)2^7$JqM7;O-7%(D<3Slf|kq8@cpoGfUpD{Mr#2Cli zl4OgIsZeD&v=BUP2X$FdxB`4n=R1tGph}EF-}hOpVThVmoz_^QPe}}CEMg>6F?3BU zk#rnInF{?)*WtZSB#fM2vd%&fLQKy_5eOlPch=)c(V&C?UDs2V1@)|^>jKsqs=CUX z6YANF7(9LO^nH&H$N12(nC~)Q%&2A+tFvXY*Z@KwIB7bJ2t`p)6po$UT|fvvFq_vj zO^fe)nlr&*m@no@w6JOjA&E<9v!JC+L5v^2%?$xB5jLv4rdKETdjEC z=W7{w%Xhu?`+n+O@A?^I*fYxI2-k1bPnH)O-gA?!ZQeGv@p%*9^6nWAKmRHhW*7PI z?%w9v)o1uCS2qilZ~JhCbu*5i2>i{jSbx5M=ur%Z1{=+lzy*O$N$6tIw-uPQLQ_qG~uGghp z-wh4k!J*HJD~g~JVk$Mw#m5H>@@q5PP|5kP8C(jcB{j}Kg$)8wfaU!hUj|d zniDf}&YnR>?^4DD#fDg9+_~Iq)xmmyV?lkIWMN_nk)28=R;mdeFs+Ek&mx4;OjkfQ zk8eu1*dTA@PNRVmab9sDY+^`;ZN~|XLle1TeIk?CXT#r{p(`k#+sL}pMKx!#CPa!s z-(X~I-;%qMM%sx?&$CV5633G+N-ng;EZCUR9oBv|X_Tg-+FB1IStv2Q-;fGz zx=voLbqr=yvM4rLYvdxuK+Z^_nW+M3J&u`N(y0r{rl>^M$4wmnV5-m2Nk`KrFlE@N z*%Ua9zm8*aFlQT+xPmy+D>fW-rXL2esFb8aX#FV9ByX!HHH030GA zkt%u+XY=iynKe1hiD?_|5U`$LZ7U*>|DalI0D z)ktPv(>n2_e%_0)~E~8g^*Vw0|p!RF~&kDv~;rLys6q!be-A&rf#?VuR46 zxr!~*HiLkah%J*4J1&z*Bm>6OFA*s~N>mJH?;E}bQ)5gCC;yNCH*hGHPN5~RTPP2@ zf)92d=GV?n`S{^0x6k-(Y~u?mJjXz5vF3fh^1k=H_$4oXtq-0^#951V4%#-Yo=g&f zY4#Jf)>0HDN+tw^I9eMFq=Lc~bbXf!`KqZgL^a>jQt>>kRb^ssFOa zv!Rm)jN!}aS}^8~m@MERHx}s7ToF@oTPJjk)TgmtV{2aXjbaFN%$>x(2d5NeNeBi) zNY^ZeG4~>p$PaP2Mw1+adRTULcM&73Rt@;t^Zdq%VtGc zmYJHdq^@e(u4Pu&%&Qr*of(Cc$<{}}S<82Q_glX6r+@M%e@Y`x;UV8)?||dr;Fq~` zXFEUG#y0*S<2ycH12x^D@S@wRvB3D}Kd{SuzRONMM}5c4b+mQQofrwvMy~H(;$ZPo ztbGtGcQ}}Rgm)~TV6C8KH?s@W! zPp^bk4`r277O%U)SFZx}A{5+N$4CSzf8(q$3tOO}x6_sWQl`3^Dh(?-5 zc-c%}*CLcAL2F$B%~|ASg?UwV)!-Y&M8Pef)dZ3)95@HQHT?P+zeOP_+cr0M*)5)A zuYLlJfx=$FYmLSm1TNF`PqK6EX+pTm58gas)t%ACGh*xMRu*4*-uc*;ru_vLTVcg> zIDY)A*zpbfhX)+&&bTO+i@RU)ZQtQ$d$`#i5rb-n5P(3;79Xf5#w@akfjE#XH2q9s zvI~hZDfp+<2s1ch2_az9 zeqkV94C02(y~Thvuv4*1 z0hH^3o0Dj1(071O!U@e?qpIfyr!Y~Ys+TpCv;k{!azt1=!pA23#Dk)J2r0&?HSdrmFKfa%dC@D^`wIg{Wi8PY^Nn8sw zhHJI)Ih+t{n06^iqI(zz!Go}aW6wD*l$NVEevoG_{iSW!$~Ly~hZ#@(a~AEK^037e z1$$ESB3tlsF+5-``)b%Da>U}bZ!|HW-Obc(Z&G4fOqqm-oglW#6rVO(7X(2HhY--d z&9tmKS%D1qQc;LYvy|$_Vn&?hlYSt8VEm*xUe3fc$6Wm}HWX9`7^>~Zq5 zS@SeW4CynG?QGKbI?fBkXCbLE>$!;bU>(HdO+V7OPzVup31oXfLZkv0 zp+83OP?T$Ntd?MFkOHwq5@2X1X)ONOf1c)ZC1MPE@^}A7BRr^ZQQ&#IJN$P0+kBv0 z@Ps_f?d@pW#x_3xqk&ssj+5lv#KM(0SJ3w@;)J@M5kjDC5^2g5sc75#RJ1KBhgk5v zC;0R)s^a^evaE20!-ydaLI9MQNe?Ek?V{>v9WfQAN6i)_+2TV4LX1hnX43b@tcjMA za~R{2=o|r2BUlllXu8!-F^~B;hGpFO->#xvr%X{4rSxoZ^Q}k$%7qAW{72zc+uHEoD|YJ=~4j7`*xuI(wS5>;h&dIkn!NFs@{uBfVtvMQ;n zlDQ6$TpsDY+gAtF?>imvVPou{lSv`S-ZwOUaW1;z@Y zhgm(tx`M82>6#vy3tih$6b1EShWDPc(-n2CxUyieyTCY0RhAfQvCdM@X9Vx5>U8eA z)?=N)m5!n)sjG@=RuX)qZf~Q$Ebc-GzJXKvI3T06;U(A>- zYQFbvZ~F@|D9x(jXMXypepX?(T;4hC;Jp_w^7PG{+dRNFw()x!Z~pm;-#9RQ`c8yz zXnEn!SG?|z?C?baVLf6zrR}*$ORO85956F4 z#_01frp4$3T$HD9k1kmlMT$9fd6^h5;|`Y;=EL;nCN?e*_XzM11p%t3Vdo||JACT&6Tf6m}2MOVn-;m}79X>Zql_$feg_;_Ftu5@G_gez22|U0ayvce!F3C<{W30Nh1r7Q$`W#yGSQSb`3hr%aO@s&zn)@n+DJiC&o!Cpk=L9AWo zVoN}^#K%1f^DxL=qFo}@8FPOJ}d zXwKp84j0Oji&ofiZbmUbLTsHo%u@Ge>MlziZE+w~Xj-glPRtTxqFbm(V@C`<8qz9v z>}F@ZLLa*{3}eD!@ER3Kg@2h?N36X-&llvm54jDx@o;Jst(NB?qvM^MD?K%Ww3FOd<}-kju=BUF(0Q(!h_-9uOw7c5j#hzazQ2}0f{!LvsN2an^Yjw z^?6K*II|wa!v~#+5}2}Y$MKenIO)GR<+(xo$Q@M1p|M3Sf77>`r+@CJDLE=ju26Bv z76-bGZTz9d)Bm0;`vqTYl&hw~h;rGKJdAJ=#bIgW=+FLdv|oZQ(QcW@4zW#h3rQ9o zA`NN`>O)3b31SrOS4nVYZ4zRHK9MS7nM4UD-J`V!!YUPP5^!*&*xe^R773H?fr_%6+BOp!!I zu1xGpuTVhj+e|mn{CVln*kqDiwm!?0Dbbkb6B;0K+|stxVQi5_&UtPz2ysIed#a|6 z;wXqqejyt2XTt=<#5`Tfb08J4RVG(>Vz*2bjG_j$pa#VuZkFuS1PGBBRw@0GdHUj9 z5^~0f?0)N?)ziQGcP!Mv!%;bOjz@#%W90tBnR&^wO zuKi3u%X3DPBc)7^m2;^AIrq(ISwgz!4%U_fT|#v;4F%Pv3cpvZN>+*4mMPqA`(C`rapN z3+M2?&$QK;`XDqBA=^@MlZ9u4gu%QMj~S2AT%4{tV>vR+J?>Re|pVK6<*g z=k)lDrfn&lLrFF+u1Jbe+dp%Y0trtfet6QIlW+Bnch7r^V3s9eW4+lx0cb z9KG*3edd&=Y3O~QDHWQ@oq{!vsw}ZCi9WpdbX|wFh6{&BJaFv++P0(ZT3q4M{(L03 zNLeQvnX|JcAk=k9*LQ^DWL+|wRg^B>C*Jzq-~Ao$`iY5I!O<0`Gzk6s(F2FDyDdpK%>ycE$Birr&~D=ObHH&5Y;o_TqVXs;3U20JJ})Gk;qPx0-F zC(D*q=h( z5DKF1QpyD)b83Ww0;PQHfR`T!Sd_3g7ur^NNyGDRw_qx0S5VJDyPOg$Vd;gFPN5Wf zE8J?7+QMD|XG`VOB(Xz=*y0410v9b@-!oJTxOqbfR@mE9b_$`1@Jt7vX;W(}QE7W+ ziLwh^Sfn(|>I`N(U<%)^Uf%-fVNLl=nB2EU&)n&5_ac82;d5#vckW+ zA^!@;AyFHGc#P?AuEEgb;ta1PfhP!D<`oZpk{^8X7JYe)mlNJ`VN0?2JdUlf;yD`c z_)_-VjQ#x`4$CCli?h-H%J0$vq4Gy{UGH(7;jcaf5n0%LG>e6K7`r2MXk4Fy3Dy{ib18tykIea`fQ$>r^>3yXWf^TIm>M7CB66G%3q&Ui_Yv|b zlj6B-9*j)t>$0&+j7Tbu$MwF3LbvLKFfkx8&19Q{5Mi{LNJ0S_J256CgMqHVIpV=+ zuP~IO2PFez7e{i0nA&Vi&iOsMl{E%c&zrL9P>7Gn#yMVhrmS0NCdZi1k8V&I%$h); z>jPW=c^s)9gMY0=lPof1uvp0yi^+M?-0_P_?gBMnV*2^Sq9th`QZJ{dj)PT<&0Ed~ zY|^o4#$iip@x*9IeV}49Lf$}_T5d@8MsJ`Xd&BBvD9FZVKt@%|`owAOjvA>OI=K$# z#5#=0zbrBd!yvoAtH-_9eKKZZdhe19Vv{^nNHZD}p{x;m1ZI{n-fGjnqX%6fVF~dR z!V=!4-WA zH{~bU`Ymo_8-IZD@t>i-^bq?_cunE>YCKnSqoYHalJv0kJ~dLArVM zZ4w}a9wdo3MH|%T?)-cYNaU(M@%x-jdN~FQGfBlbIr!7xieI6p|M(vm<+6er%N*D-mb<6F!pyWh zd)jjM@*6naj?Uk|(04Oyce&oe~T$m6U_Vho8{@Enui$H^Ld9~EOwnuCeWqMl5+ zB8^RB@|@Ht5*3L_7^}lvcZ#GN8TFcJG7&LVIv@QR(5Gj;S)j2>mOZY-xH8Shd;^jN z+nPQ8Yz-#cl1Q#d#t8Fo{Wgq+lfUz`Cb9!OKPp$9<%JLK^1LYyQjw$#+--l0H?7^?R?|tui`O9DS+J5Hgx&{rAs;po~S*=$1-Xm5B z8tB@dqHu%|i6M^74#pZR;C%q~INZ3l)sRGr*5;zUkP7LVtS*K%V~jBoEOMbgc*Qs~ zuH9nf9(%<&EQtqU!q6YUK(&An6q}dBQ`?UzI8)AjJ+9#MMhE9e&ZP||OY{v_&tb_o zxI2z((utL0oV?cLb>Y-T^s~j(@?)?&HQCbR{CgVtg_DCzDGN=MqI>b8>J>P zgKbE<-WFBpLjd37vLM0OM2i?~Q8e4dcps9Wg>{Z8CMC%RS~P?})R-D~RO$O3XD!Hj zyoF{(2nAJDrEwG1cN?%po*`5bzs?>f4+rR};zH1M}njrPSZ44D^ztw41u%LGkouv z%>wnT!dT09z4fjC#ZSNMZ~QGA<>fu$g0(ak12=9aVMWDOV6lyD{4NCpox{xououD3 zc_9%e4lxUAbAi%aL%0T%1ba->XNevvdj#@4oLmMRR+a>o80!%nPG&$!VH`0Q7$X!h zqH+gV{qYCo+i&$Lo%(NXnV-w4SWkfiImF7&t1t5U_ueqSjO8+wMgj&a{p+vs`YymP zJuUCYS*6qfro-AZ=6VfrP?+n8*(GuV6D^14h181^m>+Z5o+kWWn1k#P+$rxody>=c zCapQ<=$SL#{@C`uv5haBc=LxVj;MI#XrJBr^ReY?i9AX{hjL0EOBUt=B9|#SLa{_{ z;WWPLg1+&Y23iq1D|nPA&S1Y(76mM7s12ARO@Pfz=qhMhsOC^R;kbj_J=}^y?2~|@ zSFj!~?4&vNtrc`bAu&Slp!MK_^3aZOO~8g!@|YEZE8y%zx!t66o)mzEsKVW)(!12} zVNDWfoGz7vLZC>y=$l-cD23kVxq7D%l%tt&eGhgKG{D&^9m`!0FFBI0b_#P9-g7hl zYa%Ozh-HDXmod>`>?L|#5UUp;)w2Y-jmDe&@aYY@_9iQi`Q=+JU%IeV*DBi2w7lc` zwtn$B9$R6>b2RoA?Cw|&W^)d0$w3e*Q|(~qM?_l_eMlX1p+_~_d_<3GNSJ?(#O(d8 zgjCE>589!jA^2`{p{uFjZPQ9SujAK#q63wJae<$~nQ!XumQ1e8ikg#3yFhXFhK^Tc#Rvkt(2SkdU%kgHL%zq(Eap=!wkZC zprM19UXu#8F$p37aV6?o)VE1&SHnjz8AMifTl4Q#4|<7*mU2Gt85Q7N3gm0ljdRIvY1aW z`+w?Bf=$8;I=K6f{*i&#RwWOpRfA8bd|B(w#R<7i2WMl7G<3Kk3v{O`V3eHHd)tb?2`~x zWPq3D`A(CL6@!!)fSoi8De_0kuku_<*Mth|7+)|@uf&d`-UNS9*!{ELAyN>JfA((z zC6*m$xx@k2zI2ygJN*qly7LO2-j2#`Y~%AHDu9ph5diw070xu#M~@=TSn9gQ7--rC ziGj*hNG&wB$pSK^@4Ha|pg@S}-ePj$UW`dDU4z{siNX-`8eBDwB!eUZw^>}VnX4F= zN=1OObp3mWhSvIv+4u@}9ep#+WQZ6^!I2h18EQQY%sp#cWVE6v;Zhb#7s50Wy#_ z3~TGov57|4mL?_(Awozkj)PrGh#?(YCMOPJnZf2$1|o+{vOXdc!iC9A7Mbv%smUZx zL>v#=)#J)E=o{YPxxw(mVSONfyemEH&H zS)y2;o}5Am*wPZb(zY$ls-Y?>7JCcoSp@>CvlSr(s-k2*pW|bo>pG$j7=+nkhKO+I z&RyER#TrXhSCp=xYdV~@*$ynd_tTS8dfyWKK8x9cql<@}o|K#%pCU$a&LJY4oi6eD zy@N2TN?cK-k5Gu*zH^t^V$Q`27dSaRx1cJ^ zbPZzq?D`le%MxoWf8o2|^5=f)Cw}s$3|I|3dQAB-c-}|gBW)INZHuJa*v1gw@|!!% z_V>B8zl&L2V77Reg6E-j&cX>U&WN&uiHFqY5Og17DuT9%ERnK9Xo+U=n#;Vg5AdtE z`BefvCCyh}A_v74YV!cKdzgZU!R%Azj$%)s;wqu4lH;&6%5DL(8jecXuRzh!@-3w|DNx$)gj{ch?=~?)h989Xtn{FkSbzK z-IT+>7<(l4#MlyJlMu$77ZBtHvkWwe2`xZBi`YOmm+CQ&jsU5qZZy^VN0kJdmJw!H zqTk0tB&PyoP-=|Flz%o6It+;hW$o|)(~gfRf+Ht5atH0&2z0%@kv1`bK#bIf$?*>f zRwRM|+YtSvNHzvqp&F88#)=s-Zo=X+v|GD)Pcw*S~vrR3jDl`NACjNC8P zB5MncbEz1avQCvzs3Oz%IvnHFC_E<1j6t9Z^SKIOQh`9$m}`-k3m1}n$j56F zi81|MvI|K+GeaVVVgHG}s_OH5a${0T2Slml!T^0fUpfJ=WPexfbBCv75<|8H(U{-5 z8SPUBGKV6mXfk@(2u+bDCnt2mzsJzMA9jxPedEj zfvHft0CSRr714o|s1%6I6XM$xV0I9@4{qpaT_G_EEi{~hZ*sRPi1>6ICcXdc%9gMH zMDY{zC&*-Rg>m^_)q!JfYIb#(qgls=kN*sJ9{tX32kSPr@%tH1{c{$FHP6TLxI`W? zmgk{dWAUaxX~btDM1XLX?!TDPLtA}^6q;!crziztD#WI4dMRp zh^f-kt83G}Ulg%sEwXDolqF(PAz4EfYMCN+oBB2t1BwNRCAN1k-QBb*bQPj5J!gzb zVz4kgPeLwACozPaP>uF}htj3tbQ94DEap29@(9tndNVHjUYk z=LTYu-lkiEHi)!n@AGpoK-VMm>3Qv4`Wp@Db7u1RCuG~O0_+Tv5N4xwh>)y75`iTZ zi4yHX6QK%FiJ6umS>Y^544LT}M(edvEFuA-PoEb`)JHJOWY41k4Iu&4v(N)9qBebS zV(KavG3k71>K4Je2?oy)39$EP{=6XQ+28rwq@}?Ns=!PuuAY6EkKewzXWY!jc` z*v98a48_g@PY-4(uyBRN^x&MO(vqf0c7sJ(;tH3o1$qEN=ripgrgeot@7Fkq5F%KM z85;=%4Ph+ehoHo~-Zo~i2FdHYjY5C6QPi~{Vq8j2#S=22R*dW1%{LwMe~g(3Anvnr zJO4FP`h{#R`_av9ZGb|@rM1bl%OqkLax0^i3g^L?Bj5AB%nCCSCiB|TNTv?x1}t&d zx5iEDlH|y_rjrhKE%$`3a}ZZ+ckU8n%=C&G))?BZ%l5y4;5{LF ztO&-sWW9%u*SG6CZr#4a(a`~yFI`OJi{4`j!C8lt>raDq7NT-?mTUmasw8x2zS8#| zT_{yiP}UW1`M&S@3xDIU|M)vKa$V7{f=@24bNx3z!bi4q-)(FI;Hy4f^V+?ONbx)> z_W%dx3Z-14lxxh)C8C+*SRiJBP!a7MOP!x19U>9Kf{1-^&S6!-o%}p{$q`@d`($_Z zWbUId<_oEU|1AEujfQP}nWtVg*fvlO|cl+XB25ZZ4Ix7IqU@ zj@T#q#LkZ3M6n1s=t7?JMnO7dUM7*$EWq(HVhzly)JMXkH`UA`G(vA8yL-Z&Gv)S5 zSb8uXE-r+NGbly4-N8wdiQ^`TB#J29YEt?_O2erKmg%0cQ|8)QBkUE*g@rN$iiL3d zM0xtQpq)}#;jj`4N&Q+)lZ0W*67EK&@-jkcLsnBixr7TdeciLhd>puocXzQI)9Dh! z83%Gg!IDyT2r{R$zs|*?<(uC7aenUA+d0eUXl#WQ&%r3JvDn$+V1L1(D>#ag+7)wL zwNDgB41JpE#Dv}+1r)jKKOz3J6$p{29@G=HBZMyfeN;B;`XVDGc(DFZ)qCpxI;les zZUjcAwjP>E3Tq0&dXb+OtJ!8jb2o%h*+^VWbsjp=2$-?$UpDMMrb30OkV145s9^H8 zjgZjdI<+(zEIH0uaF}UkK*mN85tB6nI<*eHH=Cfcsjtv%0Wx%&sNO@j&~ug%8z&{7 z40Deg%lbs!YuGaQwCH$F*We3X?@)ANdm(G_hO*HaGbJkwbPZvG;53sHcuz(rw*VQF z{$>y<2#JD_zZa8f6)_{-jjRPfYBDY*4@fE2?A9^Uw9bYl+l!Ek7=Uqzby=$sFyd0; zUp=CID&(0>s!H0fP3OzVB;h6JuJ>>qOeSv(3XnpLJ$4EwP_nL5yIm5Q165Xz%0 z;_6Ucr2=Ja^8F;wq@>UEmMP12GB$@Bh;d*-LhoPs*8f7E{=5HIYuR%(7Z0B03D^oN zwy}-huQ>h%F3f6Ps*zV2;W31ZM%dxttG^)$2YTq5R4^uW=Tpp}+(XL!bkB`vNNf=z zq8%y`+Edh8FhxqjyB(ye(dG8YZdCQ_ zVy)07+a@ejJ5U~={T=X4x<{EZWpwONWHCrlqdp|dqoEL`VC~|`!tjW`J&CjHO`aZ27ZH>lEK#IeD$o}Y>#UU|^4K-Op4EM#wH~tCE{>eYd z`n&5+`EuFg+RHESTdVi+q1l)4$?fR><4$;)>v;i&s|NPid;QlCBkG$( zVHlp{QBWL$&z#B%#G=8ZYh9FRACQn%{gOTAG&G>6+2*54RG0n?e2>_O_8~z|hN4!Q z6l4KqvN%(jAyOsrVQjJ>Xqec=ks6Vv9sMSVOa-VxieyflM$K_C=Gl zf3mJp)eYf;oL^t7Y}i~3Yv}uF2+m~yHol(bR?_=Qwj#r_?wTh5^|m@#&|D{bKJIKjlmj&5sS5sUVS=d2F;&hRg+DOt}Q%`D#80~ z6Qd)2HTXc&HkrU;2to0_#~4Fh)y(P{o$u(n9^dykmuyW`A~6<(i3q}XJ;uOdF{A7H zWGi9}byc#vyFDbv_Fq_Zto#*sy$y}AiVur>* z+oo|BW;IdMF@De6-u|{9|B)a45kvoi8h7+8PhOaF@mH7J{LJ>YyN%~$eD81W06W-A z3l8dw>=ut;>|@O3I&*V@((I#gpTaDF1W(o8f%iqTA5kHv4>?A zRLpEz2CIiVt1a+vp!1FKs8@}Z|ALY}ZxXUm7>D73if9O*)jz6Nj z;|<&V<2L?adaiuxD`Ef-%_=y%!d>vb!*Z0`7X{vLx6`Tm1EeD!KDxr`qRflqx0$mgeqmRxU>@VQ3fM0)B z{w>OiAc~>F$u4TanK_g#uRWae(qH=wT|7lrEkFFa)pme??!;DD@m#yN{&98}9eam! z_7^h_jb;DJSAGBYyZJu0SR_vio~FrPIwv3B9p6#>F4IZ^l-m)LAWrB(F9uQ!KJ?IwlDrBxIIUNZp>} zD9Q;Qk+GPzz7V-EhGvX+90z53+iUxfF#$H7$J`w>YFiSzRPHm3?#)UK*)x|;(V2&{ zh&1`s22xRxEK(^*7~J9#6c-7%e+$bgWGp_ES@1(H1omTLi2&L=paheI7Gme%cC%2* zr`bu&g~X@{|BcUfAT|q4Vn&e1bRkUvnyid~86`VK&5;Uwz@6>WU>n=`y^SZ|#r)tA zE|`j!;dzaL$Bp3vP_g*R*C$)6{M_mTw5xRQFcl&*)GR=&bkDFwA~C2ynXNmVNuBlG za=l2=0#nS>{X>=@K8Y4$oy;4x#z+aVLEAG#JFtpK2c1Asf^(_((dTM`xOCs>Ptv`; z+5>wLZH|-RLfe##Z}SbaD4@5AfZ_c zIVu8=Q1Jr&0Pp5Qd_=bNivLA%{P(%wp2rJK;EPSA2&d>9nQ6(zF{|AM11Y4m} zLkx)3B&DHF11UN6VZolOtZNNR8h zVIp?;Y$%F+{~a14?iXfUi^fr8qFIHZV=iGxBdl`@Qy!$SKBrL=A*?7IA;c^wxIc$< z8iQ!Unq=cLh)$wvn(DE(OPvZm262n9CRrF~v10Q!m7*w!F%m*pHxT9VCB|Tk;QMt0 zQSUv4a~P8>MG9+)Q4^KI2aHYjaYlr$>j)uI*A=sRhKQl>I)e8^6Di7)pb_;ETcqb_ z-}h8?&0=SlnNP>$oTadiq9~CFMOB~*eb-UX=D0nF!P2!YCnu-$T}N3LRAmxFG;K@a zEIT_ptN@!pWWSmfsNf2R%?%)D%N48Din1uEyPEl8#(Xiy`-u0+TBNE<%Cf}Ie6mu( zP*!Q~qpI27qoeVuK|I8Ov6j2Hk1=9cEEX)6OS-PZhn~__Sh1{{6;ZQj#~7NX!TX-5 zf%$BPEgU|0&Q8vV!4vBls>=7i?fZY=C*Jwjei-y}gg5luzD7~}CcV80&8=;IU>jeM z@#lVRL1lJ`g~ip%(W;`T_PKcZB95!zF5~0^g}a2v6@(*P*u!f1@QlY>A89i`bbVdQHn!m%5%-3MLD$ z5TT2()FiT)m8rA*WChQzl-@&K!QO!&F?GJ*T*9hXmMzFG)VqR@%BOCF>?^ama2Vl6 z3#-%g%&{r;i%m-od=#2a5u1|LkMHy9!o#8#e(7fXS16VsR}r~_a)r`(q6o2mkk`EE z*LcOFALNgI>J~+D%AOcz^#$~0JwJHkBmAXHC))wJjoNKxdSkJz^2m{JMHSaYu3i&-56|9Jc4mfHCOeU3Z$`Iv0epmK8}MGaG=uAhLK~r7 z2?r&Vm2&FgiMtWs7=k7`PLnmZ2Xm-OSatBx8*q1JXnK%Bm=(~+B;3Hmt_3$2YMUrL z#%EVn3!NXDUp3WFOfI)(IC$fgGcP=UU%z6{Bu4Ff@5paFGUF9$g-KigEKqTC>;usM-tvafkJ@d}UY zG?H#6f!0phQxyjzR!?hw85eWk?tfpi^&A!{^@Z;~`nMdETrB-ZX8^0Iv z!Gst{9VYmg>=wzWY` zrY-nPDiWJ-%{|aV->fGNL#v9(vIw30I~MG}V$^bcYtxcEH3HF*x; zkljD`7L0|HpZ#ef1;XRO;ZOcG?t>rTldpd3Rz$RoZG0}rC-_A3!i#+7&Z;VHh!;`4 z^xpsQzW@2fS?)SmSVoqi{*A9(=MVbSHggMlA4=!u>*BezggLjIG#i9c$#jM|5q+e2iJUWMHQDoI zAX*M<*|kjw*^VVr6po@OK>B>meiw0vk-RoemKj7tAN(ky7{oG3SR&avBqeD=zJNx| zm}ih|S>d}xcdDzJs;cnb({)|Sh2+Pp;3n20*(xSRLL3?;Qr19>5LId07FQIIvk6fZ z`kvnRlx3MMFiM&xZ9}}r7|nprge3_vVy&aFjxIu3xvW1#4h@R{z?wH?M9in1X3 zhz~t6Mk0~rS(B|%6XC@!7C7rDOo1sJ#u%0-4Xaf{-!+Ie^uFcn?2NA8Wp8(vvM7ln zbWMlv0!8K6-A{sxv*Q)crSsbN$p)n;D$1%RYNYRyeNPC1wrMG|Fr&$|4Of)R<}-{D zma8*v-MB?Pud&9^bvkKk-YZJ~@6j!V?VbqaThLM{+> zPMMU>Uvk8&nkWQS)PRdZ*(q}eZJU;wzDvuS!U*j$Jp*@Y*eN4EuNnFl4j&K}PWb4@ zBWl&V28IP%ssLO{4{1KMnCY9WVXd&!V*xOVh{N<-U$X~pA zwjG$;_~e+q{6&=Rah$u9RK@ZX(HtXsL}e~Let|CyIaTjN790nq zYlOn2evSt(3%AaclL8KA%Ef)*tc6n#-C42(*$b&x>f%B$m*J#^<5pP;bRDz}u#;SR zZ=WiAHE2+7ohhf4&^L-vut8}Xh$^YK!X=B1Tc686&N_%j zFqNQQIXecUN?8k)gViec$p8=S!KDh?2%lKOt-GLop4%EQQL&NCHp*l`H&a7f=4cW_1pjV)y^f#oy(~!!!Mz0(9jV> zlfDlPF|^=YG_KIlprIl7HYJ2ZL+p?7{cU`^T6gX*1zSfOLr#*kT1CP{`k`97ptZU{o?(!-)@ zl;s(moWSWR6b>$3FjyDa*@K+}VYUNqu4(4xhU3$XPvKOap!cLfe)o^-m_)xH$>Tg} zVoX>FQ)<5#0MhGiCM6^hMXK~w zM6(CBM*0uJ*}D;cBNg&YiG~IV$FO)DcD^!6D6OW#Ud*Hsvw8hQ2XRC0IwcE2vh9dQ zzxG4dfT+(Y8K1hBL!XNmtF)@nZY>hYVw4S^-CTgtye*=lW`<~i|HK{ic0gN2Gtx?& zV0IL<5X_#y9OB_aaN$qG+3&#Ze}O6coH@)S4vFKnO8+wc8}TO8Wax2WkmW6 zWQLk#Ba-eeAr+aT&*w$5SR?;FgnZ9fpilhmzf8*~ySw~mx8yhW{{pwRPlau4Bb(ml(cfHsKl(Lvxa z+}?{CdO@5`-R{0k_c{|(cBfkaxkVB= zhAz)#3~J1pY8BJ7LPXQP%mpZplEADx0qxUyktAT#5E4DZmg`noihQrl_kJ1fzqxR5 z{P+J~>N$?ehrH*#{gO`?*J=D6mQVd#jvsqFThG`@JoES1nLUr!)Rxzof`=q>5n)f~ zfAmdBbR$SnB!NQ^D0Yylgyl&R*Az3P+C{q)w7Ua+i`YELHL1{tnDktaDA}`Aku_|c=O4);OmF{8u)mKe8}|Nh?bMPh8tJEh;5>C8{7CC zjZ2rxb*TspLhwDk@9-h7ZDJ(m zVt34IEiojU2W!&IBc!A!BpVQ&Bn3vh4FO}7{iBl04^?!rcNVD>U4t%p-zD(EhX+5~M6j8k&sp5Wlg8L-;WUXn}a~7!M%6hW&)`_L(@3v)| z9~&WT!Yf52Sz+Y!wzjrh=N$$s79(IYsUZfvkB}rc8R(iG;hfFZkI7aet!39|Lb4#H zC>=2*%L!u)#@MU@94tC=V~8rr$#vuOh?{2*ZA2YRoB|!`Wn46G9+_Bo=Y5z!-ybmc`Bv zJ39;dw&Uzdzlm$egS*?ibvDOharpLVf|FQSqVfSs@T_5%tbFQ|_+kWlz zcJDd2->Zts)ddw0L?}v zW3WI42^Fkzdq3sZ-m>>zWzISB$CzvF^}fGzDK=Qrz3)8F@4RjAwO5^GjPLk-9We#^ zwqpo^5E8!dRHeuJlEM}E!sETs&on80-?7=8)9yNkVL-g((ix$uYEEt(vsy0+U0@gj zWnJLCqiJfKH^%;M*K&S#nypZltX50A1~K8hr>Hzm94SP)zUBP<0uZXY=3u?1ZYp-W zmhHus(mU$9&Vmbv%lpza6=hjalqFsq-W7Q7Ss$!eA0FVm<2(M?AOB8;g*bZk{G-)l z{J-ygjE`UUxYzBMfBTLFzw4`S@aE&Uv0Q%D1iT|z(D6xtU;8uBtZ8viy1B{?AlC=?c=93BYKEBEfgYj+Kgf2)BfpKxq;aPL8) zPf)C_e;Wp6cLw#^#2LD9G&QWc#A8Q7bi!-r&=1PVf#3`H@GFT28$p&rwT5u63Gk1AbH}C#BV?g<9x(3)jY8SygZ%%Bm8g81jERz`{Y3`}KCG z1ZSRQgA+Eb(k6?2-}CZeI^7ZFg2Wk)4Fiy3!I18P{0Q6br#XH23C_Yfvfl8=uL%~{ z?O#Isx*t4d{p91^xb+N8`8-wm7)`v*LGu`udj@!%NJHXdxb$OR_o96BkKcn+fkiC_ zUroyCPUv%ekPpi7p|JK)6*hk=ozQm5!vQX~N+D2|mSZ}rQ*+MIL>fgu; znwz>xD2kjf8lZN{b0^AUYvI*1<--?_O=oj@%`v&vLV5ZCLYMf+IrM`=Y7r_c1qh;B=WJA$5(+=Q%j0N zUgXXYma?ZvOqzvRm4g9;^@`hsT&ilgRAoO)(&r+FEa2c%hzj(Qg@|T)gpPI;Tn;d# z9IO!Z5r+#Ii%`d3TrK){8M&FG0x2n8_pcp;8gu80+16&ee5DLz{-W1$Aerxt+ALT~poPmzTs4V|2_J{++Zp;+=b|s8yIc z@*qCpSobs*(R@7VDlQ~fiKhT~)YT+)Xo!r!4J$A;%vI_YdZ125(HvfZ`U$fe)J>*- z40-#J%dWbkfWjf_nS>THel1NXfrnJ0R7k8r8q_sr8B(t8@6i%M8q(|*aHd+dYfu79 z=QvJq0N28b>vrA#r?iiL2aB!n#xn86;(4os#}STn`PpBQ+6R#O+_yO!6IQhe3~*VU z7_9G&)-OuT_7)OsK@_rZL6aq(tHu^xq-?DrNXTNj+8Omi0)%J@X6Gyk9d{<&a24V! zbaiB1?{;H-Z5)unL19)1#E3{VTZA%;_u>|IuR(nSniZ-YY%h?p-%o0!Ah)+>5-|dX z5^}%mkfJn^Ur@^z$AHkHMUibA@=PQ|D108XMr(y!`L7R5JSIz{7Nh|UgXtzvo1;l> zV!+G>7wOU1nUEwooUciFo*_8&;5YpyJ^O2aMTEChi4%X!D{kPt@OC=7hchB zhj=jreeBWL*v z7ChxSnR95oK+_JhA;}3V?=lT7TZ_R&juDrw&`!SLo87}d_h*vht&Q+(D%s+BaMSaT zU;P<=^3FT1D^;)Cb^E2*UVDuTmemK7Zhwx*Q-T~8MUg2L;Jwdle21n;NRc>1yf3CA zfE3f-7F2agR;QTubb%OcZ1$N*n2ffmy6?(HdZu_dyjk%4TMxMPq~mLp=@lwx=pkt-uUlR#18&x0*FfxB6)ov z=J?spP2KS2vJQEjki>k+ISav<;2{UJkw+{xF4?YTjHl*xtWLDdeGF(0SX5Pp!7QV^ z6HB1yn9dlBaO|zCMiGKY#5uE=a^f@16r3+{g(D7u5F;@KQZhS^QG{WIBYLS0#^pku zFbuZVb`B{kd@;s<%+ex+KnigZ$~bXorb#JAnJBUdB@AJTdRTa1w9+!03+FtAcO*@O zArg}vTUl0FtYUvkqC@g>corYy}SC6Va!`$n2c-*s%W7^SWo>Z+csbnB+dbDk^&73jKvIL~5LgIY4T zZCg}fb-3bN{+)0Amhb$IZ~smprO55gU0%Ayt+Tt_y-s#sw_jfEYku$+CokNFdQDXo z9CFB_cq7N<+gVj_MdTR@)_8nIB8JH{j`~j3yDh(w)J_?_YTcz{D{hjI4i8j8{tAz{&!k~l}iiIUR`wr5elwN3-aBr)e z?%*{KHvaii8ZTns`V;drG_e#H~=1<^wnm4_+@ zmhQ{~jY}(1{je!iypHAlD{R-oiqDYt zbdGS4o0`kgUrq?~{)WN0X z|12~y7cOLvQiEa0xYT8KNc)`dOsF99&zOCG$tdH>d!`jOc|gfl8&lmeZ$jq z*G=41gM;RTf@E64SdA^y^I&9(oRko6VvIS(VLYs~7l-KVe$&KcDKouwoO7rJAY@8z zj20ky){>Ihm`nwGNSAA>+L-Q;$2qNgWpDTZ3lAQuG{~(_Ba0~_3eVEUB&0P#5+}aQXC5ozVIsuJH%VXxYmtT zjTcM%odk#-+P9D*;?(+N0O_GnwC|zq(IVS1rJT5JyNu?x>8s645+p^+3hLT~82wBb z3P=&{_hE;o9w`b~9iqO-P%7e!tbz|yPJ0wrnEgVg zaNrP$COYvoXpsq2o;={;j(+QJ)ziQ7mnnJ5!5vBTQgEkSaQ=z!;=z-j;kF4M{23yp4NglmBMX>N|(R#*AaS4yp)SfqKYOE5J8&K&}RJxjlJDZsWS_il#EzXFS8X! z0`0Kv<#90vAejwYG_r%Z+U~2+LF`S?qeGtSB+J%0v1q7fcHAh)95ZLJw|UE05gf9h z)6M2(n#mbx77xvQ{$iR0#iQ-VUNdPHX_6x9WKVx_YIC4yb0W#;bsh3tzQ{PY6wRJT z#>t0f>yHHC+@c~H5OtYoVSe*=UK;QVqsu7S-X}mbikUn9z2C@#KmXmpDt9N(xWM|T z;~e;@>)!pkUAJFa?L}U!-^cqpw%dEG%KyP_;xmHW{+XZonIC`Co8I)f#6So`PQcpQ z(upS$NE(e8kVWh<*v}3l2RQHW&e>eT!D1!&MNT3I==*4ux|nA?nLr_h!}-MV9mlPw zOIF8;?p|bdEEJ`q>J8L2bXMWFz9mQv@qVP%tQQ-^+>KV5ToIrsg=zs(cs36s?S*yc zqwakyDoLsqW&Y=Aa{G|?>$lo zVTcSNkYY3uLAHOn9J|=to5qwV3M=^T``#!Ln)1Gzc*1)lJb32`!9)!248&mPsj3>9s;0VCGK9e9{DK%GMd@(@ z!_X6BMO{?{=NbBe7!s%V&R8F=Y3hcf!y}v%x~`>dJIX4e1csp`2AfY5MPWrX$wVE# z@bq2JFa(zC1x-~^RyCwVyXjC>>e^y3Az5`jory(O>m@~H@rbr-(KDr}3cl(0{l0IB zA@ZmH%m3?t8Csf$+%13~1x~I1p?)9N)VAyPOSHY~Cs%y&jVHOidWmK8BBg(vLTZ+- zM)WBhZ=i6GFKX@#qe$9Y{BS$u&}L`L0VhK0m0c?=kIioA;tbMe>XxTbC1poVweTul zgl?nUyRSTU2Z}rD%j($FS=lB|$uN0uNfHuEukq zlU>)&!H2fO{j+r0Dua9!fBWP7;oZl$*xhG)ujM7+TVA^Ecdpy(x8M1b zD-O$B++IJ&YV}4|%}e<51?u8?3Vi}kb$i7VeS-5&t+X)-n-)HFp}ce=ByTlFLxz0s z9vE3&2Fc+8VJMX|f!-UrWwC@*2n%PTh(1{CY*{$!#~q*iWa9n>^a7pO^H`QvD>Q5p zt2>V4LO9zg+aMOENP3_I+EWq_$TP~F`D9j4my?`_z&}4+aKYZmLIu(c>dM2YhlG_ zN_(EB5mtu_4vLCHQEKNae0>0}H2={Ukr+tPh!m=k3xtLJb0`I1;du7F1MlBdVC!y@~?2|A;f&W?E=ow@u$SzEFfc%&)eKNFY8 zsASQMo3>*kQ`S}Y)CS4>YHv$iP3CL1jKF09fg5kuY=bd=E{dihi-P=wZ{kw2Y%cUj z)9OMga{|N8gL4^$O|n_QoUEZ~lm|^gp}inRrvR3YpEqKtR7rCY$waouRnsxp_d1F` z_BYz)YbM#>Hkl+;qlqd~p0UKRCw-6N3K7fQ1f#N~1U?E9A{t)J0kq|%d(o;;(@fa3 zKSr7E%JF!|ea?t)%pccmK}tkwphBcY(* zURb(<;~P)2gll2Nb-Ql=BJF3spY_vEaHozu=NzBqJntg$jI7`NYmfk5pgh7=YoJ1l z(w^nilKOL#nG=oPlM+d?z0pL;8ti%Xg0@+#SvvbUfK;U=WxIsb-sk{1$egsY^+UOU zszkd1h8~ej#3&pZ2DBfLs)5BC?FwK(W3T{C;ZUb&u>MCwvSfL=&X!^c9R{SR(ZwMe z1EQVv&jI71s!pOk8~a9**VxCJ6_rJ#tp65=Q9Mwytn$SS(iKhA;cF9`#Q|go;S_Z% zYy{2ywkva@JE9DT8hTt^nTMNb0v0uapIL-dCJ2lm2fyuWa1I{+rN4wy;(1y;Z(BXb zE5Q3cWAFPPWW9QYCsvNPNWq&0o&gr_@HhQtjb|nTa0O@qQIMiU3PrmX-E9$iBcsFs zeT{gBgdR-;8X~IWoFPH5`%!!{(M`9)szpcxjyP4JldVqFd81$ywJmRBzSonGG+V_bCE=0d-}8Ht zI`s6q`UCMS4DJ7g{Aw->69C;plu4Z}5(}%?FqNDGG?!wT+nsWar zRy|fYIJhkoRb+8kbHIWmEitN1TS_5CBL_8WC{~V`9DSwu#?hSzn=(WbSSUhKSV2Iu zGU}eXWSHZ;WG*rmIAkl45f}uIQYEg&E#^Or1{za+!n|G}x49$9=xR2`P?GM+6FytJ z>dZ%Ej7v;(QP`6pRA%JS9Gh|bBAGFE;WXQf=ABIX`p2c|@{W5ac;|_FiP<^r<3zzw zwfGk%v>0t+Q>JZPdc9mO(}^(>qS4jFnXO0&arzu5jzOoTpA zlxBg73RP9ISS;xKo-hQOMMKjp(4=&2$LYgUx~|1}vsLka!*aP~xmr+{73GZ^^h3|? zVwWvrm9vNEELTg`2M0JO^li^D44j>w($yWS^^&9VgxzLKND(Kny=ZCM-io?JSS}Wn zWsT(bmz1bWs0g}A^leXF2Nq2xVX4v%J-gE_+qR`D3Jwkr@w%f6J*!2-V!6P(g05{* zYO1;-CFSdW&)0wR_kQ>H`~~2kf}_d!YG~|#t{uf%aH<3+ zq@eU2Q03*VgPp?ZCW|uG0xb**>m#TKp}$aEX>}m4p2K#l#2{l$9w8`0gx2kg1LFX# z3cqkSF^I+XH7GU=2j;_z54LczNxWk%zq0i36A$=DETzTyQ<6SI(B~<6jobdC zEDk;f>-+R1{)@8>7Z)G7CRtoJzV3S(hQ}%npZ1ii10Fwlj@9BtYWF;~JWJu8AGZH z2Mv@WJPg9-%x8n#`ofSHVz!GbtWQ!W*?m_igK}KLodeT`eC)om8H{@K zfe4!b&#vK#wQ#r)?rw6e6H1KmTCem;3Eujb5~cBwHWs5PDof^n&Q1TT>YV%ZQTcnX z@ZVDCnnb|U*jDup(e?bv`|!8_;Vb;WufG;;{Y!4w!ivw3b{tvUK4x8e4!mbgKzzBz zm22yO)J#4TR>?nF445dvk^z#kxFT7yHl=}-dixsV6#o>@R2?!^MkMnFnh=k&kLT)q zv6`bEbEt!Jd(nh*aw$NdldfVWoEUw{v&n<~-75Ge9fo`gJB}_Ikba{p&;^u8+rq)~x0dyQV+#zYOdstys&q8vY?ndG}d zbe~w7VMUZ#go+UZ8x6nhX7`)uC7YP}ZX2(u%9WIHew$?EeJ~Wfk}Fc}^HZ*@lnK{8 zU8NlSN|wA6-IGb!TcJ;A+R5@GpgP!!>5`kyl@g+{Oew{EBG78N^4}t^@I?B{w@{iT zS>mjMHE!)`^aoaj?fjKzWOlA*_x~PVG8e9dEc}T1t_oR1(V|*GEHZAtM~VYeyzb6& zb-ekxOL<@kuH;b@rg{q2$#clH9msXNZvWiv<-g6UYWb{U%e%{(cM^D##E~4l?eir) zM3W%yz=Q~XX|_DO3y5dHF86(AwV|$uzO#z^QDoTnW`U9WbT^Jc+h~ibDkJ`rH__rY zfh&=ww!ig#o{Mw{4HTu>F7zD?2@M0zd+SF+K#B^f7ie^dFG#^q%u-}af_~%+s#U-H z3XyDx?i^Ar(M5pW1M6pVUR*DGo!Pc>C8A{{l3A1#1(Rb`e5lKa1yOf2SW zgZm@}?a;y_3>FoW0w?8uXia&%an4qgQ$IUo!a)|ZNVa3~i#(<%a`2meJ0j@$U;WGC zc+2WGr`x|tyZrTh>@)4YzxNM0tc4ex@D}fRt12&|JjwA_eYwVfxQ6T%maWIsh!kCC z7BZo?c|={bP|nd>T_fwP9h4CS;lb^7w@ZfQ~sSyEu9)pWdP=35m!^c&4 z{^x$~=YQ(O7vJzM?;Tbn5*WIkI3}R8okQ}Lh;|vG=L(0f3t}?D-N}^6zMOT-~%izTaCE$f2yL5ZtDUE=8GG7H68Tnl}drZrBrg2iEhYQfe8 zn`a<|Rt;5N8oJzP6 zV2b02Tt_<)0!TnYwxB5LKHK zUO8@~H%Jy7GSM=UY8G<1NhC7Hm#mmUC-H;Xj6|Gs6ymd>b-%8TDH8jLcb=jsDe{;X zQ#ARkm|cbUMHW%)k=f(9QcXB#!o-y68{YdY8cLL7nM}@Q}XmC+bGu542s2bC~T&CRQa)^nH&2MN#6*f~Kq~ zk19gw>ARK`;o@RLQF_+vH6RRe$N~$CP1IGz!O>xMD@_!>;$m~bcGKa#9bZ*?`m#WP zq3=oFm@~L=jUR(CSa>&BnVj*`>e~8mV;E;vH_dL#5f{7k(IOvj+Dq(v7XItg$47NR_i!3^G zpsiJq4@KhMYqnfSTZ=!Zer6RF%|^p8KA^oVO}Zr%Pe5G@ZG>H??CvMdHo~pPVR1`{ zt#EOsG{=yFaC!=x0{XkkW1`%AOt^Qdbg#lGim!zmN3hOdzrM4?CEf&it`^p}peluS z2ir46D-$bHJBC*I#3yHi#+I>Oi`~|e&c1}`gicMoL1)`e&W=rdUKZ_)q_e06txcS9 z(Fz}VpxjsqcWwxqt$kMQU>hu}al94|Dy55NJ@VqAe4ckud*!Dd=s#k`6I5~m?u`_@ zhH!?aL|?tkZuxhB4_-e2pTX^q{n!x?9($I>!EFx8C53yOrF#KaJWV0Dk#zjF8}h~5 z&g^&sX0^daIXDp>JG6NHYqj#=!k*(cL0vjqdv}U2gyk`uok6%zD}t!3575@c#E9BG z?}e&?@<1pH{asg^I0R}P8;o^R7Nt4AHV)J*6`}rs$78+3{C=5N;$2g;2 z4TVruX4C4t(dce1p+q?A;NsNsRen7RYhk%mmI?=@aI&z^J-vYKE{FA;@QG7pJHXQe z9IxQGQO*XlUm6CbZW!Q04IAdmiVj|NdS1|Dx0g z2dH?Q9Me0`a&^F0e(BHih1-|;$mW#qzI|Ob3^vBEnUh4JOah zSt;!02#3lH^)^$KjES#I;?S#+7xYR*W`F)4L4@e+`ZJO#_GAm0Tw-R`G_pUQQ5<0V znfDo)s%>=KPt7C@ay2E%gbZVqu;fuX#*AQ3`Fb09Wp6VwT8HF}nYx@qnOlA6o+#l8 zaOHSpIWLw^Ov-Xg@A9BOqen=}IJ-DHo9wT*rv14{I$d^|Xx*l&-d7AIB#WSo!l9FQ zuc}V&BWCxJ6MgfjRI<;OWY@u$1^xJZ&93L@-ZF`MRIL(S1pL}CSW~1cUAp1tLJL$s zwMVe330|fhbD6>s?0O|2wupNS@hdcLA#TxlhPV~DB@_$9FOUT!!N-o3bKE)obDSN0 z!?n2Lx?Q(_o^~J{vEZ$xm=3eXxE7Uszur2NQdEXLFRIGLk?vix62Jnr%b4u+>b=DCe>HOtxQ0X3M5( z+bhZ}^f22H@iL8pD!IyE6p7<_;9&h5zlPKQ$6pl3=T#@L`)~Q-#aDmkRP^8fI~=V` z-iq)x?|Gvpp4Y@v()@}qWoYf%da?5>f|L$oi}n{lk7zXOnc!_fACpBF6ifK0e9aw5 zvgd&!`)mb^9%zcwgi%H`dQzaZ`9o1-Jn*GEinb=ZO=Gl)Uancz{ zY808u3~n4m zYpz*%z+ST}**Y`DXu^!R|NNLD#SozIS^N*IZm|h)F4u?W>7Wlo%o^N?8_EzGSsp z()UO7-C%Blg`Kaq>xd5%hlh&Fg1#R}Y0YZ2z&l6LEcoC2Ti^V<|MdUm|NLDJ-q|xe zS$m#+y5J|8j*nbhf?T)%S=xL4#tFr$<^!9KH$3in_VF7$fAB^Q>UXekFHpG?JO?

^Uz%7L6 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⪻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

5&`f3+&h(v` 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

  • 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 z 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�s1@8dd6aDgrxkcyV}Vf`l*%6r96h!i%hl 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

    +6-Y|#@X1>tT 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 z%0D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

    -+i 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

    I2`Pr{Zczs&I)m^K5y^Rhe7bPJds|7e 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≪8jjK?_pF`fi=63FE9 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�M>wB>qZQh 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≪ECmzRXrmh(DrTz}n)NM=OyMfQ>O?B> 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 z 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ν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%0DoRGIGliQ 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 z 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 diff --git a/docs/hero/photos/characters.png b/docs/hero/photos/characters.png deleted file mode 100644 index 21f19d37185ccd8396274b35abe943f6479e867b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671904 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

    O0Tr=B>_mUDj!ae6k+fxJJiJ0xw6 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 @ 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 ab$#zBp@V_!6j48@_uliM-)A5vTq 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
    sdz1)8|GLO0L(w~bAmkTcLm9x^2zrZY@Z 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%0AfC9dJ_UXl+S5ICZvcKMLV9=Z^ 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%0As5-E38HjFtY>tHr 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≶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�y%B!&}|*NYgIo*?q(?FIWYlsu8}Yq^GWvW0cqSy>h60(w3dS4?fM z!_s{y9C3B;Fw&SqLQ^{l_(4*ql81}kWZX&>dJ)iMK!&F^$BcoCCxK3?n-BcU!;#Ey z(v|16)MiNc56F~Yk5+eOd>>x)cMGpgVXJNx)x?U^)Nqp`=pX0E+$V z;V1p$M^JTK6+Qm52)x{ZN@DK@9WE&6oQp2fWC4}0vwl*Hg3J${QTxj zbI5!ur`@|mKdHytI+RHjb+TQ?4Wb5+hP=i6 zl@LczAdHPLw(dcj^0u(_&@!F?mIHI{!~#>0oTnjI4A2I^R$Ydt2;{~=Od0~IXC4lp zL7`&ZL1~Ls2*_kCDvu62gpxVHB-a%%2^HZQ%uKO>zH#!p@U<$Q^&mn$BF+3W<5KZ> zY~v+il*7aSSo!Z&#pBDKaSl~X(X*1mM2M0AQ%x;vTb7G!M%Dl%q)O!ie20lWE{n!D-^=gb+}k8e0`v3Vudt zhLbImqkD)5$0OjGd;=265uy_Dm5w=o0nQi&Kv2P)7?_Osrc?t23a;gY-ueq0&B0~E zLC8>E1eOxSFGk?@Es~0w%w5zr(6z+UJ!@jK7}J|ANk4UD&K#&#buE)!p~sp!c-e6= zpv$4r)PJ^p=-#B3Ydp-jsW^bBg_Z z3R5=VFlXETUUL7NsD0(Lb&*0_8zaDkxc|8^GU)PRTzN*oWWk|tE3HS@+b8Y6F%r9g z-4*k{6Mnntt@nQAZg51;bAJulF8(J9_NLU%ToHX0x51&bK@( zTC00mw;S7*WyZ&bEq>-Fwc4+yzVV7HIqQt)=hAT|1#o^*7FdqPMa=q2Y0v+$Uq67u zOf{A+Pri((L^PnQk(m+3$7AU}8Phw^A8i`Lhj<=P%ZSRl#19;qy0}N& zz5z>df<+VKR_*{(r_WOJ1#!QyF?C)Zqit0tj^yv&RT=g!$F<2uY`{FU{rBf|701wW zcWacKOsn*))e%>E6^~&vDn`+>5wixFj4T7KYTr}zM4i<8lbhCk;bUhivbg%TtXtGM3uDfw>!ZJj`evxICMf7N-^^}1g*X0onl%(?jkJhB&h74F(g)oMU*cgHED z0e;$PWvGL>B8C~I1SLfsY-+M^MIwh!beHtTF4SFdzD(mw!hQGvX7&5`NpEZK?i^O_ zydE+}Lc=8aFgaM)00k3>Md(vAkL|%D^Qn7!rZm2;2!nkNW;Y0#DWKsV)oukAEK&X( z59&)MG8_m9a1n*)6280s@o4jn|586)s7v~0pKgTtIWcz-s`a1TVOr?jl=Rl?Qnvls z<*q+dukI@BM#!ilfte(k`!Mx`r+Pp2_1TW~-fq$f3YHmaWJQTCS@nMzb@1NYp-67q zV>YWPC9HDI!gu#fcqf6ol$+rNRS)XPV$YgBr~cd4Rj?FFUM0af^Z^<)*S=Vt`-&~6 zI|^braCrwE*{RS#p@gOg&}~D=3V7@`EWm_HvI}2dW;9pi6J1d4-?4VLEb92vk2L`YCnFN$>4x$WcZ7hdb{b1}gUB_i^>xeBH1b%Kp_f>C#A)h6Ae$SpLMn>U7^4+f zFlB!L(~ww+4*++L@SAluqq;c^eV0$$h?Rc3&lc2|nQ+IR4!5W5yZ7Uru+dSPZ)zFk zOP=A}#sZE#$72g!HgklNKrv-%?Bh95f*x^}6!~o-cg~h~`I?atV{kMk-7Tvn+0B<+ z0zwHsih+j>HVpcR_w97T$CQ1ZB6c+$BdJdICn<^?siVBxG7A_{Q}MdN{i%RJ24^&H ztU{F4qIzjG2f^s{E7~$c3GdWdu(Pt%qEYEB z6-6=kUfyu1KHJTJRs6L~dT)*dvzV@aQYUUZ$dci|qJt4KFc^j~L?uk|I&J^;qyN=^ z{^^I+Z{D2mJs5CNe}CeGGVyZj!oNFXFV=^~_RjQ;+HMO!Q!vGP)8Y1gR8P&-D&Mnq z`QC9Mdu|3_zM{T9^_msAE$*O2{cZHs^e%tG_*lAz_4VZ;`&*W)5m`}DmS^yL&Nt!D z_wBL@3cF5`!tVU)-Fipl+Q<9NlQnVT{wSlUz>$p-($QK37afmdsQ(_4piyx zx3a=Fv{>&SG%F^^b(-rl05SIwtKEN3mG`N=6CKM`8U+-znR5>b>_zLDcE~LT>m4`8 zYa(?=a;$Qs0VAdDekvV{>ZwMpH3R463Io06&ie*bH7lNgZ?cin-|^Uy#(7U=EV0Ec zXCt&gmNb$7w z;^YScxQA`g*S5PBjoS{Nc%Ak%%$WMh8YDAaaYZp47Ti^92TpCNqESnx5O}pCQ6rB| z$l`){ZNHi-?NlTwV#^HbE!SDA2r!sZ#41Qmq4`F6C_7i0m8-Bhy4EYNQ93G8xcOWo z?#}3^#OKz?>JYalEq#QgIhqEu9X3u}GvqJ7O*Vh;|HJ$e{gUa9d-pbmb-RxPDB+oS z4&V-wl>JByFi!pi4ovvhg;Kq#-@h8HwUzJux9SC7kB{gf=%Kh-P)uJ zBeEi;tKj9U;@_^1J=vRdtbvFR^5<>~y*uLP0vl2qnOJo(?5(zthEesZVaYnle+Vw? zYndJZsKsa`efkVM8)Qd7+@>FCsqe()!UhmKQ5cw91HTv+Umm4Up-@<&8Cadcz%$7t zcP)KIEhKY9AvCE7)<92Iv@<|{z!9M2=0J!g1$7PMAt^9GZjEA|#yO*i?wOj>EiW%b zHZNp^0({12JKMK^+e{QCQMa1(efvD=!Ni$Y_s8G)R4=6;&D?)cau#E3Y`!j{@UvQH zGq4?9tbhQBS*xXaP=Z2vLjHzlASYP?3^z>*%|K>6RJB0{Mym0=np-eD%%zhJ%jS{u zU929NOx9?S$hD3cRG2Mn&TXgYQv@Dcp?e9g^jBp@Y>#?;tTyvxF;dlj4zuO9@u#=6 zy&&AX{q6gI4yV@b344!8yVc>bgK4@xxo^p#Ftc_>lym%%|1HXr+@fXLX^Rd*qOR4* zK)Q^-8TMGhoG(8Dk8a{ZVNvUn4U^n{Vroh*1>AJ# zN=rca)B}H${Ui=lfrWD<{i%aU0cr#0Q!t?H%m7Q3@U3U8rwA39i0OYDIEVKb?;LtQ z=>@?vIUZTC;F=xhQOmKdtH_@|8x z62M`B0WUNdcAr!2aF!t?RY$A5!PP;v}H1GWJWS!$v4VF(%ERHFfh-EupCRCj`*7LWvy0d5n< zF|hf(NgSF;vJXCfAbaBKE|$xgP^0XaYwOXH!wVl5pFSEpZPo4Gap%VD=UpqYwy{s- zg?o4(fX1xPzPVL9K}StrN*}^6+^)5FBH;IZ_mec~T}7GTjoajNp64N6S39=+R?*|` zo71Hs+kOwaQQ+kZuC{qNw&L_K#1$KBpzzgs+_?O!cBk7{x2BnVE_ZC%y^D6eEn|xg zJleIZ%bc3_C~CJaS8cVB=tgeV)znYyp%9kFPYe#XAF^c3AsKh(9{^?D>XIK=<>&4E|Mzt?7p49!+2*%fJ}`hBDl zidMUATR>E*)yM9tdz^vIR+}ARu@^^Yq${Oxh1G!>nrYWApnBv3c69jV%BTa*Jwmt2 z`{wz)xC^v}7xiW5#a4~`XI#(xvd(A-{w~I=u2{J z?XCJEtRP|~n%h%|D%Tj|8C2nk!bCnCTc@wJ&|qiuehv0~Tfn7oPm4dG#{t6{#P|Op zBEVcbMF*MBDTbMAR7?z~U_a}C&s6}P4)9ZV&%vZpCQ&z1yydg`+y8r#{@}^djjE6G zn)yBP`*gH(I5_d`AJw)$&9+EXyjN>eUB=U1*1%{n zbveDVR5)FE)=$y9!MCsFR6?3lDD;uAldwbH$Hk?Tpoz8+QwitUUC4+=c5#OH{1uFXR%IQ3~MlUZ6A^ITFQQ0EeUB21H zat{Hfg1R#cd7e4W@BcqoDM;l~U=aV~&JOoWP#=?<7hCJSYZH9-I zxbZCbSa!)q1lo9vI)^fuN-*ZIF>IXRso+rL#lC9i)18WVOoNham6-#Grs5UZ`Nk5R zAh8ayATu73@8{Vh?bH_I`-a){xfr*>Uf{HvYY<601Cx6nCq57-hY8E$%6EU-u5!+n zd;Ob-<`QroThFgmOhY+Hw)D;+9z zIi31`BdSHzA9gX_Dr@a-UPer`%js+OfgOj^*jF@(rJrn%8J)IVUTZ&d!MdYwc4pB% z88>C%a&T^`TPk&aIGNh^cJO>)kCk@Y$epCg7Ww@qg1_^dBaNRTjVi5lj6(wro~D9x zvG(IB#`G(JPpN823$Ne5+>Qm^a^vuPcOjXJf{oTHJKYtDYDAfrTPYUlidP3tOwt1A z2>R3fPH9c!vjA-a*OXk0%hUGCZL0})iZ0s>G|M(dF8FaY?h~&FoUs0+(IL0ae=HVEkk06qo~NaMe*xaD_& zwVpSoz>W4l{n?%#AV=(kILxG%S${mg!2Wx(E@1!@)e8MHIA-CZ8;ku?kkM4k`P zdA+&2&1+SSDkogFBKHU${GXZTP{$* z<%7t!B4Uj!6z+tB-Hc(%hfz94`V!Ty#aBC%u0DN;KfS~Mb%~CSqW}0GMswtAcY7xi zXLejZYX0y1P)RV((Qj>Ru)Thubb3znVnhZr6WwAvf`He+JccDmft3!@5H0FQlynh8 zHB+!l{wT8sL6=$+ja;txAEKHOptCes7kg@D+X?eINxZYN0)UEXj%;x8-{57=q*5fz z-5gBkZ#0)TTjSG{VvCM!`F`nn^tlCo*u8Uaylmz!eZE_)ff3yqx+Xq+ac)c=2uuBZ>?W3b$GVo5I;hp_CJA$4|>8knLvP~ ziNV)fBJznb^1@sNq6&^C%4;2mGI6PJ`m_Q9+)^$=ZAqmz6tzHvQY_520E&ieEg?-R zMspt>n&er!MLTmPot7Z*#9(qV&1Afw(s+Y+_nD3|Z4Zdf#xB+Bui$k*8$7x&KUZ?3 z{Rw$uEnr#~1Cllf_;BPP`y5*Ty*W#wfxpWq{~`Js-3C|zuqy8G&H6Qc=nn_!t}&$Y z7#Mf+09mLAq_{CC@|z6p%!Bw3~jW=kEgO&jv=#uyv-C%{8e>yzqa>{p$cz(+n z{sW7=u_Wmfik!){ur=CtU~>JI-pW!0yMB8a6dI1UGyx+oiv#SbD6k_TB{M=R*K3tX7i|;>dEvo;e!6bY-O_)PD75T_3ky(CWM9>KW|l zh2%@{J6aK3(n27r+vY~CVEldHy2+=udm4hVO=~@_-ks7?0nuab*wt+UF9CmsKf5M1 zUS7JRtj>4Y9d17MVLq&S=YDpTGvFFy%ns(t-AI#)HS@b2j~(!LrW7+`=nc|xpUl8cJBP67)B^;lIXI%9NSo8;cWEz8@0hw6>o|>nQjTpP zvphQ}t&UdyMAwI1*HS+4t8U(qSd%mHfh_HrL&_lU9XyFc;TX&7d7u8FcIQza?X(4? z+`I8=!|5g^MUZIkls&WZjqSh2e$P9v{ZS5M%3w(<%e!Z@uy@a0`x%CnDf@~2L}TdNCB*DnE3*bTvwkI2jC?4i-} zm-*T;&#FZa4U)cGWvdg7i`m63oSdjkfKf80+vteBe5`;Dj*5F&szY1Q_V zo>EO^E=zG)4`2tgVY^dgvIDQXUn&Wb&VKygTrF`g^ID|Tuzk_-@jG zji{3K8(T}6T6Nd6>jE@=vj?o%biJ-t)=NS zsC8ILl{##3^^z#_JZ}K~kV-bhEeS>i!Y2wW zh#_E>$4dEZsk@GMN?gA2OV}(s{Ds8T@cvPe`;PQe$A)8LbVI54+E!{)8L4HL>Mu^} z%@+o?j`X$YQ8w)7$(~w`hxVPbcfH!EqnLZ4c%AL;9F*ZvWW_HwZp-T*)m9lLA1C!y__{6$P|~d&Xq29xK}cBQW!0bz zL5Z!@5=Q7#P>%2xRA>;XR)|9$92 zZ=n|*`&1Bwo7zTsDnn|&jyqxh()8Fd!WlzNE_jh|VaWh!RUfGKI1&!)E)}4$59Ms> zwuF$b+`&zv%bxb;p1G^%=4Rtd9e)1&{?ZAX3Xr?0Q7L1~z7R*LHY%e7*5|gFPK0jQ zgBf;xx>fwHz0am6KF%i+$_&gBrmo!)EoK%r#n}DdlA5h|$#-;5n>Qz5Z_2ehG1at_ z*D8gc=zu$uct@%Y%bhERCE==OQ<-w-2rjT z4Fv^WgiiL68kgOU)GKC|gY1r?Q7LapHPhllDkN9wsvuE>4<^dzz~wOE4r-w;l(*R( zaFK9_GM+oW{;EMUGa{4Dk8jYO_40a->kPc)cQNLGf0hzoEvmN&E$OOUTlIWlJzF`K zTAtY&8RMy_D#GD-66Kh4@z8vrG4`h4?xP193DT^lToh}*T_udOYrN%(^=Erq0U_j- z;qvRugj}4YWRpz};LDX3O~d*Z`*a13%c?tQQ+CBLV2$fn2KCe)oUKGQm0LfH=zhBK zEIIZi@$4G1N&f2gG3#w^9iQX3TEV7Y1^S*mn$nsl&=p3iNhd(8duK-V-le77R)*n4 z%O>-~;yzK&>+VL@whP@qgbSBUtm1M5FIu@3)ivHPV=C6}4i@x&`n>vk8+xSh%W>?k z<|ZjwsGVt9+;3OrrB@~Jc-A;WYhxBH{n8nHGGP7PNLf=oi1hjOfnEwYXRN7D<-6*@Ybva?}7qC*LDfrrXde zDVmnV;M=~Im`)m^!4)EBNe{dP^11{YS>!1ya!wMnZG=r=QeSYCEn1Fs;?!dboD63M zW=kSG`|Hp%qC6dpp)qi|yGD)7oePtbNsfagklE3qqI8v(W<-n`AQYLEHwkyL0k_Ks zOQjmA4)lE2btSB?si3XkxJkPIXekhGBml|bz7lnLj&6Or)-nCVPj245a!9zi44aA7d8er*Y6_;ovWS`+&v zMb1D3uB?z~>P}^K)jDP=tTm-t3je_(SI!cKIf%*(P!Ynr#b&`v?+^cVV!rQw*T}z1 zPhLwc{73ny{flGYms!mwc|w(1S#`+m=Np+oJbF6$1*Y#-m>B4DV3 zE~Z`%AYf2oBuFW{{aY^h*!i(001`cqNC9}u;rF4C!cul^5DE6s9l(Sf3sic+fC?XG zki9wh(~XzEy#0lFVf8I-OPayxrM(yY-)z75@x-&VLBIQz_ePfdGPm$5rOSSCuU3wF z=9M?{FxRRba_BFvC;VQfDLGhM95JR@>A;=;>8Hm&%fB0qriJ*IVND3WS_~2)!vjIC zHs5l@m;}|2mL?459P!eooiwU2cP*YP_s!dID9qoC{b&yAb?&gTpqv_E3_Fg`Mvaf&@!0|I_YP~#9$4-^rCc=65{_xlfVsEf_tvuapKm)FtHLY)j#@Eh}|gG|p} z$P=a^)K*FTV*~^}NtRR-Vg5q1!`*M5o)_)y%@fDy!1EjMqpbMY;PP}jC&3G)5^dEK zhnqGS)&!Vns3*pWx@6Vh_qoRXQ;j>KEw)_J2RsH7F zhDRCOKLzZ&mNR}~t@2&*x##yz8?M+kzCQf+^7yc$&vmZ$J?$y`yjK@~B0FEM<GGUNAt;^5-b5hjRug;9+x*KkQmm49e z`9UmqBF5YMP^)H|!XFrY8YOGk3Tgv>rP}JEnyh*iWyNR+hz}2Is3D-wPFZyMW-#<= z<(W+ldX+7H=!32`Ui7S$wPLcaCdm*ce0}-H2fyCkl{jVjC8HnY9I$}@D@pq9kN+&M z%c&Y{q#TR-BLnzMfno}=gc$cOVW|+7>>^&z#Chh&w~b)Bm@#qg+jrTT%@i78@w1TN>@&&1xLxI zHQX_4angva`?+EvNKmfjgLA-3dv1B~Se;l*oA-t=O7P#cy%O7$FWU@zzL2~?uAgl0(Y4(;zn zqw(?*_M?n`=RstHhg*|#6Zq#|>OLTjn612(+tn3vvO2Z%?X%+9+Pa&ESH`;H$%TIH zi+36naW01%6N_S9zF+XYH`pHjZ9TGanznI2%}be1Mdrsl_0lW)Dv^X^e&uuHA?6k3L|#L2m734uyoMItN0Q$`B8?*`ihU0Ze=56i6Ll~SfZ$g zv+l)80a;m{>!>MWXA*d13(m;4*s{U+25rBv60D@eSr1?1oY^w3DZZldT!zn7nEs_? z+R1Y{y1L;^VKp-pYaLXQ*BR~SbA@W?j1y3*T??Ob^1M9zG~v-2D|7D_gYWCUH*A1h zi74~laeJ}2&vCHLhi?%Pvr9W36v^Wbw^8!L&t;P0Mt8Lq|JI+`9kotG^%ECz9 zhn}z-#VUrTYn=J^_p@(G!Yj?GdRdHkVufEso zyoN^0wUw%Pp)0a#5>cI=Vnqz<2;lH6imRs{qOv#*76dcOy_c;%AFYaFCdysWatlqo zUJM06?@}_z3Z48xJR4_5(II7gD{PvD8g{aX-Ije`gt^kgas%sY=iDcx3m+)H!&>3t z+SAo9YHFf__z82i+tl~()@7v(BFCtQR65HZ?mBgb4gs%xsbze>GT}9CO^Gwq|U78XBWcu3G-8oKJ)GG25$!c%iH3N(IJaG zH-=|ou624|OWvg&0ZlRU^9EiA!6Io%-|nDQ{^Jeip^2`Sa7KppvPXo=W-LeD%17^; zBxn^a3Dm|BW0Q1z+u^CEkFoc8guWuaT`Qdb2}DS%U%dLVj)_mU03Db?w4 zQe^Dy>dLt>39{K!o4kYH$m8V()-AROEP7hfMHXA;QTh?VYp?21x&-noX}oA(ID?Yc zFVo;Rks=bs-cESCXEiM#0F9ejQFds5dt=YhOQ*;OLN!Lm97?dTU2+e&;7(&~CAfQ@i;+SY{^DBr7bmo9Wr%pxC$tPKz zmLW209J!ghWZUqFeiRy}3!p>Ja~xX)7NVjQ+MtK$6HNn@NUMHG8!2e%B$si28|aj% zLiQCdVl*b4nrtFRI&Z0oT3d7&v7O&a-iCa78|C(Ukmt$Xk?X7=rpXqK1(7^+N;`12 zrqZ%Yi6vCB(O#9;;bEf{3q@%EffJ% zblgD@Wb258-pS9 zNuA3Z>?7}gE#+qT+_*FuwQJw{ll7;rUayY?PHNg=c4;}ij6FY^G--MMzO?J_nyQID zQ{Pt$4_g^P*)4p^ zel}#=9(RHJq^#!QN5xb-OTU?!TUmrs98d)kC{JqvT);}Dl+vo1L+lu?Kz81i52NBV zv$P_{i2|Rk#eVN9Vh`(&3=RYc|@iI_}9b2G+Ru6^9YRR9X>p4a{h#b`tF4_ zy_hUyo&EN}!6O9;w?p4Sk22z>KR@hGlit}CnA($5mmS~T7aGmd8lUp6y%%+Nl&i*r ztv%X2tp#A~Iy@UT9M}=U%gS?c@Ve>5DmuSs58-uU-zVFje_-y7xA8BBXT`@xFNRkf z`hq`mJNDgx))k|oyjVFklc~k6eDyKHoP?u@9^jJq#!p&jZJ)VrsZV+xCiCk2MYw&p z>EH*eR)t3K9AOCOWEh2*5sKp2gNM( z#T?6lG20}r2g!8Q`E>*2;dr%CaeuxNXV#6zQ3h2cSw;}vYb>TyhtI4!-rEl&x{|$; zGwWtOcT+H(9!y`qWI%VO!8nsHPJAhJ0OM4c78gsnM5+I zN{NrR{DjfCztSj_8D#}-XcZ}P`gIsW54f{Wjl_tbAd!je&@=cNg?Zn)bZOd1N4$Jz zydyLv3!c^eh-#?i)*B@^rF21cEjFW!l->gVgNfX^7>?SaJ2YI!kzIFneypLy`^8Y#xx`DvJ*$^6~9!kkxBQXj}sdCh-31;l2)}>y+pr;KWb%A$oN;jggJVE8LoO{U% zf{jWnR$COu+!n!b^L5rQBja?Qu$q!87keG;Dofq(jkI61X2JNDns^0VH$Q0N&Wm-+ zDwoa9ZbI5t3wDn9z2@p_V`^96N&iNpxrT+}Wl>*w=`E?e+p@4#vUqf^|3ukf@m~S- zQe*uXt|Sos!`tXCT+G4?R9Ty#pu=5z(34>1)zgTzB`Zv>APA(btb$-S)o05-L9?U0 zgE6oNMb$?X>7}EEo(vf-11qyMLov7!DeE~M^t?_D>}{!c503#ADNs+TnKd~t+6%;9 zzN)lG-!>bKsspdsG?ilUrGbiw+3*w61g(k2Qo%voNGslix{CJgd$v)kDN=N>`?^Xs zQ*mDT9ft$|d{du(*KB)Kq&Fmk0oWK-er=L{7tjW$bm5S^z!E}Xkr+JCPb7T@zJmO! z^y^={yS_}F)CC*k$MiG+gW5QE0$5wB{#676#+Iu;!>EuUZ6sv=Oj%k^FaGk>PqFCoaD)Cgc%zxYqS@@ znAV+}k9vDOH~0^c^$d?1M;xr+NMI#phg%&-jsOMdxMCBbl!OX!a4hI%LRa-&Llv4R zIYxqQa3#Q%4jd~^jtmY5pf63lK|alKTEj!aGA6cxm1-PU>ZtckKQ5TX(!hA|{a87p z)6vF;jCj_odhP78!;* zy@fuFd7KB*(?lBGnTr)bYBaH6WKGlrd#qJOL%=kpWP_0XY=YGh4p-Jsf)<&TQG-4+ z#i3zzpP2KzD$i-edp&SCoNr^+asJea(8|L{Cz4b4mhWCzq~*Bp+%G9~aH1bOymr=Yqa80>&`3JT56 z*`<{a80f&Aj`Ew%=LPEapZ=s+uiJvo6zRfXEMEoA2McIKaB58^?JTWmKq6Sng|qbF zFl?RiiPDJ21O6xorbPZ2Vc{dD@BeW;ABZ_?WT2%0r(^2|5heOCZ-hq;XUk6E^I8UJ z8KvBV`RO+9uK#AyB9as;HRLV{*n_enuz9X6!w@47C}lhl+H0U8AS{uld<;TPTR1kk*FL}5}KNHHoI*0<#puph_5KkCFW?$Vu zU$-}@fBdK7`Oq&Ocu3*~$3Osj&>tKMfoc`D6#$Mv$@)GL><}|S;~6V#YArbFa{R$h zzu#=W8F_xpcOn#jM|#Xl9eDdruFl`<**>c?ZM^#%g#~kYuJNhA(Zwf4N1U^!er3Lm zSl}LdJzP#%trW(Iq7yH^|MSz-zS6jZ+zGeSqHRv7jDWKlF~F8G&eLoTe4ku4F%Co^ zrcDfre^q^7{Qu+VJj0sI*0!C55E7b62pEd&5JD9+gb)GI384iDNEbqx0HK9|bQQ-v zA%qr+p-LZm2k8oyO%bFjz3Pk=5k+Tg^N#b*e!t~+_|N+1@p3yp&2L)YBuqjA#F`gh`m*%f!i= zG^epirY+jIjItn?wT633sOlWt!Ig;NGVv1Qpk%%@U|!>hQi6j*w zK^Vzm`89f`@?0=WlmT>JOmfoFv@Re4R5P?POl`DgW|>=W;C4CX{D_@e$~&6tG>O99 zq0w86sh6F|sEQQzto9){m(Idz-?EsK6&pN}x-uvA$CCYdXFe+8TJ2oz2T$ zy7T9<*efZaAeJ`saDC>PW!@;y5!&G~`I6^y9v5P9$!VDO{C`wdw+av*m5X4m(3%Z5 z8)ZJ}(m1`>D0ShB$p>nFo};no3Cp$ei@fpm&foLYO0ZRO)v-!u`%<$NwqzYZRdV$soE=7YK8EnMwWA-irA{a}jUyX0R{q?8!-G#yRo zwI;leK!cMMG5C`eAK>4lB_L5psGSvn$VcK2S~x^6!-6$(r(EXZ&_A~mM%0IK7WtFB zA+;9Sfy>5r^()CAZ}BG$%W)~rQuYZ=SyIXCRu$2<*% z*|@yu$41T^8;asR>ZLPF_AvfvMdqxOPnn;YjPpR@S$F~Ie9_1yV=@om>Y_ZhRt7mZXFQm;GV=|4rk7i?CrC(2$HPSiIzTRoY&JwFgr`g%s+AY4F zwZLkn8oV3(ST62$VMMSEg^*T0Ov(b*)+mZ$lI_*3^}WVWXrh8XSIVF=al&Ahwpb!7 zn6ZT+IZ6H<^%`;PG^IG8j%G|dDtbs3W8D1cPsQWIV+vARMTSF9=@S_=OBeY2nWl28 zt1LofBA<8k?j7w@e>UvG$OLjf1Wx0C^FK(4g3mm7I{ks}6apM;<*&6kXWrL7x$?iw zldVQsS6bhY6U$p1g$56zc7D*fnELJEcE4)I?d+Y+mFvOP8=dXV=kuC#ZDY6^l|YKI z7!sOzZ)E#C$LqXTbf57^`9Adr_rLvq4v8?SimEOPb?&W_4m`TLwnN5ujIwjX`-a?s z@rS4D1kSrEb`}Pvt+pjdt%QDSOq2gS-@tZy+&X%8&)(MB_vwN@EY!KbyFv1#ML%rV z@5x$AdziC2-1W4mi>0IwPS%G>at&o6A_W2E7{0KcK%OoiOhbmLNxWcs#x)5j`Nd(@ zRxR%HfPPIw`SX>|U!sS&+qWN@DX`L83>=DY!5w<4N1NytbGWD=$WT0om9O*=NWghA1`}L^_q$47JT-gv{G6 zx}rmtTczQUeG6uo$qp%5v={+v0n-!R!Gl)(p)#6@>n#hn9fEo*Tf1r(uDdGx=-Z0g zTbHMjVaKs3 zKItH0;0w9ir?EADxUG4utYXpKmRC-Z4b)r7)W?(S%2ai}_4xN7T6Mza;|cDka*<(D zp2DaQ-rB@Zm5IISqGbF4iooFRXx3FJIi!tZX~KoX>Et z+97x~Fo()|rj6P#$^6h^BOTtG>aCoaDCW7SqskEtndQ3IS1L#eYMBNOn4yQ0npw$> z+jP??L{pm?aXM;*fAK^2FQY&FC$#mnvR9}&mkz%91sVo*)0$E%SOAN78XdBfYjHgX zo@e)*Xb1_$dcYw{R5D(MgM}OPL;}(dauNvz>-69b^5=#u+2g(X;aae=OCpyxbcpU= zqT&@r#B@;5C9}}~tUU6)uW}1}$3@#Ff6fNm)cAEg+&^9E zM++xv6(e;+i>KXe6-e@k7s(-Q1T-^=5X#gJHX%_0-NK-pVABcsF}yrost&4aE0fki z&I>obc+1HYFMkW#Fb1FJMxj--<@4K3a2wJ8>hjff&<;!RPe{6P@y|ibTzbl%za>?9 zKFND?FR}81TS}XM(gUl9vy5)r2ld-sNphnT!;$~PNNDNR_UVOLpEsvDw8+|KWXkMA z@EnSQyq3yRj)kIrFU@-fl8EP^inp;SXy!N)o7z4}&u~0TNmE(k2uf?(8pLT-)G;JP zwF(Cn5<&Z)&p{~b2IK3WVJ4d1WI(i$pxUo(l4adRum-twCaLMuOdqHcrTbPQf;|Y3 zJPx2NA(SnHebbBFaY!Z-$7q|>X8HK8W2rv*yJi17Wp^gB@TBKZ8(^>M+*d}>xArV5 z<^hf!+?0YF)d{PkjsfAl3Se|aKMD^bfWlg01&9=bojdqt)Iu1@8UrWgYX|I~1NjU8 zh|mb|N(HVdD9}$mw}3*tu_w#&g_Ta#zkeHWTm7z_4xX|h0@{YO*gFBogCB5vfn;x^BofI8f#E{-z6quAT9!_)7%hirHwU6Tl_|Z*%A}8(5 zJO{NC-+l-EK=IaQ-0-nLt{EA+F7(N!A2Vr0rb(L~%xxR`Xm9ZKcl{YtM!B zt*<}d!@6e$tNAP^W1909+dg}{SaA6dhX&mAE&q!9ea9|vc-B{EV&lI>uO#AqZ3pUy zea6)rYF>Et#jXvN9n0}O*R`wvQV7yp#2MH+duX;UsdH}SOqit_5?$gHb zWCWZ*pTR>xU|IXUUQUE5XN=<*5F8BF7Leyq@c#e_vd}lxm3f`i-Mw&=T+3Be*ah0_CGMJ#UQ2%og5B<;++Rk zaky&T!bsFpE}l8RrBu;mjimGy>N_G9dFeXr21YjWrlZQ+@y^n$v_2DgR&nNRchpdL z_0|tuGZTe(|BCMweGaI!-(jK@uj}@`0lnY9s?}^ zFhW~tzPz>ZN`S>Joo!^j&{J!-N#_MY&mSkJL@0#9+@|Uwwv`^)1U;i&2&Ty$ou(!F zy&UKz-B8qJRyT7P0#_u?G!GPNQ}F3V1O*~QN`Gt+>M~d;|F{btNAxR_VQU*Ifh&57 zSsnV=&Q*>U#FZA)_MSb%t=-G*$<>F*^4yIn z$m>}5-h4ewnMTvN5YFFb3Ss~%v!R0TYp;qadYn*cRN;nP$x#NRn!;mgV01w;D~&8B z{M>H+((aWJ!Yk-l83<~Qx@&!4$$mf$EnicMoy+-Rxw}*Ar$fYVvTmhotgBJuUY5*H z^54)xUQ8PXh@C?@6}*xT7;K$y zGht~Y5gqW69NKQBT>Y0jTTRlgLt_N$6!THYbZFJ!WOs9w#0$4H6aTR?kDyi@Mf1U` zV(2BpJ>v%(YR1J2a05olKt)S(Vsy8o;X!UH5A!x&BM)j?f3L$MyxXYiWY^AW%K2-% zZ(KjDsW*w`1>Y@`+X%2+0ta{qos#`}9&tZ$Km^p2OaZvf8d<>Sz6RA~J{_6!n(#d$ z3XB(@tVqBmlxNGKhur=8;^ZHle||gl;ni2E$CNxNmAURZxPl>4jj2%?ro9NKsfV1d zd%<{7SuXx+A+SU~RyV^u8 zSjBotnCLAyE_lBQ)#~V3Ck`hqiheKjgSBMI+TjJTM0s4~(ij-}&XC{`JStrQqG(Fb zfN9A?5oy*0h`cgi9*kV5Mnx1!rVJ`C4VMG0`4vT@Iyq9fDf_jvwjya~c-XZe>BQ8| zYJJw#Oq*$C*49g=>&(kapZ!yj$8V;&qsc4}4HTER*XDiaB@-;Wbo6Bn`KEkRIMa2UjT!ctZ3Ds+`&X40${uoapt zI-O~zzW4ORiL+B(T`n<6XSV{Me7(pxc)dXLt4{h^xL2E}Cj+#|NI&=qdk7L{S^iQawD4H=( zUS6o_k!{sW+K>=kq*xf36xd(V=@@BPjAzqu#J^xG8fu(yv4YhzZREZi)Ox*n`o-6g z_tnFt*DUM(WMClk{yJD4;%Idgtn-035(H@;T?4{14Q^FLG1%hwfsO`>{+#m1WA5(W zzY#z+NrL2n?ocAYAc5;qV4XVq{U#LshzkZ&NpG4V*ztd_zdHgHY{fhv!XE*D1Wcfx z_`|?23FkogV*y$a(5>RsUME4olnX9dm9gbGn5sJD71iZ>!Nr38z-G#^ztnh{MIZR?fg$h6;D)zZg0Okm9mpsnjgC{pd57M@~w~LS8GeSWv9&% zQJdkEXXCB+e4^*^Prqhmoz)0&5>1?CLs?pkr|EmM`1OXd(5jY&V7DJbm!m5a`mcN1 zn(O%s1G?9W;(4@$h0~i2y^dC+%0q4_qigvRnq{UBBdFWT@>@at+?O`L@vqc&uWL#} z`l40slDO!OsYP?Ijy_sAqqeB$)(!I*T))!nRG#s9n=QlAFHa5j#f+JtYfRZR7yR-? z=2t?KBx_mQeWD@-p)*^6rDlKLGRQA7QO#Y$6t{aMSE_8>r;sW!wrH>^|eNPyLx={w&dMwQ`4LKrL!^I((Tl5_mVtRpM3kvinm#I zytF4J+0xQ!$b%PNAY+sNoTS?DVXM5)WV1ZzMwAQ0mKIDNeo|f9CjS-3n!R&fuG{^k z=+)B0AhGA^g}usmQC>5}Pdp|noXRQJ%IrQ$x~euex-L15=6P7Tyziu4`EUc;?D);~uDn_dzx-WlO36|5({E^h7*;gJS=E59AccG{m`bM_XM zSDxSKA{xBwps`F`oN&^t>{*dpo7{DVY2Z>3dJ7?=%>5#5nhJ2Hqnx2Hlq{7kc=3LciuZxr7^PYQd0{0r5fvy@N!wD zW(n??B+}PTR|RG^PgkW{WVTb@+L$%1HC{WP3})r?1rz3!9@Q#r%jYd$BeeOO)BR*9 z$6a=r>Qcf$k-V}&N}Fka8;;>QG|hUsB6PxClwueSK9s(U$M)#7NKDac_wvPs)Gx;dejS(tCyz~raY-HSTgT$!)?<1TBbERUJZG?0 z`xm46da75hrIr@|$`fiOSz5jD;Tk+GgDic`Ag4!d4O0pSBi4@ zNQUc}$BvQ~->6h5K4zYQp;4ufKYaFE>VMr9Z%BcjCjp{LqC+@iDv#`ti9e_VpIhPg3|4J15(P;b z{PoO#{>*dEx~SQ6qAP1XwVLg`8x?WOhqt^o=5v3~=VtOxRVNgWlueo^o29t&^Ft@M zAKh+i{_vK%x182WtFhd;aA9#~IA|EDN|CYq9JsmJ^EUc7hfn4%FSd553T>z&7J1F% z^*{W?K9k}2>gg}!!KgWY-2!fIkbx-F=@>V*L!R>#Rs$v``)1PDt7{R=uw$(7Ol_;^h^AJlflPxNFgM=8VJL@pa;)wKE`Se|L1Kaa-tYq$~ z>~51W37(=R;#bpXPuU@7bCC*f%W8Rr6p%8~U)6~jNn>~u0xE4!P7ALS((_hHfc90vCsK;NHwQm(#r`c^~dSM0o>vOL8AP~+ibFttH7lOBGzM^hzn8FS&G^CGf-Z}o|0f|&!2 z>s)+@x=Dj>J$$~w>kd5RJ0u1AC6(rw_zMr=>_k*V^mgWk$N0qe7WU> z>i!#Hi5m}irIT^Lxj!EEkFB~;Q&}puRsozPZE_K0L3tV`mxq3&`yDd->3?$~K+_Hd zKupZ%72rL)=f_VQnETm85q`{`9=@kh9V{P(?ogKOR;p=-Z&EP@$qIv(jw zt|f3ZA@*q|G!%Bx%S5$G6lT+lVNyM90Tv7e%YkJ=(mAj+4wbI=o!vxMf+(*racGjJ z9rQ)GZkqsTXT9*4>nNI=-VI?hosY{@eK9lmaqxNM=Y++j@&(_x4DLvYPg3y_pI%P9 zN8sy}`yHW*DwKKmz~ryy$YM948Y!h%P`#ooXwC>|6I<07On!bQcs8a;DA2(DVJ1sgHvE7ZQztm5)(pQ`P3y z;!72sG!NZxmLFSvK6v}sM#ETxTYCHy2^hHpubrN5@=+scu&3oPoJjISaDOx{{Y9^i zQ2|F7{*`6oKMwyp9C3^lB7oS8MZ#1h&zC@0X++ZIMmR*njB-cJe-T{EmGx%;b*h_< za10@*nywHc4DkSW5n@Q?I8x*(>rP%`DWfPbju7&KiURt1gf#}G;JrMVy}1P7u45At zH<2}gjD)R_`2F#BTbzx4NxK%84lB>u*Z0pWP2nh9(*3d}?-JqgL;N-M(g(b=`xf9~uaT#LEzOL&gWzgP}3> zl7?UYwvSV1%4cYW%-d?UXHgn0lS9^RXkU+f$As{CY>idlL#u$Y{#nbgwe!UCwf_sMAA=~+*&Y35mvThi%DUhxDzuhrDDg^bt!Z3`D{Y5gw)%5AK!_vqhg*J zmI`e}e1qzIeFmZWz-B$q>_MTy6ClCXg-OuH?GqsadSJa+ZLOg!=$e=)q|Gg=q_{`b zy5SmDR5P52S?^HCXX4)O3yJnQBD2-|UdYS5K?Yt{;Y-xTk`bPzmW#lUR>2_}2fK|X zG3>p9E9^hnQk&f+Z(2+kD0@fUvbA@mS+m8nK^VfRXA5O+GjOnmw0ad8YNSdrDO<92 zHao4eO>KQeDyGV7URQHar`j2?xx+)}oqe1$y*f99vBf>U(vRMBHo)B4Of9Vm@BT@N za_`xGe{pRkHn_FbKHKkbVte|ZM*X3bV~(j!$5*L6(>A-*y_jDg?aBTXhmu^1#MlLH zDdAr(+1mfM9=f|06e#HpI6eUs;gv_fotVbVcc$e!^mrH?$T5yD>pHm?;GX@yoXS32 z4H$KOB2vnzG9ae~n}nXB=w6*FbNSIkzT)qBjcK0Ahjrx@P5X1s)2_J{41uYg#N`C1 ziQnL&si(LZZ_dDb5~JPI6nSpeZ)Oea(ZmNW_aYlN?}V7dAhqzkr)TUo{-LL zmBotp-PcVtv}8@^k2YIc}{B$fiQ1%3qWI zt1J&5+)#jikN|oU9$XrrpsUZ4;?z5DuYEnZc$y$js8nIfk!0@iz*Mkh3Y9gbbXD~R>_DWb9ISomf0D*bNq z+hcpC%EHeSYT7HSwl8p6#4!f(lL~su`boNlntQT2vl zXp6Tpn8@3#$jrA_g8V7(>vRT%v}xl%rjf9So3paWJTE z8Xch@E?e59bDZH@QkRa-V{%Yj5?amJUEJWI=Tx7!K_AWgA>dd`Ez{^&uzMXqXK{HDp}V>xDJu;k8wALFi7@ZpGKG8@YZz9LtxPw~Ft&{q@_6 z&~Gc_2}7EdPyT$uUyew{?=15I_2(Po@h$eJlN0WZV4A799vw=k#l678Z#|tlEwt{9 z&{VZ)up}mc4({!@bJIT!=ob`}&BvR$7{_F=wM}&lN*oC<%OZKr`b5Sveltg|J+W`b z=;~2i7W<}hZnuQOoy8bV>GUdW^|P290x6nj2@rZud*q}mEU4^gOwdB(Tj70<7PyQh z*-1P$9Yx%XUS$zCv>4D^Y(=DE{I)`x$VQ8KJJX9Ou1a+3Xb)@;EqmD9T1D;B0Ah+& zLFEH2XXY_D{#uhME31;L4sXgC%$HJ63syVRZIu&jw`1{&@8*R>YCPQA$K4{impo%S zxw{U#k!Uajb@u?5Dh)e~t-#t`VUAmA1!yF34`&Lp$qxrX+?1%4=H`5Q_WrDSQBE;> zkt1S)4S$VCs9KGJ9z|)yawga!hQD4NqQ+K7_DVBtOJ%hj&TZyCM|vsS8QP-l0&jQ( zr0!L*`DGqm6RG?c*~IJ7F|m<-?GkiL{k~;skNoj#ol(`edX_@^gXy2rx4YUXLrJ6C zFSr^N{V^K1ewpezsjeP&_B`&-8eaSGYLs7!u7^qN8)~hF&PCUwWj`wtCjDu!*el#NKD z)rTllXrZqzZg@fq(3-TCcgigYa;-J^EQg3;H`~FUstjJfYQJrCx;wVHY{B>Se#lGy zi+$3YgU3cbFVY-W7bFXZem~x<$PYP8XhL#(MVDO}98#ze_e8Puj39r6h1|YF0HXp3 zsWM@ZT?qF47J>xeJAAZ&j9mB!)LXzN7R3C(3u*X!?d3Jdr9;)pqF$7_@87f6|M&Il zFaINTqI+U~!QF7_cYQgtyb2p7X`_kH&k2!^*^OKUb?fqDpR=(?N(<&C(W|||!b48$ zYrgiPykJ~}RGM(3gP7xhRBF5i%t&2;;lkuIiIskp3S^vDy{fgZ5=ckcnoet1rq$Dr zcyG~IoZ49qjyRT*4udKSs5NA`KwM1-MT^KtY0U+QQc^EOs%=sT2ltMqveuBVYSKI) zNS8iUOiru2DLrfI?fX=r4|!rdHRQ=py&+bdp>S$aNcyjB6pf{gOLfL(#(y|f$t}`8 z{l28>>$TEVCh4hK7&b^ml1SA}%rrEdK$893P!3NErlw;)TaPtBz?3W^xG>V8YF=y5 ze){xMUcDGWm!S!omb?CdBmzf}Db_T;gq80~wcgQ|`P=f&MyP|NZcP%M)Ey!jGxQI6JLe==JS2+5BlwceG$N!zCWz`iLfID!6rnrsXn+QuJEVi=#mmQt?pv zq$Lzxm+oda!ObMy4@lBA*%KqA9G)`*_2Qf@)N&7vx=b@u_;fg# z7~c<1;x~W#zqt6rsD}CU$tZq8hyJk2LU>ONk~I1|_vB^*rRDr;(jS}vg@fDMUtNt- zo!6cZW(Bj4g!o%_0S?foC#NmvdXa<{fwSVEN$>oPv-ik7l()HZMmX? ztFXjju>zZ`B=S_|T$Ux&`eskUMBtF4@d z7<=Xv)SsT4?Z6h>^QF4lRW!qjMRu+g7MF``dLyvvP_$;4Z5&r#bzF zjsuQHr@id26=$7I#mHPvx}PcxJb69lOoVm2M~;u;U8~P(3C>UQ*oU&p%C{vM`|YJ_ z`fleGO12g6Mz~b%R7Po$(>YHN*M{t`zmSZ)cbb~cN&HCO8(n&I^ITG{g6fU)LHU~Q z=e=?hXQDg`S%%%%s!s_YOA0P{PNfn&2j-T{eX(Qb2W#LLoTKGEfUko)EgsZQJguz6i2kvX?;rf1G z)P|>A@ce;cRAy44EZUzGM^;ohBWEF5NQB-2VB`BzW@+3YGGh|4+?)i;>UqV35-#6>{IHj zG6G78otz4&dGzJqRnzQ%nH@Z#OqaIR=)jC1`p z(N(!qZ`5nv1}MT7Q&DhA#b9a7DN|i+j+BpX%<1sN7>&?-zbEAAMjbXn=l{v171VRC zasiEo4{MqAB(5p*ly&K8Fut5tPWY~1b&JYeO{NCB!$L**#l$@IqA?PDIGf-iAdLxh zAS(#8mL7p`M2_P6p__D|P2(c+trcj>08Asrkh?p~8193j3|%83qL|3GhB136J;Zc- z$Z*xb181$HwA(Cn0~6xrd8aWA`fDDu?fmBWK>YdHBwvJ|Ukf7f6 z?*6o{r>Ay)G1Zk4c3MkG%l+!oY^F#sSTSSoTuLuRFp3mVMLIoXiHD#@p_znxsHnWAP0B_K zaQzBJ6WaldJ{MV+IUq?9K(ss*F%u~b$SI9nVuFh^DU=KymXXkrc1UplK9l5sTn|}V zfV`Ph)r)J%=N;dPbjIT2Gx{WBG%NwM_P{ABjCS1*R7}6;v1TcI6_nP-XU~_vy<6_R zt@br*eJOK8_vT&+&-gB{>dwz(gS!JmersiumZnPBBQH1xs}A$Y&ZmyV+`sf|={951 z{8%^p{M=9Pr>46$PSnIy7i8*=47HCm8!xl5h&1P=MPk5t2dPVE6jn=yWFL^tsB z3_t8Se)Y#{-YQkTdrjZW$wV;2pZKTi^QW_`DJ`DUwN7X)RNBN-st%D6b<60Sef92HsT zW-A#sir5f$usvf)gCwV%xHor$Mm`*bJp8!i&>SUn^S`aoa~C%b(ByizM|F!2iF%ag zNT*QAFV_tFfVjpHYP|Or6ife*2U-F{* z+Y6;gQ4(!8eQ{&QSIk}QF8Z-%^tvqXhDXlKO8YOJJ`t|Vc7@J;9b)Q-#w0Zd_PmF0 zw}*I&arK(Uldh^ta5I~;{H*qG3vjF(eiPwQO7U!PKfR6}$hZ8Z{exF-qi=#JCNoN2 z`s)&<)kv&g_$Gd?Z^WLH#YV9$t8_5-38U5`k^lTosb_2W3-EjR!-X^9j&{RE*(?WJ zT<>i*qr;9sn%(jM9#=$|8nPH6H?xp!n3P2AJ|DBunZkO*4vVZad=Y+eh@-4*hstew zHAga6y3%0o;3Nv^_c!>IU8K3PxGnzHmKf03#+nc2&0u5L5s4M+Jx0^Cy}`M-nQny) zi?yDGD3%6R3MjF1=H+4PKrjUQ(3m|6@W&-qjDUe~v4{_*gZFwsO9RT+I$)<;JZ@h; z4+o1ZSk>$B9*N0y@L+>10G1$y7^9un&lh|ivH9V>@R#1s#J>ld&1QYNrdBMrf-T`H zO=qlSc9(39E~HPsZ0mE)%&BQ`@IK?EcxPI{BWQ9CB8<@=*L+tM0)wQpvZeXiFuK|# zMA|YKXzHj)I!m`c2l02xkt!ktKt}7*v|OadE>Z68j|m(hK!awFcQZ9*s_v%?8Ln-x z&>pumaiszYS&0G$6l7sI)tiLN!ypBsrxa~6WCj`q7oycQxk=L*=UctV^+ZQabw9 zm5wEKO2+z2C=NwyW44@2DfiH~Rt5?o6`{xxpiO$ps&@N4`?DoQnmulyX=?YnLX7c{8WB+a)hovd(Rq%~uwjMu1(2=0u)DQinArE|8 zcR0hBL929o@87U7!D3=xq2!Y0o^&-4esqh_reUln~~JZ}8e7usj?=Xl!Q(A(3;mVH9~|JCzei}rfx z$Sh3!xbnoY;Vl_ulc=;lcfnoZ0Xnd!B5}#`ItQzcCjzrI*-_ z`X1g~fUBl1zcP_oneU9dR=o1rdnmU|Q|6qfk;;MLbj5+(30!b>n`}-A9NC3-nP&R- zzY!uMz`L#?vNP4fDco%7ck}07#(9pk(mI#3{F0@HMz4lQMM_1(kt!d&<2n6_o`X6U zL}W!fBFS)igFDBO)6o)1WNauElx1SW%h@mPZ->nSa9d{I999PhYKurx?nv^q)ogK1Zul}RS%RXxZlgAk;b@n0=` z`_E!dnlSZj-LeY@~SK#y<5ml-b49ToF5>Um_TjUoEkM%!KT^y*9K&CFNree%5JuFxQ= zlaK$6Ij{9cqC;I-;~~xQ%A+@kIIs3+=>G6y7&Rp`-XCjT>3(|md&AXgTs~EVKPv%{ zFA+ce^wiLU=L?R;duMOnm=Ydl&J1v*E=UO0^iV$a240+SJ1< zV{9Ev_#y}-LuH3hr`u_dWxCsNKIsmjrWsDnJK9DLiauTTeA0qcwoES=S}D5_fKB0m zpdf_y9aK6mj{t^a`SRDq6UDb!5Ka|%OM~TX%!z?9&imIIckb3Q%^_QoSx$?-5^ z>4_cOz+ZRXb~-Jby3L<2ODEc-DR{IL$Je}AYH53Lu}5j~g-+ju!uC@Xipx&zRgW1n zHnHP4WL%C+l*)Z|Z*6Ai!4MNWagQ2lax`DV$^}be62?O3l3&6emq%2?T z;>pGk_+(#D&!$xr-~`M<-9Aj44a&Z5tjOVL@q`jeGaL9`nJ~H0pk?>d(`oUa%~yo& z%LD>FL_U%g&Lhaj5R0kZeI~75>+QZB`Y-u8M%Fe;T1aTKIba6DrIB{GL})BN7zHV0 zz&MNvfHH*SP`4!n$MizFxe1fQ4w2&JZ!nK5RrPI8`{-6|iR(lw`X$4{_`!*&GUvmf zk7RckQBmf@v4q}_RClpT_j7!UV=yXb2h(u;;JACa_uiQS*W6lmMe@P%z-G~H#&7L! z3kyM@U@pWoT>W#R7p|W%be+3$V9Uu~p+H|B^ZISKbbicCo zZ#L*OD4KXiXF!-YHmpQ1(?#cyMA7bGPPcMB=v2voIs$1E7sfAPDaF8T&J`+@qh;YD zBL-&|#@!`wO)2@DUOqXSieYYvg)lMku}_(IgyF9I^~gpv3`GY#Me}8(ql(iFY^~uc zhC1bt_I&_yS$B8ORUZ_DT(8rxHcVk`|HBqw7rRE z$n21BD`kanb^1Ayu3W*CP?$-It}EGEA_1lHCzB{>yrn?YBZg#s-qf(BcYUZGYl?3B8d zNUB4lDrRtbqLO0g{0(qaDvF0h&_eUfJdR5@bkxP+yjDysnuH7||6uF{9$ExXp%F`5 z>5PeKa2IXvGPfwyjk7ESVGd6@x#oc7jypDVEkD1_?DpBwj@XuJ%HfJr z6@EHtk9;W+lWSMf&@-tXmR$G6J)DO(xBPv2W%o3|>z^!-Nj58AeBN+{`>6eW4vr{p#&N#j|5$6IVb|m1Y9}oKmK$8i`1uOt3{JneU97lZq1|~re87ZT!<+!)v$Iz zz)@0dZgNU_4Y<()6AM1K5#hqhAqY?G+Y(Py(TTrv<>_=iHJnyCc)_~WRf?cwloobl z&*Md$i@NIRQH7nckI0ky()ojF={mAmX5D6*mqzt<6&-FW$6Q03WOeN89~-KB_-pU$ zw$Ne6K=N-Pf0v{bTpoy6zTza_mkw9r7jO`I09`6}RC2RR3*yT}4^W&F&#x?yO=#iA z{7Zut#^Sh^81m6XBt)J@$rLE(g$s!^TRPN+tvpMyKtkgn>1GeSNi)94R0y1|XW1Lm z7D7p{sAC*~#npup)0Jb%5M66>PC*1^27X{`rW7Q8S|JaWw)NWcH}^Yb4zrQ6mL{;E z<1CI53=2D_nwAvAi(WKN`+i6Q908~iM4s~piw1_)E$}#w!RRv_aNr`JXIcp^(>_6_ zi*79d!Yb*H062lH@?2KxxnKWKK=-HT*0sN#ywbS>=-ADX>Md~BW#~M38=p1qj%Fv z@x|0X>*KL|mQ7`oCC)A~G4GlbzpUN+ZKwK|$IA^z8*m%xS?wD!tLDDno_7>JrMRDp zU!eSP=f-a0jaJ&Q`Mvtp2Z?t-PW^MMH{3S2B1~Sr<^iF3ANQ5KB&o~Z(?BE;WwZ`7 zvK}3f4--fi|BSh!nH8_^Q^99!a=a z+|r#|u5<9a;3UjIkkCZc9-Ca#$P`EMV~mQJHV?Wk2U@8xV#}mp$`0phtXv}PBLbSn z9D;86o$rXu%F|BH+1$rhWteRty>jdkm^L?id8CMN7{$?uN>l5UR%H6i?!Kv>v6szq zzM)7RF}vB6ubJD>DC;<*MZIJz+c46tS{zPRbSlygEmF`saRT#7^2Op`Mt&|GyJ0E! zj=jI4{Qg90a?Y3R(%_X_df{s$ymJd~$-mVLVU`W8J`HqqhDY{+hnsi1VYo&D#bUI| zr0T(AV7ylg?4C%7j=H`-I+bFPc!wXeM;>hKgJc^TSSeJ>UOgwDLeyIu4f6*7l-UZ= z{V`mB%d0KKl0JM{X-m_7j$iPl$c!eppcPNYLaMi zf3Ib?=&}R7rNhe1sa_>{$`j%)JM8$Se&up`x!T)V*)J3~SVsQ&MTqu-~aj~24_?nmaK@PHaQwiQoH~gJd$$i(Z z)hYVMsEi819;4d!Yi#-RE_6p9x`JQ;DVY3-1mR0P-v+^$Ug#(O^UFv`;tybnAWwL& zH^xAu=Rwf~`r}8i#Eh6=GEE>4EA9+9+*=;eP~_R(Qjodwti6nQ;|aTJ8Y_GH{Ct$v z{Z(>PQ`vAB0AzCe;}=tE79ZS|%afUN-)5WIG0F#xxfwX=E{y?~m)Z4ss-KhtJ^MC~ z_b*rKNdA;LC-t{OrQL#r z1p7rvcwxFXs`Qi?OBgqn%WGRy0Ksuq`qa5;$13^$*+IASUa!H|I8-CCvRrpMQ(ijV zQ;SlqpeN*a6|?>yOYa@k^xgjdCn1D{Wk>*7(gZ>X%Z3$Mwn+#fKtQ%k4G_W#lwHBv z1_*n|Heo1xLs>z)f?r*<{-l{Bn2w1gEe-JNEun2)VU>P<+C;X){IoNap43(V}r;x zV7H{}+b?@nur@s2b)CN`^!k>Qck_2>-eV2MhKjV|y2LU}r1mO27>I3XF) z4%C34j4>9_=h{5}TSbc0Z}pU;q$}KAt2A0kE=wG> z+nRm;NjsJ+Z@CY10*uth#gAI_tk%=Z+C}i_m=6QK*SbR&dcM8#I{+wdb)_lctD^%1 zenWks>3iYAvHga`S{(_!OdJjiuu`?wv#I^p4*EK5V6Hw$?A&Beaij<>cP> z9^1Nh5L~mxTm7h@zf1Dkm>(3E^7fIif-){!Eln@ITwUFNpmwiX(s`@Yd!MgiUR>g# zDyW)XY_%i1KstHUao5r?h zHqNYAUQ&zqyQ~J)%+|}}a-F1edYcF|0U66}9jI@pc?9TP+7*2ZLK@ogNGYP2JBMEi z8Y+bje8<_$9@|P2T=&CdCu);peKLUmRdemN`E#27FlpuF`2(Cuf|k|IITz=pqonkx zlg%`YE^@11)KW}4e-wP-p@*iXy!`^{hSXCsd=^J>l?bvnH80Tej}k^y&&?Z`Xysz~ zs8$aiz=E~zD9|B7hk8peiXB^iTD`AjGyAuMZXsc zqlV<_>YdIc*}amyJlx#SSj1XseFgBiG>rzly}HJRMPx++Ltqd8XIi_{`VU1eqWfV3 zL1zv9U7DHbh1nh&fJcwz-~xBxf_fDKfcXKcbzE8@hzRTm1YqB#3jt^7zbl9D zLBJFX`t0Wk)HQ_Rbvv7CBLH{-dC%P!vO!}!z|+Gn;L7exOPFML9)5cK?(pPMbD$Y{ z-ay-UD|-&rAt=B&OQ=>O?-1cu2TP(%k6t6#fC-tL1Ct|`sVsq_%0IEa3+wyV;zCvs zD-yv(r*M`J6`!C$ZIP%GxG;NNv{O}r%+B(CsA*a}Y5U?9N>21a-7a5R4mrlAw-KL> zV|e$pfe_Y$37D*casHO<<)R1eA4f7&;JxqzxwgE#Xn-$DK3lNcm_Mf3Fg(&Z zk}0}w6(&0OO_yCB!G~5?m#jiJ{T-Jc_bhhKtnWbYY@j`2KU2*N>B8W{9~G29i|Gw$ z0jx5u((Hgt#7lU3q#IkNf4uiZp%YxXvDw+n`5)x+DRqCt6RMwYpjcy*A@h<}d9zlKHS1{TT`H@>sHh2|`Y- zi%HgnX!($h?H#IoLtEo-$7;bXK-Df?1+r}?r%CC}#!O5fNs8kbxl$x+Hi*#Uej5Zz zYZ6^~IQ!(D$h5ZDx{ZnnM;0UT&OH7Y9aJ#wnu&29ueHF!1Q_RZO0kW<0D;=+Lz)^| zn8`^q;OWfDTbj~K4H?pMKz%U=GZIW(A?s>LjB*(z}K zI75(Ztt?E4dSmk;v++@tUi#qhB7jaijRtDdpNGI;AdvbknAJlBa8?dBy6+|!{n6K* zZOQ=tDzGP@N$y|z3K06={nz3D|AMOwcx+*SLQiGPrg%w01!z@)K%QVs?-+;#2llds zfCLIVW|L2x03K&U7y!K**aQKj3lNy430&MJ0o*GXN9IMJHl2otU{9OQ_7@!2tlDRM zdn)1=rKRRdwa2Ny{P4fmS2|w=4RP7!{i1}Q_Wq-{7tpP>q(9@dkYs)BdDs1O8av>d z15#W4iw(mC_MMF{?yf_ctEXRF+NHjJd&07-wQ(PDrruRfENIb?7~P`(vXuMJf8=XD zoqF)z85%{b$PvGDCr_BmU-_+mJL1U{=RsY8%M7WDB`WHrUntGM*IBdS8|CCwLfW*2J5NWfXa(L}> z6$6^2OjQG@Nl?BZDjuD`Et9leW9-Z{E%@v`?YY%rY7SJ*5rW%Q<-;Z`|@)rrTrdFJpygijo4|7SdMlyxGI6B)qm>Pt#`GGq~O6h zuDCs@ge|p>*642!o-=Vt(TX1Paxoz|_+5WgplceTuPChJ6}||5G)u4kgCovE<+;RF73vjlFa}OU3OT{cT*Z`KZxAD6M>Jv3qV~ zKmD$W%b=%1;EY*2WqxuyDEf!kpJY}gE9!JIo+q~SH)=_gYMs{(Sy()<@-my1jfq-N zI7`AbuFnpw3**GW^l$J=neJ^%3M%|etyvsRPkKdqHV2YcTj1aZzxtnvRjH_3vq*Pm zHQBQLI~#{dA%eC{U$^rPz>dxU_54vodaXC8UDQWruPTK$3Z>m_WV>{4t$gknmwk|* z?bgg=?Bq(0r#@rN{Zl{f@k#~^Obz&#eqL09A%UFMC3zV6HgVq)0S3q!>Jk_UNbfi% z14wEKUWOWi{CZCR_4M?&4@zwHYRyKC=GJ?I?{Fhpuu6+xMy~{WM=_(U9WF;QlC|Yp zs@JD(hul^?x^mOlKMFmf3<dM%E*oX& z(FQFq0Bx^@y*Vub9F4t!LznxMkwY85-Q!zJqg3W?0P7)c=V5xY&kWJSiRe3>^w zi`_*xEwuufUvsR@g-B$%(7d|!wf%O8&fbLBD10bE3EJQ}&j@p#GxJNUM(4%yj5nL! z-HY#5yTCPadGuewU%^LDTF<7WT#ET_a%(!M%L}tZQm}}?)MIq`Zp@-QGRVhAA5xMG zh3Ent8xR)YUy~3PIID>WPwmWy7q#LhO?o4 zXn#PMlL?lrWv0{JTxS5(pRUqZX1Z3D_U}aX9tf9&Nr|TdF(Znj^If{Mc5!;_@j+@f zyuM>KjeA+`H61Ey-BGl2aYAY}A!vFHW!1H`Z$C=PwkSI`Czl4|)Me{1c_wa?E#qdE z1>=X~*EN-@$HTPP|EB#~SU!k%eBg!sn5CI}U|nfJsREjvxza6c0b zWNt@%qO#*M6j2tRC=l#jNZOCka+Sa2kcfoaTpG@K6Q9y>^Bd>Sa3l#-nF(rqYLWqx zfXSBLGj-^f17Pc9)(+_bXG{eUob7$Ql=%D9&RgqWc6P`A3KD(abD}lqMc)#2r#dvD zzPr24U1*o;CwBxN?Gb-h)po^9za>#hjR2YVW7y{Q1SH`kmlt*=oULh6kM9%Gv_IKB-lr&LB6@R!>+`CDj#g>v39|U5rCYx>Avn)TwUTJo?aLc+l^Z+#&angY)ODGH3*kjhbuD{RFlZcYmpjGLyVElFwV?Lc zVhBC(M7S0yH1N!OnV(Zk!%xnN*&!P4<)xR@{5TBmAMLj2)xMg|8wF>pfEau5P#nOJ`A>|m6a)Qv% zPSGLPzrDs{<&=@{)y`rnjUi7R8pmeX$xPkbw2bPme&4NCSiqhyhc_{unAgiYd#Zm( zp0N!Lj()@ty>@)K?(2fCS2GsrrN{Z%pTD(zF8bI(AZD1Es#;cRzm#va#{cHIzKGg4 z(LRmFAjaSlu-;){pJ2-746ufHk@F@Dumu1?Z%ha<-THeA1SGdYr!m(vhHrpCao>Yk zX%wI_R*VT+-~1*iVwG4wSc04o=tU$0Cx)j0kt;l)O|a=I&S~h_!d}%nP{TM}qALhm zO~mr;6U4D=8L5voxN}jrvsPr6>&8n|nVB4tof7cTnN~n);MD<=DQ*XxK=0+(_n8f_ z@X|5Ga2pCkY0OC=i(Jl?wqs(7LFr-oNEV!NE6;Lq0s*FjLGDtU5vc<5@EI}>L_p>_ z+wAIDFnZA)?G0)YNQ~K577tQOnC?xVgTlR$7>4nfpL~Q9*IQoNKKK{bS&F-KCtKy6 znvhV=ZyL0*d0;lCw$mB7G!(6ZhuPN6bJL_7K^n|)@fzI*wXEj&rOrSRT*bxaBh#uw z6)=p9F}Q94U`2(sVfvUwY9Xs9IdkxZ=@oFNju0;W+;39h=T)JX-yMr`4nSqV3(H{yOVvuKoMyAJyCXs|YQUQfT#B>%&;gT5~)hwNH;UMx>gX zGJGghFipZ%pv4KcCX8#4T&J8u4(##}dBi3GW?3NyU(dtVolH>4kgi39Z?eLBNsYuR z;Ai-;X_8RI13Ljs2}weGh7=Qekzlwg1zbl-Q~gj3=>>D$3qTAMfXGx^!Y)Bkz~qow z#73uaHhZ(o;ebp4a)x16c9}q=peb)IJASNQ%%hjc>8onIF%9KNlf5gX;(OX$EgbLn z4FA2{O4_X2^CvW5Wc6#+K{4CH(OTG?wZd#s zn#dh>QJ2)!k0~U?I4Jt5wN)_liXWA_gKjA-mvYO4t1DkkqJ)}NsqK{qsaG?u0aCeF zc@H!8P5m`?JRja_-naAO+c-1lB4=OJtt78jaZcsmevd_p3Z5KAch3kSMPEv?v|PlrRYM z9`$==)~!qEun2A8uEpo9|J**{XPq?V;xIkbJi8uFIo}_u-nuE6F}Hpq>_cUMFIt(+ za%$j%eUxWT+0mk+w*Ef&E{h@ImgD*%rro#Xcq6=Q4WG7e>s)?!X1F=Pr;v>*$zE9X z!cpH8WAu#JY70z=r5ucWVF6sSa< z&beDsPpnySHOOnK5-bo7v}n4ejQL0B*}ojOInuYhdjtRWWpl%fRRCOugAFh%o7lIs znE4nRn|$Y&8#75p?@^jp?_cedxN6(-Fv^fYd~E3W{eulN`b~nHB>hZMRXItC0H5b(UvMZ=#dt=;T3w3$=`Ed<=yO{E-mHb?9oL>?kD$4Oln6a zGfLTi=FzvVjm#Kl7tcqiG`XctaE2_Z>Qi>I;Bj)UwK1iP> zRYpqg-NR@U>Dx;33&)=-y8plsu;-#6U)==e=OWER6yRyA;F@8G&s! zS$|!=X7#@K+Irt_x8Lgh(zUyK`|ZZU3$xcZBNXpP%qNl&sxn%!+hjLVHmHDycW1Di zmry*ktd=?nii6eZZ1wgU59>MOQ7TR#!kSM+fvgHOkLXToqjh(9J#GnZ{C!g>iWvFj zbL^#0vF1khH^pY#_(EV(Ic#1=@Oq1m1C}ZL}ew)3> zM#&0bSsc^$w;C97o2$gCoOC1)Y!ab2M;|hE*rP|~4OaVmTr8x;DF{Jn(MYOM?$|VC zR#+fmR*_yxppE18SAeqZS^3&ljwf!Zm{y9<^KYOk8p^;2EwyoN++MV8YF{^Fy+PtDwDZyEI+dUr~VNp-C^ykrTMolmv17%gCfU1=0I1f>SGf(g5Wev|aH8ATn) zoKC+C-7hMc-rhDh^?s=ezw?~Fz_nG|DpefEISrA0=%q*#2CF4e=%Z;E_2Jk5{`o`l zQlHf0)Sch|xBL4)^Qj}3_v9Y_+B*6E^2?2*Ne2MATxI5bLD!?ShxSsPD!17&^dbf z{^QT$b<;omFb-2qY=bcZ83VU#bvNcyiMO-w$=mCBc{szAAA1%1%h zrVeNQJu+Gq4CyetadKM2zbv%Z=tXc3TK7wB$dskwd2KUoe~{0xxAS38#TreFeEz(z z*}Xxm_Vsr4$6A)!^v6-TvMjHm#O^5{2+I*tzfm)s71>^|w%;uUV zxZWDyX|@o$#;wtTvJ*NyJ^PB}r`O}}h}M^s?c8v^PK@$I>HPM$(bpC^Sb`VkHSr@;n^;uh(>F z$`r9^stN*QfNa(EC7uEm1OZ@0L_mf4UYGnVlgQE}=!x3i(ld3VJ%aR)^MdKI>FWrqvBG!8KF$(fR$X^?tCzZ`mMWM8{9lrsVAv_Mwl=sBy3D+gfeAv8 zoCac^oUm$hrJXnn1x5M5CsDt$U}I3kDQ=!6(_-w|c2V~$Il#l}$}&@eA|mpNBQOjJ z#Xcm$83%%-je|abeBiQR-V|E`vNxwWrAF@+=BffW3Q9$4iK}a-+-(yn4quu)0lIu? za*@28tBIm-U+6ji!E|Y#DdC}=9}r<+>{Hu&C%8)^R}ghtesPKtc1=T;y9DAQF<{KQ zpSEB)Fa`lIVG2@C15w!b+Hv3S*zo>8LDmh54G*BOazSG-+`lF^GU}QGq<3Ty;JGdV zn0Aw$M-Kvm7L|Z4TYy{8KXQYD0(KL4WBmmwXcyrO`*CI~RhTU%$POCn2iyHj-x8rT!R;v-`=lj!moeld1j-fgALSmnr_H;nc zZA}3aDl3arfAZZ>!rtrcsD?5|=kwjsLOW5LU!acOoxuap4@KYk?RJUEQ)UFyp^aC| ztSy^WL&7|Chi+S~jw7X`Ptt8hk55d;#cM0eI8riwU9G2Wr)h1ueuP>@jCf)o%-)=K+tg=@DuRhRGJ2L%8yy8>O`D@;Z<6YrT zE^BnvIS+o=olX6qZ)fZcjRtm5%#RLiJ>C-?O7mkYs0!tdhe}Z`6(MXjA-?U^s^zLx zR7TYx-Nh_Us3jwH;hTQ7`VN>!^I}_qWAmqm)!a%R(Z!_1H9<{AN8ZW8lV3V$R8A`? zs771HHL5D1`gwf_ETU`BBW5#sv{|<4Y>Aw%?BJCmd7o|}zU6Eyeru$u+d)CeYJE)7 zD#v7gWKbNss4!X%HN zx;MOPu~exZct(44(fCUd^+RByU0Tf`CwDQR=T428k4l%BhyGf3-!IRN196$7)Xbh> zn*zmlW#Bq`;M%tlqMFY2h-%2$h_!Ig&UIz(a$z+~$P*{1fV)aE|2L-R`bQ9gX z{q$L5$ybUh^g2H8Kql>$>v@s+x7c5$Dp(o{VpR315H~rTqiY>{py+P)YL>&A;y}>? zzaRy_6MzS$^-3yV+uApAu&D+CX2M73N~6gr06xb8utst~mdd6K1dJzm00S0a#QINQ zh?qajx*x7R->kFlISh}yb@YOw-r7K+-fe0hd4KyOVUPq%QYXKaPDyCqcom{B65MtB>HNGH|Tt$7<6G>AHL9GJ&L#@LM0Q zap7}b)dZ~`+IX1$;(24=Df7&E?;j8jI=JvZfs!uKE0O14Dn~i5z)OQWx|yr!E?Jbc zq43eJMw@LV^h~%zr5tMx$1C(~!sthIwgFj0{#xGHA)bxEHIxq73B#9wMOM%j!qwJO zP}Ab;B_O)2OCuYc@2^aPf+TgsUaM93&NgR!J$!etpsZcBSaG~dyR6+<^$gG!B6g3D zO*v(MuKn%Op27ED6mH&r);IIp;z;X%mu{~Gcm8hu<58yd4Hr^-_tn!x&D?vc^%y4$ zh@PEee|InBjE?eo0$NhYF2%1+Gn-0c8-wJIiuk7!?ZhZ`VnLWOCkBukx!(EYJz}lG8)7IIO zdAH-}K)QK3NnEGcpQ1*foN0V(ex#R1Q&gl9fF)S@>l?JV`-)S|3@;AEmp zv{uJaz>3qI-e~xNRYSNM!!3gx!Qir6_S=KF+E7|Ebm@LmXi+;-+71))2;Xggtz%n( zLTW*%MXWNK9u;))B53ybIX5NVpf;Sc34+pa!O#g)69}DNj85Z)qzs?lIA^hx^Ys+JHGg<7I0zKtz#5|i12|xR20X2j zrt^+Dqyu=};p#{g5Jm6nr;Wbu^^MGClQm&?sJf*96*aG1(e~s~$9rE3arorZjJUv2 z6Bo_Wx#{iAgRu9)f$mlfd|{(^nfisrJDWMo;#xTOHTS;n#hzQ7u&DYMsb`xSm3@UU z`{qiUq}1g9{)efV>1Q?LJ-WGBqg3%?yjO$%x>BdXv8pQHL>eEr8K274Y~{-Ndn8o* zb!%9E=Yc8g7PU!ZDR8ZZ4R=L_q0CIXZIm0Wm_Sw#0yIT4W^=#sx6N5JMPf)4!I4jm zC}U|u`-yz8EEdRNYC)AV-5s}$N&*}sjO=A+pEA&&%AHA6WE&xCnrL?BvzH&ic1_%3 zrlsG!;@4R_>dVq9@T<0w+fpk-qto*FjRZ=mBz=g_&-mK7d-&ke_Q?B_7rwat@YAHw z{?Vn!jc@P1Jv@;TXnT*)OsB;6tj&>nLw@sEMOCs|ut&ycR(u!{SdyBGH6_Hjhm zgNv7r&tLi5{?VWPCfW8QhKz9U|B5%!v7((YH}2bsn={ScpD|<5hMdkK@d= zbY*nC;R{C1%rMH8izHH*$Y4NN6@BKsmw}N#OkssWD*mLHlp?o z_sE+AcYJR_EX~h%6|>cynvY^RLw;hbX*@d&^(yMB%zR~8exssYUtj|>Ix^abv%8(? z`6cKqF2uyfWtFsZB+@u-v}~91|&NR9Pbh;?==<&9C*WvJfOP) z6ewIkhUjcloq~}evkEYog>n-X-C8-DOPhhV>6x^QasK9;!%RM4G8l(`VEG8m3)1fe zBTgw2yPP3Jv?;r9T3cfR-U*AfZ9USu)|;-NX2Q^1QiB+71S2Ju1-U#(mi(%roz#+| zPu*TH7NssLM`CH?Y^a$$`HkREXn%?HE8_-AW(5UU1MWH=*AJK3?|0?Z&ko6Y4JiOE zc;u#QNgoBXVw1JOyf0#n&ua z3ct4Tj*{FZ3lnF}&+f$2eK1>qN*qV(W*!Yu;!o!WTl?ne1LmIuTKu&O!8k120Vz|1pMoG3JgUC z15N}U>aE9AB2B5vznF;E^v&$@g9@<<1i79Ka8XDYO{i3lK&4H$2m=l_wZNWiM zuMh4XPrIYN;v%lb-H345azC7v0A+%_3OR4b-VF9VC2yZuz^fy01${bc(YXeI#{lRO z%VLN;V5=Mi{dXe)2$$6ZayUSb@D-;DK;yZ<2m`3R-$7LF4In@n(f=Z5-~Z%bb0&jb z3>?p4J-tXcmUwN83gbF>p-?0$FyaD|lEq+vICp^{0ZRizVIY6hW@RB8B=gP?h^_&C z1vy}QXBq2E*n{F(Ywn%(m9GkxnQ+2cQA zA6&Y-wbdCUn%{6G-R$AQkN=9T?OckFPcXiC)joS|wVv~(U+_@|;5`fK+)5*YA-deD zcV%a6`mb*)WcV+vHwgyULsoM2zv&Tw-ricwSidy*hIA`FzVTB9^XgIq*YnixgApg? zAGNjK>@PfC4Qe7@rw5tr-DB!1Zy$KwdgL$4NLsv{DX7WL&_Z4~^Lm20V*D0-lSZZB z-AY1M(h|(ID0SpnB%>uK$>rqfXKgb@QQjps&KB@a`0I8{*NX>X1eLWlDABjn=(D?# z>{{X>BfBxn!OfMxja{e%JXN&wxnw(9sv^qGRi!IkTKb$_=!ao|J6EWgDO2uL#pS1GC7K^p~oiHyN%?nAY0BRQPa$_U;v zUyeSFFPuQduy#=W4sk-mx!{IwRr_f#my8+yoNcv6_&o$T7aztTn`);BqC8%TEt}hN zO7U^nsR3wNb8h)4gIxPJQ7)r}pgl z{Wuj``OiJP#3GOPb=c|4pMgxp`9|+^+MAtTZ+Y7 zBdPZ}mRAPvV}(i0o(-4IPBqw1yXIdW99g#64t$wtG1q?g3sKMgVtk~gx_1xEfiF%P zWHVbhO6`}-zp#A!O^#@(6SfipDXqvCVpy7gNDU!4vd=V(so32w`z?BSE$KiHLaa)z3V$hh4)D8#^z!i$e=%k#N0BKJa z?|8E>>G5E~UgYPwV^>*&+!)f#k$cOtL33x}J?@5+jz68)b<9z(=CVua+I!3Fr89&( zqpsB&>WQWm&TxTYM%UOhv0yN(PDfsOCh`u){*)#x+=cuqEK!nt>Ff%goB5Nt%}a6G ztt;FqzDZdY?M)Cq1D1Sh`0+can^ zz)IuBKmYk<_@Aj8|E)WpT3vnNuW?wknPaAV#EjDFTT8S{7c z;U5z}ZP+2M+Uk{UyV{JLYVS@^!|hl=N_ckL#Y;nLgNtU-6A?<>5k0#o7XyldQ3=1P zI1SY?u=SG%rCn4V{cx&iK6q%8VgK01-1@IS&}Y7nx3RIh{LBHKgR^kGrMeY-JBBXoQY2uDhFi%E)Oj>7+Tc(rFCZ z%MA_>3RO|Mq>V6`1mAJLaS+UWz*Y;0O4?7Yu(uzvSnM_$ zRUKg6ZSzlPaRA<@u&|Ajzh=i-ifUx@$eZ|qz{|(a7U#ZeFgjm0$9(9{8Q5MQ4Uk{> zxLMWMk!bGex6t?kZn)okzoSm1(ORR{Z5I{O9co)25gFX3q?ADnVwV~!%p_Z-g@zy; zA}$XC)uMxyf=jkwd0gM$i51le+6r)FO~>J!eow;cRIN^nptGdIoZ{If-dLjeUNA&Kwk5+w7UQGGW_IXJ1_xWzqDvoG; zoRZOVay+b=rLK*(Lrs5va{1j4|9pCI;f?XHzf2~bxN^_-!atSO7rQpx#eu*42`naW z#J*eI`q=wp(EqOA`FQ8^^~=+{D^n3_f!TK&A5XrR`qwGdt{ynf#9F_Y|a{kxwZ&mC9)aQ97LYf<3m zCXZk4{Px?=AFuti5K`Tm_F-@_|CbLBzfVX^WQQu+xtTc{IfiMC(HY)tittX4cK792 z=!B7}bYS6D!-qS7+qZ@6sw35WwfL;F?E0Q=AAVeE={xczWPM}@1KH_8acbsNS7S!d2jXB)WMA8#h+`yA`j#Lw2&`c*{X3?5GE%Wc@bS~%g36c^h%=dSwuJ2T88SWwQl@q$jN^}cDh-q z&|G=C+Mi8x%hzlD+W7a-{9k+dN47x{`)N=ZFqlb^A4*B%gVRz-5}1D^fdP3~*`sYc2B%jd+<%UiMM6VFh&2RQa-|) zv+grqEL+$;A*$e+%M!=ow*92ji$Q#t`ZEi^9GDZ=XA){KV0LGdaD5SF2-;iORFRc~ zWvG_6uOxAEH9HPi=?ZkgBHLuk&@h%f1|mz5CxMzCi-b#?9ni+*s`RviLZOYmlrgA5 z0xNr+Mm@noRLkoQ;`nu{6tV>68IKRbxK`+{Wsoh#EikcZD?W>Ld0BX_N?m%liw{(j z1(m=EY{zgYwGNBSdWpu`x{r5%m|I!R=6IX$h;t``UIt~n<0a?3jGZ0C!Kn8UU8Srn z?Vp`w3YKF_=Wv2>gOBlJD^Zs}0u9@f**T+(V@ zb}5MRo82!3TL_~fkA2ov^dz*w+|eE#5!vgKg-{wIS&%|*+3%WVb3%tQq7{faJR>B| z#is&^ER#lNtw_z}^_&>`0}8?irAveDkwjr5j&=f!hU)*BBmD*wbb@Re z0QR9|$dweg2#_HBxGNZrZDSD~kuD%qp2DmOvKCPc)aPgwef{8xjI)#pHpexV7o-E^ z`ARQqT8{`g@?bX>UKWux#|(zaK~js0D%*@T#_pDw5Y$)GA5BUwy}+q;_uY6T@!9)R znN!C3_CkFw8M1>3dQaY$Uf>}iV>UdBO)-#*V-A(v1Gr59)fNAI z_i3zO_jdfLGVAP_$~D1Z&nNv*pI>DOl_P`m&m;cmp#Sn(EVnb`l5)0Sfv)KPUI6g@ zlDut15e$E?g!&KhO{Z>L{N>ejc14KHi{fkv+x(t~^k029KM|h??eC7QDB5eEdi*J% zJI-wAv6r=9c0!Gs|NFZRq|PLbosHX*RZbjhb3I)EIj;;;pjbOl>!1S-u9RO*~%oIHEq8(5}_ZxA6e+_dGELKu4IA%@y+ z@Op>n!hAEVN4kDT_dRb(p=<|>-PHj=cjl+Pxt{YD&eLa;?!nM`cf})JBxeU0$;BiB z9g+}}tUL7Jkq^i8?c2V1VUwADRn?5bh;v50@|;JaX;QF;3jOV=6m#POLAyC;AU?9X zTkfG2i)nsf1u24o8dI)z^$^W?E7I+rtMQp+j9wj2M@g=*Ve`r2`s_3_zv`CMcL8Z; zC$2T5gq}?`|BKapHzc9O_v4f81^NII?GssO{JP{WvFo+yWuDzS{pug7u1}fp&-HdI zT@tY-vkUm=Ns->#rS7+5K42Fb1Dkuugfidt{fVG+*DH_ySXGdoy4^Z^6Cw+&nkLC;JiVB}dqS`A)I z07mKsjyDM!-z+p(YP-8eju$MnhX#k=rw88q>4~06NBAJ3o~eyO6(Eh`&cC{E7^&aC zJX_%666@Zij~%n!w`#-+@BzLxhF^t7j#E)KDcn~b%GE06vKh7P$x41nU5;9KVox(7 zcQu9Qo>Qzgwdlo>JM*i(By^}&E|pW^(q(_5Q7WI-pxl8gLH2`-abyO+cVaJbkY3~h z=Nlp6xLhP1qOT*y^U?jna<&ss4!AsGCR72oSqb7PZ91(9$rv&Pua*acm3QwKARX)+ zri{Q}QH5iHBZ&%LcKI=Brm8&fUoM)qbRav`LPZZ%wMtp`|p)=|Jzx+ zdTIUm=o`_MNsg86cYO&SXWzMo#b{W^y;{AqbMCLQfd`iYE*@>%@2kPzoZNjHyl!>= z*4}uE_sIzZ{Agi_-U<5!jcjBz_kLDwVZE!zoN$QUb?R ziyJFpQ25$Rp$f37X(8_`F1ucI{5|43U5cDJkaeA1I!ZKcCaM;6aoBmU74ZcCoTmiI zh@r|+`0)*L9j6{MukX>Q)FH!SH6{@N%1EGW)ze~uv6U`PsoH&hqp$EU zEx)4KW=DdK=fnkP->KVg2LRJgbgUn0YkM$8o}~O@+v9!h-pYfy2=~5>XAOh_%WIz= z+NvwPNp)^?6`!^r5Uh7E3AR&3ntmv|!1HI$jH($ItffAt)_1rUGcg9b*Zdkkfs67jY=VN5gDOfyuoN(Z^tagzbHg~251gzIpZfh zr)YZ3ZzWb*+OtT?Scr`aXYuYsGd;Y0c92GYBCN*5Jybfp_!5=U6m1EHVjbNc+DDGQ zd}96P?#m(dp36SvF^!2vy48L!L%nUc1+~<>BXVnrm)<-(E43gKt+rt3-FfHMgYUjx zPq_Ku%bU$UbYb$P#9oaPr;p#({(k3e`?+5x?tFeS_58TD)<5Rw*}htIvv_+w<+r3~ zo9$DO1V8JC#e}j}hIQD$ zsA%iKXn%m{1<`WgZB$;6KvuuGyB4qes9bKR61cKlY<%nVTk+%R6}@vF^g5(;x5f5@ zJ69ekzbbODv;6BIwkoOW^OX+@NIREos)eaisiFeGpR>Qb-ivm{IPgG@d~vgfxlHJM zdvcXpyP-m(J^stxtAy*Qp#Gy*3=%r1&frRvWx-Kp2)`Iw%56e*TsgVqv0$ik{JMdJ z3ku~&l%pbUawB51xQ1}PEDZg`uV(YjgF&vatU(I8FAWv|t~FUk=_QOh(1rwPz)SS~ zEdag}^q$%OpYy$7>~*^UEEL$}$3dQM5Se&Q!LGhRm z$V|b(No;XpxH(=8A}i_Lo2Biex?J?kDn;TODphhEB%x8IXXz^r$*7lNrOQJ}U=#b^ zbg(`M$T*yWCTd~gB-AnWXw+0eF=j0vM9Bb%i?}qmDYRk;5#GVjUdt$?6kj@x2eH-6 zw2Q^I3e#l>#sLd0t??8B&QgF3jk%xRl)Gs4EId?QEp)u0!~dyKmPE_QLj8N>ueoUf zZtgL|TZNn!?Ox}h4YZa|tbWEkXsW>g5f_Nz$Ki1nU(VF?54(XZzOw?g z*fj_xsiq->$q4f03wv)|sM7kvl23<$6F{q7h4*ClsqRx#OjfUNBfeD#fbO!*8hr#% z+sU$rH-%Rc5G@#TEW6{NJ_9)hzXSeOh`)(P{fYr!M(ohW4GIYGQOVl2xyYx_wl7QE z$~a#}(x)m<^TtRgFn|qRHAIuV2`q%%xCHd3&j3OT!1#w7BY^}bb18s&;wPY%2J%9{ zV|Xv2m|ZP}{I+;x5d?q#2T8f~QG`#VLV6dNm}Z%=0@8HiJAA1JFgAK7%ZesonEg6S;xZ3bvq zr@YVjvNtgFqu%)+19&>oF_2>yl{R>6)Wc_w*zG2$ZHU^1|i=_dc)mly7uzh97>_nQZd2X(_;=WTj2w z2rE#FD2-W}V8S{iK2J z!u!yHyt%m5@(xPW2=`T9(YI!A|C}h9nLF|XK46DFc+SiIu_^Y-ZpwigDy&%R4h#kA zEqxFJUGCz+;BZZY&<5WQz{;-WFh;DWlODbHY!X;<2Hb~k{yl|{I@jrDn>^cywl;~i zDDaSnGOtq=@DbGX5BxF5s^T#!!-B{&gk~wGEr!-3)hc{#)&0Nb-rX^r9M*hrQRByl z(Svpa<5?g|X@9|*S+grPouGf}%CJ*7yR9mGs2*sBIG($?{FAA2f>kL_Cdg*QSu>OL zsxM^5<>8j0|62SX#QjuaSw!LMkjr6z-}~t$+jC`O(-MR3*ut;*k+w|io~H)h`fguz zs^FMaxU^jUlxtbk#yvf{rh8CskA~&i>97}*TY)b3@kTId;f0@wNNNqtZ=LgOf68|~ z3HR&pc2ZmY+aTId>=n5*8MZJv;p!cS(H#f32o@8$>5!WYXkJ_QA3s(*N}T zHMsy$wf7KJ0MBLuY^N>`sAL#l%auZY9w5TN_`cw(mXE1IfSgK+in?lW<}y{8o{a6+ z>DC*NE6i0ysOa*|R#!WKorgAmb$zE_&rd+1((N)%e4Ctz_=*-n?aT_|F?GPhzt8eP zqqfgTGv`j^)rmE}{UZUY5q05=o$G8xNYFWho0Px@KkXWRsK1-4)_zHaeXA-Cr!GJ- zx4gTb*X<>oYd;-cHc|DFL3^4A7jg+00wf6Dixqr+(e%@Bi;jX1%$+gV+w*>F z@rz%qu(J1cU-x+)hp;IYnc^&gex+E%gL9w*cUgW;y<(6pwALeMBto|iA`b*b1_eLtiyY0y5QP*#-I4f@Ci@B5c9{%!KdbHbR zb*by5$FX+%kmWBPW$z%HBoc=uTAIAMT zeC3M2+;K_G{9DgV6Ycx^eHHQ-2^Bzvsr z`ijdH&D)!*t|$1nB&^^=DgoE8KI}w=#d;s!`u*C!&-6EvY*U3TU((l+XheLitZPep zcDApDzYUqGg*5lzJmv3jpDud{q2QGb&sBH}YMIfkEs9X~WJXYhoO-QZplq(X$Y)i! zd{n(4)$*?EyEnD1cq@f+=*W{S|1m`EH>qHASn`O{Vhh81EeKTy_S3~ltdpJk=F`X) zN-koqFa{fz%&N7W%i`}^!Jyc84G=$Uuou|TRT1Gi7X(T^`c6%;KYfOQVS{qhRbw3- zEsyyNqx2@Aa5529&8a!k%-?;Px@vKx&n(qwk}r%{)e11*HGlJFKHfe4sN(U|;)0-v z4;gQ6w(@p=v`TG7Smk@fBJ=p`1LXKNGs@?nZ!N~w$5?_V@guONO9frKL@|p_Cp&>?)Xet#+=9axyM}1IMq|+SQj?lf zgjT-o)>=>J*;^&DJ$boj-@eHxa&C7OUBgd6YH{boLIQ+RWpxYo6GXfk4Z(Wv2iKl; zjE09tqSji~?{)R5ggB0`@mp9bUa^y5x%N(nZwSC44kjWTWf(cc0uE~>)z_W+Z~pr9 zT`$#hcZQ0Gt#9mPX5zx6o_B0MvzwaqyPJ394fzg z?%LH)uARN-hz&#GF4}`tfKwpxw|_?#qpm$$|M8x|g{!wzq0ZOa7iLL#L9uQmOE;K_ zTn`Cum-W!&u#x6_zMml?mag_b`Bz5zhz7Bb?)9>j|FBIhw$fW!!^!OjD&5Q)u{f5r zJmK%x_TyZmd)tCa3G7KJMNHzFlu~f1wsBp1rQz~de#h!oxODT1VqrW{Sn_z0UCSxa zY2Pw6$q-b0NmtG{Q__Xo83%8IDrKE_v-KT{>t^IUA_MDhJuMy$web+)Mm~O66m-VM zl8#dcd*Uapdh{Q~6taVqY@Jv`T0X0n$7NM*1uIK6=X=uY-s%{nLQV56w)?u*%y7zf zO*dMX7Yf3Q+(wBhSoGE!DX_DbY(PFmiZb&yJM#2=obY%*Q=*y|-Yb zFQ%}17#(;$)?T#{B&6t%0GM09pnz=E6a={Ye~Q1L2m=tuiM3!L{t5`YWPn8r4GVlF zW+k_|Krl8l1oc(otHcDUlm&u%ifx@ekx^g!WV=_o*ha-)1>W(B_F7GS*t&5Tte*eX z*M&2a!W|0GQ=;gU!=8YfagMJuP7h-{W})@w9ka$^Qw4^p3fbJORHpcG9grf2MsZxZ zV)-uenVHV8EK@KQQn8ShW;8%Z#i?+pX+l4AxV17M>0xMwLXa#d6^8mUTfh~@)Cq*r z+gbvIo(=)pwpuPz+!@MPp)vc*N*bhcvXX=qwln^M~+2)(8-6GJ`n} zkn7L|P3C6l;@i=oOq}RTmJuWKEyd@GXRjPtUu9j>{QPs0yhb0%WUQ$vPD?~n=1g!L zdH*@*5%<`|UjEs8cTIdb)+e1GkN7>}h|Y%7HZm7}ZJWOA^S%L@PkJXad?yHMY4L6Gb`wl|P*U`UVGcl9(7{Y27FGwN>jp)=AkPd#%1OBb$?h zgA~z)<$W=XdS-@==P(f7=FT6@r7Dp@D|0k)VbOXh$J}F$sZ5~@U~vAaGSb?^0KNot zba&YIfUC?flO#&8pdvceG##vzj(|>9Lfa(K3hg4?G)xht3v&dNHCaw6L&;x|-Xl<~ zpo$Ys&_b9dkP1ghcv9$kSW#iwTK-utgF(Bgr0mJvxVdB%9Lnxxh z+CMprYJmOvI=u*#GB86dgJH)c`v)ih4+a=TKp!a}Grm?9KtH5m1Qd0o@#{c7`((v5 zLkMuzfqM~ImrJpy$2;>r2)lzjMBt2UKQQ6F=CR%FK|ru%m=zufz?I7n)U&6yOA|lV9G-6W=Nh$H zO1Vbdxz=N11gx?b(K(J=UY`armI3g4W|Y07$wOfz2gmGrug+85+ABIzV2$N z;t+L7*RSQ0F&V*cfnjv$PVoUx2EUCsIkrOJfR`9ow`K{(J`+G1(E0p7=VsIbG3i5w z%Lb;#?F-aOF(#%W-lMUF>7m8A=0{W0 z2D%Y85!%{;>vrmt*U(0mX>{C%RFdh{tz_@>=MTU zGxv#HRVDkSBdIh|Log-UHls%Q9Xp*QR|Kw?%$*Nm_B5gdB# zLftv2GbHF43vXBv4+%pr3rf-D!qTdqI7JnY(OmFgdU$pXSOctG%hoL<1toC^`)Vm* z5EP*YpEdTb>vMt1U=@Q@InL~}os$I|!eW3W2O4ilR>{**3o`eH z2r3r!k;wf#C|cl>1=q~%vARUEjY`&iTIO6iZ$BW-59zERNeRSWPZnW_` z&-DJ%(=%r-IkrcsxLvy)74hkBgWCSY7l+UP`Mdkr1I{3KN!_kETvU*EI3~8h)~YWK zlYLZgu`yWO9giJ|*O5U$(XK5iLBfsHG^njRbz~&7D-e)30nYBOIY}@aO_tWIvqLo9 zvgs5zvT4sAVgg^-`GTUeFDLNd$E{Q>rxoc89x4vs1>0gUGg1nLVGcxo zRw%8>l4SjAg(qna!)3lE5bc7Vf!(Q=c3g4Sw3r!PBpf+nj#Sn(oAj+U16hvN<`p&d z+-I)3X2o|oko6?J8Vbx&&|G)zp=X^1X~jg#0zn3kgnd?nC2YocPm7Sr*=B;S!x3j% z^ylmA7AChpX9G8!*rBj&7zB&0D$krG$~Hh{SDpQ>Awt z_}U9~LdRw-BXIC^g1gBm!LSkN9}Fm{zcxRgbxusVsA!e!(!Dj{ZlOPQ(p|+OKPA>(Nms_%QsG@4!1@@Vlea$g@-#3<{ z-HV(_?S2J={%856t;HlgET)64NukTCvjjCQ=*Fs>VLV=n^WIf=`@YX}6T0>%Q*ztn z3<94RrmLK?>Wx_)aTE?5{7|CRv%YROjIgp6X4t-IfRXLYYL!9#HQ+|X+1@I{>$58> zPcp!zuH~w>Ogy%FoIJnk<&gyX@uoX3&}Y?QQM$3zxiYL$b)$GI;nB&q&j)`b|C;>3 zBk^9@)v<`D_qIsn8kB(DyS}sJw#L&=RWgw^GQ*P*1w_=kEMd#k3_aKq z^(9`=>{W}C$th~kQj0+yf?r&yw#ngMQo@tmbBi{Yyqm%`+eG!?q@{a92)WJhsigJF8L9cpdm(NmKu@!?Z;AuG+`Dta|4vvyc%SZ>GZ7wVbKCtN zkL{sH#*uATWOv(tc)?I6;V6w-XCM%QcBrp6hHI5L-U!d?Qj4Ll)OAKC_?>x?S=WR^ z`kg>HEm)%UVm-JO>r2^H;^*AUhX?#i)K*S5MO8VFB8nea@v*Q^Q{ z$&X_UJn^j77phy$z3!|#jB%{NUV?F8GUX4W*0TI@Wu`?I0(Gn zw5=H7aj&lJP3YabvZte-DrmUDFgyWGFo~9usDJ{v%)Tmt)eaCdUWoml{wNVI@kdVol#2&i#sW>9weOmEhYbv&ZGd;XST*Egpr`-#%%(e|U^ zF|bcbpp|g`!DvwLR*=q#dwDQtJhW{xNbix7g8Q?g6Eq-L4Fw63Rf_WH3~T)pnUZMJ zvZPbdDUzadS^LI*C;li_^{fC3=}70mA2quC1u-f|!%|^__8SF6n$(dZr$!L6lTH(a zVd`bj>pEt9Dbie!kG`%D7hV-QCyFxzLfvK(>JU(=j=4EDFugJqQmCrrYH9X504!*p z0*L_PC}dX-hy$Y$gqci1Vk%cBHy})cC*SIj|iPI)DgeJv^?uqmlc+3 zi{_yx>uOzdL%pv3`Pb<$EqAUKJ<6YcD^VTucg1fp?|1K<^#0WIoUhv~pqfAApF{B1 zi_uUOvPR8DWlStZ*JqPA;1mebbsq24TYNZXZ6L=T*FAl$x$SfJ;g?Lz8HJ>u{q{fa zH6Q+O^x{cAwK&`Z42Ej5M!+aIeqy+@K+Wn>b!X;FPaBUN4MC9#jsB3qm?tvxG?qkn z!8bv*b&b%I zxd9ulC$D{YvDjssqbu`9v6&JZ9x1o#NKa6qJ@#rP9PeD;dwjLT zCgOB*8Taz`r`f3b2}8Z0E?|(l=hdk(H$lwO)W|Dc_jc@%(N-u)Xd6pPBpkdi8J{?K zW4*D}*ti_k(~}X@3sdiXPi16GRev zVe#ShzQ1im$#vfM{uWyGqo^(5;mgqRC0BpD+sAGYPc@*9-xY!;X- z%UL5>E%NqMQuzMHYSQjug+l!Isq?=d-uyRe^m%vHVf|106HyQ1?*9nb^n2XtAR~6( zs~!NB4ahdf7zJwtOsZGC%pl1)k*whM*;J1{&iJ8yosj9qbd2G% zNAdHm?v-u+qR4BvcWQv+*4ZFOm8q1mz0A6Gobv5bTVpkoij9NK#`@h6|Ek%52>N0^ z}P^GfRjtUp0!0 zwN_8;d*YUZVm!I;9b*{#kv%&=JoCW!U1P~0S1R3-PnS(qD^`0XRlRWHYus5YK722Abyp|JjLKWZ$gF$oS%+Km>L~yj65|7n_^bHomq)xn5pO2h4om1 z*AGam%h&hsVg}AVe*4%(qnK)^Q6!s<6HHw(E#GFin`^XU*ppM$ODZX&coe$8T~`_8 zgUBB0cOsGjB&(1kMkbwsG{jo+Rdps)na(k!aW=x%qdQDYSh|C
      RCR}LZjdP4jQ|S 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

      N)VWuQ#$Rb*(Q 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%0DM8`c<*VSOh8=ZeDd|f3 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 QyDG7-`}3i81Tsk8+OC&ziSX*AWHW7;XJr+y&S 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%0AgU=aFR z4c*#~k~(%;kpHm^2O4uZu3NmT$O{1dVrl`@ax(pJeiV!CKp9dWUJ#H#)Ye+P9YKFr zX-wfYTwmb{R^51hnf!p778gSoD(=BU1<0&-j@X@Bdwjs8Ri8ao@`uN~jvaCT0wBE| zctP;JTnh0ZE9H_onO@28&yv)w?4cH+-D)q-Mael|)qi$w^~3*bTC;D)qvPxo=V(1% zhZfZO`>KXfv^TrOfpfZeWtNW>tT;MqE!mWbwCfDlOSu>dtv6-ixif8n!6Pn^xq40J z8x`KcT@a^07|ZdK=&jcWcf9Q)b(hU8mA)=_x`I;$br+H`+&OUn-`BO%gCKSe(dCPe zCJ4HI1MG6vyUc8Q=giLvz#2GiRZKGBk`<(@T@O*o(O8gGCdDtw6XtgRIc0TMw|j8f zTgGn&B1zr~kEwFxiG^ctx)CaxJ^km2B6pC7*zH@uBpF^CH#hk6w8?gV?#H6?pk*-@ zF_I&LEYy+x_C8P}Y*cc?^kab^c|Vi!V|q=2%!*el7-=!ovMR~R#;Jr5ReU&Px76V) zXMXyWef8OUb@5F61x4)5@FbE+e_oq8>Pk>f)%^I(eCF3pbc&>SsAOQobd#2UwA`+~ zjou=v)}tBw!Hk+Lm>|e0g8ZIH4g8pA0i;lz@7Fu>V=Aak#gi=|bYIjby!XVEKZs(Y z95}89oD#Sxl>6AnWJAXCKr$nAP4N<_h2h+?oCeqUTx%1UVh|PVYRK~kWw=> zHOE>sLmDBaRxCfoZn5LvklP#RxOQmekpLE0w3aHo@(G7M*_&)zdprO-G}H=sa+yFZZcUbIC=dd1jnYm-T+n2fuP$ zyreQ9vUa!|kMEmmzT0Ai4`GD5e)`pKPSKcPWde}zw)n?B{gG*pM1~199NA;zgiVKJ zf~U%$0MLGGVqS1UTEhvzv$FdX=E2Ky|H1?!)Yrs)^dGHb6Ds!7%#Dhtvu-7l3Y@l{Is2Ml_)XQBH#gC=v7d64i;q^OhYk0jFh?ouLTyRv`z>GpffV&2A?^^ zG(+K>o(OVIz8Ir{AN2~BHEHGALuv(GuWlHf@WY12FQ2MDsCHY1_QyUQ^O1w!XO|_U zU3ash2kNgZ_4V=joBre}9pxY43~o3=zu+G`plXdBqYc=02^qO$ROS*yjfcvBGO&Td99nZf@VLq#W%JubNa` zQlKI_H&Y6ZG`7!84v(XQ-C)8cHO3#!Il!QK*Z_q0#<@ugO+ zd83-IdmAxqp1{*XWXHryForeTrCxa?r&9UdHaN*?`S99mgCdcL?Fmt7o_3p;<8LMi zRoa$U6H|Aw@dNKaUEB4#hRcTYS@f>jYQc9NmB#7@)oII~AjC(Y(xQ@hR52MT}I)^AS_YgsnyqTnR3c^bXf}9IWaraO9v34i*H`y2(uf$L^iXzSoiGb7=b&e^n zi~<0SB@*BW)0u_%@Ylcn|k8^`l%oJh1mwIy;Z+OHs6!^b_nq&`KW*H z7;xr#e5Se2#skyEfmLLnPW`>+eV4vLQGnv(Qz^v7GNLADjujLwnAq@h zN2NE-sLgP^M^Z$0LQubKx7D#h<0Q*w$>@wljV{zkztU?bzj{f7=446?9_?oo5(8qT za{Q%n48p=(&{sOjx<|GsWdmVHENJvWOTf9| z_y+tn_MRksDMK7Ibu~e0c#@-NoJ>@B5hdr&PPW3IWyXE6&%g)d9_nvTYA+J10%cO$ z(_IHc7`Sr&9SrTQF;HVn-nIA*RypduAP2JyfW}lUZvn=9jENB4j3ceLcWzN?H7qju zI!UsTl5YR}`Aj)Yi)6s&(v5r3|Qyl+;9?h}=>M2Xs6CrH-RG2me|j zAIXEfY6Th1#dmz|SOrOXz8NTwYxR6cXsU9;w9_Mp9|>NzGU|&2$wPQn9c>i>8AZ9w zy@Ao&K0&6d3_hNsB-p%*U(CwNiA&e^Zpgv1QxPTgQBZ_50?jjU!NRnv4!vE~+|NZC zlaUH_D^{A9B>^d?BBiBlB*j17jvV~5?} zUe>*P;#Yczki3zV2sgHav?*|->_G1rk^OMP3Y8qbdS}K2n;DZ~>Wv$k_w@B1pVLqc z-`jRV3AL_K={h@=ZonA_aG@?q-&1ZNM?Qe!JRv1EbDeP)})T05ci$2&Z69{&)62Xry%7! zxKP7Xj5-W-Tjs+>p%DmGjbj4nu0|^G)0?C2n8D^q8o74cJF8x|P+wXEG6L$*==`?= zAVxCfdHo4p7+H#6$f?A4Dq6DpGouKMRx`-j$nNxDjPdMC_VSVoI1mgv@tE@}#<;ZZ z#hm403?z46KL&5`8z(8_bKFfT1oQpFh4%W>XoXCW^kOjJiMCAObTKa+n7^&PG4*NN z?!M3BgpYXu5Odz;RAGsVF=vWQ}=#T(h}-EafkLN9YG=PMH#$LH?06I{{1x64~6$vwP=tJ zVCth@uE;E=ELJ^kt8qmk~AO`tR=dA>}4`K||d`(~?H-yQxxNjRQ*_ z))VQGq0v0`7XA{IMK$B~58q=Fzq2vx2A&59OI_g7-Dm2qT+(XM;7qMb%aO1Zc*EAb8k-m9if(zapF;j zI2%{etwefVyykH@AgqdBXn0&gP;rxlVz}CGSqb>((z2Xv^AgyX5D)(X5f|5x1)s%J z)Y?5tiiFH0wXoPx$i_k+MjsYcfu=-5>K+?fAD2r#)s-T{EkF<%7U)vH3f4P}GNPyi z0-^~EP3S)m#bjmkijulrU*Ez*%N)Ww!t|>G2SrqW8bs!;?m~-r6rnG3I(ZTR#S$M< zk3{UK`udm5sDAh_pPp}DxsY6UMP_hF{i%#ntyRsdb^E_3NnrqJRxVi%39!lmJzwpa z&hze{#N8D3|CzKBzbvsBAxFP;q(+-kXA?mp7%9c&;sCTc>u!*DQOSz;C`+N2zp0k~ znSt67K+(KGl3nQ71yspN@ccOaY#CDJ*+?Fz)wlaKG!J9Q@-id@@*!;RFM zq;O_ipPD=53B`Y?)Cmf`(#x*6t(`G30ZThbtU$iED5KIsC!{|Nk+zNSHllCN6Qm>F zwZ{j|0GARczk?`QBN#n+eV1FDo_k=E$WuBCycPEMbY0s39-nz+bdw&^@VSvpY(6kD zucOv(W$8gw;z7n?PR_t63rgWBsh|hEl^J|tBnn|w=0fdXpuDBfnB3HV_6rhZppJXc z5Iw_QSB?nN?mhK{6O@l&Sti+ky=Yg?xS(p~xhmz7z|&A=;zZOI+h(-l|M}n0w`51G zHJ^HdC|T8t{}q47eWC}bf!LYKSHwGNu^o&j4_5K1FLM>GiqRn8r@|eSZ-|aou+^_A z_IS}K%R@8^Q4k6qDMNAYc?-KU)=N<{OSuvJ?)rIa3CsjB*;Ti~m?t)1&>9n6fWs%#^s|nosz#29RvHbO zr#kV&eb_S63h*7USfFhN#K5e#VNsz|8e@tk+l?VXNTJx%XEJrjzx3=9$AKSXE5Uwr7N+Ozet( zE*jLYXU-|a9|~0)qkV^YL~<-no6c}EK@>C#1YOkZc-tNrC0jh>M2zBZ?bI z=k(UwH{{~X>G%a<{E`NsqY8y)9@zWddKGz)gwdhZ0UjWe8)wvtEp4y^r_F3YW!QcD zm~SC_;>z*QT*;`Dp3(MPu)`i-vH5Lpg5DsmzIA=r_AV{5V=;Im{6X=f}C^fI%CXOMkfx zC>h<9ntop^Ou>@w9kA98EYLwRjr`GYvc%{VT|L1|+ebU9QG8_sbk}C+ufAZN!RTq# zPHO+6v2f-?lC=Ox8T=plj1fuW@1pSo^qSn{O`NEz#V2e9ad^?G6-E7{DdRrCKbK%+ zOGoa)AL2#X0lgj=ZQ0(GdNKC2lSG~jqCxdVoQZQBGUT%ykriLGO*C%V_1 zxvR&YFUNjdo`6R^LzpK+kFrMbxknDp^RLq#k8LUZPr!>aVg*Q9)>!hlr#TjiN4k=S zt`T%ZH?J-VRqdzq(oVO|G=a|Jd)rP?ZNm9=2);P&y4_cj)ezr70g8|~7LsG2Ty%ay zkO(OZT}KxZ^U<32$v)DGU%htxv-IjqKD#}v;|j2j;f_Z{TicsTs@UBgLOuCph42_UYd**fyhjE;B$rWpFZjfapMIc2qDf z;JR7amM;lYxk-Xcq!C|qwYN(es}1_m6&>b|@77A_;Mt|pXDjtRwRDVJMk<}w8z)^G zEFLnres$^O6$z!$OJPo%A~L71#Gr@_t` zQ$y3`!l)EhNM0^YntLK+h0;^Ef4dcp_HDiX_=0V(e!X3n8ZzLe;*B3obsqRSJkUfO z3K{KILKC_Xip>C^h65vrXmi5XY$se_fBR6+*wspz?7IvN{lGFuOZ>#H!m6c&7Mb8xhLzC+Li zxTdA-KMI&9-j2@SN>MI;QP2>iZBxWF^tksoTG5pW+T=tTKxdK1X|inK>=(_;?mrxK zaO%-3SidY&#E@&QnA*^dBE+^|Va)^lC_|y&dCTBdEa!}9r zZjzLrEHl}|x-BCXO61UqqfazD5A6$6TK6|PFrhVh!6}u}w^a(r3V^+~m>ay3_$6X) zHEv-?x1%It#|?Zr>%y9AK;IIl#2c7>tMJ;{5z|zH7=^n znA71V>8bw3Uxjjz97`NR?mOrnLmLGy^m>BzTvePqU;R_3@9HcevDHW=4?Bb?%-5CU zByfmCAPXO;>$^iYDE~YL!Za1xna(AfAalnsY$SIL__v^Ws<48lOhubPyEEW)n#}vO zMExAkkx%%cB(P~&!%H6Z4Qpr+FWSSH-~uIN3%snd;e%WYR;)Jt=7Pp_XR zDo|4M_XPNkBkfe62S}@FcDFHXL zj6FNsr8${>?%-M$ntP-7#9l>R3?k{nj6LP}1j6fn*5yVPJ|+UA2eIKc z@RM&3Cl=OXPQ_Fy^1c|-lSc%(EQSoN6}iY|gF>SgSh+aX_YJi1DUm;8%_Qk%e*pku zi7}tLbEkk#IX)f6PNkH)VBmx}!n@>X3Im^fp}TtmM$te-MGphu+*3NjhUaMwmU>GO*`=f1(e2iYd!_MY z+|WC5b?TBTlA5dXuwptYa9<`Sl^K`rB^QT~kfBE)kxVDfh1Rh>@Hs1M?`QAaeZe%i zvE@#N<>_W4gT(d-gf6#_he@K3YAUJ)#k%dBrf-%x4?fQi`fW7Ar8t-uDT}z)bl&CJ z!5zE`@+%4IEC9x>IL@8C2`|n&!r7gw&XJx(8(*qXgAxN~e$%9;!poIS&Iq@P5&`HbW#e2 zjTV$3cW{YE_wu3?%guRAy3*=oV8K%_R>M&z5euB35jgD+BIgdm+oq_dr@YMr(uYhz7 zoIR5Ob?uo=TQyue5BawBonGTzc;xzY#t&e`DIU*U+&aTmsZmsCYwk8%Z0E_ua%Z$E z65E@GGI!~d=XdFIjuQ6ned-;xL;CUPom1IsstPv02}{Ex*3_SKHY21vmTVd-jZ0_u zXG6hx25eXK`O989rjItjY4zb&tCMJ!mS*^haXp^x{WlZ^O#&g@I5SSTk7o?yf|RX6X}_&bEB6! z8agvtg!@fy*L>`hSQI>5ra{Ip8}zg&H4?SVs{75giEhwGb!S$sLC-=_9%kH^ZXy9q z%}e&uQ-U%jhMF;%Gb*652(-!ncWm?aAXcU+__U6&Yf;`tC^?svLK|SOXSf@%+Bd_2OQG9&#|H`Ph|E;b3 zG)GUCY&8RvBN%J>waHgMal$4(ww6 z8x13Me{afs52(z>9;rR2UkLi>4xZ6^TH_=SQ!Wf@c|Y9hm57qcXe|V$Fq;rryRUsC z?qI}(cKqYRYg_ijBAvXS6xwsc|Fe7z>gbp48g&F|36Qi-gA5S@eN8`c6nuEB`?DPI zOu6HIDV0o~iqhveyd`#d{tYM9q{C7&Svm}pp)$!qJ$uWSsJB|;kSxHNq=fCerISVU zycuTIKdzWsfbj;s5gG2Xl?zoyjG<_*BBP7$Wn%A<2%K_*o`wi9MG5zP?ChCGfNv@F zQqHGz*rF5+p80txJVWARpWW|3qQCJ#Fk@6}@_yR>ChvUhild~DhApxU(+`3yxJ!9S zAr-W=UbOx|Qt5$p2*)<#4lO^kn(l%tAZfu-A3p_+QH?5oU!DHJdV4sADkuO6r4?Y) zQ2oBt?krF)pgI=(XmX41*I_RB5=)4&!nLP$jF*bGTy3%o_M2E;cpjpgUk602Z(C}Q99dRJv;)#$$4NJ+*2r*BdLJBH#pc#3)3Kj z0A%sI0iLKC{kNkA2CjM?IKRtz#~S2m=LCi1-7v<}9{9q=`w2izg)@YOrk~UklC1Cb z%7>q5*~27$U}Q8}*F=l~PKzKhT6A0S6BwOB-XWyt8L=0Y2Kbtj2mjVu8EBT9+`Yk* zwq%^&_y6~FWNDhdO(5KQ=i&{A6qVA#4ZTa(M&ogmVKtPc+s!9wQONn1N~#ju-u+aC zWX)?V>E}PKortXhAEMqdb#3x5?ax~SvtyX>o>N2Q=AbbFoJP2{GFph>34FPo4yaGE zg;b-#Q2?-bP?E1qux;tQGMh|g>=h9ru|ymLGL?a+-0IN*&wVx6Snkauj>(71{I6Ce z)h!^GF#JAR(8=eLXnAM-5L&GY+-Ed`8d zC>@=4L-^`#2~5G=`EKsCaS_$a;aUK@HSn3a@(GWyT^dMB1<*homH#aA+01Ad-C+i)&;#0D3@$bjZi zp40Ca-0s=Z(0ymt?rL{aqJziYd_p6;=fuIcR5#Ks@+>-g9wVPBH&)xLb6!CX|1+lqtv=!Ra zd-${Gmz~Rgk;mFM!|ky6oWV8Gj$##jc)R}yIkY~@xHcbYZ%&(?5e8yr+9JQlk^EY? zu5#OGqSS3ri_M~$r>n*8^BY#4o0k^JfgRu*LHno~7IghI5cQfxpt143hN`i>{5d?j z#~y%IrTukAbB|%wgxx?(@T!j|OPy4k*ju2#4r6XWwusjk?^Jd(O zYsg;n8G*8yrW)2*QUU!CV!tK&wuiC{-lv5%^EnGA@j{|6;*$F9ukR3eK3bO3{YR1| zJ7?3Sf9;9X`i+?b&xOmDHt_YL;dzx=*FR=-KPDRkZcvq|7rvsVr(V6gJO~Ou4e))9 zxSQCIW*H@-HMdmY(=pP8JxjhRh05z{kCM0EC2l0oYI+X=2X0k9ud3a0S$-~OoKVSB z89}KqlTKQi?Hb7-1OD*(qWv>7a9T78C*6Ds$i|MQ_Bg=lfdm6e57e*h{zW%_%+-wI zQVI>HbT2i@2oBtWo+evp8Ec>au{z*r?-`0C*vN@b*W3u%e5@MTzu?Yxw@7T$vv%`# zcJ#qH>rA4`YjFk`M8V**VM1wmpI^4PiQ6O~k~+e1wbY(_s)+n`*AuHh%Q5Rf`o@4@ zEc%@G>h&uR3mU2aTmC_cr$Vf+I=cE7tt0~Sdlw{d`}b>f%1xSRWfw8R@jsTdFhix~ zj`lhuhs;QjLaOVXoN(I(2$3t7$syN{Uj}^~RSg78(puJa4ZWwP-PvAGIO8xmux>^D zd8eqy8S86+o+T~c_KVTgs?>P&EJVcIJ1xoLaek7<=KM<^znI_=R%aANW1seH`w>{H zXY2*+_uYL>9clYkC^3<*6sLgB5kdHf>L?A!WP)X6v_#DLN{*V=$~yPF)MLr5441ud zw%xWTd=re4cDmyivZb~<*P6(@#G2VrBPH9(NSdno+5xe1;Rhs$Eh~e~dAAe|p15^1 zpaY0!{sq7A_vbBv0DzF$GjGUDKX7cl_$A^KAki`=vVJ8diu3<(>h5B*KGXDo|6kj2 z987{C#WtJKcJkg2?;72RBPfe!2<&n^`r}$saBf&J#?<>zmV8Fdiu?`oxy2bLG9AdZ%f)A_X`xT z^c{M!1w5CWsfB#97Shc7?9PBaz3R~UtAen|5G)3ilK)){Knr?lIOhG(Ebc&8fh~uY zssNk>sN>TEeN(f*wb1%_F(Q;}UTLKM-Ai$6O7yq@k%T;wux$#!p#M4B9r#RFVH-sw zkokoRdGm$DQ>Y}dg&ngkA8)>uev~3l;=I7Jk?rj{uE%xnTP8Z=fs+_gp{KmOw?m+F z^b#}Fn}P`aY&G_KtRIvjXS>zkc1}%sYsS%~#)0)sV^vG{*oUGhj3a3;v(?fsxB)p|W}^RB4axi?cY6VQu|ps8QKeKGmZ+y*k`4xswQ5ziK=eRagoh0H{V;s?i_Xfo$~Rh86zxUI5U{ zALcCZO=8I5Pp_6GzOJ>STbjnhqex&DNzIRb>Xj)Ylol^+BQr#pdpSt~AY#sMn%2}m z>PX+>-^h*a3MVK{%C-H@7CaM`QJ0tvmjp(JVLe><$&dnt&+@l+N@`J?M&Sb$!?Y0cn$?iiO&A2h|dyDG2&0 zTS1S9(o`TxqX14><6C3z$h}){e>BE=Nt3H(bo%^-&Wa=V#>tK)VpGQYL4loPNz{&2 zj$#>0tpnF+Vm&AdNKHo;%q0YsqE;P8gzz5sBCGKrrI~Uto-p-F@U^H7@Z2oY-+XQUQ6T?6qI z!~EsN-7;%p>Tp0QDTlwjIXzHyvy#~2d8G2_IqfJpsqC3wcdOPCVjenx1o^;=p4eG+ zTCuf6%XH*pf`9h!Tut6~_)79ye!V;Z=-e)!OXp6Ogx%?U&Qdv5Q?4J@%faWDlL@#Z zWaw?}!}9V9#`g-r8lr#8TsK~=2Kb1;Wwa+0i25R>57V9}OtSm*f(9`tQ&H4!uyJcg zH3j^By@{?NORBIC9Hf*z4hA(ea5+V8T9aI^&Rb)(zGBINh=P|3@--dgBOBB|D(hQMw4t&nWAZ>uw-#(8cEK;Sd4ja!rIiFa>+KII%7$&O zBj^J^JdDa-uiJ%5`n;Qoztbk5jXEhb`H$k-ixmF*`=7K)eHVAXb!FYSqgJ7(u>hdP?-Y1nhnf9vz2{5VBpxqQx z%q3BcGqtd_wF*4kMaTyeL(SbQ^SlPfP?O)(`3U))AOKw!C#+#!rtu0HIgU*oCjCf5 zCopU3$XeAy_=H*%T3T4szH(C9GMM=al^d4;m9n8}6H`#Tn$3bV+Wkg6t!+ftZOzjOHGD;JkymMtj zHtR{<2Q!@mZUhIAK^~iJ3+5(IizEe2$J$=9YO*|A$#9U}KMN0J;QGbLl-%POEpI`e z2unFS2Z(tLbd!pzEcvdv)(+PgQ8vo$OehXL`MCLPbL6R;8L9KWJ~|ScK?)llSi!|W zoAzq;&V)i^^XKAw9%OYu)7C0Yc z%H(>lOb>)Z&@$#DMvG&c z5IkS_|6z>$wHgswPuRj#As2P}7bC+y z!$r;eQr-NnK6&7wq0z7tCJ=`ejk;72U@LJ~@*K}*p*yLOqC5Uu;7M1eKv62DGipxA zjaD70uPjS~p1QZ^phR*|Ecv*>#>WZGsOx_+6gr9vvNkwqMwXH;8S-_iB)p{Dr~|8*b~3!q0K4U(#GqXyvA$Py(ppuAVMJz*wK2PWpd-Sp%E{{dE_R9rY5E!>z7q? zq8)P>sp-asiaNa13?Lr90YlOQncxGo+$+`HkdUoYKQ3=2%t^JssrnCB|4rDl8T7)L zjV4@menl{?k`1y?c})+-$Hy2fW&^mCSBFHrRAT<&U=ya%Oa~HdD@3|Gq;6~*JrnF2 zQbjq4!o&Cg83j0m(C;L+m%z#MNv-6NmB+-DSsl{%ewY@$bb9sq-sAkd!)kDtyt_C| zmJ<@Hm^1vWfDb8ONa^3ZB2>RRts~SG&BtD(x%u7Hc!IIJ ztyRzVZn=L3&dL32XalIi!4lD-%p>l=f*l$ihX2lg&r-V_tj{sfcIevfIc}oi&pZ|y z#JF5$>pfnJD~)x42D%iVvxG`UH9ZIlu8Xh1O7Euquva8}YN*TxP;Id>|55luAtl)! zN|O&eJPa#>yCK+qq|H=WJ*@AUY3J&$?uL|`+hyC}Wq~}Tw9W(dVRuPhZ=?sCI%MOq zz+W+5Q*+Uq$A-2Ed?hA$aMTHTSVm?w-;kL{GA`CG%_2=$pFTgbZ4KE|z=~}>zzxM? zygA}OXqQ>;T0ccveLvAdY(&+Rt}@U<+I!71_+;pd(ym1}ci2Sfef?A|{aDZUa_X|^ zLL(IlHwZrK)bdT5<}%u@*~ZfDW1E^5ySL$Y-#M^eAS@HenHo^M?JmTLP$!shew6_A z?8Y5_#k&-|@bZfaUY9F!(1ghNDv6vsMg+`^hcFUuArb_j^g4}VSwWC;Grc*l`E`yUZxACfT-#QrZc)YWl4)hqr$mAOhAamCuHIXfd%k`2*SO z!tfN$SImj{G)rY`Nxs*Cco)2=9v;ceNPP`|!&8<9OAsvtKKMxO;18A3Ni`cq$TD?8ePmj}b2;rU#yAV5G;4YuD^x*2y{k_zY>@H6ksUY<6 z``=xC`pvMsGF0TQLEb2>u_@_zgvOe8L68`s$iOpa4*W+$MY%lMUQJTgL^;v~de#WyA-g8SA#EG)OmRYT9q*W+)cx1(pG5xL;%3Gr)Ir8^@e z3Rbm;AH*c?f(g_;wr%_F(+q9Jd8rOTkK|8Mye<_uOUY+rV&+x2H~GTe*~&6^7iKki z=_QXt^K~sc=;vbN`G#K7C%USU|+H zTLwdj?N-#R6W-?kY^v+u*Wzel!N^K6s*v9`zGH9Wqapc2Hjq*jJ`z{fz~z;?H@mHz zXgqAqvD-_>lr1eTEOtD}XD21ge8=y;;x|DdL!w_ffijsTTCcrfP%exZPpW;nL9cP@ z?Lb};^i`d#WC_bun8~x!NM1g4p?KCxWP@e~l4W9)RikLFaYUEh_BCl&dcd$l=)a=g`mxe@5{GUrR=ouIeHuU9)v6g#1U-u|Nm zo4fx!r&^MZBcD8GooiKqZ>6SRsa`&qJ`#BFy@L-Y)u-wgMREq_6nU{kCqAdIc6e_2 z?B-j4HCNAkN#uoCM);!kgxE4FBeiqPoid3~1Hg4mYoYCwhHJ!9RC{^BVJ{CkOqfro zPWZoKoB3s}zffdu-HF)k`+iC?Hmie|7XvEHU_NkmahWXm^R@c+@gPqpq*|^0UfGO9 zP1?7Ftnj#8&Fv<^@)_U#D?-uq0zKcD69)?Uew<+Xz!zr6Cf72Cc=qQRmn6D_VhW9# z%@R2WYbBvD^O`x{p5nrt0q#b$cS8>v%rQXmZN|T4T=nSfbsnuAO7jD=jfozuc0<4x z^gbp!tXrAQ5zkLg zN;lcO+aqru_#A08wDz~Y`(A6M&!my4&HX^gNf&PLV{wXI8v5?ZCVL93tYeD!!cYwU zYl-i;vMnGKJr-7=?kK8lf!3_(Q47=@`5+hHRMmfZhiSz?eiCr=^qWq4zY}uC?IIZ& zp4;m6mG|;1dydfo4kXtf{3?*&8q~bc-cGN{k{%p|+aVQJp+v<9=C!m7j(*iEFgqo+ zGla`A;=EwJL*Km?NXNQ;*V*xVbXx(5xVGEj>v)m1q&qH&ESm4gOvT4{z!&k2@XIo1 zqtp&m!Y>AcE|vBGWhpQt-4W0VHV{`F4*sE8eY@H}r5m2`QgswH;Co$HiHaP-&QS+b z7UZ#k>PBZ@lk>a%7_m*^6~u1jrU7@YF6obueKw`9H__=TO-f6fg&Y0QSZn0a(Ln~AWTh^cGegI zjyJM9vQhs~-Q|OkI5k0um-h7V>s+CgO}>Z)}^3o#bUnBL+=wRmduaKA*i6 zKEQsh@1!s1?))WBq+5#)AK0#t%vXku#xmq7R~eqTQ{mStO6-lVdSaNy*jYls@IWh3 zMbj4_1%(l5Q{a{;eL6;FI${R&9CSwu!nY=rxtF9?d1MD4Wb@^T04qy7=6%PBm;5S+ zUefn7I!NeU@|dwq)%)w|fkrhffi0|{lqX>}1%cVM*jz--4>L5_8WgcY8Q*h7W(_M* zq-5Mo+QZ3SB7(qkh0Kl;z&-~3?-<=a-o!22tG{|qDv~ee%W`L+byD|11x2G<@I-`( z1^tCen9D-?Z^O>!Rj$ud#p#o~^qlVd7w^U>`z99}P0#MJa*Qw_^=_r0DX;1xsg^}8 zRpZHz^-}Q&)B+6sPgG#99iIby#j_HMBeB9Ti2cjaiOyy|rL{}NEMs%d<2+5-YhVAZ zn;yiH>L0)Q<0d^iB4y8aB_Ex8rUF=F?ybEnFUB0Ro_+xn3aKG|K6=fG zUr8u?0<|yLf6#!6HFmW^W|A7CU-pF`I$3L}9R4~<(C}=;1tZHStWh{rS6GMXpe18S zfyV#frM8vfi8xImY}b_HmaYCQypS%2!=j|=%N-YmHqXj7vpavZ9|2$gLOD z1|;RzR{=`9ehWY3t5dY++T*xZD!|T~tgWOfg#<9*0x7x=cZ^oe5n(eQtD2fivGsAv zKpAH)^NRC8k(^sq2U8qOl8|-sKuWLXD7i{GX>e&nc;Ly>K)6pym1lZA%;E^TG!jB= zh;#mC!$2Q9G_jqw$N*wjn|k5;t|;h@I&!84f+!mLC~x!(a}LY%_cp=Qk+X{HW27g- z!=|KZp`N5dmsh*ouHz0mR)DS11whzSYBy?!TgsTPQgfu8Y$Z%j{7UON<2Z#T<({`o zhFUx(0#l`Eg3zU(^<)+uu_$q?21kE==WPA5<6!8>UR>9skSKEh)WDBA{=;;$ zzf1mP0!BaB|5Y+Q*OzbT+j zI^u}a7C`6k?gsyWEF^STP`Nk9x0QuZ=I^5QmbvK(mF|4%-VG2YIisp^$7Zz~l1OeZ zfBryi4o_gMuvtDSPZbpJ^Pj7_JCbkwf4_RD7D=$D!$*fQCM(gCD9D4W@Gi1+N)DaN zJ1U{dk0|zAc@1aK@!)d}WV8>@=$2Dv7%Ukw>6OEmSX>1)RA=@VKKkCOXQ>q50cy3GWAwg;n$3GHauWZ z*=ulYES78SJ%yo~XT?9shC?9B0j_^>QxKsa6}~`Y>U_B#rbpw`3*Zky**|sgEhZT5vMj1XCb+pQMH+-T9Lc-`_o5?JD@H@^R7#crKfZ|foJAhY0gKL z>(mh332w{b|vVkq!I8BLt1f~VAoi!Bgib-l08f4VYUE%4g zJao+y$Bq|LFrA>NwZe~o)17d9#Vi<+?aL27+PQLg=Fg{VMUrh5QFHF22#wtfPfKwec#>}W4_aGe%;rrB&o)n)2Dz^mgnhf+g_b^M!%%#o{b^Gz9?B@ zgjMN#Y2k2(L$1~T;`OoL?%hFt_lD%t&JISo;*03n9sESH$dW789Vz3TQa zefy%&0sxG7-F*OHC)Zb+!+ytGQP0WOQZH_{!Jmoi1?~=xx18UM&{t6b_CJh4^VwB~ zU*pTR&fR@eBX(&+`+jdIV!NU;WXd={BA~FV>Z0rB_+e7zKP~8aMw2C*%&_aAdIk!f z+tlD=fYqNSIIov%Iaok8Wccc5b9G)?8Bn#GxPU9VXV4STaCQ5qyPDgg)mmc%3hWE+ zpfL4hW0@`KEu8rJFN_^XGT=n;ZYl}Bwt)sURyty*Cgz*_B43CO304Dj(8idl8=J1k zMC@OH!BZ6=FYbOMD9I1dFM|lF8_m4i)Ox%3V{lZ)(k}cdMrFzZad6p721B+nk+L>* zk^1^I@A+RtSUThKVH1YJnL_!ZU|4n9AKGd)@q)$xk(VvO?Oqy{?QNXh*c_aX#i9oO zn=uSR?6XMhx}d3&zkm#~Mc{?cd$gyeqSMtPua&ZAt-Bo%c9bO+EWuKYF*O-NuW6a; z`frXRKRpFt>{elv`QdMy5rywy9b30m^B-?mZKy{*b@30EoxAh5g!aldXU^#@-O^?B z;W5YfYhV7=Gl=k`+K|{>J9R&{%>40Q-Ld;`|1@f?H!`NMl7`^@@9g;Q$sq^pcYptc zqRi6&>{-q0JCD0jlcs}8>^^trXJLcKp*qGycR=G(m6Q~W7s{B1TTeXDLjet)ZK;3z z>%bN?wCf_Ny#9IX)z9Agn3M2>TfJHxq(2d!BrN?PUf($0@NFIa(QpEZ)76dZW-nsMn+m`4mM zGNelaawJmO1r2=ke=M8cw^rUx@wE8o_XBbhR%iaC)fuR}DWIT9xQ8{jx2aqdx34>( zu*uCe+1v4DaC@4*2*Zw?-89uTLf3caPX|Wx&Pq!zG6U0zxwmBSc~}%WWDlKNDmH7H zZFXH&hHv9GBE|dl(DfI1T?y-5iAsh8({>7w)h)iSl>nFHWG&Vf@slKncUZl!M2k z6A5e|vqo^zDiLSeL@8lv=8{I81DNj26ci}P7}{x*>7I6UqKsP{vHSN7+&WK|Q}H4c z7S~yIMRwl48boFsUFacgSSF*ZhV#e`)2Ioyb?yr@Fg>8gI(P}&@M=8mW#`uX&W`KW4j$_hs!`T@AzE)%ojfu;*m@h& zPDbp#QaO2o$R>PkfX!jKpAJga%xV^`hfW4Jaa{F5O5S>g!>CCQYsDn2db_#atW!8z zqfg_q3zmpQYp0pwSYO8mLJ+#!E!^lFX?gGyJ5;mr{kbHT8HGdv4uI>p@p1YgeA&_k z(2ZMWFF$_xKrN>m{()b3%1=m0a^@ARZ`A8Ah1XaQ$RFF=C^C2|7zVF`5^qV}-|D?Q zf1;|Ko<#vtT;cM>(Wo5R*t>|T){;$9f}gH21MZM&A8s5we}QYca)B@(OJ`Wf1JoH! zFue+G2RSQ-M;sOi)gttEv~f>B^ujDJG_EwZ44;iY`~u7lvzzfiNG%-O>!~56-?0vv z-%|HnmLDvx}2S86i>r zW{s2-hN1ms3YCjhTHyTh7?`dN+a2lbDxn{#dJqcHk|i9R;?tgVMdti%e01cJgdm;u zUOgS4Stk^bEWkg1qncI~Q3Y(R5R;_SsY9-BA$VNV4hJsT2(B`a4q%cVm!7f>u4vA8 z<-K{LnN-E5h$c=F{0rK_-K}SwmbtiKI@%X6ak)e^&2Y6W(0=f~bCJB^~SXv`<-Lxf*edw}krT6ajHUVyX z9IvsK(_d^t8^ESco*F{w#r>|37jArt2ZM1hJaTa_egwpoGbYq`F|3le5*OC>8~l&>yvI>2GSN6$wql8-H-MI1H=S0>8S|M*jQx`w}#w^Fv zWn)Kc9iz?K<};(5eIl}0jKPJ~-<=f1w1k6iY4AnsdD?WaTN9|*ILiXNuB5~@f_K~? ztTm^WPSu8to>`F8zKk4!E*4tAim~DNz;C%!wL!7fx^2fM)as{dTSlvP3~SF+TCVJ? z$T#HBhpWk|9ao}Jn^wmS&s1|WQ|sR9A{gZc)wt+vVEWFYPf>&2g31qjZ%QW091f2( zHjmnwH&^w;rI7Smx>thtmW(ZqWsBsafP4)F+jK3XjGrme*NuHded`|9lzGfpgd1SW+ae=wx>L2PyubA(P zP3I(cj?dIZicwLS8JbS++DWM$-!7&X)p*t637vVc4GY+6aqQsj>_=Xb zr^27@4e)`%bExOq>i6;Id7k+W@xXWuhp3*uVJv2{9tKJJaAw}mkrawdFP5Ue&6gv$VLXksIGWv-RY!|Ji@~y8XA6|7_X(;*UNY8GYmb0+u0b Au>b%7 diff --git a/docs/hero/photos/trending.png b/docs/hero/photos/trending.png deleted file mode 100644 index 53e851e486caa2c423f1e427a4a83b6151432e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93907 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

    2xwf6Un@n=UE9o{ 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

  • 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%0AmaoTPTX6i1;C|QKaNGQW7ct2ckShiX26W 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