answer42 0.3.0__tar.gz → 0.3.1__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.3.0 → answer42-0.3.1}/PKG-INFO +1 -1
- {answer42-0.3.0 → answer42-0.3.1}/pyproject.toml +1 -1
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/assets/skills/answer42/SKILL.md +5 -3
- {answer42-0.3.0 → answer42-0.3.1}/.gitignore +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/LICENSE +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/README.md +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/credentials.example.json +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/docs/agent-installation.md +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/docs/architecture.md +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/docs/assets/answer42-logo.png +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/docs/assets/platform42-logo.svg +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/docs/installation.md +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/scripts/build_cf.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/scripts/build_pages.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/scripts/e2e_stable.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/scripts/openclaw_mcp_autoreload.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/scripts/rag_cli.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/Configuration.xml +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl" +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/src/client_cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/client_cf/Configuration.xml +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/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.3.0 → answer42-0.3.1}/src/mcp_1c/__init__.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/assets/__init__.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/assets/skills/answer42-rag/SKILL.md +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/bridge.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/credentials.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/os_support.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/platform.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/protocol.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/__init__.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/detect.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/dump.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/model.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/parsers.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/service.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/rag/store.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/recorder.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/release_helper.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/runtime.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/server.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/skill_installer.py +0 -0
- {answer42-0.3.0 → answer42-0.3.1}/src/mcp_1c/window_control.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: answer42
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
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.3.
|
|
3
|
+
version = "0.3.1"
|
|
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"
|
|
@@ -49,7 +49,7 @@ description: "Работа с MCP Answer42 для 1С UI automation"
|
|
|
49
49
|
- Linux: X11/Xvfb использовать только для скриншотов и окна 1С, не для ввода/кликов/автоматизации.
|
|
50
50
|
- Windows: Answer42 должен запускаться в интерактивной desktop-сессии пользователя; Windows service/headless/заблокированный RDP-сеанс для UI automation и screenshot ненадёжен.
|
|
51
51
|
- Для ссылочных полей предпочитай стандартную форму выбора 1С (`choose_field_from_list`, `choose_field_first_row`, `choose_current_row`), а не ввод строки.
|
|
52
|
-
- `
|
|
52
|
+
- `open_navigation_link` — только для явных навигационных ссылок `e1cib/...`. Не передавай туда псевдокоманды/команды формы вроде `ФормаНайти`, `СледующаяСтрока`, `СписокВывестиСписок`; для них нужны отдельные first-class MCP tools. Если навигационная ссылка некорректна, tool сам попробует подсказать похожие объекты через `rag_lookup_object`, `rag_query` и `metadata_objects_from_catalog`.
|
|
53
53
|
- После каждого действия проверяй диагностику результата: `client_diagnostics.user_messages`, `error_info`, `modal_title`, `modal_buttons`, `modal_text`, `modal_texts`, `modal_is_error_window`.
|
|
54
54
|
- Не закрывай автоматически сложные диалоги с несколькими кнопками (`OK`, `Restart`, `Finish`, `Yes/No/Cancel`). Допустимо автозакрытие только простых предупреждений/ошибок с одной кнопкой закрытия.
|
|
55
55
|
- Для динамических списков предпочитай `table_move_row`, `table_current_row`, `table_selected_rows`, `table_cell_text`; `table_rows` использует навигационный fallback, но на больших списках может быть дорогим.
|
|
@@ -99,10 +99,12 @@ start_session(
|
|
|
99
99
|
|
|
100
100
|
## Навигация
|
|
101
101
|
|
|
102
|
-
- Открывай формы/списки через `
|
|
102
|
+
- Открывай формы/списки через `open_navigation_link` с `e1cib/list/...` или `e1cib/app/...`, когда доступно.
|
|
103
103
|
- Для поиска объектов используй `find_object`, `activate_object`, `ui_tree`. `ui_tree` по умолчанию показывает только видимые/активные для пользователя элементы и всегда добавляет `visible/available/enabled/read_only`; для полной диагностики скрытых страниц/элементов передавай `include_hidden=true`.
|
|
104
|
-
- Для команд формы используй специализированные MCP tools (`table_move_row`, `dynamic_list_*`, `click_button`, `activate_object` и т.п.). Для навигационных команд предпочитай `command_interface_search/commands`, для команд конкретного объекта — `object_command_panel/object_context_menu`; `command_bar` — низкоуровневая диагностика. Не прокидывай имена команд в `
|
|
104
|
+
- Для команд формы используй специализированные MCP tools (`table_move_row`, `dynamic_list_*`, `click_button`, `activate_object` и т.п.). Для навигационных команд предпочитай `command_interface_search/commands`, для команд конкретного объекта — `object_command_panel/object_context_menu`; `command_bar` — низкоуровневая диагностика. Не прокидывай имена команд в `open_navigation_link`.
|
|
105
105
|
- `dynamic_list_output`, `dynamic_list_open_settings`, `dynamic_list_clear_settings`, `form_open_settings` нажимают кнопки формы через test-client API (`НайтиКнопку` + `Нажать()`), а не выполняют имена команд через `ВыполнитьКоманду()`. Если авто-кандидат не подходит, передавай `button` — техническое имя или заголовок кнопки.
|
|
106
|
+
- Для поиска правильных имён метаданных используй `metadata_objects_from_catalog(query=...)` как live fallback к RAG. Он сначала пробует `dynamic_list_output` и парсинг табличного документа (`source_method="dynamic_list_output"`), а если команда вывода недоступна — читает список через навигацию (`source_method="table_rows"`). На больших динамических списках это может быть заметно дороже, но устойчивее к виртуальной подгрузке строк.
|
|
107
|
+
- Если `open_navigation_link` вернул блок `Возможно, вы имели в виду:`, используй предложенную `e1cib/list/...`/`e1cib/app/...` ссылку вместо повторной ручной догадки.
|
|
106
108
|
|
|
107
109
|
## Динамические списки: добавление вложенных полей через «Изменить форму»
|
|
108
110
|
|
|
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
|