@a9n-shoji/rvw 0.1.1 → 0.2.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +39 -12
  3. package/dist/cli.mjs +486 -54
  4. package/dist/cli.mjs.map +4 -4
  5. package/dist/web/assets/DocumentViewer-CNgHpCuL.js +1560 -0
  6. package/dist/web/assets/WalkthroughViewer-BVB3ETHG.js +1 -0
  7. package/dist/web/assets/{abnfDiagram-N423BO3Z-Ck9r3vgI.js → abnfDiagram-N423BO3Z-0v-ndtqQ.js} +1 -1
  8. package/dist/web/assets/architecture-TIHT7OUA-BjGWtjPU.js +1 -0
  9. package/dist/web/assets/{architectureDiagram-T3A2C74G-CuKnSDyu.js → architectureDiagram-T3A2C74G-WSNJ-tZE.js} +1 -1
  10. package/dist/web/assets/{blockDiagram-VBNYF7ZC-BQg6daf-.js → blockDiagram-VBNYF7ZC-lmMbEUwI.js} +1 -1
  11. package/dist/web/assets/{c4Diagram-5PPSVZJV-DlH9a39M.js → c4Diagram-5PPSVZJV-BrN5YVV8.js} +1 -1
  12. package/dist/web/assets/channel-DkH22XO0.js +1 -0
  13. package/dist/web/assets/{chunk-2GRJ4B5K-BVLXBbte.js → chunk-2GRJ4B5K-gt2JPyrH.js} +1 -1
  14. package/dist/web/assets/{chunk-4I5QYGJK-DiwTdMc_.js → chunk-4I5QYGJK-Cg5GZ_-7.js} +1 -1
  15. package/dist/web/assets/{chunk-5RXB4S5H-DxlG3rKg.js → chunk-5RXB4S5H-BdhRGvxW.js} +1 -1
  16. package/dist/web/assets/{chunk-6Q2QTUOP-DOnYF_EB.js → chunk-6Q2QTUOP-B1DYWNVJ.js} +1 -1
  17. package/dist/web/assets/{chunk-7Z6QIM7H-e6n3pq6e.js → chunk-7Z6QIM7H-D2YImamZ.js} +1 -1
  18. package/dist/web/assets/{chunk-GF5L2VYU-FUD5NaJd.js → chunk-GF5L2VYU-CWtwL_CM.js} +1 -1
  19. package/dist/web/assets/{chunk-I66GZJ75-CgtIbVp9.js → chunk-I66GZJ75-DdoGlxMt.js} +1 -1
  20. package/dist/web/assets/{chunk-JQJVKLGR-m8efG8h-.js → chunk-JQJVKLGR-CVWAp3XP.js} +1 -1
  21. package/dist/web/assets/{chunk-KBJHAD2P-C0ildSCF.js → chunk-KBJHAD2P-BBacwg3J.js} +1 -1
  22. package/dist/web/assets/{chunk-NSK5VX7P-DJim9vRL.js → chunk-NSK5VX7P-1AsXiBV3.js} +1 -1
  23. package/dist/web/assets/{chunk-QR6OTTB3-D3ng5jSq.js → chunk-QR6OTTB3-DL2s5pNp.js} +1 -1
  24. package/dist/web/assets/{chunk-UBXNYLIW-r4FNgMUm.js → chunk-UBXNYLIW-mu3fkNQI.js} +1 -1
  25. package/dist/web/assets/{chunk-W5SLKNZC-BxwOtp_h.js → chunk-W5SLKNZC-BAwhMBBb.js} +1 -1
  26. package/dist/web/assets/{chunk-WRU74C26-DAa9M2Ku.js → chunk-WRU74C26-C7IeXZaP.js} +1 -1
  27. package/dist/web/assets/classDiagram-JCYQIIEL-C6Z4rmZR.js +1 -0
  28. package/dist/web/assets/classDiagram-v2-OCEON4UE-C6Z4rmZR.js +1 -0
  29. package/dist/web/assets/{cynefin-VYW2F7L2-D_MdPIfm.js → cynefin-VYW2F7L2-DNisGvNv.js} +1 -1
  30. package/dist/web/assets/{cynefinDiagram-MW4NZA55-BQ16VR2b.js → cynefinDiagram-MW4NZA55-BA27gOTz.js} +1 -1
  31. package/dist/web/assets/{dagre-VZM6K2ZE-BcYktfC7.js → dagre-VZM6K2ZE-vo_1YAuM.js} +1 -1
  32. package/dist/web/assets/{diagram-7IWD3JNH-BQ-4OKZa.js → diagram-7IWD3JNH-DLLdUj0_.js} +1 -1
  33. package/dist/web/assets/{diagram-B4RE2ZJO-C24yZ4GQ.js → diagram-B4RE2ZJO-BV0WyNA-.js} +1 -1
  34. package/dist/web/assets/{diagram-LBJQPF4R-wMs9ij7l.js → diagram-LBJQPF4R-DXxKSx2U.js} +1 -1
  35. package/dist/web/assets/{diagram-Q27KOJAE-CQR8qV1D.js → diagram-Q27KOJAE-DsQ2GzIK.js} +1 -1
  36. package/dist/web/assets/{diagram-UB23O5K3-D8Fm2CWy.js → diagram-UB23O5K3-DfjElFP1.js} +1 -1
  37. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-DctbWdRA.js → ebnfDiagram-BXEA7PRR-cYu0XV1a.js} +1 -1
  38. package/dist/web/assets/{erDiagram-JOGREHBK-CMXJzItT.js → erDiagram-JOGREHBK-DnsLBHaV.js} +1 -1
  39. package/dist/web/assets/eventmodeling-45OFAUF4-BUAcQ5NU.js +1 -0
  40. package/dist/web/assets/flowDiagram-UKHOOZJN-hAe9ojjP.js +1 -0
  41. package/dist/web/assets/{ganttDiagram-PKOTCBZU-B6UdI6h5.js → ganttDiagram-PKOTCBZU-CVD5gq3E.js} +1 -1
  42. package/dist/web/assets/{gitGraph-TEB2WS4Q-C7YUJfov.js → gitGraph-TEB2WS4Q-C_j0n-Kw.js} +1 -1
  43. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-CKIazrRX.js → gitGraphDiagram-DS77QQ5N-qACevJmW.js} +1 -1
  44. package/dist/web/assets/index-Coye1BY5.js +384 -0
  45. package/dist/web/assets/{index-B8_aim9s.css → index-DFdYNMZE.css} +1 -1
  46. package/dist/web/assets/{info-DKCQHKI2-Dj4QbgxZ.js → info-DKCQHKI2-Cmkbz3Yi.js} +1 -1
  47. package/dist/web/assets/{infoDiagram-6WML65LV-CkPZHoSH.js → infoDiagram-6WML65LV-CDrAem7M.js} +1 -1
  48. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-C1U-aqaM.js → ishikawaDiagram-WSZJBQD7-DXgCnFqW.js} +1 -1
  49. package/dist/web/assets/{journeyDiagram-NVQOT4AX-BFmnFTx5.js → journeyDiagram-NVQOT4AX-1KW-I7DV.js} +1 -1
  50. package/dist/web/assets/{kanban-definition-27J2QSJJ-C5KXffho.js → kanban-definition-27J2QSJJ-CCt75OuF.js} +1 -1
  51. package/dist/web/assets/{line-CPlnGb39.js → line-DQfkDi_r.js} +1 -1
  52. package/dist/web/assets/markdown-source-map-_dS1q5Dg.js +7 -0
  53. package/dist/web/assets/{mermaid-parser.core-CQYajAMQ.js → mermaid-parser.core-B7TMMtY0.js} +3 -3
  54. package/dist/web/assets/{mermaid.core-SFGI5XV8.js → mermaid.core-B93x-7Mk.js} +4 -4
  55. package/dist/web/assets/{mindmap-definition-FAOFIHXS-Dxek7WcS.js → mindmap-definition-FAOFIHXS-Dyt28V6S.js} +1 -1
  56. package/dist/web/assets/{packet-7NZHBO7P-CAR0tDyo.js → packet-7NZHBO7P-zQ0u35s3.js} +1 -1
  57. package/dist/web/assets/{pegDiagram-VL7TDLO6-CN_CBGXn.js → pegDiagram-VL7TDLO6-et0KHGIE.js} +1 -1
  58. package/dist/web/assets/{pie-RZYD4A2V-CAy1ZkLF.js → pie-RZYD4A2V-uur86LkQ.js} +1 -1
  59. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-Do--6qr_.js → pieDiagram-7S7Q4E2Y-c027WPTB.js} +1 -1
  60. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-_d72nP_y.js → quadrantDiagram-CIZ2JOQS-BtSV4E-0.js} +1 -1
  61. package/dist/web/assets/{radar-I7S5WNFK-D_NREiMx.js → radar-I7S5WNFK-B_g0VZMF.js} +1 -1
  62. package/dist/web/assets/{railroad-3IZDKUUU-DU7RDpQt.js → railroad-3IZDKUUU-VFLsM_Em.js} +1 -1
  63. package/dist/web/assets/railroad-abnf-AHOZXSZD-TVRi9_2L.js +1 -0
  64. package/dist/web/assets/railroad-ebnf-EBAXGLYW-B5B-JrS4.js +1 -0
  65. package/dist/web/assets/railroad-peg-LSFZ7HO6-CfIpa6ba.js +1 -0
  66. package/dist/web/assets/{railroadDiagram-AXF67PYL-DNZ982Bc.js → railroadDiagram-AXF67PYL-uOtnxRbQ.js} +1 -1
  67. package/dist/web/assets/{requirementDiagram-LRYGKXZP-BNEqDsk3.js → requirementDiagram-LRYGKXZP-DGSZAsj4.js} +1 -1
  68. package/dist/web/assets/{sankeyDiagram-W5VNT64P-BBdI8stM.js → sankeyDiagram-W5VNT64P-CCDk8Vxt.js} +1 -1
  69. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-3zzNyCI7.js → sequenceDiagram-SI44F4Z6-Ce-Jzdk5.js} +1 -1
  70. package/dist/web/assets/{stateDiagram-OKZ733FA-PtqkKvef.js → stateDiagram-OKZ733FA-BYpYzyEa.js} +1 -1
  71. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BJFG9cb2.js +1 -0
  72. package/dist/web/assets/{swimlanes-SLNWSIFB-CPWjF8YR.js → swimlanes-SLNWSIFB-BL-CUc6d.js} +1 -1
  73. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BS8L8fb1.js +8 -0
  74. package/dist/web/assets/{timeline-definition-Z64GVDOM-Cyh2AdbF.js → timeline-definition-Z64GVDOM-p9pkof_K.js} +1 -1
  75. package/dist/web/assets/{treeView-QDETBFTQ-zPmED5io.js → treeView-QDETBFTQ-dRhXTU9p.js} +1 -1
  76. package/dist/web/assets/{treemap-6X3UGDF4-Cd2gjC8X.js → treemap-6X3UGDF4-CZHe3dIh.js} +1 -1
  77. package/dist/web/assets/{vennDiagram-T6HMQDX7-BaNEKHnw.js → vennDiagram-T6HMQDX7-ipODJegx.js} +1 -1
  78. package/dist/web/assets/{wardley-OPB4EBWU-B5ry0Fo7.js → wardley-OPB4EBWU-CxHlVjkF.js} +1 -1
  79. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-BHvM4Wb0.js → wardleyDiagram-T6FBY63Y-YarkIncH.js} +1 -1
  80. package/dist/web/assets/{xychartDiagram-ELKLHX3M-Qgza2Rjo.js → xychartDiagram-ELKLHX3M-Cw1M-7a4.js} +1 -1
  81. package/dist/web/index.html +2 -2
  82. package/migrations/009_comment_watch.sql +30 -0
  83. package/package.json +1 -1
  84. package/skills/rvw/SKILL.md +84 -5
  85. package/skills/rvw/agents/openai.yaml +2 -2
  86. package/skills/rvw-walkthrough/SKILL.md +17 -8
  87. package/skills/rvw-walkthrough/references/walkthrough-authoring.md +105 -0
  88. package/skills/rvw-watch-comments/SKILL.md +175 -0
  89. package/skills/rvw-watch-comments/agents/openai.yaml +4 -0
  90. package/skills/rvw-watch-comments/scripts/watch-state.mjs +724 -0
  91. package/dist/web/assets/DocumentViewer-ERTovlNY.js +0 -1560
  92. package/dist/web/assets/MarkdownImagePlaceholder-BseUb-vG.js +0 -36
  93. package/dist/web/assets/WalkthroughViewer-4HaKxbeO.js +0 -2
  94. package/dist/web/assets/architecture-TIHT7OUA-9PYQORPB.js +0 -1
  95. package/dist/web/assets/channel-zAJ9N7Xu.js +0 -1
  96. package/dist/web/assets/classDiagram-JCYQIIEL-DW7PwlYE.js +0 -1
  97. package/dist/web/assets/classDiagram-v2-OCEON4UE-DW7PwlYE.js +0 -1
  98. package/dist/web/assets/eventmodeling-45OFAUF4-mByhu-2v.js +0 -1
  99. package/dist/web/assets/flowDiagram-UKHOOZJN-DTgITdYW.js +0 -1
  100. package/dist/web/assets/index-DAM-rdgA.js +0 -355
  101. package/dist/web/assets/railroad-abnf-AHOZXSZD-D0hTyA1H.js +0 -1
  102. package/dist/web/assets/railroad-ebnf-EBAXGLYW-DzkmoqWU.js +0 -1
  103. package/dist/web/assets/railroad-peg-LSFZ7HO6-u3hJ9iID.js +0 -1
  104. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BY3gjuqo.js +0 -1
  105. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DK-u00Uf.js +0 -8
