tianshu-harness 3.36.1 → 3.37.1

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 (244) hide show
  1. package/README.en.md +42 -8
  2. package/README.ja.md +5 -4
  3. package/README.ko.md +5 -4
  4. package/README.md +39 -9
  5. package/dist/{account-login-T7LTLQXS.js → account-login-JZHSEBGU.js} +2 -2
  6. package/dist/{account-status-YCVLHU6B.js → account-status-I42D2QJQ.js} +4 -4
  7. package/dist/agent/worker-process/child.js +147 -171
  8. package/dist/benchmark/recovery-cli.js +369 -0
  9. package/dist/bootstrap-ZDTXBSMQ.js +216 -0
  10. package/dist/{chain-PZAH5ATB.js → chain-QDPX6C6L.js} +3 -3
  11. package/dist/{checkpoint-CD4PCJLL.js → checkpoint-ZWQFPXAB.js} +1 -1
  12. package/dist/chunk-2KAEEQVR.js +88 -0
  13. package/dist/{chunk-ZPRSF7HW.js → chunk-2LDUB2HU.js} +126 -18
  14. package/dist/{chunk-2T6QGCBS.js → chunk-2QHQMGCI.js} +10 -9
  15. package/dist/{chunk-C6JA6N5E.js → chunk-32GXAYAY.js} +2 -2
  16. package/dist/{chunk-VL3A4BXF.js → chunk-34JQ6NBQ.js} +3 -8
  17. package/dist/{chunk-U3W76LNL.js → chunk-3D7ZTHOU.js} +1 -1
  18. package/dist/{chunk-36UFT42V.js → chunk-3DZ5UT3I.js} +1 -1
  19. package/dist/{chunk-7N6UJSK4.js → chunk-4OVEE5LK.js} +7 -5
  20. package/dist/{chunk-2AD65B4B.js → chunk-4TBV3NBW.js} +2 -0
  21. package/dist/{chunk-XZY2LSCD.js → chunk-4WQEPVJE.js} +1 -1
  22. package/dist/{chunk-JT23MFRM.js → chunk-52C2QC5X.js} +1 -1
  23. package/dist/{chunk-GW2SDBVZ.js → chunk-5NS5VTEG.js} +4873 -1589
  24. package/dist/{chunk-V3GFYVH6.js → chunk-5UDGLJWY.js} +48 -29
  25. package/dist/{chunk-CVDQE7VZ.js → chunk-5VZWXY7D.js} +2 -2
  26. package/dist/{chunk-IVK574U7.js → chunk-6FBIQDPE.js} +3 -3
  27. package/dist/{chunk-ALC2MQJ6.js → chunk-6I2YCDUJ.js} +1 -1
  28. package/dist/chunk-6PBIFODH.js +40 -0
  29. package/dist/{chunk-LPE4KYBS.js → chunk-6T2LP2JY.js} +101 -4
  30. package/dist/{chunk-GA4EMIJN.js → chunk-7LVPOOJY.js} +140 -62
  31. package/dist/{chunk-LEX6ZH5U.js → chunk-7NIRK234.js} +7 -7
  32. package/dist/{chunk-CEK53KER.js → chunk-AAXTDLIV.js} +1 -1
  33. package/dist/{chunk-645YHSAB.js → chunk-APX6IEHB.js} +1 -1
  34. package/dist/{chunk-HIWSMYVF.js → chunk-BNLDMXLO.js} +3 -3
  35. package/dist/{chunk-MN2ADYQX.js → chunk-BUPAWHNU.js} +1 -26
  36. package/dist/chunk-C2G4F4QA.js +25 -0
  37. package/dist/chunk-CABETIHP.js +468 -0
  38. package/dist/{chunk-AQEVLMZQ.js → chunk-CAGVAJGD.js} +1 -1
  39. package/dist/{chunk-VQYUHD7Y.js → chunk-CD3J7T6J.js} +9 -2
  40. package/dist/{chunk-TZCG6QH5.js → chunk-D2EW4FEW.js} +4 -4
  41. package/dist/{chunk-OPDYSVSZ.js → chunk-D56A673F.js} +2 -0
  42. package/dist/{chunk-C7QEDSTS.js → chunk-DF5GCBXI.js} +3 -3
  43. package/dist/{chunk-JJNUYCOB.js → chunk-DRXRU7JG.js} +192 -470
  44. package/dist/{chunk-VOGUJOPO.js → chunk-DZZIOMDJ.js} +1 -1
  45. package/dist/{chunk-BN5EAOHH.js → chunk-ERJ3IGMT.js} +8 -8
  46. package/dist/{chunk-GOHETQWB.js → chunk-EZJNFWD6.js} +1756 -203
  47. package/dist/{chunk-ORFLZHKT.js → chunk-FPHXJIXM.js} +2 -2
  48. package/dist/{chunk-KD5KEXRO.js → chunk-FUWCG4K2.js} +490 -118
  49. package/dist/{chunk-FMXB56CJ.js → chunk-FYZIVIVJ.js} +243 -1
  50. package/dist/{chunk-ZST3KYP4.js → chunk-GK5AOL2S.js} +1 -1
  51. package/dist/{chunk-RIK3MRMJ.js → chunk-GOIHBCOH.js} +1 -1
  52. package/dist/{chunk-R44ENUT2.js → chunk-GP37UWT4.js} +800 -16
  53. package/dist/chunk-GU6QDIUX.js +1654 -0
  54. package/dist/{chunk-IR65K2FN.js → chunk-HL7V4MMW.js} +81 -8
  55. package/dist/{chunk-TQ3HB536.js → chunk-HQATVZF4.js} +2 -2
  56. package/dist/chunk-HVO25CQO.js +1254 -0
  57. package/dist/{chunk-HQMIE6FJ.js → chunk-IHS675GQ.js} +6 -6
  58. package/dist/{chunk-Y7QDHNZK.js → chunk-IYC2YV4N.js} +21 -8
  59. package/dist/{chunk-HRDPNWRY.js → chunk-IZL52GRN.js} +1 -1
  60. package/dist/{chunk-VUL2J36P.js → chunk-J4BX3L5F.js} +956 -69
  61. package/dist/{chunk-MWKOP5AK.js → chunk-J77Z2HOY.js} +964 -664
  62. package/dist/{chunk-XCH7RSLH.js → chunk-JISDUUGJ.js} +31 -21
  63. package/dist/{chunk-SOLY4KGP.js → chunk-JYP7C5V2.js} +1 -1
  64. package/dist/{chunk-K52NICQT.js → chunk-KDFVDY6Z.js} +3 -2
  65. package/dist/{chunk-RNXGGWRF.js → chunk-KJ7QRUYA.js} +317 -133
  66. package/dist/{chunk-2ZCSBEI7.js → chunk-KRLFV7NR.js} +1 -1
  67. package/dist/{chunk-RULFNJCE.js → chunk-LCZ7ENRJ.js} +3 -5
  68. package/dist/{chunk-3CKJKF4L.js → chunk-LE3INURI.js} +1 -1
  69. package/dist/{chunk-6DAVD4U2.js → chunk-LXHOYEYS.js} +1 -1
  70. package/dist/{chunk-UUWE62CS.js → chunk-LZ7F5WDW.js} +1 -1
  71. package/dist/{chunk-X7HIEUZM.js → chunk-MCTISTXO.js} +263 -26
  72. package/dist/{chunk-Q34EIPRA.js → chunk-MFCVPVMI.js} +1 -1
  73. package/dist/{chunk-WYKBLVEL.js → chunk-MFYCJYC7.js} +66 -71
  74. package/dist/chunk-MHWHJU5B.js +146 -0
  75. package/dist/{chunk-Q22ELIY4.js → chunk-MUQCFAJO.js} +158 -153
  76. package/dist/{chunk-SUEDYIAK.js → chunk-NBCW3AJZ.js} +3 -3
  77. package/dist/{chunk-RB7WBLDT.js → chunk-NDRKUGUX.js} +1 -1
  78. package/dist/chunk-NKIJHIE3.js +147 -0
  79. package/dist/{chunk-6ZJOBWNV.js → chunk-OBC4NBM2.js} +7 -6
  80. package/dist/{chunk-Z2NJXTYR.js → chunk-ODFVU622.js} +5 -0
  81. package/dist/{chunk-ZYAU4MKG.js → chunk-P2NJCUEJ.js} +15 -13
  82. package/dist/{chunk-SVE4Z7TF.js → chunk-P2Q7HUMW.js} +25 -10
  83. package/dist/{chunk-6MTSQPMR.js → chunk-PG44U7NT.js} +361 -292
  84. package/dist/chunk-PZEPU7EQ.js +97 -0
  85. package/dist/{chunk-VIWFOB4C.js → chunk-Q2P2X2T4.js} +1382 -78
  86. package/dist/{chunk-DVF6RX5I.js → chunk-Q56A5NIH.js} +10 -7
  87. package/dist/{chunk-5IKCONT3.js → chunk-R36PVJTU.js} +1 -1
  88. package/dist/{chunk-FL2MLWSP.js → chunk-RI5QX3VY.js} +423 -9
  89. package/dist/{chunk-XL4CI5K6.js → chunk-ROSAMY53.js} +1 -1
  90. package/dist/{chunk-YFZ5J3UX.js → chunk-RTAQVDQX.js} +2 -2
  91. package/dist/{chunk-TKRUQYW6.js → chunk-S3JLCMYK.js} +45 -3
  92. package/dist/chunk-SMDLQNCI.js +16 -0
  93. package/dist/chunk-SMMWTH2X.js +573 -0
  94. package/dist/{chunk-S7363SKC.js → chunk-SX7PINGN.js} +8 -6
  95. package/dist/{chunk-NBDJGCTF.js → chunk-SYOZGHP2.js} +3 -3
  96. package/dist/chunk-T2B6Z67Y.js +61 -0
  97. package/dist/{chunk-ARCZHV33.js → chunk-T42AKD3H.js} +3 -3
  98. package/dist/chunk-T4CVFZRL.js +98 -0
  99. package/dist/chunk-TCGSJDYV.js +283 -0
  100. package/dist/{chunk-QHCUYAEQ.js → chunk-TKSE3QAY.js} +12 -10
  101. package/dist/{chunk-MJ4JVZ7A.js → chunk-TM2TI5PE.js} +4 -0
  102. package/dist/{chunk-AWGONZQC.js → chunk-TUNCS72D.js} +1 -1
  103. package/dist/{chunk-HRBOGKQE.js → chunk-TWHEV3RK.js} +384 -183
  104. package/dist/chunk-UCMP5W4Q.js +19 -0
  105. package/dist/{chunk-UCTBCMPM.js → chunk-ULTZP5EM.js} +228 -14
  106. package/dist/{chunk-ZQGG2YK5.js → chunk-UMCXCMT5.js} +1551 -355
  107. package/dist/{chunk-OJLE4CBF.js → chunk-URPOQ5HS.js} +905 -809
  108. package/dist/{chunk-WOAL25MT.js → chunk-USRIG5QU.js} +570 -3
  109. package/dist/{chunk-RXDPUON5.js → chunk-UYR23YAR.js} +108 -2
  110. package/dist/{chunk-IANUGRZB.js → chunk-V3ZSAVGZ.js} +1 -1
  111. package/dist/{chunk-ZC7EJUYB.js → chunk-VLASZ54H.js} +1 -1
  112. package/dist/{chunk-Q2A7U3WW.js → chunk-VPEKB6KY.js} +16 -52
  113. package/dist/{chunk-IZJGDYPF.js → chunk-WDO4FTAB.js} +4 -2
  114. package/dist/chunk-WZWOG6SI.js +355 -0
  115. package/dist/{chunk-OTSVEM2O.js → chunk-X2RBFXWQ.js} +3 -1
  116. package/dist/{chunk-PZITOYRJ.js → chunk-X4QGMGT4.js} +95 -46
  117. package/dist/{chunk-TINEGYMH.js → chunk-XMSZJCNB.js} +3 -3
  118. package/dist/{chunk-7KB4JBTK.js → chunk-Z5KHHDKO.js} +1 -1
  119. package/dist/{chunk-WM7U2HDR.js → chunk-ZCYZYEYL.js} +141 -26
  120. package/dist/{chunk-B6QROCL3.js → chunk-ZGYMTR24.js} +2 -0
  121. package/dist/chunk-ZPVAFPIR.js +17233 -0
  122. package/dist/cli/entry.js +1 -1
  123. package/dist/{client-FV3Z36C7.js → client-JBHRMBCB.js} +2 -2
  124. package/dist/{context-QN22HZVA.js → context-5JRGI3LA.js} +26 -24
  125. package/dist/{create-agent-config-JP6LEUHA.js → create-agent-config-7BLM753I.js} +42 -41
  126. package/dist/{cvm-ledger-5J2CF2IH.js → cvm-ledger-UEROJZJN.js} +9 -7
  127. package/dist/default-registry-WTQZHA3S.js +117 -0
  128. package/dist/{chunk-UP3N22RQ.js → delivery-readonly-3IUPEUTE.js} +29 -29
  129. package/dist/{chunk-T655CBZ3.js → delivery-verification-plan-STL6TCES.js} +29 -9
  130. package/dist/{fetch-core-362HGGEL.js → fetch-core-3YTLMQ63.js} +4 -4
  131. package/dist/{git-command-I6L2QQNT.js → git-command-BTVV2CP4.js} +11 -11
  132. package/dist/{goal-criteria-HNJIU7VM.js → goal-criteria-7YCFJINP.js} +31 -28
  133. package/dist/{headless-HUUABOXI.js → headless-WO73L3K4.js} +12 -1
  134. package/dist/headless-coordinator-EIK56324.js +135 -0
  135. package/dist/headless-tool-registry-NWLZCMNB.js +202 -0
  136. package/dist/hook-runtime/manifest.json +18 -0
  137. package/dist/hook-runtime/win32-arm64/job-launch.exe +0 -0
  138. package/dist/hook-runtime/win32-x64/job-launch.exe +0 -0
  139. package/dist/{login-flow-HZHRWDMP.js → login-flow-WBIW4TPG.js} +9 -9
  140. package/dist/logs-cli-FGSA6MA5.js +1 -1
  141. package/dist/loop-TQPMB22M.js +116 -0
  142. package/dist/main.js +4537 -4175
  143. package/dist/{manager-DFUQAKQ4.js → manager-F6PNE2IQ.js} +8 -8
  144. package/dist/{manager-UOSQDLDE.js → manager-R252IV36.js} +9 -9
  145. package/dist/{meridian-indexer-3GQGU6N3.js → meridian-indexer-YNTUHKGP.js} +13 -14
  146. package/dist/package.json +1 -1
  147. package/dist/{path-grants-YZCKXR7U.js → path-grants-PFC4Y6RO.js} +2 -2
  148. package/dist/plan-approval-X7KVK3SG.js +60 -0
  149. package/dist/{plugin-loader-7VPMGSID.js → plugin-loader-XZHDEVKK.js} +7 -7
  150. package/dist/plugin-session-cache-USG3SJUQ.js +23 -0
  151. package/dist/{provider-cli-GPKJDTIG.js → provider-cli-Q6LFOFDL.js} +32 -29
  152. package/dist/{ownership-ledger-M2YWMNCN.js → provider-health-5JISR3GL.js} +3 -3
  153. package/dist/{recovery-cli-CKBZTKYX.js → recovery-cli-OGPCR37U.js} +16 -14
  154. package/dist/{serve-GNX43H42.js → serve-CC2M7JHP.js} +93 -98
  155. package/dist/{serve-agent-XAQCSD7L.js → serve-agent-IJ63MMCL.js} +183 -206
  156. package/dist/{service-GC7UZZ6C.js → service-BLDC5PFO.js} +10 -10
  157. package/dist/{session-persist-GYIL3GQW.js → session-persist-32QYKPNI.js} +7 -6
  158. package/dist/{skill-loader-QNKIAUWR.js → skill-loader-MFCCERBN.js} +2 -2
  159. package/dist/{skills-cli-T3YYFOFV.js → skills-cli-QPFZEQH7.js} +53 -51
  160. package/dist/{spawn-git-322LUSF5.js → spawn-git-G47JY5H3.js} +10 -10
  161. package/dist/{storage-cli-RSQMUXRU.js → storage-cli-7WA6XLZD.js} +24 -22
  162. package/dist/{test-execution-plan-C6VFC2F3.js → test-execution-plan-E2B32MSV.js} +2 -3
  163. package/dist/todo-2TQOHCU6.js +70 -0
  164. package/dist/tool-pipeline-YVS5TZE7.js +95 -0
  165. package/dist/{tool-preset-IR4QM5XI.js → tool-preset-URVN63WE.js} +8 -8
  166. package/dist/{wave-checkpoint-YU7FORXF.js → wave-checkpoint-IJ6OJI2P.js} +15 -15
  167. package/dist/{web-cli-GOVQKVUH.js → web-cli-AIW3L3CV.js} +3 -3
  168. package/dist/{web-search-XAPURSPT.js → web-search-ELGICB5J.js} +5 -5
  169. package/dist/workers/cpu-worker.js +13687 -2
  170. package/dist/workers/image-worker.js +20 -0
  171. package/dist/workers/verification-worker.js +15 -17
  172. package/package.json +6 -9
  173. package/dist/bootstrap-IFNFWNRE.js +0 -250
  174. package/dist/chunk-327HGVDW.js +0 -1232
  175. package/dist/chunk-36XJXTVC.js +0 -1116
  176. package/dist/chunk-3ASF7AKR.js +0 -118
  177. package/dist/chunk-3PDF6LUL.js +0 -123
  178. package/dist/chunk-3SRRU6OC.js +0 -168
  179. package/dist/chunk-4FBYPLF7.js +0 -150
  180. package/dist/chunk-4NUUK5SG.js +0 -963
  181. package/dist/chunk-5RQ6B5RF.js +0 -178
  182. package/dist/chunk-6ATKDB73.js +0 -130
  183. package/dist/chunk-6FMBZBKW.js +0 -76
  184. package/dist/chunk-6WZFF5JT.js +0 -89
  185. package/dist/chunk-AU7VICVK.js +0 -1238
  186. package/dist/chunk-AUQPIKXS.js +0 -1052
  187. package/dist/chunk-CSZE2ATZ.js +0 -155
  188. package/dist/chunk-DRB5MQFI.js +0 -366
  189. package/dist/chunk-E653LVG5.js +0 -727
  190. package/dist/chunk-EDTVNOQN.js +0 -54
  191. package/dist/chunk-EHONGTY5.js +0 -74
  192. package/dist/chunk-GONPFOPE.js +0 -307
  193. package/dist/chunk-GUQEPZH3.js +0 -35
  194. package/dist/chunk-HE3DLIKV.js +0 -2692
  195. package/dist/chunk-IDRGTMLL.js +0 -151
  196. package/dist/chunk-IQ67Z7D4.js +0 -617
  197. package/dist/chunk-JMZPRUT6.js +0 -89
  198. package/dist/chunk-JSM7QQPT.js +0 -524
  199. package/dist/chunk-JTMRWAWN.js +0 -90
  200. package/dist/chunk-JZ5AGNLZ.js +0 -206
  201. package/dist/chunk-KJ7NWH6R.js +0 -1930
  202. package/dist/chunk-KUJ74NWU.js +0 -100
  203. package/dist/chunk-LADQPNJB.js +0 -127
  204. package/dist/chunk-LIWDO7EB.js +0 -220
  205. package/dist/chunk-LPLEUVOH.js +0 -737
  206. package/dist/chunk-N7JNP3MB.js +0 -228
  207. package/dist/chunk-NLBR74W5.js +0 -8641
  208. package/dist/chunk-NO6DSH3Z.js +0 -114
  209. package/dist/chunk-OGMODVXU.js +0 -675
  210. package/dist/chunk-QB7TQWWX.js +0 -447
  211. package/dist/chunk-R7FCGYUB.js +0 -855
  212. package/dist/chunk-RDBC7R6S.js +0 -68
  213. package/dist/chunk-RO7A6HGV.js +0 -179
  214. package/dist/chunk-TKQUIO4E.js +0 -285
  215. package/dist/chunk-ULSTKGLP.js +0 -211
  216. package/dist/chunk-UXONC5JN.js +0 -158
  217. package/dist/chunk-XSMKTUIB.js +0 -254
  218. package/dist/chunk-YZNXPFVK.js +0 -397
  219. package/dist/chunk-ZM4GSI6X.js +0 -134
  220. package/dist/chunk-ZOFO5AQZ.js +0 -1977
  221. package/dist/chunk-ZTYPOJM2.js +0 -85
  222. package/dist/council-convene-HKSCZ4KT.js +0 -68
  223. package/dist/default-registry-YJD75ECW.js +0 -116
  224. package/dist/deliver-task-IRWMLODV.js +0 -102
  225. package/dist/delivery-gate-v2-YB742QSZ.js +0 -49
  226. package/dist/delivery-readonly-UGMN4M2F.js +0 -33
  227. package/dist/delivery-verification-plan-QCKVGOZX.js +0 -42
  228. package/dist/domain-knowledge-store-MXECK4QY.js +0 -11
  229. package/dist/galaxy-C73NFCA4.js +0 -148
  230. package/dist/headless-coordinator-5XE2OIQN.js +0 -148
  231. package/dist/loop-Q7AVZAER.js +0 -128
  232. package/dist/plan-approval-SLZCP34F.js +0 -37
  233. package/dist/review-discipline-6TFJVGKP.js +0 -55
  234. package/dist/review-router-HFODRGRU.js +0 -19
  235. package/dist/starflow-G6CJIWWG.js +0 -42
  236. package/dist/task-contract-YNMWZYNT.js +0 -32
  237. package/dist/task-ledger-4UP4PDMB.js +0 -35
  238. package/dist/team-orchestrate-T5GZFAUZ.js +0 -77
  239. package/dist/todo-VQ6LE3OG.js +0 -37
  240. package/dist/tool-pipeline-MNBV5TQX.js +0 -101
  241. package/dist/tool-tiers-ITOR2MHM.js +0 -23
  242. package/dist/verification-attribution-CSOGH6KH.js +0 -40
  243. package/dist/worktree-baseline-QDFJPNGL.js +0 -9
  244. package/dist/{chunk-IAJIIVLA.js → chunk-G7VEM5DN.js} +3 -3
