hypercli-sdk 0.9.5__tar.gz → 0.9.7__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 (76) hide show
  1. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/PKG-INFO +1 -1
  2. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/__init__.py +1 -1
  3. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/sessions.py +2 -0
  4. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/pyproject.toml +1 -1
  5. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_sessions.py +7 -2
  6. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/.gitignore +0 -0
  7. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/README.md +0 -0
  8. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/acp.py +0 -0
  9. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/agent.py +0 -0
  10. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/agents.py +0 -0
  11. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/billing.py +0 -0
  12. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/chat_integrations.py +0 -0
  13. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/client.py +0 -0
  14. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/config.py +0 -0
  15. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/files.py +0 -0
  16. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/http.py +0 -0
  17. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/instances.py +0 -0
  18. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/job/__init__.py +0 -0
  19. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/job/base.py +0 -0
  20. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/job/comfyui.py +0 -0
  21. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/job/gradio.py +0 -0
  22. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/jobs.py +0 -0
  23. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/keys.py +0 -0
  24. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/logs.py +0 -0
  25. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/mcp.py +0 -0
  26. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/models.py +0 -0
  27. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/renders.py +0 -0
  28. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/routines.py +0 -0
  29. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/runners.py +0 -0
  30. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/shell.py +0 -0
  31. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/user.py +0 -0
  32. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/voice.py +0 -0
  33. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/voice_stream.py +0 -0
  34. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/voice_transcription.py +0 -0
  35. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/workspaces.py +0 -0
  36. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/hypercli/x402.py +0 -0
  37. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/conftest.py +0 -0
  38. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_agents.py +0 -0
  39. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_auth.py +0 -0
  40. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_billing.py +0 -0
  41. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_instances.py +0 -0
  42. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_jobs_dryrun.py +0 -0
  43. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_keys.py +0 -0
  44. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/integration/test_renders.py +0 -0
  45. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_acp.py +0 -0
  46. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_agent_files_source.py +0 -0
  47. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_agent_lifecycle.py +0 -0
  48. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_agents.py +0 -0
  49. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_apply_params.py +0 -0
  50. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_bootstrap_agents_e2e_user.py +0 -0
  51. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_bootstrap_console_test_key.py +0 -0
  52. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_bootstrap_dev_test_keys.py +0 -0
  53. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_chat_integrations.py +0 -0
  54. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_claw.py +0 -0
  55. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_coding_agents.py +0 -0
  56. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_config.py +0 -0
  57. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_exec_shell_dryrun.py +0 -0
  58. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_file_transport.py +0 -0
  59. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_graph_to_api.py +0 -0
  60. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_http.py +0 -0
  61. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_jobs.py +0 -0
  62. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_keys.py +0 -0
  63. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_models.py +0 -0
  64. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_parity_audit.py +0 -0
  65. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_public_surface.py +0 -0
  66. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_renders_subscription.py +0 -0
  67. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_repository_integrity.py +0 -0
  68. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_routines.py +0 -0
  69. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_runner_control_url.py +0 -0
  70. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_runner_placement.py +0 -0
  71. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_runners.py +0 -0
  72. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_status.py +0 -0
  73. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_voice.py +0 -0
  74. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_voice_stream.py +0 -0
  75. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_voice_transcription.py +0 -0
  76. {hypercli_sdk-0.9.5 → hypercli_sdk-0.9.7}/tests/test_workspaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hypercli-sdk
3
- Version: 0.9.5
3
+ Version: 0.9.7
4
4
  Summary: Python SDK for HyperCLI - GPU orchestration and HyperAgent API
5
5
  Project-URL: Homepage, https://hypercli.com
6
6
  Project-URL: Documentation, https://docs.hypercli.com
@@ -157,7 +157,7 @@ from .acp import (
157
157
  AmbiguousDeliveryError,
158
158
  RetryableACPError,
159
159
  )
160
- __version__ = "0.9.5"
160
+ __version__ = "0.9.7"
161
161
  __all__ = [
162
162
  "CHAT_INTEGRATIONS",
163
163
  "build_chat_integration_config",
@@ -19,6 +19,7 @@ class SessionRecord:
19
19
  head_seq: int | None = None
20
20
  receipts: list[dict[str, Any]] = field(default_factory=list)
21
21
  agent_state: str | None = None # computed per request ("live"|"archived"|"deleted"); None on old servers
22
+ external_url: str | None = None # opaque external reference, independent of source
22
23
 
23
24
  @classmethod
24
25
  def from_dict(cls, data: dict[str, Any]) -> "SessionRecord":
@@ -26,6 +27,7 @@ class SessionRecord:
26
27
  return cls(
27
28
  id=str(data["id"]),
28
29
  source=data.get("source") if isinstance(data.get("source"), str) else None,
30
+ external_url=data.get("external_url"),
29
31
  summary_text=data.get("summary_text"),
30
32
  summary_keywords=list(data.get("summary_keywords") or []),
31
33
  created_at=data.get("created_at"),
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-sdk"
7
- version = "0.9.5"
7
+ version = "0.9.7"
8
8
  description = "Python SDK for HyperCLI - GPU orchestration and HyperAgent API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -67,8 +67,12 @@ SESSION_ROW = {
67
67
 
68
68
 
69
69
  @pytest.mark.parametrize("source", [None, "slack", "future-client"])
70
- def test_detail_http_contract_and_list_consistency(monkeypatch, source):
71
- row = {**SESSION_ROW, "source": source, "agentState": "live"}
70
+ @pytest.mark.parametrize("external_fields", [
71
+ {"external_url": " opaque:Thread/%2f?x=A+B#片 "},
72
+ {"external_url": ""}, {"external_url": None}, {},
73
+ ])
74
+ def test_detail_http_contract_and_list_consistency(monkeypatch, source, external_fields):
75
+ row = {**SESSION_ROW, "source": source, "agentState": "live", **external_fields}
72
76
  requests = []
73
77
 
74
78
  def send(self, request, **kwargs):
@@ -85,6 +89,7 @@ def test_detail_http_contract_and_list_consistency(monkeypatch, source):
85
89
  summary_keywords=row["summary_keywords"], created_at=row["created_at"],
86
90
  updated_at=row["updated_at"], participants=row["participants"],
87
91
  agent_state="live",
92
+ external_url=external_fields.get("external_url"),
88
93
  )
89
94
  assert len(requests) == 1
90
95
  request = requests[0]
File without changes
File without changes