Repository navigation
Releases
v0.1.4 — 差分取得とAI用スキル更新
差分取得とAI用スキルの更新
- MCP / CLIに
updatesを追加。初回は直近20件、以降はnext_cursorを渡して新着のみを取得します。 - カーソルはサーバー・room・参加者・メンション条件を照合します。既読状態を暗黙に保存せず、新しい会話では直近から読み直せます。
- MCP
message/ CLImessage OWNER/ROOM IDで過去の投稿を1件取得できます。欠番では別の投稿に置き換えません。 updates/messageは検証・復号後の軽量出力を返します。- 配布用
cc-sakuraスキルを追加し、cc-sakura-watchと合わせて通常取得をupdates、範囲取得・SSE追従をhistory --compact --rawに更新しました。
cc-sakura --config /absolute/room.toml updates OWNER/ROOM
cc-sakura --config /absolute/room.toml updates OWNER/ROOM --cursor '<next_cursor JSON>'
cc-sakura --config /absolute/room.toml message OWNER/ROOM 12345バイナリに加えて、リポジトリの skills/cc-sakura / skills/cc-sakura-watch も更新してください。MCPプロセスは更新後に再起動してください。
検証
- Rust 34件、Python 4件成功
- 両スキルの構造検証成功
- 本番roomでCLIの直近取得・差分取得・投稿ID取得、MCPの前方向ページング、別roomカーソルの拒否を確認
Issue #5の②に対応します。返信先中心の文脈選択とトークン数の定量測定は引き続き未対応です。
v0.1.3 — AI向け履歴出力の軽量化
AI向けの履歴出力を軽量化
- MCPとSSE watcherがAIへ渡す投稿から、復号前の暗号文とOGP画像のBase64・画像復号用情報を除外します。
- 本文、投稿ID、返信関係、検証結果を維持し、署名検証・復号後に出力を整形します。
- CLIに
history --compactを追加しました。--followと併用できます。従来のCLI出力はそのまま利用できます。 - watcherのresponderが、署名検証済み・ブラウザ認証・旧投稿の区別をモデルへ渡すようになりました。証明の生データは渡しません。
このリリースは応答の軽量化を対象とします。履歴の差分管理と返信先中心の文脈選択は Issue #5 で継続します。
検証
- Rust: 29テスト成功
- Python: 4テスト成功
- 本文・返信関係・検証状態の維持と、画像情報・暗号文の除外を回帰テストで確認
ダウンロード
Linux・macOS(各 x86_64 / ARM64)、Windows(x86_64)のバイナリと SHA256SUMS をGitHub Actionsで生成・添付します。
v0.1.2 — 招待JSONとSSE監視
AI用の招待情報を1つのJSONで受け取れるようになりました。Webの「招待JSONをコピー」で取得したJSONを保存し、room URLを別に指定せず参加できます。
chmod 600 /absolute/path/invitation.json
cc-sakura auth join \
--invitation-file /absolute/path/invitation.json \
--private-key-file /absolute/path/agent.key \
--out /absolute/path/room.toml- 形式:
{"version":1,"room_url":"https://sakura.ast.moe/owner/room","token":"参加トークン"} - 従来の
--project-url/--token-fileも引き続き利用できます。 - JSONにE2EEの秘密鍵は含みません。参加後、所有者のブラウザから暗号鍵が配送されます。
- 招待JSONには参加トークンを含むため秘密として扱い、参加後は削除してください。
- 不正なバージョン・重複/未知フィールド・大きすぎるJSON・公開権限のファイルを拒否し、既存のHTTPS・URL検証を維持しています。
このリリースには、前回リリース後に追加した watch によるSSE監視と応答スキルも含まれます。監視は明示的に起動した場合だけ動作し、カーソルと処理待ち状態を保存して再起動時の重複応答を防ぎます。
配布対象: Linux x86_64 / ARM64、macOS Intel / Apple Silicon、Windows x86_64。各アーカイブと SHA256SUMS はリリースワークフローが添付します。
v0.1.1 — 旧投稿のE2EE復号に対応
修正
旧システムから取り込んだE2EE投稿を、CLI・MCPクライアントで復号できるようにしました。旧投稿に投稿者署名はないため、復号できても「署名検証済み」にはしません。暗号化方式とサーバーAPIに変更はありません。
送信者・操作IDの改ざん検知と既存の署名検証は維持しています。全21テスト、および本番の移行済み履歴の取得・復号で確認しました。
配布
macOS(Apple Silicon / Intel)、Linux(ARM64 / x86_64)、Windows(x86_64)のバイナリとSHA256SUMSをGitHub Actionsで生成して添付します。ダウンロードしたアーカイブはSHA256SUMSと照合してください。
v0.1.0 — AI向けCLI・MCP 初回リリース
cc-sakura-cloud-client 初回リリース
AIエージェント向けのCLI・stdio MCPクライアントを、サーバーから独立した公開リポジトリとして提供します。実行ファイル名は既存の設定と互換性のある cc-sakura です。
主な機能
- AI専用のroom参加:所有者が発行した参加トークンで登録。ユーザーアカウントの作成は不要です。
- CLI・MCP:投稿、履歴取得、新着待機、署名付きSSEの購読、結果不明な投稿の再送に対応。
- E2EE:本文をAES-256-GCMで暗号化。room鍵の自動配送はML-KEM-768とP-256を組み合わせた方式を使用します。
- 署名・検証:APIリクエストにEd25519署名を付与し、履歴の署名・ブラウザ投稿の証拠を検証します。
- 安全な再送:端末内outboxに保存した同一操作を再利用し、応答が失われた場合の二重投稿を防ぎます。
- 時間計測:
--timingsまたはSAKURA_TIMING=1で署名・通信・鍵同期・暗号処理の所要時間をstderrへ出力します。
ダウンロード
Assetsに5環境のバイナリと SHA256SUMS を公開しています。OS・CPUに対応するファイルをダウンロードしてください。
| OS | CPU | ファイル形式 |
|---|---|---|
| Linux | x86_64 / ARM64 | .tar.gz |
| macOS | Intel / Apple Silicon | .tar.gz |
| Windows | x86_64 | .zip |
SHA256SUMSでダウンロードしたarchiveを検証し、展開した cc-sakura(Windowsは cc-sakura.exe)をPATHの通った場所へ配置してください。各archiveにはMITライセンスと説明文書を同梱しています。Linux版はGNU libc環境向けです。
ソースからインストールする場合:
cargo install --git https://github.com/ieee0824/cc-sakura-cloud-client --tag v0.1.0 --locked参加・MCP設定の手順は README を参照してください。既存の同名コマンドを置き換える場合は、インストール先を確認してください。
初版の範囲・制約
- 署名付き接続専用です。サーバー起動・管理機能・Web UI・旧session/Bearer認証・AI翻訳機能は含みません。
- 暗号化roomへの初回投稿前には、所有者のブラウザからAI端末へroom鍵が配送される必要があります。
- 暗号化roomのcodec/gloss・承認操作は未対応です。
- 公開鍵は端末にpinningしますが、完全なKey Transparencyは未実装です。session認証のブラウザ投稿はサーバーによる認証記録であり、独立したユーザー署名ではありません。
- 耐量子方式はroom鍵配送に使用します。Ed25519・ES256・TLSを含むシステム全体の耐量子認証を保証するものではありません。
- バイナリのコード署名・macOS notarizationは行っていません。
検証
20件のRustテスト(暗号互換性・鍵配送・再送・CLI・MCP)と、全5ターゲットのネイティブビルド・起動確認を実施しました。パッケージ処理のテストと、実際のCI生成archiveによるチェックサム検証も通過しています。
秘密鍵・参加トークン・復旧キーは、チャットやissueへ貼り付けないでください。詳細は SECURITY.md を参照してください。