package/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.0] - 2026-08-20
9
+
10
+ ### Added
11
+
12
+ - Agentが新しい未解決threadを安全なMarkdownで記録できる`comment.create` CLI capability
13
+ - Agentが既存post本文と関連commitを置き換えられる`comment.edit` CLI capability
14
+ - browserの戻る/進むで、review scopeやworkspace layoutを変えずに辿れるreading history
15
+ - PR commentを継続監視し、重複なく返信できる`rvw-watch-comments` Skill
16
+
17
+ ### Changed
18
+
19
+ - reviewerの目的とrepository固有の指示に合わせて説明を組み立てるWalkthrough authoring guide
20
+ - `rvw-watch-comments`がclaim直後に確認中replyを追加し、同じreplyを最終結果へ更新するよう改善
21
+
22
+ ### Fixed
23
+
24
+ - 不正なMermaidを含むcommentを表示すると、一時的なerror SVGがcomment外へ残りviewer下部を覆う問題
25
+
8
26
  ## [0.1.1] - 2026-08-17
9
27
 
10
28
  ### Fixed
package/README.md CHANGED
@@ -92,6 +92,7 @@ viewerはこの流れのために次を提供します。
92
92
  - `@pierre/vscode-icons`による全画面共通の言語/tooling file icon
93
93
  - ファイル名fuzzy検索、Gitによるrealtime全文fixed-string検索(case / whole-word、file grouping、行jump)