package/README.en.md CHANGED
@@ -11,11 +11,26 @@
11
11
 
12
12
  <p align="center">
13
13
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases/latest"><img src="https://img.shields.io/github/v/release/huiliyi37/Tianshu-harness?color=8B5CF6&label=Release&logo=github" alt="Release"></a>
14
+ <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?color=181717&label=GitHub%20Downloads&logo=github" alt="GitHub Downloads"></a>
14
15
  <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/v/tianshu-harness?color=CB3837&label=npm&logo=npm" alt="npm"></a>
16
+ <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/d18m/tianshu-harness?color=CB3837&label=npm%20Downloads&logo=npm" alt="npm Downloads"></a>
17
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
18
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness/releases"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/download/badge.svg" alt="AtomGit Downloads"></a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="https://trendshift.io/repositories/100440" target="_blank"><img src="https://trendshift.io/api/badge/trendshift/repositories/100440/daily?language=TypeScript" alt="Trendshift: TypeScript repository of the day" width="250" height="55"></a>
23
+ &nbsp;
24
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/new_badge.svg" alt="G-Star Selected by AtomGit" width="250" height="55"></a>
25
+ </p>
26
+
27
+ <p align="center">
15
28
  <a href="https://tianshuharness.com"><img src="https://img.shields.io/badge/Website-tianshuharness.com-4285F4?logo=googlechrome&logoColor=white" alt="Website"></a>
