session-peer 1.3.0__tar.gz → 1.3.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 (278) hide show
  1. {session_peer-1.3.0 → session_peer-1.3.2}/PKG-INFO +6 -5
  2. {session_peer-1.3.0 → session_peer-1.3.2}/README.ja.md +4 -3
  3. {session_peer-1.3.0 → session_peer-1.3.2}/README.ko.md +4 -3
  4. {session_peer-1.3.0 → session_peer-1.3.2}/README.md +4 -3
  5. {session_peer-1.3.0 → session_peer-1.3.2}/README.zh-CN.md +4 -3
  6. {session_peer-1.3.0 → session_peer-1.3.2}/docs/README.md +4 -0
  7. {session_peer-1.3.0 → session_peer-1.3.2}/docs/download-metrics.md +4 -5
  8. {session_peer-1.3.0 → session_peer-1.3.2}/docs/i18n-manifest.json +10 -8
  9. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/README.md +4 -0
  10. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/download-metrics.md +3 -4
  11. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/mcp.md +6 -2
  12. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/paired-devices.md +16 -0
  13. session_peer-1.3.2/docs/ja/releases/v1.3.1.md +13 -0
  14. session_peer-1.3.2/docs/ja/releases/v1.3.2.md +37 -0
  15. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/README.md +4 -0
  16. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/download-metrics.md +3 -4
  17. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/mcp.md +7 -3
  18. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/paired-devices.md +16 -0
  19. session_peer-1.3.2/docs/ko/releases/v1.3.1.md +13 -0
  20. session_peer-1.3.2/docs/ko/releases/v1.3.2.md +37 -0
  21. {session_peer-1.3.0 → session_peer-1.3.2}/docs/mcp.md +5 -1
  22. {session_peer-1.3.0 → session_peer-1.3.2}/docs/paired-devices.md +16 -0
  23. session_peer-1.3.2/docs/releases/v1.3.1.md +13 -0
  24. session_peer-1.3.2/docs/releases/v1.3.2.md +37 -0
  25. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/README.md +4 -0
  26. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/download-metrics.md +3 -4
  27. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/mcp.md +7 -3
  28. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/paired-devices.md +16 -0
  29. session_peer-1.3.2/docs/zh-CN/releases/v1.3.1.md +13 -0
  30. session_peer-1.3.2/docs/zh-CN/releases/v1.3.2.md +37 -0
  31. {session_peer-1.3.0 → session_peer-1.3.2}/pyproject.toml +1 -1
  32. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer.py +1 -1
  33. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/common.py +1 -1
  34. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/app.py +59 -1
  35. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/cli.py +1 -0
  36. {session_peer-1.3.0 → session_peer-1.3.2}/.agents/plugins/marketplace.json +0 -0
  37. {session_peer-1.3.0 → session_peer-1.3.2}/.gitattributes +0 -0
  38. {session_peer-1.3.0 → session_peer-1.3.2}/.gitignore +0 -0
  39. {session_peer-1.3.0 → session_peer-1.3.2}/LICENSE +0 -0
  40. {session_peer-1.3.0 → session_peer-1.3.2}/SECURITY.md +0 -0
  41. {session_peer-1.3.0 → session_peer-1.3.2}/deploy/README.md +0 -0
  42. {session_peer-1.3.0 → session_peer-1.3.2}/deploy/examples/authenticated-control/README.md +0 -0
  43. {session_peer-1.3.0 → session_peer-1.3.2}/deploy/examples/authenticated-control/session-peer-control.service +0 -0
  44. {session_peer-1.3.0 → session_peer-1.3.2}/deploy/examples/static-account/README.md +0 -0
  45. {session_peer-1.3.0 → session_peer-1.3.2}/deploy/examples/static-account/session-peer-relay.service +0 -0
  46. {session_peer-1.3.0 → session_peer-1.3.2}/docs/agent-adapters.md +0 -0
  47. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ai-assistant-guide.md +0 -0
  48. {session_peer-1.3.0 → session_peer-1.3.2}/docs/antigravity.md +0 -0
  49. {session_peer-1.3.0 → session_peer-1.3.2}/docs/architecture/agent-transports.md +0 -0
  50. {session_peer-1.3.0 → session_peer-1.3.2}/docs/assets/session-peer-live-codex-claude.gif +0 -0
  51. {session_peer-1.3.0 → session_peer-1.3.2}/docs/cli-reference.md +0 -0
  52. {session_peer-1.3.0 → session_peer-1.3.2}/docs/compatibility-v1.md +0 -0
  53. {session_peer-1.3.0 → session_peer-1.3.2}/docs/contracts/handoff-v1.md +0 -0
  54. {session_peer-1.3.0 → session_peer-1.3.2}/docs/diagnostics.md +0 -0
  55. {session_peer-1.3.0 → session_peer-1.3.2}/docs/handoff-runtime.md +0 -0
  56. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/agent-adapters.md +0 -0
  57. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/ai-assistant-guide.md +0 -0
  58. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/antigravity.md +0 -0
  59. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/architecture/agent-transports.md +0 -0
  60. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/cli-reference.md +0 -0
  61. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/compatibility-v1.md +0 -0
  62. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/contracts/handoff-v1.md +0 -0
  63. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/diagnostics.md +0 -0
  64. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/handoff-runtime.md +0 -0
  65. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/multi-home-list.md +0 -0
  66. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-auth.md +0 -0
  67. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-development-plan.md +0 -0
  68. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-edge-policy.md +0 -0
  69. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-google-bootstrap.md +0 -0
  70. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-lifecycle.md +0 -0
  71. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-public-pilot-2026-09-17.md +0 -0
  72. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/relay-watchdog.md +0 -0
  73. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v0.6.1.md +0 -0
  74. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v0.6.2.md +0 -0
  75. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v0.7.0.md +0 -0
  76. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v0.8.0.md +0 -0
  77. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v0.9.0.md +0 -0
  78. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-alpha.1.md +0 -0
  79. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-beta.1.md +0 -0
  80. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-rc.1.md +0 -0
  81. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-rc.2.md +0 -0
  82. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-rc.3.md +0 -0
  83. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0-rc.4.md +0 -0
  84. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.0.md +0 -0
  85. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.1.md +0 -0
  86. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.2.md +0 -0
  87. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.3.md +0 -0
  88. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.0.4.md +0 -0
  89. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.1.0.md +0 -0
  90. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.1.1.md +0 -0
  91. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.1.2.md +0 -0
  92. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.2.0.md +0 -0
  93. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.2.1.md +0 -0
  94. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/releases/v1.3.0.md +0 -0
  95. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/validation/69-rc.md +0 -0
  96. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/validation/85-antigravity.md +0 -0
  97. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ja/wake.md +0 -0
  98. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/agent-adapters.md +0 -0
  99. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/ai-assistant-guide.md +0 -0
  100. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/antigravity.md +0 -0
  101. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/architecture/agent-transports.md +0 -0
  102. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/cli-reference.md +0 -0
  103. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/compatibility-v1.md +0 -0
  104. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/contracts/handoff-v1.md +0 -0
  105. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/diagnostics.md +0 -0
  106. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/handoff-runtime.md +0 -0
  107. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/multi-home-list.md +0 -0
  108. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-auth.md +0 -0
  109. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-development-plan.md +0 -0
  110. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-edge-policy.md +0 -0
  111. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-google-bootstrap.md +0 -0
  112. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-lifecycle.md +0 -0
  113. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-public-pilot-2026-09-17.md +0 -0
  114. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/relay-watchdog.md +0 -0
  115. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v0.6.1.md +0 -0
  116. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v0.6.2.md +0 -0
  117. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v0.7.0.md +0 -0
  118. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v0.8.0.md +0 -0
  119. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v0.9.0.md +0 -0
  120. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-alpha.1.md +0 -0
  121. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-beta.1.md +0 -0
  122. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-rc.1.md +0 -0
  123. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-rc.2.md +0 -0
  124. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-rc.3.md +0 -0
  125. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0-rc.4.md +0 -0
  126. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.0.md +0 -0
  127. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.1.md +0 -0
  128. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.2.md +0 -0
  129. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.3.md +0 -0
  130. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.0.4.md +0 -0
  131. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.1.0.md +0 -0
  132. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.1.1.md +0 -0
  133. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.1.2.md +0 -0
  134. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.2.0.md +0 -0
  135. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.2.1.md +0 -0
  136. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/releases/v1.3.0.md +0 -0
  137. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/validation/69-rc.md +0 -0
  138. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/validation/85-antigravity.md +0 -0
  139. {session_peer-1.3.0 → session_peer-1.3.2}/docs/ko/wake.md +0 -0
  140. {session_peer-1.3.0 → session_peer-1.3.2}/docs/multi-home-list.md +0 -0
  141. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-auth.md +0 -0
  142. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-development-plan.md +0 -0
  143. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-edge-policy.md +0 -0
  144. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-google-bootstrap.md +0 -0
  145. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-lifecycle.md +0 -0
  146. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-public-pilot-2026-09-17.md +0 -0
  147. {session_peer-1.3.0 → session_peer-1.3.2}/docs/relay-watchdog.md +0 -0
  148. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v0.6.1.md +0 -0
  149. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v0.6.2.md +0 -0
  150. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v0.7.0.md +0 -0
  151. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v0.8.0.md +0 -0
  152. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v0.9.0.md +0 -0
  153. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-alpha.1.md +0 -0
  154. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-beta.1.md +0 -0
  155. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-rc.1.md +0 -0
  156. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-rc.2.md +0 -0
  157. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-rc.3.md +0 -0
  158. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0-rc.4.md +0 -0
  159. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.0.md +0 -0
  160. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.1.md +0 -0
  161. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.2.md +0 -0
  162. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.3.md +0 -0
  163. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.0.4.md +0 -0
  164. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.1.0.md +0 -0
  165. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.1.1.md +0 -0
  166. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.1.2.md +0 -0
  167. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.2.0.md +0 -0
  168. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.2.1.md +0 -0
  169. {session_peer-1.3.0 → session_peer-1.3.2}/docs/releases/v1.3.0.md +0 -0
  170. {session_peer-1.3.0 → session_peer-1.3.2}/docs/validation/69-rc.md +0 -0
  171. {session_peer-1.3.0 → session_peer-1.3.2}/docs/validation/85-antigravity.md +0 -0
  172. {session_peer-1.3.0 → session_peer-1.3.2}/docs/wake.md +0 -0
  173. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/agent-adapters.md +0 -0
  174. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/ai-assistant-guide.md +0 -0
  175. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/antigravity.md +0 -0
  176. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/architecture/agent-transports.md +0 -0
  177. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/cli-reference.md +0 -0
  178. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/compatibility-v1.md +0 -0
  179. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/contracts/handoff-v1.md +0 -0
  180. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/diagnostics.md +0 -0
  181. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/handoff-runtime.md +0 -0
  182. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/multi-home-list.md +0 -0
  183. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-auth.md +0 -0
  184. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-development-plan.md +0 -0
  185. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-edge-policy.md +0 -0
  186. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-google-bootstrap.md +0 -0
  187. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-lifecycle.md +0 -0
  188. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-public-pilot-2026-09-17.md +0 -0
  189. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/relay-watchdog.md +0 -0
  190. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v0.6.1.md +0 -0
  191. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v0.6.2.md +0 -0
  192. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v0.7.0.md +0 -0
  193. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v0.8.0.md +0 -0
  194. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v0.9.0.md +0 -0
  195. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-alpha.1.md +0 -0
  196. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-beta.1.md +0 -0
  197. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-rc.1.md +0 -0
  198. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-rc.2.md +0 -0
  199. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-rc.3.md +0 -0
  200. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0-rc.4.md +0 -0
  201. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.0.md +0 -0
  202. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.1.md +0 -0
  203. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.2.md +0 -0
  204. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.3.md +0 -0
  205. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.0.4.md +0 -0
  206. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.1.0.md +0 -0
  207. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.1.1.md +0 -0
  208. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.1.2.md +0 -0
  209. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.2.0.md +0 -0
  210. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.2.1.md +0 -0
  211. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/releases/v1.3.0.md +0 -0
  212. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/validation/69-rc.md +0 -0
  213. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/validation/85-antigravity.md +0 -0
  214. {session_peer-1.3.0 → session_peer-1.3.2}/docs/zh-CN/wake.md +0 -0
  215. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/.codex-plugin/plugin.json +0 -0
  216. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/.mcp.json +0 -0
  217. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/README.ja.md +0 -0
  218. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/README.ko.md +0 -0
  219. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/README.md +0 -0
  220. {session_peer-1.3.0 → session_peer-1.3.2}/plugins/session-peer/README.zh-CN.md +0 -0
  221. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/README.md +0 -0
  222. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/adapters.py +0 -0
  223. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/address_cli.py +0 -0
  224. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/address_selection.py +0 -0
  225. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/addresses.py +0 -0
  226. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/antigravity.py +0 -0
  227. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/claude.py +0 -0
  228. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/cli.py +0 -0
  229. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/codex.py +0 -0
  230. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/commands.py +0 -0
  231. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/diagnostics.py +0 -0
  232. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/explanation.py +0 -0
  233. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/handoff.py +0 -0
  234. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/handoff_process.py +0 -0
  235. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/handoff_remote.py +0 -0
  236. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/handoff_stdin.py +0 -0
  237. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/handoff_watch.py +0 -0
  238. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/messages.py +0 -0
  239. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/output.py +0 -0
  240. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/preset_cli.py +0 -0
  241. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/presets.py +0 -0
  242. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/registry.py +0 -0
  243. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/relay.py +0 -0
  244. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/release_verification.py +0 -0
  245. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/replies.py +0 -0
  246. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/sending.py +0 -0
  247. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/ssh.py +0 -0
  248. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/ssh_config.py +0 -0
  249. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/ssh_identity.py +0 -0
  250. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/target_generation.py +0 -0
  251. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/update_preferences.py +0 -0
  252. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/updates.py +0 -0
  253. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_core/wake_chain.py +0 -0
  254. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_mcp.py +0 -0
  255. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/__init__.py +0 -0
  256. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/auth.py +0 -0
  257. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/control.py +0 -0
  258. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/framing.py +0 -0
  259. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/guidance.py +0 -0
  260. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/identity.py +0 -0
  261. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/lifecycle.py +0 -0
  262. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/native.py +0 -0
  263. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/pairing_links.py +0 -0
  264. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/pairing_ui.py +0 -0
  265. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/recovery.py +0 -0
  266. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/relay.py +0 -0
  267. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/rotation.py +0 -0
  268. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/setup.py +0 -0
  269. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/store.py +0 -0
  270. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/transport_errors.py +0 -0
  271. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/wire.py +0 -0
  272. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_relay/worker.py +0 -0
  273. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_shorthand/__init__.py +0 -0
  274. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_shorthand/__main__.py +0 -0
  275. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_shorthand/sp-remove.sh +0 -0
  276. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_shorthand/sp.ps1 +0 -0
  277. {session_peer-1.3.0 → session_peer-1.3.2}/session_peer_shorthand/sp.sh +0 -0
  278. {session_peer-1.3.0 → session_peer-1.3.2}/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.3.0
