Skip to content

Conversation

@CodewithEvilxd
Copy link

What this PR does:

  • Adds abortAllActions() method to ActionRunner class
  • Implements abortAllActions() in WorkbenchStore to stop all running actions
  • Fixes formatting in tsconfig.json

Why this is valuable:

  • Completes the TODO in WorkbenchStore
  • Gives users control over running AI actions in the workbench
  • Essential for AI-powered development tools

Testing:

  • All tests pass (24/24)
  • No ESLint errors
  • Code follows project patterns

Ready for review! 🚀

@ivan327
Copy link

ivan327 commented Dec 16, 2025

⚙️

@ivanm696
Copy link

Bolt Open Source Codebase

Добро пожаловать в открытый исходный код Bolt! Этот репозиторий содержит простой пример приложения, использующего основные компоненты из bolt.new, который поможет вам начать создавать инструменты разработки программного обеспечения на основе ИИ с использованием WebContainer API от StackBlitz.

Почему стоит использовать Bolt + WebContainer API для разработки приложений?

Используя Bolt + WebContainer API, вы можете создавать браузерные приложения, позволяющие пользователям запускать, редактировать и развертывать полнофункциональные веб-приложения непосредственно в браузере, без необходимости использования виртуальных машин. С помощью WebContainer API вы можете создавать приложения, предоставляющие ИИ прямой доступ и полный контроль над сервером Node.js, файловой системой, менеджером пакетов и терминалом разработчика прямо во вкладке браузера пользователя. Эта мощная комбинация позволяет создать новый класс инструментов разработки, поддерживающих все основные библиотеки JavaScript и пакеты Node сразу после установки, без удаленных сред или локальной установки.

В чём разница между Bolt (этот репозиторий) и Bolt.new?

  • Bolt.new: Это коммерческий продукт от StackBlitz — размещенный в браузере инструмент для разработки ИИ, позволяющий пользователям запускать, редактировать и развертывать полнофункциональные веб-приложения непосредственно в браузере. Он создан на основе репозитория с открытым исходным кодом Bolt и работает на базе API WebContainer от StackBlitz.

  • Bolt (Этот репозиторий): Этот репозиторий с открытым исходным кодом предоставляет основные компоненты, используемые для создания Bolt.new. В репозитории содержится пользовательский интерфейс Bolt, а также серверные компоненты, созданные с помощью Remix Run. Используя этот репозиторий и WebContainer API от StackBlitz, вы можете создавать собственные инструменты разработки на основе ИИ и полнофункциональные приложения, работающие полностью в браузере.

Начните создавать с помощью Bolt

Bolt объединяет возможности ИИ с изолированными средами разработки, создавая среду для совместной работы, где ассистент и программист могут разрабатывать код вместе. Bolt использует WebContainer API с Claude Sonnet 3.5 с помощью Remix и AI SDK.

API веб-контейнера

Bolt использует WebContainers для запуска сгенерированного кода в браузере. WebContainers предоставляют Bolt полнофункциональную изолированную среду с помощью WebContainer API. WebContainers запускают полнофункциональные приложения непосредственно в браузере без затрат и проблем с безопасностью, связанных с облачными агентами ИИ. WebContainers интерактивны и редактируемы, что позволяет ИИ Bolt запускать код и понимать любые изменения, внесенные пользователем.

