session-peer 0.9.1__tar.gz → 0.9.2__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 (39) hide show
  1. {session_peer-0.9.1 → session_peer-0.9.2}/PKG-INFO +1 -1
  2. session_peer-0.9.2/docs/releases/v0.9.2.md +42 -0
  3. {session_peer-0.9.1 → session_peer-0.9.2}/pyproject.toml +2 -2
  4. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer.py +24 -4
  5. {session_peer-0.9.1 → session_peer-0.9.2}/.agents/plugins/marketplace.json +0 -0
  6. {session_peer-0.9.1 → session_peer-0.9.2}/.gitignore +0 -0
  7. {session_peer-0.9.1 → session_peer-0.9.2}/LICENSE +0 -0
  8. {session_peer-0.9.1 → session_peer-0.9.2}/README.ja.md +0 -0
  9. {session_peer-0.9.1 → session_peer-0.9.2}/README.ko.md +0 -0
  10. {session_peer-0.9.1 → session_peer-0.9.2}/README.md +0 -0
  11. {session_peer-0.9.1 → session_peer-0.9.2}/README.zh-CN.md +0 -0
  12. {session_peer-0.9.1 → session_peer-0.9.2}/SECURITY.md +0 -0
  13. {session_peer-0.9.1 → session_peer-0.9.2}/deploy/session-peer-relay.service +0 -0
  14. {session_peer-0.9.1 → session_peer-0.9.2}/docs/agent-adapters.md +0 -0
  15. {session_peer-0.9.1 → session_peer-0.9.2}/docs/antigravity.md +0 -0
  16. {session_peer-0.9.1 → session_peer-0.9.2}/docs/architecture/agent-transports.md +0 -0
  17. {session_peer-0.9.1 → session_peer-0.9.2}/docs/cli-reference.md +0 -0
  18. {session_peer-0.9.1 → session_peer-0.9.2}/docs/mcp.md +0 -0
  19. {session_peer-0.9.1 → session_peer-0.9.2}/docs/multi-home-list.md +0 -0
  20. {session_peer-0.9.1 → session_peer-0.9.2}/docs/paired-devices.md +0 -0
  21. {session_peer-0.9.1 → session_peer-0.9.2}/docs/relay-development-plan.md +0 -0
  22. {session_peer-0.9.1 → session_peer-0.9.2}/docs/relay-public-pilot-2026-09-17.md +0 -0
  23. {session_peer-0.9.1 → session_peer-0.9.2}/docs/releases/v0.9.0.md +0 -0
  24. {session_peer-0.9.1 → session_peer-0.9.2}/docs/releases/v0.9.1.md +0 -0
  25. {session_peer-0.9.1 → session_peer-0.9.2}/docs/validation/85-antigravity.md +0 -0
  26. {session_peer-0.9.1 → session_peer-0.9.2}/docs/wake.md +0 -0
  27. {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/.codex-plugin/plugin.json +0 -0
  28. {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/.mcp.json +0 -0
  29. {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/README.md +0 -0
  30. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_mcp.py +0 -0
  31. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/__init__.py +0 -0
  32. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/app.py +0 -0
  33. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/cli.py +0 -0
  34. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/identity.py +0 -0
  35. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/native.py +0 -0
  36. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/relay.py +0 -0
  37. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/store.py +0 -0
  38. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/wire.py +0 -0
  39. {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: session-peer
3
- Version: 0.9.1
3
+ Version: 0.9.2
4
4
  Summary: Message coding agent sessions locally and over SSH
5
5
  Project-URL: Homepage, https://github.com/abruption/session-peer
6
6
  Project-URL: Repository, https://github.com/abruption/session-peer
@@ -0,0 +1,42 @@
1
+ # session-peer v0.9.2 — Windows Claude authentication hotfix
2
+
3
+ Prepared candidate; not yet published.
4
+
5
+ This patch is based on v0.9.1 and does not include the 1.0 beta/RC features.
6
+ It fixes the authentication envelope sent to native Windows Claude Code named
7
+ pipes. The registry's `peerToken` is now mapped to the wire protocol's `token`
8
+ field, rather than forwarding the registry JSON and process metadata verbatim.
9
+ Malformed key records and missing, empty or non-string tokens are not used.
10
+
11
+ The bug is present in v0.9.1 and in the initial Windows implementation; it is
12
+ not established to be a Claude Code update regression. On Claude Code 2.1.278,
13
+ the old envelope closes the pipe without delivering the message. An isolated
14
+ test changing only the auth envelope delivered a real message and produced a
15
+ receiver response. Exact ACK and final candidate validation are separate gates.
16
+
17
+ No permission settings or inbound policies are changed. A successful send
18
+ still reports a transport write, not proof that the agent consumed or accepted
19
+ the message. Existing unknown sends must not be replayed automatically.
20
+
21
+ The same correction must be carried forward to the 1.0 RC line. This release
22
+ does not add the RC's native Windows Codex writer checks or WSL/native Codex
23
+ bridge. It also improves SSH diagnostics for missing `python3` and Windows Store
24
+ aliases (#151): remote source streaming still requires working Python and a
25
+ POSIX-compatible SSH shell. It does not install Python, change SSH shells or
26
+ automatically resend messages.
27
+
28
+ ## Before publication
29
+
30
+ - Review the minimal v0.9.1-based diff and run Windows/macOS/Linux CI.
31
+ - Confirm the built wheel and sdist report 0.9.2, exclude the frozen legacy
32
+ `cc_peer.py`, and preserve the stable package contents.
33
+ - Validate a fresh candidate on native Windows: select the actual interactive
34
+ receiver, send one unique authorized marker, and observe its exact ACK.
35
+ - Use the maintenance publication path in `RELEASING.md`. It requires protected
36
+ release/0.9.x tip, a merged PR and successful push CI for that exact commit,
37
+ canonical 0.9.x tag/version, pinned v0.9.1 ancestry, clean source, reproducible
38
+ artifacts, independent installs, dependency audit and pre-upload revalidation.
39
+ Do not publish from unmerged PR commits, reuse the old v0.9.1 workflow, bypass
40
+ the release gate, weaken protections or relabel the RC code as 0.9.2.
41
+ - Obtain final approval before creating/publishing the release tag. Verify
42
+ GitHub and PyPI artifacts after publication; do not overwrite an existing tag.
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["hatchling"]
2
+ requires = ["hatchling==1.32.4"]
3
3
  build-backend = "hatchling.build"
4
4
 
5
5
  [project]
@@ -50,7 +50,7 @@ pattern = '__version__ = "(?P<version>[^"]+)"'
50
50
 
51
51
  [tool.hatch.build.targets.sdist]
52
52
  exclude = ["/experiments"]
53
- include = ["session_peer_relay", "session_peer.py", "session_peer_mcp.py", "LICENSE", "SECURITY.md", "README.md", "README.ko.md", "README.ja.md", "README.zh-CN.md", "docs/cli-reference.md", "docs/releases/v0.9.0.md", "docs/releases/v0.9.1.md", "docs/mcp.md", "docs/wake.md", "docs/multi-home-list.md", "docs/agent-adapters.md", "docs/paired-devices.md", "docs/relay-development-plan.md", "docs/relay-public-pilot-2026-09-17.md", "deploy/session-peer-relay.service", "docs/antigravity.md", "docs/validation/85-antigravity.md", "docs/architecture/agent-transports.md", "plugins", ".agents/plugins/marketplace.json"]
53
+ include = ["session_peer_relay", "session_peer.py", "session_peer_mcp.py", "LICENSE", "SECURITY.md", "README.md", "README.ko.md", "README.ja.md", "README.zh-CN.md", "docs/cli-reference.md", "docs/releases/v0.9.0.md", "docs/releases/v0.9.1.md", "docs/releases/v0.9.2.md", "docs/mcp.md", "docs/wake.md", "docs/multi-home-list.md", "docs/agent-adapters.md", "docs/paired-devices.md", "docs/relay-development-plan.md", "docs/relay-public-pilot-2026-09-17.md", "deploy/session-peer-relay.service", "docs/antigravity.md", "docs/validation/85-antigravity.md", "docs/architecture/agent-transports.md", "plugins", ".agents/plugins/marketplace.json"]
54
54
 
55
55
  [tool.hatch.build.targets.wheel]
56
56
  only-include = ["session_peer_relay", "session_peer.py", "session_peer_mcp.py"]
@@ -42,7 +42,7 @@ try:
42
42
  except ImportError: # Windows has no POSIX flock; activity stays unknown there.
43
43
  fcntl = None
44
44
 
45
- __version__ = "0.9.1"
45
+ __version__ = "0.9.2"
46
46
  GITHUB_REPO = "abruption/session-peer"
47
47
 
48
48
  # Claude Code refuses a same-machine message once its serialized form passes
@@ -1013,9 +1013,15 @@ def _read_win_auth(pid: int) -> str | None:
1013
1013
  data = json.loads(key_file.read_text(encoding="utf-8"))
1014
1014
  except (OSError, ValueError):
1015
1015
  continue
1016
- auth = {"type": "auth"}
1017
- auth.update(data)
1018
- return json.dumps(auth, ensure_ascii=False)
1016
+ if not isinstance(data, dict):
1017
+ continue
1018
+ token = data.get("peerToken")
1019
+ if not isinstance(token, str) or not token.strip():
1020
+ continue
1021
+ # The registry schema is not the wire protocol. Windows requires a
1022
+ # first-line {"type": "auth", "token": ...}; forwarding peerToken and
1023
+ # process metadata verbatim causes the receiver to drop the connection.
1024
+ return json.dumps({"type": "auth", "token": token}, ensure_ascii=False)
1019
1025
  return None
1020
1026
 
1021
1027
 
@@ -1687,6 +1693,20 @@ def run_remote(host: str, argv: list[str], ssh_opts: list[str]) -> dict:
1687
1693
  )
1688
1694
  if failure:
1689
1695
  raise ssh_failure_error(host, ssh_info, failure, detail)
1696
+ runtime_output = (completed.stdout + "\n" + completed.stderr).strip().lower()
1697
+ if (runtime_output == "python"
1698
+ or "python was not found" in runtime_output
1699
+ or ("python3" in runtime_output and any(marker in runtime_output for marker in (
1700
+ "command not found", "not recognized as", "no such file", "python3: not found",
1701
+ )))):
1702
+ raise CcPeerError(
1703
+ f"{host}: remote python3 did not start a usable interpreter. "
1704
+ "Source-streamed SSH requires a working python3 and a POSIX-compatible "
1705
+ "remote shell. A Windows Store execution alias is not sufficient. "
1706
+ "For native Windows, run the installed CLI locally, or use a WSL SSH "
1707
+ "endpoint with Python installed. No fallback or resend was attempted.",
1708
+ {**ssh_info, "remoteRuntimeFailure": "python3_unavailable_or_unsupported_shell"},
1709
+ )
1690
1710
  if not stdout:
1691
1711
  raise CcPeerError(f"{host}: {detail}", ssh_info)
1692
1712
  try:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes