Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

v8unpack-agent

Прикладной инструмент над upstream-распаковщиком v8unpack: превращает выгрузку конфигурации 1С в читаемый текстовый слой, машиночитаемую опись форм и компактный контекст для LLM.

Задача пакета — дать агенту достоверные сведения о формах и модулях без угадывания. Где данные нечитаемы, результат помечается как неполный, а не достраивается догадками.

Границы и non-goals

  • Пакет не распаковывает контейнер сам: дерево выгрузки готовит upstream v8unpack, а агент работает с уже раскрытым каталогом.
  • Production-адаптера одиночного Form.bin в пакете нет: реализацию распаковщика передаёт вызывающая сторона.
  • Функций index_cf() и rag.rebuild() не существует; векторная индексация находится вне scope пакета.
  • Пакет не подключается к живой информационной базе и не читает её данные.

Кто что решает

Компонент Ответственность
upstream v8unpack распаковка контейнеров в дерево файлов
v8unpack-agent опись форм, текстовый слой, индексы, контекст, отчёт о запуске
вызывающая сторона реализация распаковщика формы и решения по degraded-результату

Установка

Пакет готовится к первой публикации в PyPI. До завершения релиза используйте установку из Git:

pip install "v8unpack>=1.2.13"
pip install git+https://github.com/MRDK80/v8unpack-agent.git

После фактической публикации и post-publish проверки основной командой станет:

pip install v8unpack-agent

Установка для разработки из клона:

pip install -e ".[test]"

upstream v8unpack нужен для фактического извлечения текстов, включая поддержку внешних отчётов .erf.

Быстрый старт: CLI

Один прогон — один отчёт и один код возврата. На вход подаётся каталог уже распакованной выгрузки.

v8unpack-agent-run <корень_выгрузки> --report-path post-run.json

Аргумент --report-path обязателен, значения по умолчанию нет, а каталог-родитель должен существовать заранее.

Код Значение
0 все объекты обработаны полностью
2 ошибка аргументов или корень не является каталогом
3 degraded: есть частичные или отказавшие объекты
4 управляемая фатальная ошибка пайплайна
5 ошибка записи отчёта
6 фатальная ошибка и ошибка записи одновременно

Degraded — неуспешное завершение: неполный контекст не должен выглядеть успехом для автоматизации. Полное описание аргументов, стадий и кодов причин — в docs/runner.md, схема отчёта — в docs/run_report.md.

Быстрый старт: Python

Каноническая цепочка: обнаружение источников, распаковка по FormBinSource, обновление индекса.

from pathlib import Path

from v8unpack_agent import unpack_all_forms, update_forms_index
from v8unpack_agent.form_artifact import FormArtifact
from v8unpack_agent.form_identity import FormBinSource
from v8unpack_agent.scan_forms import scan_forms

dump_root = Path("unpacked_cf")
unpacked_root = Path("text_layer")


def unpack_one(source: FormBinSource, root: Path) -> FormArtifact:
    """Здесь вызывается реальное извлечение текстов из source.bin_path."""
    return FormArtifact.for_form(root, source.name)


scan_index = scan_forms(dump_root)
print(f"Найдено форм: {scan_index.total}")

artifacts = unpack_all_forms(dump_root, unpacked_root, unpack_one)
index = update_forms_index(dump_root, unpacked_root, artifacts)
index.save(Path("forms_index.json"))

Распаковщик получает FormBinSource и корень текстового слоя — ровно два аргумента. Существующая трёхаргументная реализация подключается только через adapt_legacy_unpacker(). Подробный разбор и отбор по form_ids — в docs/pipeline.md, готовые сценарии — в examples/README.md.

Пайплайн

Шаг Функция Результат
опись форм scan_forms() FormScanIndex с layout-метаданными и индексом ссылочных типов
обнаружение источников discover_form_sources() FormBinSource с каноническим form_id
распаковка unpack_all_forms() FormArtifact на каждую форму
структура формы parse_elem_json() элементы и привязки data_path, best-effort
реквизиты объекта decode_object_attributes() Properties и TabularSections
классификация classify_form() object, service или unknown
внешние отчёты unpack_erf() текстовый слой и запросы СКД
индекс актуальности update_forms_index() FormsIndex с ключом form_id
контроль дрейфа check_drift() DriftReport по хешам
контекст для LLM build_form_context() FormContext и промпт-фрагмент

