lybic-guiagents 0.3.0__py3-none-any.whl → 0.5.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.
- gui_agents/__init__.py +1 -1
- gui_agents/agents/agent_s.py +73 -25
- gui_agents/agents/global_state.py +13 -1
- gui_agents/agents/grounding.py +19 -4
- gui_agents/agents/manager.py +13 -1
- gui_agents/agents/worker.py +20 -4
- gui_agents/cli_app.py +242 -217
- gui_agents/grpc_app.py +265 -90
- gui_agents/service/agent_service.py +51 -34
- gui_agents/store/registry.py +114 -6
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/METADATA +6 -6
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/RECORD +16 -16
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/WHEEL +0 -0
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/entry_points.txt +0 -0
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/licenses/LICENSE +0 -0
- {lybic_guiagents-0.3.0.dist-info → lybic_guiagents-0.5.0.dist-info}/top_level.txt +0 -0
|
@@ -92,29 +92,41 @@ class AgentService:
|
|
|
92
92
|
|
|
93
93
|
return logger
|
|
94
94
|
|
|
95
|
-
def _get_or_create_agent(self, mode: str, **kwargs) -> Union[AgentS2, AgentSFast]:
|
|
95
|
+
def _get_or_create_agent(self, mode: str, task_id: Optional[str] = None, **kwargs) -> Union[AgentS2, AgentSFast]:
|
|
96
96
|
"""Get or create agent instance based on mode"""
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
# Include task_id in cache key for task isolation when task_id is provided
|
|
98
|
+
if task_id:
|
|
99
|
+
cache_key = f"{mode}_{task_id}_{hash(str(sorted(kwargs.items())))}"
|
|
100
|
+
else:
|
|
101
|
+
cache_key = f"{mode}_{hash(str(sorted(kwargs.items())))}"
|
|
102
|
+
|
|
99
103
|
if cache_key not in self._agents:
|
|
100
104
|
agent_kwargs = {
|
|
101
105
|
'platform': kwargs.get('platform', self.config.default_platform),
|
|
102
106
|
'enable_takeover': kwargs.get('enable_takeover', self.config.enable_takeover),
|
|
103
107
|
'enable_search': kwargs.get('enable_search', self.config.enable_search),
|
|
104
108
|
}
|
|
105
|
-
|
|
109
|
+
|
|
106
110
|
if mode == AgentMode.FAST.value:
|
|
107
111
|
self._agents[cache_key] = AgentSFast(**agent_kwargs)
|
|
108
112
|
else:
|
|
109
113
|
self._agents[cache_key] = AgentS2(**agent_kwargs)
|
|
110
|
-
|
|
114
|
+
|
|
111
115
|
self.logger.debug(f"Created new agent: {mode} with kwargs: {agent_kwargs}")
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
|
|
117
|
+
# Set task_id on the agent for task-specific operations
|
|
118
|
+
agent = self._agents[cache_key]
|
|
119
|
+
if task_id and hasattr(agent, 'set_task_id'):
|
|
120
|
+
agent.set_task_id(task_id)
|
|
121
|
+
|
|
122
|
+
return agent
|
|
114
123
|
|
|
115
|
-
def _get_or_create_hwi(self, backend: str, **kwargs) -> HardwareInterface:
|
|
124
|
+
def _get_or_create_hwi(self, backend: str, task_id: Optional[str] = None, **kwargs) -> HardwareInterface:
|
|
116
125
|
"""Get or create hardware interface instance"""
|
|
117
|
-
|
|
126
|
+
if task_id:
|
|
127
|
+
cache_key = f"{backend}_{task_id}_{hash(str(sorted(kwargs.items())))}"
|
|
128
|
+
else:
|
|
129
|
+
cache_key = f"{backend}_{hash(str(sorted(kwargs.items())))}"
|
|
118
130
|
|
|
119
131
|
if cache_key not in self._hwi_instances:
|
|
120
132
|
# Get backend-specific config
|
|
@@ -134,17 +146,20 @@ class AgentService:
|
|
|
134
146
|
return self._hwi_instances[cache_key]
|
|
135
147
|
|
|
136
148
|
def _setup_global_state(self, task_id: str) -> str:
|
|
137
|
-
"""Setup global state for task execution"""
|
|
149
|
+
"""Setup global state for task execution with task isolation"""
|
|
138
150
|
# Create timestamp-based directory structure like cli_app.py
|
|
139
151
|
datetime_str = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
140
|
-
timestamp_dir = Path(self.config.log_dir) / datetime_str
|
|
152
|
+
timestamp_dir = Path(self.config.log_dir) / f"{datetime_str}_{task_id[:8]}" # Include task_id prefix
|
|
141
153
|
cache_dir = timestamp_dir / "cache" / "screens"
|
|
142
154
|
state_dir = timestamp_dir / "state"
|
|
143
|
-
|
|
155
|
+
|
|
144
156
|
cache_dir.mkdir(parents=True, exist_ok=True)
|
|
145
157
|
state_dir.mkdir(parents=True, exist_ok=True)
|
|
146
|
-
|
|
147
|
-
#
|
|
158
|
+
|
|
159
|
+
# Create task-specific registry
|
|
160
|
+
task_registry = Registry()
|
|
161
|
+
|
|
162
|
+
# Register global state for this task in task-specific registry
|
|
148
163
|
global_state = GlobalState(
|
|
149
164
|
screenshot_dir=str(cache_dir),
|
|
150
165
|
tu_path=str(state_dir / "tu.json"),
|
|
@@ -157,11 +172,16 @@ class AgentService:
|
|
|
157
172
|
display_info_path=str(timestamp_dir / "display.json"),
|
|
158
173
|
agent_log_path=str(timestamp_dir / "agent_log.json")
|
|
159
174
|
)
|
|
160
|
-
|
|
161
|
-
#
|
|
175
|
+
|
|
176
|
+
# Register in task-specific registry using instance method
|
|
162
177
|
registry_key = "GlobalStateStore"
|
|
163
|
-
|
|
164
|
-
|
|
178
|
+
task_registry.register_instance(registry_key, global_state)
|
|
179
|
+
|
|
180
|
+
# Set task registry in thread-local storage
|
|
181
|
+
Registry.set_task_registry(task_id, task_registry)
|
|
182
|
+
|
|
183
|
+
self.logger.info(f"Setup task-specific registry for task {task_id}")
|
|
184
|
+
|
|
165
185
|
return str(timestamp_dir)
|
|
166
186
|
|
|
167
187
|
def _execute_task_internal(self, request: TaskRequest, task_result: TaskResult) -> TaskResult:
|
|
@@ -173,19 +193,21 @@ class AgentService:
|
|
|
173
193
|
# Setup global state
|
|
174
194
|
task_dir = self._setup_global_state(task_result.task_id)
|
|
175
195
|
|
|
176
|
-
# Create agent and hardware interface
|
|
196
|
+
# Create agent and hardware interface with task_id
|
|
177
197
|
agent = self._get_or_create_agent(
|
|
178
198
|
request.mode,
|
|
199
|
+
task_id=task_result.task_id,
|
|
179
200
|
platform=self.config.default_platform,
|
|
180
201
|
enable_takeover=request.enable_takeover,
|
|
181
202
|
enable_search=request.enable_search
|
|
182
203
|
)
|
|
183
|
-
|
|
204
|
+
|
|
184
205
|
hwi = self._get_or_create_hwi(
|
|
185
206
|
request.backend,
|
|
207
|
+
task_id=task_result.task_id,
|
|
186
208
|
**(request.config or {})
|
|
187
209
|
)
|
|
188
|
-
|
|
210
|
+
|
|
189
211
|
# Reset agent state
|
|
190
212
|
agent.reset()
|
|
191
213
|
|
|
@@ -259,22 +281,17 @@ class AgentService:
|
|
|
259
281
|
task_result.mark_failed(error_msg)
|
|
260
282
|
|
|
261
283
|
finally:
|
|
262
|
-
# Cleanup
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
# Registry doesn't have unregister method, we'll use clear or manual removal
|
|
266
|
-
if hasattr(Registry, '_services') and registry_key in Registry._services:
|
|
267
|
-
del Registry._services[registry_key]
|
|
268
|
-
except:
|
|
269
|
-
pass
|
|
284
|
+
# Cleanup task-specific registry
|
|
285
|
+
Registry.remove_task_registry(task_result.task_id)
|
|
286
|
+
self.logger.info(f"Cleaned up task-specific registry for task {task_result.task_id}")
|
|
270
287
|
|
|
271
288
|
return task_result
|
|
272
289
|
|
|
273
|
-
def _run_agent_normal_internal(self, agent, instruction: str, hwi, max_steps: int,
|
|
290
|
+
def _run_agent_normal_internal(self, agent, instruction: str, hwi, max_steps: int,
|
|
274
291
|
enable_takeover: bool, task_id: str):
|
|
275
292
|
"""Run agent in normal mode (adapted from cli_app.py)"""
|
|
276
293
|
# This is a simplified version - you may want to adapt the full logic from cli_app.py
|
|
277
|
-
global_state: GlobalState = Registry.
|
|
294
|
+
global_state: GlobalState = Registry.get_from_context("GlobalStateStore", task_id) # type: ignore
|
|
278
295
|
global_state.set_Tu(instruction)
|
|
279
296
|
global_state.set_running_state("running")
|
|
280
297
|
|
|
@@ -316,10 +333,10 @@ class AgentService:
|
|
|
316
333
|
hwi.dispatchDict(code[0])
|
|
317
334
|
time.sleep(1.0)
|
|
318
335
|
|
|
319
|
-
def _run_agent_fast_internal(self, agent, instruction: str, hwi, max_steps: int,
|
|
320
|
-
|
|
336
|
+
def _run_agent_fast_internal(self, agent, instruction: str, hwi, max_steps: int,
|
|
337
|
+
enable_takeover: bool, task_id: str):
|
|
321
338
|
"""Run agent in fast mode (adapted from cli_app.py)"""
|
|
322
|
-
global_state: GlobalState = Registry.
|
|
339
|
+
global_state: GlobalState = Registry.get_from_context("GlobalStateStore", task_id) # type: ignore
|
|
323
340
|
global_state.set_Tu(instruction)
|
|
324
341
|
global_state.set_running_state("running")
|
|
325
342
|
|
gui_agents/store/registry.py
CHANGED
|
@@ -4,19 +4,127 @@
|
|
|
4
4
|
# from gui_agents.store.registry import Registry
|
|
5
5
|
# GlobalStateStore = Registry.get("GlobalStateStore")
|
|
6
6
|
|
|
7
|
+
import threading
|
|
8
|
+
from typing import Optional, ClassVar
|
|
9
|
+
|
|
10
|
+
|
|
7
11
|
class Registry:
|
|
8
|
-
|
|
12
|
+
"""
|
|
13
|
+
Registry class that supports both global singleton and task-specific instances.
|
|
14
|
+
It uses a process-wide dictionary for task registries to ensure visibility
|
|
15
|
+
across threads, making it compatible with asyncio.to_thread.
|
|
16
|
+
"""
|
|
17
|
+
# For global singletons (backward compatibility)
|
|
18
|
+
_global_services: ClassVar[dict[str, object]] = {}
|
|
19
|
+
_global_lock: ClassVar[threading.RLock] = threading.RLock()
|
|
20
|
+
|
|
21
|
+
# Process-wide storage for task-specific registries, protected by a lock
|
|
22
|
+
_task_registries: ClassVar[dict[str, 'Registry']] = {}
|
|
23
|
+
_task_registries_lock: ClassVar[threading.RLock] = threading.RLock()
|
|
24
|
+
|
|
25
|
+
# Thread-local storage can be used as a cache for faster access
|
|
26
|
+
_thread_local: ClassVar[threading.local] = threading.local()
|
|
27
|
+
|
|
28
|
+
def __init__(self):
|
|
29
|
+
"""Create a new registry instance (for a specific task)."""
|
|
30
|
+
self._services: dict[str, object] = {}
|
|
31
|
+
self._lock = threading.RLock()
|
|
9
32
|
|
|
33
|
+
# ========== Instance methods (for a single registry) ==========
|
|
34
|
+
def register_instance(self, name: str, obj: object):
|
|
35
|
+
"""Register an object in this registry instance."""
|
|
36
|
+
with self._lock:
|
|
37
|
+
self._services[name] = obj
|
|
38
|
+
|
|
39
|
+
def get_instance(self, name: str) -> object:
|
|
40
|
+
"""Get an object from this registry instance."""
|
|
41
|
+
with self._lock:
|
|
42
|
+
if name not in self._services:
|
|
43
|
+
raise KeyError(f"{name!r} not registered in this Registry instance")
|
|
44
|
+
return self._services[name]
|
|
45
|
+
|
|
46
|
+
def clear_instance(self):
|
|
47
|
+
"""Clear all objects in this registry instance."""
|
|
48
|
+
with self._lock:
|
|
49
|
+
self._services.clear()
|
|
50
|
+
|
|
51
|
+
# ========== Class methods for global registry (backward compatibility) ==========
|
|
10
52
|
@classmethod
|
|
11
53
|
def register(cls, name: str, obj: object):
|
|
12
|
-
|
|
54
|
+
"""Register an object in the global registry."""
|
|
55
|
+
with cls._global_lock:
|
|
56
|
+
cls._global_services[name] = obj
|
|
13
57
|
|
|
14
58
|
@classmethod
|
|
15
59
|
def get(cls, name: str) -> object:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
60
|
+
"""Get an object from the global registry."""
|
|
61
|
+
with cls._global_lock:
|
|
62
|
+
if name not in cls._global_services:
|
|
63
|
+
raise KeyError(f"{name!r} not registered in global Registry")
|
|
64
|
+
return cls._global_services[name]
|
|
19
65
|
|
|
20
66
|
@classmethod
|
|
21
67
|
def clear(cls):
|
|
22
|
-
|
|
68
|
+
"""Clear all objects in the global registry."""
|
|
69
|
+
with cls._global_lock:
|
|
70
|
+
cls._global_services.clear()
|
|
71
|
+
|
|
72
|
+
# ========== Task-specific registry management (Process-wide) ==========
|
|
73
|
+
@classmethod
|
|
74
|
+
def set_task_registry(cls, task_id: str, registry: 'Registry'):
|
|
75
|
+
"""Set a task-specific registry, making it visible process-wide."""
|
|
76
|
+
with cls._task_registries_lock:
|
|
77
|
+
cls._task_registries[task_id] = registry
|
|
78
|
+
|
|
79
|
+
# Also set it in thread-local for faster access within the current thread
|
|
80
|
+
if not hasattr(cls._thread_local, 'task_cache'):
|
|
81
|
+
cls._thread_local.task_cache = {}
|
|
82
|
+
cls._thread_local.task_cache[task_id] = registry
|
|
83
|
+
|
|
84
|
+
@classmethod
|
|
85
|
+
def get_task_registry(cls, task_id: str) -> Optional['Registry']:
|
|
86
|
+
"""Get a task-specific registry, checking thread-local cache first."""
|
|
87
|
+
# Check thread-local cache first for performance
|
|
88
|
+
if hasattr(cls._thread_local, 'task_cache'):
|
|
89
|
+
cached_registry = cls._thread_local.task_cache.get(task_id)
|
|
90
|
+
if cached_registry:
|
|
91
|
+
return cached_registry
|
|
92
|
+
|
|
93
|
+
# If not in cache, check the process-wide dictionary
|
|
94
|
+
with cls._task_registries_lock:
|
|
95
|
+
registry = cls._task_registries.get(task_id)
|
|
96
|
+
if registry:
|
|
97
|
+
# Populate cache for subsequent calls in the same thread
|
|
98
|
+
if not hasattr(cls._thread_local, 'task_cache'):
|
|
99
|
+
cls._thread_local.task_cache = {}
|
|
100
|
+
cls._thread_local.task_cache[task_id] = registry
|
|
101
|
+
return registry
|
|
102
|
+
|
|
103
|
+
@classmethod
|
|
104
|
+
def remove_task_registry(cls, task_id: str):
|
|
105
|
+
"""Remove a task-specific registry from process-wide and thread-local storage."""
|
|
106
|
+
# Remove from the main process-wide storage
|
|
107
|
+
with cls._task_registries_lock:
|
|
108
|
+
cls._task_registries.pop(task_id, None)
|
|
109
|
+
|
|
110
|
+
# Remove from the current thread's local cache, if it exists
|
|
111
|
+
if hasattr(cls._thread_local, 'task_cache'):
|
|
112
|
+
cls._thread_local.task_cache.pop(task_id, None)
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def get_from_context(cls, name: str, task_id: Optional[str] = None) -> object:
|
|
116
|
+
"""
|
|
117
|
+
Get an object, trying task-specific registry first, then global registry.
|
|
118
|
+
This is now thread-safe across different threads for the same task_id.
|
|
119
|
+
"""
|
|
120
|
+
# Try task-specific registry first
|
|
121
|
+
if task_id:
|
|
122
|
+
task_registry = cls.get_task_registry(task_id)
|
|
123
|
+
if task_registry:
|
|
124
|
+
try:
|
|
125
|
+
return task_registry.get_instance(name)
|
|
126
|
+
except KeyError:
|
|
127
|
+
pass # Fall back to global registry
|
|
128
|
+
|
|
129
|
+
# Fall back to global registry for CLI mode or if not in task registry
|
|
130
|
+
return cls.get(name)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lybic-guiagents
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.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>
|
|
7
7
|
License-Expression: Apache-2.0
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Requires-Python: >=3.12, <3.
|
|
9
|
+
Requires-Python: >=3.12, <3.15
|
|
10
10
|
Description-Content-Type: text/markdown
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Requires-Dist: dotenv
|
|
@@ -281,11 +281,11 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.8.5/install.ps
|
|
|
281
281
|
# testing uv installation, version should be 0.8.5
|
|
282
282
|
uv --version
|
|
283
283
|
|
|
284
|
-
# 2. Install the python 3.
|
|
285
|
-
uv python install 3.
|
|
284
|
+
# 2. Install the python 3.14
|
|
285
|
+
uv python install 3.14
|
|
286
286
|
|
|
287
287
|
# 3. Create a virtual environment
|
|
288
|
-
uv venv -p 3.
|
|
288
|
+
uv venv -p 3.14
|
|
289
289
|
|
|
290
290
|
# 4. Activate the virtual environment
|
|
291
291
|
# macOS and Linux
|
|
@@ -525,7 +525,7 @@ USE_PRECREATE_VM=Ubuntu
|
|
|
525
525
|
**Problem**: `ModuleNotFoundError` or package import errors.
|
|
526
526
|
|
|
527
527
|
**Solution**:
|
|
528
|
-
- Ensure you're using Python 3.12
|
|
528
|
+
- Ensure you're using Python >= 3.12
|
|
529
529
|
- Activate the virtual environment:
|
|
530
530
|
```bash
|
|
531
531
|
# macOS/Linux
|
|
@@ -51,19 +51,19 @@ 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=
|
|
55
|
-
gui_agents/cli_app.py,sha256=
|
|
56
|
-
gui_agents/grpc_app.py,sha256=
|
|
54
|
+
gui_agents/__init__.py,sha256=L0zKeoSF5AKiLUun6ykq7ZtF4RMh2qNqF6c-lcW3buM,1603
|
|
55
|
+
gui_agents/cli_app.py,sha256=r2xXTl3DFhxaWgZ5VqOA8orVGVaUXvkv83UPkCwB9PY,32004
|
|
56
|
+
gui_agents/grpc_app.py,sha256=y9IZUcinkU0W7wg44eOH2CAj0ivqqobJVtKSnQO5pPc,45349
|
|
57
57
|
gui_agents/agents/Action.py,sha256=aEqkrNtb5TWn5i5nkMBWTN56_9tbfRPEGw2SgkFYKeY,6197
|
|
58
58
|
gui_agents/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
-
gui_agents/agents/agent_s.py,sha256=
|
|
60
|
-
gui_agents/agents/global_state.py,sha256=
|
|
61
|
-
gui_agents/agents/grounding.py,sha256=
|
|
59
|
+
gui_agents/agents/agent_s.py,sha256=TTCLhcHakO83zawc18DdEpGSHOb9QbfBA7eL_CTWc2Y,48512
|
|
60
|
+
gui_agents/agents/global_state.py,sha256=MdHJUOUr0ISOVu4bTrG9qJB14Vvq9lkbYsT-_JV4szY,22774
|
|
61
|
+
gui_agents/agents/grounding.py,sha256=NtyH1X6c9SYnnEgLhbHCWFxMLgPZoYFqsmrHvjSkMKM,26173
|
|
62
62
|
gui_agents/agents/hardware_interface.py,sha256=32auvpVwJ-DimTTCDguM49DEBR4JeFCeHx41Bgv3Svg,5332
|
|
63
|
-
gui_agents/agents/manager.py,sha256=
|
|
63
|
+
gui_agents/agents/manager.py,sha256=HGfl8aa7NNjBffQN-WYeMAH2IQUC-VCagT56auV_r2Y,29487
|
|
64
64
|
gui_agents/agents/stream_manager.py,sha256=FxkM5GtTI4mFRd5rmuvoLSaC2NINVsSfhhREw3VlmUA,6704
|
|
65
65
|
gui_agents/agents/translator.py,sha256=WwWY1ffs2OQuh65DSVjWpfpettJVdmmCI-w92K0JeHg,5171
|
|
66
|
-
gui_agents/agents/worker.py,sha256=
|
|
66
|
+
gui_agents/agents/worker.py,sha256=iX4vQK19x7w9k-hLEFvvgrecybXSCtOf17NMOrhn3uA,18735
|
|
67
67
|
gui_agents/agents/Backend/ADBBackend.py,sha256=J8WeFFLEPh05FmFKuGz72wgcKdKQT9kLUCHyEb8mRkk,2151
|
|
68
68
|
gui_agents/agents/Backend/Backend.py,sha256=Aou3gBfur0AqL_bMn9FFeLTBM4CfL5aiIRivjqaB6zk,978
|
|
69
69
|
gui_agents/agents/Backend/LybicBackend.py,sha256=mDjvP3Rx1cjuWkFN0X9QiWWeqBnfepUHGwDIsCmI_As,14069
|
|
@@ -79,12 +79,12 @@ gui_agents/prompts/prompts.py,sha256=w9ZP4FhuBDzWP7J0Urn69woLhas9AIWTtNfC1tys59c
|
|
|
79
79
|
gui_agents/proto/__init__.py,sha256=_PORrnlylDiijb0s_soqgb1REm1eqXOtSmo0Oah4KRM,85
|
|
80
80
|
gui_agents/proto/pb/__init__.py,sha256=UbJYRSLmdZrc2F6ou4dkvgGb4Y0YDObcwftmJCE3fC0,96
|
|
81
81
|
gui_agents/service/__init__.py,sha256=5WsJ0Mx3e5BAP9qQMhoVimhOgTIndGeVcasGNoo1s-c,518
|
|
82
|
-
gui_agents/service/agent_service.py,sha256=
|
|
82
|
+
gui_agents/service/agent_service.py,sha256=5Tuz0JotHWPHNx5mnE1KciKH8IVlnKgoV44Fk_KRCDk,21774
|
|
83
83
|
gui_agents/service/api_models.py,sha256=06iFyaV6ttROsNiS2GnAAaB4kR1XNpSRuUHD2W60L8o,3949
|
|
84
84
|
gui_agents/service/config.py,sha256=WODT8RpaMFQ_oSshfDWsq_M8inPMHTlWYjoFoRpn6FY,8595
|
|
85
85
|
gui_agents/service/exceptions.py,sha256=Tk3U4eycX-wuAqR0B-TthBESKyu8KuwH5Ksng0v4juo,831
|
|
86
86
|
gui_agents/store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
|
-
gui_agents/store/registry.py,sha256=
|
|
87
|
+
gui_agents/store/registry.py,sha256=hJj4ECEnoQQ7IGONeshdI2lEc4Z30QTN-X_gjAs_dXY,5358
|
|
88
88
|
gui_agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
89
|
gui_agents/tools/model.md,sha256=xeEuG3sBFu5j614V6alVk7l7JZmEewLniEg1hh7qA6Y,5553
|
|
90
90
|
gui_agents/tools/tools.py,sha256=mPWed16cbGvje49M405qi0WVHh1qNxQkW5ojLz9Ac9Y,30785
|
|
@@ -101,9 +101,9 @@ gui_agents/utils/common_utils.py,sha256=lfWg7SrGfEnu9ZS9AWP3GKhbeTbaSZ6F9oh6U_qC
|
|
|
101
101
|
gui_agents/utils/display_viewer.py,sha256=hL6Pf-wpoQrrYeOi6eaGnCorkAvGWNzkLIuM9yIudnk,8731
|
|
102
102
|
gui_agents/utils/embedding_manager.py,sha256=7QFITe9l0z8OKHT-yqx-BGwVMj4BRL2iJ13PgJ2-Yak,2117
|
|
103
103
|
gui_agents/utils/image_axis_utils.py,sha256=z21cVAE2ZOK1DR7wK10JHg8aZapkX2oGI6D93pKZEao,878
|
|
104
|
-
lybic_guiagents-0.
|
|
105
|
-
lybic_guiagents-0.
|
|
106
|
-
lybic_guiagents-0.
|
|
107
|
-
lybic_guiagents-0.
|
|
108
|
-
lybic_guiagents-0.
|
|
109
|
-
lybic_guiagents-0.
|
|
104
|
+
lybic_guiagents-0.5.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
105
|
+
lybic_guiagents-0.5.0.dist-info/METADATA,sha256=dVElMdXMT0ldPLSUUY6Y_RLHG8UpNq3yF6KhC3hJF5M,23802
|
|
106
|
+
lybic_guiagents-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
107
|
+
lybic_guiagents-0.5.0.dist-info/entry_points.txt,sha256=n8OTYmXL0QPhSFUz-StUmhf0cpdL7Qcaeg5BWe7MiL4,106
|
|
108
|
+
lybic_guiagents-0.5.0.dist-info/top_level.txt,sha256=NFP1jNNbbEGUexavwh7g0z_23hahrdgEV_9AjdynSw0,23
|
|
109
|
+
lybic_guiagents-0.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|