lybic-guiagents 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl

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.

Potentially problematic release.


This version of lybic-guiagents might be problematic. Click here for more details.

@@ -0,0 +1,241 @@
1
+ """Configuration management for Agent Service"""
2
+
3
+ import os
4
+ import json
5
+ import platform
6
+ from dataclasses import dataclass, field
7
+ from typing import Dict, Any, Optional, Union
8
+ from pathlib import Path
9
+ from .exceptions import ConfigurationError, APIKeyError
10
+
11
+
12
+ @dataclass
13
+ class LLMConfig:
14
+ """LLM provider configuration"""
15
+ provider: str # openai, anthropic, zhipu, etc.
16
+ model: str
17
+ api_key: Optional[str] = None
18
+ base_url: Optional[str] = None
19
+ api_version: Optional[str] = None
20
+ rate_limit: int = -1
21
+ extra_params: Dict[str, Any] = field(default_factory=dict)
22
+
23
+
24
+ @dataclass
25
+ class ServiceConfig:
26
+ """Comprehensive service configuration with multi-level API key support"""
27
+
28
+ # Agent settings
29
+ default_backend: str = 'lybic'
30
+ default_mode: str = 'normal'
31
+ default_max_steps: int = 50
32
+ default_platform: str = field(default_factory=lambda: platform.system().lower())
33
+
34
+ # Service settings
35
+ max_concurrent_tasks: int = 5
36
+ task_timeout: int = 3600 # 1 hour
37
+ enable_takeover: bool = False
38
+ enable_search: bool = True
39
+
40
+ # Logging settings
41
+ log_level: str = 'INFO'
42
+ log_dir: str = 'runtime'
43
+
44
+ # LLM configuration
45
+ llm_config: Optional[LLMConfig] = None
46
+
47
+ # API Keys - multiple providers support
48
+ api_keys: Dict[str, str] = field(default_factory=dict)
49
+
50
+ # Backend-specific configurations
51
+ backend_configs: Dict[str, Dict[str, Any]] = field(default_factory=dict)
52
+
53
+ # Environment variable mappings
54
+ env_mapping: Dict[str, str] = field(default_factory=lambda: {
55
+ 'AGENT_BACKEND': 'default_backend',
56
+ 'AGENT_MODE': 'default_mode',
57
+ 'AGENT_MAX_STEPS': 'default_max_steps',
58
+ 'AGENT_LOG_LEVEL': 'log_level',
59
+ 'AGENT_LOG_DIR': 'log_dir',
60
+ 'AGENT_TASK_TIMEOUT': 'task_timeout',
61
+ 'AGENT_ENABLE_TAKEOVER': 'enable_takeover',
62
+ 'AGENT_ENABLE_SEARCH': 'enable_search',
63
+ # Lybic specific
64
+ 'LYBIC_PRECREATE_SID': 'lybic_sid',
65
+ 'LYBIC_API_KEY': 'lybic_api_key',
66
+ })
67
+
68
+ # Known API key environment variables
69
+ api_key_env_vars: Dict[str, str] = field(default_factory=lambda: {
70
+ 'openai': 'OPENAI_API_KEY',
71
+ 'anthropic': 'ANTHROPIC_API_KEY',
72
+ 'zhipu': 'ZHIPU_API_KEY',
73
+ 'gemini': 'GEMINI_API_KEY',
74
+ 'groq': 'GROQ_API_KEY',
75
+ 'deepseek': 'DEEPSEEK_API_KEY',
76
+ 'dashscope': 'DASHSCOPE_API_KEY',
77
+ 'azure_openai': 'AZURE_OPENAI_API_KEY',
78
+ 'lybic': 'LYBIC_API_KEY',
79
+ 'huggingface': 'HF_TOKEN',
80
+ 'siliconflow': 'SILICONFLOW_API_KEY',
81
+ 'monica': 'MONICA_API_KEY',
82
+ 'openrouter': 'OPENROUTER_API_KEY',
83
+ })
84
+
85
+ @classmethod
86
+ def from_env(cls, config_file: Optional[Union[str, Path]] = None) -> 'ServiceConfig':
87
+ """Create configuration from environment variables and optional config file
88
+
89
+ Priority order (highest to lowest):
90
+ 1. Environment variables
91
+ 2. Config file
92
+ 3. Default values
93
+ """
94
+ config = cls()
95
+
96
+ # Load from config file first (lower priority)
97
+ if config_file:
98
+ config = config.load_from_file(config_file)
99
+
100
+ # Override with environment variables (higher priority)
101
+ config._load_from_env()
102
+
103
+ return config
104
+
105
+ def _load_from_env(self):
106
+ """Load configuration from environment variables"""
107
+ # Load general settings
108
+ for env_key, attr_name in self.env_mapping.items():
109
+ if env_key in os.environ:
110
+ value = os.environ[env_key]
111
+ # Type conversion based on attribute type
112
+ if hasattr(self, attr_name):
113
+ current_value = getattr(self, attr_name)
114
+ if isinstance(current_value, bool):
115
+ value = value.lower() in ('true', '1', 'yes', 'on')
116
+ elif isinstance(current_value, int):
117
+ try:
118
+ value = int(value)
119
+ except ValueError:
120
+ continue
121
+ setattr(self, attr_name, value)
122
+
123
+ # Load API keys from environment
124
+ for provider, env_var in self.api_key_env_vars.items():
125
+ if env_var in os.environ:
126
+ self.api_keys[provider] = os.environ[env_var]
127
+
128
+ @classmethod
129
+ def load_from_file(cls, config_file: Union[str, Path]) -> 'ServiceConfig':
130
+ """Load configuration from JSON file"""
131
+ config_path = Path(config_file)
132
+
133
+ if not config_path.exists():
134
+ raise ConfigurationError(f"Configuration file not found: {config_path}")
135
+
136
+ try:
137
+ with open(config_path, 'r', encoding='utf-8') as f:
138
+ data = json.load(f)
139
+
140
+ # Create config instance
141
+ config = cls()
142
+
143
+ # Update with file data
144
+ for key, value in data.items():
145
+ if hasattr(config, key):
146
+ setattr(config, key, value)
147
+
148
+ return config
149
+
150
+ except json.JSONDecodeError as e:
151
+ raise ConfigurationError("Invalid JSON in config file") from e
152
+ except OSError as e:
153
+ raise ConfigurationError("Error loading config file") from e
154
+
155
+ def save_to_file(self, config_file: Union[str, Path]):
156
+ """Save configuration to JSON file"""
157
+ config_path = Path(config_file)
158
+ config_path.parent.mkdir(parents=True, exist_ok=True)
159
+
160
+ # Convert to dict, excluding non-serializable fields
161
+ data = {}
162
+ for key, value in self.__dict__.items():
163
+ if not key.startswith('_') and key not in ['env_mapping', 'api_key_env_vars']:
164
+ data[key] = value
165
+
166
+ try:
167
+ with open(config_path, 'w', encoding='utf-8') as f:
168
+ json.dump(data, f, indent=2, ensure_ascii=False)
169
+ except Exception as e:
170
+ raise ConfigurationError(f"Error saving config file: {e}")
171
+
172
+ def get_api_key(self, provider: str, required: bool = True) -> Optional[str]:
173
+ """Get API key for a provider with fallback chain
174
+
175
+ Priority:
176
+ 1. Direct api_keys dict
177
+ 2. Environment variable
178
+ 3. None (if not required)
179
+
180
+ Args:
181
+ provider: Provider name (openai, anthropic, etc.)
182
+ required: Whether to raise error if not found
183
+
184
+ Returns:
185
+ API key string or None
186
+
187
+ Raises:
188
+ APIKeyError: If required but not found
189
+ """
190
+ # Check direct api_keys dict first
191
+ if provider in self.api_keys:
192
+ return self.api_keys[provider]
193
+
194
+ # Check environment variable
195
+ if provider in self.api_key_env_vars:
196
+ env_var = self.api_key_env_vars[provider]
197
+ if env_var in os.environ:
198
+ api_key = os.environ[env_var]
199
+ # Cache it for future use
200
+ self.api_keys[provider] = api_key
201
+ return api_key
202
+
203
+ # Not found
204
+ if required:
205
+ env_var = self.api_key_env_vars.get(provider, f"{provider.upper()}_API_KEY")
206
+ raise APIKeyError(
207
+ f"API key for '{provider}' not found. "
208
+ f"Please provide it via api_keys parameter or {env_var} environment variable"
209
+ )
210
+
211
+ return None
212
+
213
+ def set_api_key(self, provider: str, api_key: str):
214
+ """Set API key for a provider"""
215
+ self.api_keys[provider] = api_key
216
+
217
+ def get_backend_config(self, backend: str) -> Dict[str, Any]:
218
+ """Get backend-specific configuration"""
219
+ return self.backend_configs.get(backend, {})
220
+
221
+ def set_backend_config(self, backend: str, config: Dict[str, Any]):
222
+ """Set backend-specific configuration"""
223
+ self.backend_configs[backend] = config
224
+
225
+ def validate(self):
226
+ """Validate configuration"""
227
+ if self.default_max_steps <= 0:
228
+ raise ConfigurationError("default_max_steps must be positive")
229
+
230
+ if self.task_timeout <= 0:
231
+ raise ConfigurationError("task_timeout must be positive")
232
+
233
+ if self.max_concurrent_tasks <= 0:
234
+ raise ConfigurationError("max_concurrent_tasks must be positive")
235
+
236
+ def to_dict(self) -> Dict[str, Any]:
237
+ """Convert configuration to dictionary"""
238
+ return {
239
+ key: value for key, value in self.__dict__.items()
240
+ if not key.startswith('_')
241
+ }
@@ -0,0 +1,35 @@
1
+ """Custom exceptions for the Agent Service"""
2
+
3
+
4
+ class AgentServiceError(Exception):
5
+ """Base exception for Agent Service errors"""
6
+ pass
7
+
8
+
9
+ class ConfigurationError(AgentServiceError):
10
+ """Raised when there are configuration issues"""
11
+ pass
12
+
13
+
14
+ class TaskExecutionError(AgentServiceError):
15
+ """Raised when task execution fails"""
16
+
17
+ def __init__(self, message: str, task_id: str | None = None, step: int | None = None):
18
+ super().__init__(message)
19
+ self.task_id = task_id
20
+ self.step = step
21
+
22
+
23
+ class TaskTimeoutError(TaskExecutionError):
24
+ """Raised when task execution times out"""
25
+ pass
26
+
27
+
28
+ class BackendError(AgentServiceError):
29
+ """Raised when backend operations fail"""
30
+ pass
31
+
32
+
33
+ class APIKeyError(ConfigurationError):
34
+ """Raised when API key configuration is invalid"""
35
+ pass
File without changes
@@ -0,0 +1,22 @@
1
+ # gui_agents/s2/store/registry.py
2
+
3
+ # Usage: in any file, get the object through Registry.get
4
+ # from gui_agents.store.registry import Registry
5
+ # GlobalStateStore = Registry.get("GlobalStateStore")
6
+
7
+ class Registry:
8
+ _services: dict[str, object] = {}
9
+
10
+ @classmethod
11
+ def register(cls, name: str, obj: object):
12
+ cls._services[name] = obj
13
+
14
+ @classmethod
15
+ def get(cls, name: str) -> object:
16
+ if name not in cls._services:
17
+ raise KeyError(f"{name!r} not registered in Registry")
18
+ return cls._services[name]
19
+
20
+ @classmethod
21
+ def clear(cls):
22
+ cls._services.clear()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lybic-guiagents
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: An open-source agentic framework that enables AI to use computers like humans and can provide a multi-agent runtime environment as an infrastructure capability
5
5
  Author: Lybic Development Team
