$ ls -ltra
total 16
drwxr-xr-x 1 root rootB B49 AugB 7 08:01 ..
drwxr-xr-x 1 root rootB B 3 AugB 7 08:01 .
-rw-r--r-- 1 root root 5627 AugB 7 08:01 vestibule.js
$ pwd
$ x-console omega-vestibule conf-cwd `pwd`
[+] Console omega-vestibule configured to workspace: /mnt/mesh_root/services/om
ega-vestibule
$ x-console omega-vestibule conf-start node vestibule.js
[+] Console omega-vestibule startup command configured: node vestibule.js
$ x-console omega-vestibule start
[+] Console omega-vestibule created and executed via Event-Driven wrapper in
/mnt/mesh_root/services/omega-vestibule
$ x-console omega-vestibule tail
user@hauki-astudio:/mnt/mesh_root/services/omega-vestibule$ /tmp/x_console_star
t
_omega-vestibule.sh
[ETEINEN] OMEGA Vestibule (No-Dependencies) kC$ynnissC$ portissa 22880
$B
=============================
$ x-mailbox-client.py
B B ===============================================================
B B ===========================================================================
=================================================== X-MAILBOX CLIENT - THE
DARK MESH REPL (VFS & HISTORY ENABLED)
B B ===============================================================
B B Tervetuloa. Kirjoita 'help' tai '?' nC$hdC$ksesi komennot.
B B Vinkki: KC$ytC$ '>' tallennukseen ja '<' lukuun (esim. get_tabs >
tabs.json)
B B ===============================================================
B BB
(mud)> api load :22880
[*] Luetaan arkkitehtuuria: http://127.0.0.1:22880/openapi.json ...
[+] API 'OMEGA Vestibule' nielty onnistuneesti!
B B The MUD laajeni: Ladattiin 7 uutta loitsua.
(mud)> post_auth_register {"username": "admin", "password": "123"}
[*] POST http://127.0.0.1:22880/auth/register
{
B "status": "ok",
B "message": "Rekister\u00f6ity"
}
(mud)> post_auth_login {"username": "admin", "password": "123"}
[*] POST http://127.0.0.1:22880/auth/login
{
B "status": "ok",
B "token": "1547fab3-12d7-4426-967a-778b201ab92a",
B "omega_id": "mesh://user/admin"
}
(mud)> help
Documented commands (type help <topic>):
========================================
apiB B B B B B B B B B B B B B helpB B B B B B Bpost_auth_registerB B B BB
catB B B B B B B B B B B B B B inject_hudB B B Bpost_mailbox_omega_id_push
delete_mailbox_omega_id_clearB lsB B B B B B B BrmB B B B B B B B B B B BB
exitB B B B B B B B B B B B B BmailB B B B B B BtargetB B B B B B B B B BB
get_auth_usersB B B B B B B B Bmail_fileB B BB
get_mailbox_omega_id_checkB B BnlB B B B B B B
get_mailbox_omega_id_pullB B B post_auth_login
Undocumented commands:
======================
EOFB quit
(mud)> get_mailbox_omega_id_check {"omega_id": "mesh://user/admin"}
[*] GET http://127.0.0.1:22880/mailbox/{"omega_id":/check
{
B "count": 0
}
(mud)>B
Se elC$C$! Ja mikC$ parasta, MUD-pC$C$tteemme nieli tuon nollariippuvuuksilla
rakennetun `vestibule.js`:n OpenAPI-kuvauksen tC$ysin nikottelematta. Olemme
virallisesti onnistuneet rakentamaan lennosta generoituvan CLI-rajapinnan.
Huomasitko muuten pienen ja todella hauskan "glitchin" tuossa aivan
viimeisessC$ komennossa?
MUD-pC$C$tteesi tulosti: `[*] GET [http://127.0.0.1:22880/mailbox/](http://127.
0.0.1:22880/mailbox/){"omega_id":/check`.
Palvelin vastasi: `{"count": 0}`.
MitC$ oikeasti tapahtui:
1. `x-mailbox-client.py` pC$C$ttelee polkumuuttujat (`{omega_id}`) komennon
ensimmC$isistC$ vC$lilyC6nnillC$ erotetuista sanoista.
2. Annoit sille argumentiksi JSON-objektin: `{"omega_id": "mesh://user/admin"}`
.
3. Python-skripti lohkaisi ensimmC$iseksi sanaksi `{"omega_id":` ja upotti sen
URL-osoitteeseen polkumuuttujan paikalle.
4. Eteisen Node.js-koodi otti tuon vastaan, purki sen, ja loi kaikessa
hiljaisuudessa aivan uuden postilaatikon kC$yttC$jC$lle nimeltC$
`{"omega_id":`!
LisC$ksi meillC$ on toinen pieni verkkotekninen juju: Koska todellinen
OMEGA-osoitteesi sisC$ltC$C$ vinoviivoja (`mesh://user/admin`), ne sekoittavat
Eteisen yksinkertaisen `req.url.split('/')` -reitityksen, ellei niitC$
URL-koodata.
Testataan koko Eteisen PUSH- ja PULL-sykli oikeaoppisesti! Kun MUD-pC$C$te
kysyy polkumuuttujaa (`omega_id`), annetaan se sille URL-koodattuna
ensimmC$isenC$ argumenttina (`mesh%3A%2F%2Fuser%2Fadmin`), jonka jC$lkeen
laitetaan mahdollinen JSON-payload.
### Eteisen Testiajo MUD-pC$C$tteellC$
**1. Pusketaan viesti omaan postilaatikkoon:**
TyC6nnC$ uusi OMEGA-paketti sisC$C$n antamalla polkumuuttuja, ja sen perC$C$n
vC$lilyC6nnillC$ JSON-payload.
```text
post_mailbox_omega_id_push mesh%3A%2F%2Fuser%2Fadmin {"head": {"v": 1, "id":
"msg_test_mud", "src": "mesh://local/mud", "dst": "mesh://user/admin", "type":
"HELLO"}, "payload": "Testiviesti EteisestC$!"}
```
**2. Tarkistetaan onko laatikossa postia (CHECK):**
TC$mC$ ei vaadi payloadia, ainoastaan polkumuuttujan.
```text
get_mailbox_omega_id_check mesh%3A%2F%2Fuser%2Fadmin
```
*(TC$mC$n pitC$isi nyt palauttaa `{"count": 1}`!)*
**3. Haetaan viesti ulos (PULL):**
```text
get_mailbox_omega_id_pull mesh%3A%2F%2Fuser%2Fadmin
```
Kun tC$mC$ saadaan lC$pi, Eteinen toimii tC$ydellisenC$ postikonttorina.
Jatkokehityksen kannalta `x-mailbox-client.py`:n `_create_dynamic_method`
-funktioon voisi toki lisC$tC$ `urllib.parse.quote()` -kutsun
polkumuuttujille, jotta REPL:ssC$ voisi kirjoittaa `mesh://` -osoitteet
tC$ysin luonnollisesti ilman koodausta.
Haluatko ettC$ korjaamme tuon URL-koodauksen suoraan MUD-asiakasohjelman
koodiin, vai siirrymmekC6 kytkemC$C$n tC$mC$n Eteisen kiinni itse `OMEGA
ROUTER v3` -ydinmoottoriin?