29
+ <a href="https://tianshu.club/"><img src="https://img.shields.io/badge/Forum-tianshu.club-F59E0B" alt="Starport Forum"></a>
16
30
  <a href="docs/user-guide.md"><img src="https://img.shields.io/badge/Docs-User%20Guide-FBBC04" alt="Docs"></a>
17
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
31
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
18
32
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-34A853" alt="License"></a>
33
+ <a href="https://github.com/RyanAlberts/best-of-Agent-Harnesses"><img src="https://img.shields.io/badge/%F0%9F%8F%86_Best_of-Agent_Harnesses-5ac4bf" alt="Best of Agent Harnesses"></a>
19
34
  </p>
20
35
 
21
36
  <p align="center">
@@ -38,7 +53,7 @@ A model's **capability ceiling** is not its **runtime behaviour**. Put the same
38
53
  **Tianshu** is a coding-agent runtime written in TypeScript. The terminal TUI, the desktop app, and the VS Code extension share one agent kernel. Between the model and the real world it places a **Cognitive Virtual Machine (CVM)** that lifts goals, state, evidence, permissions, and termination conditions out of the conversation history and hands them to the runtime:
39
54
 
40
55
  * **Task contracts** — Every task gets a `TaskContract` recording goal, scope, constraints, and success criteria. Long sessions are held by the runtime, not by the model's memory.
