feat (ui): exec fase 2
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
Chat export (zichtbare user-assistant conversatie)
|
||||
Datum: 2026-03-04
|
||||
|
||||
User:
|
||||
Onderzoek de mogelikhein om in het container overzicht in het three-dot menu naast elke container(dus niet pod) De podman exec -it functionaliteit toe te voegen. Je hebt mijn toestemming om zelf curls op http://host.containers.internal:8081 uit te voeren met escalated execution
|
||||
|
||||
Assistant:
|
||||
Ik ga eerst de huidige backend- en WebUI-implementatie van het container-overzicht en het three-dot menu in kaart brengen, daarna test ik met curl welke API-capaciteiten al beschikbaar zijn voor exec zodat ik een minimale, backward-compatible aanpak kan voorstellen.
|
||||
|
||||
Assistant (samenvatting):
|
||||
- Relevante code gevonden in control/app_containers.py en webui/html/assets/js/tabs/containers.js.
|
||||
- OpenAPI en live endpoints gecontroleerd via curl.
|
||||
- Bevestigd dat er nog geen exec-endpoint bestond.
|
||||
|
||||
User:
|
||||
Ik wil eerst backend-sessie + curl-werkend, doen nog helemaal niets aan de ui. Maak een kort implementatie plan en toen welke bestande je gaat aanpassen. Nog geen apply, nog niet doorvoeren
|
||||
|
||||
Assistant:
|
||||
Korte plan + bestanden:
|
||||
1. Scope backend-only.
|
||||
2. Nieuwe endpoints voor exec start/stream/input/resize/stop.
|
||||
3. In-memory sessiemanager.
|
||||
4. Foutafhandeling/guardrails.
|
||||
5. Curl-validatie.
|
||||
Bestanden: control/app_containers.py (primair), control/common.py (alleen indien nodig), control/app.py (liefst niet).
|
||||
|
||||
User:
|
||||
Doe nog een keer goed odnerzoek of het wel haalbaar is want "podman auto-update --dry-run" werkt bijvoorbeeld niet in de api container
|
||||
|
||||
Assistant (samenvatting onderzoek):
|
||||
- podman CLI ontbreekt in backend image/runtime (command not found).
|
||||
- Backend kan wel met Podman REST via socket praten (health/test-hybrid/containers endpoints).
|
||||
- Conclusie: CLI-route niet haalbaar zonder imagewijziging; REST-gebaseerde exec-sessie wel haalbaar.
|
||||
|
||||
User:
|
||||
Nog geen akkoord, vertel eerst wat je gaat doen met de REST-gebaseerde exec-sessie (backend + curl)
|
||||
|
||||
Assistant:
|
||||
Plan REST-gebaseerd:
|
||||
1. In-memory sessies.
|
||||
2. POST /containers/{name}/exec/start.
|
||||
3. GET /containers/exec/{session_id}/stream (SSE), POST input, POST resize.
|
||||
4. POST stop.
|
||||
5. Strikte validatie + backward compatibility.
|
||||
6. Curl tests.
|
||||
|
||||
User:
|
||||
Doe eerst de validatie nog geen implementatie akkoord
|
||||
|
||||
Assistant (samenvatting validatie):
|
||||
- Socketpad en runtime bevestigd via inspect.
|
||||
- Directe host-socket test vanuit agent-namespace beperkt.
|
||||
- Conclusie bleef: REST-route haalbaar, maar laatste 100%-check via host-curl gewenst.
|
||||
|
||||
User:
|
||||
"Als je wilt, doe ik nu alleen die laatste read-only socket-validatie (nog steeds zonder implementatie)." Ja
|
||||
|
||||
Assistant:
|
||||
Read-only socket-curl set gegeven voor host:
|
||||
- _ping/version/info
|
||||
- containers list
|
||||
- exec create
|
||||
- exec inspect
|
||||
- exec resize
|
||||
(optioneel exec start)
|
||||
|
||||
User (host outputs):
|
||||
- Exec create gaf Id.
|
||||
- Exec inspect werkte.
|
||||
- Resize vóór start gaf expected 500 state improper.
|
||||
- Exec start gaf 200 raw-stream.
|
||||
|
||||
Assistant:
|
||||
Conclusie: haalbaarheid bevestigd. Start->resize volgorde belangrijk. Klaar voor implementatie.
|
||||
|
||||
User:
|
||||
akkoord
|
||||
|
||||
Assistant (implementatie):
|
||||
- Backend-only exec sessie toegevoegd in control/app_containers.py.
|
||||
- Nieuwe endpoints:
|
||||
- POST /containers/{name}/exec/start
|
||||
- GET /containers/exec/{session_id}
|
||||
- GET /containers/exec/{session_id}/stream
|
||||
- POST /containers/exec/{session_id}/input
|
||||
- POST /containers/exec/{session_id}/resize
|
||||
- POST /containers/exec/{session_id}/stop
|
||||
- Compile checks OK.
|
||||
- Op actieve runtime eerst 404 tot backend redeploy (verwacht).
|
||||
|
||||
User:
|
||||
ja
|
||||
|
||||
Assistant:
|
||||
Deploy/run stappen gegeven (build image, restart backend container, curl tests).
|
||||
|
||||
User (testresultaten):
|
||||
- OpenAPI toont nieuwe exec routes.
|
||||
- start/stream/input/resize/stop werken.
|
||||
- Ping bleef doorlopen in terminal 1.
|
||||
|
||||
Assistant:
|
||||
Uitleg: twee verschillende session_id’s gebruikt; stop de juiste sessie vanuit andere terminal.
|
||||
|
||||
User:
|
||||
Kan niet in terminal 1 want ik kan niets invoeren, ping zit in soort loop
|
||||
|
||||
Assistant:
|
||||
Gebruik andere terminal of Ctrl+C in stream-terminal.
|
||||
|
||||
User:
|
||||
Ja curl .../stop werkt in een andere terminal :)
|
||||
|
||||
Assistant:
|
||||
Bevestigd. Volgende stap: UI (1 menu-item, 2 modal terminal, 3 resize).
|
||||
|
||||
User:
|
||||
Als 1, 2 en drie klaar zijn kan ik dan in een terminal windows vanuit de webui? (nog niets implementeren)
|
||||
|
||||
Assistant:
|
||||
Ja, met 1/2/3 heb je functionele interactieve web-terminal (basis), met optionele latere polish.
|
||||
|
||||
User:
|
||||
Aplly 1, 2 en 3
|
||||
|
||||
Assistant (UI implementatie):
|
||||
- Exec shell toegevoegd aan container three-dot menu (niet pod).
|
||||
- Terminal modal toegevoegd in index.html.
|
||||
- Frontend logic toegevoegd in containers.js:
|
||||
- session start
|
||||
- SSE stream
|
||||
- input verzenden
|
||||
- stop bij modal sluiten
|
||||
- resize via ResizeObserver
|
||||
- CSS styling toegevoegd in app.css.
|
||||
- JS syntax check OK.
|
||||
|
||||
User:
|
||||
Kun je deze gehel chat in en text bestand zetten, zodat ik deze kan bewaren?
|
||||
|
||||
Assistant:
|
||||
Ik zet een export in een tekstbestand.
|
||||
|
||||
Reference in New Issue
Block a user