devops-bot-sdk 1.6.48__tar.gz → 1.6.49__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 (221) hide show
  1. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/PKG-INFO +1 -1
  2. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
  3. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/__init__.py +2 -2
  4. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/linux_auditd.py +8 -1
  5. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_collectors.py +17 -0
  6. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/README.md +0 -0
  7. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
  8. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
  9. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
  10. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/requires.txt +0 -0
  11. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/top_level.txt +0 -0
  12. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/pyproject.toml +0 -0
  13. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/__init__.py +0 -0
  14. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/classifier.py +0 -0
  15. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/__init__.py +0 -0
  16. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/common.py +0 -0
  17. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/macos_eslogger.py +0 -0
  18. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/windows_eventlog.py +0 -0
  19. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/models.py +0 -0
  20. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/os_setup.py +0 -0
  21. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/recorder.py +0 -0
  22. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/redact.py +0 -0
  23. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/settings.py +0 -0
  24. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/shipper.py +0 -0
  25. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/spool.py +0 -0
  26. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agentd.py +0 -0
  27. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/__init__.py +0 -0
  28. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/activity.py +0 -0
  29. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/builder.py +0 -0
  30. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/chat.py +0 -0
  31. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/connectors.py +0 -0
  32. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/__init__.py +0 -0
  33. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/claude_code.py +0 -0
  34. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/http.py +0 -0
  35. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/mcp.py +0 -0
  36. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/n8n.py +0 -0
  37. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/shell.py +0 -0
  38. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/integrations.py +0 -0
  39. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/inventory.py +0 -0
  40. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/library/__init__.py +0 -0
  41. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/manifest.py +0 -0
  42. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_studio.py +0 -0
  43. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_template.py +0 -0
  44. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_vars.py +0 -0
  45. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/run_log.py +0 -0
  46. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/schedules.py +0 -0
  47. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/secrets.py +0 -0
  48. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/ticket_run.py +0 -0
  49. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/usage.py +0 -0
  50. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/varstore.py +0 -0
  51. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/browser_profile.py +0 -0
  52. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/cli.py +0 -0
  53. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/client.py +0 -0
  54. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/__init__.py +0 -0
  55. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/files.py +0 -0
  56. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/process.py +0 -0
  57. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/screenshot.py +0 -0
  58. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/config.py +0 -0
  59. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/crucial.py +0 -0
  60. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/departments.py +0 -0
  61. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/__init__.py +0 -0
  62. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/assets.py +0 -0
  63. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/bootstrap.py +0 -0
  64. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/browser.py +0 -0
  65. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/compare.py +0 -0
  66. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/loop.py +0 -0
  67. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/estimator.py +0 -0
  68. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/exceptions.py +0 -0
  69. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/firewall.py +0 -0
  70. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/formats.py +0 -0
  71. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/git_ops.py +0 -0
  72. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/github_fetch.py +0 -0
  73. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/github_ingest.py +0 -0
  74. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/graph_recon.py +0 -0
  75. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/graphify.py +0 -0
  76. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/hooks/__init__.py +0 -0
  77. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/hooks/crucial_guard.py +0 -0
  78. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/intake.py +0 -0
  79. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/__init__.py +0 -0
  80. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/electron_bridge.py +0 -0
  81. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/handlers.py +0 -0
  82. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/journal.py +0 -0
  83. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/local_exec.py +0 -0
  84. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/memory_guard.py +0 -0
  85. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/__init__.py +0 -0
  86. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/envelope.py +0 -0
  87. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/requests.py +0 -0
  88. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/responses.py +0 -0
  89. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/snapshots.py +0 -0
  90. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/phase_timer.py +0 -0
  91. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/plan_run.py +0 -0
  92. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/platform_compat.py +0 -0
  93. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/prd_progress.py +0 -0
  94. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/proof_readers.py +0 -0
  95. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/providers.py +0 -0
  96. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/py.typed +0 -0
  97. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/resume.py +0 -0
  98. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/router.py +0 -0
  99. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/run_auto.py +0 -0
  100. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/scheduler.py +0 -0
  101. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/self_report.py +0 -0
  102. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/self_report_local.py +0 -0
  103. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/sse.py +0 -0
  104. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/swagger.py +0 -0
  105. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/task_file.py +0 -0
  106. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/task_types.py +0 -0
  107. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/test.py +0 -0
  108. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/test_pipeline.py +0 -0
  109. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ticket_fields.py +0 -0
  110. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/tiers/__init__.py +0 -0
  111. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/tiers/mini_agent.py +0 -0
  112. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/__init__.py +0 -0
  113. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/api.py +0 -0
  114. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/dashboard.py +0 -0
  115. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/health.py +0 -0
  116. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/ip_allowlist.py +0 -0
  117. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/jobs.py +0 -0
  118. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/models.py +0 -0
  119. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/runner.py +0 -0
  120. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/security.py +0 -0
  121. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/server.py +0 -0
  122. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/service.py +0 -0
  123. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/session.py +0 -0
  124. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/setup_manager.py +0 -0
  125. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/agents.html +0 -0
  126. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/app.js +0 -0
  127. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/chat.html +0 -0
  128. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/custom-agents.html +0 -0
  129. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/default-agents.html +0 -0
  130. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/index.html +0 -0
  131. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/report.html +0 -0
  132. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/runs.html +0 -0
  133. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/schedules.html +0 -0
  134. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/setup.html +0 -0
  135. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/styles.css +0 -0
  136. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/tickets.html +0 -0
  137. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/swagger.py +0 -0
  138. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/updater.py +0 -0
  139. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/url_access.py +0 -0
  140. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/vps_health.py +0 -0
  141. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/write_hook.py +0 -0
  142. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/setup.cfg +0 -0
  143. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_core.py +0 -0
  144. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_macos.py +0 -0
  145. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_os_setup.py +0 -0
  146. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_pipeline.py +0 -0
  147. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_activity.py +0 -0
  148. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_activity_tracking.py +0 -0
  149. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_chat_features.py +0 -0
  150. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_listing.py +0 -0
  151. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_prompt_async.py +0 -0
  152. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_prompt_models.py +0 -0
  153. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_run_ticket.py +0 -0
  154. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_schedules.py +0 -0
  155. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_workspace_settings.py +0 -0
  156. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agents_connectors_builder.py +0 -0
  157. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_allowed_tools_config.py +0 -0
  158. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_auto_agent_dispatch.py +0 -0
  159. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_browser_profile.py +0 -0
  160. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_cheap_tier.py +0 -0
  161. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_client_jira_projects.py +0 -0
  162. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_config_token_diagnostics.py +0 -0
  163. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_configure_token_owner.py +0 -0
  164. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_console_encoding.py +0 -0
  165. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_crash_recovery.py +0 -0
  166. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_departments.py +0 -0
  167. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_done_transition.py +0 -0
  168. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_decompose_run.py +0 -0
  169. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_inherited_agent_id.py +0 -0
  170. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_session_isolation.py +0 -0
  171. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_estimator.py +0 -0
  172. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_firewall_open_on_update.py +0 -0
  173. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_formats.py +0 -0
  174. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_git_action.py +0 -0
  175. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_github_fetch.py +0 -0
  176. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_github_ingest.py +0 -0
  177. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graph_recon.py +0 -0
  178. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graphify_build.py +0 -0
  179. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graphify_hook_install.py +0 -0
  180. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_health.py +0 -0
  181. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_intake_job_outcome.py +0 -0
  182. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_intake_plan_review.py +0 -0
  183. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_journal.py +0 -0
  184. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_local_exec_provider.py +0 -0
  185. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_mcp_route_contract.py +0 -0
  186. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_memory_guard.py +0 -0
  187. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_phase_timer.py +0 -0
  188. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_plan_new_command.py +0 -0
  189. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_plan_run_activity.py +0 -0
  190. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_pr_identity.py +0 -0
  191. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_prd_artifact.py +0 -0
  192. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_project_path_resolution.py +0 -0
  193. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_proof_readers.py +0 -0
  194. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_providers.py +0 -0
  195. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_recon_session_isolation.py +0 -0
  196. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_resume.py +0 -0
  197. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_router.py +0 -0
  198. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_auto_agent_only.py +0 -0
  199. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_outputs.py +0 -0
  200. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_verdict_is_honest.py +0 -0
  201. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_schedule_api.py +0 -0
  202. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_schedule_outputs_and_plans.py +0 -0
  203. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_scheduler.py +0 -0
  204. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_self_report.py +0 -0
  205. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_service_token_warning.py +0 -0
  206. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_swagger_command.py +0 -0
  207. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_task_file_and_plan_run.py +0 -0
  208. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_task_file_format_doc.py +0 -0
  209. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_fields.py +0 -0
  210. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_run_resolve_by_id.py +0 -0
  211. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_speed_fixes.py +0 -0
  212. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_tier_flag_parity.py +0 -0
  213. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ui_gate.py +0 -0
  214. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ui_lifespan.py +0 -0
  215. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_update_timer.py +0 -0
  216. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_updater_extras.py +0 -0
  217. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_updater_reports_the_truth.py +0 -0
  218. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_url_access.py +0 -0
  219. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_vps_health.py +0 -0
  220. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_windows_loop_identity.py +0 -0
  221. {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_write_hook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devops-bot-sdk
3
- Version: 1.6.48
3
+ Version: 1.6.49
4
4
  Summary: DevOps Bot Desktop SDK — thin client for the AgentOS Electron desktop app
5
5
  Author: noumanaziz2128
6
6
  License-Expression: LicenseRef-Proprietary
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devops-bot-sdk
3
- Version: 1.6.48
3
+ Version: 1.6.49
4
4
  Summary: DevOps Bot Desktop SDK — thin client for the AgentOS Electron desktop app
5
5
  Author: noumanaziz2128
6
6
  License-Expression: LicenseRef-Proprietary
@@ -1,6 +1,6 @@
1
1
  """AgentOS Desktop SDK — thin HTTPS/SSE client for the Electron app.
2
2
 
3
- Version: 1.6.48
3
+ Version: 1.6.49
4
4
 
5
5
  Public surface:
6
6
  BackendClient.from_config() — create client from ~/.agentos/config.toml
@@ -34,7 +34,7 @@ Rules:
34
34
  - All data egress through submit_webhook only
35
35
  """
36
36
 
37
- __version__ = "1.6.48" # SINGLE SOURCE OF TRUTH — bump on every change; pyproject,
37
+ __version__ = "1.6.49" # SINGLE SOURCE OF TRUTH — bump on every change; pyproject,
38
38
  __author__ = "AgentOS" # sdk.client.SDK_VERSION and the UI server version all read this.
39
39
 
40
40
  from sdk.client import BackendClient
@@ -53,6 +53,8 @@ _UNSET = {"4294967295", "-1", "unset"}
53
53
  #: Records of one event share a serial; bound how many half-seen events we hold.
54
54
  _MAX_PENDING = 512
55
55
  _MAX_PID_CACHE = 20_000
56
+ #: ``acct`` values on a failed login that are placeholders, not an account name.
57
+ _NOT_A_NAME = ("(unknown)", "(invalid user)", "?")
56
58
 
57
59
  _HEADER = re.compile(r"type=(\w+) msg=audit\((\d+(?:\.\d+)?):(\d+)\):\s?(.*)")
58
60
  _KV = re.compile(r"""(\w+)=("[^"]*"|'[^']*'|\S+)""")
@@ -225,12 +227,17 @@ class AuditdParser:
225
227
  # The attempted account name: a failed login has no uid to resolve (it is
226
228
  # unset, or an invalid user), so without acct the record says nothing about
227
229
  # which names an attacker is trying.
230
+ # OpenSSH writes the literal "(invalid user)" (hex-encoded) when the name does
231
+ # not exist on the box, and never the name itself, so it is a flag, not a
232
+ # user. The attempted name is only in sshd's auth.log line.
228
233
  acct = rec.get("m_acct", "")
229
- tried = acct if acct and acct not in ("(unknown)", "?") else user
234
+ invalid = acct == "(invalid user)"
235
+ tried = acct if acct and acct not in _NOT_A_NAME else user
230
236
  recorder.record_event(ActivityEvent(
231
237
  os=Os.LINUX, source=Source.AUDITD, category=Category.LOGIN, action="login.failed",
232
238
  occurredAt=ts, osUser=tried, target=remote, severity=Severity.WARNING,
233
239
  actorType=ActorType.UNKNOWN, actorConfidence=0,
240
+ metadata={"invalidUser": True} if invalid else None,
234
241
  ))
235
242
  return
236
243
  if not _is_set(ses):
@@ -235,6 +235,23 @@ class TestAuditdParsing:
235
235
  _, events = _queued()
236
236
  assert events[0]["action"] == "login.failed" and events[0]["osUser"] == expected
237
237
 
238
+ def test_an_invalid_user_attempt_is_flagged_not_named(self):
239
+ """Real line from a VPS (OpenSSH 9.8 sshd-session): the name of a NON-existent
240
+ account is never written; acct is the hex of "(invalid user)"."""
241
+ p = _parser(user_name=L._default_user_name)
242
+ _feed(p, [
243
+ "type=USER_LOGIN msg=audit(1791568160.154:240124): pid=1828747 uid=0 "
244
+ "auid=4294967295 ses=4294967295 subj=unconfined msg='op=login "
245
+ "acct=28696E76616C6964207573657229 exe=\"/usr/lib/openssh/sshd-session\" "
246
+ "hostname=? addr=80.94.92.55 terminal=sshd res=failed'UID=\"root\" AUID=\"unset\"",
247
+ "type=EOE msg=audit(1791568160.154:240124): ",
248
+ ])
249
+ _, events = _queued()
250
+ e = events[0]
251
+ assert e["action"] == "login.failed" and e["target"] == "80.94.92.55"
252
+ assert "osUser" not in e
253
+ assert e["metadata"] == {"invalidUser": True}
254
+
238
255
  def test_an_unknown_account_on_a_failed_login_is_not_recorded_as_a_name(self):
239
256
  p = _parser(user_name=L._default_user_name) # the real resolver: unset uid → None
240
257
  _feed(p, [