41
- * **Evidence-gated delivery** — "Done" has to pass the `deliver_task` gate. Without tests, diffs, or verification commands as evidence, delivery is blocked.
56
+ * **Separated commit, verification and review** — `deliver_task` performs only an ownership-scoped safe commit: it blocks on ownership, cross-session conflicts and version consistency; verification gaps are disclosed honestly, never blocked on and never turned into quality endorsement. Targeted verification uses `run_tests` (explicit scope), independent review uses `review_changes` or `/review`.
42
57
  * **A deterministic outer loop** — 75 runtime hook modules across five phases of a turn, together with Sensorium state awareness and stall detection, observe and correct between model output and real action.
43
58
 
44
59
  <table>
@@ -46,13 +61,13 @@ A model's **capability ceiling** is not its **runtime behaviour**. Put the same
46
61
  <td align="center" width="25%"><b>99.3–99.6%</b><br><sub>prefix-cache hit rate<br>across 5 real long sessions</sub></td>
47
62
  <td align="center" width="25%"><b>¥880 → ¥20</b><br><sub>estimated input cost on the same<br>sessions at list price</sub></td>
48
63
  <td align="center" width="25%"><b>25</b><br><sub>built-in provider presets, plus any<br>OpenAI-compatible endpoint</sub></td>
49
- <td align="center" width="25%"><b>22,000</b><br><sub>test cases, roughly<br>1:1 with source lines</sub></td>
64
+ <td align="center" width="25%"><b>23,000</b><br><sub>test cases, roughly<br>1:1 with source lines</sub></td>
50
65
  </tr>
51
66
  </table>
52
67
 
53
68
  <p align="center">
54
69
  <img src="docs/brand/assets/tianshu-harness-screenshot.png" alt="Tianshu terminal TUI: welcome screen and GlanceBar status line" width="49%">
55
- <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="Tianshu desktop app: session sidebar and star-domain picker" width="49%">
70
+ <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="Tianshu desktop app: home and new-task panel" width="49%">
56
71
  </p>
57
72
  <p align="center"><sub>Left: terminal TUI · Right: desktop app · one agent kernel</sub></p>
58
73
 
