pilot-daemon 0.9.0__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 (297) hide show
  1. pilot_daemon-0.9.0/.gitignore +0 -0
  2. pilot_daemon-0.9.0/PKG-INFO +128 -0
  3. pilot_daemon-0.9.0/README.md +38 -0
  4. pilot_daemon-0.9.0/benchmarks/react_latency.py +191 -0
  5. pilot_daemon-0.9.0/pilot/__init__.py +3 -0
  6. pilot_daemon-0.9.0/pilot/actions.py +1023 -0
  7. pilot_daemon-0.9.0/pilot/agents/__init__.py +1 -0
  8. pilot_daemon-0.9.0/pilot/agents/_code_preamble.py +78 -0
  9. pilot_daemon-0.9.0/pilot/agents/autonomous.py +388 -0
  10. pilot_daemon-0.9.0/pilot/agents/autonomous_healing.py +275 -0
  11. pilot_daemon-0.9.0/pilot/agents/background.py +272 -0
  12. pilot_daemon-0.9.0/pilot/agents/base_agent.py +253 -0
  13. pilot_daemon-0.9.0/pilot/agents/calendar_agent.py +223 -0
  14. pilot_daemon-0.9.0/pilot/agents/chain_planner.py +327 -0
  15. pilot_daemon-0.9.0/pilot/agents/circuit_breaker.py +108 -0
  16. pilot_daemon-0.9.0/pilot/agents/code_agent.py +118 -0
  17. pilot_daemon-0.9.0/pilot/agents/code_sanitizer.py +104 -0
  18. pilot_daemon-0.9.0/pilot/agents/comm_agent.py +107 -0
  19. pilot_daemon-0.9.0/pilot/agents/decomposer.py +208 -0
  20. pilot_daemon-0.9.0/pilot/agents/destructive_critic.py +366 -0
  21. pilot_daemon-0.9.0/pilot/agents/email_agent.py +608 -0
  22. pilot_daemon-0.9.0/pilot/agents/executor.py +2211 -0
  23. pilot_daemon-0.9.0/pilot/agents/forensics_agent.py +149 -0
  24. pilot_daemon-0.9.0/pilot/agents/git_agent.py +447 -0
  25. pilot_daemon-0.9.0/pilot/agents/monitor_agent.py +186 -0
  26. pilot_daemon-0.9.0/pilot/agents/multi_agent.py +241 -0
  27. pilot_daemon-0.9.0/pilot/agents/narrator.py +180 -0
  28. pilot_daemon-0.9.0/pilot/agents/orchestrator.py +741 -0
  29. pilot_daemon-0.9.0/pilot/agents/plan_differ.py +119 -0
  30. pilot_daemon-0.9.0/pilot/agents/planner.py +1572 -0
  31. pilot_daemon-0.9.0/pilot/agents/proactive.py +311 -0
  32. pilot_daemon-0.9.0/pilot/agents/prompt_improver.py +337 -0
  33. pilot_daemon-0.9.0/pilot/agents/reflector.py +260 -0
  34. pilot_daemon-0.9.0/pilot/agents/registry.py +85 -0
  35. pilot_daemon-0.9.0/pilot/agents/rss_agent.py +261 -0
  36. pilot_daemon-0.9.0/pilot/agents/sandbox.py +434 -0
  37. pilot_daemon-0.9.0/pilot/agents/screen_vision.py +633 -0
  38. pilot_daemon-0.9.0/pilot/agents/self_heal.py +270 -0
  39. pilot_daemon-0.9.0/pilot/agents/semantic_search_agent.py +140 -0
  40. pilot_daemon-0.9.0/pilot/agents/ssh_agent.py +304 -0
  41. pilot_daemon-0.9.0/pilot/agents/subconscious.py +418 -0
  42. pilot_daemon-0.9.0/pilot/agents/system_agent.py +214 -0
  43. pilot_daemon-0.9.0/pilot/agents/threat_containment.py +585 -0
  44. pilot_daemon-0.9.0/pilot/agents/user_supervision.py +181 -0
  45. pilot_daemon-0.9.0/pilot/agents/verifier.py +194 -0
  46. pilot_daemon-0.9.0/pilot/agents/voice_gesture_workflow.py +334 -0
  47. pilot_daemon-0.9.0/pilot/agents/web_agent.py +136 -0
  48. pilot_daemon-0.9.0/pilot/changelog.py +197 -0
  49. pilot_daemon-0.9.0/pilot/cognitive/__init__.py +1 -0
  50. pilot_daemon-0.9.0/pilot/cognitive/ambient_intelligence.py +417 -0
  51. pilot_daemon-0.9.0/pilot/cognitive/attention_scorer.py +273 -0
  52. pilot_daemon-0.9.0/pilot/cognitive/biometric_loop.py +447 -0
  53. pilot_daemon-0.9.0/pilot/cognitive/clipboard_manager.py +38 -0
  54. pilot_daemon-0.9.0/pilot/cognitive/cognitive_engine.py +489 -0
  55. pilot_daemon-0.9.0/pilot/cognitive/cognitive_handoff.py +461 -0
  56. pilot_daemon-0.9.0/pilot/cognitive/cognitive_offload.py +397 -0
  57. pilot_daemon-0.9.0/pilot/cognitive/evolving_persona.py +499 -0
  58. pilot_daemon-0.9.0/pilot/cognitive/hub.py +428 -0
  59. pilot_daemon-0.9.0/pilot/cognitive/intent_predictor.py +335 -0
  60. pilot_daemon-0.9.0/pilot/cognitive/neural_bridge.py +560 -0
  61. pilot_daemon-0.9.0/pilot/cognitive/quantum_cognitive.py +379 -0
  62. pilot_daemon-0.9.0/pilot/cognitive/stress_gate.py +265 -0
  63. pilot_daemon-0.9.0/pilot/config.py +1024 -0
  64. pilot_daemon-0.9.0/pilot/db/__init__.py +1 -0
  65. pilot_daemon-0.9.0/pilot/db/redis_adapter.py +210 -0
  66. pilot_daemon-0.9.0/pilot/db/sqlite_pool.py +147 -0
  67. pilot_daemon-0.9.0/pilot/export_logs.py +55 -0
  68. pilot_daemon-0.9.0/pilot/logger.py +19 -0
  69. pilot_daemon-0.9.0/pilot/memory/__init__.py +1 -0
  70. pilot_daemon-0.9.0/pilot/memory/context_compressor.py +198 -0
  71. pilot_daemon-0.9.0/pilot/memory/semantic.py +43 -0
  72. pilot_daemon-0.9.0/pilot/memory/sliding_window.py +160 -0
  73. pilot_daemon-0.9.0/pilot/memory/store.py +476 -0
  74. pilot_daemon-0.9.0/pilot/memory/workspace_index.py +229 -0
  75. pilot_daemon-0.9.0/pilot/models/CACHE.md +98 -0
  76. pilot_daemon-0.9.0/pilot/models/__init__.py +1 -0
  77. pilot_daemon-0.9.0/pilot/models/budget_tracker.py +341 -0
  78. pilot_daemon-0.9.0/pilot/models/cache.py +291 -0
  79. pilot_daemon-0.9.0/pilot/models/cloud.py +334 -0
  80. pilot_daemon-0.9.0/pilot/models/gpu_utils.py +235 -0
  81. pilot_daemon-0.9.0/pilot/models/llamacpp.py +100 -0
  82. pilot_daemon-0.9.0/pilot/models/ollama.py +198 -0
  83. pilot_daemon-0.9.0/pilot/models/rate_limiter.py +81 -0
  84. pilot_daemon-0.9.0/pilot/models/router.py +529 -0
  85. pilot_daemon-0.9.0/pilot/multimodal/__init__.py +1 -0
  86. pilot_daemon-0.9.0/pilot/multimodal/fusion.py +585 -0
  87. pilot_daemon-0.9.0/pilot/network/__init__.py +14 -0
  88. pilot_daemon-0.9.0/pilot/network/collab_executor.py +285 -0
  89. pilot_daemon-0.9.0/pilot/network/mesh.py +373 -0
  90. pilot_daemon-0.9.0/pilot/network/peer_connection.py +215 -0
  91. pilot_daemon-0.9.0/pilot/network/peer_discovery.py +262 -0
  92. pilot_daemon-0.9.0/pilot/network/skill_sync.py +129 -0
  93. pilot_daemon-0.9.0/pilot/plugins/__init__.py +534 -0
  94. pilot_daemon-0.9.0/pilot/plugins/developer/developer_plugin.py +154 -0
  95. pilot_daemon-0.9.0/pilot/plugins/developer/manifest.json +59 -0
  96. pilot_daemon-0.9.0/pilot/plugins/homeassistant/homeassistant_plugin.py +223 -0
  97. pilot_daemon-0.9.0/pilot/plugins/homeassistant/manifest.json +75 -0
  98. pilot_daemon-0.9.0/pilot/plugins/media/manifest.json +75 -0
  99. pilot_daemon-0.9.0/pilot/plugins/media/media_plugin.py +264 -0
  100. pilot_daemon-0.9.0/pilot/plugins/wasm_runtime.py +216 -0
  101. pilot_daemon-0.9.0/pilot/reasoning/__init__.py +1 -0
  102. pilot_daemon-0.9.0/pilot/reasoning/events.py +392 -0
  103. pilot_daemon-0.9.0/pilot/security/__init__.py +1 -0
  104. pilot_daemon-0.9.0/pilot/security/audit.py +135 -0
  105. pilot_daemon-0.9.0/pilot/security/gateway.py +437 -0
  106. pilot_daemon-0.9.0/pilot/security/gateway_audit.py +372 -0
  107. pilot_daemon-0.9.0/pilot/security/permission_audit.py +311 -0
  108. pilot_daemon-0.9.0/pilot/security/permissions.py +88 -0
  109. pilot_daemon-0.9.0/pilot/security/risk_gate.py +89 -0
  110. pilot_daemon-0.9.0/pilot/security/risk_gate_weights.npz +0 -0
  111. pilot_daemon-0.9.0/pilot/security/risk_model.py +180 -0
  112. pilot_daemon-0.9.0/pilot/security/risk_observation.py +90 -0
  113. pilot_daemon-0.9.0/pilot/security/risk_patterns.py +54 -0
  114. pilot_daemon-0.9.0/pilot/security/risk_safety.py +107 -0
  115. pilot_daemon-0.9.0/pilot/security/sandbox.py +222 -0
  116. pilot_daemon-0.9.0/pilot/security/sanitizer.py +317 -0
  117. pilot_daemon-0.9.0/pilot/security/validator.py +332 -0
  118. pilot_daemon-0.9.0/pilot/security/vault.py +282 -0
  119. pilot_daemon-0.9.0/pilot/server.py +5337 -0
  120. pilot_daemon-0.9.0/pilot/skills/__init__.py +11 -0
  121. pilot_daemon-0.9.0/pilot/skills/base.py +48 -0
  122. pilot_daemon-0.9.0/pilot/skills/bundled/__init__.py +1 -0
  123. pilot_daemon-0.9.0/pilot/skills/bundled/example_echo.py +31 -0
  124. pilot_daemon-0.9.0/pilot/skills/loader.py +191 -0
  125. pilot_daemon-0.9.0/pilot/swarm/__init__.py +17 -0
  126. pilot_daemon-0.9.0/pilot/swarm/swarm_manager.py +279 -0
  127. pilot_daemon-0.9.0/pilot/swarm/swarm_router_agent.py +169 -0
  128. pilot_daemon-0.9.0/pilot/system/__init__.py +1 -0
  129. pilot_daemon-0.9.0/pilot/system/api_client.py +316 -0
  130. pilot_daemon-0.9.0/pilot/system/apt.py +68 -0
  131. pilot_daemon-0.9.0/pilot/system/browser.py +743 -0
  132. pilot_daemon-0.9.0/pilot/system/browser_backend.py +52 -0
  133. pilot_daemon-0.9.0/pilot/system/clipboard.py +77 -0
  134. pilot_daemon-0.9.0/pilot/system/code_exec.py +354 -0
  135. pilot_daemon-0.9.0/pilot/system/context.py +249 -0
  136. pilot_daemon-0.9.0/pilot/system/daemon_manager.py +233 -0
  137. pilot_daemon-0.9.0/pilot/system/dbus_client.py +95 -0
  138. pilot_daemon-0.9.0/pilot/system/dom_diff.py +593 -0
  139. pilot_daemon-0.9.0/pilot/system/download.py +54 -0
  140. pilot_daemon-0.9.0/pilot/system/environment.py +83 -0
  141. pilot_daemon-0.9.0/pilot/system/file_intel.py +388 -0
  142. pilot_daemon-0.9.0/pilot/system/filesystem.py +241 -0
  143. pilot_daemon-0.9.0/pilot/system/gesture.py +232 -0
  144. pilot_daemon-0.9.0/pilot/system/git_conflict.py +151 -0
  145. pilot_daemon-0.9.0/pilot/system/gnome.py +66 -0
  146. pilot_daemon-0.9.0/pilot/system/hand_landmarker.task +0 -0
  147. pilot_daemon-0.9.0/pilot/system/http_client.py +47 -0
  148. pilot_daemon-0.9.0/pilot/system/input_control.py +218 -0
  149. pilot_daemon-0.9.0/pilot/system/input_hook.py +163 -0
  150. pilot_daemon-0.9.0/pilot/system/linux_syscall_guard.py +189 -0
  151. pilot_daemon-0.9.0/pilot/system/multimodal.py +133 -0
  152. pilot_daemon-0.9.0/pilot/system/network.py +99 -0
  153. pilot_daemon-0.9.0/pilot/system/package_mgr.py +160 -0
  154. pilot_daemon-0.9.0/pilot/system/platform_detect.py +135 -0
  155. pilot_daemon-0.9.0/pilot/system/plugins.py +338 -0
  156. pilot_daemon-0.9.0/pilot/system/pocket_tts.py +106 -0
  157. pilot_daemon-0.9.0/pilot/system/power.py +105 -0
  158. pilot_daemon-0.9.0/pilot/system/processes.py +146 -0
  159. pilot_daemon-0.9.0/pilot/system/pty_session.py +238 -0
  160. pilot_daemon-0.9.0/pilot/system/sandbox_exec.py +594 -0
  161. pilot_daemon-0.9.0/pilot/system/scheduler.py +174 -0
  162. pilot_daemon-0.9.0/pilot/system/screen.py +136 -0
  163. pilot_daemon-0.9.0/pilot/system/snapshots.py +201 -0
  164. pilot_daemon-0.9.0/pilot/system/sysinfo.py +241 -0
  165. pilot_daemon-0.9.0/pilot/system/systemctl.py +79 -0
  166. pilot_daemon-0.9.0/pilot/system/triggers.py +366 -0
  167. pilot_daemon-0.9.0/pilot/system/vad.py +108 -0
  168. pilot_daemon-0.9.0/pilot/system/vision.py +1103 -0
  169. pilot_daemon-0.9.0/pilot/system/voice.py +961 -0
  170. pilot_daemon-0.9.0/pilot/system/voice_calibration.py +210 -0
  171. pilot_daemon-0.9.0/pilot/system/volume.py +102 -0
  172. pilot_daemon-0.9.0/pilot/system/window_mgr.py +196 -0
  173. pilot_daemon-0.9.0/pilot/testing/__init__.py +1 -0
  174. pilot_daemon-0.9.0/pilot/testing/replay.py +357 -0
  175. pilot_daemon-0.9.0/pilot/tools/__init__.py +1 -0
  176. pilot_daemon-0.9.0/pilot/tools/forensics/__init__.py +18 -0
  177. pilot_daemon-0.9.0/pilot/tools/forensics/correlate_sessions.py +35 -0
  178. pilot_daemon-0.9.0/pilot/tools/forensics/detect_spikes.py +127 -0
  179. pilot_daemon-0.9.0/pilot/tools/forensics/extract_auth_events.py +88 -0
  180. pilot_daemon-0.9.0/pilot/tools/forensics/parse_syslog.py +140 -0
  181. pilot_daemon-0.9.0/pilot/workflows/__init__.py +0 -0
  182. pilot_daemon-0.9.0/pilot/workflows/checkpoints.py +252 -0
  183. pilot_daemon-0.9.0/pilot/workflows/voice_gesture_workflows.py +399 -0
  184. pilot_daemon-0.9.0/pilot-cli.py +252 -0
  185. pilot_daemon-0.9.0/pyproject.toml +139 -0
  186. pilot_daemon-0.9.0/requirements-lock.txt +616 -0
  187. pilot_daemon-0.9.0/ruff.toml +34 -0
  188. pilot_daemon-0.9.0/scripts/collect_risk_training_data.py +206 -0
  189. pilot_daemon-0.9.0/scripts/risk_dataset.jsonl +4200 -0
  190. pilot_daemon-0.9.0/scripts/train_risk_gate.py +163 -0
  191. pilot_daemon-0.9.0/test_8bit.py +14 -0
  192. pilot_daemon-0.9.0/test_fp16.py +17 -0
  193. pilot_daemon-0.9.0/test_hf.py +16 -0
  194. pilot_daemon-0.9.0/tests/__init__.py +0 -0
  195. pilot_daemon-0.9.0/tests/conftest.py +151 -0
  196. pilot_daemon-0.9.0/tests/demo_cache.py +291 -0
  197. pilot_daemon-0.9.0/tests/processes_test.py +335 -0
  198. pilot_daemon-0.9.0/tests/test_abort_rpc.py +138 -0
  199. pilot_daemon-0.9.0/tests/test_action_permissions.py +111 -0
  200. pilot_daemon-0.9.0/tests/test_async_audit_logger.py +52 -0
  201. pilot_daemon-0.9.0/tests/test_autonomous_daemon_speech.py +88 -0
  202. pilot_daemon-0.9.0/tests/test_autonomous_healing.py +228 -0
  203. pilot_daemon-0.9.0/tests/test_broadcast_notification.py +164 -0
  204. pilot_daemon-0.9.0/tests/test_budget_tracker.py +212 -0
  205. pilot_daemon-0.9.0/tests/test_budget_tracker_pool.py +45 -0
  206. pilot_daemon-0.9.0/tests/test_budget_tracker_tasks.py +138 -0
  207. pilot_daemon-0.9.0/tests/test_calendar_agent.py +81 -0
  208. pilot_daemon-0.9.0/tests/test_circuit_breaker.py +269 -0
  209. pilot_daemon-0.9.0/tests/test_cloud_client.py +120 -0
  210. pilot_daemon-0.9.0/tests/test_cognitive_engine.py +260 -0
  211. pilot_daemon-0.9.0/tests/test_config_paths.py +174 -0
  212. pilot_daemon-0.9.0/tests/test_context_compressor.py +163 -0
  213. pilot_daemon-0.9.0/tests/test_continuous_recorder.py +101 -0
  214. pilot_daemon-0.9.0/tests/test_cursor_handlers.py +68 -0
  215. pilot_daemon-0.9.0/tests/test_daemon_manager.py +162 -0
  216. pilot_daemon-0.9.0/tests/test_data_dir_validation.py +60 -0
  217. pilot_daemon-0.9.0/tests/test_decomposer.py +565 -0
  218. pilot_daemon-0.9.0/tests/test_destructive_critic.py +121 -0
  219. pilot_daemon-0.9.0/tests/test_deterministic_replay.py +132 -0
  220. pilot_daemon-0.9.0/tests/test_directory_summary.py +52 -0
  221. pilot_daemon-0.9.0/tests/test_dom_diff.py +652 -0
  222. pilot_daemon-0.9.0/tests/test_email_agent_mocked.py +109 -0
  223. pilot_daemon-0.9.0/tests/test_execute_tracked.py +194 -0
  224. pilot_daemon-0.9.0/tests/test_executor_batch_attribution.py +78 -0
  225. pilot_daemon-0.9.0/tests/test_executor_daemon_speech.py +121 -0
  226. pilot_daemon-0.9.0/tests/test_executor_narrator_wiring.py +249 -0
  227. pilot_daemon-0.9.0/tests/test_firecracker_sandbox.py +63 -0
  228. pilot_daemon-0.9.0/tests/test_fusion.py +255 -0
  229. pilot_daemon-0.9.0/tests/test_gateway_audit.py +183 -0
  230. pilot_daemon-0.9.0/tests/test_gateway_integration.py +158 -0
  231. pilot_daemon-0.9.0/tests/test_gateway_policy.py +172 -0
  232. pilot_daemon-0.9.0/tests/test_gateway_rpc_handlers.py +132 -0
  233. pilot_daemon-0.9.0/tests/test_gaze_event_rpc.py +51 -0
  234. pilot_daemon-0.9.0/tests/test_gaze_tracking_config.py +18 -0
  235. pilot_daemon-0.9.0/tests/test_gesture_workflow_config.py +53 -0
  236. pilot_daemon-0.9.0/tests/test_git_agent.py +210 -0
  237. pilot_daemon-0.9.0/tests/test_health_ready.py +178 -0
  238. pilot_daemon-0.9.0/tests/test_input_hook_buffer.py +142 -0
  239. pilot_daemon-0.9.0/tests/test_ipc_integration.py +251 -0
  240. pilot_daemon-0.9.0/tests/test_linux_syscall_guard.py +83 -0
  241. pilot_daemon-0.9.0/tests/test_memory_config.py +38 -0
  242. pilot_daemon-0.9.0/tests/test_memory_store.py +433 -0
  243. pilot_daemon-0.9.0/tests/test_narration_config.py +34 -0
  244. pilot_daemon-0.9.0/tests/test_narration_rpc.py +55 -0
  245. pilot_daemon-0.9.0/tests/test_narrator.py +221 -0
  246. pilot_daemon-0.9.0/tests/test_orchestrator_budget.py +179 -0
  247. pilot_daemon-0.9.0/tests/test_orchestrator_scope_override.py +72 -0
  248. pilot_daemon-0.9.0/tests/test_permission_escalation_audit.py +86 -0
  249. pilot_daemon-0.9.0/tests/test_plan_differ.py +139 -0
  250. pilot_daemon-0.9.0/tests/test_plugin_signatures.py +167 -0
  251. pilot_daemon-0.9.0/tests/test_pocket_tts.py +165 -0
  252. pilot_daemon-0.9.0/tests/test_proxy_config.py +55 -0
  253. pilot_daemon-0.9.0/tests/test_pty_session.py +140 -0
  254. pilot_daemon-0.9.0/tests/test_rate_limiter.py +148 -0
  255. pilot_daemon-0.9.0/tests/test_react_latency.py +59 -0
  256. pilot_daemon-0.9.0/tests/test_redis_adapter.py +300 -0
  257. pilot_daemon-0.9.0/tests/test_risk_gate.py +47 -0
  258. pilot_daemon-0.9.0/tests/test_risk_model.py +97 -0
  259. pilot_daemon-0.9.0/tests/test_risk_observation.py +23 -0
  260. pilot_daemon-0.9.0/tests/test_risk_patterns.py +68 -0
  261. pilot_daemon-0.9.0/tests/test_risk_safety.py +83 -0
  262. pilot_daemon-0.9.0/tests/test_risk_score_wiring.py +78 -0
  263. pilot_daemon-0.9.0/tests/test_router_budget_gating.py +109 -0
  264. pilot_daemon-0.9.0/tests/test_rss_agent.py +152 -0
  265. pilot_daemon-0.9.0/tests/test_sandbox_gateway_impacts.py +119 -0
  266. pilot_daemon-0.9.0/tests/test_sandbox_target_assessment.py +163 -0
  267. pilot_daemon-0.9.0/tests/test_sanitizer_security.py +54 -0
  268. pilot_daemon-0.9.0/tests/test_screen_vision_linux.py +125 -0
  269. pilot_daemon-0.9.0/tests/test_screen_vision_timeout.py +260 -0
  270. pilot_daemon-0.9.0/tests/test_self_healing_config.py +48 -0
  271. pilot_daemon-0.9.0/tests/test_self_healing_rpc.py +51 -0
  272. pilot_daemon-0.9.0/tests/test_sqlite_pool.py +104 -0
  273. pilot_daemon-0.9.0/tests/test_ssh_agent_schema.py +29 -0
  274. pilot_daemon-0.9.0/tests/test_stress_gate.py +88 -0
  275. pilot_daemon-0.9.0/tests/test_supervision_config.py +59 -0
  276. pilot_daemon-0.9.0/tests/test_supervision_rpc.py +216 -0
  277. pilot_daemon-0.9.0/tests/test_sysinfo.py +46 -0
  278. pilot_daemon-0.9.0/tests/test_threat_containment.py +484 -0
  279. pilot_daemon-0.9.0/tests/test_user_supervision.py +327 -0
  280. pilot_daemon-0.9.0/tests/test_utils.py +454 -0
  281. pilot_daemon-0.9.0/tests/test_vad.py +87 -0
  282. pilot_daemon-0.9.0/tests/test_validator_security.py +56 -0
  283. pilot_daemon-0.9.0/tests/test_vault_machine_id.py +192 -0
  284. pilot_daemon-0.9.0/tests/test_vision_backend_config.py +18 -0
  285. pilot_daemon-0.9.0/tests/test_voice_barge_in.py +105 -0
  286. pilot_daemon-0.9.0/tests/test_voice_calibration.py +148 -0
  287. pilot_daemon-0.9.0/tests/test_voice_command_dispatch.py +106 -0
  288. pilot_daemon-0.9.0/tests/test_voice_gesture_workflow_engine.py +416 -0
  289. pilot_daemon-0.9.0/tests/test_voice_gesture_workflow_rpc_handlers.py +217 -0
  290. pilot_daemon-0.9.0/tests/test_voice_gesture_workflow_store.py +191 -0
  291. pilot_daemon-0.9.0/tests/test_voice_pocket_tts_dispatch.py +119 -0
  292. pilot_daemon-0.9.0/tests/test_voice_supersede.py +137 -0
  293. pilot_daemon-0.9.0/tests/test_voice_vad_config.py +46 -0
  294. pilot_daemon-0.9.0/tests/test_voice_whisper_cache.py +66 -0
  295. pilot_daemon-0.9.0/tests/test_wasm_plugin.py +512 -0
  296. pilot_daemon-0.9.0/tests/test_workflow_checkpoints.py +130 -0
  297. pilot_daemon-0.9.0/tests/test_workspace_index.py +113 -0
Binary file
@@ -0,0 +1,128 @@
1
+ Metadata-Version: 2.4
2
+ Name: pilot-daemon
3
+ Version: 0.9.0
4
+ Summary: AI-powered autonomous computer agent — full system control
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: aiofiles>=24.1
8
+ Requires-Dist: aiosqlite>=0.20
9
+ Requires-Dist: caldav>=1.0.0
10
+ Requires-Dist: cryptography>=43.0
11
+ Requires-Dist: httpx>=0.27
12
+ Requires-Dist: icalendar>=5.0.0
13
+ Requires-Dist: keyring>=25.0
14
+ Requires-Dist: numpy==2.2.6
15
+ Requires-Dist: psutil>=5.9
16
+ Requires-Dist: pydantic>=2.6
17
+ Requires-Dist: scikit-learn>=1.3.0
18
+ Requires-Dist: tiktoken>=0.7
19
+ Requires-Dist: tomli-w>=1.0
20
+ Requires-Dist: tomli>=2.0; python_version < '3.12'
21
+ Requires-Dist: websockets>=13.0
22
+ Provides-Extra: all
23
+ Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
24
+ Requires-Dist: chromadb>=0.5; extra == 'all'
25
+ Requires-Dist: easyocr>=1.7; extra == 'all'
26
+ Requires-Dist: faiss-cpu>=1.7.0; extra == 'all'
27
+ Requires-Dist: mediapipe>=0.10.11; extra == 'all'
28
+ Requires-Dist: openai-whisper>=20231117; extra == 'all'
29
+ Requires-Dist: opencv-python>=4.9.0.80; extra == 'all'
30
+ Requires-Dist: openpyxl>=3.1; extra == 'all'
31
+ Requires-Dist: paramiko>=3.4; extra == 'all'
32
+ Requires-Dist: pillow>=10.0; extra == 'all'
33
+ Requires-Dist: playwright>=1.40; extra == 'all'
34
+ Requires-Dist: pocket-tts>=1.0; extra == 'all'
35
+ Requires-Dist: pyautogui>=0.9; extra == 'all'
36
+ Requires-Dist: pynput>=1.7; extra == 'all'
37
+ Requires-Dist: pypdf>=4.0; extra == 'all'
38
+ Requires-Dist: pyperclip>=1.8; extra == 'all'
39
+ Requires-Dist: python-docx>=1.0; extra == 'all'
40
+ Requires-Dist: secretstorage>=3.3; (sys_platform == 'linux') and extra == 'all'
41
+ Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
42
+ Requires-Dist: sounddevice>=0.4; extra == 'all'
43
+ Requires-Dist: wasmtime>=18.0; extra == 'all'
44
+ Requires-Dist: zeroconf>=0.131; extra == 'all'
45
+ Provides-Extra: automation
46
+ Requires-Dist: pillow>=10.0; extra == 'automation'
47
+ Requires-Dist: pyautogui>=0.9; extra == 'automation'
48
+ Requires-Dist: pyperclip>=1.8; extra == 'automation'
49
+ Provides-Extra: browser
50
+ Requires-Dist: playwright>=1.40; extra == 'browser'
51
+ Provides-Extra: dev
52
+ Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
53
+ Requires-Dist: pytest>=8.0; extra == 'dev'
54
+ Requires-Dist: ruff>=0.5; extra == 'dev'
55
+ Provides-Extra: documents
56
+ Requires-Dist: beautifulsoup4>=4.12; extra == 'documents'
57
+ Requires-Dist: openpyxl>=3.1; extra == 'documents'
58
+ Requires-Dist: pypdf>=4.0; extra == 'documents'
59
+ Requires-Dist: python-docx>=1.0; extra == 'documents'
60
+ Provides-Extra: full
61
+ Requires-Dist: chromadb>=0.5; extra == 'full'
62
+ Requires-Dist: faiss-cpu>=1.7.0; extra == 'full'
63
+ Requires-Dist: pyperclip>=1.8; extra == 'full'
64
+ Requires-Dist: secretstorage>=3.3; (sys_platform == 'linux') and extra == 'full'
65
+ Requires-Dist: sentence-transformers>=2.2.0; extra == 'full'
66
+ Requires-Dist: zeroconf>=0.131; extra == 'full'
67
+ Provides-Extra: llamacpp
68
+ Requires-Dist: llama-cpp-python>=0.3; extra == 'llamacpp'
69
+ Requires-Dist: pynvml>=11.5; extra == 'llamacpp'
70
+ Provides-Extra: network
71
+ Requires-Dist: zeroconf>=0.131; extra == 'network'
72
+ Provides-Extra: pty
73
+ Requires-Dist: ptyprocess>=0.7; (sys_platform != 'win32') and extra == 'pty'
74
+ Provides-Extra: ssh
75
+ Requires-Dist: paramiko>=3.4; extra == 'ssh'
76
+ Provides-Extra: supervision
77
+ Requires-Dist: pynput>=1.7; extra == 'supervision'
78
+ Provides-Extra: vision
79
+ Requires-Dist: easyocr>=1.7; extra == 'vision'
80
+ Requires-Dist: mediapipe>=0.10.11; extra == 'vision'
81
+ Requires-Dist: opencv-python>=4.9.0.80; extra == 'vision'
82
+ Requires-Dist: pillow>=10.0; extra == 'vision'
83
+ Provides-Extra: voice
84
+ Requires-Dist: openai-whisper>=20231117; extra == 'voice'
85
+ Requires-Dist: pocket-tts>=1.0; extra == 'voice'
86
+ Requires-Dist: sounddevice>=0.4; extra == 'voice'
87
+ Provides-Extra: wasm
88
+ Requires-Dist: wasmtime>=18.0; extra == 'wasm'
89
+ Description-Content-Type: text/markdown
90
+
91
+ # Heliox OS Daemon
92
+
93
+ Python backend for the Heliox OS AI System Control Agent. Provides the agent system (Planner, Executor, Verifier, Code Sanitizer), security layer, and system interface modules.
94
+
95
+ See the [main README](../README.md) for full project documentation.
96
+
97
+ ## SSH Agent (Remote Host Execution)
98
+
99
+ Heliox OS includes an optional `SshAgent` that can execute `ssh_command` / `ssh_script` actions on **pre-configured** remote hosts using Paramiko.
100
+
101
+ ### Install
102
+
103
+ Install the optional SSH dependency set:
104
+
105
+ ```bash
106
+ pip install "pilot-daemon[ssh]"
107
+ ```
108
+
109
+ ### Configure allowed hosts
110
+
111
+ In your `config.toml`, enable SSH and define allowed destinations (aliases only):
112
+
113
+ ```toml
114
+ [ssh]
115
+ enabled = true
116
+ connect_timeout_seconds = 10
117
+ allowed_hosts = [
118
+ { name = "prod-1", hostname = "10.0.0.10", port = 22, username = "ubuntu", private_key_provider = "ssh_prod_1_key", strict_host_key_checking = true },
119
+ ]
120
+ ```
121
+
122
+ ### Store SSH keys in the KeyVault
123
+
124
+ Store the private key PEM in the encrypted vault using the JSON-RPC method `store_api_key` with `provider=<private_key_provider>`.
125
+
126
+ Notes:
127
+ - The vault stores arbitrary provider→secret strings; SSH keys are treated the same as API keys.
128
+ - Keys/passphrases are never logged and are only decrypted at call time.
@@ -0,0 +1,38 @@
1
+ # Heliox OS Daemon
2
+
3
+ Python backend for the Heliox OS AI System Control Agent. Provides the agent system (Planner, Executor, Verifier, Code Sanitizer), security layer, and system interface modules.
4
+
5
+ See the [main README](../README.md) for full project documentation.
6
+
7
+ ## SSH Agent (Remote Host Execution)
8
+
9
+ Heliox OS includes an optional `SshAgent` that can execute `ssh_command` / `ssh_script` actions on **pre-configured** remote hosts using Paramiko.
10
+
11
+ ### Install
12
+
13
+ Install the optional SSH dependency set:
14
+
15
+ ```bash
16
+ pip install "pilot-daemon[ssh]"
17
+ ```
18
+
19
+ ### Configure allowed hosts
20
+
21
+ In your `config.toml`, enable SSH and define allowed destinations (aliases only):
22
+
23
+ ```toml
24
+ [ssh]
25
+ enabled = true
26
+ connect_timeout_seconds = 10
27
+ allowed_hosts = [
28
+ { name = "prod-1", hostname = "10.0.0.10", port = 22, username = "ubuntu", private_key_provider = "ssh_prod_1_key", strict_host_key_checking = true },
29
+ ]
30
+ ```
31
+
32
+ ### Store SSH keys in the KeyVault
33
+
34
+ Store the private key PEM in the encrypted vault using the JSON-RPC method `store_api_key` with `provider=<private_key_provider>`.
35
+
36
+ Notes:
37
+ - The vault stores arbitrary provider→secret strings; SSH keys are treated the same as API keys.
38
+ - Keys/passphrases are never logged and are only decrypted at call time.
@@ -0,0 +1,191 @@
1
+ """Benchmark the non-LLM ReAct latency for a simple CPU usage request.
2
+
3
+ Run from ``daemon``:
4
+ python benchmarks/react_latency.py --iterations 10 --profile
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import argparse
10
+ import asyncio
11
+ import cProfile
12
+ import io
13
+ import os
14
+ import pstats
15
+ import statistics
16
+ import time
17
+ from dataclasses import dataclass
18
+ from pathlib import Path
19
+ from typing import Any
20
+
21
+ BENCH_STATE_DIR = Path(__file__).resolve().parent / ".bench-state"
22
+ BENCH_STATE_DIR.mkdir(parents=True, exist_ok=True)
23
+ os.environ.setdefault("XDG_CONFIG_HOME", str(BENCH_STATE_DIR / "config"))
24
+ os.environ.setdefault("XDG_DATA_HOME", str(BENCH_STATE_DIR / "data"))
25
+ os.environ.setdefault("XDG_STATE_HOME", str(BENCH_STATE_DIR / "state"))
26
+ os.environ.setdefault("XDG_RUNTIME_DIR", str(BENCH_STATE_DIR / "runtime"))
27
+
28
+
29
+ CPU_PLAN_JSON = """{
30
+ "explanation": "Check current CPU usage.",
31
+ "actions": [
32
+ {
33
+ "action_type": "cpu_usage",
34
+ "target": "cpu",
35
+ "parameters": {},
36
+ "requires_root": false,
37
+ "destructive": false,
38
+ "reversible": true,
39
+ "rollback_action": null,
40
+ "use_previous_output": false
41
+ }
42
+ ]
43
+ }"""
44
+
45
+
46
+ class StubModelRouter:
47
+ def __init__(self) -> None:
48
+ self.generate_calls = 0
49
+
50
+ async def generate(self, *args: Any, **kwargs: Any) -> str: # noqa: ARG002
51
+ self.generate_calls += 1
52
+ return CPU_PLAN_JSON
53
+
54
+
55
+ class FakeWebSocket:
56
+ def __init__(self) -> None:
57
+ self.messages: list[str] = []
58
+
59
+ async def send(self, message: str) -> None:
60
+ self.messages.append(message)
61
+
62
+
63
+ class NoopReasoning:
64
+ def reset(self) -> None:
65
+ return None
66
+
67
+
68
+ class NoopReflector:
69
+ async def get_improvement_context(self, query: str) -> str: # noqa: ARG002
70
+ return ""
71
+
72
+ async def reflect(self, *args: Any, **kwargs: Any) -> dict[str, Any]: # noqa: ARG002
73
+ return {}
74
+
75
+
76
+ class NoopMemory:
77
+ async def record(self, *args: Any, **kwargs: Any) -> None: # noqa: ARG002
78
+ return None
79
+
80
+
81
+ @dataclass
82
+ class BenchmarkHarness:
83
+ server: Any
84
+ model: StubModelRouter
85
+
86
+
87
+ async def build_harness() -> BenchmarkHarness:
88
+ from pilot.agents.executor import Executor
89
+ from pilot.agents.multi_agent import MultiAgentRouter
90
+ from pilot.agents.orchestrator import AgentOrchestrator
91
+ from pilot.agents.planner import Planner
92
+ from pilot.agents.system_agent import SystemAgent
93
+ from pilot.agents.verifier import Verifier
94
+ from pilot.config import PilotConfig
95
+ from pilot.memory.store import MemoryStore
96
+ from pilot.security.audit import AuditLogger
97
+ from pilot.security.permissions import PermissionChecker
98
+ from pilot.security.validator import ActionValidator
99
+ from pilot.server import PilotServer
100
+
101
+ config = PilotConfig()
102
+ model = StubModelRouter()
103
+ memory = MemoryStore()
104
+ await memory.initialize()
105
+
106
+ validator = ActionValidator(config)
107
+ permissions = PermissionChecker(config)
108
+ audit = AuditLogger(BENCH_STATE_DIR / "audit.jsonl")
109
+ executor = Executor(config, validator, permissions, audit)
110
+ verifier = Verifier(model) # type: ignore[arg-type]
111
+
112
+ orchestrator = AgentOrchestrator(model) # type: ignore[arg-type]
113
+ orchestrator.register_agent(SystemAgent(model, executor)) # type: ignore[arg-type]
114
+
115
+ server = PilotServer(config)
116
+ server._planner = Planner(model, memory) # noqa: SLF001
117
+ server._executor = executor # noqa: SLF001
118
+ server._verifier = verifier # noqa: SLF001
119
+ server._reflector = NoopReflector() # noqa: SLF001
120
+ server._multi_agent = MultiAgentRouter(model) # type: ignore[arg-type] # noqa: SLF001
121
+ server._orchestrator = orchestrator # noqa: SLF001
122
+ server._reasoning = None # noqa: SLF001
123
+ server._screen_vision = None # noqa: SLF001
124
+ server._memory = NoopMemory() # noqa: SLF001
125
+ return BenchmarkHarness(server=server, model=model)
126
+
127
+
128
+ async def run_once(harness: BenchmarkHarness) -> float:
129
+ ws = FakeWebSocket()
130
+ start = time.perf_counter()
131
+ result = await harness.server._handle_execute( # noqa: SLF001
132
+ {"input": "What's my CPU usage?", "dry_run": False},
133
+ ws, # type: ignore[arg-type]
134
+ )
135
+ elapsed_ms = (time.perf_counter() - start) * 1000
136
+ if result.get("status") != "success":
137
+ raise RuntimeError(f"Unexpected benchmark result: {result}")
138
+ return elapsed_ms
139
+
140
+
141
+ async def benchmark(iterations: int) -> tuple[list[float], int]:
142
+ harness = await build_harness()
143
+ timings = []
144
+ for _ in range(iterations):
145
+ timings.append(await run_once(harness))
146
+ return timings, harness.model.generate_calls
147
+
148
+
149
+ async def benchmark_with_harness(harness: BenchmarkHarness, iterations: int) -> tuple[list[float], int]:
150
+ timings = []
151
+ generate_calls_before = harness.model.generate_calls
152
+ for _ in range(iterations):
153
+ timings.append(await run_once(harness))
154
+ return timings, harness.model.generate_calls - generate_calls_before
155
+
156
+
157
+ def print_summary(timings: list[float], generate_calls: int) -> None:
158
+ print(f"iterations: {len(timings)}")
159
+ print(f"model_generate_calls: {generate_calls}")
160
+ print(f"mean_ms: {statistics.mean(timings):.2f}")
161
+ print(f"median_ms: {statistics.median(timings):.2f}")
162
+ print(f"min_ms: {min(timings):.2f}")
163
+ print(f"max_ms: {max(timings):.2f}")
164
+
165
+
166
+ def main() -> None:
167
+ parser = argparse.ArgumentParser()
168
+ parser.add_argument("--iterations", type=int, default=10)
169
+ parser.add_argument("--profile", action="store_true")
170
+ parser.add_argument("--profile-limit", type=int, default=20)
171
+ args = parser.parse_args()
172
+
173
+ if args.profile:
174
+ harness = asyncio.run(build_harness())
175
+ profiler = cProfile.Profile()
176
+ profiler.enable()
177
+ timings, generate_calls = asyncio.run(benchmark_with_harness(harness, args.iterations))
178
+ profiler.disable()
179
+ print_summary(timings, generate_calls)
180
+ output = io.StringIO()
181
+ stats = pstats.Stats(profiler, stream=output).strip_dirs().sort_stats("cumtime")
182
+ stats.print_stats(args.profile_limit)
183
+ print("\n## cProfile cumulative time")
184
+ print(output.getvalue())
185
+ else:
186
+ timings, generate_calls = asyncio.run(benchmark(args.iterations))
187
+ print_summary(timings, generate_calls)
188
+
189
+
190
+ if __name__ == "__main__":
191
+ main()
@@ -0,0 +1,3 @@
1
+ """Pilot — AI Command Center daemon for Ubuntu LTS."""
2
+
3
+ __version__ = "0.1.0"