askui-agent-os 26.1.1__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.
- askui_agent_os-26.1.1/PKG-INFO +386 -0
- askui_agent_os-26.1.1/README.md +80 -0
- askui_agent_os-26.1.1/askui_agent_os/__init__.py +5 -0
- askui_agent_os-26.1.1/askui_agent_os/_runtime_check.py +66 -0
- askui_agent_os-26.1.1/askui_agent_os/agent_os.py +90 -0
- askui_agent_os-26.1.1/askui_agent_os/cli.py +25 -0
- askui_agent_os-26.1.1/askui_agent_os/py.typed +1 -0
- askui_agent_os-26.1.1/askui_agent_os.egg-info/PKG-INFO +386 -0
- askui_agent_os-26.1.1/askui_agent_os.egg-info/SOURCES.txt +15 -0
- askui_agent_os-26.1.1/askui_agent_os.egg-info/dependency_links.txt +1 -0
- askui_agent_os-26.1.1/askui_agent_os.egg-info/entry_points.txt +2 -0
- askui_agent_os-26.1.1/askui_agent_os.egg-info/top_level.txt +1 -0
- askui_agent_os-26.1.1/docs/AskUI_AgentOS_TermsOfService.txt +300 -0
- askui_agent_os-26.1.1/docs/agent-os-readme.md +63 -0
- askui_agent_os-26.1.1/pyproject.toml +51 -0
- askui_agent_os-26.1.1/setup.cfg +4 -0
- askui_agent_os-26.1.1/setup.py +22 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: askui-agent-os
|
|
3
|
+
Version: 26.1.1
|
|
4
|
+
Summary: Platform-specific binaries for the AskUI Remote Device Controller, shipped as a Python package. Used by the AskUI Agent (created with the AskUI Python SDK) to control the local device on Windows, Linux, and macOS.
|
|
5
|
+
Author-email: askui GmbH <support@askui.com>
|
|
6
|
+
License: ================================================================================
|
|
7
|
+
askui GmbH
|
|
8
|
+
Zimmerstraße 3 · 76137 Karlsruhe · Germany
|
|
9
|
+
================================================================================
|
|
10
|
+
|
|
11
|
+
ASKUI AGENT OS
|
|
12
|
+
TERMS OF SERVICE
|
|
13
|
+
|
|
14
|
+
Effective Date: February 2026
|
|
15
|
+
|
|
16
|
+
--------------------------------------------------------------------------------
|
|
17
|
+
IMPORTANT — READ CAREFULLY
|
|
18
|
+
--------------------------------------------------------------------------------
|
|
19
|
+
By downloading, installing, copying, or otherwise using AskUI Agent OS (the
|
|
20
|
+
"Software"), you agree to be bound by the terms of this Agreement. If you do
|
|
21
|
+
not agree, do not install or use the Software.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
================================================================================
|
|
25
|
+
1. DEFINITIONS
|
|
26
|
+
================================================================================
|
|
27
|
+
|
|
28
|
+
"AskUI" means askui GmbH, registered at Zimmerstraße 3, 76137 Karlsruhe,
|
|
29
|
+
Germany (HRB 740125).
|
|
30
|
+
|
|
31
|
+
"Agent OS" or "Software" means the AskUI Agent OS desktop controller
|
|
32
|
+
software, including all updates, patches, documentation, and associated
|
|
33
|
+
files provided by AskUI.
|
|
34
|
+
|
|
35
|
+
"Commercial Use" means any use of the Software in connection with or for the
|
|
36
|
+
benefit of a business, organization, or revenue-generating activity,
|
|
37
|
+
including but not limited to: use in production environments, use for client
|
|
38
|
+
projects, integration into commercial products or services, or use by or on
|
|
39
|
+
behalf of any for-profit entity.
|
|
40
|
+
|
|
41
|
+
"Commercial Licence" means a valid, paid subscription agreement between the
|
|
42
|
+
Licensee and AskUI (such as a SaaS Order Form) that expressly authorises
|
|
43
|
+
Commercial Use of the Software.
|
|
44
|
+
|
|
45
|
+
"Trial Period" means a time-limited evaluation period expressly agreed in
|
|
46
|
+
writing between the Licensee and AskUI, during which the Licensee may use
|
|
47
|
+
the Software for evaluation and testing purposes under the terms specified
|
|
48
|
+
in such agreement.
|
|
49
|
+
|
|
50
|
+
"Licensee" or "You" means the individual or legal entity that downloads,
|
|
51
|
+
installs, or uses the Software.
|
|
52
|
+
|
|
53
|
+
"Non-Commercial Use" means use of the Software solely for personal learning,
|
|
54
|
+
academic research, open-source development, or internal evaluation purposes
|
|
55
|
+
that do not directly or indirectly generate revenue or commercial advantage.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
================================================================================
|
|
59
|
+
2. LICENCE GRANT
|
|
60
|
+
================================================================================
|
|
61
|
+
|
|
62
|
+
2.1 Non-Commercial Licence.
|
|
63
|
+
Subject to the terms of this Agreement, AskUI grants the Licensee a
|
|
64
|
+
limited, non-exclusive, non-transferable, revocable licence to install
|
|
65
|
+
and use the Software solely for Non-Commercial Use. This licence is
|
|
66
|
+
granted free of charge and does not require a separate subscription
|
|
67
|
+
agreement.
|
|
68
|
+
|
|
69
|
+
2.2 Commercial Use Prohibited Without Licence.
|
|
70
|
+
Commercial Use of the Software is strictly prohibited unless the
|
|
71
|
+
Licensee holds a valid Commercial Licence issued by AskUI. Any
|
|
72
|
+
Commercial Use without a Commercial Licence constitutes a material
|
|
73
|
+
breach of this Agreement and may result in immediate termination of the
|
|
74
|
+
licence and legal action.
|
|
75
|
+
|
|
76
|
+
2.3 Commercial Licence.
|
|
77
|
+
Licensees who wish to use the Software for Commercial Use must enter
|
|
78
|
+
into a separate Commercial Licence agreement with AskUI (e.g., a SaaS
|
|
79
|
+
Order Form or enterprise agreement). The terms of such Commercial
|
|
80
|
+
Licence shall govern Commercial Use and shall take precedence over this
|
|
81
|
+
Agreement to the extent of any conflict.
|
|
82
|
+
|
|
83
|
+
2.4 Trial Use.
|
|
84
|
+
AskUI may, at its sole discretion, grant the Licensee a time-limited
|
|
85
|
+
Trial Period for evaluation purposes. Trial use is subject to the
|
|
86
|
+
following conditions:
|
|
87
|
+
|
|
88
|
+
(a) The Trial Period must be agreed in writing between the Licensee and
|
|
89
|
+
AskUI, specifying the duration, scope, and any limitations.
|
|
90
|
+
|
|
91
|
+
(b) During the Trial Period, the Licensee may use the Software for
|
|
92
|
+
internal evaluation and testing only. Production use, client-facing
|
|
93
|
+
use, and revenue-generating activities are not permitted during a
|
|
94
|
+
Trial unless expressly authorised.
|
|
95
|
+
|
|
96
|
+
(c) Upon expiration of the Trial Period, the Licensee must either enter
|
|
97
|
+
into a Commercial Licence or cease all use of the Software and
|
|
98
|
+
uninstall it from all systems.
|
|
99
|
+
|
|
100
|
+
(d) AskUI reserves the right to revoke any Trial at any time and for
|
|
101
|
+
any reason upon written notice.
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
================================================================================
|
|
105
|
+
3. RESTRICTIONS
|
|
106
|
+
================================================================================
|
|
107
|
+
|
|
108
|
+
The Licensee shall not, and shall not permit any third party to:
|
|
109
|
+
|
|
110
|
+
• Use the Software for any Commercial Use without a valid Commercial
|
|
111
|
+
Licence or an active, authorised Trial Period;
|
|
112
|
+
|
|
113
|
+
• Copy, modify, adapt, translate, or create derivative works of the
|
|
114
|
+
Software, in whole or in part;
|
|
115
|
+
|
|
116
|
+
• Reverse engineer, decompile, disassemble, or otherwise attempt to
|
|
117
|
+
discover the source code, algorithms, or underlying structure of the
|
|
118
|
+
Software;
|
|
119
|
+
|
|
120
|
+
• Distribute, sublicence, lease, rent, loan, or otherwise transfer the
|
|
121
|
+
Software or any rights therein to any third party;
|
|
122
|
+
|
|
123
|
+
• Remove, alter, or obscure any proprietary notices, labels, or
|
|
124
|
+
trademarks on or within the Software;
|
|
125
|
+
|
|
126
|
+
• Use the Software for timesharing, service bureau, managed service, or
|
|
127
|
+
similar purposes for the benefit of third parties;
|
|
128
|
+
|
|
129
|
+
• Use the Software in any manner that violates applicable law or
|
|
130
|
+
regulation;
|
|
131
|
+
|
|
132
|
+
• Circumvent or attempt to circumvent any licence key, activation
|
|
133
|
+
mechanism, usage limit, or technical protection measure incorporated
|
|
134
|
+
into the Software;
|
|
135
|
+
|
|
136
|
+
• Use the Software to develop a competing product or service.
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
================================================================================
|
|
140
|
+
4. INTELLECTUAL PROPERTY
|
|
141
|
+
================================================================================
|
|
142
|
+
|
|
143
|
+
4.1 The Software is the proprietary product of AskUI and is protected by
|
|
144
|
+
copyright, trade secret, and other intellectual property laws. AskUI
|
|
145
|
+
and its licensors retain all right, title, and interest in and to the
|
|
146
|
+
Software, including all copies, modifications, and derivative works
|
|
147
|
+
thereof. Nothing in this Agreement transfers ownership of the Software
|
|
148
|
+
to the Licensee.
|
|
149
|
+
|
|
150
|
+
4.2 All trademarks, service marks, and trade names associated with the
|
|
151
|
+
Software (including "AskUI", "Agent OS", and the AskUI logo) are the
|
|
152
|
+
exclusive property of AskUI. The Licensee is not granted any right to
|
|
153
|
+
use such marks without prior written consent.
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
================================================================================
|
|
157
|
+
5. DATA AND PRIVACY
|
|
158
|
+
================================================================================
|
|
159
|
+
|
|
160
|
+
5.1 The Software may collect anonymised, aggregated telemetry data relating
|
|
161
|
+
to system performance, usage patterns, and error diagnostics. This data
|
|
162
|
+
does not include personal data or any content processed by the Software
|
|
163
|
+
during test execution.
|
|
164
|
+
|
|
165
|
+
5.2 If the Software is used in connection with AskUI's SaaS services (under
|
|
166
|
+
a Commercial Licence), data processing shall be governed by the Data
|
|
167
|
+
Processing Agreement entered into between AskUI and the Licensee.
|
|
168
|
+
|
|
169
|
+
5.3 AskUI will not use any data processed through the Software to train,
|
|
170
|
+
fine-tune, or improve any artificial intelligence or machine learning
|
|
171
|
+
models. AI models used by the Software are pre-trained and do not learn
|
|
172
|
+
from Licensee data.
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
================================================================================
|
|
176
|
+
6. DISCLAIMER OF WARRANTIES
|
|
177
|
+
================================================================================
|
|
178
|
+
|
|
179
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY
|
|
180
|
+
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
|
|
181
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
|
|
182
|
+
NON-INFRINGEMENT. ASKUI DOES NOT WARRANT THAT THE SOFTWARE WILL BE
|
|
183
|
+
UNINTERRUPTED, ERROR-FREE, OR FREE OF HARMFUL COMPONENTS. THE LICENSEE
|
|
184
|
+
ASSUMES ALL RISK ARISING FROM THE USE OF THE SOFTWARE.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
================================================================================
|
|
188
|
+
7. LIMITATION OF LIABILITY
|
|
189
|
+
================================================================================
|
|
190
|
+
|
|
191
|
+
7.1 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
|
|
192
|
+
ASKUI BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR
|
|
193
|
+
PUNITIVE DAMAGES, OR ANY LOSS OF PROFITS, REVENUE, DATA, OR BUSINESS
|
|
194
|
+
OPPORTUNITY, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE
|
|
195
|
+
USE OF THE SOFTWARE, REGARDLESS OF THE THEORY OF LIABILITY.
|
|
196
|
+
|
|
197
|
+
7.2 ASKUI'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED
|
|
198
|
+
THE FEES ACTUALLY PAID BY THE LICENSEE TO ASKUI FOR THE SOFTWARE IN THE
|
|
199
|
+
TWELVE (12) MONTHS PRECEDING THE EVENT GIVING RISE TO THE CLAIM. WHERE
|
|
200
|
+
NO FEES HAVE BEEN PAID (E.G., NON-COMMERCIAL OR TRIAL USE), ASKUI'S
|
|
201
|
+
LIABILITY SHALL BE LIMITED TO FIFTY EUROS (€50).
|
|
202
|
+
|
|
203
|
+
7.3 The limitations in this Section 7 shall not apply to liability arising
|
|
204
|
+
from AskUI's gross negligence, wilful misconduct, or breach of
|
|
205
|
+
obligations that cannot be limited under mandatory applicable law.
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
================================================================================
|
|
209
|
+
8. TERM AND TERMINATION
|
|
210
|
+
================================================================================
|
|
211
|
+
|
|
212
|
+
8.1 This Agreement is effective from the date the Licensee first installs or
|
|
213
|
+
uses the Software and continues until terminated.
|
|
214
|
+
|
|
215
|
+
8.2 Non-Commercial and Trial Licences. AskUI may terminate this licence at
|
|
216
|
+
any time for any reason upon thirty (30) days' written notice. The
|
|
217
|
+
Licensee may terminate at any time by uninstalling the Software and
|
|
218
|
+
destroying all copies.
|
|
219
|
+
|
|
220
|
+
8.3 Termination for Breach. AskUI may terminate this Agreement immediately
|
|
221
|
+
upon written notice if the Licensee breaches any term of this Agreement,
|
|
222
|
+
including but not limited to engaging in unauthorised Commercial Use.
|
|
223
|
+
|
|
224
|
+
8.4 Effect of Termination. Upon termination or expiration of this Agreement,
|
|
225
|
+
the Licensee must immediately cease all use of the Software and
|
|
226
|
+
uninstall or destroy all copies in its possession or control. Sections
|
|
227
|
+
3, 4, 6, 7, 9, and 10 shall survive termination.
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
================================================================================
|
|
231
|
+
9. COMPLIANCE AND AUDIT
|
|
232
|
+
================================================================================
|
|
233
|
+
|
|
234
|
+
9.1 AskUI reserves the right to verify the Licensee's compliance with this
|
|
235
|
+
Agreement, including verification of licence type and usage scope. The
|
|
236
|
+
Licensee agrees to provide reasonable cooperation in connection with
|
|
237
|
+
any compliance verification.
|
|
238
|
+
|
|
239
|
+
9.2 If an audit reveals unauthorised Commercial Use, the Licensee shall
|
|
240
|
+
promptly pay all applicable licence fees retroactively from the date
|
|
241
|
+
such Commercial Use commenced, plus a surcharge of twenty-five percent
|
|
242
|
+
(25%) of the applicable fees as liquidated damages. This is in addition
|
|
243
|
+
to, and not in lieu of, any other remedies available to AskUI.
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
================================================================================
|
|
247
|
+
10. GOVERNING LAW AND JURISDICTION
|
|
248
|
+
================================================================================
|
|
249
|
+
|
|
250
|
+
10.1 This Agreement shall be governed by and construed in accordance with
|
|
251
|
+
the laws of the Federal Republic of Germany, excluding the UN
|
|
252
|
+
Convention on Contracts for the International Sale of Goods (CISG) and
|
|
253
|
+
conflict-of-law rules.
|
|
254
|
+
|
|
255
|
+
10.2 The exclusive place of jurisdiction for all disputes arising out of or
|
|
256
|
+
in connection with this Agreement shall be Karlsruhe, Germany, to the
|
|
257
|
+
extent permitted by applicable law.
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
================================================================================
|
|
261
|
+
11. EXPORT COMPLIANCE
|
|
262
|
+
================================================================================
|
|
263
|
+
|
|
264
|
+
The Licensee shall comply with all applicable export control laws and
|
|
265
|
+
regulations, including those of the European Union and Germany. The
|
|
266
|
+
Licensee shall not export, re-export, or transfer the Software to any
|
|
267
|
+
country, entity, or person prohibited by applicable export laws without
|
|
268
|
+
obtaining prior authorisation from the relevant authorities.
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
================================================================================
|
|
272
|
+
12. MISCELLANEOUS
|
|
273
|
+
================================================================================
|
|
274
|
+
|
|
275
|
+
12.1 Entire Agreement. This Agreement constitutes the entire agreement
|
|
276
|
+
between the Licensee and AskUI with respect to the non-commercial and
|
|
277
|
+
trial use of the Software. For Commercial Use, the applicable
|
|
278
|
+
Commercial Licence agreement shall govern.
|
|
279
|
+
|
|
280
|
+
12.2 Amendments. AskUI reserves the right to modify this Agreement at any
|
|
281
|
+
time. Updated terms will be made available through the Software or at
|
|
282
|
+
askui.com. Continued use of the Software after such modifications
|
|
283
|
+
constitutes acceptance of the revised terms.
|
|
284
|
+
|
|
285
|
+
12.3 Severability. If any provision of this Agreement is found to be
|
|
286
|
+
invalid or unenforceable, the remaining provisions shall remain in
|
|
287
|
+
full force and effect.
|
|
288
|
+
|
|
289
|
+
12.4 No Waiver. The failure of AskUI to enforce any right or provision of
|
|
290
|
+
this Agreement shall not constitute a waiver of such right or
|
|
291
|
+
provision.
|
|
292
|
+
|
|
293
|
+
12.5 Assignment. The Licensee may not assign or transfer this Agreement or
|
|
294
|
+
any rights hereunder without AskUI's prior written consent. AskUI may
|
|
295
|
+
assign this Agreement freely in connection with a merger, acquisition,
|
|
296
|
+
or sale of assets.
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
================================================================================
|
|
300
|
+
— End of Terms of Service —
|
|
301
|
+
================================================================================
|
|
302
|
+
|
|
303
|
+
askui GmbH
|
|
304
|
+
Registry court: Amtsgericht Mannheim · HRB 740125 · VAT-ID: DE342511595
|
|
305
|
+
Responsible persons: Jonas Menesklou, Dominik Klotz
|
|
306
|
+
|
|
307
|
+
Project-URL: Homepage, https://www.askui.com/
|
|
308
|
+
Project-URL: Documentation, https://docs.askui.com
|
|
309
|
+
Keywords: askui,automation,agent-os
|
|
310
|
+
Classifier: Development Status :: 4 - Beta
|
|
311
|
+
Classifier: Intended Audience :: Developers
|
|
312
|
+
Classifier: License :: Other/Proprietary License
|
|
313
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
314
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
315
|
+
Classifier: Operating System :: MacOS
|
|
316
|
+
Classifier: Programming Language :: Python :: 3
|
|
317
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
318
|
+
Classifier: Topic :: Software Development :: Testing
|
|
319
|
+
Requires-Python: >=3.8
|
|
320
|
+
Description-Content-Type: text/markdown
|
|
321
|
+
License-File: docs/AskUI_AgentOS_TermsOfService.txt
|
|
322
|
+
Dynamic: license-file
|
|
323
|
+
|
|
324
|
+
# AskUI Agent OS
|
|
325
|
+
|
|
326
|
+
Platform-specific binaries for the **AskUI Remote Device Controller**, shipped as a Python package. Use it with the [AskUI Python SDK](https://github.com/askui/python-sdk) when you need local device control—see the [Setup Guide](https://docs.askui.com) in the official docs.
|
|
327
|
+
|
|
328
|
+
## Requirements
|
|
329
|
+
|
|
330
|
+
- **Python:** 3.8+
|
|
331
|
+
- **Platforms:** Windows, Linux, macOS
|
|
332
|
+
- **Windows only:** [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist) (minimum version 14.34.31938). The package checks this automatically when you use the API.
|
|
333
|
+
|
|
334
|
+
## Installation
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
pip install askui-agent-os
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Usage
|
|
341
|
+
|
|
342
|
+
### Command line
|
|
343
|
+
|
|
344
|
+
Get the path to the Remote Device Controller binary:
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
askui-agent-os get-binary-path
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Python API
|
|
351
|
+
|
|
352
|
+
The package exposes a single class, **`AgentOS`**, with static methods. On import, `AgentOS.setup()` runs and makes the controller binary executable (no-op on Windows). Prerequisites (e.g. Windows VC++ runtime) are checked when you call `bin_path()` or `controller_path()`.
|
|
353
|
+
|
|
354
|
+
```python
|
|
355
|
+
from askui_agent_os import AgentOS
|
|
356
|
+
|
|
357
|
+
# Directory containing platform binaries
|
|
358
|
+
bin_dir = AgentOS.bin_path()
|
|
359
|
+
|
|
360
|
+
# Full path to the controller executable (use this with the AskUI SDK)
|
|
361
|
+
path = AgentOS.controller_path()
|
|
362
|
+
|
|
363
|
+
# Optional: require Windows VC++ runtime (raises RuntimeError if missing on Windows)
|
|
364
|
+
AgentOS.require_vc_redistributable()
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
| Method | Description |
|
|
368
|
+
|--------|-------------|
|
|
369
|
+
| `AgentOS.bin_path()` | Path to the package `bin` directory. |
|
|
370
|
+
| `AgentOS.controller_path()` | Full path to the controller executable. |
|
|
371
|
+
| `AgentOS.require_vc_redistributable()` | No-op on non-Windows; on Windows, raises if the required VC++ runtime is missing. |
|
|
372
|
+
|
|
373
|
+
## CI/CD and automated pipelines
|
|
374
|
+
|
|
375
|
+
**This package is for local and desktop use only.** It is **not** suitable for use in CI/CD or other headless/automated pipelines. For CI/CD you need the dedicated AskUI service. To request access, contact **support@askui.com**.
|
|
376
|
+
|
|
377
|
+
## License
|
|
378
|
+
|
|
379
|
+
Use of AskUI Agent OS is subject to the AskUI Agent OS Terms of Service. Non-commercial use is free; commercial use requires a separate Commercial Licence from AskUI.
|
|
380
|
+
|
|
381
|
+
## Links
|
|
382
|
+
|
|
383
|
+
- [Homepage](https://www.askui.com/)
|
|
384
|
+
- [Python SDK](https://github.com/askui/python-sdk)
|
|
385
|
+
- [Documentation](https://docs.askui.com)
|
|
386
|
+
- [Support](mailto:support@askui.com)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# AskUI Agent OS Deliveries
|
|
2
|
+
|
|
3
|
+
This repository contains the delivery pipelines and assets for **AskUI Agent OS** and **AskUI Suite Installers**. Use it to build, release, and publish installers and the Agent OS Python package.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
You can use this repo in two main ways:
|
|
10
|
+
|
|
11
|
+
| Delivery type | What it does | How to trigger |
|
|
12
|
+
|---------------|--------------|----------------|
|
|
13
|
+
| **Suite Installer** | Build and release AskUI Suite Installers (Web/Full) for Windows, macOS, and Linux | Create a **GitHub Release** with a version tag, or run the **Build Suite Installer** workflow manually |
|
|
14
|
+
| **Agent OS** | Publish the Agent OS Python package to PyPI and build Windows service installers (AMD64/ARM64) | Run the **Release Agent OS** workflow manually and provide a version |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Suite Installer releases
|
|
19
|
+
|
|
20
|
+
### Version and tag format
|
|
21
|
+
|
|
22
|
+
- **Stable:** `26.2.1` (semver: `YY.MINOR.PATCH`)
|
|
23
|
+
- **Release candidate:** `26.2.1.1` (e.g. `26.2.1.1` = rc1 for 26.2.1)
|
|
24
|
+
|
|
25
|
+
### Option A: Release from a GitHub Release
|
|
26
|
+
|
|
27
|
+
1. In this repo, go to **Releases** → **Draft a new release**.
|
|
28
|
+
2. Create a **tag** with the version (e.g. `26.2.1` or `26.2.1.1`).
|
|
29
|
+
3. Publish the release.
|
|
30
|
+
|
|
31
|
+
Publishing the release triggers **Build Suite Installer** and builds installers for:
|
|
32
|
+
|
|
33
|
+
- Windows (AMD64): Web, Full
|
|
34
|
+
- Windows (ARM64): Web
|
|
35
|
+
- macOS (ARM64): Web
|
|
36
|
+
- Linux (AMD64, ARM64): Web
|
|
37
|
+
|
|
38
|
+
Installers are released to the configured S3 bucket. Only tags **without** the `agent-os-` prefix trigger this behavior.
|
|
39
|
+
|
|
40
|
+
### Option B: Manual build (single or all)
|
|
41
|
+
|
|
42
|
+
1. Go to **Actions** → **Build Suite Installer** → **Run workflow**.
|
|
43
|
+
2. Choose:
|
|
44
|
+
- **all_builds:** `true` to build all OS/arch/type combinations (as above), or `false` to pick one.
|
|
45
|
+
- **os:** Windows, MacOS, or Linux (ignored if `all_builds` is true).
|
|
46
|
+
- **architecture:** AMD64 or ARM64 (ignored if `all_builds` is true).
|
|
47
|
+
- **version:** e.g. `26.2.1`.
|
|
48
|
+
- **installationType:** Web or Full.
|
|
49
|
+
- **release:** set to `true` to publish the built installer to the S3 bucket.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Agent OS releases (Python package + Windows installers)
|
|
54
|
+
|
|
55
|
+
### Version format
|
|
56
|
+
|
|
57
|
+
- **Stable:** `26.2.1` → tag `agent-os-v26.2.1`, PyPI version `26.2.1`.
|
|
58
|
+
- **Release candidate:** `26.2.1.5` → tag `agent-os-v26.2.1.5`, PyPI version `26.2.1.rc5`.
|
|
59
|
+
|
|
60
|
+
Version must match: `YY.MINOR.PATCH` or `YY.MINOR.PATCH.RC` (e.g. `26.1.1` or `26.1.1.5` for rc5).
|
|
61
|
+
|
|
62
|
+
### How to release
|
|
63
|
+
|
|
64
|
+
1. Go to **Actions** → **Release Agent OS** → **Run workflow**.
|
|
65
|
+
2. Enter the **version** (e.g. `26.1.1` or `26.1.1.5` for rc5).
|
|
66
|
+
3. Run the workflow.
|
|
67
|
+
|
|
68
|
+
The workflow will:
|
|
69
|
+
|
|
70
|
+
1. Bump the version and create the Git tag (e.g. `agent-os-v26.2.1` or `agent-os-v26.2.1.5`).
|
|
71
|
+
2. Publish the **Python package** to PyPI (e.g. `pip install askui-agent-os==26.2.1`).
|
|
72
|
+
3. Build **Agent OS Windows service installers** for AMD64 and ARM64 and upload them to the S3 bucket.
|
|
73
|
+
4. Create a **GitHub Release** with generated release notes (PyPI install instructions and installer download links).
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Summary
|
|
78
|
+
|
|
79
|
+
- **Suite Installers:** Use a **GitHub Release** with a version tag (`26.2.1` or `26.2.1.1`), or run **Build Suite Installer** manually for a single or full matrix.
|
|
80
|
+
- **Agent OS:** Run **Release Agent OS** with a version; it handles tagging, PyPI, Windows installers, and the GitHub Release.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Windows C++ runtime check - verifies minimum Visual C++ Redistributable version."""
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def check_windows_cpp_runtime(
|
|
7
|
+
min_major: int,
|
|
8
|
+
min_minor: int,
|
|
9
|
+
min_patch: int,
|
|
10
|
+
) -> bool:
|
|
11
|
+
"""
|
|
12
|
+
Check if a sufficient Microsoft Visual C++ Redistributable is installed (Windows only).
|
|
13
|
+
|
|
14
|
+
Returns True if not on Windows, or if a compatible runtime is installed.
|
|
15
|
+
Returns False if on Windows and no compatible runtime is found.
|
|
16
|
+
"""
|
|
17
|
+
if platform.system() != "Windows":
|
|
18
|
+
return True
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
import winreg
|
|
22
|
+
except ImportError:
|
|
23
|
+
return True
|
|
24
|
+
|
|
25
|
+
arch = platform.machine().lower()
|
|
26
|
+
if arch in ("amd64", "x86_64"):
|
|
27
|
+
arch_key = "x64"
|
|
28
|
+
elif arch in ("arm64", "aarch64"):
|
|
29
|
+
arch_key = "ARM64"
|
|
30
|
+
else:
|
|
31
|
+
arch_key = "x86"
|
|
32
|
+
|
|
33
|
+
base_path = r"SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes"
|
|
34
|
+
wow_path = r"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes"
|
|
35
|
+
|
|
36
|
+
for root, subkey in [
|
|
37
|
+
(winreg.HKEY_LOCAL_MACHINE, base_path),
|
|
38
|
+
(winreg.HKEY_LOCAL_MACHINE, wow_path),
|
|
39
|
+
]:
|
|
40
|
+
try:
|
|
41
|
+
key_path = f"{subkey}\\{arch_key}"
|
|
42
|
+
with winreg.OpenKey(root, key_path, 0, winreg.KEY_READ) as key:
|
|
43
|
+
try:
|
|
44
|
+
version, _ = winreg.QueryValueEx(key, "Version")
|
|
45
|
+
except OSError:
|
|
46
|
+
continue
|
|
47
|
+
if isinstance(version, str):
|
|
48
|
+
version = version.lstrip("v").strip()
|
|
49
|
+
parts = version.split(".")
|
|
50
|
+
major = int(parts[0]) if parts else 0
|
|
51
|
+
minor = int(parts[1]) if len(parts) > 1 else 0
|
|
52
|
+
patch = int(parts[2]) if len(parts) > 2 else 0
|
|
53
|
+
else:
|
|
54
|
+
continue
|
|
55
|
+
if (
|
|
56
|
+
major > min_major
|
|
57
|
+
or (major == min_major and minor >= min_minor)
|
|
58
|
+
or (
|
|
59
|
+
major == min_major and minor == min_minor and patch >= min_patch
|
|
60
|
+
)
|
|
61
|
+
):
|
|
62
|
+
return True
|
|
63
|
+
except OSError:
|
|
64
|
+
continue
|
|
65
|
+
|
|
66
|
+
return False
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""Public API: single entry point for AskUI Agent OS functionality."""
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from askui_agent_os._runtime_check import (
|
|
7
|
+
check_windows_cpp_runtime,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AgentOS:
|
|
12
|
+
"""
|
|
13
|
+
Platform-specific binaries and helpers for the AskUI Remote Device Controller.
|
|
14
|
+
|
|
15
|
+
Use static methods to get paths, check runtimes, and prepare the environment.
|
|
16
|
+
Setup runs on import; prerequisites (e.g. Windows VC++ runtime check) run on each call.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
_MIN_VC_RUNTIME_MAJOR = 14
|
|
20
|
+
_MIN_VC_RUNTIME_MINOR = 34
|
|
21
|
+
_MIN_VC_RUNTIME_PATCH = 31938
|
|
22
|
+
|
|
23
|
+
@staticmethod
|
|
24
|
+
def setup() -> None:
|
|
25
|
+
"""Prepare the environment: make binary executable. Called on import."""
|
|
26
|
+
AgentOS._make_binary_executable()
|
|
27
|
+
|
|
28
|
+
@staticmethod
|
|
29
|
+
def bin_path() -> Path:
|
|
30
|
+
"""Return the path to the package's bin directory (where binaries are installed)."""
|
|
31
|
+
AgentOS._ensure_prerequisites()
|
|
32
|
+
return AgentOS._get_bin_dir()
|
|
33
|
+
|
|
34
|
+
@staticmethod
|
|
35
|
+
def controller_path() -> Path:
|
|
36
|
+
"""Return the path to the remote device controller binary."""
|
|
37
|
+
AgentOS._ensure_prerequisites()
|
|
38
|
+
return AgentOS._get_remote_device_controller_path()
|
|
39
|
+
|
|
40
|
+
@staticmethod
|
|
41
|
+
def make_executable() -> None:
|
|
42
|
+
"""Make the controller binary executable (no-op on Windows)."""
|
|
43
|
+
AgentOS._ensure_prerequisites()
|
|
44
|
+
AgentOS._make_binary_executable()
|
|
45
|
+
|
|
46
|
+
@staticmethod
|
|
47
|
+
def require_vc_redistributable() -> None:
|
|
48
|
+
"""
|
|
49
|
+
Require a sufficient Microsoft Visual C++ Redistributable on Windows.
|
|
50
|
+
|
|
51
|
+
No-op on non-Windows platforms. On Windows, raises RuntimeError if the
|
|
52
|
+
minimum required version is not found.
|
|
53
|
+
"""
|
|
54
|
+
if not check_windows_cpp_runtime(
|
|
55
|
+
min_major=AgentOS._MIN_VC_RUNTIME_MAJOR,
|
|
56
|
+
min_minor=AgentOS._MIN_VC_RUNTIME_MINOR,
|
|
57
|
+
min_patch=AgentOS._MIN_VC_RUNTIME_PATCH,
|
|
58
|
+
):
|
|
59
|
+
raise RuntimeError(
|
|
60
|
+
f"[AskUI Agent OS]: Microsoft Visual C++ Redistributable (minimum "
|
|
61
|
+
f"{AgentOS._MIN_VC_RUNTIME_MAJOR}.{AgentOS._MIN_VC_RUNTIME_MINOR}.{AgentOS._MIN_VC_RUNTIME_PATCH}) "
|
|
62
|
+
"is required on Windows. Install from: "
|
|
63
|
+
"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
@staticmethod
|
|
67
|
+
def _ensure_prerequisites() -> None:
|
|
68
|
+
"""Run prerequisites (e.g. require Windows VC++ runtime). Called before each operation."""
|
|
69
|
+
AgentOS.require_vc_redistributable()
|
|
70
|
+
|
|
71
|
+
@staticmethod
|
|
72
|
+
def _get_bin_dir() -> Path:
|
|
73
|
+
"""Return the path to the package's bin directory (where binaries are installed)."""
|
|
74
|
+
return Path(__file__).resolve().parent / "bin"
|
|
75
|
+
|
|
76
|
+
@staticmethod
|
|
77
|
+
def _get_remote_device_controller_path() -> Path:
|
|
78
|
+
"""Return the path to the remote device controller binary."""
|
|
79
|
+
binary_name = "AskuiRemoteDeviceController"
|
|
80
|
+
if platform.system() == "Windows":
|
|
81
|
+
binary_name += ".exe"
|
|
82
|
+
return (AgentOS._get_bin_dir() / binary_name).absolute()
|
|
83
|
+
|
|
84
|
+
@staticmethod
|
|
85
|
+
def _make_binary_executable() -> None:
|
|
86
|
+
"""Make the binary executable (no-op on Windows)."""
|
|
87
|
+
if platform.system() == "Windows":
|
|
88
|
+
return
|
|
89
|
+
AgentOS._get_remote_device_controller_path().chmod(0o755)
|
|
90
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""CLI for askui-agent-os."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
|
|
5
|
+
from askui_agent_os import AgentOS
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def main() -> None:
|
|
9
|
+
parser = argparse.ArgumentParser(prog="askui-agent-os")
|
|
10
|
+
subparsers = parser.add_subparsers(dest="command", required=True)
|
|
11
|
+
|
|
12
|
+
path_parser = subparsers.add_parser("get-binary-path")
|
|
13
|
+
path_parser.set_defaults(func=_cmd_controller_path)
|
|
14
|
+
|
|
15
|
+
args = parser.parse_args()
|
|
16
|
+
args.func(args)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _cmd_controller_path(_args: argparse.Namespace) -> None:
|
|
20
|
+
path = AgentOS.controller_path()
|
|
21
|
+
print(path)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if __name__ == "__main__":
|
|
25
|
+
main()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|