gitextract_dikz81a3/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .npmrc ├── AGENTS.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin/ │ └── alphaclaw.js ├── lib/ │ ├── cli/ │ │ ├── git-runtime.js │ │ ├── git-sync.js │ │ └── openclaw-config-restore.js │ ├── plugin/ │ │ └── usage-tracker/ │ │ ├── index.js │ │ └── openclaw.plugin.json │ ├── public/ │ │ ├── css/ │ │ │ ├── agents.css │ │ │ ├── chat.css │ │ │ ├── cron.css │ │ │ ├── explorer.css │ │ │ ├── shell.css │ │ │ ├── tailwind.input.css │ │ │ └── theme.css │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── components/ │ │ │ │ ├── action-button.js │ │ │ │ ├── add-channel-menu.js │ │ │ │ ├── agent-send-modal.js │ │ │ │ ├── agents-tab/ │ │ │ │ │ ├── agent-bindings-section/ │ │ │ │ │ │ ├── channel-item-trailing.js │ │ │ │ │ │ ├── helpers.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── use-agent-bindings.js │ │ │ │ │ │ └── use-channel-items.js │ │ │ │ │ ├── agent-detail-panel.js │ │ │ │ │ ├── agent-identity-section.js │ │ │ │ │ ├── agent-overview/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── manage-card.js │ │ │ │ │ │ ├── model-card.js │ │ │ │ │ │ ├── tools-card.js │ │ │ │ │ │ ├── use-model-card.js │ │ │ │ │ │ ├── use-workspace-card.js │ │ │ │ │ │ └── workspace-card.js │ │ │ │ │ ├── agent-pairing-section.js │ │ │ │ │ ├── agent-tools/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── tool-catalog.js │ │ │ │ │ │ └── use-agent-tools.js │ │ │ │ │ ├── create-agent-modal.js │ │ │ │ │ ├── create-channel-modal.js │ │ │ │ │ ├── delete-agent-dialog.js │ │ │ │ │ ├── edit-agent-modal.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── use-agents.js │ │ │ │ ├── badge.js │ │ │ │ ├── channel-account-status-badge.js │ │ │ │ ├── channel-login-modal.js │ │ │ │ ├── channel-operations-panel.js │ │ │ │ ├── channels.js │ │ │ │ ├── confirm-dialog.js │ │ │ │ ├── credentials-modal.js │ │ │ │ ├── cron-tab/ │ │ │ │ │ ├── cron-calendar-helpers.js │ │ │ │ │ ├── cron-calendar.js │ │ │ │ │ ├── cron-helpers.js │ │ │ │ │ ├── cron-insights-panel.js │ │ │ │ │ ├── cron-job-detail.js │ │ │ │ │ ├── cron-job-list.js │ │ │ │ │ ├── cron-job-settings-card.js │ │ │ │ │ ├── cron-job-trends-panel.js │ │ │ │ │ ├── cron-job-usage.js │ │ │ │ │ ├── cron-overview.js │ │ │ │ │ ├── cron-prompt-editor.js │ │ │ │ │ ├── cron-run-history-panel.js │ │ │ │ │ ├── cron-runs-trend-card.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── use-cron-tab.js │ │ │ │ ├── device-pairings.js │ │ │ │ ├── doctor/ │ │ │ │ │ ├── findings-list.js │ │ │ │ │ ├── fix-card-modal.js │ │ │ │ │ ├── general-warning.js │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── summary-cards.js │ │ │ │ ├── envars.js │ │ │ │ ├── features.js │ │ │ │ ├── file-tree.js │ │ │ │ ├── file-viewer/ │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── diff-viewer.js │ │ │ │ │ ├── editor-surface.js │ │ │ │ │ ├── frontmatter-panel.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── markdown-split-view.js │ │ │ │ │ ├── media-preview.js │ │ │ │ │ ├── scroll-sync.js │ │ │ │ │ ├── sqlite-viewer.js │ │ │ │ │ ├── status-banners.js │ │ │ │ │ ├── storage.js │ │ │ │ │ ├── toolbar.js │ │ │ │ │ ├── use-editor-line-number-sync.js │ │ │ │ │ ├── use-editor-selection-restore.js │ │ │ │ │ ├── use-file-diff.js │ │ │ │ │ ├── use-file-loader.js │ │ │ │ │ ├── use-file-viewer-draft-sync.js │ │ │ │ │ ├── use-file-viewer-hotkeys.js │ │ │ │ │ ├── use-file-viewer.js │ │ │ │ │ └── utils.js │ │ │ │ ├── gateway.js │ │ │ │ ├── general/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── use-general-tab.js │ │ │ │ ├── global-restart-banner.js │ │ │ │ ├── google/ │ │ │ │ │ ├── account-row.js │ │ │ │ │ ├── add-account-modal.js │ │ │ │ │ ├── gmail-setup-wizard.js │ │ │ │ │ ├── gmail-watch-toggle.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── use-gmail-watch.js │ │ │ │ │ └── use-google-accounts.js │ │ │ │ ├── icons.js │ │ │ │ ├── info-tooltip.js │ │ │ │ ├── loading-spinner.js │ │ │ │ ├── modal-shell.js │ │ │ │ ├── models-tab/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── model-picker.js │ │ │ │ │ ├── provider-auth-card.js │ │ │ │ │ └── use-models.js │ │ │ │ ├── models.js │ │ │ │ ├── nodes-tab/ │ │ │ │ │ ├── browser-attach/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── connected-nodes/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── use-connected-nodes-card.js │ │ │ │ │ │ └── user-connected-nodes.js │ │ │ │ │ ├── exec-allowlist/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-exec-allowlist.js │ │ │ │ │ ├── exec-config/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-exec-config.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── setup-wizard/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-setup-wizard.js │ │ │ │ │ └── use-nodes-tab.js │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── pairing-utils.js │ │ │ │ │ ├── use-welcome-codex.js │ │ │ │ │ ├── use-welcome-pairing.js │ │ │ │ │ ├── use-welcome-storage.js │ │ │ │ │ ├── welcome-config.js │ │ │ │ │ ├── welcome-form-step.js │ │ │ │ │ ├── welcome-header.js │ │ │ │ │ ├── welcome-import-step.js │ │ │ │ │ ├── welcome-pairing-step.js │ │ │ │ │ ├── welcome-placeholder-review-step.js │ │ │ │ │ ├── welcome-pre-step.js │ │ │ │ │ ├── welcome-secret-review-step.js │ │ │ │ │ ├── welcome-secret-review-utils.js │ │ │ │ │ └── welcome-setup-step.js │ │ │ │ ├── overflow-menu.js │ │ │ │ ├── page-header.js │ │ │ │ ├── pairings.js │ │ │ │ ├── pane-shell.js │ │ │ │ ├── pill-tabs.js │ │ │ │ ├── pop-actions.js │ │ │ │ ├── providers.js │ │ │ │ ├── routes/ │ │ │ │ │ ├── agents-route.js │ │ │ │ │ ├── browse-route.js │ │ │ │ │ ├── chat-route.js │ │ │ │ │ ├── cron-route.js │ │ │ │ │ ├── doctor-route.js │ │ │ │ │ ├── envars-route.js │ │ │ │ │ ├── general-route.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── models-route.js │ │ │ │ │ ├── nodes-route.js │ │ │ │ │ ├── providers-route.js │ │ │ │ │ ├── route-redirect.js │ │ │ │ │ ├── telegram-route.js │ │ │ │ │ ├── usage-route.js │ │ │ │ │ ├── watchdog-route.js │ │ │ │ │ └── webhooks-route.js │ │ │ │ ├── scope-picker.js │ │ │ │ ├── secret-input.js │ │ │ │ ├── segmented-control.js │ │ │ │ ├── session-select-field.js │ │ │ │ ├── sidebar-git-panel.js │ │ │ │ ├── sidebar.js │ │ │ │ ├── summary-stat-card.js │ │ │ │ ├── telegram-workspace/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── manage.js │ │ │ │ │ └── onboarding.js │ │ │ │ ├── theme-toggle.js │ │ │ │ ├── toast.js │ │ │ │ ├── toggle-switch.js │ │ │ │ ├── tooltip.js │ │ │ │ ├── update-action-button.js │ │ │ │ ├── update-modal.js │ │ │ │ ├── usage-tab/ │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── formatters.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── overview-section.js │ │ │ │ │ ├── sessions-section.js │ │ │ │ │ └── use-usage-tab.js │ │ │ │ ├── watchdog-tab/ │ │ │ │ │ ├── console/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-console.js │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── incidents/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-incidents.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── resource-bar.js │ │ │ │ │ ├── resources/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-resources.js │ │ │ │ │ ├── settings/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-settings.js │ │ │ │ │ ├── terminal/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-terminal.js │ │ │ │ │ └── use-watchdog-tab.js │ │ │ │ ├── webhooks/ │ │ │ │ │ ├── create-webhook-modal/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── helpers.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── request-history/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-request-history.js │ │ │ │ │ ├── webhook-detail/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── use-webhook-detail.js │ │ │ │ │ └── webhook-list/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── use-webhook-list.js │ │ │ │ └── welcome/ │ │ │ │ ├── index.js │ │ │ │ └── use-welcome.js │ │ │ ├── hooks/ │ │ │ │ ├── use-app-shell-controller.js │ │ │ │ ├── use-app-shell-ui.js │ │ │ │ ├── use-browse-navigation.js │ │ │ │ ├── use-cached-fetch.js │ │ │ │ ├── use-destination-session-selection.js │ │ │ │ ├── use-hash-location.js │ │ │ │ ├── useAgentSessions.js │ │ │ │ └── usePolling.js │ │ │ ├── lib/ │ │ │ │ ├── agent-identity.js │ │ │ │ ├── api-cache.js │ │ │ │ ├── api.js │ │ │ │ ├── app-navigation.js │ │ │ │ ├── browse-draft-state.js │ │ │ │ ├── browse-file-policies.js │ │ │ │ ├── browse-restart-policy.js │ │ │ │ ├── browse-route.js │ │ │ │ ├── channel-accounts.js │ │ │ │ ├── channel-create-operation.js │ │ │ │ ├── channel-provider-availability.js │ │ │ │ ├── clipboard.js │ │ │ │ ├── codex-oauth-window.js │ │ │ │ ├── file-highlighting.js │ │ │ │ ├── file-tree-utils.js │ │ │ │ ├── format.js │ │ │ │ ├── model-catalog.js │ │ │ │ ├── model-config.js │ │ │ │ ├── session-keys.js │ │ │ │ ├── sse.js │ │ │ │ ├── storage-keys.js │ │ │ │ ├── syntax-highlighters/ │ │ │ │ │ ├── css.js │ │ │ │ │ ├── frontmatter.js │ │ │ │ │ ├── html.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── javascript.js │ │ │ │ │ ├── json.js │ │ │ │ │ ├── markdown.js │ │ │ │ │ └── utils.js │ │ │ │ ├── telegram-api.js │ │ │ │ └── ui-settings.js │ │ │ └── tailwind-config.js │ │ ├── login.html │ │ ├── setup.html │ │ └── shared/ │ │ └── browse-file-policies.json │ ├── scripts/ │ │ ├── git │ │ ├── git-askpass │ │ └── systemctl │ ├── server/ │ │ ├── agents/ │ │ │ ├── agents.js │ │ │ ├── bindings.js │ │ │ ├── channels.js │ │ │ ├── service.js │ │ │ └── shared.js │ │ ├── alphaclaw-version.js │ │ ├── auth-profiles.js │ │ ├── chat-ws.js │ │ ├── commands.js │ │ ├── constants.js │ │ ├── cost-utils.js │ │ ├── cron-service.js │ │ ├── db/ │ │ │ ├── doctor/ │ │ │ │ ├── index.js │ │ │ │ └── schema.js │ │ │ ├── usage/ │ │ │ │ ├── index.js │ │ │ │ ├── pricing.js │ │ │ │ ├── schema.js │ │ │ │ ├── sessions.js │ │ │ │ ├── shared.js │ │ │ │ ├── summary.js │ │ │ │ └── timeseries.js │ │ │ ├── watchdog/ │ │ │ │ ├── index.js │ │ │ │ └── schema.js │ │ │ └── webhooks/ │ │ │ ├── index.js │ │ │ └── schema.js │ │ ├── discord-api.js │ │ ├── doctor/ │ │ │ ├── bootstrap-context.js │ │ │ ├── constants.js │ │ │ ├── normalize.js │ │ │ ├── prompt.js │ │ │ ├── service.js │ │ │ └── workspace-fingerprint.js │ │ ├── env.js │ │ ├── exec-defaults-config.js │ │ ├── gateway.js │ │ ├── gmail-push.js │ │ ├── gmail-serve.js │ │ ├── gmail-watch.js │ │ ├── gog-skill.js │ │ ├── google-state.js │ │ ├── helpers.js │ │ ├── init/ │ │ │ ├── register-server-routes.js │ │ │ ├── runtime-init.js │ │ │ └── server-lifecycle.js │ │ ├── internal-files-migration.js │ │ ├── log-writer.js │ │ ├── login-throttle.js │ │ ├── model-catalog-bootstrap.json │ │ ├── model-catalog-cache.js │ │ ├── oauth-callback-middleware.js │ │ ├── onboarding/ │ │ │ ├── cron.js │ │ │ ├── github.js │ │ │ ├── import/ │ │ │ │ ├── import-applier.js │ │ │ │ ├── import-config.js │ │ │ │ ├── import-scanner.js │ │ │ │ ├── import-temp.js │ │ │ │ └── secret-detector.js │ │ │ ├── index.js │ │ │ ├── openclaw.js │ │ │ ├── validation.js │ │ │ └── workspace.js │ │ ├── openclaw-config.js │ │ ├── openclaw-runtime-env.js │ │ ├── openclaw-version.js │ │ ├── operation-events.js │ │ ├── restart-required-state.js │ │ ├── routes/ │ │ │ ├── agents.js │ │ │ ├── auth.js │ │ │ ├── browse/ │ │ │ │ ├── constants.js │ │ │ │ ├── file-helpers.js │ │ │ │ ├── git.js │ │ │ │ ├── index.js │ │ │ │ ├── path-utils.js │ │ │ │ └── sqlite.js │ │ │ ├── codex.js │ │ │ ├── cron.js │ │ │ ├── doctor.js │ │ │ ├── gmail.js │ │ │ ├── google.js │ │ │ ├── models.js │ │ │ ├── nodes.js │ │ │ ├── onboarding.js │ │ │ ├── pages.js │ │ │ ├── pairings.js │ │ │ ├── proxy.js │ │ │ ├── system.js │ │ │ ├── telegram.js │ │ │ ├── usage.js │ │ │ ├── watchdog.js │ │ │ └── webhooks.js │ │ ├── slack-api.js │ │ ├── startup.js │ │ ├── system-resources.js │ │ ├── telegram-api.js │ │ ├── telegram-workspace.js │ │ ├── topic-registry.js │ │ ├── usage-tracker-config.js │ │ ├── utils/ │ │ │ ├── boolean.js │ │ │ ├── channels.js │ │ │ ├── command-output.js │ │ │ ├── json.js │ │ │ ├── network.js │ │ │ ├── number.js │ │ │ └── shell.js │ │ ├── watchdog-notify.js │ │ ├── watchdog-terminal-ws.js │ │ ├── watchdog-terminal.js │ │ ├── watchdog.js │ │ ├── webhook-middleware.js │ │ └── webhooks.js │ ├── server.js │ └── setup/ │ ├── core-prompts/ │ │ ├── AGENTS.md │ │ └── TOOLS.md │ ├── env.template │ ├── gitignore │ ├── hourly-git-sync.sh │ └── skills/ │ └── gog-cli/ │ ├── calendar.md │ ├── contacts.md │ ├── docs.md │ ├── drive.md │ ├── gmail.md │ ├── meet.md │ ├── sheets.md │ └── tasks.md ├── package.json ├── scripts/ │ ├── build-ui.mjs │ └── dev/ │ └── crash-watchdog-config.sh ├── tailwind.config.cjs ├── tests/ │ ├── bin/ │ │ ├── alphaclaw.test.js │ │ └── openclaw-config-restore.test.js │ ├── frontend/ │ │ ├── agent-identity.test.js │ │ ├── api.test.js │ │ ├── browse-draft-state.test.js │ │ ├── channel-create-operation.test.js │ │ ├── channel-provider-availability.test.js │ │ ├── clipboard.test.js │ │ ├── codex-oauth-window.test.js │ │ ├── cron-calendar-helpers.test.js │ │ ├── cron-helpers.test.js │ │ ├── doctor-helpers.test.js │ │ ├── file-tree-utils.test.js │ │ ├── file-viewer-utils.test.js │ │ ├── model-catalog.test.js │ │ ├── model-config.test.js │ │ ├── pairing-utils.test.js │ │ ├── session-keys.test.js │ │ ├── syntax-highlighters.test.js │ │ ├── watchdog-helpers.test.js │ │ ├── welcome-config.test.js │ │ └── welcome-secret-review-utils.test.js │ └── server/ │ ├── agents-service.test.js │ ├── alphaclaw-version.test.js │ ├── auth-profiles.test.js │ ├── chat-ws.test.js │ ├── commands.test.js │ ├── cost-utils.test.js │ ├── cron-service.test.js │ ├── doctor-db.test.js │ ├── doctor-normalize.test.js │ ├── doctor-prompt.test.js │ ├── doctor-service.test.js │ ├── exec-defaults-config.test.js │ ├── express-runtime-guard.test.js │ ├── gateway.test.js │ ├── git-runtime.test.js │ ├── git-shim.test.js │ ├── git-sync-path.test.js │ ├── gmail-push.test.js │ ├── gmail-watch.test.js │ ├── gog-skill.test.js │ ├── helpers.test.js │ ├── import-applier.test.js │ ├── import-scanner.test.js │ ├── import-temp.test.js │ ├── internal-files-migration.test.js │ ├── login-throttle.test.js │ ├── model-catalog-cache.test.js │ ├── oauth-callback-middleware.test.js │ ├── onboarding-github.test.js │ ├── onboarding-openclaw.test.js │ ├── onboarding-validation.test.js │ ├── onboarding-workspace.test.js │ ├── openclaw-runtime-env.test.js │ ├── openclaw-version.test.js │ ├── operation-events.test.js │ ├── routes-agents.test.js │ ├── routes-auth.test.js │ ├── routes-browse.test.js │ ├── routes-cron.test.js │ ├── routes-doctor.test.js │ ├── routes-models.test.js │ ├── routes-nodes.test.js │ ├── routes-onboarding.test.js │ ├── routes-pairings.test.js │ ├── routes-system.test.js │ ├── routes-telegram.test.js │ ├── routes-usage.test.js │ ├── routes-watchdog-test-notification.test.js │ ├── routes-watchdog.test.js │ ├── routes-webhooks.test.js │ ├── secret-detector.test.js │ ├── slack-api.test.js │ ├── startup.test.js │ ├── telegram-workspace.test.js │ ├── topic-registry.test.js │ ├── usage-db.test.js │ ├── usage-tracker-config.test.js │ ├── utils-boolean.test.js │ ├── utils-json.test.js │ ├── utils-shell.test.js │ ├── watchdog-db.test.js │ ├── watchdog-notify.test.js │ ├── watchdog.test.js │ ├── webhook-middleware.test.js │ ├── webhooks-db.test.js │ └── webhooks.test.js └── vitest.config.js