# Extension

Extension adalah paket kode yang berjalan di prosesnya sendiri di latar belakang. Di 0.1.41, Extension mendaftarkan **Connector**: bagian yang mengirim dan menerima pesan antara kanal luar dan Gateway Cowork. Dengan izin browser, Extension juga bisa membaca dan bekerja di halaman situs web yang disebutkannya.

## Cara mengaktifkannya

1. Taruh paket di `<folder utama Cowork>/extensions/packages/<name>/`, atau pakai **Instal dari folder** di **Pengaturan › Ekstensi** untuk menyalin sebuah folder ke sana.
2. **Pengaturan › Ekstensi** menampilkannya sebagai menunggu persetujuan. Belum ada yang berjalan.
3. Anda menyetujui dan menyalakannya. Cowork menjalankan prosesnya dan memanggil fungsi `activate`.
4. Jika ada file di folder itu yang berubah, Extension menunggu persetujuan lagi.

## Isi paket

| File atau folder | Isinya |
|---|---|
| `package.json` | `name`, yang harus sama dengan nama folder (huruf kecil, angka, dan tanda hubung); `version`; `description`; `pi.extensions`, yang berisi tepat satu file entri; dan bagian Cowork, yang mendeklarasikan `connectors`, `capabilities`, `origins`, dan `platforms` |
| File entri, misalnya `index.mjs` | Mengekspor `activate(api)`, yang memanggil `api.registerConnector(...)` untuk setiap Connector yang dideklarasikan |
| `<folder utama Cowork>/extensions/logs/<name>.log` | Log yang ditulis Extension; file ini ditulis oleh Cowork |
| `<folder utama Cowork>/extensions/data/<name>/` | Folder data milik Extension; prosesnya berjalan di folder ini |

## Yang bisa dideklarasikan

| Item | Arti |
|---|---|
| `connectors` | ID Connector yang didaftarkannya. Mendaftarkan ID yang tidak tercantum akan ditolak |
| `capabilities` | `browser` untuk bekerja di halaman web; `audio` (perlu `browser`) untuk menangkap suara halaman; `platform-gate-v1` untuk memakai `platforms` |
| `origins` | Wajib jika ada `browser`: situs web persis yang boleh dipakai, 1 sampai 20, misalnya `https://example.com` |
| `platforms` | Komputer yang didukung: `darwin-arm64`, `darwin-x64`, `win32-x64` |

## Connector

Sebuah Connector punya `id` dan tiga fungsi. `start(ctx)` menjalankannya: buka koneksi dan timer di sini, bukan di `activate`; batasnya 5 detik. `stop()` harus aman dipanggil lebih dari sekali; batasnya 5 detik. `send(reply)` mengirim satu balasan ke kanal; batasnya 30 detik. Lewat `ctx`, Connector menyerahkan pesan masuk ke Cowork (`ctx.emit`), menulis log (`ctx.log`), dan, dengan izin browser, memakai `ctx.browser`.

## Batasan

- Hanya Anda yang bisa menyetujui Extension. AI tidak bisa.
- Persetujuan hanya berlaku untuk file yang Anda setujui. Mengubah satu byte berarti harus disetujui lagi.
- Satu paket paling banyak 200 file dan 5 MB. Paket dari npm dan `dependencies` tidak dipasang.
- Jika prosesnya berhenti karena error, Cowork menjalankannya lagi setelah jeda singkat.
- Di 0.1.41 Extension belum bisa menambahkan alat atau perintah untuk AI. Untuk memberi AI cara kerja baru, tulis [Skill](https://docs.micromeet.ai/id/extend/skills.md).

## Terkait

- [Ekstensi](https://docs.micromeet.ai/id/connections/extensions.md): Memasang, menyetujui, dan menyalakan Extension
- [Gateway: Pesan dari Luar](https://docs.micromeet.ai/id/connections/gateway.md): Ke mana pesan Connector pergi
- [Injection](https://docs.micromeet.ai/id/extend/injections.md): Skrip yang dijalankan Extension di halaman web
