droidrun 0.3.10.dev4__py3-none-any.whl → 0.3.10.dev6__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.
@@ -1,10 +1,10 @@
1
1
  droidrun/__init__.py,sha256=c2exmv8MuTJ6wWXqzPR30pKGENeIgWe5ytY5hSQYuBc,621
2
2
  droidrun/__main__.py,sha256=8HpscyKn49EH05wXIdoxMiU43xPKb1czq8Aze2vIIqI,106
3
- droidrun/portal.py,sha256=Z4daRlMOpsiGxtJ4csuEaEiXAfGM5otbbrcrHvGhAB4,6161
3
+ droidrun/portal.py,sha256=QCfJecUpuyd9io_76ngJizs1ebKubMzVMmCWXpgC6PM,6737
4
4
  droidrun/agent/__init__.py,sha256=91sM0qTmdV5trlXOWE4D_nRhXVPgHKMnYU_9Stc_obQ,209
5
5
  droidrun/agent/usage.py,sha256=6PVeHctNa0EmHmNPTdOUv5e3-EK6AMu6D2Pz5OMqs5c,7145
6
6
  droidrun/agent/codeact/__init__.py,sha256=lagBdrury33kbHN1XEZ-xzJ-RywmpkUUoUidOno9ym8,96
7
- droidrun/agent/codeact/codeact_agent.py,sha256=r7sjVhsmgMdXdrCwCDxLFJE9Eeh9_E1Jd39Fs7T7iX8,20810
7
+ droidrun/agent/codeact/codeact_agent.py,sha256=KI9AKdBJ4ZdZQRIvTwj2lCOlQz8N23HTS4j4Rztd2zQ,20279
8
8
  droidrun/agent/codeact/events.py,sha256=kRKTQPzogPiQwmOCc_fGcg1g1zDXXVeBpDl45GTdpYU,734
9
9
  droidrun/agent/common/constants.py,sha256=q7ywmOXCsJZg8m9ctpzQ-nxvuj5GMn28Pr8z3dMj1Rg,94
10
10
  droidrun/agent/common/events.py,sha256=rbPWdlqNNMdnVjYhJOL2mJcNNORHhjXOkY8XiLPzp7c,1182
@@ -13,14 +13,14 @@ droidrun/agent/context/episodic_memory.py,sha256=0WKmOPe_KDWGdxudUXkmNVO1vj7L1g2
13
13
  droidrun/agent/context/task_manager.py,sha256=GXrGuBr8cukoLBRmvGIRsq0otwCC4s7N0NAVYql9oGY,5023
14
14
  droidrun/agent/droid/__init__.py,sha256=3Kzejs0p2hqKzgMc253W147P-Y84bYnQX7AZ4pybIsU,297
15
15
  droidrun/agent/droid/droid_agent.py,sha256=urCFKVyNz1jF_CFc7PTVEG3m_tFpwlmDOhwNZCa0lgk,21761
16
- droidrun/agent/droid/events.py,sha256=eAxrGzA1yUGutInecFML0ms_361NgYmunK8XJ5-AEjE,3876
16
+ droidrun/agent/droid/events.py,sha256=k3agPV6NzJF5ra9sviyNs3FfU1Kmpd8nY4VCBgul9k8,3988
17
17
  droidrun/agent/executor/__init__.py,sha256=2B531GoY7L1Hs_RJIVu62ARsP9mj86do8MiFl6ejpZ4,456
18
18
  droidrun/agent/executor/events.py,sha256=sYMs24at_VtikPKqSh_yNRYByDt4JpS1jiEob9UjNrs,1377
19
- droidrun/agent/executor/executor_agent.py,sha256=OQIVd7n0EjUZYwefbNRrhKheohLygQW9zDEpC4pDeq0,15153
20
- droidrun/agent/executor/prompts.py,sha256=nUsr4oF1RjmByOVvBIgjw6_739hO3C916QEVYFjXuqw,7530
19
+ droidrun/agent/executor/executor_agent.py,sha256=mBbL-NfZ59w-8TDz_etuku-fgPzrL9DE4h5vi-STEWM,13923
20
+ droidrun/agent/executor/prompts.py,sha256=amHWdGV-q-lgFkwg8N8VGeshvUqkEdxTM8GHnt7uTUQ,1182
21
21
  droidrun/agent/manager/__init__.py,sha256=mXvIvRihVAlLXOVQgvA9wsMdcZ2ICvhEg4ZoV97O32w,525
22
22
  droidrun/agent/manager/events.py,sha256=X0tUwCX2mU8I4bGR4JW2NmUqiOrX-Hrb017vGVPVyHw,855
