Referencia / SDK
Página traducida automáticamente
Edita y revisa
Lee, edita, aprueba, rechaza y retraduce una clave, lee valores en bloque o por páginas, o revisa y retraduce muchas a la vez.
Operaciones de una sola clave
Estos son los puntos de integración que usa Verbatra Studio; úsalos para construir tu propia herramienta
de revisión. Las que reciben locale y key los resuelven de nuevo en cada llamada y lanzan UNKNOWN_ o
UNKNOWN_ cuando alguno no existe.
keyValue Disponible a partir de 0.5.0
Lee el valor de origen actual de una clave y, cuando existe, su valor de destino actual para un locale. Solo lectura.
function keyValue(
input: KeyValueInput,
deps?: KeyValueDeps,
): Promise<KeyValueResult>;Propiedad
Tipo
Devuelve: KeyValueResult
Lanza: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Ejemplo: Edita y retraduce una sola clave
Devuelve { source, target? }; target está ausente exactamente cuando la clave todavía no existe
en ese locale y, cuando está, llega con provenance, la KeyProvenance interpretada de la clave:
{ origin, provider?, model?, reviewState, reviewer? }.
El resultado también lleva description cuando el archivo de origen le da una a la clave: una
@key.description de ARB, una nota de XLIFF o un comentario de gettext, .strings de Apple o
.resx de .NET.
keyContext Disponible a partir de 0.12.0
Lee lo que necesita quien traduce para escribir una clave en un locale de destino: todo lo que devuelve keyValue, más los términos del glosario que se aplican al texto de origen y el maxLength de la clave. Pasa un draft para comprobarlo contra esos términos. Solo lectura. Para volver a leer del disco un glosario basado en archivo, recibe loaded de loadConfigWithMeta, no una configuración sin más.
function keyContext(
input: KeyContextInput,
deps?: KeyContextDeps,
): Promise<KeyContext>;Propiedad
Tipo
Devuelve: KeyContext
Lanza: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Un glosario ilegible no lanza: glossary queda vacío y glossaryNotice lleva el código y el mensaje redactado del error. draftCheck indica, por término aplicable, si el borrador usa la traducción exigida y qué variantes prohibidas usa.
localeHistory Disponible a partir de 0.12.0
Lista los commits de git recientes que cambiaron el archivo de origen o uno de destino, del más nuevo al más antiguo. Solo lectura; ejecuta git log mediante el execFile inyectable.
function localeHistory(
input: LocaleHistoryInput,
deps?: LocaleHistoryDeps,
): Promise<LocaleHistoryResult>;Propiedad
Tipo
Devuelve: LocaleHistoryResult
Lanza: LOCALE_, LOCALE_
Cada commit lleva hash, author (el nombre tras .mailmap, nunca el correo), authorDate, subject y touchedPaths. limit vale LOCALE_ (50) por defecto, como máximo LOCALE_ (200), redondeado hacia abajo y al menos 1. Los caracteres de control y de formato bidireccional se quitan de author y subject; un commit con metadatos ilegibles se omite. Sin git o sin repositorio, o si git log supera LOCALE_ o LOCALE_, el resultado es { available: false, reason }, un motivo de LOCALE_. Consulta Studio y MCP.
editEntry Disponible a partir de 0.5.0
Escribe una corrección tecleada por un humano para una clave y un locale. El valor candidato pasa por la misma puerta de integridad que una traducción del proveedor antes de que nada llegue al disco; al aceptarse, el archivo de locale y la entrada del bloqueo de esa clave se actualizan dentro del bloqueo de escritura del locale. Nunca llama a un proveedor.
function editEntry(
input: EditEntryInput,
deps?: EditEntryDeps,
): Promise<EditEntryResult>;Propiedad
Tipo
Devuelve: EditEntryResult
Lanza: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, KEY_, LOCK_, RUN_, TARGET_, LOCALE_, LOCK_, LOCK_, PROVENANCE_
Ejemplo: Edita y retraduce una sola clave
Devuelve { accepted: true, value }, o
{ accepted: false, reason: "placeholder" | "markup" | "icu" | "degenerate" | "empty", value } sin
escribir nada (la puerta de integridad).
Construye cualquier esquema sobre los motivos a partir de la tupla exportada INTEGRITY_.
"empty" rechaza un valor vacío para un origen con texto; vacía una clave con el centinela
[[CLEAR]] del libro. Un rechazo placeholder o markup lleva además details: cada marcador o
etiqueta causante, con - si la candidata lo perdió o + si lo inventó.
El valor queda registrado en verbatra.provenance.json con el origen human; pasa
actor: "agent" cuando lo escribió un agente de IA, para que el registro lo diga (lo afirma quien
llama, nada lo verifica). Un archivo de procedencia corrupto lanza PROVENANCE_ antes
de pasar el valor por la puerta y no se escribe nada; uno de un verbatra más nuevo, o uno que el
registro haría crecer por encima de lo que verbatra vuelve a leer, se deja intacto y el valor se
escribe sin registro.
Con actor: "agent", una clave que coincide con los pinnedKeys de la configuración lanza KEY_ antes de escribir nada. La edición de una clave fijada por parte de una persona se acepta.
lockAcquireTimeoutMs limita la espera del bloqueo de escritura del locale antes de que la llamada falle con LOCK_ (diez minutos por defecto), onLockWait informa de esa espera, y un límite no válido falla con LOCK_ antes de leer nada.
retranslateEntry Disponible a partir de 0.5.0
Vuelve a ejecutar el proveedor para exactamente una clave y un locale por la misma ruta de proveedor
y la misma puerta de integridad que translate, y al aceptarse escribe el archivo de locale y la
entrada del bloqueo solo para esa clave.
function retranslateEntry(
input: RetranslateEntryInput,
deps?: RetranslateEntryDeps,
): Promise<RetranslateEntryResult>;Propiedad
Tipo
Devuelve: RetranslateEntryResult
Lanza: MACHINE_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, KEY_, KEY_, PROVIDER_, NETWORK_, CONFIG_, LOCK_, RUN_, TARGET_, LOCALE_, LOCK_, PROVENANCE_, SENSITIVE_
Ejemplo: Edita y retraduce una sola clave
Devuelve { accepted: true, value, reviewReasons } (los códigos de motivo de revisión del nuevo
valor) o el rechazo que devuelve editEntry. A diferencia de translate, aquí un fallo del proveedor lanza: un ProviderError, exportado desde
@verbatra/sdk, con un code estable como RATE_ o AUTH_. Con provider: { id: "none" } lanza primero MACHINE_, antes de leer o bloquear nada.
El nuevo valor queda registrado en verbatra.provenance.json como machine, con el id del
proveedor que respondió y el modelo configurado. Un proveedor de tu propio createProvider queda
registrado con su propio id, y sin el modelo cuando ese id no coincide con el configurado. Un archivo de procedencia corrupto lanza PROVENANCE_ antes de
llamar al proveedor.
Una clave cuyo valor escribió, importó o cambió una persona fuera de verbatra lanza KEY_ dentro del bloqueo de escritura, antes de llamar al proveedor, salvo que pases includeHuman: true o la configuración fije humanEdits: "overwrite"; con un archivo de procedencia de un verbatra más nuevo, cualquier valor existente cuenta como protegido. Una clave que coincide con pinnedKeys lanza KEY_ antes de construir el proveedor, incluso con includeHuman.
approveEntry Disponible a partir de 0.12.0
Registra que una persona revisó el valor actual de una clave en un locale y lo acepta. Solo escribe
verbatra.provenance.json, nunca un archivo de locale ni el archivo de bloqueo, y no llama a ningún
proveedor. La aprobación también guarda el hash de origen de la clave en el archivo de bloqueo, así
que vuelve a contar como sin revisar en cuanto cambia el origen; cualquier escritura posterior que
cambie el valor empieza un registro nuevo, sin revisar.
function approveEntry(
input: ReviewDecisionInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewDecisionResult>;Propiedad
Tipo
Devuelve: ReviewDecisionResult
Lanza: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, LOCK_, RUN_, REVIEW_, LOCALE_, REVIEW_, LOCK_, PROVENANCE_, PROVENANCE_
Ejemplo: Recorre la cola de revisión
expectedValue es el texto que
vio quien revisa, o pasa expectedValueHash con el valueMarker que lo generó: la llamada lanza REVIEW_ cuando la clave no tiene valor o tiene
otro, y REVIEW_ cuando el origen cambió desde que se escribió el valor. reviewer es
texto libre opcional de 1 a 64 caracteres y sin caracteres de control (si no,
REVIEWER_), se guarda en el archivo con commit y verbatra nunca lo rellena. Devuelve
{ locale, key, provenance }. Un valor sin registro previo, o uno cambiado fuera de verbatra, se
registra con el origen unknown.
rejectEntry Disponible a partir de 0.12.0
Registra que una persona revisó el valor actual de una clave en un locale y lo rechaza, y lo quita
del archivo de locale y del archivo de bloqueo, así que check y diff la reportan como faltante y
el siguiente translate la vuelve a llenar (con provider: { id: "none" } sigue faltando hasta que
alguien escriba uno). El registro de procedencia se queda como rejected con un hash del texto
eliminado y la entrada de memoria correspondiente de esta máquina se borra; un translate posterior
omite cualquier acierto exacto o difuso de la memoria para la clave que coincida con ese hash, así
que ninguna memoria de ninguna máquina devuelve el texto. No llama a ningún proveedor.
function rejectEntry(
input: ReviewDecisionInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewDecisionResult>;Propiedad
Tipo
Devuelve: ReviewDecisionResult
Lanza: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, LOCK_, RUN_, REVIEW_, LOCALE_, TARGET_, REVIEW_, REVIEW_, LOCK_, PROVENANCE_, PROVENANCE_
Ejemplo: Recorre la cola de revisión
La entrada se comprueba como en
approveEntry, salvo que un origen desactualizado no impide un rechazo. Devuelve
{ locale, key, provenance }. Un formato que conserva una clave que no recibió, XLIFF, lanza
REVIEW_ después de restaurar el archivo.
Ambas llamadas toman el bloqueo de escritura del locale con lockAcquireTimeoutMs y onLockWait
como en editEntry; LOCK_ indica que el límite no es un número entero de
milisegundos de al menos 0. El tiempo de espera no limita el bloqueo del archivo de bloqueo que se
toma para registrar la decisión, que siempre admite los diez minutos por defecto.
Ninguna informa de una decisión que no pudo guardar: un archivo de procedencia de un verbatra más
nuevo, o uno que la decisión haría crecer por encima del tamaño que verbatra vuelve a leer, lanza
PROVENANCE_ antes de escribir nada.
createValueMarker Disponible a partir de 0.12.0
Crea la marca con la que una superficie muestra un valor sin su texto: mark(value) devuelve
[redacted length=<n> hash=<h>], y hash(value) devuelve h, un HMAC hexadecimal de 16 dígitos
con una sal aleatoria (o la salt indicada), así que un hash solo coincide con la misma marca.
Pásala como valueMarker a approveEntry o rejectEntry para aceptar expectedValueHash en lugar
de expectedValue. verbatra mcp --redact-values crea una en cada arranque del servidor.
function createValueMarker(salt?: Uint8Array): ValueMarker;Devuelve: ValueMarker
Lecturas de contenido en bloque Disponible a partir de 0.10.0
localeValues
Lee el texto de origen y de destino actual de cada clave en los locales de destino solicitados en
una sola pasada sobre los archivos en disco, por ejemplo para buscar valores en lugar de nombres de
clave: la contraparte en bloque de keyValue. Solo lectura.
function localeValues(
input: LocaleValuesInput,
deps?: LocaleValuesDeps,
): Promise<readonly LocaleValues[]>;Propiedad
Tipo
Devuelve: readonly LocaleValues[]
Lanza: UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Ejemplo: Lee todos los valores de golpe
Un locales omitido cubre cada locale de destino
configurado. Devuelve un { locale, keys, values } por locale: keys lista cada clave en el orden
de origen, luego las que solo están en el destino, y values asigna cada clave a
{ source?, target? }. Sin target, todavía no está traducida ahí; sin source, está huérfana (ya
no está en el origen). values no tiene prototipo: cada clave, incluso _ o
constructor, es una propiedad propia, y una clave ausente se lee como undefined.
Cada par con un target lleva además provenance, la misma KeyProvenance que informa keyValue.
localeValuesPage Disponible a partir de 0.12.0
Lee una página de localeValues, acotada si quieres a keys exactas o a una query que se compara con la clave, el texto de origen y el de destino sin distinguir mayúsculas, y devuelve un cursor para la página siguiente. El servidor MCP y la herramienta de agente verbatra_ de Studio paginan con ella. Solo lectura.
function localeValuesPage(
input: LocaleValuesPageInput,
deps?: LocaleValuesDeps,
): Promise<LocaleValuesPage>;Propiedad
Tipo
Devuelve: LocaleValuesPage
Lanza: UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, PAGE_, PAGE_
Devuelve { locales, nextCursor? }: cada locale con una entrada en la página lleva entries, cada una { key, source?, target?, provenance? } como la informa localeValues, ordenadas por locale y luego por clave. Una página tiene como mucho limit entradas: PAGE_ (200) por defecto, PAGE_ (1000) como máximo. Pasa nextCursor como cursor, con los mismos filtros, hasta que falte. Cada llamada vuelve a leer los archivos, así que un cursor cuya clave se movió o ya no existe se rechaza en vez de saltar o repetir entradas.
Un cursor tiene como mucho PAGE_ (512) caracteres. El servidor MCP y Studio aceptan una query de como mucho LOCALE_ (500) caracteres.
Revisión y retraducción por lotes Disponible a partir de 0.12.0
Cada una de estas llamadas ejecuta la llamada de una sola clave correspondiente una vez por
entrada, en orden, y devuelve { results } con un resultado por entrada. Una entrada fallida no
detiene el lote: su resultado es { locale, key, ok: false, code, message }, con el código del
SdkError, del error de adaptador o del ProviderError y un mensaje censurado. Cualquier otro
error detiene el lote con un BatchInterruptedError. Una lista entries vacía devuelve results
vacío.
approveEntries
Ejecuta approveEntry por entrada con las mismas comprobaciones; reviewer se aplica a todas las
entradas. Un resultado correcto es { ok: true, locale, key, provenance }. lockAcquireTimeoutMs
limita la espera de cada entrada por el bloqueo de escritura de su locale, y onLockWait informa
de esa espera. Una entrada cuyo bloqueo sigue ocupado pasado el tiempo límite falla con
LOCK_, y cada entrada posterior que necesita el mismo bloqueo recibe
{ locale, key, ok: false, skipped: true, code: "LOCK_ en lugar de volver a
esperar; las entradas de otros locales se siguen decidiendo.
function approveEntries(
input: ReviewEntriesInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewEntriesResult>;Propiedad
Tipo
Devuelve: ReviewEntriesResult
Lanza: LOCK_
rejectEntries
Ejecuta rejectEntry por entrada y elimina cada valor
rechazado. Un resultado correcto es { ok: true, locale, key, provenance }. Un tiempo límite de
bloqueo omite las entradas posteriores que necesitan ese bloqueo, como en approveEntries.
function rejectEntries(
input: ReviewEntriesInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewEntriesResult>;Propiedad
Tipo
Devuelve: ReviewEntriesResult
Lanza: LOCK_
approveLocale Disponible a partir de 0.12.0
Aprueba toda la cola de revisión de un locale, o solo sus valores con uno de los origins, en una
sola escritura de verbatra.provenance.json con el bloqueo de escritura del locale, cada aprobación
registrada igual que la registra approveEntry. No recibe ningún valor esperado y aprueba lo que la
cola contiene cuando se ejecuta, así que enséñale antes la cola a quien revisa. Devuelve
{ locale, approved, sourceChanged }: las claves aprobadas y las claves de la cola que quedan sin
revisar porque su origen cambió desde que se escribieron. No llama a ningún proveedor y falla con
PROVENANCE_ en lugar de informar de aprobaciones que no pudo guardar.
function approveLocale(
input: ApproveLocaleInput,
deps?: ApproveLocaleDeps,
): Promise<ApproveLocaleResult>;Propiedad
Tipo
Devuelve: ApproveLocaleResult
Lanza: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, LOCK_, RUN_, LOCALE_, LOCK_, PROVENANCE_, PROVENANCE_
retranslateEntries
Ejecuta retranslateEntry por entrada, así que hace hasta una llamada al proveedor por entrada. No
es una ejecución de translate: maxTokens y budgetBehavior no se aplican, y el número de
entradas es el único límite de lo que gasta. Un resultado completado es
{ ok: true, locale, key, result }, donde result es lo que devolvió retranslateEntry, incluido
un valor que la puerta de integridad rechazó. Un valor que escribió una persona falla con
KEY_ salvo que pases includeHuman: true. Las opciones de bloqueo funcionan como en
approveEntries, y la espera termina antes de llamar al proveedor.
function retranslateEntries(
input: RetranslateEntriesInput,
deps?: RetranslateEntryDeps,
): Promise<RetranslateEntriesResult>;Propiedad
Tipo
Devuelve: RetranslateEntriesResult
Lanza: LOCK_
Un error que haría fallar igual a todas las entradas detiene las llamadas al proveedor:
MISSING_, AUTH_, RATE_ (que incluye una cuota agotada),
NETWORK_, PROVIDER_, CONFIG_ o
MACHINE_. La entrada que lo provocó falla como siempre, y cada entrada
posterior recibe { locale, key, ok: false, skipped: true, code, message } con ese código, sin
otra llamada al proveedor.
Un tiempo límite de bloqueo omite con LOCK_ las entradas posteriores que necesitan ese
bloqueo, como en approveEntries; en un formato que guarda todos los locales en un solo archivo,
son todas las entradas posteriores.
BatchInterruptedError Disponible a partir de 0.12.0
Lo lanzan approveEntries, rejectEntries y retranslateEntries cuando un error que no es el
resultado de una sola entrada, como un fallo inesperado del sistema de archivos, detiene un lote a
medias. results contiene los resultados de las entradas completadas antes, en orden, cuyas
escrituras siguen en disco; entry nombra el { locale, key } que se estaba ejecutando y cause
es el error original. Las entradas
posteriores a entry no se ejecutaron.
class BatchInterruptedError<R = ReviewBatchOutcome | RetranslateBatchOutcome> extends ErrorPropiedad
Tipo