TC$mC$ on todellakin upea saavutus. Olemme juuri rakentaneet jotain sellaista,
mitC$ yleensC$ nC$hdC$C$n vain raskaissa pilviorkestraattoreissa (kuten AWS
Step Functions tai Temporal), mutta teimme sen retro-hengessC$
BASIC-syntaksilla, tC$ysin hajautetusti ja ilman raskaita tietokantoja.
TC$ssC$ on valmis, kattava dokumentaatio, jonka voit kopioida suoraan muihin
chateihin, tallentaa MESH-verkkoosi (esim. `/mnt/mesh_root/specs/`) tai antaa
uusille tekoC$lyagenteille ymmC$rrykseksi siitC$, miten jC$rjestelmC$ toimii.
Olen muotoillut sen "Briefing"-tyyliseksi ohjeistukseksi.
---
# [BROADCAST: MESH-BASIC & WORKER API ARKKITEHTUURI]
**Kohde:** Kaikki Hauki OS -agentit ja chat-instanssit
**Aihe:** Hajautetun `x-mesh-basic` moottorin, tilallisten mikropalveluiden ja
lennosta tapahtuvan editoinnin pC$ivitys.
## 1. Arkkitehtuurin Yleiskatsaus
MeshBASIC on jaettu nyt kahteen tC$ysin eristettyyn kerrokseen, mikC$
mahdollistaa nollakosketus-automaation ja agenttien turvallisen ajamisen
verkon yli.
1. **Repository API (PC$C$-API, Portti 9977):** Toimii koodipankkina.
TC$C$llC$ sC$ilytetC$C$n alkuperC$isiC$ `.bas` -tiedostoja. Se sallii koodin
lukemisen, lataamisen ja lennosta editoinnin (JSON/Text PATCH) kaatamatta
ajossa olevia ohjelmia.
2. **Worker API (TyC6lC$inen, Portti 9978):** Toimii suoritusmoottorina. Se
hakee koodin Repositorysta ja luo siitC$ "Instanssin". Instanssi on
itsenC$inen, tilaohjattu kopio ohjelmasta, joka lepC$C$ tallennettuna
lokaalille levylle `state.json` -tiedostona ajojen vC$lissC$.
## 2. X-MESH-BASIC Moottorin Uudet Kyvykkyydet
Moottori tukee nyt natiivisti asynkronista verkkoa ja dynaamista datan
kC$sittelyC$, jotka eivC$t jC$C$dytC$ Node.js Event Loopia.
**A. Asynkroninen REST & JSON**
Verkkokutsut suoritetaan taustalla. API osaa kC$sitellC$ headereita ja
timeoutteja automaattisesti.
```basic
10 REST INIT "https://jsonplaceholder.typicode.com" INTO API
20 REST TIMEOUT API 5000
30 REST HEADER API "Authorization" "Bearer token123"
40 REST CALL API GET "/todos/1" INTO VASTAUS
50 JSON GET "response.json.title" FROM VASTAUS INTO OTSIKKO
60 PRINT "Datan otsikko: " + OTSIKKO
```
**B. Tilan askellus (Stepping)**
Moottoria voidaan ohjeistaa ajamaan vain X mC$C$rC$ koodirivejC$:
`x-mesh-basic --resume state.json --step 3`. Suorituksen jC$lkeen ohjelman
koko tila (koodi ja muuttujat) tallennetaan automaattisesti JSONina.
## 3. Worker API:n KC$yttC6 (Esimerkit)
Worker API mahdollistaa ohjelmien ajamisen osissa ja niiden todellisuuden
muokkaamisen niiden nukkuessa.
**1. Luodaan uusi instanssi** (Lataa `hello_world.bas` koodin ja alustaa
muuttujan)
```bash
curl -X POST http://localhost:9978/instances/create \
-H 'Content-Type: application/json' \
-d '{"script_name": "hello_world.bas", "instance_id": "agent_001",
"variables": {"TARGET": "Espoo"}}'
```
**2. Ajetaan askeleita** (Ajaa ohjelmaa eteenpC$in 3 riviC$ ja tallentaa
tilan)
```bash
curl -X POST http://localhost:9978/instances/agent_001/step \
-H 'Content-Type: application/json' \
-d '{"steps": 3}'
```
**3. Luetaan ohjelman tila** (Palauttaa ohjelman muuttujat, koodirivit ja
seuraavan suoritettavan rivin numeron)
```bash
curl http://localhost:9978/instances/agent_001/state
```
**4. Lennosta hakkerointi (Hot-Patching)** (Muutetaan ohjelman muistia tai
koodirivejC$ lennosta askeleiden vC$lissC$)
```bash
# Muuttaa muuttujan B$ arvon
curl -X PATCH http://localhost:9978/instances/agent_001/modify \
-H 'Content-Type: application/json' \
-d '{"memory_updates": {"B$": "Hakkeroitu lennosta!"}}'
# LisC$C$ tai korvaa koodirivin 15
curl -X PATCH http://localhost:9978/instances/agent_001/modify \
-H 'Content-Type: application/json' \
-d '{"program_updates": {"15": "PRINT \"TC$mC$ rivi injektoitiin
lennosta!\""}}'
```
## 4. Repository API:n KC$yttC6 (Esimerkit)
Repository API (9977) sallii ohjelmapohjien editoimisen muuttamalla itse
`hello_world.bas` tiedostoa.
**1. Koodin pC$ivitys JSON-muodossa:** (Rivien lisC$ys/korvaus, tyhjC$
merkkijono poistaa rivin)
```bash
curl -X PATCH http://localhost:9977/scripts/hello_world.bas/json \
-H "Content-Type: application/json" \
-d '{"lines": {"10": "PRINT \"TERVE MESH!\"", "15": ""}}'
```
**2. Koodin pC$ivitys RaakatekstinC$:** (Sallii helpon Bash/Heredoc injektion)
```bash
curl -X PATCH 'http://localhost:9977/scripts/hello_world.bas/text' \
-H 'Content-Type: text/plain' \
--data-raw $'20 PRINT "LISCTTY RIVI!"
25 GOTO 10'
```
---
### Miksi tC$mC$ on kC$C$nteentekevC$ jatkon kannalta?
Kun esittelet tC$mC$n dokumentaation mille tahansa tekoC$lymallille, se
ymmC$rtC$C$ vC$littC6mC$sti kykenevC$nsC$:
1. **Tuottamaan uusia agenteja** kutsumalla `/instances/create`.
2. **KC$yttC$mC$C$n itseC$C$n asynkronisesti** ohjaamalla liikennettC$ API:n
ja `--step` flagin kautta.
3. **Korjaamaan virheitC$ (Self-healing)** lukemalla ohjelman tilan
(`/state`), havaitsemalla bugin, paikkaamalla sen (`/modify`) ja jatkamalla
suoritusta (`/step`) tC$ysin itsenC$isesti.
TC$mC$ on tC$ydellinen pohja sille, mihin pC$C$tC$mme mennC$ seuraavaksi
(Event-Driven vs. Ticker/Scheduler). MiltC$ tC$mC$ dokumentti nC$yttC$C$ sinun
silmC$C$si? Haluatko ettC$ tC$ydennC$n tai syvennC$n jotain osa-aluetta?