holo-desktop-cli 0.0.2__tar.gz → 0.0.4__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.
Files changed (84) hide show
  1. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/PKG-INFO +2 -1
  2. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/README.md +1 -0
  3. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/pyproject.toml +1 -1
  4. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/runtime_install.py +7 -4
  5. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/hosts.py +7 -0
  6. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/tests/e2e/README.md +27 -4
  7. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/.gitignore +0 -0
  8. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/LICENSE +0 -0
  9. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/examples/README.md +0 -0
  10. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/examples/expense_report/README.md +0 -0
  11. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/examples/expense_report/pyproject.toml +0 -0
  12. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/examples/software_qa/README.md +0 -0
  13. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/install/README.md +0 -0
  14. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/__init__.py +0 -0
  15. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/__main__.py +0 -0
  16. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/__init__.py +0 -0
  17. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/client.py +0 -0
  18. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/desktop_lock.py +0 -0
  19. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/event_timings.py +0 -0
  20. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/events.py +0 -0
  21. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/launcher.py +0 -0
  22. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/model_gateway.py +0 -0
  23. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/requests.py +0 -0
  24. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/agent_client/session_runner.py +0 -0
  25. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/__init__.py +0 -0
  26. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/acp.py +0 -0
  27. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/agent_api.py +0 -0
  28. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/bootstrap.py +0 -0
  29. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/doctor.py +0 -0
  30. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/guard.py +0 -0
  31. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/install.py +0 -0
  32. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/login.py +0 -0
  33. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/login_pages.py +0 -0
  34. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/mcp.py +0 -0
  35. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/profile.py +0 -0
  36. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/run.py +0 -0
  37. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/serve.py +0 -0
  38. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/stop.py +0 -0
  39. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/cli/whoami.py +0 -0
  40. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/customization.py +0 -0
  41. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/fs.py +0 -0
  42. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/__init__.py +0 -0
  43. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/nemoclaw/__init__.py +0 -0
  44. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/nemoclaw/bridge_server.py +0 -0
  45. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/nemoclaw/constants.py +0 -0
  46. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/nemoclaw/holo_mcp_bridge.mjs +0 -0
  47. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_integrations/nemoclaw/install.py +0 -0
  48. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_skills/__init__.py +0 -0
  49. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/host_skills/holo-desktop/SKILL.md +0 -0
  50. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/installer_bootstrap.py +0 -0
  51. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/__init__.py +0 -0
  52. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/autostart.py +0 -0
  53. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/channel.py +0 -0
  54. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/gesture.py +0 -0
  55. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/listener.py +0 -0
  56. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/killswitch/macos_tap.py +0 -0
  57. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/py.typed +0 -0
  58. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/settings.py +0 -0
  59. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/__init__.py +0 -0
  60. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-calendar/SKILL.md +0 -0
  61. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-contacts/SKILL.md +0 -0
  62. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-mail/SKILL.md +0 -0
  63. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-messages/SKILL.md +0 -0
  64. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-notes/SKILL.md +0 -0
  65. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-reminders/SKILL.md +0 -0
  66. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/apple-system-settings/SKILL.md +0 -0
  67. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/chrome/SKILL.md +0 -0
  68. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/discord/SKILL.md +0 -0
  69. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/finder/SKILL.md +0 -0
  70. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/notion/SKILL.md +0 -0
  71. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/safari/SKILL.md +0 -0
  72. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/slack/SKILL.md +0 -0
  73. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/macos/spotify/SKILL.md +0 -0
  74. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/chrome/SKILL.md +0 -0
  75. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/discord/SKILL.md +0 -0
  76. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/edge/SKILL.md +0 -0
  77. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/file-explorer/SKILL.md +0 -0
  78. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/notion/SKILL.md +0 -0
  79. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/outlook/SKILL.md +0 -0
  80. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/slack/SKILL.md +0 -0
  81. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/spotify/SKILL.md +0 -0
  82. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/skills/windows/windows-settings/SKILL.md +0 -0
  83. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/terminal/__init__.py +0 -0
  84. {holo_desktop_cli-0.0.2 → holo_desktop_cli-0.0.4}/src/holo_desktop/terminal/feed.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: holo-desktop-cli
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: Vision-language agent that drives real macOS, Linux, and Windows apps. Powered by Holo3; thin client over the hai-agent-runtime agent API.
5
5
  Project-URL: Homepage, https://hcompany.ai
