Saltar al contenido principal

CLI y despliegue de configuración

La CLI crea, valida, despliega, promociona y revierte versiones inmutables de la configuración de ChattyBox. Los tokens de despliegue están limitados a un proyecto y a los entornos seleccionados, por lo que el mismo flujo sirve para el desarrollo local y CI.

Crear una configuración

bunx @openstaticfish/chattybox-cli init

Esto crea chattybox.config.json:

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

Utiliza una ruta personalizada si la configuración debe estar en un subdirectorio:

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

Validar localmente o en CI

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

La validación comprueba el esquema, el nombre obligatorio del asistente, los tipos de fuentes admitidos, las URL HTTP de las fuentes, los límites de páginas positivos y los colores del widget. Una validación correcta no despliega ni modifica el estado remoto.

Crear un token de despliegue

Abre la pestaña Settings del proyecto, busca Config deployment tokens y crea un token para los entornos que tu flujo de trabajo pueda modificar. Cópialo inmediatamente; ChattyBox solo almacena su hash y no puede volver a mostrarlo.

Establece el token y la URL de la API del widget desde la pestaña Embed del proyecto:

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

No hagas commit del token. Guárdalo en el almacén de secretos cifrados de tu proveedor de CI.

Después de verificar el flujo de despliegue, activa Config-as-code lock en la misma sección de ajustes. El bloqueo desactiva los cambios de configuración y del corpus desde el dashboard, de modo que solo los tokens de despliegue con el alcance correspondiente puedan modificar el runtime. La creación y revocación de tokens sigue disponible si es necesario rotar una credencial de CI.

Desplegar la configuración

El despliegue crea una versión inmutable y la promociona al entorno seleccionado:

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

Las promociones a development y preview se registran para su revisión. Las promociones a production aplican atómicamente el prompt del asistente, la respuesta alternativa, los ajustes del widget, la configuración regional y la fuente del sitio web al proyecto activo. La configuración de producción debe contener exactamente una fuente de sitio web. Un despliegue pone en cola un scraping vinculado a la versión para ejecutarlo después de que terminen los trabajos anteriores. Después, el despliegue sustituye el corpus anterior y regenera los embeddings. El runtime actual rechaza las configuraciones con varias fuentes.

Usa --json en las automatizaciones para recibir la versión, el entorno, el estado de la aplicación y el ID del trabajo de scraping como salida estructurada.

Estado, promoción y reversión

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

La reversión promociona y vuelve a aplicar una versión inmutable anterior; nunca reescribe el historial de despliegues. Restaura la configuración de inmediato, mientras que cualquier actualización de contenido necesaria continúa de forma asíncrona.

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

Usa un secreto de producción limitado al entorno y exige aprobación para el despliegue cuando tu repositorio lo admita. La CLI registra las variables habituales de CI relacionadas con el commit y la rama junto con la versión inmutable.

Secciones de configuración

SecciónFinalidad
schemaVersionSelecciona el contrato público de configuración. Actualmente se admite la versión 1.
assistantAsigna un nombre al asistente y, de forma opcional, define su perfil de instrucciones y su instrucción del sistema.
knowledge.sourcesDeclara fuentes de sitios web y patrones opcionales de inclusión o exclusión.
runtimeContiene valores predeterminados de ejecución, como la configuración regional.
widgetDescribe ajustes opcionales de presentación del widget alojado.

Función auxiliar de configuración tipada

Instala el paquete de configuración si vas a crear herramientas TypeScript independientes basadas en el esquema:

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

La propia CLI lee archivos JSON. defineConfig() está destinada a aplicaciones tipadas o herramientas de compilación; no permite que la CLI cargue directamente archivos TypeScript.

Para una integración funcional en producción hoy, utiliza el widget alojado o crea una interfaz personalizada con el SDK de JavaScript.