conduct-cli 0.8.5__tar.gz → 0.8.6__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 (50) hide show
  1. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/PKG-INFO +1 -1
  2. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/pyproject.toml +1 -1
  3. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/api.py +13 -3
  4. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/PKG-INFO +1 -1
  5. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/README.md +0 -0
  6. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/setup.cfg +0 -0
  7. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/setup.py +0 -0
  8. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/__init__.py +0 -0
  9. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/guard.py +0 -0
  10. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/guard_policy.md +0 -0
  11. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/guardmcp.py +0 -0
  12. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/__init__.py +0 -0
  13. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/base.py +0 -0
  14. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/posttooluse.py +0 -0
  15. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/precompact.py +0 -0
  16. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/pretooluse.py +0 -0
  17. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/session_parser.py +0 -0
  18. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/session_report_push.py +0 -0
  19. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/session_start.py +0 -0
  20. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/hooks/stop.py +0 -0
  21. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/log_util.py +0 -0
  22. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/main.py +0 -0
  23. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/mcp_server.py +0 -0
  24. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/memory.py +0 -0
  25. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/paxel.py +0 -0
  26. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli/tool_groups.py +0 -0
  27. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  28. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  29. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  30. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/requires.txt +0 -0
  31. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/src/conduct_cli.egg-info/top_level.txt +0 -0
  32. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_advisory_and_hook.py +0 -0
  33. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_api_client.py +0 -0
  34. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_bash_operator_signature.py +0 -0
  35. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_blast_radius.py +0 -0
  36. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_cmd_run.py +0 -0
  37. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_command_word_matcher.py +0 -0
  38. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_drain_daemon_health.py +0 -0
  39. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_guard_policy.py +0 -0
  40. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_guard_savings.py +0 -0
  41. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_hook_dispatch.py +0 -0
  42. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_instruction_files.py +0 -0
  43. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_journal_drain.py +0 -0
  44. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_log_util.py +0 -0
  45. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_proxy_coverage.py +0 -0
  46. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_proxy_env.py +0 -0
  47. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_report_tool_coverage.py +0 -0
  48. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_signed_policy.py +0 -0
  49. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_switch.py +0 -0
  50. {conduct_cli-0.8.5 → conduct_cli-0.8.6}/tests/test_token_lifecycle.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.8.5
3
+ Version: 0.8.6
4
4
  Summary: CLI for Conduct AI — secure, govern, install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "conduct-cli"
7
- version = "0.8.5"
7
+ version = "0.8.6"
8
8
  description = "CLI for Conduct AI — secure, govern, install agents, manage projects, run tests"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -69,17 +69,27 @@ def req_text(method: str, url: str, hdrs: dict, body_text: str, timeout: int = 3
69
69
 
70
70
 
71
71
  def stream(url: str, hdrs=None):
72
- """Yield parsed SSE data dicts."""
72
+ """Yield parsed SSE data dicts.
73
+
74
+ Uses a socket read timeout to detect stalled streams. Server sends
75
+ ': keepalive' pings every 15s, so a 60s timeout is safe.
76
+ """
73
77
  r = urllib.request.Request(url, headers=hdrs or {})
74
78
  try:
75
- resp = urllib.request.urlopen(r)
79
+ resp = urllib.request.urlopen(r, timeout=60)
76
80
  except urllib.error.HTTPError as e:
77
81
  msg = e.read().decode()
78
82
  raise RuntimeError(f"Stream {e.code}: {msg}")
79
83
 
80
84
  buf = b""
81
85
  while True:
82
- chunk = resp.read(1)
86
+ try:
87
+ chunk = resp.read(1)
88
+ except socket.timeout:
89
+ raise RuntimeError(
90
+ "Stream stalled (no data for 60s). The run may still be executing on the server — "
91
+ "check `conduct runs list` or the UI."
92
+ )
83
93
  if not chunk:
84
94
  break
85
95
  buf += chunk
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.8.5
3
+ Version: 0.8.6
4
4
  Summary: CLI for Conduct AI — secure, govern, install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
File without changes
File without changes
File without changes