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.
- {session_peer-0.9.1 → session_peer-0.9.2}/PKG-INFO +1 -1
- session_peer-0.9.2/docs/releases/v0.9.2.md +42 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/pyproject.toml +2 -2
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer.py +24 -4
- {session_peer-0.9.1 → session_peer-0.9.2}/.agents/plugins/marketplace.json +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/.gitignore +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/LICENSE +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/README.ja.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/README.ko.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/README.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/README.zh-CN.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/SECURITY.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/deploy/session-peer-relay.service +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/agent-adapters.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/antigravity.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/architecture/agent-transports.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/cli-reference.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/mcp.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/multi-home-list.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/paired-devices.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/relay-development-plan.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/relay-public-pilot-2026-09-17.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/releases/v0.9.0.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/releases/v0.9.1.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/validation/85-antigravity.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/docs/wake.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/.codex-plugin/plugin.json +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/.mcp.json +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/plugins/session-peer/README.md +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_mcp.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/__init__.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/app.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/cli.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/identity.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/native.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/relay.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/store.py +0 -0
- {session_peer-0.9.1 → session_peer-0.9.2}/session_peer_relay/wire.py +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
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
|
|
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
|