@@ -105,6 +120,23 @@ Download from [Releases](https://github.com/huiliyi37/Tianshu-harness/releases/l
105
120
  </tr>
106
121
  </table>
107
122
 
123
+ > [!WARNING]
124
+ > **Hard Node.js requirement (v3.36.0+):** the CLI supports only **Node 24.22.1+
125
+ > (24.x line) or Node 26.12.1+ (26.x line)**. Node 22 / 23 / 25 / 27,
126
+ > Node 24.x below 24.22.1, and Node 26.x below 26.12.1 are rejected at startup
127
+ > by the security gate. `/update` may install the new package successfully while
128
+ > the new CLI still cannot start. Run `node -v` first; if it does not match, upgrade
129
+ > via nvm / fnm / Volta or nodejs.org before installing.
130
+ >
131
+ > ```bash
132
+ > node -v # requires v24.22.1+ or v26.12.1+
133
+ > ```
134
+ >
135
+ > The desktop app bundles its own runtime; no manual Node installation is required.
136
+ > If it still fails after the upgrade, see the
137
+ > [installation guide](docs/guides/installation.md) and
138
+ > [troubleshooting guide](docs/guides/troubleshooting.md).
139
+
108
140
  <details>
109
141
  <summary><b>One-line installers · migrating from the legacy package</b></summary>
110
142
 
@@ -233,7 +265,7 @@ This is a small pilot: 5 tasks, a single model, LLM review. It also measured the
233
265
 
234
266
  ### Engineering
235
267
 
236
- As of 2026-10: `src/` holds roughly 1,600 source files and 330K lines; tests are about 1,900 files and 22,000 cases. TypeScript strict with `noUncheckedIndexedAccess`, and every incident fix ships with a regression test. Definitions and milestones: [Engineering Metrics](docs/engineering-metrics.md).
268
+ As of 2026-10 (v3.37): `src/` holds roughly 1,700 source files and 350K lines; tests are about 2,100 files and 23,000 cases. TypeScript strict with `noUncheckedIndexedAccess`, and every incident fix ships with a regression test. Definitions and milestones: [Engineering Metrics](docs/engineering-metrics.md).
237
269
 
238
270
  <a id="star-domains"></a>
239
271
  ## Star Domains
@@ -270,15 +302,16 @@ New sessions default to **Qiming**. Switch with `/domain <name>`, auto-match fro
270
302
  | | |
271
303
  |---|---|
272
304
  | **Multi-agent orchestration** | `/scout` read-only parallel reconnaissance, `/team` wave-based parallel execution, `/council` multi-domain review that only produces a plan, `/galaxy` dimension-split attack with a global review. [Details](docs/user-guide.md#子代理编排) |
305
+ | **Separated review & verification** | Commits never auto-verify or auto-review: targeted verification via `run_tests` (empty input previews the scope), independent review via `review_changes` (pinned snapshot, read-only reviewer, persisted findings); delivery receipts carry no quality endorsement |
273
306
  | **Prefix cache engine** | Frozen prefix, delta appendix, read deduplication, resume cache inheritance; `/debug cache` diagnoses hit rate and fragmentation. [Details](docs/user-guide.md#前缀缓存引擎) |
274
307
  | **Plan Mode & Goal** | Plan, approve, then execute; `/goal` holds a goal across many turns until it is met or the budget runs out. [Details](docs/user-guide.md#plan-mode计划模式) |
275
308
  | **Handoff & rewind** | `/handoff` writes a structured handoff document; double-tap `Esc` rewinds to any earlier point. [Details](docs/user-guide.md#会话交接与恢复handoff--resume) |
276
- | **Project memory** | Knowledge is written to `.rivet/knowledge/memory.jsonl`; auto-injection carries constraint memories only, older findings need explicit recall and never hijack a new task. [Details](docs/user-guide.md#跨会话记忆) |
309
+ | **Project memory** | Knowledge is written to `.rivet/knowledge/memory.jsonl`; auto-injection carries constraint memories only, older findings need explicit recall and never hijack a new task; automatic memory formation is opt-in (off by default). [Details](docs/user-guide.md#跨会话记忆) |
277
310
  | **LSP integration** | 20+ language servers; go-to-definition and find-references become agent tools, and post-edit diagnostics flow back into the turn. Enabled only when installed locally |
278
311
  | **MCP & Skills** | External tool servers; reusable workflow playbooks with progressive disclosure, managed by `tianshu skills`. [Details](docs/user-guide.md#mcpmodel-context-protocol) |
279
312
  | **Cost control** | Automatic reasoning-effort downgrade, flash-model compaction, peak/off-peak pricing badge, `/usage` for the local token ledger. [Details](docs/user-guide.md#api-成本控制) |
280
313
  | **Pure-ANSI TUI** | Zero dependencies: GlanceBar status line, `/steer` mid-stream interrupt, command palette, inline images, plain-text mode for restricted terminals. [Details](docs/user-guide.md#终端-uitui) |
281
- | **Desktop app** | Integrated terminal, theme studio, offline local voice input, phone remote approval, concurrent sessions, WSL runtime on Windows. [Desktop Guide](docs/desktop-guide.md) |
314
+ | **Desktop app** | Integrated terminal, theme studio, offline local voice input, phone remote approval, concurrent sessions, WSL runtime on Windows; auto-update with resumable downloads, verified sources and self-recovery. [Desktop Guide](docs/desktop-guide.md) |
282
315
 
283
316
  <a id="supported-models"></a>
284
317
  ## Supported Models
@@ -414,7 +447,8 @@ This repository is the sync projection of the development repo; the desktop app
414
447
 
415
448
  - **Discussion** — [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
416
449
  - **Bugs and feature requests** — [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues); attaching `tianshu logs --json` speeds up triage
417
- - **Discord** — [Tianshu Harness community](https://discord.gg/XjWTATCHB)
450
+ - **Starport forum** — [tianshu.club](https://tianshu.club/): our self-hosted community for release discussion, tips and long-lived topics
451
+ - **Discord** — [Tianshu Harness community](https://discord.gg/aNEPzPuYV) [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord&logoColor=white)](https://discord.gg/aNEPzPuYV)
418
452
  - **QQ group** — "TUI", group ID `1017892942`
419
453
  - **WeChat group** — scan the QR code; valid for 7 days, ask in Discussions if expired
420
454
 
package/README.ja.md CHANGED
@@ -31,7 +31,7 @@
31
31
  <img src="https://img.shields.io/badge/License-Apache%202.0-3B5BDB?style=for-the-badge&logo=apache" alt="License">
32
32
  <img src="https://img.shields.io/badge/TypeScript-Strict-blue?style=for-the-badge&logo=typescript" alt="TypeScript">
33
33
  <img src="https://img.shields.io/badge/Tests-19%2C000%2B%20Passed-green?style=for-the-badge&logo=testinglibrary" alt="Tests">
34
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
34
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
35
35
  <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
36
36
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?logo=github&label=downloads" alt="GitHub downloads"></a>
37
37
  <a href="https://www.npmjs.com/package/tianshu-tui"><img src="https://img.shields.io/npm/dm/tianshu-tui?label=npm%20tianshu-tui" alt="npm tianshu-tui downloads"></a>
@@ -150,7 +150,7 @@ Layer 4: RuntimeHookPipeline(75 hooks)→ trap-and-emulate で退化行動
150
150
 
151
151
  ### 1. 環境要件
152
152
 
153
- - **Node.js ≥ 24**(`engines` で固定)—— `node --version` で確認。低いバージョンは npm インストール時に警告が出るだけでサポート対象外。ワンラインインストールスクリプトは直接ブロックしてアップグレード案内を出します。
153
+ - **Node.js 24.22.1+(24.x 系)または 26.12.1+(26.x 系)**(`engines` 固定)—— `node --version` で確認。Node 22 / 23 / 25 / 27、24.x < 24.22.1、26.x < 26.12.1 は v3.36.0 以降の安全ゲートで起動時に拒否されます。`/update` 後に新 CLI が起動しない場合も、まず Node をアップグレードしてください。ワンラインインストールスクリプトは事前にブロックして案内します。
154
154
  - **Git**(強く推奨)—— 任意。無くても天枢は動作します(その場で修正)が、Git があると委譲 worktree 分離・チェックポイントロールバック・`commit`/`diff` レビュー・worker ごとの diff レビューが使えます。インストール:<https://git-scm.com/downloads>。
155
155
 
156
156
  ### 2. インストール(いずれかを選択)
@@ -161,7 +161,7 @@ Layer 4: RuntimeHookPipeline(75 hooks)→ trap-and-emulate で退化行動
161
161
  > **Windows サポート範囲**:Windows 10(1809+、22H2 推奨)/ Windows 11。画面描画は **WebView2 Runtime(推奨 ≥ 120)** に依存——v3.5 以降のスクロール・描画最適化には新しいランタイムが必要で、古いとセッション領域のスクロールがカクつきます。3.5.3 以降インストーラーは完全なオフラインインストールパッケージを同梱(ネット不要・システムレベル登録)。既存ユーザーが自動更新で古すぎる旨の表示が出た場合:通知バーまたは「設定 → ランタイムとバージョン情報」で「修復ツールを実行」。**ウィンドウが完全に開かない**場合は、スタートメニューの「WebView2 を修復」、または [Releases](https://github.com/huiliyi37/Tianshu-harness/releases/latest) の `windows-repair` ディレクトリから `repair-webview2.cmd` をダブルクリック。[WebView2 オフラインインストールパッケージ](https://go.microsoft.com/fwlink/p/?LinkId=2124703) を手動インストールして再起動しても構いません。
162
162
  > **Win10 タブレットモードの既知動作**:タブレットモードでアプリを切り替えると前のアプリが画面外へスライドします——computer_use のスナップショットは遮へい/バックグラウンド自己修復(PrintWindow 描画)済みで、タブレットモードを切る必要はありません。
163
163
 
164
- **方法 B:ワンラインインストールスクリプト(推奨)** —— Node ≥ 24 を検証 → `tianshu-harness` をグローバルインストール(デフォルトは npmmirror ミラー加速、`NPM_CONFIG_REGISTRY` で上書き可)→ `tianshu` を起動。冪等で再実行可能:
164
+ **方法 B:ワンラインインストールスクリプト(推奨)** —— Node 24.22.1+ / 26.12.1+ を検証 → `tianshu-harness` をグローバルインストール(デフォルトは npmmirror ミラー加速、`NPM_CONFIG_REGISTRY` で上書き可)→ `tianshu` を起動。冪等で再実行可能:
165
165
 
166
166
  ```bash
167
167
  # macOS / Linux(bash)
@@ -1166,7 +1166,8 @@ tianshu logs open desktop # sidecar ログディレクトリを開く
1166
1166
  ## 🤝 コミュニティとサポート
1167
1167
 
1168
1168
  - **使い方の質問 / ディスカッション** → [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
1169
- - **Discord コミュニティ** → [「天枢 tianshu-harness 官方交流群」に参加](https://discord.gg/XjWTATCHB)
1169
+ - **Starport フォーラム** → [tianshu.club](https://tianshu.club/)(自建コミュニティ「天枢星港」)
1170
+ - **Discord コミュニティ** → [「天枢 tianshu-harness 官方交流群」に参加](https://discord.gg/aNEPzPuYV)
1170
1171
  - **バグ報告 / 機能リクエスト** → [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues)
1171
1172
  - **セキュリティ脆弱性** → [プライベート報告](https://github.com/huiliyi37/Tianshu-harness/security/advisories/new)(公開 issue を開かないでください)
1172
1173
  - **コードへのコントリビュート** → [CONTRIBUTING.md](CONTRIBUTING.md) を参照
package/README.ko.md CHANGED
@@ -31,7 +31,7 @@
31
31
  <img src="https://img.shields.io/badge/License-Apache%202.0-3B5BDB?style=for-the-badge&logo=apache" alt="License">
32
32
  <img src="https://img.shields.io/badge/TypeScript-Strict-blue?style=for-the-badge&logo=typescript" alt="TypeScript">
33
33
  <img src="https://img.shields.io/badge/Tests-19%2C000%2B%20Passed-green?style=for-the-badge&logo=testinglibrary" alt="Tests">
34
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
34
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
35
35
  <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
36
36
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?logo=github&label=downloads" alt="GitHub downloads"></a>
37
37
  <a href="https://www.npmjs.com/package/tianshu-tui"><img src="https://img.shields.io/npm/dm/tianshu-tui?label=npm%20tianshu-tui" alt="npm tianshu-tui downloads"></a>
@@ -150,7 +150,7 @@ Layer 4: RuntimeHookPipeline(75 hooks) → trap-and-emulate로 퇴화 행동
150
150
 
151
151
  ### 1. 환경 요구사항
152
152
 
153
- - **Node.js ≥ 24**(`engines` 고정)—— `node --version`으로 확인하세요. 낮은 버전은 npm 설치 시 경고만 뜨며 지원 범위가 아닙니다. 원클릭 설치 스크립트는 직접 차단하고 업그레이드 안내를 제시합니다.
153
+ - **Node.js 24.22.1+(24.x 계열)또는 26.12.1+(26.x 계열)**(`engines` 고정)—— `node --version`으로 확인하세요. Node 22 / 23 / 25 / 27, 24.x < 24.22.1, 26.x < 26.12.1은 v3.36.0 이후 안전 게이트에서 시작 시 거부됩니다. `/update` 후 새 CLI가 시작되지 않는 경우에도 먼저 Node를 업그레이드하세요. 원클릭 설치 스크립트는 사전에 차단하고 안내를 제시합니다.
154
154
  - **Git**(강력 권장)—— 선택 사항. 없어도 天枢는 동작하지만(그 자리에서 수정), Git이 있으면 위임 worktree 격리, 체크포인트 롤백, `commit`/`diff` 검토, worker별 diff 검토가 가능합니다. 설치: <https://git-scm.com/downloads>.
155
155
 
156
156
  ### 2. 설치(택一)
@@ -161,7 +161,7 @@ Layer 4: RuntimeHookPipeline(75 hooks) → trap-and-emulate로 퇴화 행동
161
161
  > **Windows 지원 범위**: Windows 10(1809+, 22H2 권장)/ Windows 11. 화면 렌더링은 **WebView2 Runtime(≥ 120 권장)**에 의존합니다——v3.5부터의 스크롤·렌더링 최적화는 최신 런타임이 필요하며, 구버전은 세션 영역 스크롤이 끊깁니다. 3.5.3부터 설치 프로그램에 완전한 오프라인 설치 패키지가 내장됩니다(네트워크 불필요, 시스템 레벨 등록). 기존 사용자가 자동 업데이트 후 "너무 오래됨" 안내를 받으면: 안내 바 또는 「설정 → 런타임 및 정보」에서 「복구 도구 실행」. **창이 아예 열리지 않을 때**는 시작 메뉴의 「WebView2 복구」를 사용하거나, [Releases](https://github.com/huiliyi37/Tianshu-harness/releases/latest)에서 `windows-repair` 디렉터리의 `repair-webview2.cmd`를 더블클릭하세요. 또는 [WebView2 오프라인 설치 패키지](https://go.microsoft.com/fwlink/p/?LinkId=2124703)를 수동 설치 후 재시작하세요.
162
162
  > **Win10 태블릿 모드 알려진 동작**: 태블릿 모드에서 앱 전환 시 이전 앱이 화면 밖으로 밀려납니다——computer_use 스냅샷이 가림/백그라운드 자가복구를 수행하므로(PrintWindow 렌더링)태블릿 모드를 끌 필요가 없습니다.
163
163
 
164
- **방식 B: 원클릭 설치 스크립트(권장)** —— Node ≥ 24 확인 → `tianshu-harness` 전역 설치(기본 npmmirror 미러 가속, `NPM_CONFIG_REGISTRY`로 덮어쓰기 가능)→ `tianshu` 실행. 멱등하게 반복 실행 가능:
164
+ **방식 B: 원클릭 설치 스크립트(권장)** —— Node 24.22.1+ / 26.12.1+ 확인 → `tianshu-harness` 전역 설치(기본 npmmirror 미러 가속, `NPM_CONFIG_REGISTRY`로 덮어쓰기 가능)→ `tianshu` 실행. 멱등하게 반복 실행 가능:
165
165
 
166
166
  ```bash
167
167
  # macOS / Linux(bash)
@@ -1171,7 +1171,8 @@ tianshu logs open desktop # sidecar 로그 디렉터리 열기(GUI
1171
1171
  ## 🤝 커뮤니티와 지원
1172
1172
 
1173
1173
  - **사용 문제 / 토론** → [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
1174
- - **Discord 커뮤니티** → [Tianshu Harness Discord 참여](https://discord.gg/XjWTATCHB)
1174
+ - **Starport 포럼** → [tianshu.club](https://tianshu.club/)(자체 커뮤니티 「天枢星港」)
1175
+ - **Discord 커뮤니티** → [Tianshu Harness Discord 참여](https://discord.gg/aNEPzPuYV)
1175
1176
  - **버그 리포트 / 기능 요청** → [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues)
1176
1177
  - **보안 취약점** → [비공개 보고](https://github.com/huiliyi37/Tianshu-harness/security/advisories/new)(공개 issue를 열지 말 것)
1177
1178
  - **코드 기여** → [CONTRIBUTING.md](CONTRIBUTING.md) 참조
package/README.md CHANGED
@@ -5,17 +5,32 @@
5
5
  <h1 align="center">天枢 Tianshu Harness</h1>
6
6
 
7
7
  <p align="center">
8
- <b>面向编程智能体的认知运行时</b><br>
8
+ <b>面向编程智能体的终端运行时,把东方的星辰带给世界的每一个开发者。</b><br>
9
9
  <sub>目标不漂移 · 完成有证据 · 验证有闭环</sub>
10
10
  </p>
11
11
 
12
12
  <p align="center">
13
13
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases/latest"><img src="https://img.shields.io/github/v/release/huiliyi37/Tianshu-harness?color=8B5CF6&label=Release&logo=github" alt="Release"></a>
14
+ <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?color=181717&label=GitHub%20%E4%B8%8B%E8%BD%BD&logo=github" alt="GitHub Downloads"></a>
14
15
  <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/v/tianshu-harness?color=CB3837&label=npm&logo=npm" alt="npm"></a>
16
+ <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/d18m/tianshu-harness?color=CB3837&label=npm%20%E4%B8%8B%E8%BD%BD&logo=npm" alt="npm Downloads"></a>
17
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
18
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness/releases"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/download/badge.svg" alt="AtomGit Downloads"></a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="https://trendshift.io/repositories/100440" target="_blank"><img src="https://trendshift.io/api/badge/trendshift/repositories/100440/daily?language=TypeScript" alt="Trendshift: TypeScript repository of the day" width="250" height="55"></a>
23
+ &nbsp;
24
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/new_badge.svg" alt="G-Star Selected by AtomGit" width="250" height="55"></a>
25
+ </p>
26
+
27
+ <p align="center">
15
28
  <a href="https://tianshuharness.com"><img src="https://img.shields.io/badge/Website-tianshuharness.com-4285F4?logo=googlechrome&logoColor=white" alt="Website"></a>
29
+ <a href="https://tianshu.club/"><img src="https://img.shields.io/badge/%E6%98%9F%E6%B8%AF%E8%AE%BA%E5%9D%9B-tianshu.club-F59E0B" alt="星港论坛"></a>
16
30
  <a href="docs/user-guide.md"><img src="https://img.shields.io/badge/Docs-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C-FBBC04" alt="Docs"></a>
17
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
31
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
18
32
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-34A853" alt="License"></a>
33
+ <a href="https://github.com/RyanAlberts/best-of-Agent-Harnesses"><img src="https://img.shields.io/badge/%F0%9F%8F%86_Best_of-Agent_Harnesses-5ac4bf" alt="Best of Agent Harnesses"></a>
19
34
  </p>
20
35
 
21
36
  <p align="center">
@@ -37,7 +52,7 @@
37
52
  **天枢**是一个 TypeScript 编写的编程 agent 运行时,终端 TUI、桌面端和 VS Code 插件共用同一个内核。它在模型和真实世界之间加了一层**认知执行环境 CVM**(Cognitive Virtual Machine),把目标、状态、证据、权限和终止条件从对话历史里拿出来,交给运行时持续管理:
38
53
 
39
54
  * **任务契约**:每个任务有独立的 `TaskContract`,记录目标、范围、约束和成功标准。长会话里的目标由运行时持有,不依赖模型「记得」。
40
- * **证据门控的交付**:「完成」要过 `deliver_task` 交付门。没有测试、diff 或验证命令作为证据,交付会被拦下。
55
+ * **提交、验证、审查分离的交付**:`deliver_task` 只做归属限定的安全提交——所有权、跨会话冲突、版本一致性不合格就拦下;验证缺口如实披露但不阻断、也不冒充质量背书。定向验证用 `run_tests`(显式范围),独立审查用 `review_changes` 或 `/review`。
41
56
  * **确定性监督外环**:75 个运行时 hook 模块分布在一个回合的五个阶段,配合 Sensorium 状态感知与收敛、空转检测,在模型输出与真实动作之间做观测和纠偏。
42
57
 
43
58
  <table>
@@ -45,13 +60,13 @@
45
60
  <td align="center" width="25%"><b>99.3–99.6%</b><br><sub>5 个真实长会话的<br>前缀缓存命中率</sub></td>
46
61
  <td align="center" width="25%"><b>¥880 → ¥20</b><br><sub>同一批会话按刊例价<br>估算的 input 成本</sub></td>
47
62
  <td align="center" width="25%"><b>25 项</b><br><sub>模型服务商预设<br>另支持 OpenAI 兼容端点</sub></td>
48
- <td align="center" width="25%"><b>2.2 万条</b><br><sub>测试用例<br>与源码规模约 1:1</sub></td>
63
+ <td align="center" width="25%"><b>2.3 万条</b><br><sub>测试用例<br>与源码规模约 1:1</sub></td>
49
64
  </tr>
50
65
  </table>
51
66
 
52
67
  <p align="center">
53
68
  <img src="docs/brand/assets/tianshu-harness-screenshot.png" alt="天枢终端 TUI:欢迎页与 GlanceBar 状态栏" width="49%">
54
- <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="天枢桌面端:会话侧栏与星域速选" width="49%">
69
+ <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="天枢桌面端:首页与新任务面板" width="49%">
55
70
  </p>
56
71
  <p align="center"><sub>左:终端 TUI · 右:桌面端 · 同一个 agent 内核</sub></p>
57
72
 
@@ -103,6 +118,19 @@ tianshu
103
118
  </tr>
104
119
  </table>
105
120
 
121
+ > [!WARNING]
122
+ > **Node.js 版本硬门槛(v3.36.0 起)**:CLI 仅支持 **Node 24.22.1+(24.x 线)或 26.12.1+(26.x 线)**。
123
+ > Node 22 / 23 / 25 / 27、24.x < 24.22.1、26.x < 26.12.1 会在启动时被安全闸门拒绝;
124
+ > `/update` 可能已经装上新包,但新 CLI 仍无法启动。先运行 `node -v`,不满足时用
125
+ > nvm / fnm / Volta 或 nodejs.org 升级后再安装。
126
+ >
127
+ > ```bash
128
+ > node -v # 需要 v24.22.1+ 或 v26.12.1+
129
+ > ```
130
+ >
131
+ > 桌面端自带运行时,不需要手动安装 Node。升级后仍失败时见
132
+ > [安装指南](docs/guides/installation.md) 与 [排障指南](docs/guides/troubleshooting.md)。
133
+
106
134
  <details>
107
135
  <summary><b>一键安装脚本 · 从旧包迁移</b></summary>
108
136
 
@@ -225,7 +253,7 @@ CVM 不改权重,也不把模型变成确定性程序,而是在概率认知
225
253
 
226
254
  ### 工程
227
255
 
228
- 截至 2026-10:`src/` 约 1,600 个源码文件、33 万行,测试约 1,900 个文件、2.2 万条用例。TypeScript strict,开启 `noUncheckedIndexedAccess`,事故修复必须附回归测试。口径与里程碑见 [工程质量指标](docs/engineering-metrics.md)。
256
+ 截至 2026-10(v3.37):`src/` 约 1,700 个源码文件、35 万行,测试约 2,100 个文件、2.3 万条用例。TypeScript strict,开启 `noUncheckedIndexedAccess`,事故修复必须附回归测试。口径与里程碑见 [工程质量指标](docs/engineering-metrics.md)。
229
257
 
230
258
  ## 星域
231
259
 
@@ -242,15 +270,16 @@ CVM 不改权重,也不把模型变成确定性程序,而是在概率认知
242
270
  | | |
243
271
  |---|---|
244
272
  | **多代理编排** | `/scout` 只读并行侦察,`/team` 按文件分波并行施工,`/council` 多星域会诊只出计划,`/galaxy` 按维度拆分并做全局审查。[详情](docs/user-guide.md#子代理编排) |
273
+ | **审查与验证分离** | 提交不自动验证也不自动派审查:定向验证 `run_tests`(空参数只给范围预览),独立审查 `review_changes`(固定快照、只读 reviewer、发现持久化),交付回执不作质量背书 |
245
274
  | **前缀缓存引擎** | 冻结前缀、增量附录、Read 去重、resume 缓存继承,`/debug cache` 诊断命中率与碎裂原因。[详情](docs/user-guide.md#前缀缓存引擎) |
246
275
  | **Plan Mode 与 Goal** | 先计划、审批、再执行;`/goal` 设定跨多轮目标,持续迭代到达成或预算耗尽。[详情](docs/user-guide.md#plan-mode计划模式) |
247
276
  | **交接与倒带** | `/handoff` 生成结构化交接文档;双击 `Esc` 倒带到任一历史点。[详情](docs/user-guide.md#会话交接与恢复handoff--resume) |
248
- | **项目记忆** | 知识写入 `.rivet/knowledge/memory.jsonl`;自动注入只带约束类记忆,旧问题显式 recall,不劫持新任务。[详情](docs/user-guide.md#跨会话记忆) |
277
+ | **项目记忆** | 知识写入 `.rivet/knowledge/memory.jsonl`;自动注入只带约束类记忆,旧问题显式 recall,不劫持新任务;自动记忆形成为 opt-in(默认关闭)。[详情](docs/user-guide.md#跨会话记忆) |
249
278
  | **LSP 集成** | 20+ 种语言服务器,跳转定义与查找引用作为 agent 工具,编辑后的诊断自动回注。本机装了才启用 |
250
279
  | **MCP 与 Skills** | 接入外部工具服务器;可复用的工作流剧本,渐进披露,`tianshu skills` 统一管理。[详情](docs/user-guide.md#mcpmodel-context-protocol) |
251
280
  | **成本控制** | 推理强度自动降档、压缩走轻量模型、峰谷计价提醒,`/usage` 查看本地 Token 账本。[详情](docs/user-guide.md#api-成本控制) |
252
281
  | **自研 TUI** | 纯 ANSI 零依赖:GlanceBar 状态栏、流式中 `/steer` 打断、命令面板、内联图片、受限终端纯文本模式。[详情](docs/user-guide.md#终端-uitui) |
253
- | **桌面端** | 集成终端、主题工作室、本地离线语音输入、手机遥控审批、多会话并发、Windows 下连接 WSL 运行时。[桌面端指南](docs/desktop-guide.md) |
282
+ | **桌面端** | 集成终端、主题工作室、本地离线语音输入、手机遥控审批、多会话并发、Windows 下连接 WSL 运行时;自动更新断点续传、来源校验、损坏自恢复。[桌面端指南](docs/desktop-guide.md) |
254
283
 
255
284
  ## 支持的模型
256
285
 
@@ -361,7 +390,8 @@ node dist/cli/entry.js
361
390
 
362
391
  - **讨论与提问**:[GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
363
392
  - **Bug 与功能请求**:[GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues),附上 `tianshu logs --json` 的输出能更快定位
364
- - **Discord**:[天枢 tianshu-harness 官方交流群](https://discord.gg/XjWTATCHB)
393
+ - **星港论坛**:[tianshu.club](https://tianshu.club/) — 自建社区「天枢星港」,版本讨论、经验分享与长期话题的存档地(Token 台账可选同步展示)
394
+ - **Discord**:[天枢 tianshu-harness 官方交流群](https://discord.gg/aNEPzPuYV) [![Discord](https://img.shields.io/badge/Discord-%E5%8A%A0%E5%85%A5%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white)](https://discord.gg/aNEPzPuYV)
365
395
  - **QQ 群**:「TUI」,群号 `1017892942`
366
396
  - **微信群**:扫码加入,二维码 7 天有效,过期请在 Discussions 留言补码
367
397
 
@@ -18,7 +18,7 @@ async function handleAccountLogin(app) {
18
18
  saveAccountToken,
19
19
  isTerminalPollStatus
20
20
  } = await import("./account-SIZF2YV5.js");
21
- const { openInBrowser } = await import("./login-flow-HZHRWDMP.js");
21
+ const { openInBrowser } = await import("./login-flow-WBIW4TPG.js");
22
22
  const { rivetHome } = await import("./paths-PE56RINB.js");
23
23
  app.commitStatic("\u6B63\u5728\u5411\u5929\u67A2\u7533\u8BF7\u8BBE\u5907\u6388\u6743\u2026");
24
24
  let created;
@@ -42,7 +42,7 @@ ${created.verifyUrl}
42
42
  });
43
43
  if (result.status === "approved" && result.accessToken) {
44
44
  const token = saveAccountToken(accountStore(rivetHome()), result);
45
- const { primeStellarIdentity } = await import("./account-status-YCVLHU6B.js");
45
+ const { primeStellarIdentity } = await import("./account-status-I42D2QJQ.js");
46
46
  const identityLine = await primeStellarIdentity(token.accessToken);
47
47
  app.commitStatic("\u2705 \u5DF2\u767B\u5F55\u5929\u67A2\u8D26\u53F7\u2014\u2014\u684C\u9762\u7AEF\u4E0E\u7F51\u9875\u7AEF\u73B0\u5728\u770B\u5230\u540C\u4E00\u4EFD\u8BBE\u5907\u4E0E\u8BA2\u9605\u3002");
48
48
  if (identityLine) app.commitStatic(`\u661F\u7C4D\uFF1A${identityLine}`);
@@ -5,14 +5,14 @@ import {
5
5
  commitWelcomeStellarIdentityLine,
6
6
  formatStellarIdentityLine,
7
7
  primeStellarIdentity
8
- } from "./chunk-C6JA6N5E.js";
8
+ } from "./chunk-32GXAYAY.js";
9
9
  import "./chunk-QMNTSDWW.js";
10
10
  import "./chunk-GH4JI6BC.js";
11
- import "./chunk-ALC2MQJ6.js";
11
+ import "./chunk-6I2YCDUJ.js";
12
12
  import "./chunk-XUMXRP3L.js";
13
13
  import "./chunk-MUIODEN6.js";
14
- import "./chunk-36UFT42V.js";
15
- import "./chunk-R44ENUT2.js";
14
+ import "./chunk-3DZ5UT3I.js";
15
+ import "./chunk-GP37UWT4.js";
16
16
  import "./chunk-R5Q7AA2C.js";
17
17
  import "./chunk-M5U2TMZN.js";
18
18
  import "./chunk-4I2HDYJG.js";