@a9n-shoji/rvw 0.2.4 → 0.2.5

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 (104) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cli.mjs +89 -35
  3. package/dist/cli.mjs.map +2 -2
  4. package/dist/web/assets/{DocumentViewer-B4LdSL1l.js → DocumentViewer-C2e6Mgta.js} +49 -40
  5. package/dist/web/assets/MarkdownTable-bGEPkcFA.js +7 -0
  6. package/dist/web/assets/WalkthroughViewer-TxeLcTE2.js +1 -0
  7. package/dist/web/assets/{abnfDiagram-N423BO3Z-CE1nZSC9.js → abnfDiagram-N423BO3Z-gOmziSzZ.js} +1 -1
  8. package/dist/web/assets/architecture-TIHT7OUA-B9tjggXM.js +1 -0
  9. package/dist/web/assets/{architectureDiagram-T3A2C74G-B88qYFUo.js → architectureDiagram-T3A2C74G-C9sPb-OU.js} +1 -1
  10. package/dist/web/assets/{blockDiagram-VBNYF7ZC-BaX0rhbb.js → blockDiagram-VBNYF7ZC-CxqI40sc.js} +1 -1
  11. package/dist/web/assets/{c4Diagram-5PPSVZJV-C1ppBaEC.js → c4Diagram-5PPSVZJV-BAK8Z0Vr.js} +1 -1
  12. package/dist/web/assets/channel-BD2FosIt.js +1 -0
  13. package/dist/web/assets/{chunk-2GRJ4B5K-D2TTocfh.js → chunk-2GRJ4B5K-oKAARewZ.js} +1 -1
  14. package/dist/web/assets/{chunk-4I5QYGJK-ikT25rPN.js → chunk-4I5QYGJK-BAAbxidn.js} +1 -1
  15. package/dist/web/assets/{chunk-5RXB4S5H-CGlPaulj.js → chunk-5RXB4S5H-DQ-Dk-To.js} +1 -1
  16. package/dist/web/assets/{chunk-6Q2QTUOP-BuuMeCo2.js → chunk-6Q2QTUOP-B64WcpmV.js} +1 -1
  17. package/dist/web/assets/{chunk-7Z6QIM7H-DT3BAZ4L.js → chunk-7Z6QIM7H-DiUNIjSC.js} +1 -1
  18. package/dist/web/assets/{chunk-GF5L2VYU-mIdlxzfr.js → chunk-GF5L2VYU-rbtkA8ZE.js} +1 -1
  19. package/dist/web/assets/{chunk-I66GZJ75-CGl1hx4J.js → chunk-I66GZJ75-BywUmQY9.js} +1 -1
  20. package/dist/web/assets/{chunk-JQJVKLGR-BLG6gAfx.js → chunk-JQJVKLGR-BW097h_E.js} +1 -1
  21. package/dist/web/assets/{chunk-KBJHAD2P-D_MPzBJx.js → chunk-KBJHAD2P-C1kXPXRi.js} +1 -1
  22. package/dist/web/assets/{chunk-NSK5VX7P-CiYiU8wP.js → chunk-NSK5VX7P-kej84W5N.js} +1 -1
  23. package/dist/web/assets/{chunk-QR6OTTB3-BK8Tnvcc.js → chunk-QR6OTTB3-BOzVZt4h.js} +1 -1
  24. package/dist/web/assets/{chunk-UBXNYLIW-BuzttTFk.js → chunk-UBXNYLIW-CJsGqSLH.js} +1 -1
  25. package/dist/web/assets/{chunk-W5SLKNZC-UidmFHe2.js → chunk-W5SLKNZC-BcRL2jRx.js} +1 -1
  26. package/dist/web/assets/{chunk-WRU74C26-nox7WFnh.js → chunk-WRU74C26-BDqViURG.js} +1 -1
  27. package/dist/web/assets/classDiagram-JCYQIIEL-yDkoGFrq.js +1 -0
  28. package/dist/web/assets/classDiagram-v2-OCEON4UE-yDkoGFrq.js +1 -0
  29. package/dist/web/assets/{cynefin-VYW2F7L2-wDMibS5s.js → cynefin-VYW2F7L2-Dugz8jnV.js} +1 -1
  30. package/dist/web/assets/{cynefinDiagram-MW4NZA55-CBTrdvOE.js → cynefinDiagram-MW4NZA55-D-C0yr-E.js} +1 -1
  31. package/dist/web/assets/{dagre-VZM6K2ZE-Bbgn4Rr7.js → dagre-VZM6K2ZE-Cw5E1SBZ.js} +1 -1
  32. package/dist/web/assets/{diagram-7IWD3JNH-Bm9AuXb9.js → diagram-7IWD3JNH-Sf7kJZ8B.js} +1 -1
  33. package/dist/web/assets/{diagram-B4RE2ZJO-D3lZ-r-H.js → diagram-B4RE2ZJO-yCiqe-d4.js} +1 -1
  34. package/dist/web/assets/{diagram-LBJQPF4R-D-GaynX7.js → diagram-LBJQPF4R-GOlna-Ju.js} +1 -1
  35. package/dist/web/assets/{diagram-Q27KOJAE-BeZRiu1d.js → diagram-Q27KOJAE-D6EGrNVJ.js} +1 -1
  36. package/dist/web/assets/{diagram-UB23O5K3-C3GP7iMe.js → diagram-UB23O5K3-DdPGDYZ-.js} +1 -1
  37. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-BJWg0NVU.js → ebnfDiagram-BXEA7PRR-Cm7S99yh.js} +1 -1
  38. package/dist/web/assets/{erDiagram-JOGREHBK-XPmhUeB_.js → erDiagram-JOGREHBK-BaGSsO0U.js} +1 -1
  39. package/dist/web/assets/eventmodeling-45OFAUF4-CbAFmLja.js +1 -0
  40. package/dist/web/assets/flowDiagram-UKHOOZJN-Dz1a-iuK.js +1 -0
  41. package/dist/web/assets/{ganttDiagram-PKOTCBZU-CL-xEo-M.js → ganttDiagram-PKOTCBZU-Dcim-2qK.js} +1 -1
  42. package/dist/web/assets/{gitGraph-TEB2WS4Q-BVRyuIx3.js → gitGraph-TEB2WS4Q-BhPbNzbD.js} +1 -1
  43. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-BVNIEupW.js → gitGraphDiagram-DS77QQ5N-5n4OZuxI.js} +1 -1
  44. package/dist/web/assets/index-BOdYI3os.css +1 -0
  45. package/dist/web/assets/index-D2MzuS4L.js +384 -0
  46. package/dist/web/assets/{info-DKCQHKI2-BKBUVpfc.js → info-DKCQHKI2-B18FoJmv.js} +1 -1
  47. package/dist/web/assets/{infoDiagram-6WML65LV-_dTFnzSE.js → infoDiagram-6WML65LV-Cjd9H30j.js} +1 -1
  48. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-DIRgD4hO.js → ishikawaDiagram-WSZJBQD7-B2HYwzk0.js} +1 -1
  49. package/dist/web/assets/{journeyDiagram-NVQOT4AX-bp7nZrfR.js → journeyDiagram-NVQOT4AX-CIIOlEIS.js} +1 -1
  50. package/dist/web/assets/{kanban-definition-27J2QSJJ-C6mZIo8S.js → kanban-definition-27J2QSJJ-DpD98gCE.js} +1 -1
  51. package/dist/web/assets/{line-DWTym7eJ.js → line-1uMtgP84.js} +1 -1
  52. package/dist/web/assets/{mermaid-parser.core-CbecsNA1.js → mermaid-parser.core-CsoLrwW_.js} +3 -3
  53. package/dist/web/assets/{mermaid.core-CdRuLyYI.js → mermaid.core-DLvBOZ4b.js} +4 -4
  54. package/dist/web/assets/{mindmap-definition-FAOFIHXS-CU2P1z-9.js → mindmap-definition-FAOFIHXS-aX8l0lZ8.js} +1 -1
  55. package/dist/web/assets/{packet-7NZHBO7P-CZsup6Od.js → packet-7NZHBO7P-C2mk4cRM.js} +1 -1
  56. package/dist/web/assets/{pegDiagram-VL7TDLO6-DTTyttpe.js → pegDiagram-VL7TDLO6-DJxCPsMd.js} +1 -1
  57. package/dist/web/assets/{pie-RZYD4A2V-DgrIiWZA.js → pie-RZYD4A2V-ZvoBUm4W.js} +1 -1
  58. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-BBNFyPT1.js → pieDiagram-7S7Q4E2Y-B_Zxlt9c.js} +1 -1
  59. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-ejp-Aa2l.js → quadrantDiagram-CIZ2JOQS-BdQdNvfJ.js} +1 -1
  60. package/dist/web/assets/{radar-I7S5WNFK-Cp_hfjrI.js → radar-I7S5WNFK-C50TztIy.js} +1 -1
  61. package/dist/web/assets/{railroad-3IZDKUUU-Dw-oMal2.js → railroad-3IZDKUUU-C_CK0C2Y.js} +1 -1
  62. package/dist/web/assets/railroad-abnf-AHOZXSZD-DEjonoj9.js +1 -0
  63. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BGY58zLm.js +1 -0
  64. package/dist/web/assets/railroad-peg-LSFZ7HO6-9byrH0Ii.js +1 -0
  65. package/dist/web/assets/{railroadDiagram-AXF67PYL-DkBUaj6Z.js → railroadDiagram-AXF67PYL-CZ1vA-S_.js} +1 -1
  66. package/dist/web/assets/{requirementDiagram-LRYGKXZP-Dff1ex_h.js → requirementDiagram-LRYGKXZP-BDp4_zQI.js} +1 -1
  67. package/dist/web/assets/{sankeyDiagram-W5VNT64P-DptSL9Bc.js → sankeyDiagram-W5VNT64P-CQQl9FYv.js} +1 -1
  68. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-DEnPcs3U.js → sequenceDiagram-SI44F4Z6-BGANFekR.js} +1 -1
  69. package/dist/web/assets/{stateDiagram-OKZ733FA-BwJO1MKA.js → stateDiagram-OKZ733FA-DbYseVuv.js} +1 -1
  70. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CaYT-_kk.js +1 -0
  71. package/dist/web/assets/{swimlanes-SLNWSIFB-BosKiwZA.js → swimlanes-SLNWSIFB-Db9iJuW8.js} +1 -1
  72. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CgMcCXPx.js +8 -0
  73. package/dist/web/assets/{timeline-definition-Z64GVDOM-C5isAn4X.js → timeline-definition-Z64GVDOM-Ioz0wd0X.js} +1 -1
  74. package/dist/web/assets/{treeView-QDETBFTQ-zEyUXRc4.js → treeView-QDETBFTQ-clJ74kxF.js} +1 -1
  75. package/dist/web/assets/{treemap-6X3UGDF4-B-X0EQSE.js → treemap-6X3UGDF4-Dr2iSopM.js} +1 -1
  76. package/dist/web/assets/{vennDiagram-T6HMQDX7-QMdGieCa.js → vennDiagram-T6HMQDX7-Dm_4JT58.js} +1 -1
  77. package/dist/web/assets/{wardley-OPB4EBWU-BaeAF8d8.js → wardley-OPB4EBWU-BijQqUc8.js} +1 -1
  78. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-DTQ_uLUq.js → wardleyDiagram-T6FBY63Y-C4x0wEqS.js} +1 -1
  79. package/dist/web/assets/{xychartDiagram-ELKLHX3M-BMdBWzib.js → xychartDiagram-ELKLHX3M-BGoEonWo.js} +1 -1
  80. package/dist/web/index.html +2 -2
  81. package/migrations/011_comment_post_modifier.sql +3 -0
  82. package/package.json +1 -1
  83. package/skills/rvw/SKILL.md +1 -1
  84. package/skills/rvw-walkthrough/SKILL.md +1 -1
  85. package/skills/rvw-watch-comments/SKILL.md +28 -13
  86. package/skills/rvw-watch-comments/scripts/auto-ack.mjs +18 -2
  87. package/skills/rvw-watch-comments/scripts/preflight.mjs +1 -1
  88. package/skills/rvw-watch-comments/scripts/watch-driver.mjs +47 -17
  89. package/skills/rvw-watch-comments/scripts/watch-state.mjs +50 -3
  90. package/dist/web/assets/MarkdownTable-CdbKPft2.js +0 -7
  91. package/dist/web/assets/WalkthroughViewer-D1LlSQw2.js +0 -1
  92. package/dist/web/assets/architecture-TIHT7OUA-edLV2Zq-.js +0 -1
  93. package/dist/web/assets/channel-J8FHSJDG.js +0 -1
  94. package/dist/web/assets/classDiagram-JCYQIIEL-CmTWSnH0.js +0 -1
  95. package/dist/web/assets/classDiagram-v2-OCEON4UE-CmTWSnH0.js +0 -1
  96. package/dist/web/assets/eventmodeling-45OFAUF4-C3c4qddw.js +0 -1
  97. package/dist/web/assets/flowDiagram-UKHOOZJN-DMA-a1zf.js +0 -1
  98. package/dist/web/assets/index-D8GJBw23.js +0 -384
  99. package/dist/web/assets/index-DMD2vvQW.css +0 -1
  100. package/dist/web/assets/railroad-abnf-AHOZXSZD-BN-ZBhE0.js +0 -1
  101. package/dist/web/assets/railroad-ebnf-EBAXGLYW-CG97zyI2.js +0 -1
  102. package/dist/web/assets/railroad-peg-LSFZ7HO6-DHLQ1evQ.js +0 -1
  103. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-LaSNqvWy.js +0 -1
  104. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-C5OBtBlv.js +0 -8
