devops-bot-sdk 1.6.54__tar.gz → 1.6.57__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 (225) hide show
  1. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/PKG-INFO +1 -1
  2. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
  3. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/SOURCES.txt +2 -0
  4. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/pyproject.toml +1 -1
  5. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/__init__.py +1 -1
  6. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/cli.py +94 -1
  7. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ipc/handlers.py +9 -8
  8. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/local_exec.py +449 -1
  9. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/plan_run.py +2 -3
  10. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/run_auto.py +2 -3
  11. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/setup_manager.py +14 -0
  12. devops_bot_sdk-1.6.57/sdk/vendor/aidraftsman-cli-0.1.0.tgz +0 -0
  13. devops_bot_sdk-1.6.57/tests/test_fallback_cli.py +301 -0
  14. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_project_path_resolution.py +12 -0
  15. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_task_file_and_plan_run.py +14 -0
  16. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/README.md +0 -0
  17. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
  18. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
  19. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/requires.txt +0 -0
  20. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/devops_bot_sdk.egg-info/top_level.txt +0 -0
  21. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/__init__.py +0 -0
  22. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/classifier.py +0 -0
  23. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/collectors/__init__.py +0 -0
  24. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/collectors/common.py +0 -0
  25. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/collectors/linux_auditd.py +0 -0
  26. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/collectors/macos_eslogger.py +0 -0
  27. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/collectors/windows_eventlog.py +0 -0
  28. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/models.py +0 -0
  29. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/os_setup.py +0 -0
  30. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/recorder.py +0 -0
  31. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/redact.py +0 -0
  32. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/settings.py +0 -0
  33. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/shipper.py +0 -0
  34. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/activity/spool.py +0 -0
  35. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agentd.py +0 -0
  36. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/__init__.py +0 -0
  37. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/activity.py +0 -0
  38. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/builder.py +0 -0
  39. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/chat.py +0 -0
  40. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/connectors.py +0 -0
  41. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/__init__.py +0 -0
  42. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/claude_code.py +0 -0
  43. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/http.py +0 -0
  44. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/mcp.py +0 -0
  45. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/n8n.py +0 -0
  46. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/engines/shell.py +0 -0
  47. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/integrations.py +0 -0
  48. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/inventory.py +0 -0
  49. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/library/__init__.py +0 -0
  50. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/manifest.py +0 -0
  51. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/prompt_studio.py +0 -0
  52. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/prompt_template.py +0 -0
  53. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/prompt_vars.py +0 -0
  54. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/run_log.py +0 -0
  55. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/schedules.py +0 -0
  56. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/secrets.py +0 -0
  57. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/ticket_run.py +0 -0
  58. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/usage.py +0 -0
  59. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/agents/varstore.py +0 -0
  60. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/browser_profile.py +0 -0
  61. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/client.py +0 -0
  62. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/collectors/__init__.py +0 -0
  63. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/collectors/files.py +0 -0
  64. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/collectors/process.py +0 -0
  65. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/collectors/screenshot.py +0 -0
  66. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/config.py +0 -0
  67. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/crucial.py +0 -0
  68. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/departments.py +0 -0
  69. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/__init__.py +0 -0
  70. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/assets.py +0 -0
  71. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/bootstrap.py +0 -0
  72. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/browser.py +0 -0
  73. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/compare.py +0 -0
  74. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/design_verify/loop.py +0 -0
  75. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/estimator.py +0 -0
  76. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/exceptions.py +0 -0
  77. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/firewall.py +0 -0
  78. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/formats.py +0 -0
  79. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/git_ops.py +0 -0
  80. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/github_fetch.py +0 -0
  81. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/github_ingest.py +0 -0
  82. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/graph_recon.py +0 -0
  83. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/graphify.py +0 -0
  84. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/hooks/__init__.py +0 -0
  85. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/hooks/crucial_guard.py +0 -0
  86. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/intake.py +0 -0
  87. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ipc/__init__.py +0 -0
  88. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ipc/electron_bridge.py +0 -0
  89. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/journal.py +0 -0
  90. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/memory_guard.py +0 -0
  91. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/models/__init__.py +0 -0
  92. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/models/envelope.py +0 -0
  93. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/models/requests.py +0 -0
  94. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/models/responses.py +0 -0
  95. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/models/snapshots.py +0 -0
  96. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/phase_timer.py +0 -0
  97. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/platform_compat.py +0 -0
  98. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/prd_progress.py +0 -0
  99. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/proof_readers.py +0 -0
  100. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/providers.py +0 -0
  101. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/py.typed +0 -0
  102. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/resume.py +0 -0
  103. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/router.py +0 -0
  104. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/scheduler.py +0 -0
  105. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/self_report.py +0 -0
  106. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/self_report_local.py +0 -0
  107. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/sse.py +0 -0
  108. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/swagger.py +0 -0
  109. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/task_file.py +0 -0
  110. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/task_types.py +0 -0
  111. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/test.py +0 -0
  112. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/test_pipeline.py +0 -0
  113. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ticket_fields.py +0 -0
  114. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/tiers/__init__.py +0 -0
  115. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/tiers/mini_agent.py +0 -0
  116. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/__init__.py +0 -0
  117. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/api.py +0 -0
  118. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/dashboard.py +0 -0
  119. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/health.py +0 -0
  120. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/ip_allowlist.py +0 -0
  121. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/jobs.py +0 -0
  122. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/models.py +0 -0
  123. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/runner.py +0 -0
  124. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/security.py +0 -0
  125. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/server.py +0 -0
  126. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/service.py +0 -0
  127. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/session.py +0 -0
  128. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/agents.html +0 -0
  129. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/app.js +0 -0
  130. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/chat.html +0 -0
  131. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/custom-agents.html +0 -0
  132. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/default-agents.html +0 -0
  133. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/index.html +0 -0
  134. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/report.html +0 -0
  135. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/runs.html +0 -0
  136. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/schedules.html +0 -0
  137. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/setup.html +0 -0
  138. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/styles.css +0 -0
  139. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/static/tickets.html +0 -0
  140. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/ui/swagger.py +0 -0
  141. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/updater.py +0 -0
  142. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/url_access.py +0 -0
  143. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/vps_health.py +0 -0
  144. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/sdk/write_hook.py +0 -0
  145. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/setup.cfg +0 -0
  146. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_activity_collectors.py +0 -0
  147. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_activity_core.py +0 -0
  148. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_activity_macos.py +0 -0
  149. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_activity_os_setup.py +0 -0
  150. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_activity_pipeline.py +0 -0
  151. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_activity.py +0 -0
  152. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_activity_tracking.py +0 -0
  153. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_chat_features.py +0 -0
  154. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_listing.py +0 -0
  155. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_prompt_async.py +0 -0
  156. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_prompt_models.py +0 -0
  157. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_run_ticket.py +0 -0
  158. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_schedules.py +0 -0
  159. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agent_workspace_settings.py +0 -0
  160. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_agents_connectors_builder.py +0 -0
  161. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_allowed_tools_config.py +0 -0
  162. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_auto_agent_dispatch.py +0 -0
  163. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_browser_profile.py +0 -0
  164. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_cheap_tier.py +0 -0
  165. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_client_jira_projects.py +0 -0
  166. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_config_token_diagnostics.py +0 -0
  167. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_configure_token_owner.py +0 -0
  168. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_console_encoding.py +0 -0
  169. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_crash_recovery.py +0 -0
  170. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_departments.py +0 -0
  171. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_done_transition.py +0 -0
  172. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_epic_decompose_run.py +0 -0
  173. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_epic_inherited_agent_id.py +0 -0
  174. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_epic_session_isolation.py +0 -0
  175. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_estimator.py +0 -0
  176. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_firewall_open_on_update.py +0 -0
  177. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_formats.py +0 -0
  178. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_git_action.py +0 -0
  179. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_github_fetch.py +0 -0
  180. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_github_ingest.py +0 -0
  181. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_graph_recon.py +0 -0
  182. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_graphify_build.py +0 -0
  183. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_graphify_hook_install.py +0 -0
  184. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_health.py +0 -0
  185. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_intake_job_outcome.py +0 -0
  186. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_intake_plan_review.py +0 -0
  187. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_journal.py +0 -0
  188. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_local_exec_provider.py +0 -0
  189. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_mcp_route_contract.py +0 -0
  190. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_memory_guard.py +0 -0
  191. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_phase_timer.py +0 -0
  192. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_plan_new_command.py +0 -0
  193. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_plan_run_activity.py +0 -0
  194. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_pr_identity.py +0 -0
  195. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_prd_artifact.py +0 -0
  196. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_proof_readers.py +0 -0
  197. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_providers.py +0 -0
  198. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_recon_session_isolation.py +0 -0
  199. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_resume.py +0 -0
  200. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_router.py +0 -0
  201. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_run_auto_agent_only.py +0 -0
  202. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_run_outputs.py +0 -0
  203. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_run_verdict_is_honest.py +0 -0
  204. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_schedule_api.py +0 -0
  205. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_schedule_outputs_and_plans.py +0 -0
  206. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_scheduler.py +0 -0
  207. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_self_report.py +0 -0
  208. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_service_token_warning.py +0 -0
  209. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_stale_panel_restart.py +0 -0
  210. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_swagger_command.py +0 -0
  211. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_task_file_format_doc.py +0 -0
  212. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_ticket_fields.py +0 -0
  213. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_ticket_run_resolve_by_id.py +0 -0
  214. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_ticket_speed_fixes.py +0 -0
  215. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_tier_flag_parity.py +0 -0
  216. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_ui_gate.py +0 -0
  217. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_ui_lifespan.py +0 -0
  218. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_update_timer.py +0 -0
  219. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_updater_extras.py +0 -0
  220. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_updater_pep668.py +0 -0
  221. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_updater_reports_the_truth.py +0 -0
  222. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_url_access.py +0 -0
  223. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_vps_health.py +0 -0
  224. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/tests/test_windows_loop_identity.py +0 -0
  225. {devops_bot_sdk-1.6.54 → devops_bot_sdk-1.6.57}/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.54
