session-peer 0.1.0-preview.0 → 0.1.0

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.
package/CONTRIBUTING.md CHANGED
@@ -35,6 +35,15 @@ npm run test:package
35
35
  npm audit
36
36
  ```
37
37
 
38
+ Tests live in `test/*.ts`. `npm test` builds declarations, runs strict test
39
+ type-checking, then executes the tests with Node's type-stripping flag (including
40
+ on Node 22.13). Release/repository automation remains JavaScript.
41
+ `npm run test:package` checks that the packed declarations resolve from a
42
+ separate TypeScript consumer. The package root exposes only pure protocol helpers
43
+ (`VERSION`, `VERSION_LINE`, `reply`, `envelope`); importing it does not run the CLI.
44
+ The npm TypeScript indicator requires publishing these declarations in a new
45
+ version; it does not retroactively alter `0.1.0-preview.0`.
46
+
38
47
  Python reference commit: `47c23713d0a2a3c11ebde6186afd8c43489b8b65`.
39
48
  CI checks it out separately. Python is a development oracle, never a runtime
40
49
  fallback. Match Node 22/24, macOS/Linux and the native dependency requirements.
package/README.ja.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
4
4
 
5
- <!-- docs-contract: preview-candidate; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
5
+ <!-- docs-contract: stable-release-source; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
6
6
 
7
7
  実行中の **Claude Code と Codex セッション**に、ローカルまたは SSH 経由でメッセージを送る TypeScript クライアントです。Node.js で動作し、Python は不要です。
8
8
 
9
- **プレビューのリリース候補であり、公開には別途承認が必要です。**パッケージ名は `session-peer`、CLI コマンドは **`session-peer`**。Relay サーバーやホスティングサービスは提供しません。
9
+ **0.1.0 安定版のリリースソースであり、公開には別途承認が必要です。**パッケージ名は `session-peer`、CLI コマンドは **`session-peer`**。Relay サーバーやホスティングサービスは提供しません。
10
10
 
11
11
  ## 機能と範囲
12
12
 
@@ -15,15 +15,15 @@
15
15
  - インストール済みの同じクライアントへの SSH 接続、構造化 Reply-To URI、JSON 出力。
16
16
  - 宛先や所有者が曖昧なら拒否。不確実な提出を自動再送しません。
17
17
 
18
- Windows、Relay 通信、MCP、wake/resume、非アクティブ queue、Antigravity、自動更新、暗黙の全エージェント検出、人間向けテキスト出力は未実装です。未対応コマンドは明示的に失敗します。汎用オーケストレーターではありません。
18
+ Relay 通信、MCP、wake/resume、非アクティブ queue、Antigravity、自動更新、暗黙の全エージェント検出、人間向けテキスト出力は未実装です。未対応コマンドは明示的に失敗します。汎用オーケストレーターではありません。
19
19
 
20
20
  ## 必要条件
21
21
 
22
- macOS / Linux、Node **22.x の 22.13 以上、または 24.x**。Node 26 は対象外です。ネイティブ flock 依存には対応する x64/arm64 バイナリが必要で、純 JavaScript パッケージではありません。Codex 送信には `codex`・`lsof`・`ps`、Claude にはアクセス可能な inbox を持つ稼働中 TUI が必要です。SSH は既存の鍵・ホスト信頼と、接続先の**同一バージョン**のクライアントを使います。
22
+ macOS / Linux / Windows native、Node **22.x の 22.13 以上、または 24.x**。Node 26 は対象外です。ネイティブロック依存には対応する x64/arm64 バイナリが必要で、純 JavaScript パッケージではありません。Codex 送信には `codex` が必要で、macOS/Linux では `lsof`・`ps` も必要です。Windows はネイティブロックと Restart Manager で所有者を確認します。Claude にはアクセス可能な inbox を持つ稼働中 TUI が必要です。SSH は既存の鍵・ホスト信頼と、接続先の**同一バージョン**のクライアントを使います。
23
23
 
24
24
  ## インストール
25
25
 
26
- 公式 npm リリースで所有権と来歴を確認するまでは、レジストリの `npm install -g session-peer` や `npx session-peer` を実行しないでください。現在はレビューしたソースをビルドし、必要ならローカル tarball をインストールします。
26
+ 検証済みの `0.1.0-preview.1` は公開されています。安定版の公開前にレビュー済みの `0.1.0` ソースを評価するには、ビルドして必要ならローカル tarball をインストールします。
27
27
 
28
28
  ```sh
29
29
  git clone https://github.com/abruption/session-peer-ts.git
@@ -33,16 +33,18 @@ npm run build
33
33
  node dist/cli.js --version
34
34
  npm pack --ignore-scripts
35
35
  # 任意のグローバルインストール前に PATH の既存コマンドを確認
36
- npm install --global --ignore-scripts ./session-peer-0.1.0-preview.0.tgz
36
+ npm install --global --ignore-scripts ./session-peer-0.1.0.tgz
37
37
  session-peer --version
38
38
  ```
39
39
 
40
- 期待値は `session-peer 0.1.0-preview.0 (typescript)`。`./...tgz` を省略しないでください。これは未確認のレジストリではなくローカル成果物を選択します。別途承認された npm 公開後も、パッケージ名とコマンド名は上記のままです。そのリリースのバージョン / dist-tag を確認してください。
40
+ 期待値は `session-peer 0.1.0 (typescript)`。`./...tgz` を省略せず、ローカルの候補を選択してください。安定版の承認と検証が完了するまでは、レジストリからのインストールに正確なバージョンを指定してください。
41
41
 
42
42
  ### 既存インストールとの共存
43
43
 
44
44
  インストール前後に `type -a session-peer` と `command -v session-peer` を確認します。他の実装も同名コマンドを提供するため、PATH 上の一つを選ぶか `node /absolute/path/dist/cli.js` を使ってください。`--force` で他の管理ツールのファイルを上書きしないでください。Python パッケージ・スキル・サービスを自動変更しません。削除は `npm uninstall --global session-peer` を使い、PATH を再確認します。
45
45
 
46
+ Windows PowerShell では `Get-Command session-peer -All` で既存コマンドを確認します。Python CLI を置換せずに試すには、`npm ci --ignore-scripts`、`npm run build`、`npm pack --ignore-scripts` の後、`npm install --prefix "$env:TEMP\session-peer-ts-candidate" --ignore-scripts .\session-peer-0.1.0.tgz` を実行し、`& "$env:TEMP\session-peer-ts-candidate\node_modules\.bin\session-peer.cmd" --version` で確認します。同じ prefix の `npm uninstall --prefix "$env:TEMP\session-peer-ts-candidate" session-peer` で削除します。
47
+
46
48
  ## 使い方
47
49
 
48
50
  ```sh
@@ -63,6 +65,8 @@ session-peer send --host user@machine --remote-bin /absolute/path/session-peer \
63
65
 
64
66
  既定のリモートコマンドは PATH の `session-peer`。絶対パスの `--remote-bin` で対応 Node を使うラッパーも指定できます。TypeScript マーカーと正確なバージョンを確認し、異なる実装は拒否します。BatchMode / StrictHostKeyChecking を使い、新しいホスト鍵の自動受理、リモートランタイムのインストール、Python フォールバックはしません。本文はリモートシェル引数ではなく JSON stdin で渡します。任意の `--ssh-opt`、IPv6 リテラル、Tailscale の正規名補完は非対応です。SSH alias / hostname を使ってください。片方向の接続成功は逆方向の接続を保証しません。
65
67
 
68
+ Windows の SSH 宛先では `--remote-platform win32` を指定し、必要に応じて `--remote-bin 'C:\absolute\path\session-peer.cmd'` を使います。既に認証済みの OpenSSH 制御ソケットは `--ssh-control-path /local/absolute/socket` で選択できます。ホスト鍵の確認や新しいログイン権限を回避しません。Windows ローカルの Codex home には完全な `C:\Users\...\.codex` パスを使います。既存の Python CLI は自動削除・置換しません。
69
+
66
70
  ### 返信
67
71
 
68
72
  `session-peer://v1/reply?...` URI を `--to` に指定できます。不明 / 重複フィールド、不正ホスト・エンコード、明示した経路との矛盾は拒否します。`--reply-address URI` は明示的な返信先を付けますが、経路を自動推測・検証しません。新しい返信先なしで返すときは `--no-reply-to`。有効な CODEX_THREAD_ID / CODEX_SESSION_ID は参考用 From 情報になり、`--no-from` で省略できます。不明な送信者は捏造しません。peer 情報は権限ではなく、URI をシェルとして実行しません。
@@ -89,20 +93,26 @@ npm run test:package
89
93
  npm audit
90
94
  ```
91
95
 
92
- Python は開発時の互換検証基準のみです(v1.0.2、`47c23713d0a2a3c11ebde6186afd8c43489b8b65`)。実行時依存ではありません。テストには C コンパイラーと lsof も必要です。CI は基準コミットを固定し macOS/Linux × Node 22/24 を確認します。SQLite・Unix inbox・実 lock の fixture と、専用実 TUI の証拠 [VALIDATION.md](VALIDATION.md) は別です。fixture 成功は ACK ではありません。パッケージ内容、反復 pack ハッシュ、新規インストール、アンインストールも検証します。ネイティブ依存の通常の install script は実行せず、検証した prebuilt 経路は `--ignore-scripts` を使います。SQLite 読み取り専用接続も WAL 共有メモリー管理に関与し得るため、スナップショットではありません。
96
+ Python は開発時の互換検証基準のみです(v1.0.2、`47c23713d0a2a3c11ebde6186afd8c43489b8b65`)。実行時依存ではありません。POSIX 契約テストには C コンパイラーと lsof も必要です。CI は基準コミットを固定し macOS/Linux/Windows × Node 22/24 を確認します。SQLite・Unix inbox・実 lock の fixture と、専用実 TUI の証拠 [VALIDATION.md](VALIDATION.md) は別です。fixture 成功は ACK ではありません。パッケージ内容、反復 pack ハッシュ、新規インストール、アンインストールも検証します。ネイティブ依存の通常の install script は実行せず、検証した prebuilt 経路は `--ignore-scripts` を使います。SQLite 読み取り専用接続も WAL 共有メモリー管理に関与し得るため、スナップショットではありません。
93
97
 
94
98
  [CONTRIBUTING.md](CONTRIBUTING.md)、[RELEASING.md](RELEASING.md)、[SECURITY.md](SECURITY.md) を参照してください。公開には別途承認が必要で、自動 npm 公開はありません。[MIT](LICENSE) ライセンスです。
95
99
 
96
100
  ## npm 公開後のインストール
97
101
 
98
- 公式リリースとレジストリの整合性・provenance 検証が完了した後にのみ、次の正確なプレビューバージョンをインストールしてください。安定版 `latest` ではありません。公開前は上記のローカル tarball を使います。
102
+ 公開済みプレビューは、レジストリの整合性・provenance・署名・新規インストールの検証に合格しました。安定版への昇格前は、バージョンを指定しないインストールが `latest` の旧 `0.1.0-preview.0` を選ぶため、次の正確なバージョンを指定してください。
103
+
104
+ ```sh
105
+ npm install --global --ignore-scripts session-peer@0.1.0-preview.1
106
+ ```
107
+
108
+ 別途承認された `0.1.0` の staging が公開・検証された後、安定版を正確なバージョンでインストールしてください。
99
109
 
100
110
  ```sh
101
- npm install --global --ignore-scripts session-peer@0.1.0-preview.0
111
+ npm install --global --ignore-scripts session-peer@0.1.0
102
112
  session-peer --version
103
113
  ```
104
114
 
105
- 手動ワークフローは初回のみ短期 bootstrap トークンを使用します。以後は Trusted Publisher OIDC で staging し、保守者が 2FA で承認します。staging 成功は公開完了ではありません。[RELEASING.md](RELEASING.md) を参照してください。
115
+ 手動ワークフローは Trusted Publisher OIDC で staging し、保守者が 2FA で承認します。staging 成功は公開完了ではありません。[RELEASING.md](RELEASING.md) を参照してください。
106
116
 
107
117
  ## 関連プロジェクト
108
118
 
package/README.ko.md CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
4
4
 
5
- <!-- docs-contract: preview-candidate; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
5
+ <!-- docs-contract: stable-release-source; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
6
6
 
7
7
  실행 중인 **Claude Code·Codex 세션에 로컬 또는 SSH로 메시지를 전달**하는
8
8
  TypeScript 클라이언트입니다. Python 없이 Node.js로 실행합니다.
9
9
 
10
- **프리뷰 릴리스 후보이며 발행에는 별도 승인이 필요합니다.** 패키지명은
10
+ **0.1.0 안정판 릴리스 소스이며 발행에는 별도 승인이 필요합니다.** 패키지명은
11
11
  `session-peer`, CLI 명령어는 **`session-peer`**입니다. Relay 서버나 호스팅
12
12
  서비스를 제공하는 프로젝트가 아닙니다.
13
13
 
@@ -19,24 +19,25 @@ TypeScript 클라이언트입니다. Python 없이 Node.js로 실행합니다.
19
19
  - 구조화된 Reply-To URI와 JSON 결과
20
20
  - 모호한 대상·확인할 수 없는 소유권은 거부하고, 불확실한 제출은 자동 재시도하지 않음
21
21
 
22
- Windows, Relay 전송, MCP, wake/resume, 비활성 세션 queue, Antigravity, 자동 업데이트,
22
+ Relay 전송, MCP, wake/resume, 비활성 세션 queue, Antigravity, 자동 업데이트,
23
23
  암묵적인 전체 에이전트 탐색, 일반 텍스트 출력은 미지원입니다. 미지원 옵션은 명시적으로
24
24
  거부하며 범용 오케스트레이터를 지향하지 않습니다.
25
25
 
26
26
  ## 요구사항
27
27
 
28
- macOS/Linux와 Node **22.x의 22.13 이상 또는 24.x**가 필요합니다. Node 26은
28
+ macOS/Linux/Windows native와 Node **22.x의 22.13 이상 또는 24.x**가 필요합니다. Node 26은
29
29
  미지원입니다. 네이티브 flock 의존성에 맞는 사전 빌드 바이너리(x64/arm64)가 필요하므로
30
- 순수 JavaScript 패키지는 아닙니다. Codex 전송에는 `codex`, `lsof`, `ps`와 저장된
30
+ 순수 JavaScript 패키지는 아닙니다. Codex 전송에는 `codex`가 필요하고 macOS/Linux에서는
31
+ `lsof`, `ps`도 필요합니다. Windows는 네이티브 잠금과 Restart Manager로 소유자를 확인합니다. 저장된
31
32
  스레드의 유일하고 안정적인 live writer가 필요합니다. Claude는 접근 가능한 inbox가
32
33
  있는 실행 중 TUI가 필요합니다. SSH에는 OpenSSH, 기존 키·호스트 신뢰 설정과 원격의
33
34
  **동일 버전 클라이언트**가 필요합니다.
34
35
 
35
36
  ## 설치
36
37
 
37
- 공식 npm 릴리스에서 소유권·출처가 확인되기 전에는 레지스트리의
38
- `npm install -g session-peer`나 `npx session-peer`를 실행하지 마세요.
39
- 현재는 검토한 소스를 빌드하고, 필요할 때 로컬 tarball을 설치합니다.
38
+ 검증된 `0.1.0-preview.1`은 공개됐습니다. 안정판 발행 전에 검토한
39
+ `0.1.0` 소스를 평가하려면 소스를 빌드하고 필요한 경우
40
+ 로컬 tarball을 설치합니다.
40
41
 
41
42
  ```sh
42
43
  git clone https://github.com/abruption/session-peer-ts.git
@@ -46,14 +47,13 @@ npm run build
46
47
  node dist/cli.js --version
47
48
  npm pack --ignore-scripts
48
49
  # 선택 사항: PATH에서 사용할 구현을 명시적으로 선택한 뒤 전역 설치
49
- npm install --global --ignore-scripts ./session-peer-0.1.0-preview.0.tgz
50
+ npm install --global --ignore-scripts ./session-peer-0.1.0.tgz
50
51
  session-peer --version
51
52
  ```
52
53
 
53
- 예상 출력은 `session-peer 0.1.0-preview.0 (typescript)`입니다. 설치 명령의
54
- `./...tgz`는 검증되지 않은 레지스트리 패키지가 아닌 로컬 산출물을 지정하므로 생략하지
55
- 마세요. 별도 승인된 npm 발행 이후에도 패키지명은 `session-peer`, 명령은
56
- `session-peer`로 유지하며 해당 릴리스의 버전·dist-tag 안내를 따릅니다.
54
+ 예상 출력은 `session-peer 0.1.0 (typescript)`입니다. 설치 명령의
55
+ `./...tgz`는 로컬 후보 산출물을 지정하므로 생략하지 마세요. 안정판의
56
+ 승인·검증이 끝나기 전까지 레지스트리 설치에는 정확한 버전을 지정하세요.
57
57
 
58
58
  ### 기존 설치본과 PATH
59
59
 
@@ -64,6 +64,18 @@ session-peer --version
64
64
  않습니다. npm 설치본 제거는 `npm uninstall --global session-peer`로 하고 PATH를
65
65
  다시 확인하세요.
66
66
 
67
+ Windows PowerShell에서는 `Get-Command session-peer -All`로 기존 설치본을 확인하세요.
68
+ Python CLI를 덮어쓰지 않으려면 격리 prefix에 설치·제거할 수 있습니다.
69
+
70
+ ```powershell
71
+ npm ci --ignore-scripts
72
+ npm run build
73
+ npm pack --ignore-scripts
74
+ npm install --prefix "$env:TEMP\session-peer-ts-candidate" --ignore-scripts .\session-peer-0.1.0.tgz
75
+ & "$env:TEMP\session-peer-ts-candidate\node_modules\.bin\session-peer.cmd" --version
76
+ # 이후 제거: npm uninstall --prefix "$env:TEMP\session-peer-ts-candidate" session-peer
77
+ ```
78
+
67
79
  ## 사용법
68
80
 
69
81
  ```sh
@@ -95,6 +107,12 @@ Node를 선택하는 래퍼를 지정할 수 있습니다. TypeScript 표시와
95
107
  Tailscale 정규 이름 보강은 미지원이므로 SSH 별칭·호스트명을 사용하세요. 정방향 접속이
96
108
  역방향 접속을 보장하지 않습니다.
97
109
 
110
+ Windows SSH 대상에는 `--remote-platform win32`를 명시하고, 원격 PATH에 없다면
111
+ `--remote-bin 'C:\절대\경로\session-peer.cmd'`를 지정하세요. 이미 인증된 OpenSSH
112
+ 제어 소켓은 `--ssh-control-path /로컬/절대/소켓`으로 선택할 수 있습니다. 이는 호스트 키
113
+ 검증을 우회하거나 새 로그인을 허용하지 않습니다. Windows 로컬 Codex 홈은
114
+ `C:\Users\...\.codex`처럼 전체 경로를 사용합니다. 기존 Python CLI는 자동 제거·교체하지 않습니다.
115
+
98
116
  ### 회신
99
117
 
100
118
  `session-peer://v1/reply?...` URI를 `--to`로 사용할 수 있습니다. 알 수 없거나 중복된
@@ -134,7 +152,7 @@ npm audit
134
152
 
135
153
  Python은 개발용 호환성 기준(v1.0.2 커밋
136
154
  `47c23713d0a2a3c11ebde6186afd8c43489b8b65`)일 뿐 런타임 의존성이 아닙니다. 테스트에는
137
- C 컴파일러와 lsof도 필요합니다. CI는 참조 커밋을 고정하고 macOS/Linux × Node 22/24를
155
+ C 컴파일러와 lsof는 POSIX 계약 테스트에 필요합니다. CI는 참조 커밋을 고정하고 macOS/Linux/Windows × Node 22/24를
138
156
  검사합니다. 임시 SQLite·Unix inbox·실제 잠금 fixture와 [VALIDATION.md](VALIDATION.md)의
139
157
  실제 TUI 증거는 구분합니다. fixture 통과는 ACK가 아닙니다. 패키지 내용·반복 빌드 해시·
140
158
  새 환경 설치·삭제도 검사합니다. 네이티브 의존성에는 설치 스크립트가 있지만 검증한 사전
@@ -147,17 +165,23 @@ C 컴파일러와 lsof도 필요합니다. CI는 참조 커밋을 고정하고 m
147
165
 
148
166
  ## npm 발행 후 설치
149
167
 
150
- 공식 릴리스와 레지스트리 무결성·provenance 검증이 완료된 뒤에만 아래 정확한
151
- 프리뷰 버전을 설치하세요. 안정판 `latest` 채널이 아닙니다. 공개 전에는 위의
152
- 로컬 tarball 설치를 사용합니다.
168
+ 공개 프리뷰는 레지스트리 무결성·provenance·서명·새 환경 설치 검증을
169
+ 통과했습니다. 안정판 승격 전 버전 미지정 설치는 `latest`로 표시된 이전
170
+ `0.1.0-preview.0`을 선택하므로 아래 정확한 버전으로 설치하세요.
171
+
172
+ ```sh
173
+ npm install --global --ignore-scripts session-peer@0.1.0-preview.1
174
+ ```
175
+
176
+ 별도 승인된 `0.1.0` staging의 공개와 검증이 끝난 뒤에는 안정판을 정확한
177
+ 버전으로 설치하세요.
153
178
 
154
179
  ```sh
155
- npm install --global --ignore-scripts session-peer@0.1.0-preview.0
180
+ npm install --global --ignore-scripts session-peer@0.1.0
156
181
  session-peer --version
157
182
  ```
158
183
 
159
- 수동 발행 워크플로우는 최초 1회만 단기 bootstrap 토큰을 사용합니다. 이후에는
160
- Trusted Publisher OIDC로 staging하고 유지관리자가 2FA로 승인합니다.
184
+ 수동 발행 워크플로우는 Trusted Publisher OIDC로 staging하고 유지관리자가 2FA로 승인합니다.
161
185
  staging 성공은 공개 완료가 아닙니다. [RELEASING.md](RELEASING.md)를 참고하세요.
162
186
 
163
187
  ## 관련 프로젝트
package/README.md CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
4
4
 
5
- <!-- docs-contract: preview-candidate; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
5
+ <!-- docs-contract: stable-release-source; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
6
6
 
7
7
  Send messages to running **Claude Code and Codex sessions**, locally or on
8
8
  another machine over SSH. This TypeScript client runs on Node.js without Python.
9
9
 
10
- **Preview release candidate; publication requires separate approval.** Package name:
10
+ **0.1.0 stable release source; publication requires separate approval.** Package name:
11
11
  `session-peer`. CLI command: **`session-peer`**. This project does not provide
12
12
  a Relay server or hosted service.
13
13
 
@@ -21,23 +21,24 @@ a Relay server or hosted service.
21
21
  - Refuse ambiguous targets and uncertain ownership; never automatically retry
22
22
  an uncertain submission.
23
23
 
24
- Not implemented: Windows, Relay transport, MCP, wake/resume, inactive queueing,
24
+ Not implemented: Relay transport, MCP, wake/resume, inactive queueing,
25
25
  Antigravity, automatic updates, implicit multi-agent discovery, or human text
26
26
  output. Unsupported commands fail explicitly; this is not a general orchestrator.
27
27
 
28
28
  ## Requirements
29
29
 
30
- macOS or Linux; Node **22.13+ within 22.x or 24.x**. Node 26 is not supported.
30
+ macOS, Linux or native Windows; Node **22.13+ within 22.x or 24.x**. Node 26 is not supported.
31
31
  The native flock dependency needs a matching prebuilt binary (x64/arm64); this
32
- is not a pure-JavaScript package. Codex sends also need `codex`, `lsof` and `ps`.
32
+ is not a pure-JavaScript package. Codex sends need `codex`; macOS/Linux also
33
+ need `lsof` and `ps`. Windows uses native lock and Restart Manager inspection.
33
34
  Claude needs a live TUI with an accessible native inbox. SSH requires OpenSSH,
34
35
  existing key/host trust and the **same client version** on the destination.
35
36
 
36
37
  ## Install
37
38
 
38
- Do **not** run registry `npm install -g session-peer` or `npx session-peer`
39
- until an official npm release verifies ownership and provenance. Today, build
40
- a reviewed source checkout and optionally install its local tarball:
39
+ The verified `0.1.0-preview.1` is public. To evaluate the reviewed `0.1.0`
40
+ source before stable publication, build it and optionally install its local
41
+ tarball:
41
42
 
42
43
  ```sh
43
44
  git clone https://github.com/abruption/session-peer-ts.git
@@ -47,14 +48,13 @@ npm run build
47
48
  node dist/cli.js --version
48
49
  npm pack --ignore-scripts
49
50
  # Optional global install: first check which session-peer your PATH selects.
50
- npm install --global --ignore-scripts ./session-peer-0.1.0-preview.0.tgz
51
+ npm install --global --ignore-scripts ./session-peer-0.1.0.tgz
51
52
  session-peer --version
52
53
  ```
53
54
 
54
- Expected: `session-peer 0.1.0-preview.0 (typescript)`. Keep the `./...tgz` path;
55
- it selects the locally built artifact, not an unverified registry package.
56
- After a separately approved npm release, the package will remain `session-peer`
57
- while the command remains `session-peer`; follow that release's version/dist-tag.
55
+ Expected: `session-peer 0.1.0 (typescript)`. Keep the `./...tgz` path to
56
+ select the locally built candidate. Use an explicit version for registry
57
+ installation until the stable release has been approved and verified.
58
58
 
59
59
  ### Existing installations
60
60
 
@@ -65,6 +65,18 @@ or call this build explicitly with `node /absolute/path/dist/cli.js`. Do not use
65
65
  is installed, removed or reconfigured automatically. To remove this npm install,
66
66
  run `npm uninstall --global session-peer` and recheck PATH.
67
67
 
68
+ On Windows PowerShell, inspect competing commands with
69
+ `Get-Command session-peer -All`. To avoid replacing the Python CLI, use an isolated prefix:
70
+
71
+ ```powershell
72
+ npm ci --ignore-scripts
73
+ npm run build
74
+ npm pack --ignore-scripts
75
+ npm install --prefix "$env:TEMP\session-peer-ts-candidate" --ignore-scripts .\session-peer-0.1.0.tgz
76
+ & "$env:TEMP\session-peer-ts-candidate\node_modules\.bin\session-peer.cmd" --version
77
+ # Later: npm uninstall --prefix "$env:TEMP\session-peer-ts-candidate" session-peer
78
+ ```
79
+
68
80
  ## Use
69
81
 
70
82
  ```sh
@@ -97,6 +109,14 @@ JSON stdin request, not remote shell arguments. Arbitrary `--ssh-opt`, IPv6
97
109
  literals and Tailscale canonical-name enrichment are not supported; use an SSH
98
110
  alias/hostname. Forward access does not establish reverse access.
99
111
 
112
+ For a Windows SSH destination, add `--remote-platform win32` and select a
113
+ Windows `--remote-bin 'C:\absolute\path\session-peer.cmd'` if needed. A previously
114
+ authenticated OpenSSH control socket can be selected with
115
+ `--ssh-control-path /absolute/local/socket`; this does not bypass host-key
116
+ verification or grant a new login. For local Windows Codex commands, use a full
117
+ `C:\Users\...\.codex` path for `--codex-home`. The Python CLI, if present,
118
+ is not removed or replaced by this client.
119
+
100
120
  ### Replies
101
121
 
102
122
  Use a `session-peer://v1/reply?...` URI as `--to`. Unknown/duplicate fields,
@@ -137,8 +157,9 @@ npm audit
137
157
 
138
158
  Python is only the development conformance oracle (v1.0.2 commit
139
159
  `47c23713d0a2a3c11ebde6186afd8c43489b8b65`), never a runtime dependency. Tests also
140
- need a C compiler and lsof. CI pins the reference and covers macOS/Linux × Node
141
- 22/24. Temporary SQLite, Unix inbox and real lock fixtures are distinct from
160
+ need a C compiler and lsof for the POSIX contract suite. CI pins the reference
161
+ and covers macOS/Linux/Windows × Node 22/24. Temporary
162
+ SQLite, Unix inbox and real lock fixtures are distinct from
142
163
  the dedicated real-TUI evidence in [VALIDATION.md](VALIDATION.md). A green fixture
143
164
  test is not an ACK. Package tests inspect contents, repeat-pack hashes, clean
144
165
  install and uninstall. The native dependency normally has an install script;
@@ -151,18 +172,25 @@ npm publish is enabled. Licensed under [MIT](LICENSE).
151
172
 
152
173
  ## npm release installation
153
174
 
154
- Only after the official release and registry integrity/provenance verification,
155
- install the exact preview below. It is not the stable `latest` channel. Before
156
- publication, keep using the local tarball instructions above.
175
+ The public preview passed registry integrity, provenance, signature and
176
+ fresh-install checks. Install it by exact version. Before stable promotion,
177
+ unversioned installs select the older `0.1.0-preview.0` marked `latest`:
178
+
179
+ ```sh
180
+ npm install --global --ignore-scripts session-peer@0.1.0-preview.1
181
+ ```
182
+
183
+ Only after the separately approved `0.1.0` stage is published and verified,
184
+ install the stable version by exact number:
157
185
 
158
186
  ```sh
159
- npm install --global --ignore-scripts session-peer@0.1.0-preview.0
187
+ npm install --global --ignore-scripts session-peer@0.1.0
160
188
  session-peer --version
161
189
  ```
162
190
 
163
- The manual workflow initially uses a short-lived bootstrap token. Later versions
164
- use Trusted Publisher OIDC staging and require a maintainer's 2FA approval;
165
- a staged upload is not a public release. See [RELEASING.md](RELEASING.md).
191
+ The manual workflow uses Trusted Publisher OIDC staging and requires a
192
+ maintainer's 2FA approval; a staged upload is not a public release. See
193
+ [RELEASING.md](RELEASING.md).
166
194
 
167
195
  ## Related project
168
196
 
package/README.zh-CN.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md)
4
4
 
5
- <!-- docs-contract: preview-candidate; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
5
+ <!-- docs-contract: stable-release-source; package=session-peer; bin=session-peer; node=22.13+/24; python-reference=1.0.2 -->
6
6
 
7
7
  向正在运行的 **Claude Code 和 Codex 会话**发送消息,支持本机和跨机器 SSH。这是运行于 Node.js 的 TypeScript 客户端,不需要 Python。
8
8
 
9
- **预览发布候选,正式上传需另行批准。**包名为 `session-peer`,CLI 命令为 **`session-peer`**。本项目不提供 Relay 服务器或托管服务。
9
+ **0.1.0 稳定版发布源码,正式发布需另行批准。**包名为 `session-peer`,CLI 命令为 **`session-peer`**。本项目不提供 Relay 服务器或托管服务。
10
10
 
11
11
  ## 功能与边界
12
12
 
@@ -15,15 +15,15 @@
15
15
  - 通过 SSH 调用远端已安装的同版本客户端,支持结构化 Reply-To URI 和 JSON 输出。
16
16
  - 目标或进程归属不明确时拒绝操作;不会自动重试结果不确定的提交。
17
17
 
18
- 未实现 Windows、Relay 传输、MCP、wake/resume、非活跃会话排队、Antigravity、自动更新、隐式多代理发现及面向人的文本输出。不支持的命令会明确失败;这不是通用编排器。
18
+ 未实现 Relay 传输、MCP、wake/resume、非活跃会话排队、Antigravity、自动更新、隐式多代理发现及面向人的文本输出。不支持的命令会明确失败;这不是通用编排器。
19
19
 
20
20
  ## 环境要求
21
21
 
22
- macOS 或 Linux;Node **22.x 中的 22.13 及以上,或 24.x**。不支持 Node 26。原生 flock 依赖需要匹配的 x64/arm64 预编译二进制,本包不是纯 JavaScript 实现。Codex 发送还需要 `codex`、`lsof`、`ps`;Claude 需要运行中的 TUI 及可访问的原生 inbox。SSH 使用已有密钥和主机信任,远端必须安装**同版本**客户端。
22
+ macOS、Linux 或 Windows native;Node **22.x 中的 22.13 及以上,或 24.x**。不支持 Node 26。原生锁依赖需要匹配的 x64/arm64 预编译二进制,本包不是纯 JavaScript 实现。Codex 发送需要 `codex`,macOS/Linux 还需要 `lsof`、`ps`;Windows 使用原生锁和 Restart Manager 验证所有者。Claude 需要运行中的 TUI 及可访问的原生 inbox。SSH 使用已有密钥和主机信任,远端必须安装**同版本**客户端。
23
23
 
24
24
  ## 安装
25
25
 
26
- 在正式 npm 发布确认包归属和来源之前,**不要**运行注册表安装 `npm install -g session-peer` 或 `npx session-peer`。目前请构建经审查的源码,并按需安装本地 tarball:
26
+ 已验证的 `0.1.0-preview.1` 已公开。稳定版发布前评估经审查的 `0.1.0` 源码时,请构建源码,并按需安装本地 tarball:
27
27
 
28
28
  ```sh
29
29
  git clone https://github.com/abruption/session-peer-ts.git
@@ -33,16 +33,18 @@ npm run build
33
33
  node dist/cli.js --version
34
34
  npm pack --ignore-scripts
35
35
  # 可选:全局安装前先检查 PATH 选择的现有命令
36
- npm install --global --ignore-scripts ./session-peer-0.1.0-preview.0.tgz
36
+ npm install --global --ignore-scripts ./session-peer-0.1.0.tgz
37
37
  session-peer --version
38
38
  ```
39
39
 
40
- 预期输出:`session-peer 0.1.0-preview.0 (typescript)`。保留 `./...tgz` 路径,确保安装的是本地构建产物,而非未验证的注册表包。将来另行批准 npm 发布后,包名和命令名仍如上所示,请按该次发布的版本 / dist-tag 安装。
40
+ 预期输出:`session-peer 0.1.0 (typescript)`。保留 `./...tgz` 路径以选择本地候选产物。在稳定版获批并完成验证之前,从注册表安装时请指定准确版本。
41
41
 
42
42
  ### 与已有安装共存
43
43
 
44
44
  安装前后用 `type -a session-peer` 和 `command -v session-peer` 检查实际执行项。其他实现也可能提供同名命令;请选择 PATH 上的一种,或显式运行 `node /absolute/path/dist/cli.js`。不要用 `--force` 覆盖其他管理器的文件。本包不会自动安装、删除或调整 Python 包、技能或服务。卸载使用 `npm uninstall --global session-peer`,随后再次检查 PATH。
45
45
 
46
+ 在 Windows PowerShell 中用 `Get-Command session-peer -All` 检查已有命令。为了不替换 Python CLI,可先执行 `npm ci --ignore-scripts`、`npm run build`、`npm pack --ignore-scripts`,再用 `npm install --prefix "$env:TEMP\session-peer-ts-candidate" --ignore-scripts .\session-peer-0.1.0.tgz` 安装到隔离目录。以 `& "$env:TEMP\session-peer-ts-candidate\node_modules\.bin\session-peer.cmd" --version` 验证,并可用 `npm uninstall --prefix "$env:TEMP\session-peer-ts-candidate" session-peer` 卸载。
47
+
46
48
  ## 使用
47
49
 
48
50
  ```sh
@@ -63,6 +65,8 @@ session-peer send --host user@machine --remote-bin /absolute/path/session-peer \
63
65
 
64
66
  默认远程命令是 PATH 中的 `session-peer`。绝对路径 `--remote-bin` 也可选择使用受支持 Node 的包装器。握手检查 TypeScript 标记及精确版本,不同实现会被拒绝。SSH 使用 BatchMode 和 StrictHostKeyChecking,不自动接受新主机密钥、不安装远程运行时,也不会退回 Python。消息通过 JSON stdin 传输,不放进远程 shell 参数。不支持任意 `--ssh-opt`、IPv6 字面量或 Tailscale 规范名补全,请使用 SSH 别名 / 主机名。正向访问不意味着反向访问已配置。
65
67
 
68
+ 对于 Windows SSH 目标,请指定 `--remote-platform win32`;若远端 PATH 中没有命令,再使用 `--remote-bin 'C:\absolute\path\session-peer.cmd'`。可用 `--ssh-control-path /local/absolute/socket` 选择已认证的 OpenSSH 控制套接字;这不会跳过主机密钥验证或授予新登录。Windows 本机的 Codex home 使用完整 `C:\Users\...\.codex` 路径。已有 Python CLI 不会被自动删除或替换。
69
+
66
70
  ### 回复
67
71
 
68
72
  可将 `session-peer://v1/reply?...` URI 用作 `--to`。未知 / 重复字段、不安全主机、错误编码及与显式路由的冲突都会被拒绝。`--reply-address URI` 添加显式回信地址,不自动推断或验证回程。回复时不附加新地址可用 `--no-reply-to`。有效的 CODEX_THREAD_ID / CODEX_SESSION_ID 可提供参考性 From 信息,`--no-from` 可省略;不会虚构未知发送者。peer 元数据不是授权,Reply-To URI 也不会作为 shell 文本执行。
@@ -89,20 +93,26 @@ npm run test:package
89
93
  npm audit
90
94
  ```
91
95
 
92
- Python 只用作开发时的兼容性基准(v1.0.2,`47c23713d0a2a3c11ebde6186afd8c43489b8b65`),不是运行时依赖。测试还需要 C 编译器和 lsof。CI 固定基准提交,覆盖 macOS/Linux × Node 22/24。临时 SQLite、Unix inbox、真实锁 fixture 与 [VALIDATION.md](VALIDATION.md) 中专用真实 TUI 的证据分开记录;fixture 通过不是 ACK。包测试检查文件清单、重复打包哈希、全新安装与卸载。原生依赖通常有安装脚本,已验证的预编译路径使用 `--ignore-scripts`。SQLite 只读连接仍可能参与 WAL 共享内存管理,不能视为快照。
96
+ Python 只用作开发时的兼容性基准(v1.0.2,`47c23713d0a2a3c11ebde6186afd8c43489b8b65`),不是运行时依赖。POSIX 契约测试还需要 C 编译器和 lsof。CI 固定基准提交,覆盖 macOS/Linux/Windows × Node 22/24。临时 SQLite、Unix inbox、真实锁 fixture 与 [VALIDATION.md](VALIDATION.md) 中专用真实 TUI 的证据分开记录;fixture 通过不是 ACK。包测试检查文件清单、重复打包哈希、全新安装与卸载。原生依赖通常有安装脚本,已验证的预编译路径使用 `--ignore-scripts`。SQLite 只读连接仍可能参与 WAL 共享内存管理,不能视为快照。
93
97
 
94
98
  参见 [CONTRIBUTING.md](CONTRIBUTING.md)、[RELEASING.md](RELEASING.md) 和 [SECURITY.md](SECURITY.md)。发布需单独批准,未启用自动 npm 发布。采用 [MIT](LICENSE) 许可证。
95
99
 
96
100
  ## npm 发布后的安装
97
101
 
98
- 仅在官方发布以及注册表完整性、provenance 验证完成后,安装以下精确预览版本。它不是稳定版 `latest`。公开前继续使用上述本地 tarball 安装。
102
+ 已公开的预览版通过了注册表完整性、provenance、签名及全新安装验证。稳定版升级前,未指定版本的安装会选中标记为 `latest` 的旧版 `0.1.0-preview.0`,因此请指定以下准确版本:
103
+
104
+ ```sh
105
+ npm install --global --ignore-scripts session-peer@0.1.0-preview.1
106
+ ```
107
+
108
+ 待另行批准的 `0.1.0` staging 获公开并验证后,再按准确版本安装稳定版:
99
109
 
100
110
  ```sh
101
- npm install --global --ignore-scripts session-peer@0.1.0-preview.0
111
+ npm install --global --ignore-scripts session-peer@0.1.0
102
112
  session-peer --version
103
113
  ```
104
114
 
105
- 手动工作流仅在首次发布时使用短期 bootstrap 令牌。以后通过 Trusted Publisher OIDC 上传至 staging,由维护者使用 2FA 批准。staging 成功不代表已经公开发布。参见 [RELEASING.md](RELEASING.md)。
115
+ 手动工作流通过 Trusted Publisher OIDC 上传至 staging,由维护者使用 2FA 批准。staging 成功不代表已经公开发布。参见 [RELEASING.md](RELEASING.md)。
106
116
 
107
117
  ## 相关项目
108
118