session-peer 1.1.2__tar.gz → 1.2.1__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-1.1.2 → session_peer-1.2.1}/PKG-INFO +4 -4
- {session_peer-1.1.2 → session_peer-1.2.1}/README.ja.md +3 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/README.ko.md +3 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/README.md +3 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/README.zh-CN.md +3 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/README.md +5 -1
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/cli-reference.md +48 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/i18n-manifest.json +7 -5
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/README.md +5 -1
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/cli-reference.md +45 -3
- session_peer-1.2.1/docs/ja/releases/v1.2.0.md +47 -0
- session_peer-1.2.1/docs/ja/releases/v1.2.1.md +37 -0
- session_peer-1.2.1/docs/ja/validation/85-antigravity.md +97 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/README.md +5 -1
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/cli-reference.md +46 -3
- session_peer-1.2.1/docs/ko/releases/v1.2.0.md +47 -0
- session_peer-1.2.1/docs/ko/releases/v1.2.1.md +37 -0
- session_peer-1.2.1/docs/ko/validation/85-antigravity.md +97 -0
- session_peer-1.2.1/docs/releases/v1.2.0.md +47 -0
- session_peer-1.2.1/docs/releases/v1.2.1.md +37 -0
- session_peer-1.2.1/docs/validation/85-antigravity.md +145 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/README.md +5 -1
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/cli-reference.md +42 -3
- session_peer-1.2.1/docs/zh-CN/releases/v1.2.0.md +47 -0
- session_peer-1.2.1/docs/zh-CN/releases/v1.2.1.md +37 -0
- session_peer-1.2.1/docs/zh-CN/validation/85-antigravity.md +85 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer.py +860 -177
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/adapters.py +11 -4
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/claude.py +237 -17
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/codex.py +479 -29
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/common.py +1 -1
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/diagnostics.py +50 -101
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/handoff.py +22 -8
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/handoff_process.py +2 -2
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/ssh.py +13 -2
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/target_generation.py +4 -3
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/updates.py +41 -10
- session_peer-1.1.2/docs/ja/validation/85-antigravity.md +0 -24
- session_peer-1.1.2/docs/ko/validation/85-antigravity.md +0 -23
- session_peer-1.1.2/docs/validation/85-antigravity.md +0 -60
- session_peer-1.1.2/docs/zh-CN/validation/85-antigravity.md +0 -23
- {session_peer-1.1.2 → session_peer-1.2.1}/.agents/plugins/marketplace.json +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/.gitattributes +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/.gitignore +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/LICENSE +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/SECURITY.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/deploy/README.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/deploy/examples/authenticated-control/README.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/deploy/examples/authenticated-control/session-peer-control.service +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/deploy/examples/static-account/README.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/deploy/examples/static-account/session-peer-relay.service +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/agent-adapters.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ai-assistant-guide.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/antigravity.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/architecture/agent-transports.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/assets/session-peer-live-codex-claude.gif +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/compatibility-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/contracts/handoff-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/diagnostics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/download-metrics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/handoff-runtime.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/agent-adapters.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/ai-assistant-guide.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/antigravity.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/architecture/agent-transports.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/compatibility-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/contracts/handoff-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/diagnostics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/download-metrics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/handoff-runtime.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/mcp.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/multi-home-list.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/paired-devices.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-auth.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-development-plan.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-edge-policy.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-google-bootstrap.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-lifecycle.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-public-pilot-2026-09-17.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/relay-watchdog.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v0.6.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v0.6.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v0.7.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v0.8.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v0.9.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-alpha.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-beta.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-rc.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-rc.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-rc.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0-rc.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.0.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.1.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.1.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/releases/v1.1.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/validation/69-rc.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ja/wake.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/agent-adapters.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/ai-assistant-guide.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/antigravity.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/architecture/agent-transports.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/compatibility-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/contracts/handoff-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/diagnostics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/download-metrics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/handoff-runtime.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/mcp.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/multi-home-list.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/paired-devices.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-auth.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-development-plan.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-edge-policy.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-google-bootstrap.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-lifecycle.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-public-pilot-2026-09-17.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/relay-watchdog.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v0.6.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v0.6.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v0.7.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v0.8.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v0.9.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-alpha.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-beta.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-rc.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-rc.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-rc.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0-rc.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.0.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.1.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.1.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/releases/v1.1.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/validation/69-rc.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/ko/wake.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/mcp.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/multi-home-list.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/paired-devices.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-auth.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-development-plan.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-edge-policy.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-google-bootstrap.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-lifecycle.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-public-pilot-2026-09-17.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/relay-watchdog.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v0.6.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v0.6.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v0.7.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v0.8.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v0.9.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-alpha.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-beta.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-rc.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-rc.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-rc.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0-rc.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.0.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.1.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.1.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/releases/v1.1.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/validation/69-rc.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/wake.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/agent-adapters.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/ai-assistant-guide.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/antigravity.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/architecture/agent-transports.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/compatibility-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/contracts/handoff-v1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/diagnostics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/download-metrics.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/handoff-runtime.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/mcp.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/multi-home-list.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/paired-devices.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-auth.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-development-plan.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-edge-policy.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-google-bootstrap.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-lifecycle.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-public-pilot-2026-09-17.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/relay-watchdog.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v0.6.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v0.6.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v0.7.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v0.8.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v0.9.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-alpha.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-beta.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-rc.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-rc.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-rc.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0-rc.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.3.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.0.4.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.1.0.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.1.1.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/releases/v1.1.2.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/validation/69-rc.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/docs/zh-CN/wake.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/.codex-plugin/plugin.json +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/.mcp.json +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/README.ja.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/README.ko.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/README.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/plugins/session-peer/README.zh-CN.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/pyproject.toml +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/README.md +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/antigravity.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/cli.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/commands.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/handoff_remote.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/handoff_stdin.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/messages.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/output.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/registry.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/relay.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/release_verification.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/replies.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/sending.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/ssh_identity.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_core/wake_chain.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_mcp.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/__init__.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/app.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/auth.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/cli.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/control.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/framing.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/guidance.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/identity.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/lifecycle.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/native.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/recovery.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/relay.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/rotation.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/setup.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/store.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/transport_errors.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/wire.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_relay/worker.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_shorthand/__init__.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_shorthand/__main__.py +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_shorthand/sp-remove.sh +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_shorthand/sp.ps1 +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/session_peer_shorthand/sp.sh +0 -0
- {session_peer-1.1.2 → session_peer-1.2.1}/tools/generate_session_peer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: session-peer
|
|
3
|
-
Version: 1.1
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Discover and message Claude Code, Codex, and Antigravity sessions locally, over SSH, through MCP, or via an optional end-to-end encrypted relay.
|
|
5
5
|
Project-URL: Homepage, https://github.com/abruption/session-peer
|
|
6
6
|
Project-URL: Repository, https://github.com/abruption/session-peer
|
|
@@ -68,11 +68,11 @@ in this ~22-second animation, not a screen recording; send success alone is not
|
|
|
68
68
|
### Install
|
|
69
69
|
|
|
70
70
|
Python 3.9+. The core local/SSH CLI has no third-party Python dependencies.
|
|
71
|
-
|
|
71
|
+
Source version: **1.2.1**. At the 2026-10-19 publication checkpoint, the last verified published stable release was **1.2.0**.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
See the [publication record and historical preparation](docs/releases/v1.2.0.md) for published version 1.2.0. Package publication and operational deployment are separate.
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Check [GitHub Releases](https://github.com/abruption/session-peer/releases) and [PyPI](https://pypi.org/project/session-peer/) for available versions. The [preparation notes](docs/releases/v1.2.1.md) record the dated patch scope and remaining gates; a source version alone does not establish package availability.
|
|
76
76
|
|
|
77
77
|
Experimental handoff is opt-in: local POSIX Claude supports receipt ACKs; Codex and SSH support correlation-only submission, not ACK observation. See the [handoff guide](docs/handoff-runtime.md) for the shipped scope and remaining acceptance gates.
|
|
78
78
|
|
|
@@ -34,11 +34,11 @@ session-peer 1.0.2による実際のローカル通信です。CodexがClaude Co
|
|
|
34
34
|
### インストール
|
|
35
35
|
|
|
36
36
|
Python 3.9以上が必要です。基本のローカル・SSH CLIに外部Python依存パッケージはありません。
|
|
37
|
-
|
|
37
|
+
ソースバージョン:**1.2.1**。2026-10-19の公開状況の確認時点で、最後に確認した公開済み安定版は**1.2.0**でした。
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
公開済み1.2.0の[公開記録・過去の準備](docs/ja/releases/v1.2.0.md)を参照してください。パッケージ公開と本番環境への配備は別です。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
入手できるバージョンは[GitHub Releases](https://github.com/abruption/session-peer/releases)と[PyPI](https://pypi.org/project/session-peer/)で確認してください。[準備記録](docs/ja/releases/v1.2.1.md)は記載日時点のパッチ範囲と残る条件を説明します。ソースのバージョンだけではパッケージの公開状況は確認できません。
|
|
42
42
|
|
|
43
43
|
実験的なhandoffは明示的に選択する機能です。ローカルPOSIX Claudeは受領ACKに対応し、CodexとSSHは相関IDによる送信のみ対応してACKの観察には対応しません。公開済みの範囲と残る検証条件は[handoffガイド](docs/ja/handoff-runtime.md)を参照してください。
|
|
44
44
|
|
|
@@ -34,11 +34,11 @@ session-peer 1.0.2를 사용해 실제 로컬 요청과 회신을 주고받았
|
|
|
34
34
|
### 설치
|
|
35
35
|
|
|
36
36
|
Python 3.9 이상이 필요합니다. 기본 로컬·SSH CLI는 외부 Python 패키지에 의존하지 않습니다.
|
|
37
|
-
|
|
37
|
+
소스 버전: **1.2.1**. 2026-10-19 공개 상태 확인 시점의 마지막 확인 공개 안정판은 **1.2.0**이었습니다.
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
공개 버전 1.2.0의 [공개 증거 및 과거 준비 기록](docs/ko/releases/v1.2.0.md)을 참고하십시오. 패키지 공개와 운영 배포는 별개입니다.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
설치할 수 있는 버전은 [GitHub Releases](https://github.com/abruption/session-peer/releases)와 [PyPI](https://pypi.org/project/session-peer/)에서 확인하십시오. [준비 기록](docs/ko/releases/v1.2.1.md)은 해당 날짜의 패치 범위와 남은 조건을 설명하며, 소스 버전만으로 패키지 공개 여부가 확인되는 것은 아닙니다.
|
|
42
42
|
|
|
43
43
|
실험적 handoff는 명시적으로 선택해야 합니다. 로컬 POSIX Claude는 영수증 ACK를 지원하지만, Codex와 SSH는 상관 ID를 이용한 제출만 지원하며 ACK 관찰은 지원하지 않습니다. 공개된 범위와 남은 검증 조건은 [handoff 가이드](docs/ko/handoff-runtime.md)를 참고하십시오.
|
|
44
44
|
|
|
@@ -34,11 +34,11 @@ in this ~22-second animation, not a screen recording; send success alone is not
|
|
|
34
34
|
### Install
|
|
35
35
|
|
|
36
36
|
Python 3.9+. The core local/SSH CLI has no third-party Python dependencies.
|
|
37
|
-
|
|
37
|
+
Source version: **1.2.1**. At the 2026-10-19 publication checkpoint, the last verified published stable release was **1.2.0**.
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
See the [publication record and historical preparation](docs/releases/v1.2.0.md) for published version 1.2.0. Package publication and operational deployment are separate.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Check [GitHub Releases](https://github.com/abruption/session-peer/releases) and [PyPI](https://pypi.org/project/session-peer/) for available versions. The [preparation notes](docs/releases/v1.2.1.md) record the dated patch scope and remaining gates; a source version alone does not establish package availability.
|
|
42
42
|
|
|
43
43
|
Experimental handoff is opt-in: local POSIX Claude supports receipt ACKs; Codex and SSH support correlation-only submission, not ACK observation. See the [handoff guide](docs/handoff-runtime.md) for the shipped scope and remaining acceptance gates.
|
|
44
44
|
|
|
@@ -34,11 +34,11 @@ session-peer使用各智能体自身的收件箱和队列;接收方智能体
|
|
|
34
34
|
### 安装
|
|
35
35
|
|
|
36
36
|
需要Python 3.9或更高版本。核心本地与SSH CLI没有第三方Python依赖。
|
|
37
|
-
|
|
37
|
+
源码版本:**1.2.1**。在2026-10-19的发布状态检查时,最后确认的已发布稳定版本为**1.2.0**。
|
|
38
38
|
|
|
39
|
-
请参阅
|
|
39
|
+
已发布的1.2.0请参阅[发布记录与历史准备](docs/zh-CN/releases/v1.2.0.md)。软件包发布与生产环境部署是两项独立操作。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
可用版本请查看[GitHub Releases](https://github.com/abruption/session-peer/releases)和[PyPI](https://pypi.org/project/session-peer/)。[准备记录](docs/zh-CN/releases/v1.2.1.md)说明记录日期时的补丁范围与剩余门禁;仅凭源码版本不能确认软件包是否已发布。
|
|
42
42
|
|
|
43
43
|
实验性handoff需要明确选择启用:本地POSIX Claude支持收据ACK;Codex与SSH仅支持关联标识提交,不支持ACK观察。已发布范围与剩余验收条件请参阅[handoff指南](docs/zh-CN/handoff-runtime.md)。
|
|
44
44
|
|
|
@@ -24,7 +24,11 @@ installation paths.
|
|
|
24
24
|
|
|
25
25
|
## Development and history
|
|
26
26
|
|
|
27
|
-
- [v1.1
|
|
27
|
+
- [v1.2.1 preparation notes](releases/v1.2.1.md) record the 2026-10-19 patch candidate for Orca Claude discovery, skill metadata reading and the compatibility skill copy; publication remains separate.
|
|
28
|
+
|
|
29
|
+
- [v1.2.0 published record and historical preparation](releases/v1.2.0.md) record the 2026-10-16 publication separately from preparation started on 2026-10-15 and updated on 2026-10-16, the merged six-PR scope and remaining acceptance gates.
|
|
30
|
+
|
|
31
|
+
- [v1.1.2 historical preparation notes](releases/v1.1.2.md) describe #298 and the 2026-10-13 preparation; v1.1.2 was subsequently published. Do not reuse its version or commands.
|
|
28
32
|
|
|
29
33
|
- [v1.1.1 maintenance notes](releases/v1.1.1.md) cover the documentation/test maintenance target prepared on 2026-10-12; runtime behavior is unchanged from 1.1.0. Verify package publication separately.
|
|
30
34
|
|
|
@@ -121,6 +121,8 @@ persisted queue row. Their existing separate identity contracts remain intact.
|
|
|
121
121
|
The broader cross-agent work in #180 remains open; this development feature is
|
|
122
122
|
not shipped in v1.0.4 and adds no automatic fallback or resubmission.
|
|
123
123
|
|
|
124
|
+
The 2026-10-15 review of the queued-input paths in native Codex [0.162.1](https://github.com/openai/codex/tree/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs) did not identify a supported precondition that atomically checks the original writer incarnation. In the inspected source, the lock-acquisition path does not write an incarnation token, a thread's `sessionId` survives resume, and `thread/queue/add` accepts a thread, input and a client message ID rather than a generation precondition. The inspected `turn/steer` path checks `expectedTurnId` under the active-turn lock; session-peer does not use that turn-specific check as a writer generation. These findings are limited to the pinned paths, not a proof about every native API or future version. Writer PID, start-time and lock rechecks, queue IDs, `canAcceptDirectInput` and `sessionId` do not establish the required original-incarnation guarantee; session-peer continues to report Codex `targetGeneration` as `unsupported`. #180 remains open for a separately validated native contract.
|
|
125
|
+
|
|
124
126
|
`--message TEXT` (short form `-m`) names the text sent to the destination.
|
|
125
127
|
`--output-format text|json` selects the command result format, not the message
|
|
126
128
|
format. It is available on `list`, `send`, `doctor`, and `update`; the default is
|
|
@@ -451,6 +453,35 @@ from the desired release checkout to refresh both standalone program and skill.
|
|
|
451
453
|
Local `session-peer update --check` and `session-peer update` also populate the
|
|
452
454
|
same cache used by automatic notices.
|
|
453
455
|
|
|
456
|
+
### Claude profiles managed by Orca
|
|
457
|
+
|
|
458
|
+
On macOS, when neither `CLAUDE_CONFIG_DIR` nor `ANTHROPIC_CONFIG_DIR` selects a
|
|
459
|
+
directory, discovery includes `~/.claude/sessions` and known same-user Orca
|
|
460
|
+
`~/Library/Application Support/orca/claude-profiles/*/home/sessions` directories.
|
|
461
|
+
An explicit environment directory retains its original scope and precedence;
|
|
462
|
+
it never expands into other profiles. For example, use
|
|
463
|
+
`CLAUDE_CONFIG_DIR="/path/to/profile/home" session-peer list --agent claude --json`
|
|
464
|
+
to inspect one profile only. Installation paths are unchanged.
|
|
465
|
+
|
|
466
|
+
On all platforms, default and explicit registry scans share a total limit of
|
|
467
|
+
4,096 directory entries and bounded 1 MiB registration files. Only the additional
|
|
468
|
+
Orca profile inventory is macOS-specific, limited to 128 immediate entries.
|
|
469
|
+
Automatic profile directories reject symlinks, reparse points and foreign-user
|
|
470
|
+
ownership. Discovery and doctor never read credentials, inbox keys or transcripts.
|
|
471
|
+
Canonical aliases of one registry are scanned once. Distinct records claiming
|
|
472
|
+
the same live PID or inbox conflict even when their public metadata is identical.
|
|
473
|
+
|
|
474
|
+
Partial errors preserve healthy listing rows, but **any inventory error, including
|
|
475
|
+
a live conflict, refuses every target selection**, even an unrelated healthy PID,
|
|
476
|
+
for dry-run, send and handoff. An explicit directory can isolate errors in other
|
|
477
|
+
profiles; it cannot repair conflicts or limits within the selected directory.
|
|
478
|
+
Legacy single-directory handling of malformed records is unchanged.
|
|
479
|
+
Selected record and endpoint evidence is rechecked without rescanning other
|
|
480
|
+
profiles. Ordinary Unix socket aliases remain supported; their existing optional
|
|
481
|
+
generation limitation remains. A generation token is not send permission or ACK.
|
|
482
|
+
These checks do not authenticate a model, remove all filesystem races or prove
|
|
483
|
+
receipt. Other Orca layouts and arbitrary configuration roots are not scanned.
|
|
484
|
+
|
|
454
485
|
### Environment variables
|
|
455
486
|
|
|
456
487
|
| Variable | Effect |
|
|
@@ -483,13 +514,27 @@ prove the queue can accept it.
|
|
|
483
514
|
|
|
484
515
|
### SQLite storage boundary
|
|
485
516
|
|
|
517
|
+
Standalone `list` remains metadata-only: it does not execute Codex or query its version, and `--codex-bin` does not establish the version for discovery. On macOS, discovery therefore conservatively checks ordinary as well as forced preferences before opening a candidate SQLite database. This blocks stale-home results for older loaders, but can also refuse a valid newer environment whose native loader ignores ordinary values. A refusal is an error, never a successful empty list or a switch to another database; valid results from other agents remain available with the incomplete-discovery error. The diagnostic identifies the storage-configuration ambiguity and asks the operator to review known configuration layers, including effective `com.openai.codex` configuration/requirements and the intended home/storage layout. Changing `--codex-home` alone does not resolve global preference ambiguity. Do not automatically remove preferences, managed profiles or databases to suppress the error. If the native loader legitimately ignores the value, discovery remains conservatively unsupported for that configuration; precise version-aware discovery is a separate improvement. Internal send dry-run discovery reuses the already selected send policy without another probe.
|
|
518
|
+
|
|
519
|
+
For sends and their internal dry-run checks, the macOS preference policy depends on the selected native executable. The exact reviewed Codex 0.162.1 loader accepts only forced values; Codex [0.154.0](https://github.com/openai/codex/blob/6b9826e3aa83b1a5947db50f4332cb9c65f1b340/codex-rs/config/src/loader/macos.rs) reads ordinary as well as forced preferences through `CFPreferencesCopyAppValue`. On macOS, ordinary queue sends and dry-runs run one bounded `--version` child in the selected home and working directory: three seconds for the query and two for cleanup, with 1 MiB stdout and 64 KiB diagnostic limits. Output is never reflected; malformed, unavailable or unreviewed versions conservatively include ordinary preferences rather than refusing solely for their version. Uncertain process cleanup refuses before queue submission, and interruption is propagated after the bounded cleanup attempt. Only the exact reviewed `codex-cli 0.162.1` selects forced-only checks; later versions are not assumed equivalent. Handoff reuses its existing version query and original deadline, then retains the selected policy through submission. The supported 0.154.0 wake path includes ordinary preferences even when an active writer only receives a queue submission. Storage and custom-marker checks repeat before the budget and child boundaries. No new version probe is added outside macOS, no results are cached, and wake support is not expanded. A refusal after known queue submission preserves that submission without resending. These are source-based guards and synthetic regressions, not new native preference or MDM validation.
|
|
520
|
+
|
|
521
|
+
Owned queue and wake children use an existing, strictly resolved physical working directory, including aliases in any ancestor. Project scanning, child `cwd`, POSIX `PWD` and wake `thread/resume.cwd` use that directory. For a saved consumer directory that still exists, both physical and distinct lexical project spellings are checked with the same marker boundaries and custom-marker fallback; this can conservatively refuse an alias configuration. A missing consumer directory still has no layers to inspect. This does not establish an already running writer's startup configuration, and alias/configuration changes after inspection remain possible. The `wake.cwd` result uses this physical spelling too; it can differ from the saved alias.
|
|
522
|
+
|
|
523
|
+
The native loader's layer-list comment mentions `<cwd>/config.toml`, but its pinned [project-layer construction](https://github.com/openai/codex/blob/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs/config/src/loader/mod.rs#L1652) loads `.codex/config.toml` instead. This guard follows that implementation, not the stale comment. A successful Windows Known Folder lookup with an invalid or unbounded path is refused rather than silently falling back to a different directory.
|
|
524
|
+
|
|
525
|
+
Wake preflight checks known storage before reserving its budget, but a later recheck can still refuse after reservation if configuration or writer evidence changes. The translated-native-home route retains its inherited cwd and does not inspect the Windows consumer directory.
|
|
526
|
+
|
|
486
527
|
The 2026-10-09 source investigation examined native Codex [0.154.0](https://github.com/openai/codex/blob/6b9826e3aa83b1a5947db50f4332cb9c65f1b340/codex-rs/core/src/config/mod.rs) and [0.159.0](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/core/src/config/mod.rs). Both resolve SQLite storage from configured `sqlite_home`, then nonempty `CODEX_SQLITE_HOME`, then `CODEX_HOME`; relative environment paths use the native resolved working directory. [Managed requirements](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/core/src/config/requirements.rs) can replace configured storage, including command-line overrides. The [native queue path](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/tui/src/session_queue_commands.rs) can reuse a running shared server, whose storage is not established by the new client's environment. These are source findings, not new live-delivery or platform validation.
|
|
487
528
|
|
|
488
|
-
|
|
529
|
+
The 2026-10-15 investigation of native Codex [0.162.1](https://github.com/openai/codex/tree/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs) found the storage precedence to be managed requirements, then the merged configuration layers, then `CODEX_SQLITE_HOME`, then `CODEX_HOME`. Layers that can set `sqlite_home` include system files, macOS managed profiles, the user's `config.toml`, a profile file selected with `--profile`, and the project layers of the native process working directory (`.codex/config.toml` from the working directory up to the nearest default `.git` root, or only the working directory when no root is found; enabled only for trusted projects). Legacy `[profiles.*]` tables have no storage key. `codex queue` submits through a running app-server daemon when one accepts a connection on the home's `app-server-control/app-server-control.sock`, and otherwise through an embedded server. Native TUIs start such a daemon automatically by default unless excluded, for example with `--no-daemon`. A daemon's QueueStore keeps the database chosen at its startup, while `config/read` rereads the current disk layers; `initialize` reports the home and platform, but the reviewed `initialize`, `config/read` and queue APIs offer no stable attestation contract for the startup SQLite identity. A matching thread UUID or the same server connection does not establish storage identity (a copied database can hold the same UUID), and the queue API has no expected-storage or incarnation precondition. A process that consumes queued messages polls the queue in its own storage. These are source findings, not live-delivery or platform validation.
|
|
530
|
+
|
|
531
|
+
session-peer refuses a nonempty inherited `CODEX_SQLITE_HOME` or a root `sqlite_home` setting in any inspected home's configuration before discovery, dry-run, or queue submission. This includes quoted/escaped root keys and root dotted/table forms, even when the configured path equals the selected home. Unselected nested keys are not root storage settings. Empty environment overrides are removed from native child environments; environment names are case-sensitive on POSIX and case-insensitive on Windows. The guard retains the selected native-home translation where already supported and does not add relocated-storage support. It also refuses a root `sqlite_home` in the system configuration and requirements files (`/etc/codex/config.toml`, `/etc/codex/managed_config.toml`, `/etc/codex/requirements.toml`, or the Known Folder API's ProgramData directory followed by `OpenAI\Codex\config.toml` and `requirements.toml` on Windows) and in macOS managed-profile values, regardless of project trust. A queue submission starts the native process in the inspected home, so the caller's directory adds no project layers. Dry-run checks the same execution plan (home, child working directory, environment, known layers and consumer directory) without queue/app-server children (wake dry-run and ordinary macOS queue dry-run may run the native version probe), and a real send repeats the checks immediately before its effect; neither removes the time gap before native Codex reads its configuration, so a passing dry-run does not guarantee storage agreement for a later send. By user policy, a daemon control socket, live or stale, is neither a refusal reason nor probed: native Codex selects the daemon or embedded server as before, and no storage authority is claimed. Outside the translated-native-home route, dry-run, queue and wake also inspect the project layers of the saved thread directory, where the consuming writer or wake server normally starts; unreadable or malformed thread metadata is refused. Wake runs these storage checks before reserving its per-target budget. Refusal reasons are `sqlite_environment_override`, `sqlite_home_configuration`, `sqlite_home_system_configuration`, `sqlite_home_managed_configuration`, `sqlite_home_project_configuration`, `consumer_directory_unverifiable`, `storage_config_unreadable` and `storage_config_unverifiable`.
|
|
532
|
+
|
|
533
|
+
Each inspected TOML file must be a regular, non-symlink UTF-8 file of at most 1 MiB. On Windows, the system directory is obtained through `SHGetKnownFolderPath(FOLDERID_ProgramData)`, with native Codex's fixed `C:\ProgramData` fallback on API failure; the `ProgramData` environment variable is not used. On macOS, CoreFoundation synchronizes the Codex preference domain and releases owned values. The forced-only policy rechecks forced status after copying and ignores ordinary user preferences; the version-selected conservative policy also reads ordinary values, as described above. Selected base64 strings are bounded to 2 MiB and decode to UTF-8 TOML of at most 1 MiB; synchronization, type, decoding or size errors refuse. Missing TOML files or preference values are allowed. Default project markers stop at the nearest non-directory `.git` entry (metadata only) or a directory containing `HEAD`; symlink markers are conservatively refused; without a marker only cwd applies. `<cwd>/config.toml` is not a project layer. A known root `project_root_markers` override retains a conservative ancestor superset instead of claiming exact custom-marker interpretation. These APIs are covered by mocks; relocated Windows Known Folders and real forced MDM profiles have not been tested. Unreadable, changed, oversized, or lexically unclassifiable files are refused without printing their contents. The dependency-free key classifier supports Python 3.9 and is not a general TOML/schema validator; native Codex still validates other values. Queue and wake recheck this boundary before starting a child. A refusal has `status=refused`, `submitted=false`, and `retryAllowed=false`; valid ordinary outputs and writer-ownership checks remain unchanged. SSH performs this check on the destination, not on the sender's environment.
|
|
489
534
|
|
|
490
|
-
|
|
535
|
+
Translated native homes (a WSL relay receiver queueing to native Windows Codex) keep their existing submission contract, but storage verification is not supported for them: this POSIX process cannot inspect the Windows-side home spelling, case rules, environment, or system, managed and project layers. A future strict mode could refuse such paths before any effect; it is not implemented.
|
|
491
536
|
|
|
492
|
-
This is bounded hardening, not proof of effective native storage for every configuration.
|
|
537
|
+
This is bounded hardening, not proof of effective native storage for every configuration. Not inspected: package-supplied defaults; enterprise cloud configuration bundles; the startup storage of a running shared daemon; a `--profile` selection, `-c` overrides or the environment of a writer that is already running; a writer that started outside the saved thread directory or whose directory no longer exists; and, for a translated native home, the Windows-side system, managed and project layers. Configuration can also change after the final check. Do not infer storage agreement from a successful check alone. [#268](https://github.com/abruption/session-peer/issues/268) remains open for native platform validation of this contract. Fake-child fixtures show refusal and environment behavior only; they do not establish actual wrong-target delivery, a security exploit, or new native compatibility. The wake version matrix remains unchanged.
|
|
493
538
|
|
|
494
539
|
### Orca and multiple Codex homes
|
|
495
540
|
|
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
"zh-CN"
|
|
8
8
|
],
|
|
9
9
|
"sources": {
|
|
10
|
-
"README.md": "
|
|
11
|
-
"RELEASING.md": "
|
|
10
|
+
"README.md": "9ccd334628d9bb03bba3a08d0fd67a46ab48124733e4cf0b6565f034680db441",
|
|
11
|
+
"RELEASING.md": "b2371ba9b2392e3b95394bb6bb3c2927b0c87ff3a8b307bc90defdad6f0ab8a6",
|
|
12
12
|
"SECURITY.md": "8f018f6f98002312e143609b9734aeb971ca5217e146597c06b57b5645031046",
|
|
13
|
-
"docs/README.md": "
|
|
13
|
+
"docs/README.md": "03a461054c1570741c2022685014a1b947f0234145b83f4c8297241d5edcf327",
|
|
14
14
|
"docs/agent-adapters.md": "bf185d3121c94829bb412071a25c4d943302e10a6b2e713111e653b8f8c3ea91",
|
|
15
15
|
"docs/ai-assistant-guide.md": "9624ec96b92fb688fae3be3c94cb3564c77985091be451fbf1f056a1af9b9d9c",
|
|
16
16
|
"docs/antigravity.md": "f2b5122a0ce6e6fb5bd4d8ed50ce2c8bd2dc9c98ec8ce328405cf7c2cd24229d",
|
|
17
17
|
"docs/architecture/agent-transports.md": "01a4e3942e87acb476595859f2e37f9653ea1e3bc19ebc68dced1adf20a6966f",
|
|
18
|
-
"docs/cli-reference.md": "
|
|
18
|
+
"docs/cli-reference.md": "43e9e3232d8975d3e6b17065f40f43ff590184cac503d2c8fdae05142668334b",
|
|
19
19
|
"docs/compatibility-v1.md": "7e551aad37a369faff7e370728376763efb54c2c9e9cfd8556a0c19aabc3d103",
|
|
20
20
|
"docs/contracts/handoff-v1.md": "46a953010c49214bd8f969412f26713384fbe09a0ba78ebf0fef75da40d0d889",
|
|
21
21
|
"docs/diagnostics.md": "0949e53612eeab2cd7c7bbda498e14d71e9cb1b1189aa7722030cb8702cd8481",
|
|
@@ -50,8 +50,10 @@
|
|
|
50
50
|
"docs/releases/v1.1.0.md": "66e66c4ca2d18b4da03c169885443ce26af49885fae474e95476b9078e50252f",
|
|
51
51
|
"docs/releases/v1.1.1.md": "e7d5b6060098be0d4db06a7c2845955ea46084cdecd3fe8e5dc6c44324c09cc0",
|
|
52
52
|
"docs/releases/v1.1.2.md": "3ffe3d6daa8e403e9f3c5e83ec81c3afa9f10750627b31362990ec5b92326f3a",
|
|
53
|
+
"docs/releases/v1.2.0.md": "9a153493fb3d25306306a05f6c1f5672d7d7becfe008f371770ce2d13d7e9b38",
|
|
54
|
+
"docs/releases/v1.2.1.md": "70a3026c2d874a6fd7addcaef840ecfa84bf4f33a0165605217379acffa4fddb",
|
|
53
55
|
"docs/validation/69-rc.md": "e490c6a9ad0fec9108b91c74922cedac7ddf214ed405f8f5523da22f48a4b222",
|
|
54
|
-
"docs/validation/85-antigravity.md": "
|
|
56
|
+
"docs/validation/85-antigravity.md": "f89b175191cd98ab03d4029b487065133814b3c8dd8de8cd0a5cc367e2579e4f",
|
|
55
57
|
"docs/wake.md": "cde135da2ea7be21c815bb265e694f737dbe467d8e76bb82eb118e3b86e29d22",
|
|
56
58
|
"plugins/session-peer/README.md": "a4eeae54caac9ad824d740f7f319561f060bc9c2bbbbf7def2bdd8e36dbcd1c6"
|
|
57
59
|
}
|
|
@@ -23,7 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
## 開発と履歴
|
|
25
25
|
|
|
26
|
-
- [v1.1
|
|
26
|
+
- [v1.2.1準備記録](releases/v1.2.1.md)は、Orca Claude検索・スキルメタデータ読み取り・互換スキルコピーの2026-10-19パッチ候補を記録し、公開は別です。
|
|
27
|
+
|
|
28
|
+
- [v1.2.0公開記録と過去の準備](releases/v1.2.0.md)は2026-10-16の公開と、2026-10-15に開始し2026-10-16に更新した準備、マージ済み6件のPRの範囲と残る受け入れ条件を区別します。
|
|
29
|
+
|
|
30
|
+
- [v1.1.2の過去の準備記録](releases/v1.1.2.md)は#298と2026-10-13の準備を説明します。その後v1.1.2は公開済みです。バージョンやコマンドを再利用しないでください。
|
|
27
31
|
|
|
28
32
|
- [v1.1.1メンテナンスノート](releases/v1.1.1.md)は2026-10-12に準備したドキュメント・テストのメンテナンス版を説明し、ランタイムの動作は1.1.0と同じです。パッケージ公開は別途確認してください。
|
|
29
33
|
|
|
@@ -35,6 +35,8 @@ Codex キュー、Antigravity とペアリング済み機器には、この受
|
|
|
35
35
|
Codex の書き込みプロセスを再確認しても、後からキューを消費するプロセスを原子的に制限できません。
|
|
36
36
|
#180 全体は未完了です。v1.0.4 の公開機能ではなく、自動フォールバックや再送も追加しません。
|
|
37
37
|
|
|
38
|
+
2026-10-15 に native Codex [0.162.1](https://github.com/openai/codex/tree/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs) のキュー入力経路を確認しましたが、元の書き込みプロセスの世代を原子的に検査する、利用可能な前提条件は見つかりませんでした。確認したソースでは、ロック取得経路は世代トークンを記録せず、スレッドの `sessionId` は再開後も維持され、`thread/queue/add` は世代の前提条件ではなくスレッド・入力・クライアントメッセージ ID を受け取ります。確認した `turn/steer` 経路はアクティブターンのロック内で `expectedTurnId` を検査しますが、session-peer はこのターン固有の検査を書き込みプロセスの世代として使いません。これは固定した経路に限った調査であり、すべての native API や将来のバージョンで機能が存在しないことを証明しません。PID・開始時刻・ロックの再確認、キュー ID、`canAcceptDirectInput`、`sessionId` は必要な元世代の保証を確立しないため、Codex の `targetGeneration` は引き続き `unsupported` と報告します。#180 は別途検証された native 契約のため未完了のままです。
|
|
39
|
+
|
|
38
40
|
コマンドの詳細な動作、インストールオプション、トランスポートの制限、および過去の検証結果について以下に説明します。
|
|
39
41
|
機械consumerは[v1互換性契約](compatibility-v1.md)にも従ってください。
|
|
40
42
|
|
|
@@ -440,6 +442,32 @@ pip/pipx/uv のインストールは検査しません。リモート更新は
|
|
|
440
442
|
ローカルの `session-peer update --check` および `session-peer update` は、自動通知で
|
|
441
443
|
使用されるのと同じキャッシュも設定します。
|
|
442
444
|
|
|
445
|
+
### Orca が管理する Claude プロファイル
|
|
446
|
+
|
|
447
|
+
macOS で `CLAUDE_CONFIG_DIR` と `ANTHROPIC_CONFIG_DIR` を指定しない場合、
|
|
448
|
+
`~/.claude/sessions` と同じユーザーが所有する既知の Orca ディレクトリ
|
|
449
|
+
`~/Library/Application Support/orca/claude-profiles/*/home/sessions` を検索します。
|
|
450
|
+
環境変数による明示指定は従来の優先順位と範囲を維持し、他のプロファイルへ広げません。
|
|
451
|
+
1 つだけ確認するには
|
|
452
|
+
`CLAUDE_CONFIG_DIR="/path/to/profile/home" session-peer list --agent claude --json`
|
|
453
|
+
を使います。インストール先は変わりません。
|
|
454
|
+
|
|
455
|
+
すべてのプラットフォームで、既定・明示指定の登録先検索は全体で 4,096 項目、
|
|
456
|
+
登録ファイルごとに 1 MiB に制限されます。追加の Orca プロファイル検索だけが macOS 専用で、
|
|
457
|
+
直下 128 項目が上限です。自動検索するプロファイルのシンボリックリンク、再解析ポイント、
|
|
458
|
+
他のユーザーの所有権は拒否します。検索と doctor は認証情報、受信箱の鍵、会話履歴を読みません。
|
|
459
|
+
同じ実体の登録ディレクトリの別名は 1 回だけ検索します。別の記録が同じ生存 PID または
|
|
460
|
+
受信箱を主張すれば、公開メタデータが同一でも矛盾です。
|
|
461
|
+
|
|
462
|
+
正常な一覧は残しますが、**生存セッションの矛盾を含む検索エラーが 1 件でもあれば、
|
|
463
|
+
無関係な正常 PID も含めてすべての送信先選択を拒否**します。dry-run・送信・handoff が対象です。
|
|
464
|
+
明示指定で他のプロファイルのエラーを分離できますが、指定先内部の矛盾や検索上限は解消しません。
|
|
465
|
+
従来の単一ディレクトリでの不正な記録の扱いは変更しません。
|
|
466
|
+
選択した記録・受信箱を、他のプロファイルへ再検索せず確認します。通常の Unix ソケット別名は
|
|
467
|
+
維持しますが、既存の任意世代検査の制限も維持します。世代トークンは送信権限や ACK ではありません。
|
|
468
|
+
モデル認証、すべてのファイルシステム競合の排除、受信証明は提供しません。
|
|
469
|
+
他の Orca 構成や任意の設定ディレクトリは自動検索しません。
|
|
470
|
+
|
|
443
471
|
### 環境変数
|
|
444
472
|
|
|
445
473
|
| 変数 | 効果 |
|
|
@@ -472,13 +500,27 @@ Codex の検出は、読み取り専用の SQLite 接続を使用して `state_5
|
|
|
472
500
|
|
|
473
501
|
### SQLite ストレージの境界
|
|
474
502
|
|
|
503
|
+
単独の `list` はメタデータだけを調べます。Codex の実行やバージョン照会は行わず、`--codex-bin` を指定しても検出用のバージョンが確認されたことにはなりません。そのため macOS では候補の SQLite DB を開く前に、通常の設定と強制設定の両方を保守的に検査します。旧ローダーで既定ホームの古い DB を誤って読むことを防ぎますが、通常の設定を無視する新しいローダーの正常な環境も拒否する場合があります。拒否はエラーとして返し、成功した空一覧や別 DB への切り替えとして扱いません。他のエージェントの正常な結果は検出不完全のエラーとともに保持します。診断ではストレージ設定の曖昧さを示し、運用者に既知の設定層と有効な `com.openai.codex` の設定・要件と意図したホーム・ストレージ構成の確認を求めます。`--codex-home` の変更だけでは全体設定の曖昧さは解消しません。エラーを隠すために設定、管理プロファイルや DB を自動削除しないでください。native ローダーが実際に値を無視していても、この構成の検出は保守的に未対応とし、正確なバージョン別検出は別の改善で扱います。send の事前検証内の検出では、すでに選択した送信方針を再利用し、追加のバージョン照会をしません。
|
|
504
|
+
|
|
505
|
+
送信とその事前検証では、選択した native 実行ファイルによって macOS 設定の検査方針が異なります。確認した Codex 0.162.1 は強制設定だけを読みますが、Codex [0.154.0](https://github.com/openai/codex/blob/6b9826e3aa83b1a5947db50f4332cb9c65f1b340/codex-rs/config/src/loader/macos.rs) は `CFPreferencesCopyAppValue` で通常の設定も読みます。macOS の通常のキュー送信と事前検証は、選択したホームと作業ディレクトリで `--version` 子プロセスを一度実行します。照会は3秒、後処理は2秒、標準出力は1 MiB、診断出力は64 KiBに制限します。出力内容を外部に返しません。形式が不正、取得不能、未調査のバージョンでは、バージョンだけを理由に拒否せず通常の設定も保守的に調べます。後処理が不確実なら投入前に拒否し、中断は期限内の後処理を試みた後に伝播します。厳密に `codex-cli 0.162.1` の場合だけ強制設定専用にし、後のバージョンも同じとは仮定しません。handoff は既存のバージョン照会と元の期限を再利用し、投入まで方針を保持します。対応する0.154.0の wake 経路は、稼働中の writer にキューだけを投入する場合も通常の設定を調べます。予算予約と子プロセス起動の境界でストレージと独自マーカーを再確認します。macOS 以外では新たなバージョン照会をせず、結果をキャッシュせず、wake の対応範囲も増やしません。確認済みのキュー投入後に拒否しても投入の事実を保持し、再送しません。これはソースに基づく検査と模擬回帰テストであり、新たな native 設定や MDM の実測ではありません。
|
|
506
|
+
|
|
507
|
+
所有するキューと wake の子プロセスには、祖先の別名も含めて厳密に解決した、存在する物理的な作業ディレクトリを使います。プロジェクト検索、子の `cwd`、POSIX の `PWD`、wake の `thread/resume.cwd` は同じディレクトリです。保存済みの consumer ディレクトリが存在する場合、物理的な表記と異なる論理的な表記の両方を、同じマーカー境界と独自マーカーの代替規則で調べるため、別名設定を保守的に拒否する場合があります。失われた consumer ディレクトリには検査する層がないという既存の扱いを維持します。実行中の writer の起動設定を確認するものではなく、検査後の別名や設定の変更も起こり得ます。 結果の `wake.cwd` もこの物理的な表記を使うため、保存された別名と異なる場合があります。
|
|
508
|
+
|
|
509
|
+
native ローダーの層一覧コメントには `<cwd>/config.toml` とありますが、固定した[プロジェクト層の構成コード](https://github.com/openai/codex/blob/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs/config/src/loader/mod.rs#L1652)は `.codex/config.toml` を読み込みます。この検査は古いコメントではなく実装に従います。Windows Known Folder の取得が成功しても、返されたパスが不正または上限超過の場合、別のディレクトリへ黙って切り替えず拒否します。
|
|
510
|
+
|
|
511
|
+
wake は予算予約前に既知のストレージ設定を調べますが、予約後に設定や書き込みプロセスの証拠が変わると、後続の再検査で拒否される場合があります。変換された native ホームの経路は継承した cwd を維持し、Windows の消費側ディレクトリは調べません。
|
|
512
|
+
|
|
475
513
|
2026-10-09 のソース調査では native Codex [0.154.0](https://github.com/openai/codex/blob/6b9826e3aa83b1a5947db50f4332cb9c65f1b340/codex-rs/core/src/config/mod.rs) と [0.159.0](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/core/src/config/mod.rs) を確認しました。両版は設定済みの `sqlite_home`、空でない `CODEX_SQLITE_HOME`、`CODEX_HOME` の順で SQLite ストレージを選択します。相対的な環境変数のパスは native が解決した作業ディレクトリを基準にします。[管理要件](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/core/src/config/requirements.rs) はコマンドライン指定を含むストレージ設定を置き換えられます。[native のキュー経路](https://github.com/openai/codex/blob/687a119f0fcaace47e1f1abcc77cec6c813fd6da/codex-rs/tui/src/session_queue_commands.rs) は稼働中の共有サーバーを再利用できるため、新しいクライアントの環境だけではサーバーのストレージを確認できません。これはソース上の確認であり、新たな実送信やプラットフォーム検証ではありません。
|
|
476
514
|
|
|
477
|
-
|
|
515
|
+
2026-10-15 の native Codex [0.162.1](https://github.com/openai/codex/tree/092d3acd6bec3e3a14bdc7e7a2810ab628ab759d/codex-rs) の調査では、ストレージの優先順位は管理要件、統合された設定層、`CODEX_SQLITE_HOME`、`CODEX_HOME` の順でした。`sqlite_home` を設定できる層は、システムファイル、macOS の管理プロファイル、ユーザーの `config.toml`、`--profile` で選択したプロファイルファイル、native プロセスの作業ディレクトリのプロジェクト層(作業ディレクトリから最も近い既定の `.git` ルートまでの `.codex/config.toml`。ルートがなければ作業ディレクトリのみ。信頼済みプロジェクトでのみ有効)です。従来の `[profiles.*]` テーブルにはストレージのキーがありません。`codex queue` は、ホームの `app-server-control/app-server-control.sock` で接続を受け付ける app-server デーモンが稼働中であればそのデーモン経由で、そうでなければ内蔵サーバー経由で投入します。native TUI は `--no-daemon` などで除外しない限り、既定でこのデーモンを自動起動します。デーモンの QueueStore は起動時に選んだデータベースを保持しますが、`config/read` は現在のディスク上の設定層を読み直します。`initialize` はホームとプラットフォームを返しますが、確認した `initialize`、`config/read`、キュー API には起動時の SQLite の同一性を証明する安定した契約がありません。スレッド UUID の一致や同じサーバーへの接続はストレージの同一性を意味せず(コピーしたデータベースにも同じ UUID があり得ます)、キュー API には期待するストレージやプロセス世代の前提条件がありません。キューのメッセージを消費するプロセスは自身のストレージのキューをポーリングします。これはソース上の確認であり、実送信やプラットフォーム検証ではありません。
|
|
516
|
+
|
|
517
|
+
session-peer は継承された `CODEX_SQLITE_HOME` が空でない場合、または調べるホームの設定にルートの `sqlite_home` がある場合、検出、事前検証、キュー投入の前に拒否します。設定パスが選択したホームと同じ場合も拒否し、引用符・エスケープを含むルートキー、ルートのドット区切りキーやテーブルも対象です。選択されていない入れ子のキーはルートのストレージ設定と見なしません。空の環境変数指定は native 子プロセスの環境から除去します。環境変数名は POSIX では大文字と小文字を区別し、Windows では区別しません。既存の native ホームのパス変換は維持し、ストレージの移動には対応しません。 また、システムの設定・要件ファイル(`/etc/codex/config.toml`、`/etc/codex/managed_config.toml`、`/etc/codex/requirements.toml`、Windows では Known Folder API の ProgramData ディレクトリ配下の `OpenAI\Codex\config.toml` と `requirements.toml`)と macOS の管理プロファイルの値にルートの `sqlite_home` がある場合、プロジェクトの信頼状態に関係なく拒否します。キュー投入は調べたホームで native プロセスを起動するため、呼び出し元のディレクトリはプロジェクト層を追加しません。事前検証は キュー・app-server の子プロセスを起動せずに(wake と macOS の通常のキューの事前検証では native のバージョン確認プロセスを実行する場合があります)同じ実行計画(ホーム、子プロセスの作業ディレクトリ、環境、既知の設定層、消費ディレクトリ)を調べ、実際の送信は効果の直前に再確認します。どちらも native Codex が設定を読むまでの時間差をなくさないため、事前検証の成功は次の送信でのストレージ一致を保証しません。ユーザーの方針により、デーモンの制御ソケットは稼働中か残存かに関係なく拒否理由にならず、session-peer は接続も試みません。デーモンと内蔵サーバーの選択は従来どおり native Codex が行い、ストレージの権限は主張しません。変換された native ホームの経路を除き、事前検証、キュー投入、wake は、消費する書き込みプロセスや wake サーバーが通常起動する、保存済みスレッドのディレクトリのプロジェクト層も調べ、スレッドのメタデータを読み取れない場合や形式が不正な場合は拒否します。wake は対象ごとの予算を予約する前にこれらのストレージ検査を行います。拒否理由は `sqlite_environment_override`、`sqlite_home_configuration`、`sqlite_home_system_configuration`、`sqlite_home_managed_configuration`、`sqlite_home_project_configuration`、`consumer_directory_unverifiable`、`storage_config_unreadable`、`storage_config_unverifiable` です。
|
|
518
|
+
|
|
519
|
+
調べる TOML ファイルは最大 1 MiB の UTF-8 通常ファイルであり、シンボリックリンクであってはなりません。Windows のシステムディレクトリは `SHGetKnownFolderPath(FOLDERID_ProgramData)` で取得し、API 失敗時は native Codex と同じ固定値 `C:\ProgramData` を使います。`ProgramData` 環境変数は使用しません。macOS では CoreFoundation で Codex の設定ドメインを同期し、所有値を解放します。強制設定専用の方針ではコピー後に強制状態を再確認し、通常のユーザー設定を無視します。バージョンで選ぶ保守的な方針では、上記のとおり通常の設定も読みます。選択する base64 文字列は最大 2 MiB、デコード後の UTF-8 TOML は最大 1 MiB です。同期・型・デコード・サイズのエラーは拒否します。TOML ファイルや設定値の欠落は許可します。既定の探索は最も近い非ディレクトリの `.git` 項目(metadata のみ確認)、または `HEAD` を持つ .git ディレクトリで止まります。シンボリックリンクのマーカーは保守的に拒否し、ルートがなければ作業ディレクトリだけを調べます。`<cwd>/config.toml` はプロジェクト層ではありません。既知の設定にルートの `project_root_markers` 指定があれば、カスタムマーカーを正確に解釈したとは主張せず、上位ディレクトリ全体を保守的に調べます。API はモックで検証しており、移動された実際の Windows Known Folder や強制 MDM プロファイルは未検証です。読み取り不能、変更、サイズ超過、キー構文を分類できない場合は内容を表示せず拒否します。外部依存のないキー分類器は Python 3.9 に対応しますが、完全な TOML・スキーマ検証器ではありません。他の値は引き続き native Codex が検証します。キュー投入と wake は子プロセスの起動前にこの境界を再確認します。拒否結果は `status=refused`、`submitted=false`、`retryAllowed=false` となり、通常の既存出力と書き込みプロセスの所有権検査は変わりません。SSH では送信元の環境ではなく送信先で検査します。
|
|
478
520
|
|
|
479
|
-
|
|
521
|
+
変換された native ホーム(WSL の relay 受信側から native Windows Codex へのキュー投入)は既存の投入契約を維持しますが、ストレージ検証には対応していません。この POSIX プロセスは Windows 側のホーム表記、大文字小文字の規則、環境、システム・管理・プロジェクト層を調べられません。このような経路を効果の前に拒否する厳格モードは将来可能ですが、実装していません。
|
|
480
522
|
|
|
481
|
-
これは範囲を限定した防御の強化であり、すべての設定で native
|
|
523
|
+
これは範囲を限定した防御の強化であり、すべての設定で native ストレージが一致する証明ではありません。調べないものは、パッケージ既定の設定、エンタープライズのクラウド設定バンドル、実行中の共有デーモンの起動時ストレージ、すでに実行中の書き込みプロセスの `--profile` による選択・`-c` による上書き・環境変数、保存済みスレッドのディレクトリ以外で起動したかディレクトリが失われた書き込みプロセス、変換された native ホームの Windows 側のシステム・管理・プロジェクト層です。最後の検査後に設定が変わる場合もあります。検査の成功だけからストレージの一致を推測しないでください。[#268](https://github.com/abruption/session-peer/issues/268) は、この契約の native プラットフォーム検証のため未完了のまま維持します。擬似子プロセスのテストが示すのは拒否と環境処理のみであり、実際の誤送信、セキュリティ上の悪用、新たな native 互換性を証明しません。wake の対応バージョン範囲は変わりません。
|
|
482
524
|
|
|
483
525
|
### Orca と複数の Codex ホーム
|
|
484
526
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# v1.2.0 — 公開版と過去の準備
|
|
2
|
+
|
|
3
|
+
## 公開記録
|
|
4
|
+
|
|
5
|
+
2026-10-19の読み取り専用再確認で、安定・不変の[GitHub v1.2.0](https://github.com/abruption/session-peer/releases/tag/v1.2.0)を確認しました。`4fc526f36afc65bb6ec460439eb0986c09ecc8ee`から2026-10-16 12:39:13 UTCに公開され、[PyPI 1.2.0記録](https://pypi.org/pypi/session-peer/1.2.0/json)のアップロードはwheelが12:41:38.903354 UTC、sdistが12:41:40.537212 UTCです。
|
|
6
|
+
|
|
7
|
+
以下の候補時点の記述は2026-10-15/16の過去の準備記録として維持します。未公開・PR #315が未マージという表現は現在の状態や再公開の指示ではありません。v1.2.0の再利用や、固定メタデータ変更のための不変資産の再構築・置換は禁止します。パッケージ公開に本番配備は含みません。
|
|
8
|
+
|
|
9
|
+
## 範囲
|
|
10
|
+
|
|
11
|
+
公開版1.1.2を基に2026-10-15に準備しました。候補は未公開で、2026-10-18のマイルストーン目標は公開の約束ではありません。準備PRは対象6件のPRを統合したmain上でバージョンと文書のみを変更します。
|
|
12
|
+
|
|
13
|
+
以下の順で順次統合した後、2026-10-16に更新しました。統合ソースの基準は`21a0be0c0c5bcb8bca214d90a873b7479d7ba97a`で、最終リリース準備・公開コミットではありません。PR #315は最終コミットのローカル検証・CI・レビューのためオープンのままです。
|
|
14
|
+
|
|
15
|
+
| PR | mainへのマージコミット |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| #305 | `3392c561e8b8b3221c8c5fcad6077cad8f7becd8` |
|
|
18
|
+
| #311 | `57c42d4a97b351de41a6180b7a05a0ec018d0c4c` |
|
|
19
|
+
| #310 | `10a6da72b8b94f08b6b3b2ff70f581aadf548279` |
|
|
20
|
+
| #308 | `b04e46c4e641fd0defab72b96c26d0612d0d6a5e` |
|
|
21
|
+
| #313 | `9c625bebb21dec2519214889fc60cc3f362142c1` |
|
|
22
|
+
| #314 | `21a0be0c0c5bcb8bca214d90a873b7479d7ba97a` |
|
|
23
|
+
|
|
24
|
+
#311のmacOS検出はメタデータのみの方針を維持します。単独listはCodexの実行やバージョン照会を行わず、通常値と強制値の両方を保守的に検査します。通常値を無視する新しいnative環境も拒否する場合があります。send/dry-runは制限されたnativeバージョン証拠を使い、正確にレビューした0.162.1のみ強制値専用検査を選択します。旧版・確認不能・未レビュー版では通常値も検査します。物理child cwdと消費側の別名経路検査は既知の設定の曖昧さを減らすだけで、起動時の保存先や原子的な識別の不確実性は解消しません。
|
|
25
|
+
|
|
26
|
+
send/dry-runのバージョン照会は3秒でタイムアウトし、別途最大2秒の後処理時間を認めます。メタデータのみのlistにはこの照会を含みません。
|
|
27
|
+
|
|
28
|
+
原因不明のRelay exit139と別のローカルtransport生成・終了診断は#316で監視します。再実行成功は原因・関連性・修正の証拠ではありません。テスト・監査・保護規則を迂回しません。
|
|
29
|
+
|
|
30
|
+
## マージ済みの候補範囲
|
|
31
|
+
|
|
32
|
+
- PR #311:追加の設定レイヤーにある既知のCodex保存先変更を拒否し、作用前にqueue実行計画を検査します。共有daemonの経路選択はnativeに任せ、検査成功を実効保存先の証明としません。
|
|
33
|
+
- PR #310:Codexの対象世代は未対応のままとし、否定的な証拠のテストを追加します。writerロック、queue ID、turn IDは元の世代の原子的な一致を証明しません。
|
|
34
|
+
- PR #314:危険・古いチャネル、保持期間、復元が確認された履歴の明示的な隔離、collector再起動時の確定済みACK分類保持をオフラインでテストします。新しいランタイム対応は追加しません。
|
|
35
|
+
- PR #305:macOS/Linux Antigravity 1.3.3の登録後の限定的検証を保存します。Antigravityは安定版対応ではなく実験的機能のままです。
|
|
36
|
+
- PR #313:2026-10-13のmacOS起動・受信側bridgeの過去の証拠を保存し、ownerの受信と呼び出し側実行、出所の限界を区別します。
|
|
37
|
+
- PR #308:隔離したCodex初回入力probeを強化します。サーバー履歴を確認できない場合は安全側に拒否するため、未保存の空TUIは拒否される場合があります。26件の回帰テストには未対応API例を含み、一般的な初回入力対応の証拠ではありません。
|
|
38
|
+
|
|
39
|
+
## 検証と残る条件
|
|
40
|
+
|
|
41
|
+
対象6件のPRはマージ済みですが、PR #315には最終コミットのレビュー・CI、単独ファイル再生成の検査、翻訳ハッシュ、全プラットフォームテスト、隔離wheel/sdistインストールと最新の依存関係監査が必要です。各ブランチの成功は最終準備ツリーの証拠ではありません。別途の承認による準備PRのマージ後、正確なmain CI成功、SHA256SUMSとrelease-provenance.jsonを含む不変ドラフト資産7個と証明の確認、必須の人手によるpypi環境承認が必要です。この準備はPR #315のマージ、タグ・ドラフト作成、ワークフロー実行、公開、配備の承認ではありません。
|
|
42
|
+
|
|
43
|
+
リリース準備PRは対象6件のPRをすべてマージした後、最後にマージします。統合mainを反映した準備PRの最終コミットを更新・レビューし、過去の承認をv1.2.0の承認とみなしません。準備ブランチのCIとローカル統合成果物は予行検証の証拠であり、公開用リリース資産ではありません。最終リリースビルド前に、4言語READMEの状態案内を公開の前後によらず正確な表現で固定します。保護された最終mainのCI成功後、承認済み準備ワークフローでその正確なmainコミットから資産を再ビルド・検証し、公開前にSHA256SUMSとrelease-provenance.jsonを含む不変資産7個とその証明をすべて確認します。公開時は実際の公開証拠に基づく別の文書記録を追加します。固定済みメタデータを変えるために不変資産を再ビルド・置換せず、公開完了を先に宣言しません。
|
|
44
|
+
|
|
45
|
+
Issue #180、#181、#268、#304、#306、#307は未完了のままです。native Codex世代・ACK、完全な保存先検証、一般的な空TUI入力、Antigravity安定版対応、残るnative・プラットフォーム受け入れ条件は提供しません。固定handoff契約とfixtureは変更しません。submitted/queuedは消費やACKではなく、unknownは自動再送を許可しません。
|
|
46
|
+
|
|
47
|
+
プラグインと別管理スキルのバージョンは独立し変更しません。新しい実SSH、Relay、MCP、OAuth、フリート、nativeエージェントの受け入れ証拠は主張しません。過去のRC4 ACK証拠は20/21のままで、#161は原因未確定の監視項目です。パッケージ公開に本番配備は含まず、Control/Relay配備と各端末の更新には別途の承認・検証が必要です。
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# v1.2.1 リリース候補
|
|
2
|
+
|
|
3
|
+
## 状態とソース
|
|
4
|
+
|
|
5
|
+
公開済み1.2.0を基準に2026-10-19に準備しました。ソースの準備であり、公開完了の告知ではありません。最後に確認した安定版は[GitHub v1.2.0](https://github.com/abruption/session-peer/releases/tag/v1.2.0)と[PyPI 1.2.0](https://pypi.org/pypi/session-peer/1.2.0/json)です。
|
|
6
|
+
|
|
7
|
+
別途対象となったPR 3件を以下の順序ですべてマージしました。準備PR #321には以下の#322ランタイム修正も含みます。統合ソース基準`32e76d2c85d945d66466f630d9729ec0be5288d8`は最終準備・公開コミットではありません。
|
|
8
|
+
|
|
9
|
+
| PR | Issue | mainマージコミット |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| #319 | #317 | `ba00540e24e4e378c002c11e7cbeb23b85003b9f` |
|
|
12
|
+
| #320 | #318 | `c5625a1667de50b2684067febed1772ed693eca7` |
|
|
13
|
+
| #303 | #302 | `32e76d2c85d945d66466f630d9729ec0be5288d8` |
|
|
14
|
+
|
|
15
|
+
## パッチの範囲
|
|
16
|
+
|
|
17
|
+
- #319: 明示的な`CLAUDE_CONFIG_DIR`または`ANTHROPIC_CONFIG_DIR`がない場合、macOSの同じユーザーが所有する既知のOrcaプロファイルでnative Claude登録を検索します。明示指定の範囲・優先順位は維持します。制限付きメタデータ検索は一部失敗時も正常な行を残しますが、検索が不完全か生存記録が矛盾する場合はすべての送信先選択を拒否します。選択した記録・プロファイル・受信箱の証拠を保持して再確認します。通常のソケット別名は維持し、既存の任意世代検査の制限も維持します。検索は認証情報・会話履歴を読まず受信箱に接続せず、受信証明も提供しません。Orca自動検索は新しいWindows/Linux対応ではありません。
|
|
18
|
+
- #320: 文書全体の大きさに依存せず、制限した先頭のスキルメタデータを読みます。16 KiBのヘッダー上限は区切りと改行を含み、先読みは最大1バイトです。完全なUTF-8ヘッダーだけを解釈し、読み取り不能・未終端・上限超過・不正UTF-8のヘッダーはunknownのままです。既存の限定的なフィールド抽出は汎用YAML検証器ではなく、従来認識した形式は維持します。既存のフィールド・管理ツール・シンボリックリンク動作を維持し、通常ファイル以外のメタデータはunknownとします。不正な数値フィールドは別の有効なフィールドを消しません。YAMLやスキル指示は実行しません。
|
|
19
|
+
- #303: companion v0.3.3のソース`eb239fb358336d85b49bab2c80e4ea39037d1374`、SHA-256 `15378c6d503a69d1d738ac4739182e23257aa6f2f7fd31ef3fd2fa60e692867f`から互換スキルコピーを更新します。メタデータはPython 1.2.1と独立した0.3.3 / 最小0.9.1 / 全機能1.0.1です。グローバルへのスキル導入や、別の管理ツールで導入したスキルの更新ではありません。
|
|
20
|
+
|
|
21
|
+
- #322(準備PR #321内): 一時領域の割り当て前に所有する領域の終了時削除を設定し、mktempが正確なパスを返すまで対象の`HUP/INT/TERM`を遅延します。割り当て子プロセスだけが一時的に信号を無視し、転送前に通常の終了処理を復元します。制御したローカルPOSIX受信コードの試験は従来の引き継ぎ窓を再現したもので、元のCI失敗の原因確定ではありません。既存導入とユーザー所有のsentinelを維持します。SIGKILL、ホスト喪失、削除中の任意の反復中断まで保証せず、コミット結果の不確実性と自動再試行禁止の契約は不変です。 保留した中止は割り当て処理・ファイルシステムI/Oの復帰を待つため、普遍的な中止期限は保証しません。外側のSSHタイムアウトもunknownで、自動再試行を許可しません。
|
|
22
|
+
|
|
23
|
+
## 検証と制限
|
|
24
|
+
|
|
25
|
+
最終統合ソース、生成された単独CLI、翻訳ハッシュ、パッケージ内容とインストール済みCLIを確認します。別ブランチの成功はこの準備の証拠を代替しません。最終コミットCI、独立レビュー、最新の依存関係監査が必要で、別途承認された準備PRのマージ後には正確な保護mainのCIも必要です。ローカルビルドは予行検証の証拠であり、公開用資産ではありません。
|
|
26
|
+
|
|
27
|
+
#319最終候補のローカル全体実行は1,294テストOK・19スキップでしたが、asyncio AssertionErrorと無視されたunclosed socket・transport ResourceWarningも出力されました。その改訂の最初のログを残し、診断を隠すために再実行していません。#316は未解決で、テスト成功や無関係な変更は原因・修正を証明しません。#161と#180/#181/#268/#304/#306/#307の残る受け入れ条件は別です。過去のRC4 ACK証拠は20/21のままです。
|
|
28
|
+
|
|
29
|
+
一般的なCodex ACK・世代、初回入力前の配送、Antigravity安定対応、完全なnative・プラットフォーム受け入れは追加しません。固定handoff契約・fixtureは不変です。submitted/queuedは消費やACKではなく、unknownは自動再送を許可しません。プラグインのバージョンは独立です。SSH・Relay・MCP経由の実エージェントメッセージ・ACK、OAuth・fleet・運用の受け入れは主張しません。パッケージ公開に本番配備は含まれず、Control/Relayや導入済み端末の更新には別の承認・検証が必要です。
|
|
30
|
+
|
|
31
|
+
2026-10-19に所有するMacBook上で#319ソース`ad4aa0e464fb142424f6fb6a30303bb88e47163e`を転送するSSHメタデータ専用検査により、既定検索、任意の`generationStatus=available`メタデータ、明示した既定ルート範囲を確認しました。最終#319ソース`4cd202af4b6a2f0b5e7daa1e7f9d960eb7a67217`による既定検索の再確認でも、対象はreachableでした。いずれもランタイム導入やnative受信箱入力は行っていません。これらは時点のメタデータ観測であり、新しいPython 1.2.1の実メッセージ・ACKや全プラットフォーム受け入れ証拠ではありません。
|
|
32
|
+
|
|
33
|
+
## 公開の境界
|
|
34
|
+
|
|
35
|
+
2026-10-19の読み取り専用確認ではv1.2.1タグとPyPI 1.2.1記録はありませんでした。日時点の証拠であり、予約・将来保証・公開権限ではありません。現在の非公開Trusted Publisher設定の検証は主張しません。
|
|
36
|
+
|
|
37
|
+
実行用リリースコマンドは提供せず、この準備自身のマージ、タグ・ドラフト作成、ワークフロー実行、公開・配備も承認しません。別途承認後にバージョン未使用と保護を再確認し、正確なmain CIを要求して承認された準備ワークフローで構築し、attach-draft成功まで停止します。不変資産7個、SHA256SUMS、release-provenance.jsonと認証された証明を正確なタグ・コミットと照合します。必須の人手pypi環境承認を維持し、監査・保護を迂回しません。実際の公開証拠は別に記録し、固定メタデータを変更するために不変資産を再構築・置換しません。
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# #85 Antigravityアダプター開発検証
|
|
2
|
+
|
|
3
|
+
2026-09-17; ローカルブランチ `feat/85-antigravity-adapter`、分離されたワークツリー `/tmp/session-peer-85`、#47 `993d04d` ベース。中継への依存、リリース、リモートプッシュ、PRなし。バージョンは開発メタデータとして0.8.0のまま維持。この機能は公開された0.8.0ディストリビューションには含まれていません。Issue: https://github.com/abruption/session-peer/issues/85
|
|
4
|
+
|
|
5
|
+
## 実装内容
|
|
6
|
+
|
|
7
|
+
スタンドアロンソースにおけるオプトインの登録済みセッションアダプター、ローカル/SSHのlistおよびsend、doctor機能、正確なUUID/ホーム/プロセス識別および世代チェック、同一UID限定のプライベートフレーム化ソケット、制限されたリクエスト/ライフタイム/ネイティブサブプロセス、同世代内のリクエスト重複排除/競合処理、シグナルクリーンアップおよび古いプロセスの再起動。送信者検出には一意の登録済み先祖が必要です。MCP一覧表示は、3番目の組み込みアダプターが追加された際にも明示的なエージェント許可リストを保持します。
|
|
8
|
+
|
|
9
|
+
## 証拠
|
|
10
|
+
|
|
11
|
+
- macOS Python 3.14: オプションのMCP SDKをインストールした状態で332件のテストに合格(実際のMCP stdioテストを含む)。SDKなしの場合: 332件のテスト、2件のオプションスキップ。
|
|
12
|
+
- KR Ubuntu Python 3.12: 17件のアダプターテストに合格。実際のUnixソケット、ダミーのネイティブ実行可能ファイル、SIGTERMクリーンアップおよび古いプロセスの再起動フィクスチャ、モデル呼び出しなし。
|
|
13
|
+
- wheel/sdistをビルドし、分離された仮想環境に個別にインストール。CLIブリッジのヘルプおよび登録済み限定の一覧表示をスモークテスト。グローバルインストールなし。
|
|
14
|
+
- 実際のKR agy 1.2.4 TUI: ユーザーがツールランナーを通じて制限付きブリッジを起動。ワークスペースが別のユーザーのディレクトリ下にあったにもかかわらず、ソースストリーミングされたSSH `list` が正しいubuntuホームを検出。2つの異なる統合マーカーがそれぞれ1つのSYSTEM受信レコードと1つの正確なMODEL ACKを生成。重複リクエストは抑制され、同一IDで本文が変更されたものや古い世代のリクエストは拒否された。ドライランはネイティブ配信を呼び出さなかった。構造化 `consumptionConfirmed` はfalseのままであったが、独立したトランスクリプト観測によりこれらのテストACKが確認された。
|
|
15
|
+
- 明示的なブリッジ停止によりソケットと登録を削除。その後のSSH listは登録済みセッションなしを返した。ユーザーTUIは元のcwdで存続。リモートのテストソース/テストは削除された。スプリットロック競合を回避するため、UIDごとのプライベートランタイムディレクトリに1つの空のロックファイルが意図的に残されているが、アクティブなブリッジ/ソケット/登録は残っていない。
|
|
16
|
+
|
|
17
|
+
詳細なサニタイズ済み証拠はローカルの `/tmp/session-peer-85-evidence/` にあります:
|
|
18
|
+
`list.json`、`send.json`、`observation.json`、`cleanup.json`、`linux-tests.log`、`full-tests.log`。最初のライブテストのトランスクリプトマーカーは、`cleanup.json` 内で2回目のテストマーカーとともに保持されています。`send.json` には2回目の実行が含まれています。生の環境、トークン、認証情報、または無関係なトランスクリプトは収集されませんでした。
|
|
19
|
+
|
|
20
|
+
## 制限事項 / 今後のステップ
|
|
21
|
+
|
|
22
|
+
これは実験的な明示的登録ワークフローです。CLIサイドカーの自動起動、ヘッドレスライターの代替、無人登録、永続的な送信トレイ、自動ACK/wait/wake、UID間アクセス、または厳密に1回の主張はありません。ネイティブの送信者はTUIのagentapiアイデンティティです。説明的なFromヘッダーは暗号論的な送信者証明ではありません。新しい実装のライブネイティブテストはLinuxです。macOSにはプロトコル/ライフサイクルフィクスチャと以前のネイティブPoCがありますが、このブランチのライブネイティブテストではありません。Windowsブリッジはサポートされていません。Windows CIおよびPython 3.9の実行はローカルでは実行されませんでした。SIGKILLは同期的にクリーンアップできません。再起動では排他ロックを取得した後にのみ古いエントリが削除されます。PIDポーリングは、検証とagentapi呼び出しの間のすべてのプロセス終了競合を排除することはできません。
|
|
23
|
+
|
|
24
|
+
以前のKR PoCでは、7つのメッセージを使用してビジー配信、SSH切断、ブリッジおよびTUIの再起動を実証しました。これらの結果はこの実装に役立てられましたが、このブランチのライブ実行としてはカウントされません。製品レベルの再接続耐久性、長時間実行オペレーション、およびペアリング/中継の統合は、引き続き個別のv0.9/RC作業となります。
|
|
25
|
+
|
|
26
|
+
## 2026-10-13: CLI 1.3.3 の受け入れ試験 (#304)
|
|
27
|
+
|
|
28
|
+
この記録は、上記の 2026-09-17 開発ブランチの検証とは別です。
|
|
29
|
+
基準は公開済み session-peer 1.1.1、コミット b48144bdf2ad1569031562136f5a60e33780020e です。
|
|
30
|
+
両環境の native CLI は 1.3.3、専用 TUI のモデルは Gemini 3.8 Flash (Low) でした。
|
|
31
|
+
アダプターは実験段階のままです。リリースの公開、一般的なバージョン互換性、
|
|
32
|
+
Windows、sidecar の自動起動、可用性の保証を意味しません。
|
|
33
|
+
|
|
34
|
+
### 確認した証拠
|
|
35
|
+
|
|
36
|
+
- macOS 27.0.1 arm64 / Python 3.15.0 と Ubuntu 24.04.5 arm64 / Python 3.12.3 で、
|
|
37
|
+
Antigravity アダプターのテストが各 23 件成功しました。owner と native 実行のモック、
|
|
38
|
+
実際の Unix socket・子プロセス fixture は、実モデルとの統合試験ではありません。
|
|
39
|
+
- インストール済み CLI の引数パーサー試験は各環境で 7 件成功しました。先頭のダッシュ、
|
|
40
|
+
区切り、複数行の韓国語、および宛先・タイトルの保持を確認しました。空の HOME、
|
|
41
|
+
最小限の環境、制限付き loopback スタブを使い、認証情報や成功する実配信は使用していません。
|
|
42
|
+
- 専用の受信 TUI の通常のターミナルツールから、制限付き bridge を登録しました。
|
|
43
|
+
macOS ローカル、Linux ローカル、macOS→Linux の source-streamed SSH は native exit zero を
|
|
44
|
+
返し、各 TUI でそれぞれ異なる正確な返信マーカーを確認しました。
|
|
45
|
+
- 制限付きの合成応答を生成し、TUI が作業中の状態を表示している間にも送信しました。
|
|
46
|
+
その応答の後に各返信を確認しました。日時を限定した UI 観察であり、スケジューリング、
|
|
47
|
+
遅延時間、すべての busy 状態の保証ではありません。
|
|
48
|
+
- macOS の dry-run は native 提出なしで終了しました。同じ ID・本文の再照会はキャッシュ済み
|
|
49
|
+
重複結果を返し、同じ ID で異なる本文は拒否しました。SSH 経路で別の generation を指定した
|
|
50
|
+
要求も native 呼び出し前に拒否しました。
|
|
51
|
+
- 両環境で bridge を明示的に停止すると、検出一覧から登録が消えました。
|
|
52
|
+
稼働中の両 TUI から再登録すると generation が変わり、元の generation に固定した
|
|
53
|
+
要求はローカルと SSH 経路で拒否されました。
|
|
54
|
+
fixture は SIGTERM・SIGINT・SIGHUP の後始末、再起動後の generation 変更、
|
|
55
|
+
同じ lock inode の保持も検査します。
|
|
56
|
+
- 実際の試験 bridge に SIGKILL を送った後、残った登録と socket は検出一覧から除外されました。
|
|
57
|
+
所有 TUI から再登録すると、同じ lock inode を保持したまま generation が変わりました。
|
|
58
|
+
両環境で実際の owner 終了後の後始末を確認しました。native TUI の再起動後は古い
|
|
59
|
+
generation の要求が拒否され、新しい generation への送信には正確な別の返信を確認しました。
|
|
60
|
+
- Mac→Linux と Linux→Mac の両方向で、native TUI の通常のツールから実際に CLI 送信し、
|
|
61
|
+
方向ごとに異なる返信を確認しました。本文中の返信先は認証や送信権限にはなりません。
|
|
62
|
+
- 実際の SSH 子プロセスの接続を切る制限付き障害注入では、完全なリモート JSON 応答の
|
|
63
|
+
提出証拠は保持され、12 バイトだけを渡した応答は unknown のままでした。
|
|
64
|
+
両方で受信 TUI の返信を観察しましたが、要求を再送していません。
|
|
65
|
+
制御された切断試験であり、すべてのネットワーク障害の結果を保証しません。
|
|
66
|
+
- MCP SDK 1.30 のローカルポリシー経路で、許可されていない agent の拒否、dry-run、
|
|
67
|
+
実際の send と TUI の返信を確認しました。paired Relay や custom home・generation の
|
|
68
|
+
固定対応を示すものではありません。
|
|
69
|
+
- 分離した Python 3.13 環境の全基本 suite は 876 件実行、37 件スキップで成功しました。
|
|
70
|
+
MCP SDK 追加後は MCP 統合テスト全 28 件を含め、880 件実行、33 件スキップで成功しました。
|
|
71
|
+
PR head `4087149` の CI は全 28 件成功しました。最終文書変更 head の検証は別途必要です。
|
|
72
|
+
- JSON の消費確認は常に false のままでした。TUI の返信観察はその試験メッセージの
|
|
73
|
+
別の証拠であり、新しい自動 ACK・待機機能ではありません。
|
|
74
|
+
|
|
75
|
+
### 失敗記録と正式対応への残りの条件
|
|
76
|
+
|
|
77
|
+
macOS で最初に shell-background 起動した際は、必要な祖先プロセスを確認できず登録を拒否しました。
|
|
78
|
+
ターミナルツールから foreground の長時間コマンドとして実行すると登録できました。
|
|
79
|
+
シェルを切り離しても bridge と TUI の祖先関係が保持されるとは仮定しないでください。
|
|
80
|
+
最初の Linux fixture 転送では MCP モジュールが抜け、import が 1 件失敗しました。
|
|
81
|
+
追跡対象のソースを転送した後、全 23 件が成功しました。試験準備の失敗であり、製品修正の証拠ではありません。
|
|
82
|
+
|
|
83
|
+
追加テストは起動失敗のキャッシュと再試行禁止、UTF-8 の正確な 32 KiB 境界を検査します。
|
|
84
|
+
再起動を越えた重複防止や unknown 結果に副作用がないことは証明せず、自動再送は禁止です。
|
|
85
|
+
最初の連続試験 A はユーザーの Tailscale 更新で中断しました。製品の不具合とも成功とも扱いません。
|
|
86
|
+
新しい試験 B は 04:23 UTC から 1,802.819 秒間実行しました。各ホストの検出 31 回と
|
|
87
|
+
dry-run 31 回はすべて成功し、新規送信 4 件と各 TUI の異なる返信 4 件を確認しました。
|
|
88
|
+
再送はありません。bridge RSS は Mac で 61,680→61,968 KiB、Linux で
|
|
89
|
+
47,204→47,228 KiB でした。長期可用性やメモリリークがないことの保証ではありません。
|
|
90
|
+
両試験 bridge と専用 TUI を停止・終了し、検出は空、登録・ソケットは削除、lock は保持しました。
|
|
91
|
+
Linux の専用ソース転送フォルダーも削除しました。
|
|
92
|
+
上記の実ライフサイクル、切断、双方向経路の証拠は、日時と検証環境を限定した結果です。
|
|
93
|
+
Claude・Codex・Antigravity 全体の相互運用と paired Relay 配信は再試験しておらず、
|
|
94
|
+
managed sidecar・Windows とともに別の機能範囲です。限定された Mac/Linux の手動 bridge
|
|
95
|
+
対応の必須前提にはしません。実験段階を維持し、正式対応への変更やランタイム動作の変更はしていません。
|
|
96
|
+
公式 sidecar 文書は管理された起動を説明していますが、祖先プロセスに結び付く現在の bridge との
|
|
97
|
+
互換性は別途調査が必要です。グローバル sidecar 設定、認証情報のコピー、運用環境への配備は行っていません。
|