@markusylisiurunen/tau 0.2.80 → 0.2.82

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 (385) hide show
  1. package/README.md +39 -1
  2. package/dist/core/cli.js +17 -0
  3. package/dist/core/cli.js.map +1 -1
  4. package/dist/core/commands/registry.js +15 -0
  5. package/dist/core/commands/registry.js.map +1 -1
  6. package/dist/core/config/builtin_themes.js +62 -0
  7. package/dist/core/config/builtin_themes.js.map +1 -1
  8. package/dist/core/config/diff_tool.js +51 -0
  9. package/dist/core/config/diff_tool.js.map +1 -0
  10. package/dist/core/config/index.js.map +1 -1
  11. package/dist/core/config/runtime.js +1 -0
  12. package/dist/core/config/runtime.js.map +1 -1
  13. package/dist/core/config/schema.js +10 -0
  14. package/dist/core/config/schema.js.map +1 -1
  15. package/dist/core/diff_review/index.js +5 -0
  16. package/dist/core/diff_review/index.js.map +1 -0
  17. package/dist/core/diff_review/protocol.js +222 -0
  18. package/dist/core/diff_review/protocol.js.map +1 -0
  19. package/dist/core/diff_review/review_thread.js +148 -0
  20. package/dist/core/diff_review/review_thread.js.map +1 -0
  21. package/dist/core/diff_review/session.js +453 -0
  22. package/dist/core/diff_review/session.js.map +1 -0
  23. package/dist/core/diff_review/snapshot.js +327 -0
  24. package/dist/core/diff_review/snapshot.js.map +1 -0
  25. package/dist/core/events/parser.js +13 -2
  26. package/dist/core/events/parser.js.map +1 -1
  27. package/dist/core/index.js +2 -1
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/static/index.js +11 -0
  30. package/dist/core/static/index.js.map +1 -1
  31. package/dist/core/static/prompts/diff-review-wrapper.md +24 -0
  32. package/dist/core/subagents/control_plane.js +35 -0
  33. package/dist/core/subagents/control_plane.js.map +1 -1
  34. package/dist/core/subagents/subagent_engine.js +23 -3
  35. package/dist/core/subagents/subagent_engine.js.map +1 -1
  36. package/dist/core/version.js +1 -1
  37. package/dist/diff_tool/app/dist/assets/abap-BdImnpbu.js +1 -0
  38. package/dist/diff_tool/app/dist/assets/actionscript-3-CoDkCxhg.js +1 -0
  39. package/dist/diff_tool/app/dist/assets/ada-bCR0ucgS.js +1 -0
  40. package/dist/diff_tool/app/dist/assets/andromeeda-C4gqWexZ.js +1 -0
  41. package/dist/diff_tool/app/dist/assets/angular-html-CU67Zn6k.js +1 -0
  42. package/dist/diff_tool/app/dist/assets/angular-ts-BwZT4LLn.js +1 -0
  43. package/dist/diff_tool/app/dist/assets/apache-Pmp26Uib.js +1 -0
  44. package/dist/diff_tool/app/dist/assets/apex-D8_7TLub.js +1 -0
  45. package/dist/diff_tool/app/dist/assets/apl-dKokRX4l.js +1 -0
  46. package/dist/diff_tool/app/dist/assets/applescript-Co6uUVPk.js +1 -0
  47. package/dist/diff_tool/app/dist/assets/ara-BRHolxvo.js +1 -0
  48. package/dist/diff_tool/app/dist/assets/asciidoc-Ve4PFQV2.js +1 -0
  49. package/dist/diff_tool/app/dist/assets/asm-D_Q5rh1f.js +1 -0
  50. package/dist/diff_tool/app/dist/assets/astro-CbQHKStN.js +1 -0
  51. package/dist/diff_tool/app/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
  52. package/dist/diff_tool/app/dist/assets/awk-DMzUqQB5.js +1 -0
  53. package/dist/diff_tool/app/dist/assets/ayu-dark-DYE7WIF3.js +1 -0
  54. package/dist/diff_tool/app/dist/assets/ayu-light-BA47KaF1.js +1 -0
  55. package/dist/diff_tool/app/dist/assets/ayu-mirage-32ctXXKs.js +1 -0
  56. package/dist/diff_tool/app/dist/assets/ballerina-BFfxhgS-.js +1 -0
  57. package/dist/diff_tool/app/dist/assets/bat-BkioyH1T.js +1 -0
  58. package/dist/diff_tool/app/dist/assets/beancount-k_qm7-4y.js +1 -0
  59. package/dist/diff_tool/app/dist/assets/berry-uYugtg8r.js +1 -0
  60. package/dist/diff_tool/app/dist/assets/bibtex-CHM0blh-.js +1 -0
  61. package/dist/diff_tool/app/dist/assets/bicep-Bmn6On1c.js +1 -0
  62. package/dist/diff_tool/app/dist/assets/bird2-DPOp833l.js +1 -0
  63. package/dist/diff_tool/app/dist/assets/blade-D4QpJJKB.js +1 -0
  64. package/dist/diff_tool/app/dist/assets/bsl-BO_Y6i37.js +1 -0
  65. package/dist/diff_tool/app/dist/assets/c-BIGW1oBm.js +1 -0
  66. package/dist/diff_tool/app/dist/assets/c3-eo99z4R2.js +1 -0
  67. package/dist/diff_tool/app/dist/assets/cadence-Bv_4Rxtq.js +1 -0
  68. package/dist/diff_tool/app/dist/assets/cairo-KRGpt6FW.js +1 -0
  69. package/dist/diff_tool/app/dist/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  70. package/dist/diff_tool/app/dist/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  71. package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  72. package/dist/diff_tool/app/dist/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  73. package/dist/diff_tool/app/dist/assets/clarity-D53aC0YG.js +1 -0
  74. package/dist/diff_tool/app/dist/assets/clojure-P80f7IUj.js +1 -0
  75. package/dist/diff_tool/app/dist/assets/cmake-D1j8_8rp.js +1 -0
  76. package/dist/diff_tool/app/dist/assets/cobol-nwyudZeR.js +1 -0
  77. package/dist/diff_tool/app/dist/assets/codeowners-Bp6g37R7.js +1 -0
  78. package/dist/diff_tool/app/dist/assets/codeql-DsOJ9woJ.js +1 -0
  79. package/dist/diff_tool/app/dist/assets/coffee-Ch7k5sss.js +1 -0
  80. package/dist/diff_tool/app/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
  81. package/dist/diff_tool/app/dist/assets/coq-DkFqJrB1.js +1 -0
  82. package/dist/diff_tool/app/dist/assets/cpp-CofmeUqb.js +1 -0
  83. package/dist/diff_tool/app/dist/assets/crystal-tKQVLTB8.js +1 -0
  84. package/dist/diff_tool/app/dist/assets/csharp-COcwbKMJ.js +1 -0
  85. package/dist/diff_tool/app/dist/assets/css-DPfMkruS.js +1 -0
  86. package/dist/diff_tool/app/dist/assets/csv-fuZLfV_i.js +1 -0
  87. package/dist/diff_tool/app/dist/assets/cue-D82EKSYY.js +1 -0
  88. package/dist/diff_tool/app/dist/assets/cypher-COkxafJQ.js +1 -0
  89. package/dist/diff_tool/app/dist/assets/d-85-TOEBH.js +1 -0
  90. package/dist/diff_tool/app/dist/assets/dark-plus-C3mMm8J8.js +1 -0
  91. package/dist/diff_tool/app/dist/assets/dart-CF10PKvl.js +1 -0
  92. package/dist/diff_tool/app/dist/assets/dax-CEL-wOlO.js +1 -0
  93. package/dist/diff_tool/app/dist/assets/desktop-BmXAJ9_W.js +1 -0
  94. package/dist/diff_tool/app/dist/assets/diff-D97Zzqfu.js +1 -0
  95. package/dist/diff_tool/app/dist/assets/docker-BcOcwvcX.js +1 -0
  96. package/dist/diff_tool/app/dist/assets/dotenv-Da5cRb03.js +1 -0
  97. package/dist/diff_tool/app/dist/assets/dracula-BzJJZx-M.js +1 -0
  98. package/dist/diff_tool/app/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
  99. package/dist/diff_tool/app/dist/assets/dream-maker-BtqSS_iP.js +1 -0
  100. package/dist/diff_tool/app/dist/assets/edge-BkV0erSs.js +1 -0
  101. package/dist/diff_tool/app/dist/assets/elixir-CDX3lj18.js +1 -0
  102. package/dist/diff_tool/app/dist/assets/elm-DbKCFpqz.js +1 -0
  103. package/dist/diff_tool/app/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
  104. package/dist/diff_tool/app/dist/assets/erb-B12qg9BL.js +1 -0
  105. package/dist/diff_tool/app/dist/assets/erlang-DsQrWhSR.js +1 -0
  106. package/dist/diff_tool/app/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
  107. package/dist/diff_tool/app/dist/assets/everforest-light-C8M2exoo.js +1 -0
  108. package/dist/diff_tool/app/dist/assets/fennel-BYunw83y.js +1 -0
  109. package/dist/diff_tool/app/dist/assets/fish-BvzEVeQv.js +1 -0
  110. package/dist/diff_tool/app/dist/assets/fluent-C4IJs8-o.js +1 -0
  111. package/dist/diff_tool/app/dist/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  112. package/dist/diff_tool/app/dist/assets/fortran-free-form-BxgE0vQu.js +1 -0
  113. package/dist/diff_tool/app/dist/assets/fsharp-CXgrBDvD.js +1 -0
  114. package/dist/diff_tool/app/dist/assets/gdresource-BOOCDP_w.js +1 -0
  115. package/dist/diff_tool/app/dist/assets/gdscript-C5YyOfLZ.js +1 -0
  116. package/dist/diff_tool/app/dist/assets/gdshader-DkwncUOv.js +1 -0
  117. package/dist/diff_tool/app/dist/assets/genie-D0YGMca9.js +1 -0
  118. package/dist/diff_tool/app/dist/assets/gherkin-DyxjwDmM.js +1 -0
  119. package/dist/diff_tool/app/dist/assets/git-commit-F4YmCXRG.js +1 -0
  120. package/dist/diff_tool/app/dist/assets/git-rebase-r7XF79zn.js +1 -0
  121. package/dist/diff_tool/app/dist/assets/github-dark-DHJKELXO.js +1 -0
  122. package/dist/diff_tool/app/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
  123. package/dist/diff_tool/app/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  124. package/dist/diff_tool/app/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  125. package/dist/diff_tool/app/dist/assets/github-light-DAi9KRSo.js +1 -0
  126. package/dist/diff_tool/app/dist/assets/github-light-default-D7oLnXFd.js +1 -0
  127. package/dist/diff_tool/app/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  128. package/dist/diff_tool/app/dist/assets/gleam-BspZqrRM.js +1 -0
  129. package/dist/diff_tool/app/dist/assets/glimmer-js-Rg0-pVw9.js +1 -0
  130. package/dist/diff_tool/app/dist/assets/glimmer-ts-U6CK756n.js +1 -0
  131. package/dist/diff_tool/app/dist/assets/glsl-DplSGwfg.js +1 -0
  132. package/dist/diff_tool/app/dist/assets/gn-n2N0HUVH.js +1 -0
  133. package/dist/diff_tool/app/dist/assets/gnuplot-DdkO51Og.js +1 -0
  134. package/dist/diff_tool/app/dist/assets/go-CxLEBnE3.js +1 -0
  135. package/dist/diff_tool/app/dist/assets/graphql-ChdNCCLP.js +1 -0
  136. package/dist/diff_tool/app/dist/assets/groovy-gcz8RCvz.js +1 -0
  137. package/dist/diff_tool/app/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  138. package/dist/diff_tool/app/dist/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  139. package/dist/diff_tool/app/dist/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  140. package/dist/diff_tool/app/dist/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  141. package/dist/diff_tool/app/dist/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  142. package/dist/diff_tool/app/dist/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  143. package/dist/diff_tool/app/dist/assets/hack-CaT9iCJl.js +1 -0
  144. package/dist/diff_tool/app/dist/assets/haml-B8DHNrY2.js +1 -0
  145. package/dist/diff_tool/app/dist/assets/handlebars-BL8al0AC.js +1 -0
  146. package/dist/diff_tool/app/dist/assets/haskell-Df6bDoY_.js +1 -0
  147. package/dist/diff_tool/app/dist/assets/haxe-CzTSHFRz.js +1 -0
  148. package/dist/diff_tool/app/dist/assets/hcl-BWvSN4gD.js +1 -0
  149. package/dist/diff_tool/app/dist/assets/hjson-D5-asLiD.js +1 -0
  150. package/dist/diff_tool/app/dist/assets/hlsl-D3lLCCz7.js +1 -0
  151. package/dist/diff_tool/app/dist/assets/horizon-BUw7H-hv.js +1 -0
  152. package/dist/diff_tool/app/dist/assets/horizon-bright-Cn-bp-IR.js +1 -0
  153. package/dist/diff_tool/app/dist/assets/houston-DnULxvSX.js +1 -0
  154. package/dist/diff_tool/app/dist/assets/html-GMplVEZG.js +1 -0
  155. package/dist/diff_tool/app/dist/assets/html-derivative-BFtXZ54Q.js +1 -0
  156. package/dist/diff_tool/app/dist/assets/http-jrhK8wxY.js +1 -0
  157. package/dist/diff_tool/app/dist/assets/hurl-irOxFIW8.js +1 -0
  158. package/dist/diff_tool/app/dist/assets/hxml-Bvhsp5Yf.js +1 -0
  159. package/dist/diff_tool/app/dist/assets/hy-DFXneXwc.js +1 -0
  160. package/dist/diff_tool/app/dist/assets/imba-DGztddWO.js +1 -0
  161. package/dist/diff_tool/app/dist/assets/index-BGMccoTY.css +1 -0
  162. package/dist/diff_tool/app/dist/assets/index-_ajOenBj.js +1887 -0
  163. package/dist/diff_tool/app/dist/assets/ini-BEwlwnbL.js +1 -0
  164. package/dist/diff_tool/app/dist/assets/java-CylS5w8V.js +1 -0
  165. package/dist/diff_tool/app/dist/assets/javascript-wDzz0qaB.js +1 -0
  166. package/dist/diff_tool/app/dist/assets/jinja-4LBKfQ-Z.js +1 -0
  167. package/dist/diff_tool/app/dist/assets/jison-wvAkD_A8.js +1 -0
  168. package/dist/diff_tool/app/dist/assets/json-Cp-IABpG.js +1 -0
  169. package/dist/diff_tool/app/dist/assets/json5-C9tS-k6U.js +1 -0
  170. package/dist/diff_tool/app/dist/assets/jsonc-Des-eS-w.js +1 -0
  171. package/dist/diff_tool/app/dist/assets/jsonl-DcaNXYhu.js +1 -0
  172. package/dist/diff_tool/app/dist/assets/jsonnet-DFQXde-d.js +1 -0
  173. package/dist/diff_tool/app/dist/assets/jssm-C2t-YnRu.js +1 -0
  174. package/dist/diff_tool/app/dist/assets/jsx-g9-lgVsj.js +1 -0
  175. package/dist/diff_tool/app/dist/assets/julia-CxzCAyBv.js +1 -0
  176. package/dist/diff_tool/app/dist/assets/just-Cw27pwNe.js +1 -0
  177. package/dist/diff_tool/app/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  178. package/dist/diff_tool/app/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  179. package/dist/diff_tool/app/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
  180. package/dist/diff_tool/app/dist/assets/kdl-DV7GczEv.js +1 -0
  181. package/dist/diff_tool/app/dist/assets/kotlin-BdnUsdx6.js +1 -0
  182. package/dist/diff_tool/app/dist/assets/kusto-DZf3V79B.js +1 -0
  183. package/dist/diff_tool/app/dist/assets/laserwave-DUszq2jm.js +1 -0
  184. package/dist/diff_tool/app/dist/assets/latex-CWtU0Tv5.js +1 -0
  185. package/dist/diff_tool/app/dist/assets/lean-BZvkOJ9d.js +1 -0
  186. package/dist/diff_tool/app/dist/assets/less-B1dDrJ26.js +1 -0
  187. package/dist/diff_tool/app/dist/assets/light-plus-B7mTdjB0.js +1 -0
  188. package/dist/diff_tool/app/dist/assets/liquid-DYVedYrR.js +1 -0
  189. package/dist/diff_tool/app/dist/assets/llvm-DjAJT7YJ.js +1 -0
  190. package/dist/diff_tool/app/dist/assets/log-2UxHyX5q.js +1 -0
  191. package/dist/diff_tool/app/dist/assets/logo-BtOb2qkB.js +1 -0
  192. package/dist/diff_tool/app/dist/assets/lua-BaeVxFsk.js +1 -0
  193. package/dist/diff_tool/app/dist/assets/luau-C-HG3fhB.js +1 -0
  194. package/dist/diff_tool/app/dist/assets/make-CHLpvVh8.js +1 -0
  195. package/dist/diff_tool/app/dist/assets/markdown-Cvjx9yec.js +1 -0
  196. package/dist/diff_tool/app/dist/assets/marko-CnJfTvn9.js +1 -0
  197. package/dist/diff_tool/app/dist/assets/material-theme-D5KoaKCx.js +1 -0
  198. package/dist/diff_tool/app/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
  199. package/dist/diff_tool/app/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  200. package/dist/diff_tool/app/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
  201. package/dist/diff_tool/app/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  202. package/dist/diff_tool/app/dist/assets/matlab-D7o27uSR.js +1 -0
  203. package/dist/diff_tool/app/dist/assets/mdc-BMNejdWA.js +1 -0
  204. package/dist/diff_tool/app/dist/assets/mdx-Cmh6b_Ma.js +1 -0
  205. package/dist/diff_tool/app/dist/assets/mermaid-mWjccvbQ.js +1 -0
  206. package/dist/diff_tool/app/dist/assets/min-dark-CafNBF8u.js +1 -0
  207. package/dist/diff_tool/app/dist/assets/min-light-CTRr51gU.js +1 -0
  208. package/dist/diff_tool/app/dist/assets/mipsasm-CKIfxQSi.js +1 -0
  209. package/dist/diff_tool/app/dist/assets/mojo-rZm6bMo-.js +1 -0
  210. package/dist/diff_tool/app/dist/assets/monokai-D4h5O-jR.js +1 -0
  211. package/dist/diff_tool/app/dist/assets/moonbit-_H4v1dQx.js +1 -0
  212. package/dist/diff_tool/app/dist/assets/move-IF9eRakj.js +1 -0
  213. package/dist/diff_tool/app/dist/assets/narrat-DRg8JJMk.js +1 -0
  214. package/dist/diff_tool/app/dist/assets/nextflow-Zz6hmt5N.js +1 -0
  215. package/dist/diff_tool/app/dist/assets/nextflow-groovy-BeH2EWoN.js +1 -0
  216. package/dist/diff_tool/app/dist/assets/nginx-BpAMiNFr.js +1 -0
  217. package/dist/diff_tool/app/dist/assets/night-owl-C39BiMTA.js +1 -0
  218. package/dist/diff_tool/app/dist/assets/night-owl-light-CMTm3GFP.js +1 -0
  219. package/dist/diff_tool/app/dist/assets/nim-CVrawwO9.js +1 -0
  220. package/dist/diff_tool/app/dist/assets/nix-CwoSXNpI.js +1 -0
  221. package/dist/diff_tool/app/dist/assets/nord-Ddv68eIx.js +1 -0
  222. package/dist/diff_tool/app/dist/assets/nushell-Cz2AlsmD.js +1 -0
  223. package/dist/diff_tool/app/dist/assets/objective-c-DXmwc3jG.js +1 -0
  224. package/dist/diff_tool/app/dist/assets/objective-cpp-CLxacb5B.js +1 -0
  225. package/dist/diff_tool/app/dist/assets/ocaml-C0hk2d4L.js +1 -0
  226. package/dist/diff_tool/app/dist/assets/odin-BBf5iR-q.js +1 -0
  227. package/dist/diff_tool/app/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  228. package/dist/diff_tool/app/dist/assets/one-light-C3Wv6jpd.js +1 -0
  229. package/dist/diff_tool/app/dist/assets/openscad-C4EeE6gA.js +1 -0
  230. package/dist/diff_tool/app/dist/assets/pascal-D93ZcfNL.js +1 -0
  231. package/dist/diff_tool/app/dist/assets/perl-C0TMdlhV.js +1 -0
  232. package/dist/diff_tool/app/dist/assets/php-Dhbhpdrm.js +1 -0
  233. package/dist/diff_tool/app/dist/assets/pierre-dark-ClCaJvdG.js +1 -0
  234. package/dist/diff_tool/app/dist/assets/pierre-light-zjGsWSiE.js +1 -0
  235. package/dist/diff_tool/app/dist/assets/pkl-u5AG7uiY.js +1 -0
  236. package/dist/diff_tool/app/dist/assets/plastic-3e1v2bzS.js +1 -0
  237. package/dist/diff_tool/app/dist/assets/plsql-ChMvpjG-.js +1 -0
  238. package/dist/diff_tool/app/dist/assets/po-BTJTHyun.js +1 -0
  239. package/dist/diff_tool/app/dist/assets/poimandres-CS3Unz2-.js +1 -0
  240. package/dist/diff_tool/app/dist/assets/polar-C0HS_06l.js +1 -0
  241. package/dist/diff_tool/app/dist/assets/postcss-CXtECtnM.js +1 -0
  242. package/dist/diff_tool/app/dist/assets/powerquery-CEu0bR-o.js +1 -0
  243. package/dist/diff_tool/app/dist/assets/powershell-Dpen1YoG.js +1 -0
  244. package/dist/diff_tool/app/dist/assets/prisma-Dd19v3D-.js +1 -0
  245. package/dist/diff_tool/app/dist/assets/prolog-CbFg5uaA.js +1 -0
  246. package/dist/diff_tool/app/dist/assets/proto-C7zT0LnQ.js +1 -0
  247. package/dist/diff_tool/app/dist/assets/pug-CGlum2m_.js +1 -0
  248. package/dist/diff_tool/app/dist/assets/puppet-BMWR74SV.js +1 -0
  249. package/dist/diff_tool/app/dist/assets/purescript-CklMAg4u.js +1 -0
  250. package/dist/diff_tool/app/dist/assets/python-B6aJPvgy.js +1 -0
  251. package/dist/diff_tool/app/dist/assets/qml-3beO22l8.js +1 -0
  252. package/dist/diff_tool/app/dist/assets/qmldir-C8lEn-DE.js +1 -0
  253. package/dist/diff_tool/app/dist/assets/qss-IeuSbFQv.js +1 -0
  254. package/dist/diff_tool/app/dist/assets/r-Dspwwk_N.js +1 -0
  255. package/dist/diff_tool/app/dist/assets/racket-BqYA7rlc.js +1 -0
  256. package/dist/diff_tool/app/dist/assets/raku-DXvB9xmW.js +1 -0
  257. package/dist/diff_tool/app/dist/assets/razor-Uh8Bk_45.js +1 -0
  258. package/dist/diff_tool/app/dist/assets/red-bN70gL4F.js +1 -0
  259. package/dist/diff_tool/app/dist/assets/reg-C-SQnVFl.js +1 -0
  260. package/dist/diff_tool/app/dist/assets/regexp-CDVJQ6XC.js +1 -0
  261. package/dist/diff_tool/app/dist/assets/rel-C3B-1QV4.js +1 -0
  262. package/dist/diff_tool/app/dist/assets/riscv-BM1_JUlF.js +1 -0
  263. package/dist/diff_tool/app/dist/assets/ron-D8l8udqQ.js +1 -0
  264. package/dist/diff_tool/app/dist/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  265. package/dist/diff_tool/app/dist/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  266. package/dist/diff_tool/app/dist/assets/rose-pine-qdsjHGoJ.js +1 -0
  267. package/dist/diff_tool/app/dist/assets/rosmsg-BJDFO7_C.js +1 -0
  268. package/dist/diff_tool/app/dist/assets/rst-BrH8l1NY.js +1 -0
  269. package/dist/diff_tool/app/dist/assets/ruby-Dw2BHqvy.js +1 -0
  270. package/dist/diff_tool/app/dist/assets/rust-B1yitclQ.js +1 -0
  271. package/dist/diff_tool/app/dist/assets/sas-cz2c8ADy.js +1 -0
  272. package/dist/diff_tool/app/dist/assets/sass-Cj5Yp3dK.js +1 -0
  273. package/dist/diff_tool/app/dist/assets/scala-C151Ov-r.js +1 -0
  274. package/dist/diff_tool/app/dist/assets/scheme-C98Dy4si.js +1 -0
  275. package/dist/diff_tool/app/dist/assets/scss-OYdSNvt2.js +1 -0
  276. package/dist/diff_tool/app/dist/assets/sdbl-DVxCFoDh.js +1 -0
  277. package/dist/diff_tool/app/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
  278. package/dist/diff_tool/app/dist/assets/shellscript-Yzrsuije.js +1 -0
  279. package/dist/diff_tool/app/dist/assets/shellsession-BADoaaVG.js +1 -0
  280. package/dist/diff_tool/app/dist/assets/slack-dark-BthQWCQV.js +1 -0
  281. package/dist/diff_tool/app/dist/assets/slack-ochin-DqwNpetd.js +1 -0
  282. package/dist/diff_tool/app/dist/assets/smalltalk-BERRCDM3.js +1 -0
  283. package/dist/diff_tool/app/dist/assets/snazzy-light-Bw305WKR.js +1 -0
  284. package/dist/diff_tool/app/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
  285. package/dist/diff_tool/app/dist/assets/solarized-light-L9t79GZl.js +1 -0
  286. package/dist/diff_tool/app/dist/assets/solidity-rGO070M0.js +1 -0
  287. package/dist/diff_tool/app/dist/assets/soy-Brmx7dQM.js +1 -0
  288. package/dist/diff_tool/app/dist/assets/sparql-rVzFXLq3.js +1 -0
  289. package/dist/diff_tool/app/dist/assets/splunk-BtCnVYZw.js +1 -0
  290. package/dist/diff_tool/app/dist/assets/sql-BLtJtn59.js +1 -0
  291. package/dist/diff_tool/app/dist/assets/ssh-config-_ykCGR6B.js +1 -0
  292. package/dist/diff_tool/app/dist/assets/stata-BH5u7GGu.js +1 -0
  293. package/dist/diff_tool/app/dist/assets/stylus-BEDo0Tqx.js +1 -0
  294. package/dist/diff_tool/app/dist/assets/surrealql-Bq5Q-fJD.js +1 -0
  295. package/dist/diff_tool/app/dist/assets/svelte-C_ipcX3V.js +1 -0
  296. package/dist/diff_tool/app/dist/assets/swift-D82vCrfD.js +1 -0
  297. package/dist/diff_tool/app/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
  298. package/dist/diff_tool/app/dist/assets/system-verilog-CnnmHF94.js +1 -0
  299. package/dist/diff_tool/app/dist/assets/systemd-4A_iFExJ.js +1 -0
  300. package/dist/diff_tool/app/dist/assets/talonscript-CkByrt1z.js +1 -0
  301. package/dist/diff_tool/app/dist/assets/tasl-QIJgUcNo.js +1 -0
  302. package/dist/diff_tool/app/dist/assets/tcl-dwOrl1Do.js +1 -0
  303. package/dist/diff_tool/app/dist/assets/templ-P3uqSqPl.js +1 -0
  304. package/dist/diff_tool/app/dist/assets/terraform-BETggiCN.js +1 -0
  305. package/dist/diff_tool/app/dist/assets/tex-idrVyKtj.js +1 -0
  306. package/dist/diff_tool/app/dist/assets/tokyo-night-hegEt444.js +1 -0
  307. package/dist/diff_tool/app/dist/assets/toml-vGWfd6FD.js +1 -0
  308. package/dist/diff_tool/app/dist/assets/ts-tags-zn1MmPIZ.js +1 -0
  309. package/dist/diff_tool/app/dist/assets/tsv-B_m7g4N7.js +1 -0
  310. package/dist/diff_tool/app/dist/assets/tsx-COt5Ahok.js +1 -0
  311. package/dist/diff_tool/app/dist/assets/turtle-BsS91CYL.js +1 -0
  312. package/dist/diff_tool/app/dist/assets/twig-DNn4PbVi.js +1 -0
  313. package/dist/diff_tool/app/dist/assets/typescript-BPQ3VLAy.js +1 -0
  314. package/dist/diff_tool/app/dist/assets/typespec-BGHnOYBU.js +1 -0
  315. package/dist/diff_tool/app/dist/assets/typst-DHCkPAjA.js +1 -0
  316. package/dist/diff_tool/app/dist/assets/v-BcVCzyr7.js +1 -0
  317. package/dist/diff_tool/app/dist/assets/vala-CsfeWuGM.js +1 -0
  318. package/dist/diff_tool/app/dist/assets/vb-D17OF-Vu.js +1 -0
  319. package/dist/diff_tool/app/dist/assets/verilog-BQ8w6xss.js +1 -0
  320. package/dist/diff_tool/app/dist/assets/vesper-DU1UobuO.js +1 -0
  321. package/dist/diff_tool/app/dist/assets/vhdl-CeAyd5Ju.js +1 -0
  322. package/dist/diff_tool/app/dist/assets/viml-CJc9bBzg.js +1 -0
  323. package/dist/diff_tool/app/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
  324. package/dist/diff_tool/app/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
  325. package/dist/diff_tool/app/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
  326. package/dist/diff_tool/app/dist/assets/vue-DN_0RTcg.js +1 -0
  327. package/dist/diff_tool/app/dist/assets/vue-html-AaS7Mt5G.js +1 -0
  328. package/dist/diff_tool/app/dist/assets/vue-vine-CQOfvN7w.js +1 -0
  329. package/dist/diff_tool/app/dist/assets/vyper-CDx5xZoG.js +1 -0
  330. package/dist/diff_tool/app/dist/assets/wasm-CG6Dc4jp.js +1 -0
  331. package/dist/diff_tool/app/dist/assets/wasm-MzD3tlZU.js +1 -0
  332. package/dist/diff_tool/app/dist/assets/wenyan-BV7otONQ.js +1 -0
  333. package/dist/diff_tool/app/dist/assets/wgsl-Dx-B1_4e.js +1 -0
  334. package/dist/diff_tool/app/dist/assets/wikitext-BhOHFoWU.js +1 -0
  335. package/dist/diff_tool/app/dist/assets/wit-5i3qLPDT.js +1 -0
  336. package/dist/diff_tool/app/dist/assets/wolfram-lXgVvXCa.js +1 -0
  337. package/dist/diff_tool/app/dist/assets/xml-sdJ4AIDG.js +1 -0
  338. package/dist/diff_tool/app/dist/assets/xsl-CtQFsRM5.js +1 -0
  339. package/dist/diff_tool/app/dist/assets/yaml-Buea-lGh.js +1 -0
  340. package/dist/diff_tool/app/dist/assets/zenscript-DVFEvuxE.js +1 -0
  341. package/dist/diff_tool/app/dist/assets/zig-VOosw3JB.js +1 -0
  342. package/dist/diff_tool/app/dist/fonts/GeistMono-Medium.woff2 +0 -0
  343. package/dist/diff_tool/app/dist/fonts/GeistMono-Regular.woff2 +0 -0
  344. package/dist/diff_tool/app/dist/index.html +13 -0
  345. package/dist/diff_tool/http_server.js +354 -0
  346. package/dist/diff_tool/http_server.js.map +1 -0
  347. package/dist/diff_tool/index.js +42 -0
  348. package/dist/diff_tool/index.js.map +1 -0
  349. package/dist/diff_tool/launcher.js +7 -0
  350. package/dist/diff_tool/launcher.js.map +1 -0
  351. package/dist/diff_tool/protocol_client.js +247 -0
  352. package/dist/diff_tool/protocol_client.js.map +1 -0
  353. package/dist/diff_tool/review_state.js +140 -0
  354. package/dist/diff_tool/review_state.js.map +1 -0
  355. package/dist/diff_tool/shared_types.js +2 -0
  356. package/dist/diff_tool/shared_types.js.map +1 -0
  357. package/dist/main.js +45 -2
  358. package/dist/main.js.map +1 -1
  359. package/dist/tui/app.js.map +1 -1
  360. package/dist/tui/chat_controller/diff_review_service.js +258 -0
  361. package/dist/tui/chat_controller/diff_review_service.js.map +1 -0
  362. package/dist/tui/chat_controller/interrupt_lifecycle.js +1 -3
  363. package/dist/tui/chat_controller/interrupt_lifecycle.js.map +1 -1
  364. package/dist/tui/chat_controller.js +127 -31
  365. package/dist/tui/chat_controller.js.map +1 -1
  366. package/dist/tui/chat_view.js +4 -0
  367. package/dist/tui/chat_view.js.map +1 -1
  368. package/dist/tui/ui/chat_message_model.js +16 -2
  369. package/dist/tui/ui/chat_message_model.js.map +1 -1
  370. package/dist/tui/ui/components/editor.js +79 -13
  371. package/dist/tui/ui/components/editor.js.map +1 -1
  372. package/dist/tui/ui/components/undo_stack.js +16 -0
  373. package/dist/tui/ui/components/undo_stack.js.map +1 -0
  374. package/dist/tui/ui/diff_review_message.js +82 -0
  375. package/dist/tui/ui/diff_review_message.js.map +1 -0
  376. package/dist/tui/ui/rewind_picker.js +2 -7
  377. package/dist/tui/ui/rewind_picker.js.map +1 -1
  378. package/dist/tui/ui/subagent_panel.js +17 -0
  379. package/dist/tui/ui/subagent_panel.js.map +1 -1
  380. package/dist/tui/ui/theme/palette.js +2 -0
  381. package/dist/tui/ui/theme/palette.js.map +1 -1
  382. package/dist/tui/ui/theme/theme.js.map +1 -1
  383. package/dist/tui/ui/user_message.js +8 -4
  384. package/dist/tui/ui/user_message.js.map +1 -1
  385. package/package.json +4 -4
