Přejít na hlavní obsah

CLI a nasazování konfigurace

Publikované CLI/config artefakty verze 0.3.1 implementují konfigurační/backendový kontrakt 0.3.0 a lokálně i na backendu odmítají neznámé klíče.

CLI vytváří, ověřuje, nasazuje, propaguje a vrací neměnné verze konfigurace ChattyBoxu. Nasazovací tokeny jsou omezené na jeden projekt a vybraná prostředí, takže stejný postup je vhodný pro místní vývoj i CI.

Stav vydání a runtime

Publikované jsou @openstaticfish/chattybox-cli@0.3.1, @openstaticfish/chattybox-config@0.3.1 a JavaScriptový SDK @openstaticfish/chattybox@0.1.4. Tyto artefakty podporují rozšířený kontrakt společně s backendem 0.3.0; schemaVersion: "1" není verze balíčku. status ukazuje verzi prostředí, kdežto runtimeConfigVersionId je poslední konfigurace použitá pro sdílený runtime a může se lišit. Vynechané mode zvolí crawl a zachová explicitní maxDepth: 0. CLI vyžaduje Node 20+ (nebo výslovné bunx --bun).

Vytvoření konfigurace

bunx @openstaticfish/chattybox-cli init

Tím se vytvoří soubor chattybox.config.json:

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

Pokud konfigurace patří do podadresáře, použijte vlastní cestu:

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

Místní ověření nebo ověření v CI

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

Validace čte jen JSON, nepouští síť, nekontroluje token či tarif a nenastavuje defaults. Lokální úspěch není záruka nasazení; lokální validátor i backend však neznámá pole odmítnou.

Vytvoření nasazovacího tokenu

Otevřete kartu projektu Settings, vyhledejte Config deployment tokens a vytvořte token pro prostředí, která může váš pracovní postup měnit. Ihned ho zkopírujte; ChattyBox ukládá pouze jeho hash a znovu ho nemůže zobrazit.

Nastavte token a URL API widgetu z karty projektu Embed:

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

Token nikdy necommitujte. Uložte ho do šifrovaného úložiště tajných údajů poskytovatele CI.

Po ověření můžete povolit Config-as-code lock. Je nevratný v aktuálním dashboardu, CLI i veřejném API; blokuje dashboardová nastavení, upload ikon i ruční scrape/mazání/rebuild. Tokeny a veřejné klíče zůstávají spravovatelné. Výjimkou je tarifem povolená volba brandingu v dashboardu.

Nasazení konfigurace

Nasazení vytvoří neměnnou verzi a propaguje ji do vybraného prostředí:

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

development jen zaznamená ukazatel (applied: false). Preview a production sdílejí stejný runtime, korpus i veřejné klíče; vyhraje poslední propagace. Pro skutečnou izolaci použijte samostatné projekty. Preview/production aplikují config a zařadí scrape, ale nečekají na indexaci, nemažou staré URL vynechané z nového zdroje a při chybě obnovy config nevracejí.

V automatizaci použijte --json, abyste jako strukturovaný výstup získali verzi, prostředí, stav aplikace a ID úlohy scrapingu.

Stav, propagace a návrat

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

--version přijímá neprůhledné version._id, ne číslo, SHA ani hash. Rollback používá stejnou propagaci, nemusí mířit na starší verzi a zařadí novou obnovu; neobnovuje historický korpus.

Úplná konfigurace a limity

Propagujte úplnou konfiguraci, ne patch: vynechaná config-owned pole se resetují, kromě widget.showBranding, které zachová stávající preferenci. maxPages ukládá požadavek bez oříznutí; běh používá efektivní kapacitu popsanou v pravidlech scrapingu. Daily auto-refresh a showBranding:false vyžadují Starter+. Rozsah preview/production tokenu runtime neizoluje.

CI/CD workflow

Přidejte CHATTYBOX_DEPLOY_TOKEN jako šifrovaný tajný údaj s rozsahem na produkci u svého poskytovatele CI. Přidejte CHATTYBOX_API_URL jako tajný údaj nebo proměnnou s URL API widgetu z karty Embed projektu. Spouštějte validaci v pull requestech, ale nasazení do produkce omezte na chráněnou výchozí větev nebo schválené nasazovací prostředí.