6
6
  Author-email: Lybic Development Team <lybic@tingyutech.com>
@@ -33,7 +33,7 @@ Requires-Dist: certifi
33
33
  Requires-Dist: pytesseract
34
34
  Requires-Dist: google-genai
35
35
  Requires-Dist: python-dotenv
36
- Requires-Dist: Pillow~=11.0.0
36
+ Requires-Dist: Pillow>=11.3.0
37
37
  Requires-Dist: fabric
38
38
  Requires-Dist: gymnasium~=0.28.1
39
39
  Requires-Dist: requests~=2.31.0
@@ -88,9 +88,12 @@ Requires-Dist: azure-mgmt-network
88
88
  Requires-Dist: docker
89
89
  Requires-Dist: loguru
90
90
  Requires-Dist: dotenv
91
+ Requires-Dist: lybic>=0.7.0
91
92
  Requires-Dist: pyobjc; platform_system == "Darwin"
92
93
  Requires-Dist: pywinauto; platform_system == "Windows"
93
94
  Requires-Dist: pywin32; platform_system == "Windows"
95
+ Provides-Extra: dev
96
+ Requires-Dist: pytest; extra == "dev"
94
97
  Dynamic: author
95
98
  Dynamic: license-file
96
99
  Dynamic: requires-python
@@ -109,6 +112,19 @@ Dynamic: requires-python
109
112
  Lybic GUI Agent: <small>An open-source agentic framework for Computer Use Agents</small>
