diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 50ed643..328aa98 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -65,24 +65,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v5
- - name: Install Node.js
- uses: actions/setup-node@v6
- with:
- node-version: 22
- cache: npm
- cache-dependency-path: apps/ui/package-lock.json
+ - name: Validate static UI files
+ run: |
+ test -f apps/ui/Dockerfile
+ test -f apps/ui/index.html
+ test -f apps/ui/nginx.conf
- - name: Install UI dependencies
- working-directory: apps/ui
- run: npm ci
-
- - name: Build UI
- working-directory: apps/ui
- run: npm run build
-
- - name: Run UI tests
- working-directory: apps/ui
- run: npm run test -- --run
+ - name: Build UI image
+ run: docker build -f apps/ui/Dockerfile .
deployment:
name: Deployment Artifacts
diff --git a/README.md b/README.md
index 74e4dad..e728264 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,7 @@

-Crank - это low-code платформа для публикации внешних API в виде MCP tools без написания нового backend-обработчика под каждую интеграцию. Система предоставляет единый административный UI, в котором оператор может подключать REST, GraphQL и gRPC операции, настраивать маппинг входных и выходных данных, выполнять тестовый вызов и публиковать результат как MCP tool.
-
-На текущем этапе репозиторий содержит проектную документацию и архитектурные решения, которые задают границы MVP и подход к реализации.
+Crank - платформа для публикации внешних API в виде MCP tools без написания отдельного backend-кода под каждую интеграцию. Целевая модель проекта строится вокруг связки `workspace -> agent -> operations`.
## Цели
@@ -12,75 +10,80 @@ Crank - это low-code платформа для публикации внеш
- Поддержать динамическое добавление интеграций через UI или конфигурацию.
- Обеспечить единый сценарий работы оператора для REST, GraphQL и gRPC.
- Нормализовать внешние протоколы в единую внутреннюю модель операции.
-- Избежать генерации и деплоя нового backend-кода при добавлении каждого нового инструмента.
+- Ограничивать набор tools на уровне конкретного агента, а не отдавать один глобальный каталог.
+- Поддержать workspace-изоляцию, platform access и observability.
-## Состав MVP
+## Целевая модель продукта
+- `Workspace` как tenant boundary.
+- `Operation` как интеграционный контракт.
+- `Agent` как curated MCP surface для LLM.
- Поддержка REST для `GET`, `POST`, `PUT`, `PATCH` и `DELETE`.
-- Поддержка GraphQL для `query` и `mutation` на основе шаблонов и переменных.
+- Поддержка GraphQL для `query` и `mutation`.
- Поддержка только unary-методов gRPC.
-- Загрузка примеров `JSON` для ускоренного создания схем и чернового маппинга.
-- Загрузка `.proto` файлов или descriptor set для обнаружения схемы gRPC.
-- Импорт и экспорт конфигураций операций в `YAML`.
-- Использование `JSONPath` для точечного маппинга вложенных параметров и ответа.
-- Настройка маппинга запроса и ответа через UI.
-- Публикация tools в MCP без пересборки backend.
+- Platform API keys и membership layer.
+- Observability: invocation logs, usage aggregates, latency/error metrics.
+- Импорт и экспорт operation-конфигураций в `YAML`.
+- Использование `JSONPath` для точечного маппинга.
## Структура документации
-- `docs/architecture.md` - архитектура системы, модули, потоки данных и стек.
-- `docs/module-decomposition.md` - детальная декомпозиция crates и внутренних модулей.
-- `docs/data-model.md` - формальная модель данных и JSON-структуры сущностей.
-- `docs/database-schema.md` - схема БД, связи и versioning конфигураций.
-- `docs/admin-api.md` - HTTP-контракты административного API.
-- `docs/diagrams.md` - структурные диаграммы компонентов, сущностей, БД и потоков.
-- `docs/mcp-interface.md` - транспорт и контракт публикации MCP tools.
-- `docs/testing-strategy.md` - стратегия тестирования до и во время разработки.
-- `docs/runtime-config.md` - конфигурация окружения, storage и секретов.
-- `docs/deployment.md` - контейнерный деплой, reverse proxy и CI/CD.
-- `docs/demo-runbook.md` - пошаговый сценарий локального запуска и воспроизводимого демо.
-- `docs/rust-design.md` - распределение методов, `impl`, `trait` и service-слоя без god-struct.
-- `docs/development-rules.md` - правила разработки, TDD-процесс и git workflow.
-- `docs/rust-code-rules.md` - Rust-specific правила кода, toolchain и linting.
-- `docs/implementation-plan.md` - последовательность модулей и фич по этапам реализации.
-- `docs/protocols/rest.md` - функциональные требования и ограничения для REST.
-- `docs/protocols/graphql.md` - функциональные требования и ограничения для GraphQL.
-- `docs/protocols/grpc.md` - функциональные требования и ограничения для gRPC.
+- `docs/architecture.md` - целевая архитектура системы.
+- `docs/as-is-to-be.md` - переход `as is -> to be`, page-by-page gap analysis и архитектурные конфликты.
+- `docs/backend-gap-plan.md` - конкретный backend-план: сущности, API, БД и порядок реализации.
+- `docs/operations-workspace-contracts.md` - точные `workspace-scoped` контракты для экранов `Operations` и `Wizard`.
+- `docs/module-decomposition.md` - декомпозиция crates и модулей.
+- `docs/data-model.md` - целевая модель данных.
+- `docs/database-schema.md` - целевая схема БД.
+- `docs/admin-api.md` - целевые HTTP-контракты административного API.
+- `docs/diagrams.md` - диаграммы компонентов, сущностей и БД.
+- `docs/mcp-interface.md` - модель MCP transport и agent-scoped publishing.
+- `docs/testing-strategy.md` - стратегия тестирования.
+- `docs/runtime-config.md` - конфигурация окружения.
+- `docs/deployment.md` - деплой, reverse proxy и CI/CD.
+- `docs/demo-runbook.md` - демонстрационный сценарий.
+- `docs/rust-design.md` - правила распределения поведения в Rust.
+- `docs/development-rules.md` - правила разработки и workflow.
+- `docs/rust-code-rules.md` - Rust-specific coding rules.
+- `docs/implementation-plan.md` - порядок перехода от текущего состояния к целевой модели.
+- `docs/protocols/rest.md` - требования и ограничения для REST.
+- `docs/protocols/graphql.md` - требования и ограничения для GraphQL.
+- `docs/protocols/grpc.md` - требования и ограничения для gRPC.
## Ключевая идея продукта
-Система строится вокруг унифицированной сущности `Operation`. Каждая операция описывает:
+Система строится вокруг трех уровней:
-- внешний протокол,
-- целевой endpoint или метод,
-- входную схему,
-- правила маппинга входных данных,
-- параметры выполнения,
-- правила маппинга выходных данных,
+- `Workspace` - граница данных и доступа команды.
+- `Agent` - curated MCP endpoint для конкретного сценария LLM.
+- `Operation` - низкоуровневый интеграционный контракт.
+
+`Operation` описывает:
+
+- внешний протокол;
+- целевой endpoint или метод;
+- входную схему;
+- правила маппинга входных данных;
+- параметры выполнения;
+- правила маппинга выходных данных;
- метаданные MCP tool.
-За счет этого MCP runtime работает с единой внутренней моделью, а протокольные адаптеры уже выполняют конкретные вызовы REST, GraphQL или gRPC.
-
-Для GraphQL это означает, что в MCP публикуется не "универсальный GraphQL endpoint", а конкретная операция с фиксированным шаблоном запроса, фиксированным набором входных параметров и предсказуемой структурой ответа.
-
-Для упрощения настройки оператор может загружать примеры входного и выходного `JSON`, а для gRPC - `.proto` или descriptor set. На основе этих артефактов система строит черновую схему и стартовый маппинг, который затем вручную уточняется через `JSONPath`.
-
-Конфигурации операций должны импортироваться и экспортироваться в `YAML`, чтобы их можно было переносить между окружениями, хранить в git и редактировать вне UI.
+`Agent` собирает ограниченный набор опубликованных операций в одну MCP-поверхность. Именно это решает проблему, когда один агент теряется в слишком большом наборе tools.
## CI/CD статус
В репозитории настроены:
-- `CI` для Rust, UI и deployment artifacts;
+- `CI` для Rust, UI container и deployment artifacts;
- `CD`, который запускается после успешного `CI` на `main` или вручную;
-- containerized production-like deployment через `docker compose`.
+- containerized deployment через `docker compose`.
## Поддерживаемые протоколы
-В MVP платформа ориентируется на три основных протокольных сценария интеграции:
+В целевой модели платформа ориентируется на:
- REST
- GraphQL
- gRPC
-`SOAP` сознательно не входит в MVP. Он остается актуальным для части корпоративных и государственных интеграций, но требует отдельного адаптера с поддержкой WSDL, XML Schema, SOAP envelope, namespaces и XML-oriented mapping. Для первой версии это слишком большой отдельный пласт сложности.
+`SOAP` сознательно не входит в текущий scope.
diff --git a/TASKS.md b/TASKS.md
index 3c46718..ed81a88 100644
--- a/TASKS.md
+++ b/TASKS.md
@@ -2,22 +2,25 @@
## Current
-### `feat/crank-rebrand`
+### `feat/operations-workspace-contracts`
Status: completed
DoD:
-- проект переименован в `Crank` в документации, UI и package metadata
-- workspace и crate package names согласованы с новым брендом
-- `README.md` использует `Crank.png` как главное изображение
-- `origin` указывает на `git@github.com:bsodfather/crank.git`
-- Rust workspace и UI build остаются зелеными
+- `workspace-scoped` контракты для `Operations` и `Wizard` зафиксированы
+- определены точные DTO и lifecycle semantics для operations
+- `PATCH/DELETE/ARCHIVE` и wizard DTO shape документированы
## Next
-- `feat/demo-assets`
+- `feat/workspace-foundation`
## Backlog
+- `feat/workspace-foundation`
+- `feat/agent-publishing`
+- `feat/platform-access`
+- `feat/observability-api`
+- `feat/alpine-ui`
- `feat/demo-assets`
diff --git a/apps/ui/Dockerfile b/apps/ui/Dockerfile
index f2db4be..8be8867 100644
--- a/apps/ui/Dockerfile
+++ b/apps/ui/Dockerfile
@@ -1,15 +1,7 @@
-FROM node:22-alpine AS build
-
-WORKDIR /app
-
-COPY apps/ui/package.json apps/ui/package-lock.json ./
-RUN npm ci
-COPY apps/ui/ ./
-RUN npm run build
-
FROM nginx:1.27-alpine
COPY apps/ui/nginx.conf /etc/nginx/conf.d/default.conf
-COPY --from=build /app/dist /usr/share/nginx/html
+COPY apps/ui/index.html /usr/share/nginx/html/index.html
+COPY Crank.png /usr/share/nginx/html/Crank.png
EXPOSE 3000
diff --git a/apps/ui/index.html b/apps/ui/index.html
index cfa159f..81d9d27 100644
--- a/apps/ui/index.html
+++ b/apps/ui/index.html
@@ -4,9 +4,91 @@
Crank Console
+
-
-
+
+
+ UI replacement in progress
+ Crank Console
+
+ The legacy React/Vite UI has been removed. A new operator console is being integrated on top of the same
+ deployment path.
+
+
+ Backend services, MCP endpoints and deployment contracts remain intact. Replace this static entrypoint with
+ the new Alpine.js UI when it is ready.
+
+