3
+ Version: 1.6.57
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.54
3
+ Version: 1.6.57
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
@@ -137,6 +137,7 @@ sdk/ui/static/schedules.html
137
137
  sdk/ui/static/setup.html
138
138
  sdk/ui/static/styles.css
139
139
  sdk/ui/static/tickets.html
140
+ sdk/vendor/aidraftsman-cli-0.1.0.tgz
140
141
  tests/test_activity_collectors.py
141
142
  tests/test_activity_core.py
142
143
  tests/test_activity_macos.py
@@ -167,6 +168,7 @@ tests/test_epic_decompose_run.py
167
168
  tests/test_epic_inherited_agent_id.py
168
169
  tests/test_epic_session_isolation.py
169
170
  tests/test_estimator.py
171
+ tests/test_fallback_cli.py
170
172
  tests/test_firewall_open_on_update.py
171
173
  tests/test_formats.py
172
174
  tests/test_git_action.py
@@ -68,7 +68,7 @@ where = ["."]
68
68
  include = ["sdk*"]
69
69
 
70
70
  [tool.setuptools.package-data]
71
- sdk = ["py.typed", "ui/static/*"]
71
+ sdk = ["py.typed", "ui/static/*", "vendor/*.tgz"]
72
72
 
73
73
  [tool.ruff]
