oagi-core 0.9.1__py3-none-any.whl → 0.9.2__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.
- oagi/agent/default.py +4 -4
- oagi/agent/tasker/planner.py +11 -2
- oagi/agent/tasker/taskee_agent.py +11 -11
- oagi/agent/tasker/tasker_agent.py +6 -6
- oagi/cli/agent.py +8 -6
- oagi/cli/utils.py +11 -4
- oagi/client/base.py +3 -7
- oagi/handler/_macos.py +55 -0
- oagi/handler/pyautogui_action_handler.py +12 -2
- oagi/server/config.py +3 -3
- oagi/server/models.py +1 -1
- oagi/server/socketio_server.py +1 -1
- oagi/task/async_.py +2 -2
- oagi/task/async_short.py +1 -1
- oagi/task/short.py +1 -1
- oagi/task/sync.py +2 -2
- {oagi_core-0.9.1.dist-info → oagi_core-0.9.2.dist-info}/METADATA +2 -1
- {oagi_core-0.9.1.dist-info → oagi_core-0.9.2.dist-info}/RECORD +21 -20
- {oagi_core-0.9.1.dist-info → oagi_core-0.9.2.dist-info}/WHEEL +0 -0
- {oagi_core-0.9.1.dist-info → oagi_core-0.9.2.dist-info}/entry_points.txt +0 -0
- {oagi_core-0.9.1.dist-info → oagi_core-0.9.2.dist-info}/licenses/LICENSE +0 -0
oagi/agent/default.py
CHANGED
|
@@ -25,9 +25,9 @@ class AsyncDefaultAgent:
|
|
|
25
25
|
self,
|
|
26
26
|
api_key: str | None = None,
|
|
27
27
|
base_url: str | None = None,
|
|
28
|
-
model: str = "lux-
|
|
29
|
-
max_steps: int =
|
|
30
|
-
temperature: float | None =
|
|
28
|
+
model: str = "lux-actor-1",
|
|
29
|
+
max_steps: int = 20,
|
|
30
|
+
temperature: float | None = 0.5,
|
|
31
31
|
step_observer: AsyncStepObserver | None = None,
|
|
32
32
|
):
|
|
33
33
|
self.api_key = api_key
|
|
@@ -63,7 +63,7 @@ class AsyncDefaultAgent:
|
|
|
63
63
|
logger.info(f"Step {i + 1}: {step.reason}")
|
|
64
64
|
|
|
65
65
|
# Notify observer if present
|
|
66
|
-
if self.step_observer
|
|
66
|
+
if self.step_observer:
|
|
67
67
|
await self.step_observer.on_step(i + 1, step.reason, step.actions)
|
|
68
68
|
|
|
69
69
|
# Execute actions if any
|
oagi/agent/tasker/planner.py
CHANGED
|
@@ -20,19 +20,28 @@ class Planner:
|
|
|
20
20
|
This class provides planning and reflection capabilities using OAGI workers.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
def __init__(
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
client: AsyncClient | None = None,
|
|
26
|
+
api_key: str | None = None,
|
|
27
|
+
base_url: str | None = None,
|
|
28
|
+
):
|
|
24
29
|
"""Initialize the planner.
|
|
25
30
|
|
|
26
31
|
Args:
|
|
27
32
|
client: AsyncClient for OAGI API calls. If None, one will be created when needed.
|
|
33
|
+
api_key: API key for creating internal client
|
|
34
|
+
base_url: Base URL for creating internal client
|
|
28
35
|
"""
|
|
29
36
|
self.client = client
|
|
37
|
+
self.api_key = api_key
|
|
38
|
+
self.base_url = base_url
|
|
30
39
|
self._owns_client = False # Track if we created the client
|
|
31
40
|
|
|
32
41
|
def _ensure_client(self) -> AsyncClient:
|
|
33
42
|
"""Ensure we have a client, creating one if needed."""
|
|
34
43
|
if not self.client:
|
|
35
|
-
self.client = AsyncClient()
|
|
44
|
+
self.client = AsyncClient(api_key=self.api_key, base_url=self.base_url)
|
|
36
45
|
self._owns_client = True
|
|
37
46
|
return self.client
|
|
38
47
|
|
|
@@ -35,10 +35,10 @@ class TaskeeAgent(AsyncAgent):
|
|
|
35
35
|
self,
|
|
36
36
|
api_key: str | None = None,
|
|
37
37
|
base_url: str | None = None,
|
|
38
|
-
model: str = "lux-
|
|
39
|
-
max_steps_per_subtask: int =
|
|
40
|
-
reflection_interval: int =
|
|
41
|
-
temperature: float = 0.
|
|
38
|
+
model: str = "lux-actor-1",
|
|
39
|
+
max_steps_per_subtask: int = 20,
|
|
40
|
+
reflection_interval: int = 4,
|
|
41
|
+
temperature: float = 0.5,
|
|
42
42
|
planner: Planner | None = None,
|
|
43
43
|
external_memory: PlannerMemory | None = None,
|
|
44
44
|
todo_index: int | None = None,
|
|
@@ -64,7 +64,7 @@ class TaskeeAgent(AsyncAgent):
|
|
|
64
64
|
self.max_steps_per_subtask = max_steps_per_subtask
|
|
65
65
|
self.reflection_interval = reflection_interval
|
|
66
66
|
self.temperature = temperature
|
|
67
|
-
self.planner = planner or Planner()
|
|
67
|
+
self.planner = planner or Planner(api_key=api_key, base_url=base_url)
|
|
68
68
|
self.external_memory = external_memory
|
|
69
69
|
self.todo_index = todo_index
|
|
70
70
|
self.step_observer = step_observer
|
|
@@ -235,6 +235,12 @@ class TaskeeAgent(AsyncAgent):
|
|
|
235
235
|
if step.reason:
|
|
236
236
|
logger.info(f"Step {self.total_actions + 1}: {step.reason}")
|
|
237
237
|
|
|
238
|
+
# Notify observer if present
|
|
239
|
+
if self.step_observer:
|
|
240
|
+
await self.step_observer.on_step(
|
|
241
|
+
self.total_actions + 1, step.reason, step.actions
|
|
242
|
+
)
|
|
243
|
+
|
|
238
244
|
# Record OAGI actions
|
|
239
245
|
if step.actions:
|
|
240
246
|
# Log actions with details
|
|
@@ -256,12 +262,6 @@ class TaskeeAgent(AsyncAgent):
|
|
|
256
262
|
reasoning=step.reason,
|
|
257
263
|
)
|
|
258
264
|
|
|
259
|
-
# Notify observer if present
|
|
260
|
-
if self.step_observer:
|
|
261
|
-
await self.step_observer.on_step(
|
|
262
|
-
self.total_actions + 1, step.reason, step.actions
|
|
263
|
-
)
|
|
264
|
-
|
|
265
265
|
# Execute actions
|
|
266
266
|
await action_handler(step.actions)
|
|
267
267
|
self.total_actions += len(step.actions)
|
|
@@ -34,10 +34,10 @@ class TaskerAgent(AsyncAgent):
|
|
|
34
34
|
self,
|
|
35
35
|
api_key: str | None = None,
|
|
36
36
|
base_url: str | None = None,
|
|
37
|
-
model: str = "lux-
|
|
38
|
-
max_steps: int =
|
|
39
|
-
temperature: float = 0.
|
|
40
|
-
reflection_interval: int =
|
|
37
|
+
model: str = "lux-actor-1",
|
|
38
|
+
max_steps: int = 60,
|
|
39
|
+
temperature: float = 0.5,
|
|
40
|
+
reflection_interval: int = 4,
|
|
41
41
|
planner: Planner | None = None,
|
|
42
42
|
step_observer: AsyncStepObserver | None = None,
|
|
43
43
|
):
|
|
@@ -59,7 +59,7 @@ class TaskerAgent(AsyncAgent):
|
|
|
59
59
|
self.max_steps = max_steps
|
|
60
60
|
self.temperature = temperature
|
|
61
61
|
self.reflection_interval = reflection_interval
|
|
62
|
-
self.planner = planner or Planner()
|
|
62
|
+
self.planner = planner or Planner(api_key=api_key, base_url=base_url)
|
|
63
63
|
self.step_observer = step_observer
|
|
64
64
|
|
|
65
65
|
# Memory for tracking workflow
|
|
@@ -171,7 +171,7 @@ class TaskerAgent(AsyncAgent):
|
|
|
171
171
|
api_key=self.api_key,
|
|
172
172
|
base_url=self.base_url,
|
|
173
173
|
model=self.model,
|
|
174
|
-
max_steps_per_subtask=
|
|
174
|
+
max_steps_per_subtask=20, # Smaller steps per subtask
|
|
175
175
|
reflection_interval=self.reflection_interval,
|
|
176
176
|
temperature=self.temperature,
|
|
177
177
|
planner=self.planner,
|
oagi/cli/agent.py
CHANGED
|
@@ -30,12 +30,14 @@ def add_agent_parser(subparsers: argparse._SubParsersAction) -> None:
|
|
|
30
30
|
run_parser.add_argument(
|
|
31
31
|
"instruction", type=str, help="Task instruction for the agent to execute"
|
|
32
32
|
)
|
|
33
|
-
run_parser.add_argument("--model", type=str, help="Model to use (default: lux-v1)")
|
|
34
33
|
run_parser.add_argument(
|
|
35
|
-
"--
|
|
34
|
+
"--model", type=str, help="Model to use (default: lux-actor-1)"
|
|
36
35
|
)
|
|
37
36
|
run_parser.add_argument(
|
|
38
|
-
"--
|
|
37
|
+
"--max-steps", type=int, help="Maximum number of steps (default: 20)"
|
|
38
|
+
)
|
|
39
|
+
run_parser.add_argument(
|
|
40
|
+
"--temperature", type=float, help="Sampling temperature (default: 0.5)"
|
|
39
41
|
)
|
|
40
42
|
run_parser.add_argument(
|
|
41
43
|
"--mode",
|
|
@@ -79,9 +81,9 @@ def run_agent(args: argparse.Namespace) -> None:
|
|
|
79
81
|
base_url = args.oagi_base_url or os.getenv(
|
|
80
82
|
"OAGI_BASE_URL", "https://api.agiopen.org"
|
|
81
83
|
)
|
|
82
|
-
model = args.model or "lux-
|
|
83
|
-
max_steps = args.max_steps or
|
|
84
|
-
temperature = args.temperature if args.temperature is not None else 0.
|
|
84
|
+
model = args.model or "lux-actor-1"
|
|
85
|
+
max_steps = args.max_steps or 20
|
|
86
|
+
temperature = args.temperature if args.temperature is not None else 0.5
|
|
85
87
|
mode = args.mode or "actor"
|
|
86
88
|
|
|
87
89
|
# Create step tracker
|
oagi/cli/utils.py
CHANGED
|
@@ -15,10 +15,16 @@ from oagi.exceptions import check_optional_dependency
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def get_sdk_version() -> str:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
# Try oagi-core first (development install), then oagi (metapackage install)
|
|
19
|
+
for package_name in ["oagi-core", "oagi"]:
|
|
20
|
+
try:
|
|
21
|
+
version = get_version(package_name)
|
|
22
|
+
# Skip if version is 0.0.0 (placeholder/invalid)
|
|
23
|
+
if version != "0.0.0":
|
|
24
|
+
return version
|
|
25
|
+
except Exception:
|
|
26
|
+
continue
|
|
27
|
+
return "unknown"
|
|
22
28
|
|
|
23
29
|
|
|
24
30
|
def display_version() -> None:
|
|
@@ -50,6 +56,7 @@ def display_config() -> None:
|
|
|
50
56
|
config_vars = {
|
|
51
57
|
"OAGI_API_KEY": os.getenv("OAGI_API_KEY", ""),
|
|
52
58
|
"OAGI_BASE_URL": os.getenv("OAGI_BASE_URL", "https://api.agiopen.org"),
|
|
59
|
+
"OAGI_DEFAULT_MODEL": os.getenv("OAGI_DEFAULT_MODEL", "lux-actor-1"),
|
|
53
60
|
"OAGI_LOG_LEVEL": os.getenv("OAGI_LOG_LEVEL", "INFO"),
|
|
54
61
|
"OAGI_SERVER_HOST": os.getenv("OAGI_SERVER_HOST", "0.0.0.0"),
|
|
55
62
|
"OAGI_SERVER_PORT": os.getenv("OAGI_SERVER_PORT", "8000"),
|
oagi/client/base.py
CHANGED
|
@@ -41,16 +41,12 @@ class BaseClient(Generic[HttpClientT]):
|
|
|
41
41
|
|
|
42
42
|
def __init__(self, base_url: str | None = None, api_key: str | None = None):
|
|
43
43
|
# Get from environment if not provided
|
|
44
|
-
self.base_url =
|
|
44
|
+
self.base_url = (
|
|
45
|
+
base_url or os.getenv("OAGI_BASE_URL") or "https://api.agiopen.org"
|
|
46
|
+
)
|
|
45
47
|
self.api_key = api_key or os.getenv("OAGI_API_KEY")
|
|
46
48
|
|
|
47
49
|
# Validate required configuration
|
|
48
|
-
if not self.base_url:
|
|
49
|
-
raise ConfigurationError(
|
|
50
|
-
"OAGI base URL must be provided either as 'base_url' parameter or "
|
|
51
|
-
"OAGI_BASE_URL environment variable"
|
|
52
|
-
)
|
|
53
|
-
|
|
54
50
|
if not self.api_key:
|
|
55
51
|
raise ConfigurationError(
|
|
56
52
|
"OAGI API key must be provided either as 'api_key' parameter or "
|
oagi/handler/_macos.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# -----------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) OpenAGI Foundation
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# This file is part of the official API project.
|
|
6
|
+
# Licensed under the MIT License.
|
|
7
|
+
# -----------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
import pyautogui
|
|
10
|
+
|
|
11
|
+
from ..exceptions import check_optional_dependency
|
|
12
|
+
|
|
13
|
+
check_optional_dependency("Quartz", "macOS multiple clicks", "desktop")
|
|
14
|
+
import Quartz # noqa: E402
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def macos_click(x: int, y: int, clicks: int = 1) -> None:
|
|
18
|
+
"""
|
|
19
|
+
Execute a mouse click sequence on macOS with correct click state.
|
|
20
|
+
|
|
21
|
+
This avoids the PyAutoGUI bug where multi-clicks are sent as separate
|
|
22
|
+
single clicks (clickState=1), which macOS interprets as distinct events
|
|
23
|
+
rather than double/triple clicks.
|
|
24
|
+
|
|
25
|
+
Check https://github.com/asweigart/pyautogui/issues/672
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
x: X coordinate
|
|
29
|
+
y: Y coordinate
|
|
30
|
+
clicks: Number of clicks (1=single, 2=double, 3=triple)
|
|
31
|
+
"""
|
|
32
|
+
# Move to position first using pyautogui to ensure consistency
|
|
33
|
+
pyautogui.moveTo(x, y)
|
|
34
|
+
|
|
35
|
+
point = Quartz.CGPoint(x=x, y=y)
|
|
36
|
+
|
|
37
|
+
# Create and post events for each click in the sequence
|
|
38
|
+
for i in range(1, clicks + 1):
|
|
39
|
+
# Create Down/Up events
|
|
40
|
+
mouse_down = Quartz.CGEventCreateMouseEvent(
|
|
41
|
+
None, Quartz.kCGEventLeftMouseDown, point, Quartz.kCGMouseButtonLeft
|
|
42
|
+
)
|
|
43
|
+
mouse_up = Quartz.CGEventCreateMouseEvent(
|
|
44
|
+
None, Quartz.kCGEventLeftMouseUp, point, Quartz.kCGMouseButtonLeft
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Set the click state (1 for first click, 2 for second, etc.)
|
|
48
|
+
Quartz.CGEventSetIntegerValueField(
|
|
49
|
+
mouse_down, Quartz.kCGMouseEventClickState, i
|
|
50
|
+
)
|
|
51
|
+
Quartz.CGEventSetIntegerValueField(mouse_up, Quartz.kCGMouseEventClickState, i)
|
|
52
|
+
|
|
53
|
+
# Post events
|
|
54
|
+
Quartz.CGEventPost(Quartz.kCGHIDEventTap, mouse_down)
|
|
55
|
+
Quartz.CGEventPost(Quartz.kCGHIDEventTap, mouse_up)
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
# -----------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
import re
|
|
10
|
+
import sys
|
|
10
11
|
import time
|
|
11
12
|
|
|
12
13
|
from pydantic import BaseModel, Field
|
|
@@ -17,6 +18,9 @@ from ..types import Action, ActionType
|
|
|
17
18
|
check_optional_dependency("pyautogui", "PyautoguiActionHandler", "desktop")
|
|
18
19
|
import pyautogui # noqa: E402
|
|
19
20
|
|
|
21
|
+
if sys.platform == "darwin":
|
|
22
|
+
from . import _macos
|
|
23
|
+
|
|
20
24
|
|
|
21
25
|
class CapsLockManager:
|
|
22
26
|
"""Manages caps lock state for text transformation."""
|
|
@@ -186,11 +190,17 @@ class PyautoguiActionHandler:
|
|
|
186
190
|
|
|
187
191
|
case ActionType.LEFT_DOUBLE:
|
|
188
192
|
x, y = self._parse_coords(arg)
|
|
189
|
-
|
|
193
|
+
if sys.platform == "darwin":
|
|
194
|
+
_macos.macos_click(x, y, clicks=2)
|
|
195
|
+
else:
|
|
196
|
+
pyautogui.doubleClick(x, y)
|
|
190
197
|
|
|
191
198
|
case ActionType.LEFT_TRIPLE:
|
|
192
199
|
x, y = self._parse_coords(arg)
|
|
193
|
-
|
|
200
|
+
if sys.platform == "darwin":
|
|
201
|
+
_macos.macos_click(x, y, clicks=3)
|
|
202
|
+
else:
|
|
203
|
+
pyautogui.tripleClick(x, y)
|
|
194
204
|
|
|
195
205
|
case ActionType.RIGHT_SINGLE:
|
|
196
206
|
x, y = self._parse_coords(arg)
|
oagi/server/config.py
CHANGED
|
@@ -28,11 +28,11 @@ class ServerConfig(BaseSettings):
|
|
|
28
28
|
session_timeout_seconds: float = Field(default=10.0)
|
|
29
29
|
|
|
30
30
|
# Model settings
|
|
31
|
-
default_model: str = Field(default="lux-
|
|
32
|
-
default_temperature: float = Field(default=0.
|
|
31
|
+
default_model: str = Field(default="lux-actor-1", alias="OAGI_DEFAULT_MODEL")
|
|
32
|
+
default_temperature: float = Field(default=0.5, ge=0.0, le=2.0)
|
|
33
33
|
|
|
34
34
|
# Agent settings
|
|
35
|
-
max_steps: int = Field(default=
|
|
35
|
+
max_steps: int = Field(default=20, alias="OAGI_MAX_STEPS", ge=1, le=100)
|
|
36
36
|
|
|
37
37
|
# Socket.IO settings
|
|
38
38
|
socketio_path: str = Field(default="/socket.io")
|
oagi/server/models.py
CHANGED
|
@@ -75,7 +75,7 @@ class ScreenshotResponseData(BaseModel):
|
|
|
75
75
|
|
|
76
76
|
# Action acknowledgement
|
|
77
77
|
class ActionAckData(BaseModel):
|
|
78
|
-
|
|
78
|
+
index: int = Field(...)
|
|
79
79
|
success: bool = Field(...)
|
|
80
80
|
error: str | None = Field(None)
|
|
81
81
|
execution_time_ms: int | None = Field(None)
|
oagi/server/socketio_server.py
CHANGED
|
@@ -224,7 +224,7 @@ class SessionNamespace(socketio.AsyncNamespace):
|
|
|
224
224
|
# Emit finish event
|
|
225
225
|
await self.call(
|
|
226
226
|
"finish",
|
|
227
|
-
FinishEventData(
|
|
227
|
+
FinishEventData(index=0, total=1).model_dump(),
|
|
228
228
|
to=session.socket_id,
|
|
229
229
|
timeout=self.config.socketio_timeout,
|
|
230
230
|
)
|
oagi/task/async_.py
CHANGED
|
@@ -23,7 +23,7 @@ class AsyncActor(BaseTask):
|
|
|
23
23
|
self,
|
|
24
24
|
api_key: str | None = None,
|
|
25
25
|
base_url: str | None = None,
|
|
26
|
-
model: str = "
|
|
26
|
+
model: str = "lux-actor-1",
|
|
27
27
|
temperature: float | None = None,
|
|
28
28
|
):
|
|
29
29
|
super().__init__(api_key, base_url, model, temperature)
|
|
@@ -110,7 +110,7 @@ class AsyncTask(AsyncActor):
|
|
|
110
110
|
self,
|
|
111
111
|
api_key: str | None = None,
|
|
112
112
|
base_url: str | None = None,
|
|
113
|
-
model: str = "
|
|
113
|
+
model: str = "lux-actor-1",
|
|
114
114
|
temperature: float | None = None,
|
|
115
115
|
):
|
|
116
116
|
warnings.warn(
|
oagi/task/async_short.py
CHANGED
oagi/task/short.py
CHANGED
oagi/task/sync.py
CHANGED
|
@@ -23,7 +23,7 @@ class Actor(BaseTask):
|
|
|
23
23
|
self,
|
|
24
24
|
api_key: str | None = None,
|
|
25
25
|
base_url: str | None = None,
|
|
26
|
-
model: str = "
|
|
26
|
+
model: str = "lux-actor-1",
|
|
27
27
|
temperature: float | None = None,
|
|
28
28
|
):
|
|
29
29
|
super().__init__(api_key, base_url, model, temperature)
|
|
@@ -110,7 +110,7 @@ class Task(Actor):
|
|
|
110
110
|
self,
|
|
111
111
|
api_key: str | None = None,
|
|
112
112
|
base_url: str | None = None,
|
|
113
|
-
model: str = "
|
|
113
|
+
model: str = "lux-actor-1",
|
|
114
114
|
temperature: float | None = None,
|
|
115
115
|
):
|
|
116
116
|
warnings.warn(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: oagi-core
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: Official API of OpenAGI Foundation
|
|
5
5
|
Project-URL: Homepage, https://github.com/agiopen-org/oagi
|
|
6
6
|
Author-email: OpenAGI Foundation <contact@agiopen.org>
|
|
@@ -32,6 +32,7 @@ Requires-Dist: rich>=13.0.0
|
|
|
32
32
|
Provides-Extra: desktop
|
|
33
33
|
Requires-Dist: pillow>=11.3.0; extra == 'desktop'
|
|
34
34
|
Requires-Dist: pyautogui>=0.9.54; extra == 'desktop'
|
|
35
|
+
Requires-Dist: pyobjc-framework-quartz>=9.0; (sys_platform == 'darwin') and extra == 'desktop'
|
|
35
36
|
Provides-Extra: server
|
|
36
37
|
Requires-Dist: fastapi[standard]>=0.115.0; extra == 'server'
|
|
37
38
|
Requires-Dist: pydantic-settings>=2.0.0; extra == 'server'
|
|
@@ -2,46 +2,47 @@ oagi/__init__.py,sha256=cSqJ61OyscGJLHBCn53cS4PrCKC4DQl5xRDNkGR0TXo,3041
|
|
|
2
2
|
oagi/exceptions.py,sha256=Rco37GQTPYUfc2vRO3hozxPF_s8mKFDpFvBg2UKWo3Y,3066
|
|
3
3
|
oagi/logging.py,sha256=YT3KCMFj5fzO98R9xlDDgfSotUuz1xRD6OZeYM2rKoo,1760
|
|
4
4
|
oagi/agent/__init__.py,sha256=JU9zuWuDzpzitsVJB4z5ddvx8RMm5nbP-bjUCL1Sfvo,834
|
|
5
|
-
oagi/agent/default.py,sha256=
|
|
5
|
+
oagi/agent/default.py,sha256=0rnv-ZY5Gs4o25B6eVb1BFrOKWgNFo0TobLicNDkiHM,3095
|
|
6
6
|
oagi/agent/factories.py,sha256=eE0hcXyJX4dk2nvRRlEvQPJqkBraeIaT7nXiED2lH_Q,1605
|
|
7
7
|
oagi/agent/protocol.py,sha256=IQJGiMN4yZIacrh5e9JQsoM9TyHb8wJRQR4LAk8dSA0,1615
|
|
8
8
|
oagi/agent/registry.py,sha256=4oG65E_bV47Xl6F-HX9KaVoV0pcoC1uRRDU4RT_m3uU,4841
|
|
9
9
|
oagi/agent/tasker/__init__.py,sha256=faOC5ONY8ZKr4CjofC6HYg1WKWc1UiaGB9VHy8W280M,800
|
|
10
10
|
oagi/agent/tasker/memory.py,sha256=JsJjUMpnJoKW4VFzd8FI4M-FhnEihTecL61KVgO_YBI,6051
|
|
11
11
|
oagi/agent/tasker/models.py,sha256=VzvHB5hLv6qyYcyNiojVIEDlTzeGE4Quswk4EVIbzoI,2180
|
|
12
|
-
oagi/agent/tasker/planner.py,sha256=
|
|
13
|
-
oagi/agent/tasker/taskee_agent.py,sha256=
|
|
14
|
-
oagi/agent/tasker/tasker_agent.py,sha256=
|
|
12
|
+
oagi/agent/tasker/planner.py,sha256=PGBSMMpADSSWCcGnCPYm1TbxDgcqXLC_IKMzhQIGYn4,13972
|
|
13
|
+
oagi/agent/tasker/taskee_agent.py,sha256=LzjsD0NQlGiKoHZGirmcJNHV46kmWK-njoup-YVgzwQ,14111
|
|
14
|
+
oagi/agent/tasker/tasker_agent.py,sha256=jxXAopGEUQu7OB4jU8PDTMOBxwnRbOSEmBTLURK7X7M,10992
|
|
15
15
|
oagi/cli/__init__.py,sha256=aDnJViTseShpo5fdGPTj-ELysZhmdvB6Z8mEj2D-_N4,359
|
|
16
|
-
oagi/cli/agent.py,sha256=
|
|
16
|
+
oagi/cli/agent.py,sha256=UdAhKeXTQTC3TIfrugUblTnQ7vZ9e069EAFJlJvt1PE,4477
|
|
17
17
|
oagi/cli/display.py,sha256=rkAxuHa40ZtKdmvwARev1rgyfsNyVvQ-J6RdjOZIPwc,1729
|
|
18
18
|
oagi/cli/main.py,sha256=faHns0HaQCGyylDn2YZLpjQESuEiMYjoQVoMkt8FsH4,2292
|
|
19
19
|
oagi/cli/server.py,sha256=Z1ic8r55yaeQBFRCsMNZStC1jRiJdnDGqe9On9LmFzQ,3031
|
|
20
20
|
oagi/cli/tracking.py,sha256=jPH6QDUUwnfZ8bjQU6deofBmBflTEOOCINwinQJz9OI,1147
|
|
21
|
-
oagi/cli/utils.py,sha256=
|
|
21
|
+
oagi/cli/utils.py,sha256=BI6C7WvC51NBsXEsjDONjSNwqdD4i0nHA_rsfpyLwmA,2986
|
|
22
22
|
oagi/client/__init__.py,sha256=F9DShPUdb6vZYmN1fpM1VYzp4MWqUao_e_R1KYmM4Q4,410
|
|
23
23
|
oagi/client/async_.py,sha256=t-GPHcz6xbHx_RPFv1V_hwZ1_f-O9ONH-Ahr0w-Nz8M,11046
|
|
24
|
-
oagi/client/base.py,sha256=
|
|
24
|
+
oagi/client/base.py,sha256=4ZfhouEyIcldStJG5ipxpxpD6iVRGrMUZruQX0WKiXE,16934
|
|
25
25
|
oagi/client/sync.py,sha256=QKd6nTUXtyn1Am8YlFcpsoLh1KuHhQgbMemIkb7r39g,10882
|
|
26
26
|
oagi/handler/__init__.py,sha256=Ha11L42K33K3L9S4lQ10UC0DnD5g6egtQUsJpS_tKgg,835
|
|
27
|
+
oagi/handler/_macos.py,sha256=aHkp-xGzvWL_SBjuS690i9jf93OITFJfGHzHeYCK65I,1957
|
|
27
28
|
oagi/handler/async_pyautogui_action_handler.py,sha256=hQzseR1yBD0QMpgsEVNsUmuApGVAIIyGYD06BXd82Dc,1615
|
|
28
29
|
oagi/handler/async_screenshot_maker.py,sha256=8QCtUV59ozpOpvkqhUMb8QDI2qje2gsoFT1qB60tfJM,1689
|
|
29
30
|
oagi/handler/pil_image.py,sha256=yUcAoGBL-aZ0PCjSaAmQsDwtyzjldXHqXQp_OYRk6e4,4080
|
|
30
|
-
oagi/handler/pyautogui_action_handler.py,sha256=
|
|
31
|
+
oagi/handler/pyautogui_action_handler.py,sha256=8jXF7Muc68JVjJY-cGUQN58WO44bCwI6AIc0mkEV5Nw,10272
|
|
31
32
|
oagi/handler/screenshot_maker.py,sha256=j1jTW-awx3vAnb1N5_FIMBC0Z-rNVQbiBP-S6Gh5dlE,1284
|
|
32
33
|
oagi/server/__init__.py,sha256=uZx8u3vJUb87kkNzwmmVrgAgbqRu0WxyMIQCLSx56kk,452
|
|
33
34
|
oagi/server/agent_wrappers.py,sha256=4f6ZKvqy9TDA57QRHGjAQVhpHmPE5QNeewmmURg5Ajo,3288
|
|
34
|
-
oagi/server/config.py,sha256=
|
|
35
|
+
oagi/server/config.py,sha256=2gJ-pDpYAxNUubwSsGKOieGcOtNX9b5YGuSqtf6g2P0,1607
|
|
35
36
|
oagi/server/main.py,sha256=jnTxk7Prc5CzlsUnkBNJp4MOoYN-7HN_Be_m1d3COa8,4829
|
|
36
|
-
oagi/server/models.py,sha256=
|
|
37
|
+
oagi/server/models.py,sha256=m04q03thCPMCrY1Urgc3t6yAvuy8XK4jQBa3Z-3iWWg,2588
|
|
37
38
|
oagi/server/session_store.py,sha256=UI14NiApAwvZWmMOG4SvPE2WkbGkNTHToZhTXQjN2_U,3624
|
|
38
|
-
oagi/server/socketio_server.py,sha256=
|
|
39
|
+
oagi/server/socketio_server.py,sha256=NFw5Zu7yCFLW-gOu9OX8k6mNFaCN2jtX1Tob_9w5YM0,14344
|
|
39
40
|
oagi/task/__init__.py,sha256=g_8_7ZLDLKuCGzyrB42OzY3gSOjd_SxzkJW3_pf-PXs,662
|
|
40
|
-
oagi/task/async_.py,sha256=
|
|
41
|
-
oagi/task/async_short.py,sha256=
|
|
41
|
+
oagi/task/async_.py,sha256=u1vJKkyRzxmnwbMxj0GekLkH6cRCKDZQAy_5myjBUb8,3916
|
|
42
|
+
oagi/task/async_short.py,sha256=tyJb0onY5FASMvhsK175vJUZrsp2T6Ow_60I-gBLTmA,2751
|
|
42
43
|
oagi/task/base.py,sha256=Udp_Yl5GVUWR7RtayrQlwa8Yg_Nrsyal3mGEkaG8FmE,4447
|
|
43
|
-
oagi/task/short.py,sha256=
|
|
44
|
-
oagi/task/sync.py,sha256=
|
|
44
|
+
oagi/task/short.py,sha256=b8cNpZvm5zSEwYE0dZX8uuRLLBmq6yKTTmjUGcXsbFM,2560
|
|
45
|
+
oagi/task/sync.py,sha256=Qm4eXmOEo6fDjMWPW8sona6b1QJxGOWU104cQqk2rvo,3779
|
|
45
46
|
oagi/types/__init__.py,sha256=Vz6JArE8XvBWlES8CVLy-Nx97gooh1OSsltBL6iaFiM,884
|
|
46
47
|
oagi/types/action_handler.py,sha256=NH8E-m5qpGqWcXzTSWfF7W0Xdp8SkzJsbhCmQ0B96cg,1075
|
|
47
48
|
oagi/types/async_action_handler.py,sha256=k1AaqSkFcXlxwW8sn-w0WFHGsIqHFLbcOPrkknmSVug,1116
|
|
@@ -55,8 +56,8 @@ oagi/types/models/action.py,sha256=hh6mRRSSWgrW4jpZo71zGMCOcZpV5_COu4148uG6G48,9
|
|
|
55
56
|
oagi/types/models/client.py,sha256=fCN18DBq5XDjNyYB8w-2dFeQ_K9ywwdyh-rXa0GToU4,1357
|
|
56
57
|
oagi/types/models/image_config.py,sha256=tl6abVg_-IAPLwpaWprgknXu7wRWriMg-AEVyUX73v0,1567
|
|
57
58
|
oagi/types/models/step.py,sha256=RSI4H_2rrUBq_xyCoWKaq7JHdJWNobtQppaKC1l0aWU,471
|
|
58
|
-
oagi_core-0.9.
|
|
59
|
-
oagi_core-0.9.
|
|
60
|
-
oagi_core-0.9.
|
|
61
|
-
oagi_core-0.9.
|
|
62
|
-
oagi_core-0.9.
|
|
59
|
+
oagi_core-0.9.2.dist-info/METADATA,sha256=aOVV3474s0JOmFZ2hGbVvqnBTH1UdK0vLTE2HRnUWS4,7638
|
|
60
|
+
oagi_core-0.9.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
61
|
+
oagi_core-0.9.2.dist-info/entry_points.txt,sha256=zzgsOSWX6aN3KUB0Z1it8DMxFFBJBqmZVqMVAJRjYuw,44
|
|
62
|
+
oagi_core-0.9.2.dist-info/licenses/LICENSE,sha256=sy5DLA2M29jFT4UfWsuBF9BAr3FnRkYtnAu6oDZiIf8,1075
|
|
63
|
+
oagi_core-0.9.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|