Langsung ke isi

Berlaku untuk Cowork 0.1.45 · Untuk semua pengguna Cowork

Lihat Markdown

Tugas Latar Belakang ​

Belum dirilis

Tugas latar belakang adalah fungsi yang terus berjalan selama Extension menyala, misalnya sinkronisasi setiap 15 menit. Tugas ini memerlukan service di dozin.capabilities. Daftarkan dengan api.registerService(definition).

ServiceDefinition ​

FieldTipeWajibDeskripsi
idstringTidakDefault-nya nama paket. Huruf kecil, angka, dan tanda hubung. Paling banyak 8 per Extension
namestringTidakDitampilkan di Pengaturan › Ekstensi, 1–80 karakter; default-nya id
start'auto' | 'manual'TidakDefault manual. auto mulai bersama Extension setelah secrets-nya diisi. Pilihan pengguna yang berlaku
restart{ policy?, maxRetries?, backoffSeconds? }Tidakpolicy: never, on-failure (default) atau always; maxRetries 0–100 (default 5); backoffSeconds 1–10 jeda, masing-masing 1–3600 detik (default 5, 30, 120)
stopTimeoutSecondsnumberTidak1–30, default 10: berapa lama Hentikan menunggu run selesai
run(ctx)functionYaLihat di bawah

Field yang tidak valid membuat seluruh tugas ditolak (registerService melempar TypeError); tidak ada yang diperbaiki untuk Anda.

run(ctx) Belum dirilis ​

Tugas itu sendiri. Berjalan sampai ctx.signal terpicu.

NamaTipeDeskripsi
ctxServiceContextField dan fungsi di bawah ini

Mengembalikan Promise<void>. Selesai berarti run berakhir. Melempar error dihitung sebagai kegagalan dan dicoba ulang sesuai restart. Jika Hentikan ditekan dan run belum selesai dalam stopTimeoutSeconds, proses Extension dijalankan ulang.

Field ServiceContext ​

FieldTipeDeskripsi
serviceIdstringKey tugas: nama paket, atau <package>.<id>
runIdstringRun ini
signalAbortSignalTerpicu saat Hentikan, Mulai ulang, mematikan Extension, menghapus instalasinya, dan keluar dari Cowork. Periksa sebelum setiap permintaan
envReadonly<Record<string, string>>Nilai dari dozin.secrets. Tugas yang kekurangan nilai tidak akan mulai dan menampilkan "Konfigurasi belum lengkap"
dataDirstringFolder data milik Extension, sekaligus folder kerjanya

ctx.status(text, level?, progress?) Belum dirilis ​

Mengatur baris yang ditampilkan di bawah tugas di Pengaturan › Ekstensi.

NamaTipeWajibDeskripsi
textstringYaBarisnya; paling banyak 300 karakter yang disimpan
level'info' | 'warn' | 'error'TidakDefault info
progress{ done: number, total: number }TidakDitampilkan sebagai progres

Tidak mengembalikan apa pun. Nilai dari dozin.secrets diganti dengan ***. Jangan masukkan data pribadi: baris ini terlihat oleh siapa pun yang ada di depan komputer.

js
ctx.status('Synced 52 patients', 'info', { done: 52, total: 52 });

ctx.log(text) Belum dirilis ​

Menulis satu baris ke log Extension. Nilai dari dozin.secrets diganti dengan ***. Tidak mengembalikan apa pun.

js
ctx.log('round started');

ctx.readJson(rel) Belum dirilis ​

Membaca file JSON di dalam dataDir.

NamaTipeWajibDeskripsi
relstringYaPath relatif terhadap dataDir

Mengembalikan Promise<unknown>: nilai hasil parse, atau undefined jika file tidak ada. Reject dengan PATH_OUTSIDE_DATA untuk path kosong atau path di luar dataDir, dan dengan error parse jika file bukan JSON yang valid.

ctx.writeJson(rel, value) Belum dirilis ​

Menulis file JSON di dalam dataDir, menggantinya dalam satu langkah, sehingga crash tidak pernah meninggalkan file setengah jadi.

NamaTipeWajibDeskripsi
relstringYaPath relatif terhadap dataDir
valueunknownYaApa pun yang diterima JSON.stringify

Mengembalikan Promise<void>. Reject dengan PATH_OUTSIDE_DATA untuk path kosong atau path di luar dataDir.

Setelah sebuah run berakhir, panggilan ctx.site dan ctx.agent darinya di-reject dengan RUN_ENDED.

Contoh ​

js
export function activate(api) {
  api.registerService({
    id: 'sync', name: 'Sync', start: 'auto',
    async run(ctx) {
      while (!ctx.signal.aborted) {
        const state = (await ctx.readJson('state.json')) ?? { runs: 0 };
        state.runs += 1;
        await ctx.writeJson('state.json', state);
        ctx.status(`Run ${state.runs} done`);
        await new Promise((resolve) => setTimeout(resolve, 15 * 60 * 1000));
      }
    }
  });
}

Terkait ​

Untuk Micromeet Cowork 0.1.41 · build 261111110020