answer42 0.4.72__tar.gz → 0.4.73__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.4.72 → answer42-0.4.73}/PKG-INFO +1 -1
- {answer42-0.4.72 → answer42-0.4.73}/pyproject.toml +1 -1
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl +83 -41
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/protocol.py +1 -1
- {answer42-0.4.72 → answer42-0.4.73}/.gitignore +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/LICENSE +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/README.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/credentials.example.json +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/docs/agent-installation.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/docs/architecture.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/docs/assets/answer42-logo.png +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/docs/assets/platform42-logo.svg +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/docs/installation.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/build_cf.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/build_pages.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/e2e_http_smoke.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/e2e_stable.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/openclaw_mcp_autoreload.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/scripts/rag_cli.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/Configuration.xml +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/src/client_cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/client_cf/Configuration.xml +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/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.4.72 → answer42-0.4.73}/src/mcp_1c/__init__.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/__init__.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/skills/answer42/SKILL.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/skills/answer42-rag/SKILL.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/skills/answer42-universal-report/SKILL.md +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/auth.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/bridge.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/credentials.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/os_support.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/platform.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/__init__.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/detect.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/dump.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/model.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/parsers.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/service.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/store.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/summary_backend.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/rag/summary_vector.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/recorder.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/release_helper.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/runtime.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/server.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/skill_installer.py +0 -0
- {answer42-0.4.72 → answer42-0.4.73}/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.
|
|
3
|
+
Version: 0.4.73
|
|
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.
|
|
3
|
+
version = "0.4.73"
|
|
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"
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
|
|
339
339
|
&НаКлиенте
|
|
340
340
|
Функция ВерсияПротоколаМенеджераMCP()
|
|
341
|
-
Возврат "2026.09.01.
|
|
341
|
+
Возврат "2026.09.01.2";
|
|
342
342
|
КонецФункции
|
|
343
343
|
|
|
344
344
|
&НаКлиенте
|
|
@@ -6188,7 +6188,17 @@
|
|
|
6188
6188
|
Если ИскатьПоЗаголовку Тогда
|
|
6189
6189
|
Возврат ЗаголовокТек = ИмяПоля Или СтрНайти(НормЗаголовокТек, НормИмяПоля) > 0;
|
|
6190
6190
|
КонецЕсли;
|
|
6191
|
-
|
|
6191
|
+
|
|
6192
|
+
// Не используем произвольное contains по техническому имени: для колонки
|
|
6193
|
+
// "Номенклатура" web-клиент может вернуть соседний редактор
|
|
6194
|
+
// "ТоварыНоменклатураЕдиницаИзмерения". Разрешаем точное совпадение и
|
|
6195
|
+
// типовой случай prefixed-name вида "ТоварыНоменклатура" (оканчивается
|
|
6196
|
+
// на имя колонки), но не более длинные имена других колонок.
|
|
6197
|
+
ИмяОканчиваетсяНаПоле = Не ПустаяСтрока(НормИмяПоля)
|
|
6198
|
+
И СтрДлина(НормИмяТек) >= СтрДлина(НормИмяПоля)
|
|
6199
|
+
И Прав(НормИмяТек, СтрДлина(НормИмяПоля)) = НормИмяПоля;
|
|
6200
|
+
|
|
6201
|
+
Возврат ИмяТек = ИмяПоля Или ЗаголовокТек = ИмяПоля Или ИмяОканчиваетсяНаПоле Или НормЗаголовокТек = НормИмяПоля;
|
|
6192
6202
|
КонецФункции
|
|
6193
6203
|
|
|
6194
6204
|
&НаКлиенте
|
|
@@ -7219,54 +7229,86 @@
|
|
|
7219
7229
|
Если РезультатПовторногоРедактированияПослеАктивизации.editing Тогда
|
|
7220
7230
|
РезультатАктивизацииКолонки = АктивизироватьКолонкуТаблицыMCP(Таблица, ИмяПоля, ИскатьПоЗаголовку);
|
|
7221
7231
|
КонецЕсли;
|
|
7222
|
-
Если Не ТаблицаВРежимеРедактированияMCP(Таблица) Тогда
|
|
7223
|
-
ВызватьИсключение "Таблица " + ИмяТаблицы + " вышла из режима редактирования до поиска редактора поля " + ИмяПоля
|
|
7224
|
-
+ "; повторный вход: " + СвойствоСтруктуры(РезультатПовторногоРедактированияПослеАктивизации, "error", "");
|
|
7225
|
-
КонецЕсли;
|
|
7226
7232
|
КонецЕсли;
|
|
7227
7233
|
АктивноеОкно = ТестируемоеПриложение.ПолучитьАктивноеОкно();
|
|
7228
7234
|
Поле = НайтиПолеРедактораТаблицыMCP(АктивноеОкно, Таблица, ИмяТаблицы, ИмяПоля, ИскатьПоЗаголовку);
|
|
7229
|
-
Если Поле = Неопределено Тогда
|
|
7230
|
-
ДополнениеОшибкиРедактирования = ?(ПустаяСтрока(РезультатНачалаРедактирования.error), "", "; ошибка начала редактирования: " + РезультатНачалаРедактирования.error);
|
|
7231
|
-
ДополнениеОшибкиАктивизации = ?(РезультатАктивизацииКолонки.activated, "", "; колонка не активизирована");
|
|
7232
|
-
ВызватьИсключение "Поле редактора таблицы не найдено: " + ИмяПоля + ДополнениеОшибкиРедактирования + ДополнениеОшибкиАктивизации;
|
|
7233
|
-
КонецЕсли;
|
|
7234
|
-
ИмяРедактора = БезопасноеСвойство(Поле, "Имя", "");
|
|
7235
7235
|
Если Не ТаблицаВРежимеРедактированияMCP(Таблица) Тогда
|
|
7236
|
-
|
|
7236
|
+
// В документных web-таблицах ссылочная ячейка может оставить live-редактор
|
|
7237
|
+
// видимым и доступным, но родительская таблица уже сообщает edit-mode=Ложь,
|
|
7238
|
+
// а повторный ИзменитьСтроку()/команда Изменить в этот момент не восстанавливают
|
|
7239
|
+
// режим. Для такого случая используем уже существующий ограниченный путь
|
|
7240
|
+
// видимого редактора без подтвержденного edit-mode, с последующей проверкой строки.
|
|
7241
|
+
Если Поле <> Неопределено И ВидимыйРедакторТаблицыДоступенMCP(Поле) Тогда
|
|
7242
|
+
ИмяРедактора = БезопасноеСвойство(Поле, "Имя", "");
|
|
7243
|
+
Попытка
|
|
7244
|
+
РезультатУстановки = ВвестиТекстВВидимыйРедакторТаблицыБезРежимаMCP(Поле, ИмяПоля, Значение, СоздатьЕслиОтсутствует);
|
|
7245
|
+
ИспользованВидимыйРедакторБезРежима = Истина;
|
|
7246
|
+
Исключение
|
|
7247
|
+
ОшибкаУстановки = ОписаниеОшибки();
|
|
7248
|
+
КонецПопытки;
|
|
7249
|
+
Иначе
|
|
7250
|
+
ВызватьИсключение "Таблица " + ИмяТаблицы + " вышла из режима редактирования до поиска редактора поля " + ИмяПоля
|
|
7251
|
+
+ "; повторный вход: " + СвойствоСтруктуры(РезультатПовторногоРедактированияПослеАктивизации, "error", "");
|
|
7252
|
+
КонецЕсли;
|
|
7237
7253
|
КонецЕсли;
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
|
|
7242
|
-
|
|
7243
|
-
РезультатПовторногоРедактированияПередВводом = ОбеспечитьРедактированиеТекущейСтрокиТаблицыMCP(Таблица, ИмяТаблицы);
|
|
7244
|
-
Если РезультатПовторногоРедактированияПередВводом.editing Тогда
|
|
7245
|
-
АктивизироватьКолонкуТаблицыMCP(Таблица, ИмяПоля, ИскатьПоЗаголовку);
|
|
7246
|
-
АктивноеОкноПовторногоВвода = ТестируемоеПриложение.ПолучитьАктивноеОкно();
|
|
7247
|
-
ПовторноеПоле = НайтиПолеРедактораТаблицыMCP(АктивноеОкноПовторногоВвода, Таблица, ИмяТаблицы, ИмяПоля, ИскатьПоЗаголовку);
|
|
7248
|
-
Если ПовторноеПоле <> Неопределено Тогда
|
|
7249
|
-
Поле = ПовторноеПоле;
|
|
7250
|
-
ИмяРедактора = БезопасноеСвойство(Поле, "Имя", ИмяРедактора);
|
|
7251
|
-
Поле.Активизировать();
|
|
7252
|
-
КонецЕсли;
|
|
7254
|
+
Если Не ИспользованВидимыйРедакторБезРежима Тогда
|
|
7255
|
+
Если Поле = Неопределено Тогда
|
|
7256
|
+
ДополнениеОшибкиРедактирования = ?(ПустаяСтрока(РезультатНачалаРедактирования.error), "", "; ошибка начала редактирования: " + РезультатНачалаРедактирования.error);
|
|
7257
|
+
ДополнениеОшибкиАктивизации = ?(РезультатАктивизацииКолонки.activated, "", "; колонка не активизирована");
|
|
7258
|
+
ВызватьИсключение "Поле редактора таблицы не найдено: " + ИмяПоля + ДополнениеОшибкиРедактирования + ДополнениеОшибкиАктивизации;
|
|
7253
7259
|
КонецЕсли;
|
|
7260
|
+
ИмяРедактора = БезопасноеСвойство(Поле, "Имя", "");
|
|
7254
7261
|
Если Не ТаблицаВРежимеРедактированияMCP(Таблица) Тогда
|
|
7255
|
-
|
|
7256
|
-
|
|
7262
|
+
// Третья точка той же web-гонки: правильный editor уже найден, но
|
|
7263
|
+
// таблица успела выйти из edit-mode до его активизации. Если сам editor
|
|
7264
|
+
// всё ещё видим и доступен, используем узкий fallback видимого редактора
|
|
7265
|
+
// и затем подтверждаем значение через текущую строку.
|
|
7266
|
+
Если ВидимыйРедакторТаблицыДоступенMCP(Поле) Тогда
|
|
7267
|
+
Попытка
|
|
7268
|
+
РезультатУстановки = ВвестиТекстВВидимыйРедакторТаблицыБезРежимаMCP(Поле, ИмяПоля, Значение, СоздатьЕслиОтсутствует);
|
|
7269
|
+
ИспользованВидимыйРедакторБезРежима = Истина;
|
|
7270
|
+
Исключение
|
|
7271
|
+
ОшибкаУстановки = ОписаниеОшибки();
|
|
7272
|
+
КонецПопытки;
|
|
7273
|
+
Иначе
|
|
7274
|
+
ВызватьИсключение "Таблица " + ИмяТаблицы + " не в режиме редактирования перед активизацией редактора " + ИмяРедактора;
|
|
7275
|
+
КонецЕсли;
|
|
7257
7276
|
КонецЕсли;
|
|
7258
|
-
|
|
7259
|
-
|
|
7277
|
+
Если Не ИспользованВидимыйРедакторБезРежима Тогда
|
|
7278
|
+
Поле.Активизировать();
|
|
7279
|
+
Если Не ТаблицаВРежимеРедактированияMCP(Таблица) Тогда
|
|
7280
|
+
// Вторая точка той же гонки: сам редактор ячейки может получить фокус уже
|
|
7281
|
+
// после того, как web-клиент закрыл edit-mode. Восстанавливаем режим и
|
|
7282
|
+
// заново находим live-редактор, чтобы не вводить текст в осиротевший field.
|
|
7283
|
+
РезультатПовторногоРедактированияПередВводом = ОбеспечитьРедактированиеТекущейСтрокиТаблицыMCP(Таблица, ИмяТаблицы);
|
|
7284
|
+
Если РезультатПовторногоРедактированияПередВводом.editing Тогда
|
|
7285
|
+
АктивизироватьКолонкуТаблицыMCP(Таблица, ИмяПоля, ИскатьПоЗаголовку);
|
|
7286
|
+
АктивноеОкноПовторногоВвода = ТестируемоеПриложение.ПолучитьАктивноеОкно();
|
|
7287
|
+
ПовторноеПоле = НайтиПолеРедактораТаблицыMCP(АктивноеОкноПовторногоВвода, Таблица, ИмяТаблицы, ИмяПоля, ИскатьПоЗаголовку);
|
|
7288
|
+
Если ПовторноеПоле <> Неопределено Тогда
|
|
7289
|
+
Поле = ПовторноеПоле;
|
|
7290
|
+
ИмяРедактора = БезопасноеСвойство(Поле, "Имя", ИмяРедактора);
|
|
7291
|
+
Поле.Активизировать();
|
|
7292
|
+
КонецЕсли;
|
|
7293
|
+
КонецЕсли;
|
|
7294
|
+
Если Не ТаблицаВРежимеРедактированияMCP(Таблица) Тогда
|
|
7295
|
+
ВызватьИсключение "Таблица " + ИмяТаблицы + " вышла из режима редактирования перед вводом в редактор " + ИмяРедактора
|
|
7296
|
+
+ "; повторный вход: " + СвойствоСтруктуры(РезультатПовторногоРедактированияПередВводом, "error", "");
|
|
7297
|
+
КонецЕсли;
|
|
7298
|
+
КонецЕсли;
|
|
7299
|
+
ПроверитьРедактированиеРодительскойТаблицыПередВводомMCP(Поле, "Перед вводом поля " + ИмяПоля);
|
|
7260
7300
|
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7301
|
+
Попытка
|
|
7302
|
+
РезультатУстановки = ВвестиТекстВРедакторТаблицыMCP(Таблица, Поле, ИмяПоля, Значение, СоздатьЕслиОтсутствует);
|
|
7303
|
+
Исключение
|
|
7304
|
+
// Для некоторых редакторов ячеек ВвестиТекст() может бросить исключение уже
|
|
7305
|
+
// после фактического изменения значения. Завершаем редактирование и ниже
|
|
7306
|
+
// проверяем строку. Если значение не подтвердится, для ссылочных полей будет
|
|
7307
|
+
// отдельный fallback через штатную форму выбора.
|
|
7308
|
+
ОшибкаУстановки = ОписаниеОшибки();
|
|
7309
|
+
КонецПопытки;
|
|
7310
|
+
КонецЕсли;
|
|
7311
|
+
КонецЕсли;
|
|
7270
7312
|
КонецЕсли;
|
|
7271
7313
|
РезультатВыбораЧерезФорму = Неопределено;
|
|
7272
7314
|
|
|
Binary file
|
|
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
|
{answer42-0.4.72 → answer42-0.4.73}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl
RENAMED
|
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
|
{answer42-0.4.72 → answer42-0.4.73}/src/mcp_1c/assets/skills/answer42-universal-report/SKILL.md
RENAMED
|
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
|