Server-side dynamic tools for AI-generated UI: SQLite-backed definitions, LLM-assisted generate, schema-driven execute (chat vs space), and LAN HTTP API consumed by MoonHub-PWA.
-
pkg/dynamictools—ToolManager,SchemaEngine,HostFunctions(HTTPFetchwith URL validation, response size cap),typesaligned with PWAGeneratedComponent -
web/backend/api/dynamic_tools.go—GET/POST/PATCH/DELETEunder/api/dynamic-tools(LAN-only); generate uses deviceconfig.jsonLLM -
web/backend/api/router.go— registers handler when DB init succeeds - MoonHub-PWA —
dynamicToolsService, Space home / detail / add flows,DynamicRenderer+ chat/space dynamic component sets
| Method | Path | Purpose |
|---|---|---|
| GET | /api/dynamic-tools?source=ai |
List tools |
| POST | /api/dynamic-tools/generate |
Create or return deduped tool from prompt |
| POST | /api/dynamic-tools/{id}/execute |
Run tool (mode: chat | space) |
| GET | /api/dynamic-tools/{id}/schema |
Raw schema for a mode |
| DELETE | /api/dynamic-tools/{id} |
Remove tool |
| PATCH | /api/dynamic-tools/{id}/home |
Pin/unpin on Space home |
Authoritative tables: web/backend/api/README.md.
-
engine: wasm— no wazero (or other) executor wired; field reserved - ReadChannel — host function stub returns empty
- Optional config.json keys dedicated to dynamic-tools (timeouts, model override) — currently reuses main LLM configuration from generate path
- pkg/dynamictools/docs/README.md
- MoonHub-PWA docs/services.md (client usage; split-repo layout)