3
+ Version: 1.3.2
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
@@ -26,7 +26,7 @@ Classifier: Topic :: System :: Networking
26
26
  Classifier: Topic :: Utilities
27
27
  Requires-Python: >=3.9
28
28
  Provides-Extra: mcp
29
- Requires-Dist: mcp<2,>=1.12; (python_version >= '3.10') and extra == 'mcp'
29
+ Requires-Dist: mcp<2,>=1.30; (python_version >= '3.10') and extra == 'mcp'
30
30
  Provides-Extra: relay
31
31
  Requires-Dist: cryptography<51,>=50.0.1; (python_version >= '3.11') and extra == 'relay'
32
32
  Requires-Dist: websockets<18,>=17.1; (python_version >= '3.11') and extra == 'relay'
@@ -37,8 +37,7 @@ Description-Content-Type: text/markdown
37
37
  # session-peer
38
38
 
39
39
  [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/)
40
- [![PyPI downloads per week](https://api.pepy.tech/badge/session-peer/week)](https://pepy.tech/projects/session-peer)
41
- [![PyPI downloads per month](https://api.pepy.tech/badge/session-peer/month)](https://pepy.tech/projects/session-peer)
40
+ [![PyPI total downloads](https://api.pepy.tech/badge/session-peer)](https://pepy.tech/projects/session-peer)
42
41
  [![CI](https://github.com/abruption/session-peer/actions/workflows/ci.yml/badge.svg)](https://github.com/abruption/session-peer/actions/workflows/ci.yml)
43
42
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abruption/session-peer/blob/main/LICENSE)
44
43
 
@@ -68,7 +67,9 @@ in this ~22-second animation, not a screen recording; send success alone is not
68
67
  ### Install
69
68
 
70
69
  Python 3.9+. The core local/SSH CLI has no third-party Python dependencies.
71
- Source version: **1.3.0**. At the 2026-10-23 preparation checkpoint, the last verified published stable release was **1.2.1**.
70
+ Source version: **1.3.2**. At the 2026-10-28 preparation checkpoint, the last verified published stable release was **1.3.1**. See the [maintenance release notes](docs/releases/v1.3.2.md) for macOS firewall guidance and Direct listener/TLS diagnostics. Control's Better Auth security update is in repository source, outside Python wheel/sdist, and requires a separately authorized rollout.
71
+
72
+ The optional [MCP extra](docs/mcp.md) now requires `mcp>=1.30,<2`; its Python 3.10+ requirement and the dependency-free Python 3.9 core remain unchanged. Existing MCP environments need an explicit package upgrade.
72
73
 
73
74
  Version 1.3.0 adds delivery explanations, local/SSH route presets and recipient addresses, bounded handoff observation, trusted SSH configuration, pairing links and per-version notice preferences. See the [release scope and verification gates](docs/releases/v1.3.0.md) for supported combinations and limits. Package publication and operational deployment are separate.
74
75
 
@@ -3,8 +3,7 @@
3
3
  # session-peer
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/)
6
- [![PyPIの週間ダウンロード](https://api.pepy.tech/badge/session-peer/week)](https://pepy.tech/projects/session-peer)
7
- [![PyPIの月間ダウンロード](https://api.pepy.tech/badge/session-peer/month)](https://pepy.tech/projects/session-peer)
6
+ [![PyPIの累計ダウンロード](https://api.pepy.tech/badge/session-peer)](https://pepy.tech/projects/session-peer)
8
7
  [![CI](https://github.com/abruption/session-peer/actions/workflows/ci.yml/badge.svg)](https://github.com/abruption/session-peer/actions/workflows/ci.yml)
9
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abruption/session-peer/blob/main/LICENSE)
10
9
 
@@ -34,7 +33,9 @@ session-peer 1.0.2による実際のローカル通信です。CodexがClaude Co
34
33
  ### インストール
35
34
 
36
35
  Python 3.9以上が必要です。基本のローカル・SSH CLIに外部Python依存パッケージはありません。
37
- ソースバージョン:**1.3.0**。2026-10-23の準備時点で、最後に確認した公開済み安定版は**1.2.1**でした。
36
+ ソースバージョン:**1.3.2**。2026-10-28の準備時点で、最後に確認した公開済み安定版は**1.3.1**でした。macOSのファイアウォール案内とDirectリスナー・TLSの診断については、[メンテナンスリリースの案内](docs/ja/releases/v1.3.2.md)を参照してください。ControlのBetter Authセキュリティ更新はリポジトリのソースにあり、Python wheel/sdistには含まれないため、別途承認された配備が必要です。
37
+
38
+ 任意の[MCPエクストラ](docs/ja/mcp.md)は`mcp>=1.30,<2`を必要とします。MCPのPython 3.10+要件と依存関係のないPython 3.9コアは変更しません。既存のMCP環境では明示的なパッケージ更新が必要です。
38
39
 
39
40
  1.3.0では配信説明、ローカル・SSH経路プリセットと受信者アドレス帳、時間制限付きhandoff観察、信頼したSSH設定、ペアリングリンク、バージョン別通知設定を追加します。対応する組み合わせと制限は[リリース範囲と検証条件](docs/ja/releases/v1.3.0.md)を参照してください。パッケージ公開と本番環境への配備は別です。
40
41
 
@@ -3,8 +3,7 @@
3
3
  # session-peer
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/)
6
- [![PyPI 주간 다운로드](https://api.pepy.tech/badge/session-peer/week)](https://pepy.tech/projects/session-peer)
7
- [![PyPI 월간 다운로드](https://api.pepy.tech/badge/session-peer/month)](https://pepy.tech/projects/session-peer)
6
+ [![PyPI 누적 다운로드](https://api.pepy.tech/badge/session-peer)](https://pepy.tech/projects/session-peer)
8
7
  [![CI](https://github.com/abruption/session-peer/actions/workflows/ci.yml/badge.svg)](https://github.com/abruption/session-peer/actions/workflows/ci.yml)
9
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abruption/session-peer/blob/main/LICENSE)
10
9
 
@@ -34,7 +33,9 @@ session-peer 1.0.2를 사용해 실제 로컬 요청과 회신을 주고받았
34
33
  ### 설치
35
34
 
36
35
  Python 3.9 이상이 필요합니다. 기본 로컬·SSH CLI는 외부 Python 패키지에 의존하지 않습니다.
37
- 소스 버전: **1.3.0**. 2026-10-23 준비 시점의 마지막 확인 공개 안정판은 **1.2.1**이었습니다.
36
+ 소스 버전: **1.3.2**. 2026-10-28 준비 시점의 마지막 확인 공개 안정판은 **1.3.1**이었습니다. macOS 방화벽 안내와 Direct 리스너·TLS 진단은 [유지보수 릴리스 안내](docs/ko/releases/v1.3.2.md)를 참고하십시오. Control의 Better Auth 보안 갱신은 저장소 소스에 있으며 Python wheel/sdist에는 포함되지 않으므로 별도로 승인된 배포가 필요합니다.
37
+
38
+ 선택형 [MCP extra](docs/ko/mcp.md)는 이제 `mcp>=1.30,<2`를 요구합니다. MCP의 Python 3.10+ 요건과 의존성 없는 Python 3.9 핵심 CLI는 유지됩니다. 기존 MCP 환경에는 명시적인 패키지 업그레이드가 필요합니다.
38
39
 
39
40
  1.3.0에는 전달 설명, 로컬·SSH 경로 프리셋과 수신자 주소록, 유한 시간 handoff 관찰, 신뢰한 SSH 설정, 페어링 링크와 버전별 알림 설정이 추가됩니다. 지원 조합과 제한은 [릴리스 범위와 검증 조건](docs/ko/releases/v1.3.0.md)을 참고하십시오. 패키지 공개와 운영 배포는 별개입니다.
40
41
 
@@ -3,8 +3,7 @@
3
3
  # session-peer
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/)
6
- [![PyPI downloads per week](https://api.pepy.tech/badge/session-peer/week)](https://pepy.tech/projects/session-peer)
7
- [![PyPI downloads per month](https://api.pepy.tech/badge/session-peer/month)](https://pepy.tech/projects/session-peer)
6
+ [![PyPI total downloads](https://api.pepy.tech/badge/session-peer)](https://pepy.tech/projects/session-peer)
8
7
  [![CI](https://github.com/abruption/session-peer/actions/workflows/ci.yml/badge.svg)](https://github.com/abruption/session-peer/actions/workflows/ci.yml)
9
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abruption/session-peer/blob/main/LICENSE)
10
9
 
@@ -34,7 +33,9 @@ in this ~22-second animation, not a screen recording; send success alone is not
34
33
  ### Install
35
34
 
36
35
  Python 3.9+. The core local/SSH CLI has no third-party Python dependencies.
37
- Source version: **1.3.0**. At the 2026-10-23 preparation checkpoint, the last verified published stable release was **1.2.1**.
36
+ Source version: **1.3.2**. At the 2026-10-28 preparation checkpoint, the last verified published stable release was **1.3.1**. See the [maintenance release notes](docs/releases/v1.3.2.md) for macOS firewall guidance and Direct listener/TLS diagnostics. Control's Better Auth security update is in repository source, outside Python wheel/sdist, and requires a separately authorized rollout.
37
+
38
+ The optional [MCP extra](docs/mcp.md) now requires `mcp>=1.30,<2`; its Python 3.10+ requirement and the dependency-free Python 3.9 core remain unchanged. Existing MCP environments need an explicit package upgrade.
38
39
 
39
40
  Version 1.3.0 adds delivery explanations, local/SSH route presets and recipient addresses, bounded handoff observation, trusted SSH configuration, pairing links and per-version notice preferences. See the [release scope and verification gates](docs/releases/v1.3.0.md) for supported combinations and limits. Package publication and operational deployment are separate.
40
41
 
@@ -3,8 +3,7 @@
3
3
  # session-peer
4
4
 
5
5
  [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/)
6
- [![PyPI每周下载量](https://api.pepy.tech/badge/session-peer/week)](https://pepy.tech/projects/session-peer)
7
- [![PyPI每月下载量](https://api.pepy.tech/badge/session-peer/month)](https://pepy.tech/projects/session-peer)
6
+ [![PyPI累计下载量](https://api.pepy.tech/badge/session-peer)](https://pepy.tech/projects/session-peer)
8
7
  [![CI](https://github.com/abruption/session-peer/actions/workflows/ci.yml/badge.svg)](https://github.com/abruption/session-peer/actions/workflows/ci.yml)
9
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abruption/session-peer/blob/main/LICENSE)
10
9
 
@@ -34,7 +33,9 @@ session-peer使用各智能体自身的收件箱和队列;接收方智能体
34
33
  ### 安装
35
34
 
36
35
  需要Python 3.9或更高版本。核心本地与SSH CLI没有第三方Python依赖。
37
- 源码版本:**1.3.0**。在2026-10-23的准备检查时,最后确认的已发布稳定版本为**1.2.1**。
36
+ 源码版本:**1.3.2**。在2026-10-28的准备检查时,最后确认的已发布稳定版本为**1.3.1**。macOS防火墙说明和Direct监听器/TLS诊断请参阅[维护版本说明](docs/zh-CN/releases/v1.3.2.md)。Control的Better Auth安全更新位于仓库源码中,不包含在Python wheel/sdist内,需另行批准部署。
37
+
38
+ 可选的[MCP extra](docs/zh-CN/mcp.md)现在要求`mcp>=1.30,<2`;MCP的Python 3.10+要求和无外部依赖的Python 3.9核心保持不变。现有MCP环境需要显式升级软件包。
38
39
 
39
40
  1.3.0增加传递说明、本地与SSH路由预设及收件人地址簿、有时限的handoff观察、受信任SSH配置、配对链接和按版本设置的通知偏好。支持的组合与限制请参阅[发布范围与验证条件](docs/zh-CN/releases/v1.3.0.md)。软件包发布与生产环境部署是两项独立操作。
40
41
 
@@ -24,6 +24,10 @@ installation paths.
24
24
 
25
25
  ## Development and history
26
26
 
27
+ - [v1.3.2 maintenance notes](releases/v1.3.2.md) explain macOS firewall approval, Direct listener/TLS diagnostics, the MCP SDK floor and the Control security update outside Python archives, which requires a separate rollout.
28
+
29
+ - [v1.3.1 maintenance notes](releases/v1.3.1.md) cover the Control dependency fix, compatibility skill update and publication/deployment boundaries.
30
+
27
31
  - [v1.3.0 release notes](releases/v1.3.0.md) describe the six merged features, supported combinations and release verification.
28
32
 
29
33
  - [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.
@@ -1,15 +1,14 @@
1
1
  # Download metrics
2
2
 
3
- The README's PyPI monthly-download badge is served directly by
3
+ The README's cumulative PyPI-download badge is served directly by
4
4
  [Pepy](https://pepy.tech/pepy-api). Click it to open
5
5
  [session-peer's statistics](https://pepy.tech/projects/session-peer).
6
- The public monthly badge counts the last 30 days, not a calendar month or a
6
+ The public total badge shows Pepy's cumulative downloads, not unique users or a
7
7
  live counter. Pepy's API documentation states that public badge endpoints need
8
8
  no API key, have no rate limit and are cached for 12 hours. GitHub image caching
9
9
  can further delay visible updates; the badge is still an external dependency.
10
10
 
11
- Monthly: `https://api.pepy.tech/badge/session-peer/month`.
12
- Weekly: `https://api.pepy.tech/badge/session-peer/week` (last 7 days).
11
+ Total: `https://api.pepy.tech/badge/session-peer`.
13
12
 
14
13
  ## Interpretation
15
14
 
@@ -28,7 +27,7 @@ The version remains unchanged; documentation updates do not require a release.
28
27
 
29
28
  ## Separate landing implementation
30
29
 
31
- The ontology session owns the landing page. Use the same Pepy public weekly and
30
+ The ontology session owns the landing page. Use Pepy public weekly and
32
31
  monthly badges for its separately labeled recent 7-day and recent 30-day PyPI
33
32
  metrics, keeping source and provider-error states clear. This avoids a JSON API
34
33
  key or a separate collector. Do not expose a Pepy JSON API key in public code;
@@ -7,6 +7,10 @@
7
7
  "zh-CN"
8
8
  ],
9
9
  "sources": {
10
+ "README.md": "bbab4acce7d5bbb1b4a03bd22c48fc71feacc98e231e42d23468309f80be30d1",
11
+ "RELEASING.md": "521f2c857e034714f63118eff5a9fcf8a0a4763b1e6c55b1797eee2a00aab424",
12
+ "SECURITY.md": "8f018f6f98002312e143609b9734aeb971ca5217e146597c06b57b5645031046",
13
+ "docs/README.md": "b2113e46b366055cab95b77ab5940236bc8c18217144b9a6dbd08264773968c6",
10
14
  "docs/agent-adapters.md": "bf185d3121c94829bb412071a25c4d943302e10a6b2e713111e653b8f8c3ea91",
11
15
  "docs/ai-assistant-guide.md": "9624ec96b92fb688fae3be3c94cb3564c77985091be451fbf1f056a1af9b9d9c",
12
16
  "docs/antigravity.md": "f2b5122a0ce6e6fb5bd4d8ed50ce2c8bd2dc9c98ec8ce328405cf7c2cd24229d",
@@ -15,12 +19,11 @@
15
19
  "docs/compatibility-v1.md": "7e551aad37a369faff7e370728376763efb54c2c9e9cfd8556a0c19aabc3d103",
16
20
  "docs/contracts/handoff-v1.md": "46a953010c49214bd8f969412f26713384fbe09a0ba78ebf0fef75da40d0d889",
17
21
  "docs/diagnostics.md": "0949e53612eeab2cd7c7bbda498e14d71e9cb1b1189aa7722030cb8702cd8481",
18
- "docs/download-metrics.md": "ded60e7b84d14ce779f8d639516b4e390358a06ef76b677dc9c1f997fb626a9f",
22
+ "docs/download-metrics.md": "a537300d3fe2b60273b6f4bd84e0ae0944364fda3881d7fb7e32ce665dc2c724",
19
23
  "docs/handoff-runtime.md": "a236e48392c91eca0f7c3734a6008a991955ae66d16fd71f97691aac5bf0091f",
20
- "docs/mcp.md": "a64010cdd63f2cde6a0052450bed2d05faa0f19c93c76143cb0d585d36f8ff62",
24
+ "docs/mcp.md": "48c761666abc09540fdbdb39b6974b0002e5cc89dda774ac6c24376190fa2c7b",
21
25
  "docs/multi-home-list.md": "f8d8e3adf727e4842ea7c4d45e8f6523b11d0513bf2509d4d1204645875e6489",
22
- "docs/paired-devices.md": "08c2643d08f769deb725c6123193c1ea9593c775afde84a158a41fe6e7d1be82",
23
- "docs/README.md": "775fbf51947b2adca22df3fa5a3bcbec3262a22280b488ba3169997afe6ebbe5",
26
+ "docs/paired-devices.md": "03619867241a2db20d0b2281f17fdef2020ba159b7d565a0f5bc32de3152228d",
24
27
  "docs/relay-auth.md": "e6da5291ce6a9da31e79e66ceeff7e9fef7e95046359acbf04d708c96ffab62f",
25
28
  "docs/relay-development-plan.md": "0abf750b36275ea4e467a0020e560277f08689f2d574aed7674133705383b1ff",
26
29
  "docs/relay-edge-policy.md": "c1c7f7a1c4303943c78ca334dab4034f66c0c272e40c007d07c3da2a496155eb",
@@ -50,12 +53,11 @@
50
53
  "docs/releases/v1.2.0.md": "9a153493fb3d25306306a05f6c1f5672d7d7becfe008f371770ce2d13d7e9b38",
51
54
  "docs/releases/v1.2.1.md": "70a3026c2d874a6fd7addcaef840ecfa84bf4f33a0165605217379acffa4fddb",
52
55
  "docs/releases/v1.3.0.md": "a422901b83c85cfb48ac0ad2f99dbc82dca46c4929a3016acd15010e4a18188b",
56
+ "docs/releases/v1.3.1.md": "1600b3f6e708ded1cd5d0cad7b5f2d78244e0e4b01d122d727f2a692fccaf652",
57
+ "docs/releases/v1.3.2.md": "fe97d1feec0c3a5ebe04d3b573d2c9872a95b110b9ed57a2ce4989f376e1b96f",
53
58
  "docs/validation/69-rc.md": "e490c6a9ad0fec9108b91c74922cedac7ddf214ed405f8f5523da22f48a4b222",
54
59
  "docs/validation/85-antigravity.md": "f89b175191cd98ab03d4029b487065133814b3c8dd8de8cd0a5cc367e2579e4f",
55
60
  "docs/wake.md": "cde135da2ea7be21c815bb265e694f737dbe467d8e76bb82eb118e3b86e29d22",
56
- "plugins/session-peer/README.md": "a4eeae54caac9ad824d740f7f319561f060bc9c2bbbbf7def2bdd8e36dbcd1c6",
57
- "README.md": "0141cec936141c2bb13283b29440ad5c398f38bbc27ddb20013ff5e46175dadc",
58
- "RELEASING.md": "9e99dd741b4d221064664176b9c09f972ae4d82379f0ac4479853832dacad042",
59
- "SECURITY.md": "8f018f6f98002312e143609b9734aeb971ca5217e146597c06b57b5645031046"
61
+ "plugins/session-peer/README.md": "a4eeae54caac9ad824d740f7f319561f060bc9c2bbbbf7def2bdd8e36dbcd1c6"
60
62
  }
61
63
  }
@@ -23,6 +23,10 @@
23
23
 
24
24
  ## 開発と履歴
25
25
 
26
+ - [v1.3.2メンテナンス案内](releases/v1.3.2.md)ではmacOSのファイアウォール承認、Directリスナー・TLS診断、MCP SDK下限、Python配布物の外にあるControlのセキュリティ更新と別途の配備について説明します。
27
+
28
+ - [v1.3.1メンテナンス案内](releases/v1.3.1.md)はControlの依存関係修正、互換スキル更新、公開と運用配備の範囲を説明します。
29
+
26
30
  - [v1.3.0リリースノート](releases/v1.3.0.md)は、マージ済みの6機能、対応する組み合わせ、リリース検証を説明します。
27
31
 
28
32
  - [v1.2.1準備記録](releases/v1.2.1.md)は、Orca Claude検索・スキルメタデータ読み取り・互換スキルコピーの2026-10-19パッチ候補を記録し、公開は別です。
@@ -1,9 +1,8 @@
1
1
  # ダウンロードメトリクス
2
2
 
3
- README の PyPI 月間ダウンロードバッジは、[Pepy](https://pepy.tech/pepy-api) から直接提供されています。クリックすると [session-peer の統計情報](https://pepy.tech/projects/session-peer) が開きます。公開の月間バッジは直近 30 日間をカウントするものであり、暦月やリアルタイムカウンターではありません。Pepy の API ドキュメントによると、公開バッジのエンドポイントは API キーが不要でレート制限もなく、12 時間キャッシュされます。GitHub の画像キャッシュにより表示の更新がさらに遅れる場合があります。バッジは依然として外部依存関係です。
3
+ README の PyPI 累計ダウンロードバッジは、[Pepy](https://pepy.tech/pepy-api) から直接提供されています。クリックすると [session-peer の統計情報](https://pepy.tech/projects/session-peer) が開きます。公開の累計バッジは Pepy の累計ダウンロード数を表示し、ユニークユーザー数やリアルタイムカウンターではありません。Pepy の API ドキュメントによると、公開バッジのエンドポイントは API キーが不要でレート制限もなく、12 時間キャッシュされます。GitHub の画像キャッシュにより表示の更新がさらに遅れる場合があります。バッジは依然として外部依存関係です。
4
4
 
5
- 月間: `https://api.pepy.tech/badge/session-peer/month`。
6
- 週間: `https://api.pepy.tech/badge/session-peer/week`(直近 7 日間)。
5
+ 累計: `https://api.pepy.tech/badge/session-peer`。
7
6
 
8
7
  ## 解釈
9
8
 
@@ -15,7 +14,7 @@ README の PyPI 月間ダウンロードバッジは、[Pepy](https://pepy.tech/
15
14
 
16
15
  ## 個別のランディングページ実装
17
16
 
18
- オントロジーセッションがランディングページを所有します。個別にラベル付けされた直近 7 日間および直近 30 日間の PyPI メトリクスには同じ Pepy 公開週間・月間バッジを使用し、ソースおよびプロバイダーのエラー状態を明確に保ちます。これにより、JSON API キーや個別のコレクターが不要になります。公開コードに Pepy JSON API キーを露出させないでください。JSON API アクセスには、公開バッジとは異なる認証、プラン、およびレート制限条件があります。既存のサイト分析は変更されず、この作業によって CLI や訪問者イベントのテレメトリが追加されることはありません。
17
+ オントロジーセッションがランディングページを所有します。個別にラベル付けされた直近 7 日間および直近 30 日間の PyPI メトリクスには Pepy 公開週間・月間バッジを使用し、ソースおよびプロバイダーのエラー状態を明確に保ちます。これにより、JSON API キーや個別のコレクターが不要になります。公開コードに Pepy JSON API キーを露出させないでください。JSON API アクセスには、公開バッジとは異なる認証、プラン、およびレート制限条件があります。既存のサイト分析は変更されず、この作業によって CLI や訪問者イベントのテレメトリが追加されることはありません。
19
18
 
20
19
  ## プロバイダー変更の検証 (2026-09-18)
21
20
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  Python 3.10 以降でインストールします: `pipx install 'session-peer[mcp]'`(または隔離された venv にエクストラをインストール)。依存関係のない Python 3.9 CLI および `install.sh` は引き続きサポートされます。シェルインストーラーは MCP の依存関係をインストールしません。Python 3.9 では、MCP エントリポイントが Python 3.10+ が必要である旨を報告します。
4
4
 
5
+ 任意のエクストラはMCP SDK `mcp>=1.30,<2`を必要とします。上流の1.xセキュリティ修正を含む版まで依存関係の下限を引き上げるもので、stdio専用のこのサーバーで悪用可能な欠陥を確認したという意味ではありません。HTTP転送、OAuthサーバー経路、MCPクライアント経路は有効にしません。既存環境では明示的なパッケージ更新が必要で、宣言の変更だけではインストール済みSDKは更新されません。
6
+
5
7
  `session-peer-mcp --config /absolute/path/policy.json` を起動します。ポリシーがない場合、サーバーは起動環境の Codex ホームを使用して、ローカルの一覧取得のみを許可します。ポリシーを指定するとデフォルトが置き換えられます。例:
6
8
 
7
9
  ```json
@@ -42,12 +44,14 @@ MCP ツールのアノテーションは、一覧取得を読み取り専用、
42
44
 
43
45
  MCP エクストラの有無の両方で `python -m unittest discover -s tests -v` を実行します。オプションのテストでは実際の stdio MCP サーバーを起動し、モデルの認証情報なしで初期化、スキーマ、ポリシー拒否、および CLI の部分的な失敗を検証します。wheel と sdist の両方のインストールをテストしてください。実環境チェックでは Codex バージョン、OS、およびホストの承認設定を記録する必要があります。UDS アクセスは環境依存であり、承認のバイパスを約束するものではありません。メッセージには専用のテストセッションを使用してください。
44
46
 
45
- 公式リファレンス: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk)。
47
+ CIではmacOS/LinuxのPython 3.10/3.13で、SDK下限の`mcp==1.30.0`と最新の互換1.xを別々に試験します。両プロファイルでstdio・ポリシー・タイムアウト・キャンセル・所有する子プロセスの終了処理を試験し、解決されたランタイム依存関係を監査して、版とレポートを保存します。推移的依存関係の版は通常の依存関係解決に従って選択されます。すべての推移的パッケージの最小版を試験するものではありません。版を固定したビルド・監査用要件はランタイム環境の外にインストールし、監査対象には初期構成用の`pip`/`setuptools`パッケージも含めます。既存の最新版解決監査とリリース監査も引き続き必須です。
48
+
49
+ 公式リファレンス: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk)。 [SDK 1.30.0](https://pypi.org/pypi/mcp/1.30.0/json), [GHSA-84m7-p3x7-pcfv](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-84m7-p3x7-pcfv), [GHSA-fmmv-w9g8-j3gc](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-fmmv-w9g8-j3gc).
46
50
 
47
51
  ### 非対話型クライアントの承認
48
52
 
49
53
  Codex `exec` は、サーバーポリシーが許可している場合でも「requires approval, but approval policy is never」として send ツールを拒否することがあります。`approval_mode="auto"` は無条件の承認ではありません。非対話型統合を明示的に承認するオペレーターは、制限された宛先ポリシーと併せて、その特定の MCP サーバー/ツールに対して `mcp_servers.session_peer.tools.send_message.approval_mode="approve"` を設定できます。プラグインがこの設定を有効にすることはありません。対話型クライアントは、代わりに通常の承認プロンプトを使用できます。テストクライアントがこの承認設定を無関係なサーバーやツールにコピーしてはなりません。
50
54
 
51
- macOS/LinuxではMCP CLI呼び出しごとに新しいプロセスグループを所有します。完了・timeout・取消時はleaderの回収前にTERM→KILLでTERMを無視する子も整理し、取消は再伝播します。別sessionへ離脱した子やSSH先のプロセスは対象外です。Windowsは直接の子の終了のみで、ツリー終了は保証しません。ローカル終了で遠隔送信は取り消せません。timeoutは `outcome_unknown` のままで自動再送は禁止です。
55
+ macOS/LinuxではMCP CLI呼び出しごとに新しいプロセスグループを所有します。完了・timeout・取消時はleaderの回収前に制限時間付きのTERM→KILLでTERMを無視する子も整理し、キャンセルは引き続き伝播します。別sessionへ離脱した子やSSH先のプロセスは対象外です。Windowsは直接の子の終了のみで、ツリー終了は保証しません。ローカル終了で遠隔送信は取り消せません。timeoutは `outcome_unknown` のままで自動再送は禁止です。
52
56
 
53
57
  呼び出し元セッションが不明であることを示す From ラベルを含め、MCP の本文は宛先 CLI の受信側の枠で引用されます。本文のヘッダーや埋め込まれた Reply-To は権限を与えません。第三者への宛先はセッション所有者に確認してください。共有 MCP プロセスは、認証済み呼び出し元セッションや自動返信経路を引き続き提供できません。最終的な枠もネイティブメッセージの上限に含まれます。
@@ -120,6 +120,22 @@ WebSocket 切断の `closeSource` はコードの受信・送信方向を区別
120
120
 
121
121
  1 秒以上開いていた待機ルームが Relay により正常に閉じられた場合、受信側はバックオフを増やさず 0.5 秒後に再接続します。その他の失敗と 1 秒以内に閉じたルームは、引き続き最大 5 秒まで指数バックオフします。Relay レグは両端で 10 秒の WebSocket ping 間隔・タイムアウトを使うため、停止したレグを約 40 秒ではなく約 20 秒で検出します。これは再接続の空白を減らすだけで、停止したネットワーク経路を修復するものではありません。
122
122
 
123
+ ### macOS Directリスナーの確認(#341)
124
+
125
+ この節はv1.3.1以降の未公開の変更を説明します。`device serve`起動時の`ready:true`はローカルリスナーの設定だけを確認します。今回の変更は`directReadyConfirmed:false`を追加します。以前のレシーバーではフィールドがない場合があります。TCP接続、起動準備、ピアTLS成功は別々の観測です。TLSハンドシェイクは未認証のペアリング初期接続の場合もあるため、それだけでペアリング、ネイティブ対象へのアクセス、ACKを証明しません。既存のペアリング設定の準備確認は認証済みprobe/list要求を使います。
126
+
127
+ `--diagnostic-events`を指定すると、今回の変更は`direct_transport`ライフサイクル記録を出力します。`phase`はTCPコールバックへの進入時が`accepted`、ハンドシェイクの成功・失敗時が`peer_tls`です。上限のあるレシーバーごとの累積カウンターは`accepted`、`tlsCompleted`、`tlsFailed`です。単調時計で各段階につき60秒に最大1件、合計で1分に最大2件に制限し、TLS成功と失敗は同じ段階の制限を共有します。正常終了時には0件も含む`summary`スナップショットの出力を追加で1件試み、終了処理を繰り返しても再出力しません。これは終了時のスナップショットであり、定期通知や欠落のないイベント履歴ではありません。接続受け入れの拒否、未完了・キャンセルされたハンドシェイク、カウンターの上限により数値は一致しない場合があります。ベストエフォートのDirect記録にエンドポイントアドレス、ピアID、メッセージデータ、例外原文は含めません。記録がないだけで接続が受け付けられなかったとは断定できません。
128
+
129
+ ファイアウォール許可前に行った2026-10-27の隔離ペアリング試験では、Homebrew Python 3.14.9レシーバーを使うと両方向ともクライアントがTLS段階まで進んだものの`peer_tls/timeout`となり、明示的に試した`0.0.0.0`でも解消しませんでした。一方のMacのpython.org Python 3.13.7レシーバーは、もう一方のMacとのペアリングと認証済みprobeに成功しました。逆方向では、別途選択した短時間のprivate TCP転送プロセスを介してloopback TLSレシーバーに接続した場合だけ成功しました。転送プロセスはTLSを終端せず、TLSのバイト列を解釈せずに渡しました。これらは異なる試験構成であり、一般的な対応保証やmacOS・Tailscale・Pythonの原因確定ではありません。観測範囲は[#341](https://github.com/abruption/session-peer/issues/341)を参照してください。
130
+
131
+ 所有者が`Python.app`への着信接続を許可した後、両方のMacで、以前失敗した公開済みv1.3.1のHomebrew Python 3.14.9ランタイム、tailnetのbindアドレス、各機器の同じポートを使ってDirectペアリングと認証済みprobeが成功しました。新しい試験用の識別情報を使い、転送プロセス、別のインタープリター、ネイティブ呼び出しは使っていません。この前後比較は、今回の原因がmacOSアプリケーションファイアウォールの承認待ちだったことを裏付けます。診断PRがネットワーク経路を修復した結果ではありません。
132
+
133
+ [Appleのファイアウォール説明](https://support.apple.com/en-euro/guide/mac-help/mh34041/27/mac/27)によれば、通知に応答するまで着信接続の試みは拒否されます。意図したレシーバーがこの通知を出した場合、所有者は実際のPythonアプリケーションを確認し、必要であれば明示的に許可してください。ファイアウォール、選択したprivate bind、証明書を固定したTLS、受信ポリシーは維持してください。この許可はネイティブエージェントへのアクセスを認めるものではありません。
134
+
135
+ 実際に動くPythonイメージ・配布元、macOSバージョン、Tailscaleバージョン・種類、bindアドレス、自己接続かリモート接続かを記録してください。ファイアウォールの許可表示だけでは接続全体の準備を保証しません。リスナーを自動的に`0.0.0.0`へ広げたり、ファイアウォール・アクセス方針・ランタイムを変更したり、転送構成の対応を推定したりしないでください。不確実なペアリング後は`pending`状態と`retryAllowed:false`を保持してください。独立した試験結果は、その状態の再試行や消去を許可するものではありません。
136
+
137
+ 記録数には上限がありますが、既存の同期stderrロガーは出力先が詰まった場合の強制的な制限時間を設けていません。
138
+
123
139
  ## インストール
124
140
 
125
141
  両方のデバイス上の隔離された環境に、PyPI から session-peer v0.9.0 以降をインストールします:
@@ -0,0 +1,13 @@
1
+ # v1.3.1 メンテナンスリリース
2
+
3
+ 公開済みv1.3.0を基準に2026-10-27に準備しました。本書はソースの変更範囲を説明します。実際の公開記録は[GitHub Releases](https://github.com/abruption/session-peer/releases)と[PyPI](https://pypi.org/project/session-peer/)で確認してください。
4
+
5
+ - #338 / #339:Node Controlの間接依存であるZodを4.6.5から4.6.7へ更新します。[GHSA-mrhx-c7xc-m3w5](https://github.com/advisories/GHSA-mrhx-c7xc-m3w5)の対象は4.6.6未満です。直接依存と監査方針は変更しません。固定された依存関係の警告への対応であり、稼働中のエンドポイントで悪用可能かどうかは評価・再現していません。
6
+ - #334 / #335:別のスキルリポジトリのソース`176dc0dab619f074dbfc94de7e01f9a02a052f79`から、互換スキルv0.4.0をバイト単位で同一のまま含めます。SHA-256は`debedd472e3b0c0c6844fb63f7fb2f17cb6c6cc8c3e981e9afd2531a35327af7`です。最小ランタイムは0.9.1、文書のCLI機能の基準は1.3.0、受信側の`codexBin`の最小バージョンは1.0.1です。単体版リリースのスキル資産は、別の管理ツールで導入したスキルを更新しません。
7
+ - #336 / #337:4言語のREADMEにPyPIの累計ダウンロード数を表示します。
8
+
9
+ Python CLIの動作、依存関係、対応プラットフォーム、実験的handoffの制限は、バージョン識別子を除いてv1.3.0と同じです。Node ControlのソースはPythonのwheelとsdistに含まれません。Pythonパッケージの公開やインストールだけでは、稼働中のControlサービスに修正は適用されません。Nodeの修正を適用するには、別途承認されたControlのソース・依存関係の更新と再起動が必要です。
10
+
11
+ 依存関係の修正のローカル検証では、新規npmインストール、型検査・ビルド、Controlテスト123件、Node/Pythonのループバック統合テスト11件が成功し、ランタイム・全依存関係のnpm監査で報告された脆弱性は0件でした。これは試験環境の結果であり、実際のOAuth、ネイティブエージェント、稼働サービスの検証ではありません。公開前に最終PRレビュー、保護されたmainのCI、依存関係監査、再現可能な成果物と新規インストールの検証を完了してください。
12
+
13
+ 新しいv1.3.1タグと検証済みの不変資産を使用します。既存のv1.3.0資産は維持します。ネイティブ世代識別、handoff、保存先、起動時の受け入れ条件(#180/#181/#268/#304/#306/#307)とSide Session・steeringの研究は別途扱います。配信結果がunknownの場合、自動再送は許可されません。
@@ -0,0 +1,37 @@
1
+ # v1.3.2 メンテナンスリリース
2
+
3
+ 公開済みv1.3.1を基準に2026-10-28に準備しました。Direct機能のソース基準は`dac1c30b1553136b9379be0c6d94eef34ccbad51`で、最終統合リリースコミットではありません。本書は準備範囲を説明します。実際の公開記録は[GitHub Releases](https://github.com/abruption/session-peer/releases)と[PyPI](https://pypi.org/project/session-peer/)で確認してください。
4
+
5
+ PR #345のゲート修正ソース基準は`a68c6cf16c234cd3fe72926e519e4178c093081a`です。マージ済みPR #347後の統合準備基準は、バージョン準備コミットより前の`ef7748a78e6b466f67074708f5c14decf37f31d7`です。最終公開記録でリリースコミットを別途特定します。
6
+
7
+ ## 変更内容
8
+
9
+ - #341 / #342:レシーバー起動時の`ready:true`を維持し、`directReadyConfirmed:false`を追加して、ローカルリスナーの設定とリモートからの到達可能性を区別します。TLS完了だけではペアリング、ネイティブ対象へのアクセス、ACKを証明しません。
10
+ - 明示的に選択する`--diagnostic-events`にDirectのコールバック・TLS観測と、上限のあるレシーバーごとの`accepted`、`tlsCompleted`、`tlsFailed`カウンターを追加します。`accepted`と`peer_tls`の段階では合計で60秒に最大2件を記録し、TLS成功・失敗は後者の段階の制限を共有します。正常終了時には0件も含む`summary`の記録を追加で1回試み、終了処理を繰り返しても再試行しません。固定フィールドにアドレス、ピア/セッションID、メッセージデータ、例外原文は含めません。ロギング失敗は元のハンドシェイク例外を置き換えません。既存の同期stderr出力には、出力先が詰まった場合の強制的な制限時間はありません。
11
+ - 実験用TCPプローブはPython 3.9/3.10の`asyncio.TimeoutError`を処理し、Python 3.9/3.13で応答が止まるループバック回帰試験を実施しました。手動の2台のMac・tailnet実験はCIとは別で、`experiments/`はwheel/sdistから除外されます。[実験記録](https://github.com/abruption/session-peer/blob/dac1c30b1553136b9379be0c6d94eef34ccbad51/experiments/macos-direct-listener/README.md)を参照してください。
12
+ - #343 / #345:Node Controlの`better-auth`と`@better-auth/core`の固定版を1.7.5から1.7.7へ更新し、アダプター・telemetryの版もそろえます。上流は[GHSA-965c-763c-88jm](https://github.com/advisories/GHSA-965c-763c-88jm)(重大)、[GHSA-r4xp-prcw-77qf](https://github.com/advisories/GHSA-r4xp-prcw-77qf)(高)、[GHSA-44jh-23m7-hpcf](https://github.com/advisories/GHSA-44jh-23m7-hpcf)(低)の最初の修正版を1.7.7としています。
13
+ - #344 / #345:保護された読み取り区間に入ってからだけREADYを通知するよう、SIGINT試験を同期します。macOS Python 3.13で観測されたシグナル終了(-2)と想定する処理済み終了130の競合に対応し、製品のシグナル動作ではなく試験の同期を変更します。固定sleepや弱いアサーションでこの境界を代用せず、過去のCI失敗の正確な原因も確定していません。
14
+
15
+ - #346 / #347:オプションのMCP SDK要件を`mcp>=1.30,<2`へ引き上げます。コアのPython 3.9下限とMCPのPython 3.10+マーカーは維持します。POSIX CIはMac/Linux、Python 3.10/3.13、正確な下限`1.30.0`または最新の互換`1.x`という2つのSDKプロファイルを組み合わせた8セルです。間接依存関係は通常どおり解決し、下限プロファイルは全パッケージの最低版を検証するものではありません。インストール済みSDKの標準入出力(`stdio`)契約チェックは、HTTP/OAuthの露出や悪用可能性を立証しません。
16
+
17
+ PR #345の2つのゲート修正は個別レビュー済みのコミットとしてマージされ、PR #347のMCP下限・CIプロファイルもマージされました。レビュー対象のPR #347コミットはMCPの全8セルを含む32チェックに成功し、自動Codexコード・セキュリティレビューも別途指摘なしで完了しました。このPR結果は保護された最終mainの検証や公開証拠に代わるものではありません。リリース準備PRのマージ前に現在のmainの検証成功を必須とします。
18
+
19
+ ## 原因と互換性の範囲
20
+
21
+ 所有者がPython.appへの着信接続を許可した後、両方のMacで、元の公開済みv1.3.1のHomebrew Python 3.14.9ランタイム、同じtailnetのbindアドレスと各機器の同じポートを使い、Directペアリングと認証済みprobeが成功しました。新しい試験用の識別情報を使い、ネイティブ呼び出しは0件でした。転送プロセスや別のインタープリターは不要でした。この結果は、今回の接続を妨げていたのがmacOSアプリケーションファイアウォールの承認待ちだったことを裏付けます。診断コードが接続を復旧したわけではありません。以前の陰性・署名・転送の対照試験は過去の観測記録であり、必須の解決策やmacOS・Tailscale・Pythonに共通する原因の判定ではありません。
22
+
23
+ Directのbind、TLS・認証チェック、期限、ペアリング状態、自動再試行禁止の動作は維持します。ファイアウォール・アクセス方針・ランタイム選択を自動化せず、新しいプラットフォームや一般的なACK対応も追加しません。既存ユーザーのpending状態は再試行・初期化していません。ネイティブ世代識別、handoff、保存先、起動時の受け入れ条件(#180/#181/#268/#304/#306/#307)とSide Session・steering研究は別途扱います。
24
+
25
+ オプションのRelayレシーバーモジュールの変更はwheel/sdistに含まれ、単体版`session_peer.py`には組み込まれません。診断機能を適用するには、レシーバー自身のパッケージ・環境を更新し、そのプロセスを明示的に再起動する必要があります。単体ファイルの更新だけでは、これらのモジュールは更新されません。この公開で運用環境の更新や再起動は行いません。
26
+
27
+ 調査したControlソースはSQLiteと`bearer`、`deviceAuthorization`プラグインを使い、勧告のMagic Link/OAuth Proxy/PostgreSQL経路は使っていません。配備済み環境での悪用可能性は立証していません。Node Controlの依存関係修正はPython wheel/sdistに含まれず、別途承認されたサービス配備が必要です。上流のOAuth検証識別子の接頭辞変更を確認し、検証ストレージを共有するサーバー間で更新を調整してください。更新後、進行中だったOAuthサインインは最初からやり直す必要が生じる場合があります。この準備では運用環境への配備、セッション失効、データ移行を行いません。
28
+
29
+ 互換スキルはv0.4.0、最小ランタイム0.9.1 / 文書のCLI機能の基準1.3.0を維持し、受信側`codexBin`の最小バージョンも1.0.1のままです。変更のないSHA-256は`debedd472e3b0c0c6844fb63f7fb2f17cb6c6cc8c3e981e9afd2531a35327af7`です。ランタイムの公開は、別途管理するスキルの更新や稼働サービスの配備を行いません。
30
+
31
+ ## リリース検証
32
+
33
+ ゲート修正のローカル検証ではControlテスト123件、Node/Python統合テスト11件、脆弱性0件を報告した依存関係監査に加え、Python 3.9/3.13それぞれのstdinテスト17件と制御したシグナル試行400回が成功しました。このローカル結果は保護されたmainのCIや実際のOAuth受け入れ試験に代わるものではありません。
34
+
35
+ ローカルMacのMCP検証では、4つのSDK・PythonプロファイルそれぞれでMCPテスト28件が成功し、依存関係監査の報告は脆弱性0件でした。現在の文書チェックも69件成功しています。このローカル結果はCIの8セル、最終mainの検証やHTTP/OAuth受け入れ試験の代わりにはなりません。
36
+
37
+ #342の検証記録にはRelayテスト354件、文書テスト65件、Python 3.9/3.13で試験したプローブ回帰テスト1件が含まれます。これは実装の検証資料であり、この準備で新しく行ったネイティブエージェントの受け入れ試験ではありません。最新の準備レビュー、保護されたmainのCI、依存関係監査、生成器の一致、再現可能な成果物、新規インストールの検証が必要です。準備成功後、`SHA256SUMS`と`release-provenance.json`を含む不変資産7件、およびそれらの認証済みattestationを正確なタグ・ソースと照合してから公開してください。必須の人手によるPyPI環境承認は維持します。この準備は既存のv1.3.1資産や稼働中のインストールを置き換えません。
@@ -23,6 +23,10 @@
23
23
 
24
24
  ## 개발과 이력
25
25
 
26
+ - [v1.3.2 유지보수 안내](releases/v1.3.2.md)에서 macOS 방화벽 승인, Direct 리스너·TLS 진단, MCP SDK 하한과 Python 배포물 밖의 Control 보안 업데이트 및 별도 배포 필요성을 설명합니다.
27
+
28
+ - [v1.3.1 유지보수 안내](releases/v1.3.1.md)는 Control 의존성 수정, 호환 스킬 갱신과 발행·운영 배포의 범위를 설명합니다.
29
+
26
30
  - [v1.3.0 릴리스 노트](releases/v1.3.0.md)는 병합된 기능 6개, 지원 조합과 릴리스 검증을 설명합니다.
27
31
 
28
32
  - [v1.2.1 준비 기록](releases/v1.2.1.md)은 Orca Claude 검색·스킬 메타데이터 판독·호환 스킬 사본을 위한 2026-10-19 패치 후보를 설명하며 공개는 별도입니다.
@@ -1,9 +1,8 @@
1
1
  # 다운로드 지표
2
2
 
3
- README의 PyPI 월간 다운로드 배지는 [Pepy](https://pepy.tech/pepy-api)에서 직접 제공됩니다. 배지를 클릭하면 [session-peer 통계](https://pepy.tech/projects/session-peer)가 열립니다. 공개 월간 배지는 달력 기준의 월이나 실시간 카운터가 아닌 최근 30일을 집계합니다. Pepy의 API 문서에 따르면 공개 배지 엔드포인트는 API 키가 필요 없고, 속도 제한이 없으며, 12시간 동안 캐시됩니다. GitHub 이미지 캐싱으로 인해 가시적인 업데이트가 추가로 지연될 수 있습니다. 배지는 여전히 외부 의존성입니다.
3
+ README의 PyPI 누적 다운로드 배지는 [Pepy](https://pepy.tech/pepy-api)에서 직접 제공됩니다. 배지를 클릭하면 [session-peer 통계](https://pepy.tech/projects/session-peer)가 열립니다. 공개 누적 배지는 Pepy의 누적 다운로드 수를 표시하며, 고유 사용자 수나 실시간 카운터가 아닙니다. Pepy의 API 문서에 따르면 공개 배지 엔드포인트는 API 키가 필요 없고, 속도 제한이 없으며, 12시간 동안 캐시됩니다. GitHub 이미지 캐싱으로 인해 가시적인 업데이트가 추가로 지연될 수 있습니다. 배지는 여전히 외부 의존성입니다.
4
4
 
5
- 월간: `https://api.pepy.tech/badge/session-peer/month`.
6
- 주간: `https://api.pepy.tech/badge/session-peer/week` (최근 7일).
5
+ 누적: `https://api.pepy.tech/badge/session-peer`.
7
6
 
8
7
  ## 해석
9
8
 
@@ -15,7 +14,7 @@ README의 PyPI 월간 다운로드 배지는 [Pepy](https://pepy.tech/pepy-api)
15
14
 
16
15
  ## 별도의 랜딩 페이지 구현
17
16
 
18
- 온톨로지 세션이 랜딩 페이지를 소유합니다. 소스 및 제공업체 오류 상태를 명확히 유지하면서, 별도로 레이블이 지정된 최근 7일 및 최근 30일 PyPI 지표에 동일한 Pepy 공개 주간 및 월간 배지를 사용하십시오. 이를 통해 JSON API 키나 별도의 수집기를 피할 수 있습니다. 공개 코드에 Pepy JSON API 키를 노출하지 마십시오. JSON API 접근에는 공개 배지와 다른 인증, 요금제 및 속도 제한 조건이 있습니다. 기존 사이트 분석은 그대로 유지되며, 이번 작업으로 CLI 또는 방문자 이벤트 텔레메트리가 추가되지 않습니다.
17
+ 온톨로지 세션이 랜딩 페이지를 소유합니다. 소스 및 제공업체 오류 상태를 명확히 유지하면서, 별도로 레이블이 지정된 최근 7일 및 최근 30일 PyPI 지표에 Pepy 공개 주간 및 월간 배지를 사용하십시오. 이를 통해 JSON API 키나 별도의 수집기를 피할 수 있습니다. 공개 코드에 Pepy JSON API 키를 노출하지 마십시오. JSON API 접근에는 공개 배지와 다른 인증, 요금제 및 속도 제한 조건이 있습니다. 기존 사이트 분석은 그대로 유지되며, 이번 작업으로 CLI 또는 방문자 이벤트 텔레메트리가 추가되지 않습니다.
19
18
 
20
19
  ## 제공업체 변경 검증 (2026-09-18)
21
20
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  Python 3.10 이상에서 설치하십시오: `pipx install 'session-peer[mcp]'`(또는 격리된 venv에 extra 설치). 의존성이 없는 Python 3.9 CLI 및 `install.sh`는 계속 지원됩니다. 셸 설치기는 MCP 의존성을 설치하지 않습니다. Python 3.9에서 MCP 엔트리 포인트는 Python 3.10+이 필요하다고 보고합니다.
4
4
 
5
+ 선택형 extra는 MCP SDK `mcp>=1.30,<2`를 요구합니다. 업스트림 1.x 보안 수정이 포함된 버전으로 의존성 하한을 올리는 것으로, stdio만 사용하는 이 서버에서 악용 가능한 결함이 확인됐다는 뜻은 아닙니다. 이번 변경으로 HTTP 전송, OAuth 서버 경로, MCP 클라이언트 경로가 활성화되지는 않습니다. 기존 환경에는 명시적인 패키지 업그레이드가 필요하며, 선언 변경만으로 설치된 SDK가 업데이트되지는 않습니다.
6
+
5
7
  `session-peer-mcp --config /absolute/path/policy.json`으로 시작합니다. 정책이 없으면 서버는 실행 환경의 Codex 홈을 사용하여 로컬 목록 조회만 허용합니다. 제공된 정책은 기본값을 대체합니다. 예시:
6
8
 
7
9
  ```json
@@ -42,12 +44,14 @@ MCP 도구 어노테이션은 목록 조회를 읽기 전용으로, 전송을
42
44
 
43
45
  MCP extra가 있는 상태와 없는 상태에서 각각 `python -m unittest discover -s tests -v`를 실행하십시오. 선택형 테스트는 실제 stdio MCP 서버를 시작하고 모델 자격 증명 없이 초기화, 스키마, 정책 거부 및 CLI 부분 실패를 실행합니다. wheel 및 sdist 설치를 모두 테스트하십시오. 실시간 확인 시에는 Codex 버전, OS 및 호스트 승인 설정을 기록해야 합니다. UDS 접근은 환경에 따라 다르며 승인 우회를 약속하는 것이 아닙니다. 메시지에는 전용 테스트 세션을 사용하십시오.
44
46
 
45
- 공식 참조: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk).
47
+ CI는 macOS/Linux의 Python 3.10/3.13에서 SDK 하한 `mcp==1.30.0`과 최신 호환 1.x를 별도로 시험합니다. 두 프로필 모두 stdio·정책·시간 초과·취소·소유 자식 프로세스 정리 시험을 실행하고, 해결된 런타임 의존성 그래프를 감사하며 버전과 보고서를 보존합니다. 전이 의존성 버전은 패키지 관리자가 일반적인 방식으로 결정합니다. 모든 전이 패키지의 최솟값을 시험하는 것은 아닙니다. 버전을 고정한 빌드·감사 요구 패키지는 런타임 환경 밖에 설치하며, 감사 대상 환경에는 초기 구성용 `pip`/`setuptools` 패키지도 포함됩니다. 기존 최신 버전 해결 감사와 릴리스 감사도 계속 필수입니다.
48
+
49
+ 공식 참조: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk). [SDK 1.30.0](https://pypi.org/pypi/mcp/1.30.0/json), [GHSA-84m7-p3x7-pcfv](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-84m7-p3x7-pcfv), [GHSA-fmmv-w9g8-j3gc](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-fmmv-w9g8-j3gc).
46
50
 
47
51
  ### 비대화형 클라이언트 승인
48
52
 
49
53
  서버 정책이 허용하더라도 Codex `exec`는 전송 도구를 “requires approval, but approval policy is never”로 거부할 수 있습니다. `approval_mode="auto"`는 무조건적인 승인이 아닙니다. 비대화형 연동을 명시적으로 승인하는 운영자는 제한된 목적지 정책과 함께 해당 특정 MCP 서버/도구에 대해 `mcp_servers.session_peer.tools.send_message.approval_mode="approve"`를 구성할 수 있습니다. 플러그인은 이 설정을 활성화하지 않습니다. 대화형 클라이언트는 대신 일반적인 승인 프롬프트를 사용할 수 있습니다. 테스트 클라이언트는 이 승인을 관련 없는 서버나 도구에 복사해서는 안 됩니다.
50
54
 
51
- macOS/Linux에서 MCP CLI 호출은 새 프로세스 그룹을 소유합니다. 완료·시간 초과·취소 시 리더를 회수하기 전에 TERM→KILL로 해당 그룹을 정리하며 TERM을 무시하는 자식도 포함합니다. 취소는 그대로 전파됩니다. 별도 세션으로 이탈한 자식과 원격 SSH 프로세스는 범위 밖입니다. Windows는 직접 자식 종료만 유지하며 프로세스 트리 보장을 주장하지 않습니다. 로컬 정리는 원격 제출을 취소하지 않습니다. timeout은 `outcome_unknown`이며 자동 재전송하면 안 됩니다.
55
+ macOS/Linux에서 MCP CLI 호출은 새 프로세스 그룹을 소유합니다. 완료·시간 초과·취소 시 리더를 회수하기 전에 시간 제한이 있는 TERM→KILL로 해당 그룹을 정리하며 TERM을 무시하는 자식도 포함합니다. 취소는 그대로 전파됩니다. 별도 세션으로 이탈한 자식과 원격 SSH 프로세스는 범위 밖입니다. Windows는 직접 자식 종료만 유지하며 프로세스 트리 보장을 주장하지 않습니다. 로컬 정리는 원격 제출을 취소하지 않습니다. timeout은 `outcome_unknown`이며 자동 재전송하면 안 됩니다.
52
56
 
53
- 호출 세션을 알 수 없다는 From 표시를 포함한 MCP 본문은 목적지 CLI의 수신 측 표시 안에 인용됩니다. 본문 헤더나 본문에 들어 있는 Reply-To는 권한을 부여하지 않습니다. 제삼자 목적지는 세션 소유자에게 확인하십시오. 공유 MCP 프로세스는 여전히 인증된 호출 세션이나 자동 회신 경로를 제공하지 못합니다. 최종 표시도 네이티브 메시지 한도에 포함됩니다.
57
+ 호출 세션을 알 수 없다는 From 표시를 포함한 MCP 본문은 목적지 CLI의 수신 측 프레임 안에 인용됩니다. 본문 헤더나 본문에 들어 있는 Reply-To는 권한을 부여하지 않습니다. 제삼자 목적지는 세션 소유자에게 확인하십시오. 공유 MCP 프로세스는 여전히 인증된 호출 세션이나 자동 회신 경로를 제공하지 못합니다. 최종 프레임도 네이티브 메시지 한도에 포함됩니다.
@@ -120,6 +120,22 @@ WebSocket 종료의 `closeSource`는 코드가 수신됐는지 송신됐는지
120
120
 
121
121
  1초 이상 열려 있던 대기 방이 Relay에 의해 정상 종료되면 수신자는 백오프를 늘리지 않고 0.5초 뒤 다시 연결합니다. 그 밖의 실패와 1초 안에 닫힌 방은 계속 최대 5초까지 지수 백오프합니다. Relay 레그는 양쪽 모두 10초 WebSocket ping 간격·제한을 사용하므로 정체된 레그를 약 40초가 아닌 약 20초 안에 감지합니다. 이는 재연결 공백을 줄일 뿐 정체된 네트워크 경로를 고치지는 않습니다.
122
122
 
123
+ ### macOS Direct 리스너 확인(#341)
124
+
125
+ 이 절은 v1.3.1 이후의 미발행 변경을 설명합니다. `device serve` 시작 시의 `ready:true`는 로컬 리스너 구성만 확인합니다. 이번 변경은 `directReadyConfirmed:false`를 추가하며, 이전 수신기는 이 필드를 생략할 수 있습니다. TCP 연결, 시작 준비 상태, 피어 TLS 성공은 각각 별도의 관측입니다. TLS 핸드셰이크는 아직 인증되지 않은 페어링 초기 연결일 수 있으므로, 그 자체로 페어링·네이티브 대상 접근·ACK를 증명하지 않습니다. 기존 페어링 설정의 준비 확인은 인증된 probe/list 요청을 사용합니다.
126
+
127
+ `--diagnostic-events`를 사용하면 이번 변경은 `direct_transport` 수명주기 기록을 출력합니다. `phase`는 TCP 콜백 진입 시 `accepted`, 핸드셰이크 성공·실패 시 `peer_tls`입니다. 상한이 있는 수신기별 누적 카운터는 `accepted`, `tlsCompleted`, `tlsFailed`입니다. 단조 시계를 기준으로 단계마다 60초에 최대 한 번, 분당 최대 두 번 기록하며, TLS 성공과 실패는 같은 단계의 제한을 공유합니다. 정상 종료 시에는 0회도 포함한 `summary` 스냅샷의 기록을 한 번 더 시도하며, 종료를 반복해도 다시 출력하지 않습니다. 이는 종료 시점의 스냅샷이며 주기적인 상태 알림이나 손실 없는 이벤트 이력은 아닙니다. 연결 수락 거부, 미완료·취소된 핸드셰이크, 카운터 상한 때문에 수치가 서로 일치하지 않을 수 있습니다. 최선 노력 방식의 Direct 기록에는 엔드포인트 주소·피어 ID·메시지 데이터·예외 원문을 포함하지 않습니다. 기록이 없다는 사실만으로 연결이 수락되지 않았다고 단정할 수 없습니다.
128
+
129
+ 방화벽 알림을 허용하기 전인 2026-10-27의 격리된 페어링 시험에서는 Homebrew Python 3.14.9 수신기를 사용할 때 양방향 모두 클라이언트가 TLS 단계까지 진행했지만 `peer_tls/timeout`을 반환했으며, 명시적으로 시험한 `0.0.0.0`도 해결책이 되지 않았습니다. 한 Mac의 python.org Python 3.13.7 수신기는 다른 Mac과 실제 페어링·인증된 probe를 완료했습니다. 반대 방향은 별도로 선택한 단기 private TCP 중계기로 loopback TLS 수신기에 연결했을 때만 성공했습니다. 이 중계기는 TLS 종단 처리를 수행하지 않고 TLS 바이트를 해석하지 않은 채 전달했습니다. 각각 다른 시험 구성이며 일반적인 지원 보장이나 macOS·Tailscale·Python의 원인 확정이 아닙니다. 관측 범위는 [#341](https://github.com/abruption/session-peer/issues/341)을 참고하십시오.
130
+
131
+ 사용자가 `Python.app`의 들어오는 연결을 허용한 뒤, 두 Mac 모두 이전에 실패했던 공개 v1.3.1의 Homebrew Python 3.14.9 런타임·tailnet 바인딩 주소·기기별 동일 포트에서 Direct 페어링과 인증된 probe를 완료했습니다. 새 시험 신원을 사용했으며 중계기·대체 인터프리터·네이티브 호출은 사용하지 않았습니다. 이 전후 비교는 이번 사례의 원인이 macOS 애플리케이션 방화벽의 승인 대기 상태였음을 뒷받침합니다. 진단 PR이 네트워크 경로를 고친 결과는 아닙니다.
132
+
133
+ [Apple의 방화벽 안내](https://support.apple.com/en-euro/guide/mac-help/mh34041/27/mac/27)는 알림에 응답하기 전까지 들어오는 연결 시도가 거부된다고 설명합니다. 의도한 수신기를 실행하다 이 창이 나타나면 소유자가 실제 Python 애플리케이션을 확인하고 허용 여부를 명시적으로 결정해야 합니다. 방화벽, 선택한 private 바인딩, 인증서를 고정한 TLS와 수신 정책은 유지하십시오. 이 권한은 네이티브 에이전트 접근을 허가하지 않습니다.
134
+
135
+ 실제 실행 중인 Python 이미지·배포판, macOS 버전, Tailscale 버전·배포 형태, 바인딩 주소, 자기 연결인지 원격 연결인지 기록하십시오. 방화벽 허용 표시만으로 전체 연결의 준비를 보장하지 않습니다. 리스너를 자동으로 `0.0.0.0`으로 넓히거나 방화벽·접근 정책·런타임을 바꾸지 말고, 중계 구성이 지원된다고 추정하지 마십시오. 불확실한 페어링 후에는 `pending` 상태와 `retryAllowed:false`를 유지하십시오. 별도 시험 환경의 결과는 해당 상태를 재시도하거나 지울 권한이 아닙니다.
136
+
137
+ 기록 수에는 상한이 있지만, 기존의 동기식 stderr 로거는 출력 대상이 막혔을 때 강제 시간 제한을 두지 않습니다.
138
+
123
139
  ## 설치
124
140
 
125
141
  양쪽 기기 모두 격리된 환경에서 PyPI의 session-peer v0.9.0 이상을 설치합니다:
@@ -0,0 +1,13 @@
1
+ # v1.3.1 유지보수 릴리스
2
+
3
+ 공개된 v1.3.0을 기준으로 2026-10-27에 준비했습니다. 이 문서는 소스 변경 범위를 설명합니다. 실제 공개 기록은 [GitHub Releases](https://github.com/abruption/session-peer/releases)와 [PyPI](https://pypi.org/project/session-peer/)에서 확인하십시오.
4
+
5
+ - #338 / #339: Node Control의 간접 의존성인 Zod를 4.6.5에서 4.6.7로 갱신합니다. [GHSA-mrhx-c7xc-m3w5](https://github.com/advisories/GHSA-mrhx-c7xc-m3w5)는 4.6.6 미만 버전에 해당합니다. 직접 의존성과 감사 정책은 그대로입니다. 고정된 의존성의 보안 경고에 대응하는 수정이며, 운영 중인 엔드포인트에서 악용 가능한지는 평가하거나 재현하지 않았습니다.
6
+ - #334 / #335: 별도 스킬 저장소의 소스 `176dc0dab619f074dbfc94de7e01f9a02a052f79`에서 가져온 호환 스킬 v0.4.0을 바이트 변경 없이 포함합니다. SHA-256은 `debedd472e3b0c0c6844fb63f7fb2f17cb6c6cc8c3e981e9afd2531a35327af7`입니다. 최소 런타임은 0.9.1, 문서의 CLI 기능 기준은 1.3.0이며, 수신 측 `codexBin`의 최소 버전은 여전히 1.0.1입니다. 독립 실행형 릴리스의 스킬 자산은 별도로 관리되는 스킬 설치본을 갱신하지 않습니다.
7
+ - #336 / #337: 네 언어 README에 PyPI 누적 다운로드 수를 표시합니다.
8
+
9
+ Python CLI의 동작·의존성·지원 플랫폼·실험적 handoff 제한은 버전 식별자를 제외하면 v1.3.0과 같습니다. Node Control 소스는 Python wheel과 sdist에 포함되지 않습니다. Python 패키지를 발행하거나 설치해도 실행 중인 Control 서비스에는 수정이 적용되지 않습니다. Node 수정 적용에는 별도로 승인된 Control 소스·의존성 갱신과 재시작이 필요합니다.
10
+
11
+ 의존성 수정의 로컬 검증: 새 npm 설치, 타입 검사·빌드, Control 테스트 123개, Node/Python 루프백 연동 테스트 11개가 통과했고 런타임·전체 npm 감사에서 보고된 취약점은 0건입니다. 이는 시험 환경의 결과이며 실제 OAuth·네이티브 에이전트·운영 서비스 검증은 아닙니다. 발행 전에 최종 PR 리뷰, 보호된 main의 CI, 의존성 감사, 재현 가능한 산출물과 신규 설치 검증을 완료해야 합니다.
12
+
13
+ 새 v1.3.1 태그와 검증된 불변 자산을 사용합니다. 기존 v1.3.0 자산은 유지합니다. 네이티브 세대 식별·handoff·저장소·시작 시점 수락 조건(#180/#181/#268/#304/#306/#307)과 Side Session·steering 연구는 별도 과제입니다. 전송 결과가 unknown이면 자동 재전송을 허용하지 않습니다.
@@ -0,0 +1,37 @@
1
+ # v1.3.2 유지보수 릴리스
2
+
3
+ 공개된 v1.3.1을 기준으로 2026-10-28에 준비했습니다. Direct 기능 소스 기준은 `dac1c30b1553136b9379be0c6d94eef34ccbad51`이며 최종 통합 릴리스 커밋은 아닙니다. 이 문서는 준비 범위를 설명하며, 실제 공개 기록은 [GitHub Releases](https://github.com/abruption/session-peer/releases)와 [PyPI](https://pypi.org/project/session-peer/)에서 확인하십시오.
4
+
5
+ PR #345의 게이트 수정 소스 기준은 `a68c6cf16c234cd3fe72926e519e4178c093081a`입니다. 병합된 PR #347 이후 통합 준비 기준은 버전 준비 커밋 이전의 `ef7748a78e6b466f67074708f5c14decf37f31d7`입니다. 최종 발행 증거에서 릴리스 커밋을 별도로 식별합니다.
6
+
7
+ ## 변경 사항
8
+
9
+ - #341 / #342: 수신기 시작 출력의 `ready:true`를 유지하고 `directReadyConfirmed:false`를 추가해 로컬 리스너 구성과 원격 도달 가능성을 구분합니다. TLS 완료만으로 페어링·네이티브 대상 접근·ACK를 증명하지 않습니다.
10
+ - 명시적으로 선택하는 `--diagnostic-events`에 Direct 콜백·TLS 관측과 상한이 있는 수신기별 `accepted`, `tlsCompleted`, `tlsFailed` 카운터를 추가합니다. `accepted`와 `peer_tls` 단계는 합계로 60초에 최대 2개를 기록하며, TLS 성공·실패는 후자의 단계 제한을 공유합니다. 정상 종료 시에는 0회도 포함한 `summary`의 기록을 1번 더 시도하고, 종료 처리를 반복해도 재시도하지 않습니다. 고정 필드에는 주소·피어/세션 ID·메시지 데이터·예외 원문을 포함하지 않습니다. 로깅 실패는 원래 핸드셰이크 예외를 대체하지 않습니다. 기존의 동기식 stderr 출력에는 출력 대상이 막혔을 때 강제 시간 제한이 없습니다.
11
+ - 실험용 TCP 프로브는 Python 3.9/3.10의 `asyncio.TimeoutError`를 처리하며, Python 3.9/3.13에서 응답이 지연되는 루프백 회귀 시험을 수행했습니다. 수동 두 Mac·tailnet 실험은 CI와 별개이며 `experiments/`는 wheel/sdist에서 제외됩니다. [실험 기록](https://github.com/abruption/session-peer/blob/dac1c30b1553136b9379be0c6d94eef34ccbad51/experiments/macos-direct-listener/README.md)을 참고하십시오.
12
+ - #343 / #345: Node Control의 `better-auth`와 `@better-auth/core` 고정 버전을 1.7.5에서 1.7.7로 올리고 어댑터·telemetry 버전도 맞춥니다. 업스트림은 [GHSA-965c-763c-88jm](https://github.com/advisories/GHSA-965c-763c-88jm)(치명적), [GHSA-r4xp-prcw-77qf](https://github.com/advisories/GHSA-r4xp-prcw-77qf)(높음), [GHSA-44jh-23m7-hpcf](https://github.com/advisories/GHSA-44jh-23m7-hpcf)(낮음)의 최초 수정 버전을 1.7.7로 명시합니다.
13
+ - #344 / #345: 보호된 읽기 구간에 들어간 뒤에만 READY를 알리도록 SIGINT 시험을 동기화합니다. macOS Python 3.13에서 관측한 시그널 종료(-2)와 기대한 처리 후 종료 130 사이의 경합에 대응하며, 제품의 시그널 동작이 아닌 시험 동기화를 바꿉니다. 고정 sleep이나 약화된 단언으로 이 경계를 대체하지 않으며, 과거 CI 실패의 정확한 원인이 확정된 것은 아닙니다.
14
+
15
+ - #346 / #347: 선택적 MCP SDK 요구 사항을 `mcp>=1.30,<2`로 올립니다. 코어의 Python 3.9 하한과 MCP의 Python 3.10+ 마커는 그대로입니다. POSIX CI는 Mac/Linux, Python 3.10/3.13, 정확한 하한 `1.30.0` 또는 최신 호환 `1.x`의 SDK 프로필 2개를 조합한 8개 셀로 구성합니다. 간접 의존성은 일반 규칙으로 해석하며, 하한 프로필이 모든 패키지의 최소 버전을 검증하는 것은 아닙니다. 설치된 SDK의 표준 입출력(`stdio`) 계약 검사는 HTTP/OAuth 노출이나 악용 가능성을 입증하지 않습니다.
16
+
17
+ PR #345의 두 게이트 수정은 별도로 검토된 커밋으로 병합됐고, PR #347의 MCP 하한·CI 프로필도 병합됐습니다. 검토한 PR #347 커밋은 MCP 8개 셀을 포함한 검사 32개를 통과했으며, 자동 Codex 코드·보안 리뷰도 별도로 지적 없이 완료됐습니다. 이 PR 결과는 보호된 최종 main 검증이나 발행 증거를 대신하지 않습니다. 릴리스 준비 PR 병합 전 현재 main 검사의 성공을 확인해야 합니다.
18
+
19
+ ## 원인과 호환성 범위
20
+
21
+ 소유자가 Python.app의 들어오는 연결을 허용한 뒤, 두 Mac 모두 공개된 원래 v1.3.1의 Homebrew Python 3.14.9 런타임, 각 Mac에서 같은 tailnet 바인딩 주소와 포트로 Direct 페어링과 인증된 probe를 완료했습니다. 새 시험 신원을 사용했고 네이티브 호출은 0회였습니다. 중계기나 대체 인터프리터는 필요하지 않았습니다. 이 결과는 이번 사례의 차단 원인이 macOS 애플리케이션 방화벽의 승인 대기였음을 뒷받침합니다. 진단 코드가 연결을 복구한 것은 아닙니다. 이전의 연결 실패·코드 서명·중계 대조시험은 과거 실측 기록이며 필수 해결책이나 macOS·Tailscale·Python의 보편적인 원인 판정이 아닙니다.
22
+
23
+ Direct의 바인딩, TLS·인증 검사, 시간 제한, 페어링 상태와 자동 재시도 금지 동작은 유지합니다. 방화벽·접근 정책·런타임 선택을 자동화하지 않으며 새 플랫폼이나 일반 ACK 지원을 추가하지 않습니다. 기존 사용자의 pending 상태는 재시도하거나 초기화하지 않았습니다. 네이티브 세대 식별·handoff·저장소·시작 시점 수락 조건(#180/#181/#268/#304/#306/#307)과 Side Session·steering 연구는 별도 과제입니다.
24
+
25
+ 선택적 Relay 수신기 모듈의 변경은 wheel/sdist에 포함되며 독립 실행형 `session_peer.py`에 내장되지 않습니다. 진단 기능을 적용하려면 수신기 자체의 패키지·환경을 갱신하고 해당 프로세스를 명시적으로 재시작해야 합니다. 독립 실행 파일만 갱신해서는 이 모듈이 갱신되지 않습니다. 이번 발행에서는 운영 갱신이나 재시작을 수행하지 않습니다.
26
+
27
+ 검토한 Control 소스는 SQLite와 `bearer`, `deviceAuthorization` 플러그인을 사용하며, 권고문에 나온 Magic Link/OAuth Proxy/PostgreSQL 경로는 사용하지 않습니다. 운영 환경의 악용 가능성은 입증하지 않았습니다. Node Control 의존성 수정은 Python wheel/sdist에 포함되지 않으며 별도로 승인된 서비스 배포가 필요합니다. 업스트림의 OAuth 검증 식별자 접두어 변경을 검토하고, 검증 저장소를 공유하는 서버들의 갱신을 조율하십시오. 업데이트 뒤 진행 중이던 OAuth 로그인은 처음부터 다시 시작해야 할 수 있습니다. 이 준비에서는 운영 배포·세션 취소·데이터 마이그레이션을 수행하지 않습니다.
28
+
29
+ 호환 스킬은 v0.4.0, 최소 런타임 0.9.1 / 문서의 CLI 기능 기준 1.3.0을 유지하며 수신 측 `codexBin`의 최소 버전은 1.0.1입니다. 변경되지 않은 SHA-256은 `debedd472e3b0c0c6844fb63f7fb2f17cb6c6cc8c3e981e9afd2531a35327af7`입니다. 런타임 발행은 별도로 관리되는 스킬을 갱신하거나 실행 중인 서비스를 배포하지 않습니다.
30
+
31
+ ## 릴리스 검증
32
+
33
+ 게이트 수정의 로컬 검증에서는 Control 테스트 123개, Node/Python 연동 테스트 11개, 취약점 0건을 보고한 의존성 감사가 기록됐고, Python 3.9/3.13 각각의 stdin 테스트 17개와 통제된 시그널 시도 400회도 통과했습니다. 이 로컬 결과는 보호된 main의 CI나 실제 OAuth 수락 시험을 대신하지 않습니다.
34
+
35
+ 로컬 Mac MCP 검증은 SDK·Python 프로필 4개 각각에서 MCP 테스트 28개를 통과했고, 의존성 감사에서 보고된 취약점은 0건이었습니다. 현재 문서 검사도 69개를 통과했습니다. 이 로컬 결과는 CI 매트릭스 8개 셀, 최종 main 검사나 HTTP/OAuth 수락 시험을 대신하지 않습니다.
36
+
37
+ #342의 검증 기록에는 Relay 테스트 354개, 문서 테스트 65개, Python 3.9/3.13에서 시험한 프로브 회귀 테스트 1개가 포함됩니다. 이는 구현 검증 자료이며 이번 준비의 새로운 네이티브 에이전트 수락 시험은 아닙니다. 최신 준비 리뷰, 보호된 main의 CI, 의존성 감사, 생성기 일치, 재현 가능한 산출물과 신규 설치 검증을 완료해야 합니다. 준비가 성공한 뒤에는 `SHA256SUMS`와 `release-provenance.json`을 포함한 불변 자산 7개 및 해당 자산의 인증된 attestation을 정확한 태그·소스와 대조한 후 공개하십시오. 사람이 수행하는 필수 PyPI 환경 승인은 유지합니다. 이 준비는 기존 v1.3.1 자산이나 운영 설치본을 교체하지 않습니다.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Install with Python 3.10 or later: `pipx install 'session-peer[mcp]'` (or install the extra in an isolated venv). The dependency-free Python 3.9 CLI and `install.sh` remain supported. The shell installer does not install MCP dependencies. On Python 3.9 the MCP entry point reports that Python 3.10+ is required.
4
4
 
5
+ The optional extra requires MCP SDK `mcp>=1.30,<2`. This raises the dependency floor past upstream 1.x security fixes; it does not establish an exploitable issue in this stdio-only server. HTTP transports, OAuth server paths and MCP client paths are not enabled by this change. Existing environments need an explicit package upgrade; changing the manifest does not update an installed SDK.
6
+
5
7
  Start `session-peer-mcp --config /absolute/path/policy.json`. Without a policy the server allows only local listing, using the launching environment's Codex home. A supplied policy replaces defaults. Example:
6
8
 
7
9
  ```json
@@ -42,7 +44,9 @@ A shared MCP process cannot reliably identify the invoking thread. Messages iden
42
44
 
43
45
  Run `python -m unittest discover -s tests -v` with and without the MCP extra. Optional tests start a real stdio MCP server and exercise initialization, schemas, policy rejection and CLI partial failures without model credentials. Test both wheel and sdist installs. Live checks must record Codex version, OS and host approval settings; UDS access is environment-dependent and is not an approval-bypass promise. Use dedicated test sessions for messages.
44
46
 
45
- Official references: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk).
47
+ CI tests the exact SDK floor `mcp==1.30.0` and the latest compatible 1.x separately on macOS/Linux with Python 3.10/3.13. Both profiles run the stdio/policy/timeout/cancellation/owned-child tests and audit their resolved runtime dependency graphs, retaining versions and reports. Transitive dependencies resolve normally; this is not a test of every transitive package's minimum version. The pinned build/audit requirements are installed outside the runtime environment; the audited environment also includes its `pip`/`setuptools` bootstrap packages. Existing latest-resolution and release audits remain required.
48
+
49
+ Official references: [Codex MCP](https://developers.openai.com/codex/extend/mcp), [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk). [SDK 1.30.0](https://pypi.org/pypi/mcp/1.30.0/json), [GHSA-84m7-p3x7-pcfv](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-84m7-p3x7-pcfv), [GHSA-fmmv-w9g8-j3gc](https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-fmmv-w9g8-j3gc).
46
50
 
47
51
  ### Non-interactive client approvals
48
52