answer42 0.4.85__tar.gz → 0.4.86__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.85 → answer42-0.4.86}/PKG-INFO +1 -1
- {answer42-0.4.85 → answer42-0.4.86}/pyproject.toml +1 -1
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/server.py +43 -0
- {answer42-0.4.85 → answer42-0.4.86}/.gitignore +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/LICENSE +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/README.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/credentials.example.json +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/docs/agent-installation.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/docs/architecture.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/docs/assets/answer42-logo.png +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/docs/assets/platform42-logo.svg +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/docs/installation.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/build_cf.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/build_pages.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/e2e_http_smoke.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/e2e_stable.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/openclaw_mcp_autoreload.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/scripts/rag_cli.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/Configuration.xml +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl" +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/src/client_cf/ConfigDumpInfo.xml +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/client_cf/Configuration.xml +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/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.85 → answer42-0.4.86}/src/mcp_1c/__init__.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/__init__.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/skills/answer42/SKILL.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/skills/answer42-rag/SKILL.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/assets/skills/answer42-universal-report/SKILL.md +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/auth.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/bridge.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/credentials.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/os_support.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/platform.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/protocol.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/__init__.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/detect.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/dump.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/model.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/parsers.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/service.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/store.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/summary_backend.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/rag/summary_vector.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/recorder.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/release_helper.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/runtime.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/src/mcp_1c/skill_installer.py +0 -0
- {answer42-0.4.85 → answer42-0.4.86}/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.86
|
|
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.86"
|
|
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"
|
|
@@ -681,12 +681,55 @@ _SESSIONS: dict[str, SessionState] = {}
|
|
|
681
681
|
def _pid_is_running(pid: int) -> bool:
|
|
682
682
|
if pid <= 0:
|
|
683
683
|
return False
|
|
684
|
+
if os_support.IS_WINDOWS:
|
|
685
|
+
# ``os.kill(pid, 0)`` is a POSIX liveness probe. On Windows CPython
|
|
686
|
+
# delegates to TerminateProcess even for signal 0 and may raise
|
|
687
|
+
# unrelated OSError values such as WinError 11 instead of answering
|
|
688
|
+
# whether the process exists. Use the native process handle API there.
|
|
689
|
+
try:
|
|
690
|
+
import ctypes
|
|
691
|
+
from ctypes import wintypes
|
|
692
|
+
|
|
693
|
+
kernel32 = ctypes.WinDLL("kernel32", use_last_error=True)
|
|
694
|
+
open_process = kernel32.OpenProcess
|
|
695
|
+
open_process.argtypes = [wintypes.DWORD, wintypes.BOOL, wintypes.DWORD]
|
|
696
|
+
open_process.restype = wintypes.HANDLE
|
|
697
|
+
close_handle = kernel32.CloseHandle
|
|
698
|
+
close_handle.argtypes = [wintypes.HANDLE]
|
|
699
|
+
close_handle.restype = wintypes.BOOL
|
|
700
|
+
get_exit_code_process = kernel32.GetExitCodeProcess
|
|
701
|
+
get_exit_code_process.argtypes = [wintypes.HANDLE, ctypes.POINTER(wintypes.DWORD)]
|
|
702
|
+
get_exit_code_process.restype = wintypes.BOOL
|
|
703
|
+
|
|
704
|
+
PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
|
|
705
|
+
ERROR_ACCESS_DENIED = 5
|
|
706
|
+
ERROR_INVALID_PARAMETER = 87
|
|
707
|
+
STILL_ACTIVE = 259
|
|
708
|
+
handle = open_process(PROCESS_QUERY_LIMITED_INFORMATION, False, int(pid))
|
|
709
|
+
if not handle:
|
|
710
|
+
error = ctypes.get_last_error()
|
|
711
|
+
if error == ERROR_ACCESS_DENIED:
|
|
712
|
+
return True
|
|
713
|
+
if error == ERROR_INVALID_PARAMETER:
|
|
714
|
+
return False
|
|
715
|
+
return False
|
|
716
|
+
try:
|
|
717
|
+
exit_code = wintypes.DWORD()
|
|
718
|
+
if not get_exit_code_process(handle, ctypes.byref(exit_code)):
|
|
719
|
+
return True
|
|
720
|
+
return int(exit_code.value) == STILL_ACTIVE
|
|
721
|
+
finally:
|
|
722
|
+
close_handle(handle)
|
|
723
|
+
except Exception:
|
|
724
|
+
return False
|
|
684
725
|
try:
|
|
685
726
|
os.kill(pid, 0)
|
|
686
727
|
except ProcessLookupError:
|
|
687
728
|
return False
|
|
688
729
|
except PermissionError:
|
|
689
730
|
return True
|
|
731
|
+
except OSError:
|
|
732
|
+
return False
|
|
690
733
|
return True
|
|
691
734
|
|
|
692
735
|
|
|
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.85 → answer42-0.4.86}/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
|
|
File without changes
|
|
File without changes
|
{answer42-0.4.85 → answer42-0.4.86}/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
|