# SDK Mini App

Mini App adalah halaman web yang dibuka Cowork di tabnya sendiri. Di dalamnya, Cowork menambahkan satu objek global, `window.MAESTROSDK`, yang dipakai halaman untuk berkomunikasi dengan Cowork. Bab ini mencantumkan modul objek itu yang didukung Cowork dan setiap fungsi di dalamnya, dengan susunan seperti referensi method.

> **Status rilis**
> Fungsi yang ditandai <Badge type="warning" text="Belum dirilis" /> sudah ada di kode sumber Cowork tetapi belum ada di versi yang dirilis. Periksa bahwa fungsi itu ada sebelum Anda memanggilnya (lihat [Periksa apa yang tersedia](#periksa-apa-yang-tersedia)).

## Modul

| Modul | Fungsi | Kegunaannya |
|---|---|---|
| [Siklus Hidup](https://docs.micromeet.ai/id/miniapp-sdk/lifecycle.md) | `beforeRefresh(handler)` | Menjaga pekerjaan yang belum disimpan saat seseorang me-refresh tab |
| [Interaksi](https://docs.micromeet.ai/id/miniapp-sdk/interaction.md) | `confirm(request)` | Mengajukan pertanyaan ya / tidak kepada pengguna dalam dialog bawaan sistem |
| [Model](https://docs.micromeet.ai/id/miniapp-sdk/llm.md) | `llm.providers()` · `llm.complete(request)` | Memakai salah satu model AI yang sudah disiapkan di Cowork |
| [Paket](https://docs.micromeet.ai/id/miniapp-sdk/package.md) | `package.get()` | Membaca paket asal Mini App ini, dan ekstensi apa saja yang ada di dalamnya |
| [Masuk](https://docs.micromeet.ai/id/miniapp-sdk/auth.md) | `auth.login(params?)` · `auth.status()` | Memasukkan pengguna dengan akun Micromeet-nya (hanya paket bertanda tangan) |

Untuk membuat Mini App yang memasukkan pengguna dengan Micromeet, mulai dari [Membuat Mini App dengan Masuk](https://docs.micromeet.ai/id/miniapp-sdk/sign-in-guide.md). Untuk mengemas Mini App dan meminta Micromeet menandatanganinya, lihat [Pengemasan dan Tanda Tangan](https://docs.micromeet.ai/id/miniapp-sdk/build.md); semua aturan yang harus dipenuhi paket ada di [Spesifikasi Paket](https://docs.micromeet.ai/id/miniapp-sdk/package-spec.md).

Setiap fungsi di atas mengembalikan `Promise` kecuali `beforeRefresh`, dan tidak ada yang melempar error untuk kegagalan yang sudah diperkirakan: masing-masing mengembalikan `false`, `null`, daftar kosong, atau `{ ok: false, error }`, seperti yang disebutkan di bagiannya.

Objek ini juga punya modul `connectors` (`root`, `list`, `agentMdPath`, `readAgentMd`, `writeAgentMd`, `onAgentMdChange`). Cowork tidak mendukungnya: fungsinya mengembalikan hasil kosong, `{ ok: false, reason: 'unsupported' }`, atau melempar `unsupported`. Jangan memakainya di Mini App Cowork.

## Folder Mini App <Badge type="warning" text="Belum dirilis" />

Di 0.1.41 hanya ada Mini App yang disertakan bersama Cowork; Anda belum bisa memasang Mini App sendiri. Mulai versi berikutnya:

```text
miniapp/
  manifest.json    { appId, name, version, entry }
  index.html       the entry page
  app.js  app.css  anything else it loads, by relative path
```

Mulai Cowork 0.1.46 nama filenya `manifest.json`; versi sebelumnya membaca `miniapp.json`, jadi simpan juga salinan dengan nama itu selama masih ada yang memakai versi lama. Mini App juga bisa berupa paket bertanda tangan (`app.asar`): lihat [Pengemasan dan Tanda Tangan](https://docs.micromeet.ai/id/miniapp-sdk/build.md).

| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `appId` | `string` | Ya | ID berformat domain terbalik, huruf kecil, misalnya `ai.micromeet.janeapp-operator`; paling banyak 128 karakter. Tabnya adalah `miniapp:<appId>` |
| `name` | `string` atau `{ zh, en }` | Ya | Nama di tab dan menu; paling banyak 60 karakter |
| `version` | `string` | Ya | Paling banyak 32 karakter |
| `entry` | `string` | Tidak | Halaman entri, path relatif di dalam folder, paling banyak 256 karakter. Default `index.html` |
| `extension` | `string` | Tidak | Hanya untuk Mini App yang dipasang tersendiri: folder di dalamnya yang berisi satu-satunya ekstensinya. Mini App di dalam paket tidak mencantumkannya |

- Halaman dimuat dengan path relatif dan memakai routing hash (`#/page`).
- Setiap Mini App punya penyimpanannya sendiri (cookie, `localStorage`), terpisah dari tab web dan Mini App lain. Menghapus instalasinya akan membersihkannya.
- Pasang sebagai bagian dari sebuah paket, bersama ekstensi dan skill-nya: lihat [Ikhtisar Perluasan](https://docs.micromeet.ai/id/extend/overview.md).

## Periksa apa yang tersedia

```js
const sdk = window.MAESTROSDK;
if (sdk && sdk.package && typeof sdk.package.get === 'function') {
  const info = await sdk.package.get();
}
```

Di Cowork versi lama, modul yang belum ada memang tidak tersedia; tampilkan catatan singkat kepada pengguna alih-alih gagal.

## Terkait

- [SDK Extension](https://docs.micromeet.ai/id/extension-sdk/overview.md): Apa yang bisa dipanggil oleh ekstensi dari paket yang sama
- [Mini App](https://docs.micromeet.ai/id/extend/mini-apps.md): Mini App yang disertakan bersama Cowork
- [Ikhtisar Perluasan](https://docs.micromeet.ai/id/extend/overview.md): Jenis tambahan apa yang perlu dibuat
