Проверка среды выполнения Tcl и выполнение ограниченного скрипта

Прочитайте дескрипторы среды выполнения Tcl и подписанную запись о готовности, затем выполните один ограниченный скрипт из stdin и проверьте его квитанцию.

Используйте Altifigence CLI 0.1.9 в Linux, чтобы прочитать дескрипторы установленной среды выполнения Tcl, подтвердить подписанную запись о готовности среды выполнения и выполнить один ограниченный скрипт Tcl с помощью установленного исполнителя.

Чтение дескрипторов среды выполнения

Выполняйте команды от имени обычного пользователя. Каждый запрос отвечает по входящим в пакет дескрипторам alti-tcl и выводит JSON.

alti tcl capabilities
alti tcl environment
alti tcl commands

alti tcl commands перечисляет зарегистрированные команды продукта и доступность каждой команды. Храните его вывод вместе со своими скриптами.

Проверка подписанной среды выполнения

Прочитайте подписанную запись о готовности среды выполнения. Этот запрос не запускает Tcl.

set -euo pipefail
WORK="$(mktemp -d)"
alti tcl readiness > "$WORK/readiness.json"
jq '{schemaVersion, installedQualified, cryptographicVerifierLinked, blocker}' \
  "$WORK/readiness.json"

Прежде чем выполнять скрипт, убедитесь, что код завершения равен 0 и получены следующие значения:

{
  "schemaVersion": "altifigence.eda-tcl-runtime-component-readiness.v1",
  "installedQualified": true,
  "cryptographicVerifierLinked": true,
  "blocker": null
}

Выполнение скрипта

Передайте скрипт через stdin и сохраните квитанцию:

printf '%s' 'expr {6 * 7}' | alti --json tcl evaluate > "$WORK/tcl-evaluate.json"
jq '{schema, status, inputBytes, result, resultBytes, resultArtifactId, failure}' \
  "$WORK/tcl-evaluate.json"

Убедитесь, что код завершения равен 0. Выбранные поля квитанции имеют следующие значения:

{
  "schema": "altifigence.cli.tcl-evaluation.v1",
  "status": "succeeded",
  "inputBytes": 12,
  "result": "42",
  "resultBytes": 2,
  "resultArtifactId": "tcl-evaluation",
  "failure": null
}

Квитанция также содержит inputSha256, jobSha256, resultArtifactSha256 и provenance. В provenance значение resolved_placement равно local, resolved_device_class равно cpu, а backend_id равно embedded-tcl.

Без --json команда записывает результат в stdout, а строку сводки — в stderr:

printf '%s' 'expr {6 * 7}' | alti tcl evaluate
42
[succeeded] tcl.evaluate input=12 sha256=e96de7a3a920d7cd5aafa8c86630028d97a0fb0dc260da2f089de12ea4214a6f artifact=tcl-evaluation

Каждый запуск читает один скрипт размером до 4194304 байт. CLI записывает его в закрытую рабочую область в /tmp, запускает как локальную задачу CPU с 1 слотом CPU, 536870912 байт памяти и ограничением по реальному времени в 5000 мс, считывает результат у исполнителя и удаляет рабочую область.

Действия при неудачном выполнении

С --json прочитайте failure.code и failure.message в квитанции. Без него stderr показывает Tcl evaluation failed: с последующим кодом.

TCL_INPUT_EMPTY с Tcl input must not be empty. завершается с кодом 2. Передайте непустой скрипт и снова запустите команду.

TCL_INPUT_TOO_LARGE с Tcl input exceeds the 4194304-byte limit. завершается с кодом 2. Размер скрипта не должен превышать 4194304 байт.

status failed с failure.code eda-tcl.local-runner.unsupported-command и сообщением local Tcl evaluation failed within the requested boundary завершается с кодом 1. Для команд продукта выберите запись со значением availability available из alti tcl commands, например ::alti::echo или ::alti::capabilities.

TCL_INSTALLED_RUNNER_UNAVAILABLE с The installed qualified Tcl runner is unavailable. завершается с кодом 127. Запустите alti, который установил начальный установщик 0.1.9, затем снова проверьте alti tcl readiness.

Команды движков CLI