answer42 0.5.2__tar.gz → 0.5.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {answer42-0.5.2 → answer42-0.5.3}/PKG-INFO +1 -1
- {answer42-0.5.2 → answer42-0.5.3}/pyproject.toml +1 -1
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/server.py +89 -0
- {answer42-0.5.2 → answer42-0.5.3}/.gitignore +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/LICENSE +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/README.md +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/credentials.example.json +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/docs/agent-installation.md +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/docs/architecture.md +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/docs/assets/answer42-logo.png +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/docs/assets/platform42-logo.svg +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/docs/installation.md +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/build_cf.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/build_pages.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/e2e_http_smoke.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/e2e_stable.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/openclaw_mcp_autoreload.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/rag_cli.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/scripts/read_webclient_start_info.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/Configuration.xml +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Catalogs//320/237/320/241_/320/222/320/273/320/260/320/264/320/265/320/273/320/265/321/206.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Catalogs//320/237/320/241_/320/241/320/277/321/200/320/260/320/262/320/276/321/207/320/275/320/270/320/2721.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Configuration.xml +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Ext/ManagerModule.bsl" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Ext/ObjectModule.bsl" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Templates//320/236/321/201/320/275/320/276/320/262/320/275/320/260/321/217/320/241/321/205/320/265/320/274/320/260/320/232/320/276/320/274/320/277/320/276/320/275/320/276/320/262/320/272/320/270/320/224/320/260/320/275/320/275/321/213/321/205/Ext/Template.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Templates//320/236/321/201/320/275/320/276/320/262/320/275/320/260/321/217/320/241/321/205/320/265/320/274/320/260/320/232/320/276/320/274/320/277/320/276/320/275/320/276/320/262/320/272/320/270/320/224/320/260/320/275/320/275/321/213/321/205.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262.xml" +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/__init__.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/assets/__init__.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/auth.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/bridge.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/credentials.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/os_support.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/platform.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/protocol.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/__init__.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/detect.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/dump.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/model.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/parsers.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/service.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/store.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/summary_backend.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/rag/summary_vector.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/recorder.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/release_helper.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/runtime.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/skill_installer.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/webclient_probe.py +0 -0
- {answer42-0.5.2 → answer42-0.5.3}/src/mcp_1c/window_control.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: answer42
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
4
4
|
Summary: Answer42 — The Answer to Life, Universe, and 1C — UI Driver. MCP-powered 1C:Enterprise UI automation: click, fill, navigate, test, and introspect managed forms through the test-client API
|
|
5
5
|
Author: Marvin (AI Assistant), 42Clouds, and contributors
|
|
6
6
|
Author-email: "Kosolapov Stanislav (proDOOMman)" <prodoomman@gmail.com>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "answer42"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.3"
|
|
4
4
|
description = "Answer42 — The Answer to Life, Universe, and 1C — UI Driver. MCP-powered 1C:Enterprise UI automation: click, fill, navigate, test, and introspect managed forms through the test-client API"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
Binary file
|
|
Binary file
|
|
@@ -7027,6 +7027,95 @@ def universal_report_workflow() -> str:
|
|
|
7027
7027
|
"""
|
|
7028
7028
|
|
|
7029
7029
|
|
|
7030
|
+
@mcp.prompt(
|
|
7031
|
+
name="event_log_workflow",
|
|
7032
|
+
title="Журнал регистрации 1С",
|
|
7033
|
+
description="Встроенный workflow просмотра, фильтрации, проверки и безопасной выгрузки Журнала регистрации 1С.",
|
|
7034
|
+
)
|
|
7035
|
+
def event_log_workflow() -> str:
|
|
7036
|
+
"""Return reusable instructions for the standard 1C Event Log form."""
|
|
7037
|
+
return """# Журнал регистрации 1С через Answer42
|
|
7038
|
+
|
|
7039
|
+
Используй этот workflow для расследования событий в стандартной обработке
|
|
7040
|
+
«Журнал регистрации». Журнал может быть недоступен без роли просмотра или в
|
|
7041
|
+
конкретной конфигурации: сначала найди объект через `rag_lookup_object`/
|
|
7042
|
+
`rag_query`, затем открой найденную app-навигацию. В УНФ 3.0 проверена ссылка
|
|
7043
|
+
`e1cib/app/Обработка.ЖурналРегистрации`.
|
|
7044
|
+
|
|
7045
|
+
## Безопасность и доказательства
|
|
7046
|
+
|
|
7047
|
+
- Журнал содержит персональные данные, имена пользователей, IP/порты, данные
|
|
7048
|
+
событий и комментарии. Не выгружай широкий журнал и не пересылай сырые записи,
|
|
7049
|
+
пока пользователь не подтвердил временной интервал и получателя.
|
|
7050
|
+
- Сначала сузь период, затем добавляй только необходимые отборы. Не меняй
|
|
7051
|
+
параметры регистрации событий и не удаляй журнал: workflow предназначен для
|
|
7052
|
+
чтения и контролируемого экспорта.
|
|
7053
|
+
- Не угадывай имена или состав полей: после открытия вызови
|
|
7054
|
+
`ui_tree(profile="navigation")`; перед сложным отбором используй
|
|
7055
|
+
`ui_tree(profile="full", include_hidden=true)` и RAG для формы отбора.
|
|
7056
|
+
|
|
7057
|
+
## Основной экран
|
|
7058
|
+
|
|
7059
|
+
В проверенной УНФ-форме есть:
|
|
7060
|
+
|
|
7061
|
+
- `КоличествоПоказываемыхСобытий` («Показывать») — ограничение числа строк;
|
|
7062
|
+
- `Критичность` («Важность») — быстрый уровень важности;
|
|
7063
|
+
- `ПредставлениеОтбора` — текст действующего отбора;
|
|
7064
|
+
- таблица `Журнал`, команды `Интервал`, `Установить отбор`, `Отключить отбор`,
|
|
7065
|
+
`Вывести список...`, `Выгрузить в файл...`, а также поиск.
|
|
7066
|
+
|
|
7067
|
+
Сначала зафиксируй текущие значения этих полей и количество/видимые колонки
|
|
7068
|
+
таблицы. Команды просмотра события и отбора по текущей колонке требуют выбранной
|
|
7069
|
+
строки/колонки; не вызывай их, пока не проверишь доступность через `ui_tree`.
|
|
7070
|
+
|
|
7071
|
+
## Интервал и отбор
|
|
7072
|
+
|
|
7073
|
+
1. Нажми `Интервал` для малого, явно согласованного периода и подтверди его.
|
|
7074
|
+
Повторно прочитай `ПредставлениеОтбора` и строки `Журнал`.
|
|
7075
|
+
2. Для составного отбора нажми `Установить отбор`. В стандартной форме
|
|
7076
|
+
`ОтборЖурналаРегистрации` сначала прочитай live UI; ожидаемые группы и поля:
|
|
7077
|
+
- **даты:** `ДатаНачала`, `ДатаОкончания`, `ВыбратьПериод`;
|
|
7078
|
+
- **основные:** `Важность`, `События`, `Пользователи`, `Сеансы`;
|
|
7079
|
+
- **приложение/компьютер:** `Приложения`, `Компьютеры`;
|
|
7080
|
+
- **разделение:** `ОбластиДанных`, `РазделениеДанныхСеанса`;
|
|
7081
|
+
- **сведения:** `Метаданные`, `Комментарий`, `Данные`,
|
|
7082
|
+
`ПредставлениеДанных` и при необходимости `ДанныеСписок`;
|
|
7083
|
+
- **транзакция:** `СтатусТранзакции`, `Транзакция`;
|
|
7084
|
+
- **сервер:** `РабочиеСерверы`, `ОсновныеIPПорты`, `ВспомогательныеIPПорты`.
|
|
7085
|
+
3. Списочные поля и флажки нельзя надежно заполнять строкой наугад. Открой
|
|
7086
|
+
dropdown/стандартный выбор, прочитай доступные значения, выбери только явно
|
|
7087
|
+
заданные пользователем и затем снова проверь форму. Для «Важность» и
|
|
7088
|
+
«Статус транзакции» форма использует отдельные check/value-поля — проверь
|
|
7089
|
+
реальные доступные элементы перед изменением.
|
|
7090
|
+
4. Нажми `Применить`, дождись обновления и проверь итоговую строку отбора,
|
|
7091
|
+
число строк и несколько строк результата через `table_rows(name="Журнал")`.
|
|
7092
|
+
5. `Отключить отбор` снимает текущий отбор целиком. Используй его только по
|
|
7093
|
+
явной просьбе; для нового расследования лучше открывай форму отбора и меняй
|
|
7094
|
+
только нужные критерии.
|
|
7095
|
+
|
|
7096
|
+
## Анализ строк
|
|
7097
|
+
|
|
7098
|
+
- Для текстового поиска по уже загруженным строкам используй `dynamic_list_find`
|
|
7099
|
+
или кнопку «Расширенный поиск», но не подменяй им серверный отбор: поиск
|
|
7100
|
+
работает по представленным данным и не заменяет интервал/критерии журнала.
|
|
7101
|
+
- Перед «Открыть» или «Открыть данные для просмотра» выбери конкретную строку,
|
|
7102
|
+
затем прочитай открывшуюся форму через `ui_tree`. Данные события могут быть
|
|
7103
|
+
объёмными и чувствительными; извлекай только минимально нужный фрагмент.
|
|
7104
|
+
- Для воспроизводимого результата укажи: период, все критерии, лимит
|
|
7105
|
+
«Показывать», количество строк и идентификаторы/даты проверенных событий.
|
|
7106
|
+
|
|
7107
|
+
## Выгрузка
|
|
7108
|
+
|
|
7109
|
+
- `Вывести список...` применяй для табличного представления текущей выборки;
|
|
7110
|
+
проверяй результат структурными средствами `tabular_documents` и
|
|
7111
|
+
`tabular_document_text`, а большую выборку сохраняй через `tabular_document_save`.
|
|
7112
|
+
- `Выгрузить в файл...` предназначена для передачи в техподдержку. Это может
|
|
7113
|
+
включать чувствительные данные: сначала потребуй явное подтверждение объёма и
|
|
7114
|
+
получателя, затем подготовь узкий отбор. Проверь путь, формат и `saved=true`;
|
|
7115
|
+
при блокировке клиента используй `client_busy_status`/`wait_client_idle`.
|
|
7116
|
+
"""
|
|
7117
|
+
|
|
7118
|
+
|
|
7030
7119
|
def _query_from_navigation_link(value: str) -> str:
|
|
7031
7120
|
text = str(value or "").strip()
|
|
7032
7121
|
if text.startswith("e1cib/"):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|