Ключевые возможности

  • Одноимённые формы разных владельцев не затирают друг друга: идентичность — form_id, а не имя.
  • Формы без кода попадают в опись: elem-only ветка заполняет elem_json_path.
  • Частичный результат всегда явный: extraction_ok=False невозможен без непустого extraction_warnings.
  • Ссылочные типы реквизитов приводятся к имени объекта метаданных; неизвестный UUID остаётся Ref#<uuid> и не угадывается.
  • Сервисные формы отделены от объектных, чтобы метрика покрытия не занижалась архитектурным паттерном платформы.
  • Дрейф детектируется по хешам модуля и структуры, а не только по времени изменения файла.
  • Сериализация индексов переносима: в файлы пишутся только относительные POSIX-пути, одинаковые на POSIX и NT.

Версии схем

Три независимые версии, которые не сравниваются друг с другом.

Артефакт Версия Где описан
FormsIndex 2 docs/pipeline.md
FormScanIndex 2 при чтении legacy 1 docs/scan_forms.md
post-run report 1 docs/run_report.md

Публичная поверхность

Модуль Основные имена Канонический документ
scan_forms scan_forms, FormEntry, FormScanIndex, scan_warning_code scan_forms
pipeline unpack_all_forms, unpack_erf, update_forms_index, FormUnpacker pipeline
form_identity FormBinSource, discover_form_sources, select_sources, adapt_legacy_unpacker pipeline
form_artifact FormArtifact pipeline
forms_index FormsIndex, FormsIndexEntry, is_form_stale pipeline
runner, cli RunOptions, RunOutcome, run_pipeline runner
run_report PostRunReport, ObjectRunResult, write_post_run_report run_report
elem_parser parse_elem_json, ElemIndexResult, UnindexedReason elem_parser
form_classifier classify_form, FormClass, classify_empty_tree_form form_classifier
coverage_metric calc_data_path_coverage, CoverageReport form_classifier
object_decoder decode_object_attributes, DecodeResult, DecodeError object_decoder
catalog_resolver resolve_data_path, ResolvedBinding catalog_resolver
form_context FormContext, build_form_context, to_llm_prompt_fragment form_context
form_summary build_form_summary, to_normalized_json form_summary
form_router FormRouter, form_paths form_router
common_modules scan_common_modules, build_common_module_context common_modules
managed_forms discover_elem_forms, ElemFormEntry managed_forms_structure
skd_extractor extract_skd_queries, extract_all_skd_queries skd_extractor
drift_checker check_drift, DriftReport drift_checker

Документация

Начало работы

Пайплайн и запуск

Формы и разбор

Метаданные и индексы

Исследования

Датированные протоколы с агрегатами; выводы не переписываются задним числом.

Примеры и политики

Известные ограничения

  • Обычные (неуправляемые) формы хранят разметку в бинарном виде и частично не читаются; такие формы получают unknown и исключаются из знаменателя метрики.
  • Квалификаторы реквизитов и составные типы не декодируются.
  • Индекс ссылочных типов строится только для видов метаданных с доказанной ссылочной формой; остальные UUID остаются Ref#<uuid>.
  • В режиме mode="external" индекс ссылочных типов не собирается.
  • Распаковщики из examples/ и тестов — заглушки и не читают бинарный формат.
  • Пакет ещё не опубликован в индексе пакетов (issue #149).

Тесты

pytest

Фикстуры синтетические: реальная выгрузка для прогона не требуется. Порядок работы с ветками, проверки перед PR и требования к обезличенности описаны в CONTRIBUTING.md.

Связанное

Лицензия

MIT — см. LICENSE.

Release files for v8unpack-agent 0.1.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for v8unpack-agent 0.1.0rc1
File Size Uploaded
v8unpack_agent-0.1.0rc1.tar.gz 266.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for v8unpack-agent 0.1.0rc1
File Interpreter ABI Platform
v8unpack_agent-0.1.0rc1-py3-none-any.whl Python 3 none any Details

Total release size:396.0 kB

Release files / v8unpack_agent-0.1.0rc1.tar.gz

Download URL v8unpack_agent-0.1.0rc1.tar.gz
Size 266.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a55eced457d7f838cebdecd65ba9bf43ee2d2d901e31c74a5e359d800deab63c
BLAKE2b-256 checksum
How to use checksums
f27d6e20dde6f3f4b5c20eafc736f642d6a2716ee56213d45fc5aa42cd931fac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / v8unpack_agent-0.1.0rc1-py3-none-any.whl

Download URL v8unpack_agent-0.1.0rc1-py3-none-any.whl
Size 129.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
60e57612837fe1827bd6907141ad1c8d884cede8352810f6c6a79d3ebed0c7a0
BLAKE2b-256 checksum
How to use checksums
51de71c23d3c2396412d074471109c91d208010bdf774e95e066ca3eb402a3ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.0

2 release files

This release

0.1.0rc1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page