tianshu-harness 3.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/LICENSE +189 -0
  2. package/README.en.md +1066 -0
  3. package/README.ja.md +1214 -0
  4. package/README.ko.md +1216 -0
  5. package/README.md +309 -0
  6. package/completions/rivet.bash +118 -0
  7. package/completions/rivet.fish +110 -0
  8. package/completions/rivet.ps1 +230 -0
  9. package/completions/rivet.zsh +187 -0
  10. package/dist/account-OAEKORZE.js +47 -0
  11. package/dist/account-login-V6FOLHJR.js +65 -0
  12. package/dist/account-status-KHNPPAFL.js +23 -0
  13. package/dist/agent/worker-process/child.js +407 -0
  14. package/dist/browser-cli-FLNY5ZHI.js +19 -0
  15. package/dist/browser-readiness-LWVGSBD5.js +12 -0
  16. package/dist/build-backends-5KXKR2S4.js +13 -0
  17. package/dist/build-options-66Y4ZE7C.js +9 -0
  18. package/dist/bundled-skills/brainstorming/SKILL.md +139 -0
  19. package/dist/bundled-skills/visual-acceptance/SKILL.md +64 -0
  20. package/dist/chain-7MAMFXZ3.js +10 -0
  21. package/dist/checkpoint-MND4DUIX.js +33 -0
  22. package/dist/chunk-2E6CK2RC.js +392 -0
  23. package/dist/chunk-2EBWGAXD.js +51 -0
  24. package/dist/chunk-2HDP7RMR.js +119 -0
  25. package/dist/chunk-2HKD2UFM.js +1000 -0
  26. package/dist/chunk-2VYRLULP.js +51 -0
  27. package/dist/chunk-2XN7PM4N.js +125 -0
  28. package/dist/chunk-35H7GVNR.js +66 -0
  29. package/dist/chunk-3C3R7JXY.js +77 -0
  30. package/dist/chunk-3VGD2FXB.js +118 -0
  31. package/dist/chunk-424AP7FM.js +534 -0
  32. package/dist/chunk-4J5TZGOE.js +3707 -0
  33. package/dist/chunk-4QJ3Y5JM.js +898 -0
  34. package/dist/chunk-4U2ET7ZY.js +1326 -0
  35. package/dist/chunk-4XPFLICE.js +876 -0
  36. package/dist/chunk-5B2OCU5P.js +31707 -0
  37. package/dist/chunk-5GGOGLSN.js +73 -0
  38. package/dist/chunk-5JRZPLI6.js +251 -0
  39. package/dist/chunk-5TQ3JYBU.js +397 -0
  40. package/dist/chunk-66JPZSGX.js +55 -0
  41. package/dist/chunk-6HSVXHCZ.js +764 -0
  42. package/dist/chunk-6S5FPUS7.js +21 -0
  43. package/dist/chunk-722LQO64.js +131 -0
  44. package/dist/chunk-73NJ7IT7.js +354 -0
  45. package/dist/chunk-7FW3I7WC.js +95 -0
  46. package/dist/chunk-7KUCBNLB.js +173 -0
  47. package/dist/chunk-7RDOV3DF.js +201 -0
  48. package/dist/chunk-A5MNH4ER.js +79 -0
  49. package/dist/chunk-ADIVZ2D5.js +15 -0
  50. package/dist/chunk-AE3P3F6W.js +366 -0
  51. package/dist/chunk-AERM3VGP.js +280 -0
  52. package/dist/chunk-AEWHC4WM.js +246 -0
  53. package/dist/chunk-AOVQ7VIF.js +169 -0
  54. package/dist/chunk-AOYHP3WI.js +12411 -0
  55. package/dist/chunk-B3YEBABJ.js +7160 -0
  56. package/dist/chunk-BCQXEZPJ.js +154 -0
  57. package/dist/chunk-BKTQAYO2.js +418 -0
  58. package/dist/chunk-BSECIPAQ.js +80 -0
  59. package/dist/chunk-BUIMGNDD.js +52 -0
  60. package/dist/chunk-BXHV3GSB.js +10320 -0
  61. package/dist/chunk-C6ZVZCPP.js +139 -0
  62. package/dist/chunk-CEZNQVWM.js +82 -0
  63. package/dist/chunk-CGFZGR7G.js +1492 -0
  64. package/dist/chunk-CGOADM2X.js +337 -0
  65. package/dist/chunk-CI4R6P2B.js +24 -0
  66. package/dist/chunk-D2TCGRSX.js +73 -0
  67. package/dist/chunk-D4PTYFOG.js +154 -0
  68. package/dist/chunk-D54ZWG4T.js +717 -0
  69. package/dist/chunk-DEBI37QB.js +145 -0
  70. package/dist/chunk-DWROHPXP.js +1051 -0
  71. package/dist/chunk-DZ6UOJ5D.js +92 -0
  72. package/dist/chunk-EBJTVRQN.js +81 -0
  73. package/dist/chunk-EGEI2RQA.js +1167 -0
  74. package/dist/chunk-EHHUASO5.js +1305 -0
  75. package/dist/chunk-EPKTIOED.js +41 -0
  76. package/dist/chunk-ER5JW2QZ.js +5681 -0
  77. package/dist/chunk-ETHFACAB.js +315 -0
  78. package/dist/chunk-EXUE5W2F.js +112 -0
  79. package/dist/chunk-EXXICUIW.js +73 -0
  80. package/dist/chunk-FFQSZJOO.js +169 -0
  81. package/dist/chunk-FHFKPGDO.js +85 -0
  82. package/dist/chunk-FW3QKMFX.js +158 -0
  83. package/dist/chunk-GD4ZNZ7W.js +30 -0
  84. package/dist/chunk-GHVMWF2I.js +581 -0
  85. package/dist/chunk-GMKAXSYQ.js +297 -0
  86. package/dist/chunk-HBVF6BWO.js +325 -0
  87. package/dist/chunk-HV4YGVMS.js +379 -0
  88. package/dist/chunk-ILBCKAV6.js +89 -0
  89. package/dist/chunk-J4U4AW46.js +440 -0
  90. package/dist/chunk-J6ESSM47.js +1791 -0
  91. package/dist/chunk-JBZHIC6T.js +2309 -0
  92. package/dist/chunk-JCFWOULR.js +245 -0
  93. package/dist/chunk-JRF5L6OD.js +131 -0
  94. package/dist/chunk-JSS75KCG.js +2014 -0
  95. package/dist/chunk-JSXWIWWJ.js +225 -0
  96. package/dist/chunk-JYV7I2QH.js +98 -0
  97. package/dist/chunk-KIOXTQQL.js +1596 -0
  98. package/dist/chunk-KWVTXT5B.js +89 -0
  99. package/dist/chunk-KX22RD6R.js +33 -0
  100. package/dist/chunk-LA6IPTGH.js +709 -0
  101. package/dist/chunk-LH5VCGLB.js +1796 -0
  102. package/dist/chunk-LQQ6XJ2Y.js +269 -0
  103. package/dist/chunk-MJQ55WZZ.js +65 -0
  104. package/dist/chunk-ML3UKMH3.js +40 -0
  105. package/dist/chunk-MOZPLHSU.js +5526 -0
  106. package/dist/chunk-NGEWJ4DF.js +89 -0
  107. package/dist/chunk-NH6VIOAR.js +211 -0
  108. package/dist/chunk-O5VZQKCB.js +26106 -0
  109. package/dist/chunk-OHSV42QB.js +748 -0
  110. package/dist/chunk-OO3TAHO5.js +4070 -0
  111. package/dist/chunk-OTNHSAGN.js +38282 -0
  112. package/dist/chunk-OUWAC7AQ.js +442 -0
  113. package/dist/chunk-OXMIV4WE.js +270 -0
  114. package/dist/chunk-P5KJURUR.js +229 -0
  115. package/dist/chunk-P6GJOVO6.js +307 -0
  116. package/dist/chunk-QARAGUXX.js +23 -0
  117. package/dist/chunk-R43HJCDX.js +2711 -0
  118. package/dist/chunk-RAXBAWRN.js +210 -0
  119. package/dist/chunk-RK3JHWPT.js +39 -0
  120. package/dist/chunk-RWA23GMM.js +24 -0
  121. package/dist/chunk-S4K4L6IM.js +179 -0
  122. package/dist/chunk-SAXK6LVF.js +124 -0
  123. package/dist/chunk-SEPGEJNK.js +1607 -0
  124. package/dist/chunk-SUJERP5I.js +285 -0
  125. package/dist/chunk-T3ED6BY2.js +913 -0
  126. package/dist/chunk-THKDVSEC.js +90 -0
  127. package/dist/chunk-TI4GSEL5.js +52 -0
  128. package/dist/chunk-TPI73L57.js +164 -0
  129. package/dist/chunk-TVHW77C7.js +338 -0
  130. package/dist/chunk-TWNHOSDT.js +1073 -0
  131. package/dist/chunk-UFMN76QD.js +347 -0
  132. package/dist/chunk-UHGLFRZE.js +205 -0
  133. package/dist/chunk-UTZYPKBF.js +15231 -0
  134. package/dist/chunk-UXNLELW6.js +25 -0
  135. package/dist/chunk-UXXS53EA.js +166 -0
  136. package/dist/chunk-V5DHFGI7.js +171 -0
  137. package/dist/chunk-V5YIPMHV.js +2353 -0
  138. package/dist/chunk-WMUWEO2C.js +754 -0
  139. package/dist/chunk-WOE3D7JM.js +945 -0
  140. package/dist/chunk-X2IK5LVR.js +2592 -0
  141. package/dist/chunk-XU2YXCDL.js +459 -0
  142. package/dist/chunk-YJG5HIX5.js +203 -0
  143. package/dist/chunk-Z3QE7TZM.js +72 -0
  144. package/dist/chunk-Z5Z3JHJY.js +64 -0
  145. package/dist/chunk-ZDIFBJFT.js +168 -0
  146. package/dist/chunk-ZGGCEXDC.js +176 -0
  147. package/dist/chunk-ZMZCZNKU.js +263 -0
  148. package/dist/chunk-ZNC5T65N.js +17 -0
  149. package/dist/chunk-ZO3I3A7O.js +308 -0
  150. package/dist/chunk-ZQKXBUB7.js +217 -0
  151. package/dist/chunk-ZTRINFM2.js +78 -0
  152. package/dist/chunk-ZU7JZCVP.js +193 -0
  153. package/dist/chunk-ZZAWNALS.js +350 -0
  154. package/dist/cli/entry.js +54 -0
  155. package/dist/connector-L5QQTR6Y.js +26 -0
  156. package/dist/context-62DC6EC3.js +31 -0
  157. package/dist/council-convene-NJWPNBDU.js +46 -0
  158. package/dist/create-agent-config-ODSQWNVC.js +55 -0
  159. package/dist/default-registry-2PU3BTAU.js +68 -0
  160. package/dist/deliver-task-KONV4C4M.js +57 -0
  161. package/dist/delivery-gate-v2-F2YVMVGK.js +27 -0
  162. package/dist/domain-knowledge-store-DDZ3F4J7.js +11 -0
  163. package/dist/fetch-core-ZPPYDSZH.js +14 -0
  164. package/dist/galaxy-K72BBDQN.js +91 -0
  165. package/dist/goal-criteria-SCALAU2D.js +141 -0
  166. package/dist/goal-persist-XWY2GDQX.js +19 -0
  167. package/dist/goal-tracker-FXMJ2GVK.js +11 -0
  168. package/dist/headless-LSB6I7PT.js +162 -0
  169. package/dist/headless-coordinator-VDPDMVUT.js +90 -0
  170. package/dist/inject-U55SMB6A.js +39 -0
  171. package/dist/login-flow-CD4ZGXOC.js +59 -0
  172. package/dist/logs-cli-SQVYFMMN.js +283 -0
  173. package/dist/loop-ULZYBDA3.js +76 -0
  174. package/dist/main.js +4064 -0
  175. package/dist/manager-ROZBCWPA.js +171 -0
  176. package/dist/manager-Z7XFFUOM.js +10670 -0
  177. package/dist/meridian-indexer-ZIW363L7.js +21 -0
  178. package/dist/native-resolver-PN34UIVV.js +13 -0
  179. package/dist/node_modules/better-sqlite3/lib/database.js +90 -0
  180. package/dist/node_modules/better-sqlite3/lib/index.js +3 -0
  181. package/dist/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  182. package/dist/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  183. package/dist/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  184. package/dist/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  185. package/dist/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  186. package/dist/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  187. package/dist/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  188. package/dist/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  189. package/dist/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  190. package/dist/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  191. package/dist/node_modules/better-sqlite3/lib/util.js +12 -0
  192. package/dist/node_modules/better-sqlite3/package.json +59 -0
  193. package/dist/ownership-ledger-E3WIEKPL.js +9 -0
  194. package/dist/package.json +3 -0
  195. package/dist/path-grants-XRRXHXG7.js +40 -0
  196. package/dist/paths-LVV5IMQN.js +49 -0
  197. package/dist/plan-fact-anchors-LMVQZCW5.js +13 -0
  198. package/dist/plan-store-ODLTTPFB.js +17 -0
  199. package/dist/plan-templates-5FPFBOL6.js +109 -0
  200. package/dist/plugin-loader-ZZKX7ZE6.js +22 -0
  201. package/dist/prefix-budget-62OV5HQC.js +13 -0
  202. package/dist/project-trust-5WS5MOMU.js +31 -0
  203. package/dist/provider-cli-ALDQXIT7.js +37 -0
  204. package/dist/providers-XQYTAVPK.js +11 -0
  205. package/dist/proxy-resolver-V2Y6534D.js +15 -0
  206. package/dist/recovery-cli-KPGY6FY3.js +106 -0
  207. package/dist/review-discipline-MNSYCST5.js +55 -0
  208. package/dist/review-router-BVQZW3MX.js +18 -0
  209. package/dist/seed-capsules/seed-capsule-attack-methodology.md +62 -0
  210. package/dist/seed-capsules/seed-capsule-changgeng.md +31 -0
  211. package/dist/seed-capsules/seed-capsule-design-aesthetics.md +38 -0
  212. package/dist/seed-capsules/seed-capsule-diagnostic-ladder.md +54 -0
  213. package/dist/seed-capsules/seed-capsule-fu.md +39 -0
  214. package/dist/seed-capsules/seed-capsule-huagai.md +73 -0
  215. package/dist/seed-capsules/seed-capsule-kaiyang.md +65 -0
  216. package/dist/seed-capsules/seed-capsule-knowledge-work.md +40 -0
  217. package/dist/seed-capsules/seed-capsule-tanlang.md +47 -0
  218. package/dist/seed-capsules/seed-capsule-tianfu.md +23 -0
  219. package/dist/seed-capsules/seed-capsule-tianliang.md +63 -0
  220. package/dist/seed-capsules/seed-capsule-tianquan.md +32 -0
  221. package/dist/seed-capsules/seed-capsule-tianxuan-ccr.md +22 -0
  222. package/dist/seed-capsules/seed-capsule-tianxuan.md +64 -0
  223. package/dist/seed-capsules/seed-capsule-yaoguang.md +87 -0
  224. package/dist/serve-X2R2UTLF.js +170 -0
  225. package/dist/serve-agent-KHSU6RVV.js +965 -0
  226. package/dist/session-persist-HUUC772H.js +37 -0
  227. package/dist/session-registry-6XUD5C4Y.js +15 -0
  228. package/dist/skill-loader-CK3RMO47.js +48 -0
  229. package/dist/skills/cli-harness-sop.md +207 -0
  230. package/dist/spawn-git-4HFU65AH.js +29 -0
  231. package/dist/sse-EYUTBWUK.js +512 -0
  232. package/dist/starflow-NOFBMPFU.js +30 -0
  233. package/dist/streamableHttp-V67CNJMO.js +447 -0
  234. package/dist/task-contract-6XHBNJQK.js +32 -0
  235. package/dist/task-ledger-3K4TJIER.js +9 -0
  236. package/dist/team-orchestrate-S6NHZP7X.js +64 -0
  237. package/dist/title-extract-QX4XGCYN.js +50 -0
  238. package/dist/todo-QDXGRZZP.js +31 -0
  239. package/dist/todo-store-V3TTO5AH.js +12 -0
  240. package/dist/tool-preset-LU5BYEDZ.js +23 -0
  241. package/dist/tool-tiers-GD742YBN.js +23 -0
  242. package/dist/turndown.es-OI55K6C3.js +17373 -0
  243. package/dist/verification-attribution-EKG4CNUV.js +13 -0
  244. package/dist/volatile-git-MBTST7RA.js +15 -0
  245. package/dist/wave-checkpoint-XLIIHXQA.js +30 -0
  246. package/dist/web-cli-DUG4I35O.js +233 -0
  247. package/dist/web-search-3IK542AA.js +34 -0
  248. package/dist/workers/cpu-worker.js +45 -0
  249. package/dist/workflow-runner-HX7UBAYG.js +297 -0
  250. package/dist/worktree-baseline-O5NCU6M2.js +9 -0
  251. package/package.json +122 -0
  252. package/scripts/check-mobile-env.mjs +76 -0
  253. package/scripts/fetch-native-sqlite.js +392 -0
  254. package/scripts/prune-installed-wasms.js +45 -0
  255. package/scripts/tree-sitter-wasm-keep.js +40 -0
