Aturan
- Hanya berkas biasa. Hal paling jauh yang dilakukan berkas adalah bertambah saat merekam —
records.jsonlsebuah aliran, berkas media-nya,members.jsonlsebuah eksekusi. Tidak ada basis data tersembunyi, berkas penunjuk, atau paket. - Referensi berupa path dan id. Sebuah eksekusi memakai aset pada path-nya saat ini; tidak ada yang mengunci hash.
- Folder adalah proyek. Tidak ada tata letak proyek yang di-hard-code ke dalam meja kerja.
- Tingkat. Setiap definisi, dunia dan pengaturan bisa ada di cloud atau lokal, pada tingkat global, pengguna dan proyek, dan digabung dari yang luas ke yang spesifik.
Perangkat
devices/<id>/definition.tsx, dengan asetnya di sampingnya di devices/<id>/assets/ (misalnya model.glb). Definisi adalah kode: meja kerja menjalankannya dan membaca <device> yang dideklarasikannya.
Definisi menyebut mesinnya (name, manufacturer, model_number, product_url …), model 3D-nya (model), dan channels-nya:
export default () => (
<device name="CNC 3018" manufacturer="…">
<channel id="gcode" dir="duplex" medium="records" format="gcode-chat" dialect="grbl" transport="serial" baud={115200} />
</device>
);dir adalah in, out atau duplex; medium adalah records, video, audio atau bytes. Sebuah unit di dalam dunia bisa mengganti sebuah saluran.
Dunia
worlds/<id>/world.tsx, kode yang mendeklarasikan satu <world>:
export default () => (
<world name="Shop floor" kind="physical">
<space origin_mm={[0, 0, 0]} size_mm={[6000, 4000, 3000]} />
<unit uid="mill-1" name="Mill" device="../../devices/cnc-3018/definition.tsx" position={[1200, 800, 0]} rotation={0} />
</world>
);Setiap perubahan di meja kerja ditulis kembali ke dalam kode sebagai perubahan terkecil.
kind adalah physical atau simulation. Sebuah dunia bisa menyebut adegan 3D (model, sebuah .3d.tsx) dan, jika dunia itu simulasi, sebuah berkas simulasi (sim, sebuah .sim.json). Dunia bukan model 3D, dan eksekusi bukan dunia.
Eksekusi dan aliran
runs/<run>/ adalah satu eksekusi di dalam satu dunia:
| berkas | isinya |
|---|---|
run.json | id, world, kind (session, recipe atau thread), started, ended, from (eksekusi dan waktu tempat ia dicabangkan) |
members.jsonl | siapa dan apa yang ikut serta, ditambahkan saat mereka bergabung |
steps.jsonl | langkah-langkah sebuah resep |
streams/<uid>.<channel>@<replica>/ | satu aliran: stream.json beserta datanya — records.jsonl, atau satu video.webm/.mp4, audio.webm/.mp4, atau data.bin |
streams/chat@<replica>/ | obrolan sebuah percakapan |
streams/sim@<replica>/, streams/sim-input@<replica>/ | bingkai sebuah simulasi dan masukan yang diterapkan padanya |
evidence/ | berkas yang disimpan sebagai bukti |
Sebuah rekaman adalah satu baris JSON:
{ "t": 7.180, "seq": 41, "hlc": "001790561647180-00000", "src": "operator", "kind": "note", "text": "agent:night-shift: run_program", "by": "agent:night-shift" }src adalah device, sim atau operator; kind adalah command, event, ack, reply, state, evidence atau note; seq naik dengan ketat. Keadaan yang tidak diketahui ditulis { "kind": "state", "status": "unknown" }.
Dokumen
Setiap dokumen editor adalah satu berkas JSON — { "format": "commandagi-document", "kind", "title", "meta", "body" } — dengan aset besar di folder <name>.assets/ di sampingnya.
| ekstensi | dibuka di |
|---|---|
.3d.tsx | desain 3D (komponen, rakitan, adegan) |
.cam.tsx, .slice.tsx | desain 3D dalam mode CAM dan pemotongan (slicing); program disimpan di sampingnya sebagai .gcode |
.nest.tsx | mode nesting pada aplikasi vektor (pekerjaan laser dan lembaran), dalam kode |
.draw.tsx, .paint.tsx, .img.tsx | menggambar, melukis dan mengedit gambar, dalam kode; piksel tetap berupa berkas gambar di sampingnya |
.vid.tsx | editor video, dalam kode; media tetap berupa berkas di sampingnya |
.mus.tsx | musik, dalam kode |
.geo.tsx | ruang kerja geoekonomi |
Format lain
| berkas | isinya |
|---|---|
<name>.sch.tsx + <name>.pcb.tsx | sebuah sirkuit dalam kode: skematiknya, dan papan yang menamainya |
<name>.sheet.tsx, <name>.page.tsx, <name>.deck.tsx | lembar kerja, halaman dan dek slide, ditulis sebagai kode: lembar, dokumen dan dek yang ditulis editor ke dalam berkas pada setiap perubahan |
<name>.sim.json | sebuah simulasi |
<name>.trials.json | sebuah eksperimen: banyak eksekusi simulasi pada sapuan parameter |
<name>.graph.json | sebuah graf (pengetahuan, memori) |
<name>.dashboard.tsx | sebuah dasbor dalam kode: panel dan berkas yang ditampilkannya |
<name>.geo.tsx | sebuah proyek geoekonomi dalam kode |
<name>.opgraph.tsx | sebuah graf simpul dalam kode |
<name>.task.tsx, <name>.project.tsx | sebuah tugas dan sebuah proyek, dalam kode |
<name>.market.jsonl | pita, buku, pesanan dan posisi sebuah pasar |
calendar/<calendar>/<event>.ics, contacts/<email>.vcf | kalender dan kontak |
.xlsx, .md, .pdf, .ipynb, .gcode, .step, .stl, .glb … | dibuka apa adanya, di editor untuk jenisnya |
Pengaturan
Pengaturan adalah berkas settings.json bergaya VS Code (komentar diperbolehkan), satu per tingkat, digabung dari yang luas ke yang spesifik: tingkat global cloud dan lokal, organisasi Anda, akun Anda, lalu komputer ini (~/.commandagi/settings.json) dan proyek ini (.commandagi/settings.json).
{
"workbench.theme": "dark",
"threads.agentControl": false,
"devices.lanListener": true,
"[.gcode]": { "editor.default": "gcode" }
}Blok "[.ext]" menimpa pengaturan untuk satu ekstensi berkas.