110
113
  </h1>
111
114
 
115
+ <p align="center">
116
+ <small>Supported OS:</small>
117
+ <img src="https://img.shields.io/badge/OS-Windows-blue?logo=windows&logoColor=white" alt="Windows">
118
+ <img src="https://img.shields.io/badge/OS-macOS-black?logo=apple&logoColor=white" alt="macOS">
119
+ <img src="https://img.shields.io/badge/OS-Linux-yellow?logo=linux&logoColor=black" alt="Linux">
120
+ <br/>
121
+ <small>Latest Version:</small><a href="https://pypi.org/project/lybic-guiagents/"><img alt="PyPI" src="https://img.shields.io/pypi/v/lybic-guiagents"></a>
122
+ &nbsp;
123
+ <a href="https://github.com/lybic/agent/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/pypi/l/lybic-guiagents"></a>
124
+ &nbsp;
125
+ <a href="https://github.com/lybic/agent"><img alt="Stars" src="https://img.shields.io/github/stars/lybic/agent?style=social"></a>
126
+ </p>
127
+
112
128
  ## What is Lybic GUI Agent?
113
129
 
114
130
  Lybic platform placeholder - comprehensive AI platform for building and deploying intelligent agents
@@ -124,6 +140,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
124
140
  </div>
125
141
 