94
94
  - PR全体、PR本文、ファイル全体、行範囲、Walkthrough全体へのコメント
95
+ - コメントと返信のsafe GFM表示(repository内link/同一commit相対画像、表示専用Mermaidを含む)
95
96
  - 未解決/解決済み、返信、Outdated追跡
96
97
  - Agentへ渡す一件・一覧・複数選択した`rvw://comment/<uuid>`参照のコピー
97
98
  - Agentが提示したWalkthrough、exact code reference、選択可能なMermaid node
@@ -137,8 +138,9 @@ Agentは現在内容を読み、同じ`rvw://walkthrough/<uuid>`を更新して
137
138
 
138
139
  ## Codex / Claude Code Skills
139
140
 
140
- アプリ本体からローカルSkillをインストールします。一度のinstallで、コメント処理用の`rvw`と
141
- Walkthroughのpublish・改善・削除用の`rvw-walkthrough`が入ります。Skill名と内容はCodex / Claude Codeで共通で、
141
+ アプリ本体からローカルSkillをインストールします。一度のinstallで、コメント処理用の`rvw`、
142
+ Walkthroughのpublish・改善・削除用の`rvw-walkthrough`、新規コメント監視用の
143
+ `rvw-watch-comments`が入ります。Skill名と内容はCodex / Claude Codeで共通で、
142
144
  platform指定は配置先だけを選びます。
