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.
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/PKG-INFO +1 -1
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/pyproject.toml +1 -1
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/voice.py +2 -5
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_voice.py +1 -5
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/.gitignore +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/README.md +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/examples/__init__.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/examples/runs_app.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/__init__.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/checkpoints.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/deepagents.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/fenced_postgres.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/linear_thread.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/src/harness_sdk/run_manager.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/run_helpers.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_admit_steer.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_applied_visibility.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_batches.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_branch_anchor.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_checkpoints.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_deepagents_messages.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_dispatching.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_durability.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_edit_dispatched.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_edit_reload.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_enqueue.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_fenced_postgres.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_input_required.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_linear_thread.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_meta.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_mint_concurrency.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_outcomes.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_placement.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_prepare_hooks.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_restore.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_rewind_during_run.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_run_crash_sweep.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_settle.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_steer.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_stop_continue.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/test_stopping_window.py +0 -0
- {harness_sdk_python-0.28.0 → harness_sdk_python-0.29.0}/tests/voice_helpers.py +0 -0
|
@@ -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
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|