GitHub Actions

name: Deploy ChattyBox configuration

on:
pull_request:
push:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v6
with:
node-version: 24
- run: bunx @openstaticfish/chattybox-cli validate

deploy:
if: github.event_name == 'push'
needs: validate
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Validate and deploy
env:
CHATTYBOX_DEPLOY_TOKEN: ${{ secrets.CHATTYBOX_DEPLOY_TOKEN }}
CHATTYBOX_API_URL: ${{ vars.CHATTYBOX_API_URL }}
run: |
bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli deploy --environment production --json

Použijte produkční tajný údaj omezený na prostředí a vyžadujte schválení nasazení, pokud to váš repozitář podporuje. CLI zaznamenává běžné CI proměnné commitu a větve spolu s neměnnou verzí.

GitLab CI/CD

Obě hodnoty uložte v Settings → CI/CD → Variables. Token nasazení chraňte, zamaskujte a omezte jeho rozsah na prostředí production.

.gitlab-ci.yml
image: oven/bun:1

validate_chattybox:
stage: test
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script:
- bunx --bun @openstaticfish/chattybox-cli validate

deploy_chattybox:
stage: deploy
environment: production
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
script:
- bunx --bun @openstaticfish/chattybox-cli validate
- bunx --bun @openstaticfish/chattybox-cli deploy --environment production --json

GitLab automaticky zpřístupňuje CHATTYBOX_DEPLOY_TOKEN a CHATTYBOX_API_URL úloze pod jejich názvy proměnných. Použijte chráněnou výchozí větev, aby chráněné proměnné nebyly dostupné nedůvěryhodným větvím.

Bitbucket Pipelines

Přidejte obě hodnoty jako proměnné nasazení v Repository settings → Pipelines → Deployments → Production. Označte token nasazení jako zabezpečený.

bitbucket-pipelines.yml
image: oven/bun:1

pipelines:
pull-requests:
'**':
- step:
name: Validate ChattyBox configuration
script:
- bunx --bun @openstaticfish/chattybox-cli validate
branches:
main:
- step:
name: Deploy ChattyBox configuration
deployment: Production
script:
- bunx --bun @openstaticfish/chattybox-cli validate
- bunx --bun @openstaticfish/chattybox-cli deploy --environment production --json

Nahraďte main, pokud má vaše výchozí větev jiný název. Bitbucket vkládá proměnné nasazení pouze do kroků přidružených k danému nasazovacímu prostředí.

Části konfigurace

ČástÚčel
schemaVersionVybírá veřejný konfigurační kontrakt. V současnosti je podporována verze 1.
assistantPojmenovává asistenta a volitelně definuje jeho profil pokynů a systémový pokyn.
knowledge.sourcesDeklaruje zdroje webových stránek a volitelné vzory pro zahrnutí či vyloučení.
runtimeObsahuje výchozí hodnoty běhového prostředí, například locale.
widgetPopisuje volitelná nastavení vzhledu hostovaného widgetu.

Pomocná funkce pro typovanou konfiguraci

Při vytváření samostatných nástrojů TypeScript nad schématem nainstalujte konfigurační balíček:

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 },
});

Samotné CLI čte soubory JSON. defineConfig() je určené pro typované aplikační nebo sestavovací nástroje; neumožňuje CLI přímo načítat soubory TypeScript.

Pro funkční produkční integraci dnes použijte hostovaný widget nebo vytvořte vlastní rozhraní pomocí JavaScript SDK.

Používáme volitelné nástroje pro analytiku a správu tagů, abychom porozuměli používání webu. Zvolte, zda povolíte Ahrefs Web Analytics, PostHog a Google Tag Manager. Vypnutí analytiky tuto stránku znovu načte, aby se změna správně projevila. Základní funkce webu a monitorování chyb nejsou touto volbou ovlivněny. Přečtěte si naše zásady ochrany soukromí.