143
145
 
144
146
  ```bash
@@ -149,8 +151,8 @@ rvw skill status
149
151
 
150
152
  既定の配置先は次です。
151
153
 
152
- - Codex: `~/.agents/skills/rvw`、`~/.agents/skills/rvw-walkthrough`
153
- - Claude Code: `~/.claude/skills/rvw`、`~/.claude/skills/rvw-walkthrough`
154
+ - Codex: `~/.agents/skills/rvw`、`~/.agents/skills/rvw-walkthrough`、`~/.agents/skills/rvw-watch-comments`
155
+ - Claude Code: `~/.claude/skills/rvw`、`~/.claude/skills/rvw-walkthrough`、`~/.claude/skills/rvw-watch-comments`
154
156
 
155
157
  rvwがインストールしたSkillには同梱版digestを記録します。`skill status --json`と`doctor --json`は、
156
158
  管理済みの旧版なら`updateAvailable: true`、ローカル編集なら`locallyModified: true`、記録のない差異なら
@@ -173,12 +175,28 @@ rvw://comment/00000000-0000-4000-8000-000000000000
173
175
  rvw Skillを使って、https://github.com/owner/repository/pull/123 の未解決コメントを確認してください。
174
176
  ```
175
177
 
176
- Walkthroughを作る場合は、説明したい対象をセッションへ伝えて`rvw-walkthrough` Skillを使います。
177
- Skillは文書の見出しや説明順序を固定せず、セッションが作った説明をcommit固定のreference付きartifactとして
178
- 検証してpublishします。Walkthrough全体へのコメントから説明を改善する場合は、現在内容を取得して同じURIを
179
- 更新し、重複した「改訂版」を追加しません。
178
+ Agentにreview結果をRVWへ残してもらう場合は、対象PRとコメント作成を明示します。Agentはcommit済みの
179
+ exact sourceを確認し、通常の未解決threadを一件ずつ作成します。
180
180
 