package/CHANGELOG.md CHANGED
@@ -5,6 +5,27 @@
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.5] - 2026-08-26
9
+
10
+ ### Added
11
+
12
+ - focus中のdocument paneで`Cmd/Ctrl+F`を押すと、code、Markdown、Walkthroughの描画内容を
13
+ case-sensitive、whole-word、regular expressionの切り替え付きで検索できるVS Code風find widget
14
+ - PR本文とrepository Markdown preview内の`mermaid` fenced blockを、themeとsource-line mappingを
15
+ 保ったstrict Mermaid surfaceで描画
16
+ - final Agent commentをnative browser notificationで通知し、human post、acknowledgement、初回load、
17
+ idempotent retryは通知対象から除外
18
+
19
+ ### Changed
20
+
21
+ - expanded Comments sidebarの上端をpointerまたはkeyboardでresize可能にし、double-clickで自動配分へreset
22
+
23
+ ### Fixed
24
+
25
+ - dual-pane表示でcomment / reply draftをpaneごとに分離し、refresh時も選択中のcommit rangeを保持
26
+ - watcher postのAgent provenanceを保持し、comment notificationを投稿種別に応じて正しく判定
27
+ - compound template extensionのsyntax highlightと、Markdown preview内code referenceのrange highlightを改善
28
+
8
29
  ## [0.2.4] - 2026-08-24