23
- droidrun/agent/manager/manager_agent.py,sha256=fCDIFnpHRq75iEEvGtnbB7DnEjtZ9ZTvdWRBjJzTEXU,21094
23
+ droidrun/agent/manager/manager_agent.py,sha256=LUJ5LKLojb2kc-Zmh7rOYtttb9-Y9mSw8daE5zocaIU,22256
24
24
  droidrun/agent/manager/prompts.py,sha256=qfDYcSbpWpnUaavAuPE6qY6Df6w25LmtY1mEiBUMti0,2060
25
25
  droidrun/agent/oneflows/app_starter_workflow.py,sha256=MSJ6_jfbiCfSIjnw-qfSDFDuqsUS6rUGLsdKVj43wvY,3525
26
26
  droidrun/agent/oneflows/text_manipulator.py,sha256=mO59DF1uif9poUWy90UehrBmHbNxL9ph4Evtgt1ODbQ,8751
@@ -30,18 +30,22 @@ droidrun/agent/utils/chat_utils.py,sha256=mginY1rbP5t06O3hz2RpJJJNzggaE8VhWjnFid
30
30
  droidrun/agent/utils/device_state_formatter.py,sha256=3MuR3XQulnrsdzmMYfTEegA_XkYTTiETXMRtOtyqoC0,6889
31
31
  droidrun/agent/utils/executer.py,sha256=vz6mLeV4xti3dd_bDBd4aWHDA6T-ym0EbdEicrtK0aA,4233
32
32
  droidrun/agent/utils/inference.py,sha256=dupCtMYXUGuBJz9RqTgSsLYe_MOSB0LEhfHIdtFC8x0,3893
33
- droidrun/agent/utils/llm_picker.py,sha256=m5PHBe8iex5n_a5fPwfPd5Qdup_atx4C6iv0-wTCGzY,7232
33
+ droidrun/agent/utils/llm_picker.py,sha256=iy3wYp8c64YSA0BnshJCQCTm_GCbyBe5SDs11ZY8Aro,9397
34
34
  droidrun/agent/utils/message_utils.py,sha256=_wngf082gg232y_3pC_yn4fnPhHiyYAxhU4ewT78roo,2309
35
- droidrun/agent/utils/tools.py,sha256=SW-nBSfKTgPxDafV8dVX345JwmW378y_x86sLxiISj4,9243
35
+ droidrun/agent/utils/tools.py,sha256=pQRe1QLCZdLMb2FoFX6orX1h97mYT10-_1xB6qNZdsY,9930
36
36
  droidrun/agent/utils/trajectory.py,sha256=Z6C19Y9hsRxjLZWywqYWTApKU7PelvWM-5Tsl3h7KEw,19718
37
+ droidrun/app_cards/app_card_provider.py,sha256=eh4IJ81kM9vpOtQsSkX9bMo6YY3RUkPF_osLznWsfss,828
38
+ droidrun/app_cards/providers/__init__.py,sha256=bURQeH4uG7Lc-1og70jVWPcx_mlIJvzil7HD4igAfT0,372
39
+ droidrun/app_cards/providers/composite_provider.py,sha256=bQWOwJlcCN9mGyCA9LTXso_ljSFMbzAP5Rl9d2CbW8Q,3174
40
+ droidrun/app_cards/providers/local_provider.py,sha256=Xx7bR4w3nJAs-eoWrk6XugKnp6-6KP_XwJnJqoH3rfk,3934
41
+ droidrun/app_cards/providers/server_provider.py,sha256=Lfp1DUhvlOQpxCr_5oJk8s1OBDvzHS3jkvGqdELphEk,4153
37
42
  droidrun/cli/__init__.py,sha256=5cO-QBcUl5w35zO18OENj4OShdglQjn8Ne9aqgSh-PM,167
38
43
  droidrun/cli/logs.py,sha256=lZX44S7pvrpbwfIXX6WYVPeDdvjjRozRb-oc6u-yCks,12686
39
- droidrun/cli/main.py,sha256=dJdKleue-kLZs8xfQ3s2m_XiWm3ShrFy46Ne0S5P0JU,26171
40
- droidrun/config_manager/__init__.py,sha256=-3FZJ2K985yhrIq2uPtlutCImdVzWvckdL1X4XCFi5s,547
41
- droidrun/config_manager/app_card_loader.py,sha256=WKU3knxOcUo4v2mNh0XPljUW03Sc1fK4yBJVDERAeJY,5055
42
- droidrun/config_manager/config_manager.py,sha256=4XUBTJnkoO_9AFU13j5nNygFIQFHyZ_Q_b3R6b796m4,21529
43
- droidrun/config_manager/path_resolver.py,sha256=R9Yf3JWdrdvNXSg-6yXBO2NSr8HTuSvJfGcuyz0dY-I,3417
44
- droidrun/config_manager/prompt_loader.py,sha256=nzlL3YMyteY91fOMryQD3XRny_2oytAmaXRZfLBNH2M,2450
44
+ droidrun/cli/main.py,sha256=7D5K2yD9XN1P0Bpq1lexDaX58iIgy9aRe5bevV9AEWk,35373
45
+ droidrun/config_manager/__init__.py,sha256=SeLoEYVU5jMEtXLjx76VE_3rxzZXjCMlVPW7hodU128,460
46
+ droidrun/config_manager/config_manager.py,sha256=gnHrSYOYpaWrWyHIkMp1jG2U17l6QW5DU7nTQQZ_U-U,19955
47
+ droidrun/config_manager/path_resolver.py,sha256=vQKT5XmnENtSK3B1D-iItL8CpOQTKzfKZ1wTO4khlTs,3421
48
+ droidrun/config_manager/prompt_loader.py,sha256=JqGHjT4Ik5iwPfnaXkCc1W1cm4QmIqq2duPuye14jSc,2430
45
49
  droidrun/macro/__init__.py,sha256=TKRNlMJqClV1p1dkfES4eo-Bq1VkSiTC1DDMxMjnUWE,357