181
- 二つのSkillはSQLiteを直接読まず、`rvw protocol --json`、`rvw comment ... --json`、
181
+ ```text
182
+ rvw Skillを使って、https://github.com/owner/repository/pull/123 をreviewし、見つけた指摘をRVWのコメントとして作成してください。
183
+ ```
184
+
185
+ Walkthroughを作る場合は、説明したい対象と必要な作成指示をセッションへ伝えて`rvw-walkthrough` Skillを使います。
186
+ Skillは明示された指示を優先し、未指定の作成判断だけを既定guideで補って、reviewerが変更または実装対象の
187
+ mental modelを作るための最初の読解経路を構成します。文書の見出しや説明順序は固定せず、commit固定の
188
+ reference付きartifactとして検証してpublishします。Walkthrough全体へのコメントから説明を改善する場合は、
189
+ 現在内容を取得して同じURIを更新し、重複した「改訂版」を追加しません。
190
+
191
+ 新規root commentとreplyを継続監視する場合は`rvw-watch-comments` Skillを起動します。全登録PRを
192
+ 約10秒間隔で監視し、起動前の既存未解決commentは処理しません。自分のPRのfix-and-pushを起動taskへ
193
+ 明示許可した場合だけ、live PR authorと起動時のGitHub loginが一致するPRで修正・test・commit・pushを
194
+ 行えます。fork PRではlive head repository、branch、OIDとpush先も一致させます。他人またはauthor不明の
195
+ PRは常にcode/GitHub read-onlyで調査します。batchをclaimすると各threadへ`🔎 確認中です…`を即時返信し、
196
+ 完了時は同じreplyを最終結果へ編集します。Skill同梱のtask-state toolがrepository外のSQLiteへcursor、
197
+ queue、retry、thread単位のstatus post、自己返信抑制をtransactionalに保存します。
198
+
199
+ 三つのSkillはSQLiteを直接読まず、`rvw protocol --json`、`rvw comment ... --json`、
182
200
  `rvw walkthrough get/update/publish/delete ... --json`、`rvw pr sync --stdin --json`だけを利用します。
183
201
  ローカルDBやrepositoryへアクセスできないCloud Agentは対象外です。
184
202
 
@@ -200,18 +218,22 @@ resetは対象PRのコメント、返信、コメント対象、Walkthrough、co
200
218
 
201
219
  ## CLI protocol
202
220
 
203
- 機械向けコマンドはstdoutへJSONだけを出します。
221
+ 機械向けコマンドはstdoutへJSONだけを出します。長時間の`comment watch`だけはRFC 7464 JSON text
222
+ sequenceを出します。
204
223
 