74
74
  line-length = 100
@@ -34,7 +34,7 @@ Rules:
34
34
  - All data egress through submit_webhook only
35
35
  """
36
36
 
37
- __version__ = "1.6.54" # SINGLE SOURCE OF TRUTH — bump on every change; pyproject,
37
+ __version__ = "1.6.57" # 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
@@ -104,6 +104,11 @@ Command surface:
104
104
  One submission in full — its text, its proofs and the evaluator's
105
105
  per-criterion reasoning.
106
106
 
107
+ agentos fallback install | login [--browser | --api-key [KEY]] | status [--verify] | logout
108
+ The AI Draftsman CLI a ticket re-runs on when `claude` is not working:
109
+ install the bundled copy, log it in (a sign-in code approved on the
110
+ frontend, or an API key), and check it. See sdk.local_exec.fallback_status.
111
+
107
112
  agentos agentd start [--foreground]
108
113
  Start the local agent daemon (background by default).
109
114
  agentos agentd status
@@ -188,12 +193,16 @@ def main() -> None:
188
193
  _browser_command(rest)
189
194
  return
190
195
 
196
+ if noun == "fallback":
197
+ _fallback_command(rest)
198
+ return
199
+
191
200
  _print_usage()
192
201
  sys.exit(1)
193
202
 
194
203
 
195
204
  def _print_usage() -> None:
196
- print("usage: agentos <configure|chat|agent|integration|default-agents|agentd|github|report|browser|firewall|activity-setup|swagger> ...")
205
+ print("usage: agentos <configure|chat|agent|integration|default-agents|agentd|github|report|browser|fallback|firewall|activity-setup|swagger> ...")
197
206
  print()
198
207
  print(" agentos configure [--rotate]")
199
208
  print(" agentos chat [--product-id ID] [--pv-id ID] [--no-autorun] # requirements → ticket")
@@ -205,6 +214,7 @@ def _print_usage() -> None:
205
214
  print(" agentos github <ingest [--days N]|status> # PR ingestion; --days N backfills N days")
206
215
  print(" agentos report <submit|list|show ID> # report work Jira/GitHub never saw")
207
216
  print(" agentos browser <login URL|status|logout> # sign in once; private links become readable")
217
+ print(" agentos fallback <install|login|status|logout> # the AI Draftsman CLI used when claude is not working")
208
218
  print(" agentos firewall [--apply] [--revoke IP] [--port N] # open the UI port to the allowlisted IPs")
209
219
  print(" agentos firewall --any [--apply] # open the UI port to any source (allowlist is the gate)")
210
220
  print(" agentos swagger [--open] [--json [PATH]] # where /docs is, and can you reach it")
@@ -892,6 +902,89 @@ def _browser_command(args: list[str]) -> None:
892
902
  sys.exit(1)
893
903
 
894
904
 
905
+ # ── fallback ─────────────────────────────────────────────────────────────
906
+
907
+ def _fallback_usage() -> None:
908
+ print("usage: agentos fallback install # npm-install the bundled CLI now")
909
+ print(" agentos fallback login [--browser | --api-key [KEY]] [--base-url URL] [--no-browser]")
910
+ print(" agentos fallback status [--verify] # --verify asks the server too")
911
+ print(" agentos fallback logout")
912
+ print()
913
+ print(" When the `claude` CLI is not working, tickets re-run on the AI Draftsman CLI")
914
+ print(" bundled with the SDK. It needs its own login, made as the user the SDK runs as.")
915
+ print()
916
+ print(" --browser prints a sign-in code and a link; approve it on the AI Draftsman")
917
+ print(" frontend from any machine — works on a headless VPS")
918
+ print(" --api-key paste a key from Settings → API keys (hidden prompt), or pass")
919
+ print(" KEY after the flag")
920
+ print(" (neither) the CLI's own menu")
921
+
922
+
923
+ def _fallback_command(args: list[str]) -> None:
924
+ """``agentos fallback install|login|status|logout`` — the AI Draftsman fallback CLI."""
925
+ from sdk import local_exec as le
926
+
927
+ verb = args[0] if args else None
928
+ rest = args[1:]
929
+
930
+ if verb == "install":
931
+ if le._fallback_disabled():
932
+ print("error: the fallback is disabled (AGENTOS_FALLBACK_CLI=off)")
933
+ sys.exit(1)
934
+ cli = asyncio.run(le.ensure_fallback_cli())
935
+ if not cli:
936
+ print("error: could not install the AI Draftsman CLI (Node.js 20+ and npm are needed)")
937
+ sys.exit(1)
938
+ print(f"installed: {cli}")
939
+ ad = Path(cli).with_name("ad.cmd" if cli.lower().endswith(".cmd") else "ad")
940
+ if ad.exists():
941
+ print(f"also as : {ad} (the same CLI under its short name)")
942
+ print("next : agentos fallback login")
943
+ return
944
+
945
+ if verb == "login":
946
+ method = api_key = base_url = None
947
+ no_browser = True if "--no-browser" in rest else None
948
+ if "--browser" in rest:
949
+ method = "browser"
950
+ if "--api-key" in rest:
951
+ method = "api-key"
952
+ i = rest.index("--api-key") + 1
953
+ if i < len(rest) and not rest[i].startswith("-"):
954
+ api_key = rest[i]
955
+ if "--base-url" in rest:
956
+ try:
957
+ base_url = rest[rest.index("--base-url") + 1]
958
+ except IndexError:
959
+ print("error: --base-url needs a URL")
960
+ sys.exit(1)
961
+ rc = le.fallback_login(method=method, api_key=api_key, base_url=base_url,
962
+ no_browser=no_browser)
963
+ if rc == 0:
964
+ print("check it : agentos fallback status --verify")
965
+ sys.exit(rc)
966
+
967
+ if verb == "status":
968
+ st = le.fallback_status(verify="--verify" in rest)
969
+ print(f"installed : {'yes' if st['installed'] else 'no'}")
970
+ print(f"path : {st['path'] or '-'}")
971
+ print(f"logged in : {'yes' if st['logged_in'] else 'no'}")
972
+ if st["verified"] is not None:
973
+ print(f"server : {'key accepted' if st['verified'] else 'NOT accepted'}")
974
+ print(f"account : {st['account'] or '-'}")
975
+ print(f"server url: {st['base_url'] or '-'}")
976
+ if st["error"]:
977
+ print(f"problem : {st['error']}")
978
+ ready = st["logged_in"] and st["verified"] is not False
979
+ sys.exit(0 if ready else 1)
980
+
981
+ if verb == "logout":
982
+ sys.exit(le.fallback_logout())
983
+
984
+ _fallback_usage()
985
+ sys.exit(1)
986
+
987
+
895
988
  def _report_check(url: str) -> None:
896
989
  """``agentos report check <URL>`` — can this machine open that link?