6
6
  Project-URL: Repository, https://github.com/hcompai/holo-desktop-cli
@@ -406,6 +406,7 @@ Each host gets the MCP server in its config, plus a [Skill](https://docs.claude.
406
406
  | `codex` | [Codex](https://github.com/openai/codex) | `~/.agents/skills/` |
407
407
  | `copilot` | [GitHub Copilot CLI](https://github.com/github/copilot-cli) | — |
408
408
  | `cursor` | [Cursor](https://cursor.com) | — |
409
+ | `grok-build` | [Grok Build](https://github.com/xai-org/grok-build) (xAI) | `~/.grok/skills/` |
409
410
  | `hermes` | [Hermes](https://nousresearch.com) | — |
410
411
  | `nemoclaw` | NemoClaw (sandbox bridge) | — |
411
412
  | `openclaw` | [OpenClaw](https://github.com/openclaw/openclaw) | `~/.openclaw/skills/` |
@@ -163,6 +163,7 @@ Each host gets the MCP server in its config, plus a [Skill](https://docs.claude.
163
163
  | `codex` | [Codex](https://github.com/openai/codex) | `~/.agents/skills/` |
164
164
  | `copilot` | [GitHub Copilot CLI](https://github.com/github/copilot-cli) | — |
165
165
  | `cursor` | [Cursor](https://cursor.com) | — |
166
+ | `grok-build` | [Grok Build](https://github.com/xai-org/grok-build) (xAI) | `~/.grok/skills/` |
166
167
  | `hermes` | [Hermes](https://nousresearch.com) | — |
167
168
  | `nemoclaw` | NemoClaw (sandbox bridge) | — |
168
169
  | `openclaw` | [OpenClaw](https://github.com/openclaw/openclaw) | `~/.openclaw/skills/` |
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "holo-desktop-cli"
7
- version = "0.0.2"
7
+ version = "0.0.4"
8
8
  description = "Vision-language agent that drives real macOS, Linux, and Windows apps. Powered by Holo3; thin client over the hai-agent-runtime agent API."
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -25,7 +25,7 @@ from holo_desktop.settings import DOWNLOAD_SHA256_ENV, DOWNLOAD_URL_ENV, Runtime
25
25
 
26
26
  logger = logging.getLogger(__name__)
27
27
 
28
- PINNED_RUNTIME_VERSION = "0.1.8"
28
+ PINNED_RUNTIME_VERSION = "0.1.9"
29
29
  RUNTIME_DIR = Path.home() / ".holo" / "runtime"
30
30
  # Artifacts live under an immutable, version-scoped prefix, so a CDN edge can never serve stale bytes.
31
31
  RUNTIME_CDN_BASE = "https://assets.hcompanyprod.fr/hai-agent-runtime"
@@ -63,17 +63,20 @@ def _artifact(filename: str, sha256: str) -> RuntimeArtifact:
63
63
  MANIFEST: dict[str, RuntimeArtifact] = {
64
64
  "darwin-arm64": _artifact(
65
65
  "hai-agent-runtime-darwin-arm64.zip",
66
- "1aed0055898116732aee031dc4a1235782b2909ee51e0367e2d50bb3be6671c9",
66
+ "c1a8415f0d1e05cd01bca2f2f55b7807d4865e2a838b31aa483c7be5d3791c2c",
67
67
  ),
68
68
  "windows-x86_64": _artifact(
69
69
  "hai-agent-runtime-windows-x86_64.zip",
70
- "4e6b2bcd42af2bb6b22197fcde947327497f5c62fd60d48bc9037730d80dc691",
70
+ "b8ddaf46f24503602fc3d8d8351dfeb15aa7a7b5f1c8fc17d3843249a1ccb523",
71
+ ),
72
+ "linux-x86_64": _artifact(
73
+ "hai-agent-runtime-linux-x86_64.zip",
74
+ "3ef09e1706b100ead1d40384bd319d5b98754f151713226627d7e7a0ee0e30a3",
71
75
  ),
72
76
  }
73
77
 
74
78
  UNIMPLEMENTED_PLATFORMS: dict[str, str] = {
75
79
  "darwin-x86_64": "hai-agent-runtime is not published for macOS Intel yet",
76
- "linux-x86_64": "hai-agent-runtime is not published for Linux yet",
77
80
  }
78
81
 
79
82
 
@@ -236,6 +236,13 @@ CLIENTS: dict[str, Client] = {
236
236
  key_path=("mcpServers", BINARY),
237
237
  leaf={"type": "stdio", "command": BINARY, "args": ["mcp"]},
238
238
  ),
239
+ "grok-build": Client(
240
+ name="Grok Build (xAI)",
241
+ # `grok mcp add` upserts into ~/.grok/config.toml (TOML, so no JSON/YAML merge for us).
242
+ cli_cmd=("grok", "mcp", "add", BINARY, "--", BINARY, "mcp"),
243
+ skills_dir=".grok/skills",
244
+ home_marker=".grok",
245
+ ),
239
246
  "hermes": Client(
240
247
  name="Hermes (NousResearch)",
241
248
  config_path="~/.hermes/config.yaml",
@@ -10,6 +10,11 @@ Run requirements that bite:
10
10
  - **Launch from a user terminal.** macOS TCC attributes Accessibility / Screen
11
11
  Recording to the responsible process; runs spawned from agent/automation
12
12
  contexts inherit a context without grants and synthetic input fails silently.
13
+ - **Linux uses the CI X11 posture.** Linux live runs require Xvfb (or another X11
14
+ display), Openbox, Picom, a session D-Bus with AT-SPI, and the Mousepad,
15
+ Thunar, KCalc, and Google Chrome app pack. The canonical setup is
16
+ `.github/actions/setup-linux-desktop/action.yml`; it also starts the visible
17
+ `Holo E2E Applications` launcher used by cold-start tasks.
13
18
 
14
19
  ## GitHub Actions full-suite QA
15
20
 
@@ -19,13 +24,13 @@ Maintainers can opt in a trusted same-repo PR by applying the `run-holo-full-e2e
19
24
  label. Applying the label starts one run; later pushes do not rerun the suite
20
25
  while the label remains attached. To request another run, remove and reapply the
21
26
  label or use `workflow_dispatch`. The workflow runs the shared 3/3 stable task
22
- catalog on fixed macOS and Windows shard jobs in parallel, executes one task
27
+ catalog on fixed macOS, Windows, and Ubuntu 22.04 shard jobs in parallel, executes one task
23
28
  per pytest invocation inside each shard, appends each task result to the GitHub
24
29
  step summary, uploads `~/.holo`-style e2e artifacts, and writes a final pass-rate
25
30
  report.
26
31
 
27
- The workflow uses four shards per OS. With the current 7-task stable catalog,
28
- that means eight desktop jobs total and roughly one to two tasks per shard. This
32
+ The workflow uses four shards per OS. With the current 8-task stable catalog,
33
+ that means twelve desktop jobs total and two tasks per shard. This
29
34
  keeps macOS concurrency below the common five-job hosted-runner cap while still
30
35
  reducing wall-clock time compared with one sequential runner per OS.
31
36
 
@@ -33,6 +38,24 @@ The workflow does not run with secrets on forked PRs. Use `workflow_dispatch` fo
33
38
  manual branch or release-candidate validation.
34
39
 
35
40
  For release QA, run the workflow three times and compare the per-task pass
36
- buckets. Keep tasks in HoloDesktop CI only when they pass 3/3 on both hosted
41
+ buckets. Keep tasks in HoloDesktop CI only when they pass 3/3 on all three hosted
37
42
  platforms; remove hard or inconsistent task fixtures from this suite until they
38
43
  are consistently reliable.
44
+
45
+ ## Linux local reproduction
46
+
47
+ On Ubuntu 22.04, reproduce the hosted posture by following the package and
48
+ session setup in `.github/actions/setup-linux-desktop/action.yml`, then run one
49
+ task with the normal live flags:
50
+
51
+ ```bash
52
+ uv sync --all-groups
53
+ uv run pytest tests/e2e/test_live_foreground.py \
54
+ --run-holo-live-foreground \
55
+ --holo-live-task-ids calculator_ci_smoke \
56
+ --holo-live-timeout 180 \
57
+ --capture=tee-sys -q
58
+ ```
59
+
60
+ This Linux lane proves the shipped x86_64 managed runtime on Ubuntu 22.04 under
61
+ X11. It does not claim Wayland, Linux ARM64, GPU, or broad distro compatibility.