9
30
 
10
31
  ### Changed
package/dist/cli.mjs CHANGED
@@ -18717,6 +18717,11 @@ function nullableNumber(row, key) {
18717
18717
  }
18718
18718
  return Number(value);
18719
18719
  }
18720
+ function nullableCommentPostModifier(row, key) {
18721
+ const value = nullableString(row, key);
18722
+ if (value === null || value === "human" || value === "agent") return value;
18723
+ throw new RvwError("DATABASE_ERROR", `DB\u5217 ${key} \u304C\u4E0D\u6B63\u3067\u3059\u3002`);
18724
+ }
18720
18725
  function stringRecordValue(row, key) {
18721
18726
  try {
18722
18727
  const value = JSON.parse(stringValue(row, key));
@@ -18772,6 +18777,7 @@ function mapCommentPost(row, references = []) {
18772
18777
  relatedCommitOid: nullableString(row, "related_commit_oid"),
18773
18778
  references,
18774
18779
  authorLabel: nullableString(row, "author_label"),
18780
+ lastModifiedBy: nullableCommentPostModifier(row, "last_modified_by"),
18775
18781
  isRoot: numberValue(row, "is_root") === 1,
18776
18782
  createdAt: stringValue(row, "created_at"),
18777
18783
  updatedAt: stringValue(row, "updated_at")
@@ -19382,13 +19388,14 @@ var RvwDatabase = class {
19382
19388
  ).run(id, input.pullRequestId, input.createdHeadOid, now, now);
19383
19389
  this.insertCommentTarget(id, input.target);
19384
19390
  this.database.prepare(
19385
- "INSERT INTO comment_posts(id, comment_id, body, related_commit_oid, author_label, is_root, created_at, updated_at) VALUES (?, ?, ?, ?, ?, 1, ?, ?)"
19391
+ "INSERT INTO comment_posts(id, comment_id, body, related_commit_oid, author_label, last_modified_by, is_root, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)"
19386
19392
  ).run(
19387
19393
  postId,
19388
19394
  id,
19389
19395
  input.body,
19390
19396
  input.relatedCommitOid ?? null,
19391
19397
  input.authorLabel ?? null,
19398
+ input.lastModifiedBy ?? null,
19392
19399
  now,
19393
19400
  now
19394
19401
  );
@@ -19529,7 +19536,8 @@ var RvwDatabase = class {
19529
19536
  w.title AS walkthrough_title,
19530
19537
  root.id AS root_id, root.body AS root_body,
19531
19538
  root.related_commit_oid AS root_related_commit_oid,
19532
- root.author_label AS root_author_label, root.created_at AS root_created_at,
19539
+ root.author_label AS root_author_label,
19540
+ root.last_modified_by AS root_last_modified_by, root.created_at AS root_created_at,
19533
19541
  root.updated_at AS root_updated_at,
19534
19542
  (SELECT COUNT(*) FROM comment_posts p WHERE p.comment_id = c.id) AS post_count
19535
19543
  FROM comments c
@@ -19550,6 +19558,7 @@ var RvwDatabase = class {
19550
19558
  relatedCommitOid: nullableString(row, "root_related_commit_oid"),
19551
19559
  references: [],
19552
19560
  authorLabel: nullableString(row, "root_author_label"),
19561
+ lastModifiedBy: nullableCommentPostModifier(row, "root_last_modified_by"),
19553
19562
  isRoot: true,
19554
19563
  createdAt: stringValue(row, "root_created_at"),
19555
19564
  updatedAt: stringValue(row, "root_updated_at")
@@ -19618,8 +19627,17 @@ var RvwDatabase = class {
19618
19627
  const id = randomUUID();
19619
19628
  const now = (/* @__PURE__ */ new Date()).toISOString();
19620
19629
  this.database.prepare(
19621
- "INSERT INTO comment_posts(id, comment_id, body, related_commit_oid, author_label, is_root, created_at, updated_at) VALUES (?, ?, ?, ?, ?, 0, ?, ?)"
19622
- ).run(id, commentId, input.body, relatedCommitOid, authorLabel, now, now);
19630
+ "INSERT INTO comment_posts(id, comment_id, body, related_commit_oid, author_label, last_modified_by, is_root, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)"
19631
+ ).run(
19632
+ id,
19633
+ commentId,
19634
+ input.body,
19635
+ relatedCommitOid,
19636
+ authorLabel,
19637
+ input.lastModifiedBy ?? null,
19638
+ now,
19639
+ now
19640
+ );
19623
19641
  this.insertCodeReferences("comment-post", id, input.references ?? []);
19624
19642
  this.database.prepare(
19625
19643
  `INSERT INTO comment_post_events(
@@ -19640,6 +19658,7 @@ var RvwDatabase = class {
19640
19658
  relatedCommitOid,
19641
19659
  references: input.references ?? [],
19642
19660
  authorLabel,
19661
+ lastModifiedBy: input.lastModifiedBy ?? null,
19643
19662
  isRoot: false,
19644
19663
  createdAt: now,
19645
19664
  updatedAt: now
@@ -19650,24 +19669,21 @@ var RvwDatabase = class {
19650
19669
  if (!result) throw new RvwError("DATABASE_ERROR", "\u8FD4\u4FE1\u7D50\u679C\u3092\u8AAD\u307F\u51FA\u305B\u307E\u305B\u3093\u3002");
19651
19670
  return result;
19652
19671
  }
19653
- updateCommentPost(commentId, postId, body, relatedCommitOid, references) {
19672
+ updateCommentPost(commentId, postId, body, relatedCommitOid, references, lastModifiedBy) {
19654
19673
  const now = (/* @__PURE__ */ new Date()).toISOString();
19655
19674
  this.immediateTransaction(() => {
19656
- const result = relatedCommitOid === void 0 ? this.database.prepare(
19657
- "UPDATE comment_posts SET body = ?, updated_at = ? WHERE id = ? AND comment_id = ?"
19658
- ).run(body, now, postId, commentId) : this.database.prepare(
19659
- `UPDATE comment_posts SET body = ?, related_commit_oid = ?, updated_at = ?
19660
- WHERE id = ? AND comment_id = ?`
19661
- ).run(body, relatedCommitOid, now, postId, commentId);
19675
+ const result = this.database.prepare(
19676
+ `UPDATE comment_posts
19677
+ SET body = ?, related_commit_oid = ?, last_modified_by = ?, updated_at = ?
19678
+ WHERE id = ? AND comment_id = ?`
19679
+ ).run(body, relatedCommitOid, lastModifiedBy, now, postId, commentId);
19662
19680
  if (Number(result.changes) === 0) {
19663
19681
  throw new RvwError("COMMENT_POST_NOT_FOUND", "\u30B3\u30E1\u30F3\u30C8\u6295\u7A3F\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002", {
19664
19682
  status: 404
19665
19683
  });
19666
19684
  }
19667
- if (references !== void 0) {
19668
- this.database.prepare("DELETE FROM comment_post_references WHERE post_id = ?").run(postId);
19669
- this.insertCodeReferences("comment-post", postId, references);
19670
- }
19685
+ this.database.prepare("DELETE FROM comment_post_references WHERE post_id = ?").run(postId);
19686
+ this.insertCodeReferences("comment-post", postId, references);
19671
19687
  this.database.prepare("UPDATE comments SET updated_at = ? WHERE id = ?").run(now, commentId);
19672
19688
  this.incrementChangeSequence();
19673
19689
  });
@@ -19740,6 +19756,7 @@ var RvwDatabase = class {
19740
19756
  relatedCommitOid,
19741
19757
  references: update.references ?? [],
19742
19758
  authorLabel: update.authorLabel ?? "Agent",
19759
+ lastModifiedBy: update.lastModifiedBy ?? "agent",
19743
19760
  ...update.idempotencyKey === void 0 ? {} : { idempotencyKey: update.idempotencyKey },
19744
19761
  ...update.idempotencyRequestHash === void 0 ? {} : { idempotencyRequestHash: update.idempotencyRequestHash }
19745
19762
  },
@@ -19759,8 +19776,8 @@ import path5 from "node:path";
19759
19776
  import { TextDecoder as TextDecoder2 } from "node:util";
19760
19777
 
19761
19778
  // src/shared/constants.ts
19762
- var APP_VERSION = "0.2.4";
19763
- var PROTOCOL_VERSION = 3;
19779
+ var APP_VERSION = "0.2.5";
19780
+ var PROTOCOL_VERSION = 4;
19764
19781
  var VIEWER_ID_HEADER = "x-rvw-viewer-id";
19765
19782
  var GIT_OBJECT_ID_PATTERN = /^[0-9a-f]{40,64}$/i;
19766
19783
  var MAX_TEXT_DOCUMENT_BYTES = 1024 * 1024;
@@ -28299,6 +28316,7 @@ var RvwService = class {
28299
28316
  commentId,
28300
28317
  reply: update.reply,
28301
28318
  resolve: update.resolve,
28319
+ lastModifiedBy: "agent",
28302
28320
  ...update.references === void 0 ? {} : { references: update.references },
28303
28321
  ...update.authorLabel === void 0 ? {} : { authorLabel: update.authorLabel },
28304
28322
  ...update.idempotencyKey === void 0 ? {} : { idempotencyKey: update.idempotencyKey },
@@ -28759,7 +28777,8 @@ var RvwService = class {
28759
28777
  body,
28760
28778
  ...input.relatedCommitOid === void 0 ? {} : { relatedCommitOid: input.relatedCommitOid },
28761
28779
  references,
28762
- ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel }
28780
+ ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel },
28781
+ ...input.lastModifiedBy === void 0 ? {} : { lastModifiedBy: input.lastModifiedBy }
28763
28782
  });
28764
28783
  return input.relatedCommitOid ? await this.writeWithRetainedCommit(pullRequest, input.relatedCommitOid, "comment", write) : write();
28765
28784
  }
@@ -28771,7 +28790,8 @@ var RvwService = class {
28771
28790
  body: input.body,
28772
28791
  ...input.relatedCommitOid === void 0 ? {} : { relatedCommitOid: input.relatedCommitOid },
28773
28792
  ...input.references === void 0 ? {} : { references: input.references },
28774
- ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel }
28793
+ ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel },
28794
+ lastModifiedBy: "agent"
28775
28795
  });
28776
28796
  }
28777
28797
  getCommentByUri(uri) {
@@ -29061,6 +29081,7 @@ var RvwService = class {
29061
29081
  ...input,
29062
29082
  body,
29063
29083
  references,
29084
+ ...input.lastModifiedBy === void 0 ? {} : { lastModifiedBy: input.lastModifiedBy },
29064
29085
  ...input.idempotencyKey === void 0 ? {} : {
29065
29086
  idempotencyRequestHash: idempotencyRequestHash({
29066
29087
  operation: "comment.reply",
@@ -29082,7 +29103,7 @@ var RvwService = class {
29082
29103
  const id = uriOrId.startsWith("rvw://") ? parseCommentUri(uriOrId) : uriOrId;
29083
29104
  return this.database.deleteComment(id);
29084
29105
  }
29085
- async updateCommentPost(commentId, postId, body) {
29106
+ async updateCommentPost(commentId, postId, body, lastModifiedBy) {
29086
29107
  const comment = this.database.getComment(commentId);
29087
29108
  const post = comment?.posts.find((candidate) => candidate.id === postId);
29088
29109
  if (!comment || !post) {
@@ -29093,7 +29114,8 @@ var RvwService = class {
29093
29114
  const usedReferenceIds = new Set(analyzeReferenceMarkdown(body).referenceIds);
29094
29115
  return await this.editCommentPost(commentId, postId, {
29095
29116
  body,
29096
- references: post.references.filter((reference) => usedReferenceIds.has(reference.id))
29117
+ references: post.references.filter((reference) => usedReferenceIds.has(reference.id)),
29118
+ ...lastModifiedBy === void 0 ? {} : { lastModifiedBy }
29097
29119
  });
29098
29120
  }
29099
29121
  async editCommentPost(uriOrId, postId, input) {
@@ -29118,7 +29140,14 @@ var RvwService = class {
29118
29140
  references,
29119
29141
  subject: "comment post"
29120
29142
  });
29121
- const write = () => this.database.updateCommentPost(commentId, postId, body, input.relatedCommitOid, references);
29143
+ const write = () => this.database.updateCommentPost(
29144
+ commentId,
29145
+ postId,
29146
+ body,
29147
+ relatedCommitOid,
29148
+ references,
29149
+ input.lastModifiedBy ?? post.lastModifiedBy
29150
+ );
29122
29151
  return relatedCommitOid ? await this.writeWithRetainedCommit(pullRequest, relatedCommitOid, "comment", write) : write();
29123
29152
  }
29124
29153
  deleteReply(commentId, postId) {
@@ -33653,7 +33682,8 @@ function createApp(service, options) {
33653
33682
  body: input.body,
33654
33683
  ...input.relatedCommitOid === void 0 ? {} : { relatedCommitOid: input.relatedCommitOid },
33655
33684
  ...input.references === void 0 ? {} : { references: input.references },
33656
- ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel }
33685
+ ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel },
33686
+ lastModifiedBy: "human"
33657
33687
  })
33658
33688
  },
33659
33689
  201
@@ -33668,6 +33698,7 @@ function createApp(service, options) {
33668
33698
  body: input.body,
33669
33699
  ...input.relatedCommitOid === void 0 ? {} : { relatedCommitOid: input.relatedCommitOid },
33670
33700
  ...input.authorLabel === void 0 ? {} : { authorLabel: input.authorLabel },
33701
+ lastModifiedBy: "human",
33671
33702
  ...input.references === void 0 ? {} : { references: input.references }
33672
33703
  })
33673
33704
  },
@@ -33681,10 +33712,12 @@ function createApp(service, options) {
33681
33712
  post: input.references === void 0 ? await service.updateCommentPost(
33682
33713
  context.req.param("id"),
33683
33714
  context.req.param("postId"),
33684
- input.body
33715
+ input.body,
33716
+ "human"
33685
33717
  ) : await service.editCommentPost(context.req.param("id"), context.req.param("postId"), {
33686
33718
  body: input.body,
33687
- references: input.references
33719
+ references: input.references,
33720
+ lastModifiedBy: "human"
33688
33721
  })
33689
33722
  });
33690
33723
  });
@@ -33917,7 +33950,8 @@ import os4 from "node:os";
33917
33950
  import path9 from "node:path";
33918
33951
  var MAX_CLI_STDIN_BYTES = 40 * 1024 * 1024;
33919
33952
  var MAX_AGENT_MESSAGE_BYTES = MAX_CLI_STDIN_BYTES + 64 * 1024;
33920
- var AGENT_SOCKET_PROTOCOL_VERSION = 1;
33953
+ var AGENT_SOCKET_PROTOCOL_VERSION = 2;
33954
+ var AGENT_SOCKET_RESTART_SUGGESTION = "\u8D77\u52D5\u4E2D\u306Ervw viewer\u3092\u505C\u6B62\u3057\u3001\u66F4\u65B0\u5F8C\u306Ervw open\u3067\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
33921
33955
  var DEFAULT_CONNECT_TIMEOUT_MS = 2e3;
33922
33956
  var DEFAULT_OPERATION_TIMEOUT_MS = 18e4;
33923
33957
  var DEFAULT_TAKEOVER_RETRY_MS = 1e3;
@@ -33987,7 +34021,13 @@ function parseOperationInput(operation, value) {
33987
34021
  async function dispatchAgentSocketRequest(service, rawRequest) {
33988
34022
  const request = parseRequest(rawRequest);
33989
34023
  if (request.protocolVersion !== AGENT_SOCKET_PROTOCOL_VERSION) {
33990
- throw new RvwError("STALE_PROTOCOL", "Agent socket protocol version\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002");
34024
+ throw new RvwError("STALE_PROTOCOL", "Agent socket protocol version\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002", {
34025
+ details: {
34026
+ expectedProtocolVersion: AGENT_SOCKET_PROTOCOL_VERSION,
34027
+ receivedProtocolVersion: request.protocolVersion
34028
+ },
34029
+ suggestions: [AGENT_SOCKET_RESTART_SUGGESTION]
34030
+ });
33991
34031
  }
33992
34032
  if (request.expectedDatabasePath !== void 0 && path9.resolve(request.expectedDatabasePath) !== path9.resolve(service.database.filePath)) {
33993
34033
  throw new RvwError("DATABASE_ERROR", "Agent socket\u304C\u5225\u306Edatabase\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002", {
@@ -34063,17 +34103,18 @@ async function dispatchAgentSocketRequest(service, rawRequest) {
34063
34103
  }
34064
34104
  case "comment.reply": {
34065
34105
  const input = parseOperationInput("comment.reply", request.input);
34066
- return await service.replyToComment(
34067
- input.uri,
34068
- input.reply
34069
- );
34106
+ return await service.replyToComment(input.uri, {
34107
+ ...input.reply,
34108
+ lastModifiedBy: "agent"
34109
+ });
34070
34110
  }
34071
34111
  case "comment.edit": {
34072
34112
  const input = parseOperationInput("comment.edit", request.input);
34073
34113
  return await service.editCommentPost(input.uri, input.postId, {
34074
34114
  body: input.edit.body,
34075
34115
  ...input.edit.relatedCommitOid === void 0 ? {} : { relatedCommitOid: input.edit.relatedCommitOid },
34076
- ...input.edit.references === void 0 ? {} : { references: input.edit.references }
34116
+ ...input.edit.references === void 0 ? {} : { references: input.edit.references },
34117
+ lastModifiedBy: "agent"
34077
34118
  });
34078
34119
  }
34079
34120
  case "comment.resolve": {
@@ -34288,9 +34329,15 @@ async function tryAgentSocketRequest(operation, input, options = {}) {
34288
34329
  }
34289
34330
  return;
34290
34331
  }
34332
+ const suggestions = response.error.code === "STALE_PROTOCOL" ? [
34333
+ .../* @__PURE__ */ new Set([
34334
+ ...response.error.suggestions ?? [],
34335
+ AGENT_SOCKET_RESTART_SUGGESTION
34336
+ ])
34337
+ ] : response.error.suggestions;
34291
34338
  reject(
34292
34339
  new RvwError(response.error.code, response.error.message, {
34293
- suggestions: response.error.suggestions,
34340
+ suggestions,
34294
34341
  details: response.error.details
34295
34342
  })
34296
34343
  );
@@ -34737,6 +34784,7 @@ var commentPostOutputSchema = external_exports.object({
34737
34784
  relatedCommitOid: external_exports.string().nullable(),
34738
34785
  references: external_exports.array(codeReferenceOutputSchema),
34739
34786
  authorLabel: external_exports.string().nullable(),
34787
+ lastModifiedBy: external_exports.enum(["human", "agent"]).nullable(),
34740
34788
  isRoot: external_exports.boolean(),
34741
34789
  createdAt: external_exports.string(),
34742
34790
  updatedAt: external_exports.string()
@@ -35677,7 +35725,10 @@ function createProgram(runtimeFactory = defaultRuntimeFactory) {
35677
35725
  const post = await callService(
35678
35726
  "comment.reply",
35679
35727
  { uri, reply },
35680
- async () => await getRuntime().service.replyToComment(uri, reply)
35728
+ async () => await getRuntime().service.replyToComment(uri, {
35729
+ ...reply,
35730
+ lastModifiedBy: "agent"
35731
+ })
35681
35732
  );
35682
35733
  writeJson({ ok: true, post });
35683
35734
  });
@@ -35691,7 +35742,10 @@ function createProgram(runtimeFactory = defaultRuntimeFactory) {
35691
35742
  const post = await callService(
35692
35743
  "comment.edit",
35693
35744
  { uri, postId: options.post, edit },
35694
- async () => await getRuntime().service.editCommentPost(uri, options.post, edit)
35745
+ async () => await getRuntime().service.editCommentPost(uri, options.post, {
35746
+ ...edit,
35747
+ lastModifiedBy: "agent"
35748
+ })
35695
35749
  );
35696
35750
  writeJson({ ok: true, post });
35697
35751
  });