126
142
  ## 🥳 Updates
143
+ - [x] **2025/09/14**: The paper has been accepted by [arxiv](https://arxiv.org/abs/2509.11067)
127
144
  - [x] **2025/09/09**: We achieved the world's first place in the 50-step length of [OS-world](https://os-world.github.io/)!
128
145
  - [x] **2025/08/08**: Released v0.1.0 of [Lybic GUI Agent](https://github.com/lybic/agent) library, with support for Windows, Mac, Ubuntu and Lybic API!
129
146
 
@@ -132,6 +149,8 @@ Lybic GUI Agent is an open-source framework that enables developers and business
132
149
  1. [💡 Introduction](#-introduction)
133
150
  2. [🛠️ Installation & Setup](#%EF%B8%8F-installation--setup)
134
151
  3. [🚀 Usage](#-usage)
152
+ 4. [🔧 Troubleshooting](#-troubleshooting)
153
+ 5. [💬 Citations](#-citations)
135
154
 
136
155
  ## 💡 Introduction
137
156
 
@@ -161,7 +180,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
161
180
  <tr>
162
181
  <td>OSWorld Verified (50 step)</td>
163
182
  <td><b>57.1%</b></td>
164
- <td>53.1%</td>
183
+ <td>54.2%</td>
165
184
  </tr>
166
185
  </table>
167
186
  </div>
@@ -176,7 +195,15 @@ Lybic GUI Agent is an open-source framework that enables developers and business
176
195
  > [!WARNING]
177
196
  > To leverage the full potential of Lybic GUI Agent, we support multiple model providers including OpenAI, Anthropic, Gemini, and Doubao. For the best visual grounding performance, we recommend using UI-TARS models.
178
197
 
179
- ### Installation
198
+ ### Installation(from pip)
199
+
200
+ You can install Lybic GUI Agent by using pip:
201
+
202
+ ```bash
203
+ pip install lybic-guiagents
204
+ ```
205
+
206
+ ### Installation(from source code)
180
207
 
181
208
  You can use [UV](https://docs.astral.sh/uv/getting-started/installation/) (a modern Python package manager) version 0.8.5 for installation:
182
209
 
@@ -277,6 +304,7 @@ Run in interactive mode with the `lybic` backend:
277
304
  python gui_agents/cli_app.py --backend lybic
278
305
  ```
279
306
 
307
+
280
308
  Run a single query with the `pyautogui` backend and a maximum of 20 steps:
281
309
  ```sh
282
310
  python gui_agents/cli_app.py --backend pyautogui --query "Find the result of 8 × 7 on a calculator" --max-steps 20
@@ -308,6 +336,25 @@ LYBIC_MAX_LIFE_SECONDS=3600
308
336
  > LYBIC_PRECREATE_SID=SBX-XXXXXXXXXXXXXXX
309
337
  > ```
310
338
 
339
+ ### Use as a service
340
+
341
+ After installing lybic-guiagents, you can run it as a service.
342
+
343
+ Main Components:
344
+ - AgentService: High-level service interface (recommended for most users)
345
+ - AgentS2, AgentSFast: Core agent implementations
346
+ - HardwareInterface: Hardware abstraction layer
347
+ - ServiceConfig: Configuration management
348
+
349
+ Quick Start:
350
+
351
+ ```python
352
+ from gui_agents import AgentService
353
+ service = AgentService()
354
+ result = service.execute_task("Take a screenshot")
355
+ print(f"Task completed: {result.status}")
356
+ ```
357
+
311
358
  ### VMware Configuration
312
359
 
313
360
  To use PyAutoGUI with VMware, you need to install [VMware Workstation Pro](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion) (on Windows) and create a virtual machine.
@@ -358,6 +405,7 @@ USE_PRECREATE_VM=Ubuntu
358
405
  ```bash
359
406
  uv sync
360
407
  uv pip install -e .
408
+ # uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
361
409
  ```
362
410
 
363
411
  #### 3. Lybic Sandbox Connection Issues
@@ -406,6 +454,23 @@ If you encounter issues not covered here:
406
454
  - Complete error messages
407
455
  - Steps to reproduce the issue
408
456
 
457
+ ## 💬 Citations
458
+
459
+ If you find this codebase useful, please cite:
460
+
461
+ ```bibtex
462
+ @misc{guo2025agenticlybicmultiagentexecution,
463
+ title={Agentic Lybic: Multi-Agent Execution System with Tiered Reasoning and Orchestration},
464
+ author={Liangxuan Guo and Bin Zhu and Qingqian Tao and Kangning Liu and Xun Zhao and Xianzhe Qin and Jin Gao and Guangfu Hao},
465
+ year={2025},
466
+ eprint={2509.11067},
467
+ archivePrefix={arXiv},
468
+ primaryClass={cs.AI},
469
+ url={https://arxiv.org/abs/2509.11067},
470
+ }
471
+ ```
472
+
473
+
409
474
  ## Stargazers over time
410
475
 
411
476
  [![Stargazers over time](https://starchart.cc/lybic/agent.svg)](https://starchart.cc/lybic/agent)
@@ -51,21 +51,38 @@ desktop_env/providers/virtualbox/provider.py,sha256=kSWLSddLpn8IfeyAPyMEy_p5SOap
51
51
  desktop_env/providers/vmware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  desktop_env/providers/vmware/manager.py,sha256=pFqJwF6BAijmD-LbSei68-DU7ILCTONRj7e0At5iKIg,18893
53
53
  desktop_env/providers/vmware/provider.py,sha256=88ERND67KQIxG74b10sAXJ04o5FhNpx0d9pRTi8bHrA,4080
54
- gui_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ gui_agents/__init__.py,sha256=TyH2fsj-oZalVObwFb5OLOpfiyO4asqe9rqVIsIzm40,1766
55
55
  gui_agents/cli_app.py,sha256=yB5l6tL2eoQ6nyrd9opoxQwGgmsvKaZJXh1JPa-3H4I,22874
56
56
  gui_agents/agents/Action.py,sha256=YHDJwfShNYtS3AtTjD4XE9YqW1SMcbMG-LoD2SLL6ZI,6218
57
57
  gui_agents/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  gui_agents/agents/agent_s.py,sha256=BpFNbM6jlHpYezcozpmTeq8kzCPK1Y0MIBFdU19lrVI,34387
59
59
  gui_agents/agents/global_state.py,sha256=BS6tUeK9Z3CdUIeU0gcEjzVnc_s7naeKQsCoIQLp23g,22314
60
60
  gui_agents/agents/grounding.py,sha256=bmWj1daLx3agPWavc_h8XOVhOCLdw-emiuJ-KdQHEOU,22924
61
- gui_agents/agents/hardware_interface.py,sha256=yiK8w5OPCrFEfBUhMs11SyeOB6OQIuzruoSKhzVZEm4,4549
61
+ gui_agents/agents/hardware_interface.py,sha256=IZ4IXAIuhNyyWF8PNs6q5tIxWDFfkuJBvHrcgay93BQ,4637
62
62
  gui_agents/agents/manager.py,sha256=5wNbKj_gbBiE7ZlLLp6EQODasgE3rd6o4JGPk_8hl5k,24106
63
63
  gui_agents/agents/translator.py,sha256=AgauUpAEtq4GCK37MuxPG-RW-cxzHkfRFvgT8RZtgfA,5177
64
64
  gui_agents/agents/worker.py,sha256=jgyywA02vFnjJmHN7WKljNQ41yUqBhQScC78MeCQ2qs,15348
65
+ gui_agents/agents/Backend/ADBBackend.py,sha256=J8WeFFLEPh05FmFKuGz72wgcKdKQT9kLUCHyEb8mRkk,2151
66
+ gui_agents/agents/Backend/Backend.py,sha256=Aou3gBfur0AqL_bMn9FFeLTBM4CfL5aiIRivjqaB6zk,978
67
+ gui_agents/agents/Backend/LybicBackend.py,sha256=neq_cCVlhAbss4_Ljv0B-BghpxOU2eS9PWh1ht9n_UA,13196
68
+ gui_agents/agents/Backend/PyAutoGUIBackend.py,sha256=7pRy3rs2Yod21EMW7U2KxhQ0cXlU315t-8tFIWqLu98,6128
69
+ gui_agents/agents/Backend/PyAutoGUIVMwareBackend.py,sha256=eo-JFtuAzuTH1otVhYcfZ1AoCKtLZVt4yWGxKIWfDbg,9903
70
+ gui_agents/agents/Backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
71
  gui_agents/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
72
  gui_agents/core/engine.py,sha256=7MezEJLqJxZBjkhM0HWc9HP6oc3ajplmWTCMRHfNY0I,54627
67
73
  gui_agents/core/knowledge.py,sha256=RewER4oywfz8_e7ze83GYeuIlzsEB5bwHzyrk9OFyM8,18283
68
74
  gui_agents/core/mllm.py,sha256=k3BIILmb7eaNBu_pXQaD5cRpVBGkrLVQqkxQzzseZdo,21191
75
+ gui_agents/lybic_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ gui_agents/lybic_client/lybic_client.py,sha256=E9_TRtQChEkFGe74J4HrkapVaFCG0TkjxeW9z0Je--s,2994
77
+ gui_agents/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ gui_agents/prompts/prompts.py,sha256=w9ZP4FhuBDzWP7J0Urn69woLhas9AIWTtNfC1tys59c,67050
79
+ gui_agents/service/__init__.py,sha256=5WsJ0Mx3e5BAP9qQMhoVimhOgTIndGeVcasGNoo1s-c,518
80
+ gui_agents/service/agent_service.py,sha256=ZAPQjO76GRP7P0n_prU76NK5d7fzHk1pqLJ7a9rHt-Q,20969
81
+ gui_agents/service/api_models.py,sha256=06iFyaV6ttROsNiS2GnAAaB4kR1XNpSRuUHD2W60L8o,3949
82
+ gui_agents/service/config.py,sha256=WODT8RpaMFQ_oSshfDWsq_M8inPMHTlWYjoFoRpn6FY,8595
83
+ gui_agents/service/exceptions.py,sha256=Tk3U4eycX-wuAqR0B-TthBESKyu8KuwH5Ksng0v4juo,831
84
+ gui_agents/store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ gui_agents/store/registry.py,sha256=KWySYUlRA5SGubqqCgOu5Lk7PvBIQQ4cEZmHoNwKzVQ,615
69
86
  gui_agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
87
  gui_agents/tools/tools.py,sha256=c5yfrPz3QMe-clFg3HkHrC6AtRWckDmF0Mb1U24FH-k,27607
71
88
  gui_agents/unit_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -78,8 +95,8 @@ gui_agents/utils/common_utils.py,sha256=vYvjw-0ouWLkpAVKZH0vUkGhtlHKfC2FqPVFA-Cd
78
95
  gui_agents/utils/display_viewer.py,sha256=hL6Pf-wpoQrrYeOi6eaGnCorkAvGWNzkLIuM9yIudnk,8731
79
96
  gui_agents/utils/embedding_manager.py,sha256=7QFITe9l0z8OKHT-yqx-BGwVMj4BRL2iJ13PgJ2-Yak,2117
80
97
  gui_agents/utils/image_axis_utils.py,sha256=z21cVAE2ZOK1DR7wK10JHg8aZapkX2oGI6D93pKZEao,878
81
- lybic_guiagents-0.1.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
82
- lybic_guiagents-0.1.0.dist-info/METADATA,sha256=auqfKz5NVLSGRGAcnCOs-BqOKbNqCR8S17p6f3VSayI,14098
83
- lybic_guiagents-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
84
- lybic_guiagents-0.1.0.dist-info/top_level.txt,sha256=NFP1jNNbbEGUexavwh7g0z_23hahrdgEV_9AjdynSw0,23
85
- lybic_guiagents-0.1.0.dist-info/RECORD,,
98
+ lybic_guiagents-0.2.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
99
+ lybic_guiagents-0.2.0.dist-info/METADATA,sha256=MPPnculu4ChprhxnIO7Q8N3fWh5IE5FSDVhrE5WE6ik,16403
100
+ lybic_guiagents-0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
101
+ lybic_guiagents-0.2.0.dist-info/top_level.txt,sha256=NFP1jNNbbEGUexavwh7g0z_23hahrdgEV_9AjdynSw0,23
102
+ lybic_guiagents-0.2.0.dist-info/RECORD,,