API WebContainer (https://webcontainers.io) бесплатен для личного использования и использования в проектах с открытым исходным кодом. Если вы разрабатываете приложение для коммерческого использования, вы можете узнать больше о ценах на коммерческое использование API WebContainer здесь (https://stackblitz.com/pricing#webcontainer-api).

Приложение Remix

Bolt создан с помощью Remix и
Развернуто с использованием CloudFlare Pages и
Работники CloudFlare.

Интеграция SDK для ИИ

Bolt использует AI SDK для интеграции с ИИ.
модели. В настоящее время Bolt поддерживает использование Claude Sonnet 3.5 от Anthropic.
Для использования с Bolt вы можете получить ключ API в консоли Anthropic API.
Посмотрите, как Bolt использует AI SDK

Предварительные условия

Прежде чем начать, убедитесь, что у вас установлено следующее:

  • Node.js (v20.15.1)
  • pnpm (v9.4.0)

Настраивать

  1. Клонируйте репозиторий (если вы еще этого не сделали):
git clone https://github.com/stackblitz/bolt.new.git
  1. Установите зависимости:
pnpm install
  1. Создайте файл .env.local в корневом каталоге и добавьте в него свой ключ API Anthropic:
ANTHROPIC_API_KEY=XXX

При желании можно установить уровень отладки:

VITE_LOG_LEVEL=debug

Важно: Никогда не добавляйте файл .env.local в систему контроля версий. Он уже включен в файл .gitignore.

Доступные скрипты

  • pnpm run dev: Запускает сервер разработки.
  • pnpm run build: Выполняет сборку проекта.
  • pnpm run start: Запускает собранное приложение локально с помощью Wrangler Pages. Этот скрипт использует bindings.sh для настройки необходимых привязок, чтобы вам не приходилось дублировать переменные окружения.
  • pnpm run preview: Собирает проект, а затем запускает его локально, что полезно для тестирования производственной сборки. Обратите внимание, что потоковая передача HTTP в настоящее время работает некорректно с wrangler pages dev.
  • pnpm test: Запускает набор тестов с помощью Vitest.
  • pnpm run typecheck: Выполняет проверку типов TypeScript.
  • pnpm run typegen: Генерирует типы TypeScript с помощью Wrangler.
  • pnpm run deploy: Собирает проект и развертывает его на Cloudflare Pages.

Разработка

Для запуска сервера разработки:

pnpm run dev

Это запустит сервер разработки Remix Vite.

Тестирование

Запустите набор тестов с помощью:

тест pnpm

Развертывание

Для развертывания приложения на Cloudflare Pages:

pnpm run deploy

Убедитесь, что у вас есть необходимые разрешения и Wrangler правильно настроен для вашей учетной записи Cloudflare.

@diffray-bot
Copy link

Changes Summary

This PR implements the abortAllActions() functionality across the AI development tool, allowing users to stop all running and pending actions in artifacts. It completes a TODO by providing abort control at both the ActionRunner and WorkbenchStore levels, enabling users to cancel AI-powered operations in progress.

Type: feature

Components Affected: ActionRunner, WorkbenchStore

Files Changed
File Summary Change Impact
/tmp/workspace/app/lib/runtime/action-runner.ts Adds abortAllActions() method that iterates through all actions and aborts those with 'running' or 'pending' status. ✏️ 🟡
/tmp/workspace/app/lib/stores/workbench.ts Implements abortAllActions() method that delegates abort calls to all artifact runners, replacing a TODO placeholder. ✏️ 🟡
Architecture Impact
  • New Patterns: delegation pattern
  • Coupling: WorkbenchStore now actively uses the ActionRunner's new abortAllActions method, creating a clear delegation hierarchy for abort control.

Risk Areas: Action state consistency: Aborting actions with status 'running' or 'pending' requires that AbortSignal handling is properly implemented downstream in action execution logic, Race conditions: Concurrent modifications to the actions map during iteration could cause issues if actions are added/removed while aborting, Incomplete abort recovery: The PR description mentions 'how do we wanna recover from this' - no error handling or recovery mechanism is implemented for failed aborts

Suggestions
  • Consider adding try-catch or error handling if abort() calls could throw exceptions
  • Document the expected behavior when abort() is called on an action (should it immediately transition to 'aborted' status?)
  • Consider if there are any cleanup operations needed after aborting all actions
  • Test concurrent scenarios where actions are added while abortAllActions() is executing

Full review in progress... | Powered by diffray

@ivanm696
Copy link

ivanm696 commented Jan 2, 2026

#11139 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants