answer42 0.4.83__tar.gz → 0.4.85__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.
Files changed (64) hide show
  1. {answer42-0.4.83 → answer42-0.4.85}/PKG-INFO +1 -1
  2. {answer42-0.4.83 → answer42-0.4.85}/pyproject.toml +1 -1
  3. {answer42-0.4.83 → answer42-0.4.85}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl +13 -7
  4. {answer42-0.4.83 → answer42-0.4.85}/.gitignore +0 -0
  5. {answer42-0.4.83 → answer42-0.4.85}/LICENSE +0 -0
  6. {answer42-0.4.83 → answer42-0.4.85}/README.md +0 -0
  7. {answer42-0.4.83 → answer42-0.4.85}/credentials.example.json +0 -0
  8. {answer42-0.4.83 → answer42-0.4.85}/docs/agent-installation.md +0 -0
  9. {answer42-0.4.83 → answer42-0.4.85}/docs/architecture.md +0 -0
  10. {answer42-0.4.83 → answer42-0.4.85}/docs/assets/answer42-logo.png +0 -0
  11. {answer42-0.4.83 → answer42-0.4.85}/docs/assets/platform42-logo.svg +0 -0
  12. {answer42-0.4.83 → answer42-0.4.85}/docs/installation.md +0 -0
  13. {answer42-0.4.83 → answer42-0.4.85}/scripts/build_cf.py +0 -0
  14. {answer42-0.4.83 → answer42-0.4.85}/scripts/build_pages.py +0 -0
  15. {answer42-0.4.83 → answer42-0.4.85}/scripts/e2e_http_smoke.py +0 -0
  16. {answer42-0.4.83 → answer42-0.4.85}/scripts/e2e_stable.py +0 -0
  17. {answer42-0.4.83 → answer42-0.4.85}/scripts/openclaw_mcp_autoreload.py +0 -0
  18. {answer42-0.4.83 → answer42-0.4.85}/scripts/rag_cli.py +0 -0
  19. {answer42-0.4.83 → answer42-0.4.85}/src/cf/ConfigDumpInfo.xml +0 -0
  20. {answer42-0.4.83 → answer42-0.4.85}/src/cf/Configuration.xml +0 -0
  21. {answer42-0.4.83 → answer42-0.4.85}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
  22. {answer42-0.4.83 → answer42-0.4.85}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
  23. {answer42-0.4.83 → answer42-0.4.85}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
  24. {answer42-0.4.83 → answer42-0.4.85}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
  25. {answer42-0.4.83 → answer42-0.4.85}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
  26. {answer42-0.4.83 → answer42-0.4.85}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
  27. {answer42-0.4.83 → answer42-0.4.85}/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
  28. {answer42-0.4.83 → answer42-0.4.85}/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
  29. {answer42-0.4.83 → answer42-0.4.85}/src/client_cf/ConfigDumpInfo.xml +0 -0
  30. {answer42-0.4.83 → answer42-0.4.85}/src/client_cf/Configuration.xml +0 -0
  31. {answer42-0.4.83 → answer42-0.4.85}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
  32. {answer42-0.4.83 → answer42-0.4.85}/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
  33. {answer42-0.4.83 → answer42-0.4.85}/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
  34. {answer42-0.4.83 → answer42-0.4.85}/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
  35. {answer42-0.4.83 → answer42-0.4.85}/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
  36. {answer42-0.4.83 → answer42-0.4.85}/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
  37. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/__init__.py +0 -0
  38. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
  39. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
  40. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/__init__.py +0 -0
  41. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/skills/answer42/SKILL.md +0 -0
  42. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/skills/answer42-rag/SKILL.md +0 -0
  43. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/assets/skills/answer42-universal-report/SKILL.md +0 -0
  44. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/auth.py +0 -0
  45. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/bridge.py +0 -0
  46. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/credentials.py +0 -0
  47. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/os_support.py +0 -0
  48. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/platform.py +0 -0
  49. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/protocol.py +0 -0
  50. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/__init__.py +0 -0
  51. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/detect.py +0 -0
  52. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/dump.py +0 -0
  53. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/model.py +0 -0
  54. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/parsers.py +0 -0
  55. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/service.py +0 -0
  56. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/store.py +0 -0
  57. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/summary_backend.py +0 -0
  58. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/rag/summary_vector.py +0 -0
  59. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/recorder.py +0 -0
  60. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/release_helper.py +0 -0
  61. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/runtime.py +0 -0
  62. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/server.py +0 -0
  63. {answer42-0.4.83 → answer42-0.4.85}/src/mcp_1c/skill_installer.py +0 -0
  64. {answer42-0.4.83 → answer42-0.4.85}/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.4.83
3
+ Version: 0.4.85
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.4.83"
3
+ version = "0.4.85"
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"
@@ -1987,6 +1987,7 @@
1987
1987
  Тайминги = Новый Структура;