897
990
 
@@ -1973,12 +1973,11 @@ async def _run_local_pipeline(
1973
1973
  thread_id = str(payload.get("thread_id", "") or "")
1974
1974
  project_path = str(payload.get("project_path", "") or "").strip()
1975
1975
 
1976
- if not local_exec.is_available():
1976
+ if not local_exec.can_run_locally():
1977
1977
  await send(Envelope(
1978
1978
  type=Envelope.TYPE_ERROR, thread_id=thread_id,
1979
1979
  data={"code": "CLAUDE_CLI_MISSING",
1980
- "message": "The Claude Code CLI is not installed on this machine. "
1981
- "Install it (and run `claude login`) to use the local claude_code engine."},
1980
+ "message": local_exec.NO_LOCAL_CLI_MESSAGE},
1982
1981
  ).model_dump())
1983
1982
  return
1984
1983
  if not project_path:
@@ -3920,12 +3919,15 @@ _HOME_PATH_RE = re.compile(r"(?<![\w.])~(?:/[A-Za-z0-9._\- ]+)+")
3920
3919
  # `[\\/]+` in the separator position, not a single `\\`: a doubled separator is a
3921
3920
  # thing people write (`D://Nexus-AI` — the exact form in one bug report) and the
3922
3921
  # old pattern rejected it outright, sending the ticket to the ~/AgentOS fallback.