46
50
  droidrun/macro/__main__.py,sha256=MWdBvQVhOoeKlC8atDwjVbPSn0-XNt4PDbpCCoeJuUk,193
47
51
  droidrun/macro/cli.py,sha256=hlnQVY399El26cpFiXiP3-lcXB_gh6SDpAoPbCiMqsA,9161
@@ -51,11 +55,11 @@ droidrun/telemetry/events.py,sha256=y-i2d5KiPkikVXrzMQu87osy1LAZTBIx8DlPIWGAXG0,
51
55
  droidrun/telemetry/phoenix.py,sha256=JHdFdRHXu7cleAb4X4_Y5yn5zPSIApwyKCOxoaj_gf4,7117
52
56
  droidrun/telemetry/tracker.py,sha256=YWOkyLE8XiHainVSB77JE37y-rloOYVYs6j53Aw1J8A,2735
53
57
  droidrun/tools/__init__.py,sha256=BbQFKuPn-5MwGzr-3urMDK8S1ZsP96D96y7WTJYB3AA,271
54
- droidrun/tools/adb.py,sha256=X9fvrQWBTCKkWTB4oXfRj5PRb__SA8zO0J0-TMbsJ1U,43908
58
+ droidrun/tools/adb.py,sha256=ziMbQ02TDBvm04ffG1wlYUstsYABNopZaq0aOBh0xtA,42985
55
59
  droidrun/tools/ios.py,sha256=GMYbiNNBeHLwVQAo4_fEZ7snr4JCHE6sG11rcuPvSpk,21831
56
60
  droidrun/tools/tools.py,sha256=0eAZFTaY10eiiUcJM4AkURmTGX-O1RRXjpQ5MHj2Ydo,5241
