harness-sdk-python 0.28.0__tar.gz → 0.29.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 (42) hide show
  1. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/PKG-INFO +1 -1
  2. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/pyproject.toml +1 -1
  3. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/voice.py +2 -5
  4. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_voice.py +1 -5
  5. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/.gitignore +0 -0
  6. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/README.md +0 -0
  7. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/examples/__init__.py +0 -0
  8. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/examples/runs_app.py +0 -0
  9. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/__init__.py +0 -0
  10. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/checkpoints.py +0 -0
  11. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/deepagents.py +0 -0
  12. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/fenced_postgres.py +0 -0
  13. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/linear_thread.py +0 -0
  14. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/run_manager.py +0 -0
  15. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/run_helpers.py +0 -0
  16. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_admit_steer.py +0 -0
  17. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_applied_visibility.py +0 -0
  18. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_batches.py +0 -0
  19. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_branch_anchor.py +0 -0
  20. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_checkpoints.py +0 -0
  21. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_deepagents_messages.py +0 -0
  22. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_dispatching.py +0 -0
  23. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_durability.py +0 -0
  24. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_edit_dispatched.py +0 -0
  25. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_edit_reload.py +0 -0
  26. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_enqueue.py +0 -0
  27. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_fenced_postgres.py +0 -0
  28. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_input_required.py +0 -0
  29. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_linear_thread.py +0 -0
  30. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_meta.py +0 -0
  31. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_mint_concurrency.py +0 -0
  32. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_outcomes.py +0 -0
  33. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_placement.py +0 -0
  34. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_prepare_hooks.py +0 -0
  35. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_restore.py +0 -0
  36. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_rewind_during_run.py +0 -0
  37. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_run_crash_sweep.py +0 -0
  38. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_settle.py +0 -0
  39. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_steer.py +0 -0
  40. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_stop_continue.py +0 -0
  41. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_stopping_window.py +0 -0
  42. {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/voice_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: harness-sdk-python
3
- Version: 0.28.0
3
+ Version: 0.29.0
4
4
  Summary: RunManager: the harness-sdk runs subsystem for Python Statewire hosts
5
5
  Project-URL: Repository, https://github.com/assistant-ui/harness-sdk
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "harness-sdk-python"
3
- version = "0.28.0"
3
+ version = "0.29.0"
4
4
  description = "RunManager: the harness-sdk runs subsystem for Python Statewire hosts"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -9,8 +9,8 @@ and the turn commit both stay host-owned.
9
9
 
10
10
  ``voice/start {offer}`` seeds the provider from the thread transcript (at
11
11
  most 128 messages, tail taken) and projects ``state["voice"] = {clientId,
12
- status, answer}`` — the SDP answer rides the applied state. The session is
13
- bound to the issuing client's connection: ``voice/end`` from the owner, a
12
+ status}`` — the SDP answer rides only the command's result payload
13
+ ``{answer}``. The session is bound to the issuing client's connection: ``voice/end`` from the owner, a
14
14
  provider ``closed`` event, or a connection drop ends it. Provider turn
15
15
  events render live in ``state["messages"]`` through
16
16
  ``Host.upsert_ephemeral_message`` (message id = turn id); each completed
@@ -69,13 +69,11 @@ class VoiceManager(Tray):
69
69
 
70
70
  clientId = observable(None)
71
71
  status = observable("connecting")
72
- answer = observable(None)
73
72
 
74
73
  state = observable(
75
74
  {
76
75
  "clientId": clientId,
77
76
  "status": status,
78
- "answer": answer,
79
77
  }
80
78
  )
81
79
 
@@ -161,7 +159,6 @@ class VoiceManager(Tray):
161
159
  self.delete()
162
160
  raise _reject("voice-unavailable", f"voice session failed to start: {exc}")
163
161
  self._provider = provider
164
- self.answer.value = answer
165
162
  self.status.value = "live"
166
163
  applied()
167
164
  self._watcher = self._spawn(self._watch(caller))
@@ -39,11 +39,7 @@ async def test_start_seeds_provider_and_projects_session():
39
39
  assert bench.provider.calls == [("start", OFFER, bench.transcript)]
40
40
  await drv.wait(lambda s: (voice_of(s) or {}).get("status") == "live")
41
41
  voice = voice_of(drv.replica)
42
- assert voice == {
43
- "clientId": drv.client_id,
44
- "status": "live",
45
- "answer": ANSWER,
46
- }
42
+ assert voice == {"clientId": drv.client_id, "status": "live"}
47
43
  assert bench.contexts[0].client_id == drv.client_id
48
44
 
49
45