# Entri dan Pendaftaran

## activate(api)

Fungsi yang diekspor oleh file entri Anda. Cowork memanggilnya sekali setiap kali menjalankan proses Extension.

```js
export function activate(api) {
  api.registerService({ id: 'sync', start: 'auto', async run(ctx) { /* ... */ } });
  return () => { /* optional cleanup */ };
}
```

### Parameter

| Nama | Tipe | Deskripsi |
|---|---|---|
| `api` | `DozinAPI` | Fungsi-fungsi pendaftaran di bawah ini |

### Nilai kembalian

Tidak ada, atau fungsi pembersihan (boleh async), atau promise dari salah satunya. Fungsi pembersihan berjalan saat proses berhenti dan harus aman dipanggil lebih dari sekali.

### Batasan

- `activate` punya waktu 5 detik. Jalankan timer dan koneksi di `start` milik Connector atau `run` milik tugas, bukan di sini.
- Jika melempar error atau melewati batas waktu, Extension ditampilkan gagal di **Pengaturan › Ekstensi**.

## api.registerConnector(definition)

Mendaftarkan Connector: bagian yang mengirim dan menerima pesan antara kanal luar dan Gateway Cowork.

### Parameter

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `definition` | `ConnectorDefinition` | Ya | Lihat [Connector](https://docs.micromeet.ai/id/extension-sdk/connector.md) |

### Nilai kembalian

Tidak ada.

### Melempar

| Error | Kapan |
|---|---|
| `TypeError` | `start`, `stop`, atau `send` tidak ada; `id` bukan huruf kecil, angka, dan tanda hubung; `systemPrompt` lebih dari 4000 karakter; `chat` tidak valid |
| `CapabilityDeniedError` | Dipanggil setelah `activate` selesai; `dozin.connectors` mencantumkan ID dan `id` ini tidak termasuk di dalamnya; `id` yang sama dua kali; lebih dari 16 Connector jika `dozin.connectors` tidak diberikan |

Di 0.1.41, id harus tercantum di `dozin.connectors` (daftar kosong menolak semua Connector), dan `systemPrompt` serta `chat` belum ada.

### Contoh

```js
api.registerConnector({ id: 'demo', start(ctx) {}, stop() {}, async send() { return { ok: true }; } });
```

## api.registerService(definition) <Badge type="warning" text="Belum dirilis" />

Mendaftarkan tugas latar belakang. Tugas ini muncul di bawah Extension di **Pengaturan › Ekstensi**, tempat pengguna (atau AI dengan `local_service`) bisa menjalankan dan menghentikannya.

### Parameter

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `definition` | `ServiceDefinition` | Ya | Lihat [Tugas Latar Belakang](https://docs.micromeet.ai/id/extension-sdk/service.md) |

### Nilai kembalian

Tidak ada.

### Melempar

| Error | Kapan |
|---|---|
| `TypeError` | Tidak ada fungsi `run`, atau ada field definisi yang tidak valid (pesannya menyebutkan yang mana) |
| `CapabilityDeniedError` | Dipanggil setelah `activate` selesai; `service` tidak ada di `dozin.capabilities`; `id` yang sama dua kali; lebih dari 8 tugas |

### Contoh

```js
api.registerService({ id: 'sync', name: 'Sync', start: 'auto', async run(ctx) { /* ... */ } });
```

## api.log(text)

Menulis satu baris ke log Extension, yang dibuka pengguna dari **Pengaturan › Ekstensi**.

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `text` | `string` | Ya | Barisnya |

Tidak mengembalikan apa pun.

```js
api.log('activated');
```

## Terkait

- [Connector](https://docs.micromeet.ai/id/extension-sdk/connector.md): Definisi yang diberikan ke `registerConnector`
- [Tugas Latar Belakang](https://docs.micromeet.ai/id/extension-sdk/service.md): Definisi yang diberikan ke `registerService`
