Узлы и плагины
Если узлы могут быть не только HTTP, происходит качественный скачок. Дерево перестаёт состоять только из HTTP-запросов — оно состоит из узлов обработки:
Users
Orders
Reviews
Merge
Report
Save
Из них HTTP — всего два. Язык перестаёт быть HTTP DSL.
LINQ/SQL поверх HTTP
Узлы уровня данных превращают файл практически в LINQ или SQL, но поверх HTTP:
### Users
GET /users
### Filter where $.active
### Sort by $.lastLogin
### Group by $.country
Открытая плагинная система
Все типы узлов выглядят одинаково:
### HTTP
### SQL
### MCP
### Filter
### Transform
### Prompt
### Template
### Markdown
### Save
### Delay
Исполнитель просто загружает плагины; каждый плагин умеет выполнять свой тип блока. Файл не должен состоять из HTTP-запросов — он должен состоять из узлов, а HTTP — один из них.
Разделение идентификатора и типа
Перегружать ### семантикой типа узла неудобно: название начинает одновременно быть идентификатором и задавать поведение. Лучше разделить роли:
### Users
GET /users
### filter: Active
$.active
### http: Orders
GET /orders/{{ $item.id }}
Здесь Users — идентификатор узла, filter — тип, Active — человекочитаемое имя. Так новые типы (mcp, sql, template, prompt, delay) регистрируются без конфликтов с именами и без изменения синтаксиса. Это масштабируется лучше, чем жёстко зашитый список специальных названий.
Источники
- Обсуждение концепции httplan — диалог с ChatGPT (2026-07-08), chatgpt.com/share/6a4e7804-ce90-83ed-acd0-0def6540872d