205
224
  ```bash
206
225
  rvw protocol --json
207
226
  rvw agent ping --json
208
227
  rvw agent status --json
209
228
  rvw pr refresh <PR_REF> --json
229
+ rvw comment create --stdin --json
210
230
  rvw comment list <PR_REF> --state unresolved --limit 50 --offset 0 --json
231
+ rvw comment watch [--after <CURSOR>] [--interval 10] --json-seq
211
232
  rvw comment get <COMMENT_URI> --json
212
233
  rvw comment get <COMMENT_URI> --include-pr-body --json
213
234
  rvw comment get <COMMENT_URI> --live --json
214
235
  rvw comment reply <COMMENT_URI> --stdin --json
236
+ rvw comment edit <COMMENT_URI> --post <POST_ID> --stdin --json
215
237
  rvw comment resolve <COMMENT_URI> --json
216
238
  rvw comment reopen <COMMENT_URI> --json
217
239
  rvw walkthrough get <WALKTHROUGH_URI> --json
@@ -227,6 +249,10 @@ rvw pr attach <PR_REF> --repository <PATH> --json
227
249
  stdinをcloseし、shellではpipe、quoted heredoc、input redirectionのいずれかを使います。起動済みの
228
250
  対話commandへJSONと改行だけを送るとEOF待ちになります。
229
251
 
252
+ `comment create`は登録済みPR、通常のcomment target、本文、任意のAgent名をstdin JSONで受け取り、
253
+ 未解決のroot threadを一件作成します。repository targetはexact commit、path、任意のinclusive line rangeを
254
+ 指定し、viewerと同じ文書・行検証を通ります。作成してもbrowserを開かず、tabやcommit選択を変更しません。
255
+
230
256
  `comment list`は未解決を既定として`unresolved` / `resolved` / `all`をページング列挙し、各threadの
231
257
  root post preview、post件数、最新head時点のOutdated判定を返します。`hasMore`なら`nextOffset`から
232
258
  続けて取得し、完全なthreadは`comment get`で読みます。listと通常の`comment get`はPR本文を省略し、
@@ -235,7 +261,7 @@ root post preview、post件数、最新head時点のOutdated判定を返しま
235
261
  `comment get`は最新PRのtitle、base/head、serviceが導出したplacement、対象commitのbounded source
236
262
  excerptを返すため、AgentはOID比較でOutdatedを推測しません。
237
263
 
238
- `comment get --live`はGitHubの現在値とcacheの差をread-onlyで確認し、DBを更新しません。`pr sync`はGitHub上の最新PR状態を取得し、任意の`commentUpdates`を同じSQLite transactionで反映します。保存先がdirtyでも同じrepositoryのcleanなworktreeを`--repository`で選べ、確認済みの未追跡fileだけは`--allow-untracked`で許可できます。local branchがGitHub headより単にbehindな場合や最終同期後にforce-pushされた場合はcheckoutを変更せず同期します。`pr sync`と`comment reply`は冪等ではないため、結果が不明な場合はコメントを再取得してから再試行してください。
264
+ `comment get --live`はGitHubの現在値とcacheの差をread-onlyで確認し、DBを更新しません。`pr sync`はGitHub上の最新PR状態を取得し、任意の`commentUpdates`を同じSQLite transactionで反映します。保存先がdirtyでも同じrepositoryのcleanなworktreeを`--repository`で選べ、確認済みの未追跡fileだけは`--allow-untracked`で許可できます。local branchがGitHub headより単にbehindな場合や最終同期後にforce-pushされた場合はcheckoutを変更せず同期します。`comment create`は非冪等です。`pr sync`と`comment reply`は任意の冪等keyを受け、`comment edit`は同じpostの完全置換なので安全に再試行できます。
239
265
 
240
266
  `rvw agent ping/status --json`はsocket path、接続結果とOS error詳細、期待/接続先DB、選択transport、
241
267
  fallback理由を表示します。人向け出力にも同じ診断項目を表示します。`RVW_AGENT_SOCKET_PATH`を明示した場合は
@@ -296,7 +322,8 @@ atomicなowner lockを取得した一つのNode processだけがlistenし、owne
296
322
  `rvw doctor --json`はmode/ownerだけでなくwrite transactionとAgent疎通も報告します。
297
323
 
298
324
  ローカルHTTP serverは`127.0.0.1`だけへbindしてHost / Originを検証し、write APIは
299
- `application/json`だけを受理し、CORSを有効にしません。コメントと返信はplain UTF-8 textです。
325
+ `application/json`だけを受理し、CORSを有効にしません。コメントと返信はUTF-8 GFM Markdown sourceとして
326
+ 保存し、raw HTMLをsanitizeします。外部画像は取得せず、repository相対画像だけをexact commitから取得します。
300
327
  CLIとfrontend bundleに含まれる第三者softwareのlicenseはpackage内の
301
328
  `dist/cli-THIRD_PARTY_NOTICES.txt`と`dist/web/THIRD_PARTY_NOTICES.txt`へbuild時に収録します。
302
329