Lewati ke konten utama

CLI dan deployment konfigurasi

CLI membuat, memvalidasi, melakukan deployment, mempromosikan, dan melakukan rollback versi konfigurasi ChattyBox yang immutable. Token deployment dibatasi untuk satu project dan environment yang dipilih, sehingga alur kerja yang sama cocok untuk pengembangan lokal dan CI.

Membuat konfigurasi

bunx @openstaticfish/chattybox-cli init

Perintah ini membuat chattybox.config.json:

{
"schemaVersion": "1",
"assistant": {
"name": "Support"
},
"knowledge": {
"sources": [
{
"type": "website",
"url": "https://example.com"
}
]
},
"widget": {
"enabled": true
}
}

Gunakan path khusus jika konfigurasi berada dalam subdirektori:

bunx @openstaticfish/chattybox-cli init config/chattybox.config.json

Memvalidasi secara lokal atau di CI

bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli validate config/chattybox.config.json

Validasi memeriksa skema, nama asisten yang wajib, tipe sumber yang didukung, URL sumber HTTP, batas halaman positif, dan warna widget. Validasi yang berhasil tidak melakukan deployment atau mengubah state jarak jauh.

Membuat token deployment

Buka tab Settings project, cari Config deployment tokens, lalu buat token untuk environment yang dapat diubah oleh alur kerja Anda. Segera salin token tersebut; ChattyBox hanya menyimpan hash-nya dan tidak dapat menampilkannya lagi.

Atur token dan URL API widget dari tab Embed project:

export CHATTYBOX_DEPLOY_TOKEN='cb_cfg_v1_...'
export CHATTYBOX_API_URL='https://your-deployment.convex.site/chat'

Jangan pernah commit token. Simpan token di secret store terenkripsi milik penyedia CI Anda.

Setelah memverifikasi alur deployment, aktifkan Config-as-code lock di bagian pengaturan yang sama. Lock ini menonaktifkan perubahan konfigurasi dan corpus dari dashboard, sehingga hanya token deployment dengan cakupan yang sesuai yang dapat mengubah runtime. Pembuatan dan pencabutan token tetap tersedia jika kredensial CI perlu dirotasi.

Deploy konfigurasi

Deployment membuat versi immutable dan mempromosikannya ke environment yang dipilih:

bunx @openstaticfish/chattybox-cli deploy --environment preview
bunx @openstaticfish/chattybox-cli deploy --environment production

Promosi development dan preview dicatat untuk ditinjau. Promosi production menerapkan secara atomik prompt asisten, respons fallback, pengaturan widget, locale, dan sumber situs web ke project live. Konfigurasi production harus berisi tepat satu sumber website. Deployment mengantrekan scraping yang terikat pada versi untuk dijalankan setelah job-job sebelumnya selesai. Setelah itu, deployment mengganti corpus lama dan membuat ulang embedding. Runtime saat ini menolak konfigurasi dengan banyak sumber.

Gunakan --json dalam otomatisasi untuk menerima versi, environment, status aplikasi, dan ID job scraping sebagai output terstruktur.

Status, promosi, dan rollback

bunx @openstaticfish/chattybox-cli status --environment production

bunx @openstaticfish/chattybox-cli promote \
--version '<config-version-id>' \
--environment production

bunx @openstaticfish/chattybox-cli rollback \
--version '<known-good-config-version-id>' \
--environment production

Rollback mempromosikan dan menerapkan ulang versi immutable yang lebih lama; tindakan ini tidak pernah menulis ulang riwayat deployment. Konfigurasi dipulihkan segera, sementara refresh konten yang diperlukan berlanjut secara asinkron.

GitHub Actions

- name: Deploy ChattyBox configuration
env:
CHATTYBOX_DEPLOY_TOKEN: ${{ secrets.CHATTYBOX_DEPLOY_TOKEN }}
CHATTYBOX_API_URL: ${{ vars.CHATTYBOX_API_URL }}
run: bunx @openstaticfish/chattybox-cli deploy --environment production --json

Gunakan secret production yang dicakup oleh environment dan wajibkan persetujuan deployment jika repositori Anda mendukungnya. CLI mencatat variabel commit dan branch CI umum bersama versi immutable.

Bagian konfigurasi

BagianTujuan
schemaVersionMemilih kontrak konfigurasi publik. Versi 1 saat ini didukung.
assistantMemberi nama asisten dan secara opsional menentukan profil prompt serta prompt sistemnya.
knowledge.sourcesMendeklarasikan sumber situs web serta pola penyertaan dan pengecualian opsional.
runtimeMenyimpan nilai default runtime seperti locale.
widgetMenjelaskan pengaturan presentasi opsional untuk widget yang dihosting.

Helper konfigurasi bertipe

Instal paket konfigurasi saat membangun tooling TypeScript terpisah di sekitar skema:

bun add -d @openstaticfish/chattybox-config
import { defineConfig } from '@openstaticfish/chattybox-config';

const config = defineConfig({
schemaVersion: '1',
assistant: { name: 'Support' },
knowledge: {
sources: [{ type: 'website', url: 'https://docs.example.com' }],
},
widget: { enabled: true },
});

CLI itu sendiri membaca file JSON. defineConfig() ditujukan untuk aplikasi bertipe atau tooling build; fungsi ini tidak membuat file TypeScript dapat langsung dimuat oleh CLI.

Untuk integrasi produksi yang berfungsi saat ini, gunakan widget yang dihosting atau bangun antarmuka khusus dengan SDK JavaScript.