Fulling v3: рабочие пространства ИИ с Kubernetes

Fulling создаёт выделенные рабочие пространства для ИИ: постоянные среды, объединяющие навыки, файлы, память, скрипты и среду выполнения. Текущая основа v3 обеспечивает идентификацию и границу доступа к учётным данным Kubernetes, необходимые для этой продуктовой модели.

Текущая основа

  • Вход только через GitHub с использованием Better Auth

  • Пользователи, аккаунты провайдеров и сессии на основе PostgreSQL

  • Защищённая точка входа в рабочее пространство приложения

  • Один kubeconfig в открытом виде на каждого пользователя

  • Проверка kubeconfig с аутентификацией через Kubernetes SelfSubjectReview

  • Граница клиента Kubernetes на уровне пользователя

Репозиторий намеренно не содержит слоя совместимости с предыдущей продуктовой моделью или системой аутентификации.

Целевая модель рабочего пространства описана в docs/architecture.md. Kubeconfig на уровне пользователя в этой основе не является окончательной моделью владения средой выполнения рабочего пространства.

Требования

  • Node.js 24, включая входящий в комплект npm 11

Публичное приложение не требует PostgreSQL или провайдера OAuth. Устаревшее аутентифицированное рабочее пространство дополнительно требует PostgreSQL и GitHub OAuth App.

Укажите callback-адрес GitHub OAuth следующим образом:

${BETTER_AUTH_URL}/api/auth/callback/github

Локальная разработка

npm ci
npm run dev

Это запускает публичное приложение с отключённым входом. Чтобы проверить вместо этого устаревшее аутентифицированное рабочее пространство:

cp .env.template .env.local
# Заполните значения для базы данных, Better Auth и GitHub.
npm run prisma:migrate
npm run dev

Откройте http://localhost:3000.

Этот релиз использует новую базовую схему. Запускайте его на новой базе данных или на явно сброшенной; миграция данных v2 не предусмотрена.

Команды

npm run dev              # Запустить сервер разработки
npm run build            # Сгенерировать клиент Prisma и собрать проект
npm run lint             # Запустить ESLint
npm test                 # Запустить Vitest
npm run test:e2e         # Запустить Playwright
npm run prisma:format    # Отформатировать схему Prisma
npm run prisma:validate  # Проверить схему Prisma
npm run prisma:migrate   # Применить базовую миграцию

Граница учётных данных

Kubeconfig-файлы хранятся в PostgreSQL в открытом виде. Доступ на чтение к базе данных равнозначен доступу к учётным данным Kubernetes пользователей. API, доступные из браузера, никогда не возвращают сохранённый контент, а в логи не должны попадать токены, ключи, сертификаты и содержимое kubeconfig.

При валидации отклоняются исполняемые плагины для учётных данных (executable credential plugins), плагины auth-provider, локальные поля с указанием файлов для учётных данных, конфигурация прокси, API-серверы без HTTPS, редиректы и анонимные идентификаторы. Аутентифицированные пользователи по-прежнему могут указывать HTTPS API-сервер на любом сетевом адресе. Эта граница аутентифицированных исходящих запросов (SSRF) является осознанным решением на уровне развёртывания.

Сброс при развёртывании

Перед заменой развёртывания v2 ознакомьтесь с docs/v2-resource-inventory.md. Сброс базы данных Fulling не удаляет ресурсы Kubernetes, созданные версией v2.

Используйте docs/github-oauth-verification.md, чтобы проверить реальное OAuth-приложение перед выпуском.

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

Fulling может использовать нативное развёртывание Next.js на Vercel без файла vercel.json. Публичное приложение собирается и запускается без переменных окружения. Вход через GitHub, рабочее пространство с базой данных и работа с kubeconfig остаются отключёнными до тех пор, пока не будет задана полная конфигурация для устаревшего режима.

Полное описание настройки проекта, поведения без конфигурации, шагов проверки и процедуры отката приведено в docs/vercel-deployment.md.

© 2026 meganuke