3923
- _WIN_PATH_RE = re.compile(r"[A-Za-z]:[\\/]+(?:[^\\/:*?\"<>|\r\n]+[\\/]*)+")
3922
+ # The drive letter must not follow a word character: in `https://host/...` the
3923
+ # `s:` of the scheme otherwise reads as drive S:, so any ticket quoting a web link
3924
+ # "named" the folder `s://host/...` and was refused as unresolvable.
3925
+ _WIN_PATH_RE = re.compile(r"(?<![A-Za-z0-9_])[A-Za-z]:[\\/]+(?:[^\\/:*?\"<>|\r\n]+[\\/]*)+")
3924
3926
  # Windows path written with FORWARD slashes (e.g. C:/Users/me/new_tasks) — common on
3925
3927
  # Windows. Segments here also allow spaces, for the same reason the backslash form
3926
3928
  # does; over-capture is settled afterwards by `_trim_to_existing_dir`, not by trying
3927
3929
  # to tell a folder name from prose with a regex.
3928
- _WIN_FS_PATH_RE = re.compile(r"[A-Za-z]:/+(?:[^\\/:*?\"<>|\r\n]+/*)+")
3930
+ _WIN_FS_PATH_RE = re.compile(r"(?<![A-Za-z0-9_])[A-Za-z]:/+(?:[^\\/:*?\"<>|\r\n]+/*)+")
3929
3931
  # A QUOTED path (single/double/back quotes) — the reliable way to give a path that
3930
3932
  # contains spaces, on any OS. Accepts a drive letter with EITHER separator (C:\ or C:/).
3931
3933
  _QUOTED_PATH_RE = re.compile(r"""["'`]\s*((?:[A-Za-z]:[\\/]|~/|/)[^"'`\r\n]+?)\s*["'`]""")
@@ -4951,12 +4953,11 @@ async def handle_orchestrate_auto_local_run(
4951
4953
  # guaranteed on every exit — including early returns — via the finally below.
4952
4954
  active_flusher: ActivityFlusher | None = None
4953
4955
  try:
4954
- if not local_exec.is_available():
4956
+ if not local_exec.can_run_locally():
4955
4957
  await send(Envelope(
4956
4958
  type=Envelope.TYPE_ERROR, thread_id=thread_id,
4957
4959
  data={"code": "CLAUDE_CLI_MISSING",
4958
- "message": "The Claude Code CLI is not installed on this machine. "
4959
- "Install it and run `claude setup-token` to use local execution."},
4960
+ "message": local_exec.NO_LOCAL_CLI_MESSAGE},
4960
4961
  ).model_dump())
4961
4962
  return
4962
4963