@@ -0,0 +1,283 @@
1
+ #!/usr/bin/env -S node --expose-gc --max-old-space-size=4096
2
+ import { createRequire as __rivetCreateRequire } from 'node:module'; const require = __rivetCreateRequire(import.meta.url);
3
+ import {
4
+ buildOpenPathCommand
5
+ } from "./chunk-FW3QKMFX.js";
6
+ import "./chunk-ETHFACAB.js";
7
+ import {
8
+ defaultRivetHome,
9
+ desktopDir,
10
+ desktopSessionsDir,
11
+ init_paths,
12
+ memoryDir,
13
+ projectSlug,
14
+ rivetHome,
15
+ sessionsDir
16
+ } from "./chunk-BCQXEZPJ.js";
17
+ import {
18
+ init_esm_shims
19
+ } from "./chunk-5GGOGLSN.js";
20
+
21
+ // src/diagnostics/logs-cli.ts
22
+ init_esm_shims();
23
+ import { spawn } from "child_process";
24
+
25
+ // src/diagnostics/log-locations.ts
26
+ init_esm_shims();
27
+ init_paths();
28
+ import { existsSync, readdirSync, statSync } from "fs";
29
+ import { join } from "path";
30
+ import { createHash } from "crypto";
31
+ var GROUP_LABELS = {
32
+ "session": "\u4F1A\u8BDD\u4E3B\u5E72",
33
+ "session-diag": "\u4F1A\u8BDD\u5185\u8BCA\u65AD\uFF08\u7F13\u5B58 / \u516D\u7EF4 / \u5DE5\u5177\u8F68\u8FF9\uFF09",
34
+ "desktop": "\u684C\u9762\u7AEF",
35
+ "cross-session": "\u8DE8\u4F1A\u8BDD\u4E0E\u6839\u7EA7",
36
+ "project": "\u9879\u76EE\u5185 .rivet/"
37
+ };
38
+ function memoryHash(cwd) {
39
+ return createHash("sha256").update(cwd).digest("hex").slice(0, 12);
40
+ }
41
+ function collectOverrides() {
42
+ const specs = [
43
+ ["RIVET_HOME", "\u6574\u68F5\u6570\u636E\u6811\u642C\u5BB6\uFF08CLI \u751F\u6548\uFF1B\u684C\u9762\u7AEF\u4E0D\u8BFB\u73AF\u5883\u53D8\u91CF\uFF0C\u53EA\u8BA4 launcher.json\uFF09"],
44
+ ["RIVET_SESSION_DIR", "\u53EA\u642C\u4F1A\u8BDD\u6811\uFF0C\u5E76\u7ED5\u8FC7 slug \u5206\u5C42\u2014\u2014\u8BE5\u76EE\u5F55\u76F4\u63A5\u5F53\u6210\u6700\u7EC8\u4F1A\u8BDD\u76EE\u5F55"],
45
+ ["RIVET_DESKTOP_DIR", "\u53EA\u642C\u684C\u9762\u6811\uFF08\u542B sidecar \u9000\u51FA\u9762\u5305\u5C51\u4E0E\u4F1A\u8BDD\u4E8B\u4EF6\u6D41\uFF09"],
46
+ ["RIVET_DESKTOP_SESSION_DIR", "\u53EA\u642C\u684C\u9762\u4F1A\u8BDD\u4E8B\u4EF6\u6D41"],
47
+ ["RIVET_CONFIG_PATH", "\u53EA\u642C config.json"]
48
+ ];
49
+ const out = [];
50
+ for (const [env, effect] of specs) {
51
+ const value = process.env[env];
52
+ if (value) out.push({ env, value, effect });
53
+ }
54
+ return out;
55
+ }
56
+ var GATE_SENSORIUM = "\u5168\u91CF\u9700 RIVET_DEBUG_TELEMETRY\uFF08\u4EFB\u610F\u975E\u7A7A\u503C\uFF09\uFF1B\u672A\u8BBE\u65F6\u53EA\u5199 vitals-lite \u7B49\u8F7B\u91CF\u884C\uFF0CRIVET_TELEMETRY_LITE=0 \u5219\u5B8C\u5168\u9759\u9ED8";
57
+ var GATE_FRAMES = "\u9ED8\u8BA4\u5F00\uFF1BRIVET_FRAME_TELEMETRY=0 \u6216 RIVET_TELEMETRY_LITE=0 \u5173\u95ED";
58
+ var EVICT = "\u540C slug \u8D85 50 \u4F1A\u8BDD\u65F6\u6309 mtime \u6DD8\u6C70\u6700\u65E7\u7684";
59
+ function resolveLogLocations(input) {
60
+ const { cwd, sessionId } = input;
61
+ const home = rivetHome();
62
+ const sessionRoot = sessionsDir(cwd);
63
+ const slug = projectSlug(cwd);
64
+ const dtop = desktopDir();
65
+ const sessionSub = join(sessionRoot, sessionId ?? "<session-id>");
66
+ const telemetryDir = sessionId ? sessionSub : join(cwd, ".rivet");
67
+ const projectRivet = join(cwd, ".rivet");
68
+ const idPrefix = sessionId ?? "<session-id>";
69
+ const locations = [
70
+ // ── 会话主干 ──
71
+ { id: "transcript", label: "\u5BF9\u8BDD\u4E3B\u4F53\uFF08user/assistant/tool\u3001model_switch\u3001usage\uFF09", path: join(sessionRoot, `${idPrefix}.jsonl`), kind: "file", group: "session", retention: EVICT },
72
+ { id: "meta", label: "\u4F1A\u8BDD\u5143\u6570\u636E\uFF08model / cwd / turn \u6570 / cleanExit\uFF09", path: join(sessionRoot, `${idPrefix}.meta.json`), kind: "file", group: "session", retention: EVICT },
73
+ { id: "session-memory", label: "\u4F1A\u8BDD\u8BB0\u5FC6\uFF08compact \u84B8\u998F\uFF09", path: join(sessionRoot, `${idPrefix}.memory.json`), kind: "file", group: "session", gate: "compact \u89E6\u53D1\u65F6\u624D\u5199", retention: EVICT },
74
+ { id: "claims", label: "\u6587\u4EF6\u5F52\u5C5E\u58F0\u660E", path: join(sessionRoot, `${idPrefix}.claims.jsonl`), kind: "file", group: "session", gate: "\u6709 claim \u65F6", retention: EVICT },
75
+ { id: "frozen", label: "\u51BB\u7ED3\u524D\u7F00\u5FEB\u7167\uFF08resume \u7F13\u5B58\u7EE7\u627F\uFF09", path: join(sessionRoot, `${idPrefix}.frozen.json`), kind: "file", group: "session", gate: "\u6BCF\u4E2A user \u8FB9\u754C + shutdown", retention: EVICT },
76
+ { id: "handoff", label: "\u4F1A\u8BDD\u4EA4\u63A5\u6587\u6863", path: join(sessionRoot, `${idPrefix}.handoff.md`), kind: "file", group: "session", gate: "shutdown \u515C\u5E95 / /handoff", retention: "\u4E0D\u56DE\u6536\uFF08\u4F1A\u65E0\u9650\u7D2F\u79EF\uFF09" },
77
+ // ── 会话内诊断 ──
78
+ { id: "cache-log", label: "\u9010 API \u8BF7\u6C42\u7F13\u5B58\u6307\u6807 + \u4FA7\u8DEF\u6210\u672C", path: join(sessionSub, "cache-log.jsonl"), kind: "file", group: "session-diag" },
79
+ { id: "sensorium", label: "\u516D\u7EF4\u5FEB\u7167 / CVM / advisory \u53F0\u8D26", path: join(telemetryDir, "sensorium.jsonl"), kind: "file", group: "session-diag", gate: GATE_SENSORIUM, retention: "\u65E0\u4E0A\u9650" },
80
+ { id: "frames", label: "\u8BA4\u77E5\u5E27\uFF08\u76F8\u4F4D\u3001\u7B56\u7565\uFF09", path: join(telemetryDir, "frames.jsonl"), kind: "file", group: "session-diag", gate: GATE_FRAMES, retention: "1,500 \u884C\u5C01\u9876" },
81
+ { id: "appendix-trace", label: "\u9010\u8BF7\u6C42\u9644\u5F55\u6E32\u67D3\u7559\u75D5\uFF08\u6A21\u578B\u5B9E\u9645\u770B\u5230\u7684\u81EA\u8FF0\u5757\uFF09", path: join(sessionSub, "appendix-trace.jsonl"), kind: "file", group: "session-diag", gate: "RIVET_APPENDIX_TRACE=1", retention: "\u65E0\u4E0A\u9650" },
82
+ { id: "tool-result-trace", label: "\u5DE5\u5177\u7ED3\u679C\u8F68\u8FF9", path: join(sessionSub, "tool-result-trace.jsonl"), kind: "file", group: "session-diag", gate: "\u547D\u4E2D\u7279\u5B9A\u8BCA\u65AD\u6761\u4EF6" },
83
+ { id: "tool-input-trace", label: "\u5DE5\u5177\u5165\u53C2\u8F68\u8FF9\uFF08\u542B hook \u6539\u5199\u94FE\uFF09", path: join(sessionSub, "tool-input-trace.jsonl"), kind: "file", group: "session-diag", gate: "\u547D\u4E2D\u7279\u5B9A\u8BCA\u65AD\u6761\u4EF6" },
84
+ { id: "pheromones", label: "\u4F1A\u8BDD\u5185\u4FE1\u606F\u7D20\uFF08\u975E\u8DE8\u4F1A\u8BDD\uFF09", path: join(sessionSub, "pheromones.json"), kind: "file", group: "session-diag", gate: "\u6709\u6C89\u79EF\u65F6" },
85
+ { id: "file-history", label: "\u6587\u4EF6\u8BFB\u5199\u5386\u53F2", path: join(sessionSub, "file-history.json"), kind: "file", group: "session-diag" },
86
+ // ── 桌面端 ──
87
+ { id: "sidecar-logs", label: "sidecar stdout/stderr \u2014\u2014 GUI \u542F\u52A8\u5931\u8D25\u7684\u552F\u4E00\u7EBF\u7D22", path: join(home, "logs"), kind: "dir", group: "desktop", gate: "\u6BCF\u6B21\u542F\u52A8\u65B0\u5EFA\u4E00\u4E2A\u5E26\u65F6\u95F4\u6233\u7684\u6587\u4EF6", retention: "\u4E0D\u8F6E\u8F6C" },
88
+ { id: "sidecar-exit", label: "sidecar \u9000\u51FA\u9762\u5305\u5C51\uFF08\u5D29\u6E83\u6392\u67E5\u7B2C\u4E00\u73B0\u573A\uFF09", path: join(dtop, "sidecar-exit.json"), kind: "file", group: "desktop", gate: "\u9000\u51FA\u65F6" },
89
+ { id: "desktop-sessions", label: "\u684C\u9762\u4F1A\u8BDD UI \u4E8B\u4EF6\u6D41\u76EE\u5F55\uFF08\u4E0E\u4F1A\u8BDD\u4E3B\u5E72\u662F\u4E24\u4EFD\u4E0D\u540C\u6570\u636E\uFF09", path: desktopSessionsDir(), kind: "dir", group: "desktop" },
90
+ { id: "desktop-events", label: "\u672C\u4F1A\u8BDD\u7684 UI \u4E8B\u4EF6\u6D41", path: join(desktopSessionsDir(), idPrefix, "events.jsonl"), kind: "file", group: "desktop", gate: "\u4EC5\u684C\u9762\u7AEF\u4F1A\u8BDD\uFF1B\u975E ephemeral \u6A21\u5F0F" },
91
+ // ── 跨会话与根级 ──
92
+ { id: "memory-shard", label: `\u8DE8\u4F1A\u8BDD\u8BB0\u5FC6\u5206\u7247\uFF08\u89C2\u5BDF / \u95E8\u7981\u53F0\u8D26 / \u53EC\u56DE\u6709\u6548\u6027\uFF09`, path: memoryDir(memoryHash(cwd)), kind: "dir", group: "cross-session" },
93
+ { id: "subagents", label: "worker \u5B50\u4F1A\u8BDD\u6062\u590D\u6570\u636E", path: join(home, "subagents"), kind: "dir", group: "cross-session" },
94
+ { id: "update-log", label: "\u81EA\u66F4\u65B0\u65E5\u5FD7", path: join(home, "update.log"), kind: "file", group: "cross-session", gate: "\u6267\u884C\u8FC7 /update" },
95
+ { id: "history", label: "TUI \u547D\u4EE4\u5386\u53F2", path: join(home, "history.json"), kind: "file", group: "cross-session" },
96
+ // ── 项目内 ──
97
+ { id: "knowledge", label: "\u9879\u76EE\u6301\u4E45\u5316\u77E5\u8BC6\uFF08\u8DE8\u4F1A\u8BDD\uFF09", path: join(projectRivet, "knowledge"), kind: "dir", group: "project" },
98
+ { id: "playbook", label: "\u5386\u53F2\u6559\u8BAD\u56DE\u653E", path: join(projectRivet, "playbook.jsonl"), kind: "file", group: "project" },
99
+ { id: "artifacts", label: "\u5927\u5DE5\u5177\u8F93\u51FA\u5168\u6587\uFF08\u4E3B\u4F1A\u8BDD + worker\uFF09", path: join(projectRivet, "artifacts"), kind: "dir", group: "project" },
100
+ { id: "plans", label: "Plan Mode \u8BA1\u5212\u6587\u6863", path: join(projectRivet, "plans"), kind: "dir", group: "project" }
101
+ ];
102
+ return {
103
+ rivetHome: home,
104
+ homeSource: process.env["RIVET_HOME"] ? "RIVET_HOME" : "platform-default",
105
+ platformDefault: defaultRivetHome(),
106
+ cwd,
107
+ projectSlug: slug,
108
+ ...sessionId ? { sessionId } : {},
109
+ sessionDir: sessionRoot,
110
+ locations,
111
+ overrides: collectOverrides()
112
+ };
113
+ }
114
+ function statLogLocations(locations) {
115
+ return locations.map((loc) => {
116
+ try {
117
+ if (!existsSync(loc.path)) return { ...loc, exists: false, bytes: 0 };
118
+ const st = statSync(loc.path);
119
+ if (st.isDirectory()) {
120
+ let entries = 0;
121
+ try {
122
+ entries = readdirSync(loc.path).length;
123
+ } catch {
124
+ entries = 0;
125
+ }
126
+ return { ...loc, exists: true, bytes: 0, entries, mtimeMs: st.mtimeMs };
127
+ }
128
+ return { ...loc, exists: true, bytes: st.size, mtimeMs: st.mtimeMs };
129
+ } catch {
130
+ return { ...loc, exists: false, bytes: 0 };
131
+ }
132
+ });
133
+ }
134
+ function latestSessionId(sessionDir) {
135
+ try {
136
+ const files = readdirSync(sessionDir).filter((f) => f.endsWith(".jsonl") && !f.includes(".claims.") && !f.startsWith("worker-"));
137
+ let best;
138
+ for (const f of files) {
139
+ const id = f.slice(0, -".jsonl".length);
140
+ let mtime = 0;
141
+ try {
142
+ mtime = statSync(join(sessionDir, f)).mtimeMs;
143
+ } catch {
144
+ continue;
145
+ }
146
+ if (!best || mtime > best.mtime) best = { id, mtime };
147
+ }
148
+ return best?.id;
149
+ } catch {
150
+ return void 0;
151
+ }
152
+ }
153
+ function formatBytes(n) {
154
+ if (n < 1024) return `${n} B`;
155
+ if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB`;
156
+ return `${(n / (1024 * 1024)).toFixed(1)} MB`;
157
+ }
158
+ function sizeCell(s) {
159
+ if (!s.exists) return " -- ";
160
+ if (s.kind === "dir") return `${s.entries ?? 0} \u9879`;
161
+ return formatBytes(s.bytes);
162
+ }
163
+ function formatLogLocationReport(report, statuses) {
164
+ const lines = ["\u65E5\u5FD7\u843D\u70B9 (/logs)", "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"];
165
+ lines.push(`\u6570\u636E\u6839: ${report.rivetHome}`);
166
+ lines.push(` \u6765\u6E90 ${report.homeSource === "RIVET_HOME" ? "RIVET_HOME \u73AF\u5883\u53D8\u91CF" : `\u5E73\u53F0\u9ED8\u8BA4\uFF08${report.platformDefault}\uFF09`}`);
167
+ lines.push(`\u9879\u76EE: ${report.cwd}`);
168
+ lines.push(`slug: ${report.projectSlug}`);
169
+ lines.push(`\u4F1A\u8BDD: ${report.sessionId ?? "\uFF08\u672A\u6307\u5B9A\u2014\u2014\u4F1A\u8BDD\u4E13\u5C5E\u843D\u70B9\u4EE5 <session-id> \u5360\u4F4D\uFF09"}`);
170
+ if (report.overrides.length > 0) {
171
+ lines.push("", "\u751F\u6548\u4E2D\u7684\u8DEF\u5F84\u8986\u76D6");
172
+ lines.push("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
173
+ for (const o of report.overrides) {
174
+ lines.push(`${o.env}=${o.value}`);
175
+ lines.push(` ${o.effect}`);
176
+ }
177
+ }
178
+ const groups = ["session", "session-diag", "desktop", "cross-session", "project"];
179
+ for (const g of groups) {
180
+ const rows = statuses.filter((s) => s.group === g);
181
+ if (rows.length === 0) continue;
182
+ lines.push("", GROUP_LABELS[g], "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
183
+ const widest = Math.max(...rows.map((r) => sizeCell(r).length));
184
+ for (const r of rows) {
185
+ lines.push(`[${sizeCell(r).padStart(widest)}] ${r.path}`);
186
+ lines.push(`${" ".repeat(widest + 3)}${r.label}`);
187
+ if (r.gate) lines.push(`${" ".repeat(widest + 3)}\u95E8\u63A7: ${r.gate}`);
188
+ if (r.retention) lines.push(`${" ".repeat(widest + 3)}\u56DE\u6536: ${r.retention}`);
189
+ }
190
+ }
191
+ lines.push("");
192
+ lines.push("\u8BF4\u660E: [ -- ] \u8868\u793A\u5C1A\u672A\u4EA7\u751F\u3002\u516D\u7EF4\u4E3A\u7A7A\u5148\u67E5\u95E8\u63A7\u90A3\u884C\u7684\u73AF\u5883\u53D8\u91CF\u3002");
193
+ lines.push("\u684C\u9762\u7AEF\u7684\u6570\u636E\u6839\u7531 launcher.json \u51B3\u5B9A\uFF0C\u4E0D\u8BFB\u73AF\u5883\u91CC\u7684 RIVET_HOME\u2014\u2014");
194
+ lines.push("\u5728\u8BBE\u7F6E \u2192 \u5B58\u50A8\u4F4D\u7F6E\u9875\u53EF\u4EE5\u770B\u5230\u684C\u9762\u7AEF\u5B9E\u9645\u7528\u7684\u8DEF\u5F84\u3002");
195
+ return lines.join("\n");
196
+ }
197
+
198
+ // src/diagnostics/logs-cli.ts
199
+ var USAGE = [
200
+ "\u7528\u6CD5: rivet logs [open [desktop]] [--session <id>] [--json]",
201
+ "",
202
+ " \uFF08\u65E0\u53C2\uFF09 \u5217\u51FA\u672C\u9879\u76EE\u5F53\u524D/\u6700\u8FD1\u4F1A\u8BDD\u7684\u6240\u6709\u65E5\u5FD7\u843D\u70B9",
203
+ " open \u5728\u6587\u4EF6\u7BA1\u7406\u5668\u4E2D\u6253\u5F00\u4F1A\u8BDD\u76EE\u5F55",
204
+ " open desktop \u6253\u5F00\u684C\u9762\u7AEF sidecar \u65E5\u5FD7\u76EE\u5F55",
205
+ " --session <id> \u6307\u5B9A\u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u53D6\u6700\u8FD1\u5199\u5165\u7684\u90A3\u4E2A\uFF09",
206
+ " --json \u8F93\u51FA\u7ED3\u6784\u5316 JSON\uFF0C\u4FBF\u4E8E\u4E0A\u62A5 issue"
207
+ ].join("\n");
208
+ function defaultOpen(path) {
209
+ const { cmd, args } = buildOpenPathCommand(path);
210
+ spawn(cmd, args, { detached: true, stdio: "ignore", windowsHide: true }).unref();
211
+ }
212
+ function runLogsCLI(args, deps) {
213
+ let json = false;
214
+ let sessionId;
215
+ let openTarget;
216
+ for (let i = 0; i < args.length; i++) {
217
+ const a = args[i];
218
+ if (a === "--json") {
219
+ json = true;
220
+ continue;
221
+ }
222
+ if (a === "--session") {
223
+ const next = args[i + 1];
224
+ if (!next || next.startsWith("-")) {
225
+ return { output: `--session \u9700\u8981\u4E00\u4E2A\u4F1A\u8BDD id\u3002
226
+
227
+ ${USAGE}`, exitCode: 1 };
228
+ }
229
+ sessionId = next;
230
+ i++;
231
+ continue;
232
+ }
233
+ if (a === "open") {
234
+ openTarget = args[i + 1]?.toLowerCase() === "desktop" ? "desktop" : "session";
235
+ if (openTarget === "desktop") i++;
236
+ continue;
237
+ }
238
+ return { output: `\u65E0\u6CD5\u8BC6\u522B\u7684\u53C2\u6570: ${a}
239
+
240
+ ${USAGE}`, exitCode: 1 };
241
+ }
242
+ const probe = resolveLogLocations({ cwd: deps.cwd });
243
+ const resolvedSession = sessionId ?? latestSessionId(probe.sessionDir);
244
+ const report = resolveLogLocations({
245
+ cwd: deps.cwd,
246
+ ...resolvedSession ? { sessionId: resolvedSession } : {}
247
+ });
248
+ if (openTarget) {
249
+ const target = openTarget === "desktop" ? report.locations.find((l) => l.id === "sidecar-logs")?.path : report.sessionDir;
250
+ if (!target) return { output: "\u672A\u80FD\u89E3\u6790\u76EE\u6807\u76EE\u5F55\u3002", exitCode: 1 };
251
+ try {
252
+ (deps.openPath ?? defaultOpen)(target);
253
+ return { output: `\u5DF2\u6253\u5F00: ${target}`, exitCode: 0 };
254
+ } catch (err) {
255
+ return { output: `\u6253\u5F00\u5931\u8D25 (${err.message})\u3002\u8DEF\u5F84: ${target}`, exitCode: 1 };
256
+ }
257
+ }
258
+ const statuses = statLogLocations(report.locations);
259
+ if (json) {
260
+ return {
261
+ output: JSON.stringify({
262
+ rivetHome: report.rivetHome,
263
+ homeSource: report.homeSource,
264
+ platformDefault: report.platformDefault,
265
+ cwd: report.cwd,
266
+ projectSlug: report.projectSlug,
267
+ ...report.sessionId ? { sessionId: report.sessionId } : {},
268
+ sessionDir: report.sessionDir,
269
+ overrides: report.overrides,
270
+ locations: statuses
271
+ }, null, 2),
272
+ exitCode: 0
273
+ };
274
+ }
275
+ const hint = resolvedSession ? "" : "\n\n\u672C\u9879\u76EE\u8FD8\u6CA1\u6709\u4F1A\u8BDD\u8BB0\u5F55\uFF08\u4F1A\u8BDD\u4E13\u5C5E\u843D\u70B9\u4EE5 <session-id> \u5360\u4F4D\uFF09\u3002";
276
+ return {
277
+ output: formatLogLocationReport(report, statuses) + hint,
278
+ exitCode: 0
279
+ };
280
+ }
281
+ export {
282
+ runLogsCLI
283
+ };
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env -S node --expose-gc --max-old-space-size=4096
2
+ import { createRequire as __rivetCreateRequire } from 'node:module'; const require = __rivetCreateRequire(import.meta.url);
3
+ import {
4
+ AgentLoop,
5
+ formatActivePlanPointer
6
+ } from "./chunk-OTNHSAGN.js";
7
+ import "./chunk-DZ6UOJ5D.js";
8
+ import "./chunk-T3ED6BY2.js";
9
+ import "./chunk-RAXBAWRN.js";
10
+ import "./chunk-4J5TZGOE.js";
11
+ import "./chunk-BUIMGNDD.js";
12
+ import "./chunk-ZU7JZCVP.js";
13
+ import "./chunk-JSS75KCG.js";
14
+ import "./chunk-EHHUASO5.js";
15
+ import "./chunk-LA6IPTGH.js";
16
+ import "./chunk-HBVF6BWO.js";
17
+ import "./chunk-UHGLFRZE.js";
18
+ import "./chunk-4QJ3Y5JM.js";
19
+ import "./chunk-CGOADM2X.js";
20
+ import "./chunk-ZGGCEXDC.js";
21
+ import "./chunk-ZMZCZNKU.js";
22
+ import "./chunk-Z3QE7TZM.js";
23
+ import "./chunk-GHVMWF2I.js";
24
+ import "./chunk-J6ESSM47.js";
25
+ import "./chunk-3C3R7JXY.js";
26
+ import "./chunk-TI4GSEL5.js";
27
+ import "./chunk-OXMIV4WE.js";
28
+ import "./chunk-SEPGEJNK.js";
29
+ import "./chunk-7RDOV3DF.js";
30
+ import "./chunk-6HSVXHCZ.js";
31
+ import "./chunk-RWA23GMM.js";
32
+ import "./chunk-OHSV42QB.js";
33
+ import "./chunk-ADIVZ2D5.js";
34
+ import "./chunk-7FW3I7WC.js";
35
+ import "./chunk-GD4ZNZ7W.js";
36
+ import "./chunk-ZQKXBUB7.js";
37
+ import "./chunk-Z5Z3JHJY.js";
38
+ import "./chunk-KIOXTQQL.js";
39
+ import "./chunk-35H7GVNR.js";
40
+ import "./chunk-AE3P3F6W.js";
41
+ import "./chunk-JSXWIWWJ.js";
42
+ import "./chunk-BSECIPAQ.js";
43
+ import "./chunk-2E6CK2RC.js";
44
+ import "./chunk-ZO3I3A7O.js";
45
+ import "./chunk-P6GJOVO6.js";
46
+ import "./chunk-TPI73L57.js";
47
+ import "./chunk-HV4YGVMS.js";
48
+ import "./chunk-722LQO64.js";
49
+ import "./chunk-SUJERP5I.js";
50
+ import "./chunk-CI4R6P2B.js";
51
+ import "./chunk-XU2YXCDL.js";
52
+ import "./chunk-ETHFACAB.js";
53
+ import "./chunk-THKDVSEC.js";
54
+ import "./chunk-UFMN76QD.js";
55
+ import "./chunk-EXUE5W2F.js";
56
+ import "./chunk-LH5VCGLB.js";
57
+ import "./chunk-6S5FPUS7.js";
58
+ import "./chunk-EXXICUIW.js";
59
+ import "./chunk-QARAGUXX.js";
60
+ import "./chunk-DEBI37QB.js";
61
+ import "./chunk-ER5JW2QZ.js";
62
+ import "./chunk-CGFZGR7G.js";
63
+ import "./chunk-P5KJURUR.js";
64
+ import "./chunk-WMUWEO2C.js";
65
+ import "./chunk-BKTQAYO2.js";
66
+ import "./chunk-OO3TAHO5.js";
67
+ import "./chunk-EGEI2RQA.js";
68
+ import "./chunk-ZNC5T65N.js";
69
+ import "./chunk-7KUCBNLB.js";
70
+ import "./chunk-A5MNH4ER.js";
71
+ import "./chunk-BCQXEZPJ.js";
72
+ import "./chunk-5GGOGLSN.js";
73
+ export {
74
+ AgentLoop,
75
+ formatActivePlanPointer
76
+ };