@@ -0,0 +1,148 @@
1
+ import { ConversationTurnRuntime } from "../runtime/conversation_turn_runtime.js";
2
+ import { createDefaultCoreDeps } from "../runtime/deps.js";
3
+ import { resolveRuntimePromptBootstrap } from "../runtime/runtime_bootstrap.js";
4
+ import { composeSessionPrompts } from "../runtime/session_prompt_composer.js";
5
+ import { CoreSession } from "../session/core_session.js";
6
+ import { renderDiffReviewWrapperPrompt } from "../static/index.js";
7
+ import { BASH_TOOL } from "../tools/bash.js";
8
+ import { ToolCatalog } from "../tools/catalog.js";
9
+ import { createLocalToolExecutionBackend, } from "../tools/execution_backend.js";
10
+ import { TOOL_NAME_BASH, TOOL_NAME_VIEW_IMAGE } from "../tools/tool_names.js";
11
+ import { VIEW_IMAGE_TOOL } from "../tools/view_image.js";
12
+ import { appendUsageLogEntry, getUsageCostTotal, getUsageTotals } from "../usage/logs.js";
13
+ import { extractAssistantText } from "../utils/messages.js";
14
+ export class DiffReviewThread {
15
+ session;
16
+ runtime;
17
+ personaId;
18
+ reasoningEffort;
19
+ constructor(options) {
20
+ const deps = options.deps ?? createDefaultCoreDeps();
21
+ const backend = options.toolExecutionBackend ??
22
+ createLocalToolExecutionBackend({
23
+ spawn: deps.spawn,
24
+ env: deps.env,
25
+ });
26
+ this.personaId = options.persona.id;
27
+ this.reasoningEffort = options.persona.settings.reasoning ?? "none";
28
+ const persona = createDiffReviewPersona(options.persona, options.snapshot);
29
+ const promptBootstrap = resolveRuntimePromptBootstrap({
30
+ persona,
31
+ discoveredSkills: options.discoveredSkills ?? [],
32
+ cwd: options.snapshot.cwd,
33
+ home: deps.env.home(),
34
+ includeAgentContext: options.includeAgentContext ?? true,
35
+ sandboxEnabled: false,
36
+ readFile: deps.fs.readFile,
37
+ });
38
+ const promptComposition = composeSessionPrompts({
39
+ persona,
40
+ riskLevel: "read-only",
41
+ cwd: promptBootstrap.promptContext.cwd,
42
+ hostCwd: promptBootstrap.promptContext.hostCwd,
43
+ datetime: new Date(deps.clock.now()).toISOString(),
44
+ platform: deps.env.platform(),
45
+ nodeVersion: deps.env.nodeVersion(),
46
+ skillsBlock: promptBootstrap.promptContext.skillsBlock,
47
+ projectContextBlock: promptBootstrap.promptContext.projectContextBlock,
48
+ sandboxEnabled: false,
49
+ });
50
+ const toolRegistry = ToolCatalog.createSubagentRegistry([TOOL_NAME_BASH, TOOL_NAME_VIEW_IMAGE], options.config, backend);
51
+ this.session = new CoreSession({
52
+ persona,
53
+ systemPrompt: promptComposition.baseSystemPrompt,
54
+ subagentPrompts: promptComposition.subagentPrompts,
55
+ riskLevel: "read-only",
56
+ toolRegistry,
57
+ config: options.config,
58
+ deps,
59
+ cwd: promptBootstrap.promptContext.cwd,
60
+ hostCwd: promptBootstrap.promptContext.hostCwd,
61
+ home: promptBootstrap.promptContext.home,
62
+ includeAgentContext: promptBootstrap.promptContext.includeAgentContext,
63
+ sandboxEnabled: false,
64
+ });
65
+ this.runtime = new ConversationTurnRuntime(this.session);
66
+ }
67
+ async submitMessage(message) {
68
+ this.session.addUserText(message);
69
+ const result = await this.runtime.run();
70
+ if (result.aborted) {
71
+ throw new Error("diff review thread was interrupted");
72
+ }
73
+ const assistantMessage = findLastAssistantMessage(this.session);
74
+ if (!assistantMessage) {
75
+ throw new Error("diff review thread produced no assistant response");
76
+ }
77
+ const response = extractAssistantText(assistantMessage).trim();
78
+ if (!response) {
79
+ throw new Error("diff review thread produced an empty assistant response");
80
+ }
81
+ appendUsageLogEntry({
82
+ timestamp: assistantMessage.timestamp,
83
+ sessionId: this.session.sessionId,
84
+ personaId: this.personaId,
85
+ provider: assistantMessage.provider,
86
+ model: assistantMessage.model,
87
+ api: assistantMessage.api,
88
+ reasoningEffort: this.reasoningEffort,
89
+ usage: getUsageTotals(assistantMessage.usage),
90
+ cost: { total: getUsageCostTotal(assistantMessage.usage) },
91
+ agent: { type: "review" },
92
+ });
93
+ return response;
94
+ }
95
+ interrupt() {
96
+ return this.runtime.interrupt();
97
+ }
98
+ }
99
+ export function buildDiffReviewSystemPrompt(mainPersonaSystemPrompt, snapshot) {
100
+ return renderDiffReviewWrapperPrompt({
101
+ inheritedInstructions: mainPersonaSystemPrompt,
102
+ reviewContext: buildReviewContextBlock(snapshot),
103
+ });
104
+ }
105
+ function createDiffReviewPersona(persona, snapshot) {
106
+ return {
107
+ ...persona,
108
+ id: `${persona.id}-diff-review`,
109
+ label: `${persona.label} diff review`,
110
+ description: "Diff review assistant",
111
+ systemPrompt: buildDiffReviewSystemPrompt(persona.systemPrompt, snapshot),
112
+ subagents: undefined,
113
+ skills: persona.skills,
114
+ tools: [BASH_TOOL, VIEW_IMAGE_TOOL],
115
+ };
116
+ }
117
+ function buildReviewContextBlock(snapshot) {
118
+ const changedFiles = snapshot.files.length > 0
119
+ ? snapshot.files
120
+ .map((file) => {
121
+ const path = file.oldPath && file.newPath && file.oldPath !== file.newPath
122
+ ? `${file.oldPath} -> ${file.newPath}`
123
+ : file.path;
124
+ return `- ${path} (${file.status})`;
125
+ })
126
+ .join("\n")
127
+ : "- (no changed files)";
128
+ return [
129
+ `Repo root: ${snapshot.repoRoot}`,
130
+ `Cwd: ${snapshot.cwd}`,
131
+ `Diff command: ${snapshot.toDiffCommand()}`,
132
+ "",
133
+ "Changed files:",
134
+ changedFiles,
135
+ "",
136
+ "The full diff is not embedded in this prompt. Use read-only tools to inspect relevant repo context when needed.",
137
+ ].join("\n");
138
+ }
139
+ function findLastAssistantMessage(session) {
140
+ for (let index = session.historyEntries.length - 1; index >= 0; index -= 1) {
141
+ const entry = session.historyEntries[index];
142
+ if (entry?.message.role === "assistant") {
143
+ return entry.message;
144
+ }
145
+ }
146
+ return undefined;
147
+ }
148
+ //# sourceMappingURL=review_thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review_thread.js","sourceRoot":"","sources":["../../../src/core/diff_review/review_thread.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,453 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomBytes, randomUUID } from "node:crypto";
3
+ import { existsSync, rmSync } from "node:fs";
4
+ import { createServer } from "node:net";
5
+ import { join } from "node:path";
6
+ import { createInterface } from "node:readline";
7
+ import { createDefaultCoreDeps } from "../runtime/deps.js";
8
+ import { createDiffReviewErrorResponse, createDiffReviewSuccessResponse, DIFF_REVIEW_ERROR_CODES, DIFF_REVIEW_METHODS, DIFF_REVIEW_PROTOCOL_VERSION, parseDiffReviewRequestLine, serializeDiffReviewMessage, } from "./protocol.js";
9
+ import { DiffReviewThread } from "./review_thread.js";
10
+ import { captureDiffReviewSnapshot } from "./snapshot.js";
11
+ const DIFF_REVIEW_INITIALIZE_TIMEOUT_MS = 10_000;
12
+ export class DiffReviewSession {
13
+ sessionId;
14
+ snapshot;
15
+ persona;
16
+ config;
17
+ deps;
18
+ toolExecutionBackend;
19
+ createThreadSession;
20
+ socketPath;
21
+ authToken;
22
+ server;
23
+ threads = new Map();
24
+ connections = new Set();
25
+ uiStateListeners = new Set();
26
+ uiState = {
27
+ reviewAgent: { status: "idle" },
28
+ };
29
+ initializedConnection;
30
+ initializeTimeout;
31
+ completionResolver;
32
+ completionPromise;
33
+ completedResult;
34
+ closed = false;
35
+ constructor(options) {
36
+ this.sessionId = `tau-diff-review-${randomUUID()}`;
37
+ this.snapshot = options.snapshot;
38
+ this.persona = options.persona;
39
+ this.config = options.config;
40
+ this.deps = options.deps ?? createDefaultCoreDeps();
41
+ this.toolExecutionBackend = options.toolExecutionBackend;
42
+ this.socketPath = join("/tmp", `tau-diff-${randomBytes(8).toString("hex")}.sock`);
43
+ this.authToken = randomBytes(24).toString("hex");
44
+ this.createThreadSession =
45
+ options.createThread ??
46
+ ((threadId) => new DiffReviewThread({
47
+ threadId,
48
+ snapshot: this.snapshot,
49
+ persona: this.persona,
50
+ config: this.config,
51
+ discoveredSkills: options.discoveredSkills,
52
+ includeAgentContext: options.includeAgentContext,
53
+ deps: this.deps,
54
+ toolExecutionBackend: this.toolExecutionBackend,
55
+ }));
56
+ this.completionPromise = new Promise((resolve) => {
57
+ this.completionResolver = resolve;
58
+ });
59
+ }
60
+ get result() {
61
+ return this.completionPromise;
62
+ }
63
+ get protocolVersion() {
64
+ return DIFF_REVIEW_PROTOCOL_VERSION;
65
+ }
66
+ getUiState() {
67
+ return cloneDiffReviewUiState(this.uiState);
68
+ }
69
+ onUiStateChange(listener) {
70
+ this.uiStateListeners.add(listener);
71
+ listener(this.getUiState());
72
+ return () => {
73
+ this.uiStateListeners.delete(listener);
74
+ };
75
+ }
76
+ get launchEnvironment() {
77
+ return {
78
+ TAU_DIFF_PROTOCOL_VERSION: String(DIFF_REVIEW_PROTOCOL_VERSION),
79
+ TAU_DIFF_SOCKET: this.socketPath,
80
+ TAU_DIFF_TOKEN: this.authToken,
81
+ TAU_DIFF_SESSION_ID: this.sessionId,
82
+ TAU_DIFF_REPO_ROOT: this.snapshot.repoRoot,
83
+ TAU_DIFF_CWD: this.snapshot.cwd,
84
+ TAU_DIFF_ARGS_JSON: JSON.stringify(this.snapshot.diffArgs),
85
+ };
86
+ }
87
+ async start() {
88
+ if (this.server) {
89
+ return;
90
+ }
91
+ if (existsSync(this.socketPath)) {
92
+ rmSync(this.socketPath, { force: true });
93
+ }
94
+ this.server = createServer((socket) => this.handleConnection(socket));
95
+ await new Promise((resolve, reject) => {
96
+ const server = this.server;
97
+ if (!server) {
98
+ reject(new Error("diff review server was not created"));
99
+ return;
100
+ }
101
+ const onError = (error) => {
102
+ server.off("listening", onListening);
103
+ reject(error);
104
+ };
105
+ const onListening = () => {
106
+ server.off("error", onError);
107
+ resolve();
108
+ };
109
+ server.once("error", onError);
110
+ server.once("listening", onListening);
111
+ server.listen(this.socketPath);
112
+ });
113
+ this.armInitializeTimeout();
114
+ }
115
+ async launchTool(diffTool) {
116
+ const env = {
117
+ ...this.deps.env.env(),
118
+ ...(diffTool.env ?? {}),
119
+ ...this.launchEnvironment,
120
+ };
121
+ await new Promise((resolve, reject) => {
122
+ const child = spawn(diffTool.command, diffTool.args ?? [], {
123
+ cwd: this.snapshot.cwd,
124
+ env,
125
+ stdio: "ignore",
126
+ detached: true,
127
+ });
128
+ const onError = (error) => reject(error);
129
+ child.once("error", onError);
130
+ child.once("spawn", () => {
131
+ child.off("error", onError);
132
+ child.unref();
133
+ resolve();
134
+ });
135
+ });
136
+ }
137
+ async cancel(reason = "controller_cancelled") {
138
+ if (this.completedResult) {
139
+ return;
140
+ }
141
+ for (const thread of this.threads.values()) {
142
+ thread.interrupt();
143
+ }
144
+ await this.complete({ status: "cancelled", reason });
145
+ }
146
+ async close() {
147
+ if (!this.completedResult) {
148
+ await this.cancel("controller_cancelled");
149
+ return;
150
+ }
151
+ if (this.closed) {
152
+ return;
153
+ }
154
+ this.closed = true;
155
+ await this.closeServer();
156
+ }
157
+ handleConnection(socket) {
158
+ const readline = createInterface({ input: socket, crlfDelay: Number.POSITIVE_INFINITY });
159
+ const connection = {
160
+ socket,
161
+ readline,
162
+ initialized: false,
163
+ queue: Promise.resolve(),
164
+ };
165
+ this.connections.add(connection);
166
+ readline.on("line", (line) => {
167
+ connection.queue = connection.queue
168
+ .then(() => this.handleLine(connection, line))
169
+ .catch((error) => {
170
+ this.sendError(connection.socket, null, "internalError", "diff review request failed", {
171
+ cause: error instanceof Error ? error.message : String(error),
172
+ });
173
+ });
174
+ });
175
+ socket.on("close", () => {
176
+ readline.close();
177
+ this.connections.delete(connection);
178
+ const lostInitializedConnection = this.initializedConnection === connection;
179
+ if (lostInitializedConnection) {
180
+ this.initializedConnection = undefined;
181
+ }
182
+ if (!this.completedResult && lostInitializedConnection) {
183
+ void this.cancel("tool_disconnected");
184
+ return;
185
+ }
186
+ if (!this.completedResult && this.connections.size === 0 && !this.initializedConnection) {
187
+ void this.cancel("tool_disconnected");
188
+ }
189
+ });
190
+ socket.on("error", () => { });
191
+ }
192
+ async handleLine(connection, line) {
193
+ const parsed = parseDiffReviewRequestLine(line);
194
+ if (!parsed.ok) {
195
+ this.sendMessage(connection.socket, createDiffReviewErrorResponse(parsed.id, parsed.error.code, parsed.error.message, parsed.error.data));
196
+ return;
197
+ }
198
+ const request = parsed.request;
199
+ if (this.completedResult && request.method !== "initialize") {
200
+ this.sendError(connection.socket, request.id, "sessionClosed", "diff review session is closed");
201
+ return;
202
+ }
203
+ if (request.method !== "initialize" && !connection.initialized) {
204
+ this.sendError(connection.socket, request.id, "notInitialized", "call initialize before other diff review methods");
205
+ return;
206
+ }
207
+ switch (request.method) {
208
+ case "initialize":
209
+ this.handleInitialize(connection, request);
210
+ return;
211
+ case "session.get_context":
212
+ this.respond(connection.socket, request.id, request.method, {
213
+ sessionId: this.sessionId,
214
+ repoRoot: this.snapshot.repoRoot,
215
+ cwd: this.snapshot.cwd,
216
+ diffArgs: [...this.snapshot.diffArgs],
217
+ diffCommand: this.snapshot.toDiffCommand(),
218
+ });
219
+ return;
220
+ case "session.list_files":
221
+ this.respond(connection.socket, request.id, request.method, {
222
+ files: this.snapshot.files.map((file) => ({ ...file })),
223
+ });
224
+ return;
225
+ case "session.get_diff":
226
+ this.handleGetDiff(connection.socket, request);
227
+ return;
228
+ case "session.set_ui_text":
229
+ this.updateDiffToolUiText(request.params.text);
230
+ this.respond(connection.socket, request.id, request.method, { status: "updated" });
231
+ return;
232
+ case "thread.submit_message":
233
+ await this.handleThreadSubmit(connection.socket, request);
234
+ return;
235
+ case "session.return_review":
236
+ this.respond(connection.socket, request.id, request.method, { status: "returned" });
237
+ await this.complete({ status: "returned", review: request.params.review });
238
+ return;
239
+ case "session.cancel":
240
+ this.respond(connection.socket, request.id, request.method, { status: "cancelled" });
241
+ await this.cancel("tool_cancelled");
242
+ return;
243
+ }
244
+ }
245
+ handleInitialize(connection, request) {
246
+ if (request.params.token !== this.authToken) {
247
+ this.sendError(connection.socket, request.id, "unauthorized", "invalid diff review token");
248
+ return;
249
+ }
250
+ if (this.initializedConnection && this.initializedConnection !== connection) {
251
+ this.sendError(connection.socket, request.id, "invalidRequest", "diff review session already has an active client");
252
+ return;
253
+ }
254
+ const result = {
255
+ protocolVersion: DIFF_REVIEW_PROTOCOL_VERSION,
256
+ sessionId: this.sessionId,
257
+ methods: [...DIFF_REVIEW_METHODS],
258
+ alreadyInitialized: connection.initialized,
259
+ };
260
+ connection.initialized = true;
261
+ this.initializedConnection = connection;
262
+ this.clearInitializeTimeout();
263
+ this.sendMessage(connection.socket, createDiffReviewSuccessResponse(request.id, result));
264
+ }
265
+ handleGetDiff(socket, request) {
266
+ if (!request.params.path) {
267
+ this.respond(socket, request.id, request.method, {
268
+ scope: "session",
269
+ patch: this.snapshot.patch,
270
+ });
271
+ return;
272
+ }
273
+ const patch = this.snapshot.getFilePatch(request.params.path);
274
+ if (patch === undefined) {
275
+ this.sendError(socket, request.id, "invalidParams", `unknown diff file '${request.params.path}'`);
276
+ return;
277
+ }
278
+ this.respond(socket, request.id, request.method, {
279
+ scope: "file",
280
+ path: request.params.path,
281
+ patch,
282
+ });
283
+ }
284
+ async handleThreadSubmit(socket, request) {
285
+ const threadId = request.params.threadId ?? `thread-${randomUUID()}`;
286
+ const thread = this.getOrCreateThread(threadId);
287
+ this.updateReviewAgentActivity({ status: "running", threadId });
288
+ try {
289
+ const response = await thread.submitMessage(request.params.message);
290
+ if (this.completedResult || socket.destroyed) {
291
+ return;
292
+ }
293
+ this.respond(socket, request.id, request.method, { threadId, response });
294
+ }
295
+ catch (error) {
296
+ if (this.completedResult || socket.destroyed) {
297
+ return;
298
+ }
299
+ this.sendError(socket, request.id, "internalError", error instanceof Error ? error.message : String(error));
300
+ }
301
+ finally {
302
+ this.updateReviewAgentActivity({ status: "idle" });
303
+ }
304
+ }
305
+ getOrCreateThread(threadId) {
306
+ const existing = this.threads.get(threadId);
307
+ if (existing) {
308
+ return existing;
309
+ }
310
+ const created = this.createThreadSession(threadId);
311
+ this.threads.set(threadId, created);
312
+ return created;
313
+ }
314
+ updateDiffToolUiText(text) {
315
+ const nextText = text.trim() || undefined;
316
+ if (this.uiState.diffToolUiText === nextText) {
317
+ return;
318
+ }
319
+ this.uiState = {
320
+ ...(nextText ? { diffToolUiText: nextText } : {}),
321
+ reviewAgent: this.uiState.reviewAgent,
322
+ };
323
+ this.emitUiState();
324
+ }
325
+ updateReviewAgentActivity(activity) {
326
+ const current = this.uiState.reviewAgent;
327
+ const isUnchanged = current.status === activity.status &&
328
+ (current.status !== "running" ||
329
+ (activity.status === "running" && current.threadId === activity.threadId));
330
+ if (isUnchanged) {
331
+ return;
332
+ }
333
+ this.uiState = {
334
+ ...this.uiState,
335
+ reviewAgent: activity,
336
+ };
337
+ this.emitUiState();
338
+ }
339
+ emitUiState() {
340
+ const state = this.getUiState();
341
+ for (const listener of this.uiStateListeners) {
342
+ listener(state);
343
+ }
344
+ }
345
+ armInitializeTimeout() {
346
+ if (this.initializeTimeout || this.completedResult || this.initializedConnection) {
347
+ return;
348
+ }
349
+ this.initializeTimeout = setTimeout(() => {
350
+ this.initializeTimeout = undefined;
351
+ if (this.completedResult || this.initializedConnection) {
352
+ return;
353
+ }
354
+ void this.cancel("tool_disconnected");
355
+ }, DIFF_REVIEW_INITIALIZE_TIMEOUT_MS);
356
+ }
357
+ clearInitializeTimeout() {
358
+ if (!this.initializeTimeout) {
359
+ return;
360
+ }
361
+ clearTimeout(this.initializeTimeout);
362
+ this.initializeTimeout = undefined;
363
+ }
364
+ async complete(result) {
365
+ if (this.completedResult) {
366
+ return;
367
+ }
368
+ this.clearInitializeTimeout();
369
+ this.completedResult = result;
370
+ this.completionResolver?.(result);
371
+ this.completionResolver = undefined;
372
+ await this.close();
373
+ }
374
+ async closeServer() {
375
+ const server = this.server;
376
+ this.server = undefined;
377
+ this.clearInitializeTimeout();
378
+ for (const connection of this.connections) {
379
+ connection.readline.close();
380
+ connection.socket.destroy();
381
+ }
382
+ this.connections.clear();
383
+ this.initializedConnection = undefined;
384
+ if (server) {
385
+ await new Promise((resolve) => {
386
+ server.close(() => resolve());
387
+ });
388
+ }
389
+ if (existsSync(this.socketPath)) {
390
+ rmSync(this.socketPath, { force: true });
391
+ }
392
+ }
393
+ respond(socket, id, _method, result) {
394
+ this.sendMessage(socket, createDiffReviewSuccessResponse(id, result));
395
+ }
396
+ sendError(socket, id, code, message, data) {
397
+ const resolvedCode = DIFF_REVIEW_ERROR_CODES[code];
398
+ this.sendMessage(socket, createDiffReviewErrorResponse(id, resolvedCode, message, data));
399
+ }
400
+ sendMessage(socket, message) {
401
+ if (socket.destroyed) {
402
+ return;
403
+ }
404
+ socket.write(serializeDiffReviewMessage(message));
405
+ }
406
+ }
407
+ function cloneDiffReviewUiState(state) {
408
+ return {
409
+ ...(state.diffToolUiText ? { diffToolUiText: state.diffToolUiText } : {}),
410
+ reviewAgent: state.reviewAgent.status === "running"
411
+ ? { status: "running", threadId: state.reviewAgent.threadId }
412
+ : { status: "idle" },
413
+ };
414
+ }
415
+ export async function startDiffReviewSession(options) {
416
+ throwIfDiffReviewStartAborted(options.signal);
417
+ const snapshot = await captureDiffReviewSnapshot({
418
+ cwd: options.cwd,
419
+ diffArgs: options.diffArgs,
420
+ signal: options.signal,
421
+ deps: options.deps,
422
+ });
423
+ throwIfDiffReviewStartAborted(options.signal);
424
+ const session = new DiffReviewSession({
425
+ snapshot,
426
+ persona: options.persona,
427
+ config: options.config,
428
+ discoveredSkills: options.discoveredSkills,
429
+ includeAgentContext: options.includeAgentContext,
430
+ deps: options.deps,
431
+ toolExecutionBackend: options.toolExecutionBackend,
432
+ });
433
+ await session.start();
434
+ try {
435
+ throwIfDiffReviewStartAborted(options.signal);
436
+ await session.launchTool(options.diffTool);
437
+ }
438
+ catch (error) {
439
+ await session.cancel("launch_failed");
440
+ throw error;
441
+ }
442
+ return {
443
+ session,
444
+ result: session.result,
445
+ };
446
+ }
447
+ function throwIfDiffReviewStartAborted(signal) {
448
+ if (!signal?.aborted) {
449
+ return;
450
+ }
451
+ throw new Error("diff review start aborted");
452
+ }
453
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/diff_review/session.ts"],"names":[],"mappings":"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"}