1988
1988
  АктивноеОкно = Неопределено;
1989
1989
  КнопкаРаздела = Неопределено;
1990
+ ИсходноеАктивноеОкно = Неопределено;
1990
1991
  Попытка
1991
1992
  СтрокаПоиска = СокрЛП(СвойствоСтруктуры(Параметры, "query", ""));
1992
1993
  Если ПустаяСтрока(СтрокаПоиска) Тогда
@@ -1995,6 +1996,7 @@
1995
1996
 
1996
1997
  ЗаголовокРаздела = СвойствоСтруктуры(Параметры, "section", "");
1997
1998
  Максимум = СвойствоСтруктуры(Параметры, "max_results", 20);
1999
+ ИсходноеАктивноеОкно = ТестируемоеПриложение.ПолучитьАктивноеОкно();
1998
2000
  НачалоЭтапа = ТекущаяУниверсальнаяДатаВМиллисекундах();
1999
2001
  АктивноеОкно = КомандныйИнтерфейсЦелевоеОкно(Параметры);
2000
2002
  Тайминги.Вставить("target_window_ms", ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЭтапа);
@@ -2048,14 +2050,14 @@
2048
2050
  КонецЕсли;
2049
2051
  КонецЕсли;
2050
2052
  НачалоЭтапа = ТекущаяУниверсальнаяДатаВМиллисекундах();
2051
- ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(АктивноеОкно, КнопкаРаздела);
2053
+ ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(АктивноеОкно, КнопкаРаздела, ИсходноеАктивноеОкно);
2052
2054
  Тайминги.Вставить("cleanup_ms", ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЭтапа);
2053
2055
  Тайминги.Вставить("total_ms", ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало);
2054
2056
  РезультатПоиска.Вставить("_timings", Тайминги);
2055
2057
  Возврат РезультатПоиска;
2056
2058
  Исключение
2057
2059
  Если АктивноеОкно <> Неопределено Тогда
2058
- ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(АктивноеОкно, КнопкаРаздела);
2060
+ ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(АктивноеОкно, КнопкаРаздела, ИсходноеАктивноеОкно);
2059
2061
  КонецЕсли;
2060
2062
  Тайминги.Вставить("total_ms", ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало);
2061
2063
  Возврат Новый Структура("available,reason,error,_timings", Ложь, "not_supported", ОписаниеОшибки(), Тайминги);
@@ -2063,13 +2065,13 @@
2063
2065
  КонецФункции
2064
2066
 
2065
2067
  &НаКлиенте
2066
- Процедура ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(Окно, КнопкаРаздела = Неопределено)
2068
+ Процедура ЗакрытьКомандныйИнтерфейсПослеРаботыMCP(Окно, КнопкаРаздела = Неопределено, ИсходноеАктивноеОкно = Неопределено)
2067
2069
  // Некоторые методы test-client оставляют раскрытый командный интерфейс поверх
2068
2070
  // формы. После этого интерактивные действия по форме могут падать с
2069
2071
  // "Недоступный пользователю элемент управления...". Возвращаем UI в форму:
2070
2072
  // если нажимали кнопку раздела — нажимаем её повторно (переключатель панели),
2071
- // закрываем случайно открытую панель/окно "Помощь", затем активизируем окно
2072
- // и первую найденную форму.
2073
+ // закрываем случайно открытую панель/окно "Помощь", затем активизируем окно,
2074
+ // которое было активным до вызова утилиты, и первую найденную в нем форму.
2073
2075
  Если КнопкаРаздела <> Неопределено Тогда
2074
2076
  Попытка
2075
2077
  КнопкаРаздела.Нажать();
@@ -2078,12 +2080,16 @@
2078
2080
  КонецПопытки;
2079
2081
  КонецЕсли;
2080
2082
  ЗакрытьПанелиПомощиПослеКомандногоИнтерфейсаMCP(Окно);
2083
+ ОкноДляАктивации = ИсходноеАктивноеОкно;
2084
+ Если ОкноДляАктивации = Неопределено Тогда
2085
+ ОкноДляАктивации = Окно;
2086
+ КонецЕсли;
2081
2087
  Попытка
2082
- Окно.Активизировать();
2088
+ ОкноДляАктивации.Активизировать();
2083
2089
  Исключение
2084
2090
  КонецПопытки;
2085
2091
  Попытка
2086
- Форма = НайтиОбъектРекурсивно(Окно, "", "", "тестируемаяформа", 0);
2092
+ Форма = НайтиОбъектРекурсивно(ОкноДляАктивации, "", "", "тестируемаяформа", 0);
2087
2093
  Если Форма <> Неопределено Тогда
2088
2094
  Форма.Активизировать();
2089
2095
  КонецЕсли;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes