Az engine belső rétegei
cmd/craftingtable-engine/main.go # flag parsing, mód-választás
internal/
├─ app/ # bootstrap, DI, graceful shutdown, MCP listener kötése
├─ transport/
│ ├─ httpapi/ # REST /api/v1, middleware (auth, log, recover)
│ └─ mcp/ # MCP szerver: stdio + streamable HTTP (mcp.go + authoring.go)
├─ domain/ # tiszta adat + logika — NEM ismer HTTP-t és SQL-t
│ ├─ project/ # projekt, konfiguráció, stack
│ ├─ levels/ # L1 business case, L2 user story
│ ├─ flow/ # canvas node/edge, C4 szintek
│ ├─ structure/ # cél fa-struktúra, oldal-entitások
│ ├─ schema/ # adatmodellek, mezők
│ ├─ skills/ # skill katalógus
│ ├─ design/ # tokenek, komponensek
│ ├─ asset/ # infra + package assetek
│ ├─ blueprint/ # Blueprint → Block → Part → Tweak
│ ├─ layout/ # derivált célfa node-jai
│ └─ workpackage/ # a Work Package index-entry típusa
├─ workspace/ # a projekt élő állapota; a Save*/Delete* metódusok + blueprint-szinkron
├─ pkg/
│ ├─ workpackagegen/ # determinisztikus Work Package assembler
│ ├─ layoutgen/ # a Layout célfa számítása
│ ├─ partbrief/ # a Blueprint Part önálló munka-briefje
│ ├─ ddlgen/ # adatmodell → DDL (postgres/mysql/sqlite/mssql/mongodb)
│ ├─ stackprofile/ # a projekt Stack → generátor-profil
│ ├─ export/ # Export & Handoff: MD/HTML, changelog, Docusaurus
│ ├─ git/ # git réteg (os/exec), snapshot/restore
│ ├─ scan/ # mappa-import: stack-detektálás, style/model/page szkennerek
│ ├─ gherkin/ # Gherkin lépés-parser (a frontend lib/gherkin.ts tükre)
│ ├─ canonjson/ # kanonikus JSON szerializáló + roundtrip-ellenőrzés
│ └─ slug/ # Unicode-transzliteráló slug (ID-generálás)
└─ store/files/ # a kanonikus JSON/MD író-olvasó (SSoT); atomi írás (temp + rename)
Rétegszabály
transport → workspace → domain → store.
- A
domainnem importálnet/http-t ésdatabase/sql-t. - A
pkg/workpackagegenés apkg/exportcsakdomain-t ésstore/files-t használ (soha nem SQLite-ot) — így garantált, hogy a kimenet a fájlokból jön, nem a cache-ből. - Hiba:
fmt.Errorf("...: %w", err)wrapping; szentinel hibák a domainben (ErrNotFound,ErrConflict), a transport réteg fordítja HTTP-státuszra (RFC 7807application/problem+json). - A fájlírás atomi (temp fájl +
rename) — ez a felhő-mappákban (iCloud/OneDrive) is helyes viselkedést ad.
A generate és az export viszonya
A generate (workpackagegen) állítja elő a Work Package-et — egyetlen, kanonikus Markdown
artefaktumot. Az export ezt nem generálja újra, csak becsomagolja: több munkacsomagot
fűz össze, tartalomjegyzéket és kereszthivatkozásokat tesz hozzá, és MD/HTML/Docusaurus
formába önti. Így a két kimeneti csatorna (ember és AI) garantáltan ugyanazt az adatot látja.
HTTP / WebSocket API
Base: http://127.0.0.1:<port>/api/v1 — minden hívás Authorization: Bearer <token>.
| Metódus | Útvonal | Leírás |
|---|---|---|
| GET | /health | Státusz, verzió, capabilities[], mcpPort, mcpStatus |
| GET | /capabilities | git, mcp, localFs, penpotSync, postgres, tier |
| POST | /projects | Új projekt + .craftingtable/ init + git init |
| GET/POST/PUT/DELETE | /entities/{type} /entities/{type}/{id} | CRUD (Business Case / User Story) |
| PUT | /project | Projekt-konfiguráció (név + stack) |
| GET/POST/PUT/DELETE | /flows /schema-models /design/components /skills /blueprints /structure/pages /assets/* | Modul-CRUD |
| GET/PUT | /design/tokens | Token-kollekció (egyben) |
| POST | /workpackages/generate · GET /workpackages | Work Package generálás / lista |
| GET | /blueprints/{id}/parts/{partId}/context | Part munka-brief |
| GET/POST | /layout/preview · /layout/generate · /layout/tree | Élő célfa / kiírás / diff-alap |
| GET/POST | /exports | Handoff export (format, scope, id?) |
| GET/POST | /vcs/status · /vcs/commit · /vcs/snapshots · .../{id}/restore | Git + snapshot |
| GET/POST | /import/preview · /import/run | Mappa-import |
Verziózás: az útvonal /api/v1. Breaking változásnál /api/v2, és az engine egy ideig
mindkettőt kiszolgálja.
D blokk — solo-scope-ban elhalasztva
/graph/trace/{id}, /search?q= + FTS5, WS /events — nincs implementálva; solo,
egyablakos használatban nincs rá szükség.