57
- droidrun-0.3.10.dev4.dist-info/METADATA,sha256=Xd-4S92-gIdFvuJZOXrpIkhcrjXwcPxCy7UBydRKPBM,7528
58
- droidrun-0.3.10.dev4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
59
- droidrun-0.3.10.dev4.dist-info/entry_points.txt,sha256=o259U66js8TIybQ7zs814Oe_LQ_GpZsp6a9Cr-xm5zE,51
60
- droidrun-0.3.10.dev4.dist-info/licenses/LICENSE,sha256=s-uxn9qChu-kFdRXUp6v_0HhsaJ_5OANmfNOFVm2zdk,1069
61
- droidrun-0.3.10.dev4.dist-info/RECORD,,
61
+ droidrun-0.3.10.dev6.dist-info/METADATA,sha256=QZOK5sFxL9-IeXYDiY1JQJ-9kMV_K24TY_pzaLuNXzw,7044
62
+ droidrun-0.3.10.dev6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
63
+ droidrun-0.3.10.dev6.dist-info/entry_points.txt,sha256=o259U66js8TIybQ7zs814Oe_LQ_GpZsp6a9Cr-xm5zE,51
64
+ droidrun-0.3.10.dev6.dist-info/licenses/LICENSE,sha256=s-uxn9qChu-kFdRXUp6v_0HhsaJ_5OANmfNOFVm2zdk,1069
65
+ droidrun-0.3.10.dev6.dist-info/RECORD,,
@@ -1,148 +0,0 @@
1
- """
2
- App card loading utility for package-specific prompts.
3
-
4
- Supports flexible file path resolution and caches loaded content.
5
- """
6
-
7
- import json
8
- from pathlib import Path
9
- from typing import Dict, Optional
10
-
11
- from droidrun.config_manager.path_resolver import PathResolver
12
-
13
-
14
- class AppCardLoader:
15
- """Load app cards based on package names with content caching."""
16
-
17
- _mapping_cache: Optional[Dict[str, str]] = None
18
- _cache_dir: Optional[str] = None
19
- _content_cache: Dict[str, str] = {}
20
-
21
- @staticmethod
22
- def load_app_card(
23
- package_name: str, app_cards_dir: str = "config/app_cards"
24
- ) -> str:
25
- """
26
- Load app card for a package name.
27
-
28
- Path resolution:
29
- - Checks working directory first (for user overrides)
30
- - Falls back to project directory (for default cards)
31
- - Supports absolute paths (used as-is)
32
-
33
- File loading from app_cards.json:
34
- 1. Relative to app_cards_dir (most common):
35
- {"com.google.gm": "gmail.md"}
36
- → {app_cards_dir}/gmail.md
37
-
38
- 2. Relative path (checks working dir, then project dir):
39
- {"com.google.gm": "config/custom_cards/gmail.md"}
40
-
41
- 3. Absolute path:
42
- {"com.google.gm": "/usr/share/droidrun/cards/gmail.md"}
43
-
44
- Args:
45
- package_name: Android package name (e.g., "com.google.android.gm")
46
- app_cards_dir: Directory path (relative or absolute)
47
-
48
- Returns:
49
- App card content or empty string if not found
50
- """
51
- if not package_name:
52
- return ""
53
-
54
- # Check content cache first (key: package_name:app_cards_dir)
55
- cache_key = f"{package_name}:{app_cards_dir}"
56
- if cache_key in AppCardLoader._content_cache:
57
- return AppCardLoader._content_cache[cache_key]
58
-
59
- # Load mapping (with cache)
60
- mapping = AppCardLoader._load_mapping(app_cards_dir)
61
-
62
- # Get file path from mapping
63
- if package_name not in mapping:
64
- # Cache the empty result to avoid repeated lookups
65
- AppCardLoader._content_cache[cache_key] = ""
66
- return ""
67
-
68
- file_path_str = mapping[package_name]
69
- file_path = Path(file_path_str)
70
-
71
- # Determine resolution strategy
72
- if file_path.is_absolute():
73
- # Absolute path: use as-is
74
- app_card_path = file_path
75
- elif file_path_str.startswith(("config/", "prompts/", "docs/")):
76
- # Project-relative path: resolve with unified resolver
77
- app_card_path = PathResolver.resolve(file_path_str)
78
- else:
79
- # App_cards-relative: resolve dir first, then append filename
80
- cards_dir_resolved = PathResolver.resolve(app_cards_dir)
81
- app_card_path = cards_dir_resolved / file_path_str
82
-
83
- # Read file
84
- try:
85
- if not app_card_path.exists():
86
- # Cache the empty result
87
- AppCardLoader._content_cache[cache_key] = ""
88
- return ""
89
-
90
- content = app_card_path.read_text(encoding="utf-8")
91
- # Cache the content
92
- AppCardLoader._content_cache[cache_key] = content
93
- return content
94
- except Exception:
95
- # Cache the empty result on error
96
- AppCardLoader._content_cache[cache_key] = ""
97
- return ""
98
-
99
- @staticmethod
100
- def _load_mapping(app_cards_dir: str) -> Dict[str, str]:
101
- """Load and cache the app_cards.json mapping."""
102
- # Cache invalidation: if dir changed, reload
103
- if (
104
- AppCardLoader._mapping_cache is not None
105
- and AppCardLoader._cache_dir == app_cards_dir
106
- ):
107
- return AppCardLoader._mapping_cache
108
-
109
- # Resolve app cards directory
110
- cards_dir_resolved = PathResolver.resolve(app_cards_dir)
111
- mapping_path = cards_dir_resolved / "app_cards.json"
112
-
113
- try:
114
- if not mapping_path.exists():
115
- AppCardLoader._mapping_cache = {}
116
- AppCardLoader._cache_dir = app_cards_dir
117
- return {}
118
-
119
- with open(mapping_path, "r", encoding="utf-8") as f:
120
- mapping = json.load(f)
121
-
122
- AppCardLoader._mapping_cache = mapping
123
- AppCardLoader._cache_dir = app_cards_dir
124
- return mapping
125
- except Exception:
126
- AppCardLoader._mapping_cache = {}
127
- AppCardLoader._cache_dir = app_cards_dir
128
- return {}
129
-
130
- @staticmethod
131
- def clear_cache() -> None:
132
- """Clear all caches (useful for testing or runtime reloading)."""
133
- AppCardLoader._mapping_cache = None
134
- AppCardLoader._cache_dir = None
135
- AppCardLoader._content_cache.clear()
136
-
137
- @staticmethod
138
- def get_cache_stats() -> Dict[str, int]:
139
- """
140
- Get cache statistics.
141
-
142
- Returns:
143
- Dict with cache stats (useful for debugging)
144
- """
145
- return {
146
- "mapping_cached": 1 if AppCardLoader._mapping_cache is not None else 0,
147
- "content_entries": len(AppCardLoader._content_cache),
148
- }