Довідник Bridge
Технічний довідник по графу Bridge: вузли, порти, конвеєри та ендпоінт. Покрокову інструкцію дивіться на сторінці Огляд Bridge.
Ендпоінт
https://mcp.fainflow.com/mcp/<bridgeId>
| Шлях | Що віддає |
|---|---|
/mcp | Вашу повну федерацію — усі інструменти з усіх підключень. |
/mcp/<bridgeId> | Один Bridge — його федеровані інструменти плюс його конвеєри. |
Обидва говорять MCP через Streamable HTTP. Автентифікація — OAuth на краю (ваш логін Fainflow); Bridge автоматично визначає ваш акаунт і обмежує кожен виклик вашими підключеннями та конвеєрами.
Аудит
Кожен tools/call, що доходить до обробника, записується в append-only журнал
аудиту (перелік — initialize, tools/list — ні). Кожен запис містить:
| Поле | Значення |
|---|---|
| action | mcp.tool_call або mcp.pipeline_call |
| actor | автентифікований користувач Fainflow (id + email) |
| resource | назва інструмента / конвеєра |
| scope | federation або bridge:<id> |
| mutating | true для пишучих інструментів (create/update/delete/merge/push/…) |
| args | лише ідентифікатори (owner, repo, path, query, cloudId, …); інші значення зводяться до типу/довжини, секрети відкидаються — вільний текст не зберігається |
| status | success / failure + тривалість |
Журнал append-only (без update/delete), видно в розділі Audit Logs у кабінеті. Логування fire-and-forget — не додає затримки й не ламає виклик.
Типи вузлів
| Тип | Роль | Порти |
|---|---|---|
input | Точка входу конвеєра. | Вихідні порти = іменовані аргументи, які передає викликач. |
tool | Один виклик інструмента підключення. | Входи = аргументи інструмента, вихід = результат. Фіксовані схемою. |
merge | Fan-in — об'єднати входи в один об'єкт. | Входи, які ви додаєте; один спільний вихід. |
output | Точка виходу конвеєра. | Вхідні порти = те, що отримує викликач. |
transform | Зарезервовано для перетворення значень між вузлами. | — |
Правила портів
- Порти додаються/видаляються на вузлах input (аргументи) та output / merge (результати) в інспекторі.
- Порти вузла tool фіксовані — вони беруться зі вхідної схеми інструмента.
- Зв'язок з'єднує вихідний порт одного вузла → вхідний порт іншого. Граф має бути ациклічним; цикл відхиляється під час малювання й під час збереження.
Конвеєри
Конвеєр — це іменований підграф: inputNode, outputNode і всі вузли між ними,
від яких залежить вихід.
{
"id": "p1",
"name": "get_repo_context", // що викликає агент
"description": "…",
"inputNode": "in1", // його вихідні порти стають аргументами виклику
"outputNode": "out1" // його вхідні порти стають результатом
}
Під час виклику Bridge обмежує виконання вузлами, від яких насправді залежить
outputNode, і запускає їх.
Виконання
- Порядок виводиться з графа. Вузли запускаються хвилями залежностей (топологічні рівні); вузли однієї хвилі виконуються паралельно.
- Кожен виклик інструмента відкриває нову сесію, викликає інструмент і закриває її.
- Входи, що дають
undefined, відкидаються; аргументи виклику вузла —{ ...config, ...inputs }. - Fail-fast. Якщо будь-який вузол падає, виконання зупиняється з
node <id> (<tool>) failed. - Тайм-аут на виклик: 30с. Максимум вузлів на запуск: 50.
Форма графа
Bridge зберігає один об'єкт graph:
{
"version": 1,
"nodes": [
{
"id": "in1",
"kind": "input",
"outputs": ["query"],
"position": { "x": 280, "y": 40 },
"label": "Input"
},
{
"id": "t1",
"kind": "tool",
"connectionId": "<connId>",
"tool": "search_repositories",
"inputs": ["query"],
"outputs": ["result"]
},
{ "id": "out1", "kind": "output", "inputs": ["ctx"] }
],
"edges": [
{ "id": "e1", "from": { "node": "in1", "port": "query" },
"to": { "node": "t1", "port": "query" } },
{ "id": "e2", "from": { "node": "t1", "port": "result" },
"to": { "node": "out1","port": "ctx" } }
],
"pipelines": [
{ "id": "p1", "name": "find", "inputNode": "in1", "outputNode": "out1" }
]
}
Валідація
Збережений граф відхиляється, якщо в ньому є:
- неправильна форма або дублікати id вузлів/зв'язків;
- зв'язок чи конвеєр, що посилається на відсутній вузол;
- ім'я інструмента, що не відповідає
^[a-zA-Z][a-zA-Z0-9_-]{0,63}$; - конвеєр, межі якого не є коректними вузлами input/output;
- цикл.
Ліміти
| Ліміт | Значення |
|---|---|
| Вузлів на запуск | 50 |
| Тайм-аут на виклик інструмента | 30с |
| Шаблон імені інструмента | ^[a-zA-Z][a-zA-Z0-9_-]{0,63}$ |
| Граф | має бути ациклічним |