shennian 0.2.4 → 0.2.6

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 (286) hide show
  1. package/package.json +3 -2
  2. package/dist/bin/shennian.d.ts +0 -3
  3. package/dist/bin/shennian.d.ts.map +0 -1
  4. package/dist/bin/shennian.js +0 -3
  5. package/dist/bin/shennian.js.map +0 -1
  6. package/dist/src/__experiments__/probe-debug.d.ts +0 -2
  7. package/dist/src/__experiments__/probe-debug.d.ts.map +0 -1
  8. package/dist/src/__experiments__/probe-debug.js +0 -66
  9. package/dist/src/__experiments__/probe-debug.js.map +0 -1
  10. package/dist/src/__experiments__/probe-final-benchmark.d.ts +0 -3
  11. package/dist/src/__experiments__/probe-final-benchmark.d.ts.map +0 -1
  12. package/dist/src/__experiments__/probe-final-benchmark.js +0 -234
  13. package/dist/src/__experiments__/probe-final-benchmark.js.map +0 -1
  14. package/dist/src/__experiments__/probe-models-final.d.ts +0 -19
  15. package/dist/src/__experiments__/probe-models-final.d.ts.map +0 -1
  16. package/dist/src/__experiments__/probe-models-final.js +0 -250
  17. package/dist/src/__experiments__/probe-models-final.js.map +0 -1
  18. package/dist/src/__experiments__/probe-models.d.ts +0 -7
  19. package/dist/src/__experiments__/probe-models.d.ts.map +0 -1
  20. package/dist/src/__experiments__/probe-models.js +0 -251
  21. package/dist/src/__experiments__/probe-models.js.map +0 -1
  22. package/dist/src/__tests__/agents-e2e.d.ts +0 -21
  23. package/dist/src/__tests__/agents-e2e.d.ts.map +0 -1
  24. package/dist/src/__tests__/agents-e2e.js +0 -155
  25. package/dist/src/__tests__/agents-e2e.js.map +0 -1
  26. package/dist/src/__tests__/claude-adapter.test.d.ts +0 -2
  27. package/dist/src/__tests__/claude-adapter.test.d.ts.map +0 -1
  28. package/dist/src/__tests__/claude-adapter.test.js +0 -75
  29. package/dist/src/__tests__/claude-adapter.test.js.map +0 -1
  30. package/dist/src/__tests__/codex-adapter.test.d.ts +0 -2
  31. package/dist/src/__tests__/codex-adapter.test.d.ts.map +0 -1
  32. package/dist/src/__tests__/codex-adapter.test.js +0 -281
  33. package/dist/src/__tests__/codex-adapter.test.js.map +0 -1
  34. package/dist/src/__tests__/config.test.d.ts +0 -2
  35. package/dist/src/__tests__/config.test.d.ts.map +0 -1
  36. package/dist/src/__tests__/config.test.js +0 -60
  37. package/dist/src/__tests__/config.test.js.map +0 -1
  38. package/dist/src/__tests__/cursor-adapter.test.d.ts +0 -2
  39. package/dist/src/__tests__/cursor-adapter.test.d.ts.map +0 -1
  40. package/dist/src/__tests__/cursor-adapter.test.js +0 -69
  41. package/dist/src/__tests__/cursor-adapter.test.js.map +0 -1
  42. package/dist/src/__tests__/custom-agent-flow.test.d.ts +0 -2
  43. package/dist/src/__tests__/custom-agent-flow.test.d.ts.map +0 -1
  44. package/dist/src/__tests__/custom-agent-flow.test.js +0 -244
  45. package/dist/src/__tests__/custom-agent-flow.test.js.map +0 -1
  46. package/dist/src/__tests__/daemon-autostart.test.d.ts +0 -2
  47. package/dist/src/__tests__/daemon-autostart.test.d.ts.map +0 -1
  48. package/dist/src/__tests__/daemon-autostart.test.js +0 -60
  49. package/dist/src/__tests__/daemon-autostart.test.js.map +0 -1
  50. package/dist/src/__tests__/e2e-relay.d.ts +0 -19
  51. package/dist/src/__tests__/e2e-relay.d.ts.map +0 -1
  52. package/dist/src/__tests__/e2e-relay.js +0 -400
  53. package/dist/src/__tests__/e2e-relay.js.map +0 -1
  54. package/dist/src/__tests__/fs-handler.test.d.ts +0 -2
  55. package/dist/src/__tests__/fs-handler.test.d.ts.map +0 -1
  56. package/dist/src/__tests__/fs-handler.test.js +0 -19
  57. package/dist/src/__tests__/fs-handler.test.js.map +0 -1
  58. package/dist/src/__tests__/model-discovery.test.d.ts +0 -2
  59. package/dist/src/__tests__/model-discovery.test.d.ts.map +0 -1
  60. package/dist/src/__tests__/model-discovery.test.js +0 -47
  61. package/dist/src/__tests__/model-discovery.test.js.map +0 -1
  62. package/dist/src/__tests__/model-switching.test.d.ts +0 -2
  63. package/dist/src/__tests__/model-switching.test.d.ts.map +0 -1
  64. package/dist/src/__tests__/model-switching.test.js +0 -292
  65. package/dist/src/__tests__/model-switching.test.js.map +0 -1
  66. package/dist/src/__tests__/native-fusion-parsers.test.d.ts +0 -2
  67. package/dist/src/__tests__/native-fusion-parsers.test.d.ts.map +0 -1
  68. package/dist/src/__tests__/native-fusion-parsers.test.js +0 -253
  69. package/dist/src/__tests__/native-fusion-parsers.test.js.map +0 -1
  70. package/dist/src/__tests__/native-fusion-service.test.d.ts +0 -2
  71. package/dist/src/__tests__/native-fusion-service.test.d.ts.map +0 -1
  72. package/dist/src/__tests__/native-fusion-service.test.js +0 -157
  73. package/dist/src/__tests__/native-fusion-service.test.js.map +0 -1
  74. package/dist/src/__tests__/native-session-sync.test.d.ts +0 -2
  75. package/dist/src/__tests__/native-session-sync.test.d.ts.map +0 -1
  76. package/dist/src/__tests__/native-session-sync.test.js +0 -198
  77. package/dist/src/__tests__/native-session-sync.test.js.map +0 -1
  78. package/dist/src/__tests__/pair-qr.test.d.ts +0 -2
  79. package/dist/src/__tests__/pair-qr.test.d.ts.map +0 -1
  80. package/dist/src/__tests__/pair-qr.test.js +0 -13
  81. package/dist/src/__tests__/pair-qr.test.js.map +0 -1
  82. package/dist/src/__tests__/pi-context.test.d.ts +0 -2
  83. package/dist/src/__tests__/pi-context.test.d.ts.map +0 -1
  84. package/dist/src/__tests__/pi-context.test.js +0 -261
  85. package/dist/src/__tests__/pi-context.test.js.map +0 -1
  86. package/dist/src/__tests__/session-manager.test.d.ts +0 -2
  87. package/dist/src/__tests__/session-manager.test.d.ts.map +0 -1
  88. package/dist/src/__tests__/session-manager.test.js +0 -685
  89. package/dist/src/__tests__/session-manager.test.js.map +0 -1
  90. package/dist/src/__tests__/session-store.test.d.ts +0 -2
  91. package/dist/src/__tests__/session-store.test.d.ts.map +0 -1
  92. package/dist/src/__tests__/session-store.test.js +0 -106
  93. package/dist/src/__tests__/session-store.test.js.map +0 -1
  94. package/dist/src/agents/adapter.d.ts +0 -36
  95. package/dist/src/agents/adapter.d.ts.map +0 -1
  96. package/dist/src/agents/adapter.js +0 -20
  97. package/dist/src/agents/adapter.js.map +0 -1
  98. package/dist/src/agents/claude.d.ts +0 -25
  99. package/dist/src/agents/claude.d.ts.map +0 -1
  100. package/dist/src/agents/claude.js +0 -228
  101. package/dist/src/agents/claude.js.map +0 -1
  102. package/dist/src/agents/codex.d.ts +0 -50
  103. package/dist/src/agents/codex.d.ts.map +0 -1
  104. package/dist/src/agents/codex.js +0 -785
  105. package/dist/src/agents/codex.js.map +0 -1
  106. package/dist/src/agents/command-spec.d.ts +0 -11
  107. package/dist/src/agents/command-spec.d.ts.map +0 -1
  108. package/dist/src/agents/command-spec.js +0 -62
  109. package/dist/src/agents/command-spec.js.map +0 -1
  110. package/dist/src/agents/cursor.d.ts +0 -23
  111. package/dist/src/agents/cursor.d.ts.map +0 -1
  112. package/dist/src/agents/cursor.js +0 -250
  113. package/dist/src/agents/cursor.js.map +0 -1
  114. package/dist/src/agents/custom.d.ts +0 -36
  115. package/dist/src/agents/custom.d.ts.map +0 -1
  116. package/dist/src/agents/custom.js +0 -246
  117. package/dist/src/agents/custom.js.map +0 -1
  118. package/dist/src/agents/detect.d.ts +0 -10
  119. package/dist/src/agents/detect.d.ts.map +0 -1
  120. package/dist/src/agents/detect.js +0 -47
  121. package/dist/src/agents/detect.js.map +0 -1
  122. package/dist/src/agents/gemini.d.ts +0 -18
  123. package/dist/src/agents/gemini.d.ts.map +0 -1
  124. package/dist/src/agents/gemini.js +0 -168
  125. package/dist/src/agents/gemini.js.map +0 -1
  126. package/dist/src/agents/model-registry/cache.d.ts +0 -5
  127. package/dist/src/agents/model-registry/cache.d.ts.map +0 -1
  128. package/dist/src/agents/model-registry/cache.js +0 -38
  129. package/dist/src/agents/model-registry/cache.js.map +0 -1
  130. package/dist/src/agents/model-registry/discovery.d.ts +0 -5
  131. package/dist/src/agents/model-registry/discovery.d.ts.map +0 -1
  132. package/dist/src/agents/model-registry/discovery.js +0 -202
  133. package/dist/src/agents/model-registry/discovery.js.map +0 -1
  134. package/dist/src/agents/model-registry/parsers.d.ts +0 -9
  135. package/dist/src/agents/model-registry/parsers.d.ts.map +0 -1
  136. package/dist/src/agents/model-registry/parsers.js +0 -259
  137. package/dist/src/agents/model-registry/parsers.js.map +0 -1
  138. package/dist/src/agents/model-registry/runner.d.ts +0 -11
  139. package/dist/src/agents/model-registry/runner.d.ts.map +0 -1
  140. package/dist/src/agents/model-registry/runner.js +0 -160
  141. package/dist/src/agents/model-registry/runner.js.map +0 -1
  142. package/dist/src/agents/model-registry/service.d.ts +0 -7
  143. package/dist/src/agents/model-registry/service.d.ts.map +0 -1
  144. package/dist/src/agents/model-registry/service.js +0 -69
  145. package/dist/src/agents/model-registry/service.js.map +0 -1
  146. package/dist/src/agents/model-registry/types.d.ts +0 -31
  147. package/dist/src/agents/model-registry/types.d.ts.map +0 -1
  148. package/dist/src/agents/model-registry/types.js +0 -9
  149. package/dist/src/agents/model-registry/types.js.map +0 -1
  150. package/dist/src/agents/model-registry.d.ts +0 -13
  151. package/dist/src/agents/model-registry.d.ts.map +0 -1
  152. package/dist/src/agents/model-registry.js +0 -15
  153. package/dist/src/agents/model-registry.js.map +0 -1
  154. package/dist/src/agents/openclaw.d.ts +0 -21
  155. package/dist/src/agents/openclaw.d.ts.map +0 -1
  156. package/dist/src/agents/openclaw.js +0 -264
  157. package/dist/src/agents/openclaw.js.map +0 -1
  158. package/dist/src/agents/pi.d.ts +0 -52
  159. package/dist/src/agents/pi.d.ts.map +0 -1
  160. package/dist/src/agents/pi.js +0 -794
  161. package/dist/src/agents/pi.js.map +0 -1
  162. package/dist/src/commands/agent.d.ts +0 -3
  163. package/dist/src/commands/agent.d.ts.map +0 -1
  164. package/dist/src/commands/agent.js +0 -162
  165. package/dist/src/commands/agent.js.map +0 -1
  166. package/dist/src/commands/daemon.d.ts +0 -30
  167. package/dist/src/commands/daemon.d.ts.map +0 -1
  168. package/dist/src/commands/daemon.js +0 -477
  169. package/dist/src/commands/daemon.js.map +0 -1
  170. package/dist/src/commands/pair-qr.d.ts +0 -5
  171. package/dist/src/commands/pair-qr.d.ts.map +0 -1
  172. package/dist/src/commands/pair-qr.js +0 -7
  173. package/dist/src/commands/pair-qr.js.map +0 -1
  174. package/dist/src/commands/pair.d.ts +0 -9
  175. package/dist/src/commands/pair.d.ts.map +0 -1
  176. package/dist/src/commands/pair.js +0 -163
  177. package/dist/src/commands/pair.js.map +0 -1
  178. package/dist/src/commands/upgrade.d.ts +0 -6
  179. package/dist/src/commands/upgrade.d.ts.map +0 -1
  180. package/dist/src/commands/upgrade.js +0 -146
  181. package/dist/src/commands/upgrade.js.map +0 -1
  182. package/dist/src/config/index.d.ts +0 -33
  183. package/dist/src/config/index.d.ts.map +0 -1
  184. package/dist/src/config/index.js +0 -32
  185. package/dist/src/config/index.js.map +0 -1
  186. package/dist/src/fs/handler.d.ts +0 -27
  187. package/dist/src/fs/handler.d.ts.map +0 -1
  188. package/dist/src/fs/handler.js +0 -131
  189. package/dist/src/fs/handler.js.map +0 -1
  190. package/dist/src/fs/multimodal.d.ts +0 -5
  191. package/dist/src/fs/multimodal.d.ts.map +0 -1
  192. package/dist/src/fs/multimodal.js +0 -39
  193. package/dist/src/fs/multimodal.js.map +0 -1
  194. package/dist/src/fs/security.d.ts +0 -3
  195. package/dist/src/fs/security.d.ts.map +0 -1
  196. package/dist/src/fs/security.js +0 -28
  197. package/dist/src/fs/security.js.map +0 -1
  198. package/dist/src/index.d.ts +0 -2
  199. package/dist/src/index.d.ts.map +0 -1
  200. package/dist/src/index.js +0 -251
  201. package/dist/src/index.js.map +0 -1
  202. package/dist/src/log-reporter.d.ts +0 -19
  203. package/dist/src/log-reporter.d.ts.map +0 -1
  204. package/dist/src/log-reporter.js +0 -34
  205. package/dist/src/log-reporter.js.map +0 -1
  206. package/dist/src/native-fusion/parsers.d.ts +0 -13
  207. package/dist/src/native-fusion/parsers.d.ts.map +0 -1
  208. package/dist/src/native-fusion/parsers.js +0 -371
  209. package/dist/src/native-fusion/parsers.js.map +0 -1
  210. package/dist/src/native-fusion/service.d.ts +0 -26
  211. package/dist/src/native-fusion/service.d.ts.map +0 -1
  212. package/dist/src/native-fusion/service.js +0 -167
  213. package/dist/src/native-fusion/service.js.map +0 -1
  214. package/dist/src/native-fusion/state.d.ts +0 -4
  215. package/dist/src/native-fusion/state.d.ts.map +0 -1
  216. package/dist/src/native-fusion/state.js +0 -23
  217. package/dist/src/native-fusion/state.js.map +0 -1
  218. package/dist/src/native-fusion/types.d.ts +0 -25
  219. package/dist/src/native-fusion/types.d.ts.map +0 -1
  220. package/dist/src/native-fusion/types.js +0 -2
  221. package/dist/src/native-fusion/types.js.map +0 -1
  222. package/dist/src/native-sync/discover.d.ts +0 -6
  223. package/dist/src/native-sync/discover.d.ts.map +0 -1
  224. package/dist/src/native-sync/discover.js +0 -69
  225. package/dist/src/native-sync/discover.js.map +0 -1
  226. package/dist/src/native-sync/parsers.d.ts +0 -3
  227. package/dist/src/native-sync/parsers.d.ts.map +0 -1
  228. package/dist/src/native-sync/parsers.js +0 -373
  229. package/dist/src/native-sync/parsers.js.map +0 -1
  230. package/dist/src/native-sync/service.d.ts +0 -16
  231. package/dist/src/native-sync/service.d.ts.map +0 -1
  232. package/dist/src/native-sync/service.js +0 -95
  233. package/dist/src/native-sync/service.js.map +0 -1
  234. package/dist/src/native-sync/state.d.ts +0 -6
  235. package/dist/src/native-sync/state.d.ts.map +0 -1
  236. package/dist/src/native-sync/state.js +0 -34
  237. package/dist/src/native-sync/state.js.map +0 -1
  238. package/dist/src/native-sync/types.d.ts +0 -23
  239. package/dist/src/native-sync/types.d.ts.map +0 -1
  240. package/dist/src/native-sync/types.js +0 -4
  241. package/dist/src/native-sync/types.js.map +0 -1
  242. package/dist/src/region.d.ts +0 -16
  243. package/dist/src/region.d.ts.map +0 -1
  244. package/dist/src/region.js +0 -100
  245. package/dist/src/region.js.map +0 -1
  246. package/dist/src/relay/client.d.ts +0 -53
  247. package/dist/src/relay/client.d.ts.map +0 -1
  248. package/dist/src/relay/client.js +0 -293
  249. package/dist/src/relay/client.js.map +0 -1
  250. package/dist/src/session/handlers/agents.d.ts +0 -5
  251. package/dist/src/session/handlers/agents.d.ts.map +0 -1
  252. package/dist/src/session/handlers/agents.js +0 -56
  253. package/dist/src/session/handlers/agents.js.map +0 -1
  254. package/dist/src/session/handlers/chat.d.ts +0 -5
  255. package/dist/src/session/handlers/chat.d.ts.map +0 -1
  256. package/dist/src/session/handlers/chat.js +0 -327
  257. package/dist/src/session/handlers/chat.js.map +0 -1
  258. package/dist/src/session/handlers/control.d.ts +0 -6
  259. package/dist/src/session/handlers/control.d.ts.map +0 -1
  260. package/dist/src/session/handlers/control.js +0 -58
  261. package/dist/src/session/handlers/control.js.map +0 -1
  262. package/dist/src/session/handlers/fs.d.ts +0 -11
  263. package/dist/src/session/handlers/fs.d.ts.map +0 -1
  264. package/dist/src/session/handlers/fs.js +0 -253
  265. package/dist/src/session/handlers/fs.js.map +0 -1
  266. package/dist/src/session/handlers/queue.d.ts +0 -4
  267. package/dist/src/session/handlers/queue.d.ts.map +0 -1
  268. package/dist/src/session/handlers/queue.js +0 -66
  269. package/dist/src/session/handlers/queue.js.map +0 -1
  270. package/dist/src/session/manager.d.ts +0 -28
  271. package/dist/src/session/manager.d.ts.map +0 -1
  272. package/dist/src/session/manager.js +0 -155
  273. package/dist/src/session/manager.js.map +0 -1
  274. package/dist/src/session/store.d.ts +0 -8
  275. package/dist/src/session/store.d.ts.map +0 -1
  276. package/dist/src/session/store.js +0 -47
  277. package/dist/src/session/store.js.map +0 -1
  278. package/dist/src/session/types.d.ts +0 -36
  279. package/dist/src/session/types.d.ts.map +0 -1
  280. package/dist/src/session/types.js +0 -5
  281. package/dist/src/session/types.js.map +0 -1
  282. package/dist/src/upgrade/engine.d.ts +0 -65
  283. package/dist/src/upgrade/engine.d.ts.map +0 -1
  284. package/dist/src/upgrade/engine.js +0 -239
  285. package/dist/src/upgrade/engine.js.map +0 -1
  286. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,36 +0,0 @@
1
- import type { AgentType } from '@shennian/wire';
2
- import type { AgentAdapter } from '../agents/adapter.js';
3
- import type { CliRelayClient } from '../relay/client.js';
4
- import type { NativeSessionFusionService } from '../native-fusion/service.js';
5
- export type ActiveSession = {
6
- adapter: AgentAdapter;
7
- workDir: string;
8
- agentType: AgentType;
9
- agentSessionId: string | null;
10
- lastActiveAt: number;
11
- currentRunId: string | null;
12
- nextEventSeq: number;
13
- pendingTextEvent: {
14
- runId: string;
15
- seq: number;
16
- text: string;
17
- thinking: boolean;
18
- } | null;
19
- };
20
- export type PendingTransfer = {
21
- tempPath: string;
22
- targetPath: string;
23
- totalSize: number;
24
- };
25
- export type SessionManagerRuntime = {
26
- client: CliRelayClient;
27
- pendingTransfers: Map<string, PendingTransfer>;
28
- processedReqIds: Set<string>;
29
- reloadCustomAgents: () => void;
30
- resolvePath: (pathValue: string) => string;
31
- runTextAcc: Map<string, string>;
32
- sessions: Map<string, ActiveSession>;
33
- evictIdleSessions: () => void;
34
- nativeFusion: NativeSessionFusionService | null;
35
- };
36
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAE7E,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,OAAO,CAAA;KAClB,GAAG,IAAI,CAAA;CACT,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,cAAc,CAAA;IACtB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC9C,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACpC,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,YAAY,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAChD,CAAA"}
@@ -1,5 +0,0 @@
1
- // @arch docs/architecture/cli/daemon.md#会话管理
2
- // @test src/__tests__/session-manager.test.ts
3
- // @test src/__tests__/model-switching.test.ts
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/session/types.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,8CAA8C;AAC9C,8CAA8C"}
@@ -1,65 +0,0 @@
1
- export type UpgradeProgress = {
2
- step: 'checking';
3
- } | {
4
- step: 'backing-up';
5
- } | {
6
- step: 'installing';
7
- version: string;
8
- } | {
9
- step: 'verifying';
10
- version: string;
11
- } | {
12
- step: 'restarting';
13
- from: string;
14
- to: string;
15
- } | {
16
- step: 'done';
17
- from: string;
18
- to: string;
19
- };
20
- export type UpgradeResult = {
21
- ok: true;
22
- from: string;
23
- to: string;
24
- } | {
25
- ok: false;
26
- error: string;
27
- rolledBack?: boolean;
28
- };
29
- type UpgradeAttempt = {
30
- from: string;
31
- to: string;
32
- attemptCount: number;
33
- attemptAt: number;
34
- };
35
- export declare function getCurrentVersion(): string;
36
- export declare function fetchLatestVersion(): Promise<string>;
37
- /**
38
- * Compare semver strings. Returns:
39
- * 'none' — same or older
40
- * 'patch' — only patch differs
41
- * 'minor' — minor or patch differs
42
- * 'major' — major differs
43
- */
44
- export declare function compareVersions(current: string, latest: string): 'none' | 'patch' | 'minor' | 'major';
45
- export declare function readUpgradeAttempt(): UpgradeAttempt | null;
46
- export declare function writeUpgradeAttempt(attempt: UpgradeAttempt): void;
47
- export declare function clearUpgradeAttempt(): void;
48
- /**
49
- * Called on daemon startup. Detects crash loops from a failed upgrade and
50
- * initiates rollback if crash count exceeds threshold.
51
- * Returns true if rollback was performed (caller should exit and let service manager restart).
52
- */
53
- export declare function handleStartupCrashCheck(): Promise<boolean>;
54
- export declare function performUpgrade(targetVersion: string, onProgress: (p: UpgradeProgress) => void): Promise<UpgradeResult>;
55
- export type VersionCheckResult = {
56
- hasUpdate: false;
57
- } | {
58
- hasUpdate: true;
59
- current: string;
60
- latest: string;
61
- changeType: 'patch' | 'minor' | 'major';
62
- };
63
- export declare function checkForUpdate(): Promise<VersionCheckResult>;
64
- export {};
65
- //# sourceMappingURL=engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/upgrade/engine.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9C,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEtD,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAID,wBAAgB,iBAAiB,IAAI,MAAM,CAS1C;AAgBD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CASrG;AAiDD,wBAAgB,kBAAkB,IAAI,cAAc,GAAG,IAAI,CAM1D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAGjE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CA6BhE;AAID,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC,CAmExB;AAID,MAAM,MAAM,kBAAkB,GAC1B;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GACpB;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;CAAE,CAAA;AAEjG,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAMlE"}
@@ -1,239 +0,0 @@
1
- // @arch docs/architecture/cli/upgrade.md
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import { execSync, exec as execCb } from 'node:child_process';
5
- import { promisify } from 'node:util';
6
- import { getShennianDir, resolveShennianPath } from '../config/index.js';
7
- const exec = promisify(execCb);
8
- const SHENNIAN_DIR = getShennianDir();
9
- const BACKUP_DIR = resolveShennianPath('backup');
10
- const UPGRADE_ATTEMPT_FILE = resolveShennianPath('upgrade-attempt.json');
11
- const MAX_CRASH_COUNT = 3;
12
- const BACKUP_TTL_DAYS = 7;
13
- // ─── Version helpers ─────────────────────────────────────────────────────────
14
- export function getCurrentVersion() {
15
- try {
16
- const pkgPath = findPackageJson();
17
- if (pkgPath) {
18
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
19
- return pkg.version;
20
- }
21
- }
22
- catch { /* noop */ }
23
- return '0.0.0';
24
- }
25
- function findPackageJson() {
26
- // Walk up from this file's location to find package.json
27
- let dir = path.dirname(new URL(import.meta.url).pathname);
28
- for (let i = 0; i < 6; i++) {
29
- const candidate = path.join(dir, 'package.json');
30
- if (fs.existsSync(candidate)) {
31
- const pkg = JSON.parse(fs.readFileSync(candidate, 'utf-8'));
32
- if (pkg.name === 'shennian')
33
- return candidate;
34
- }
35
- dir = path.dirname(dir);
36
- }
37
- return null;
38
- }
39
- export async function fetchLatestVersion() {
40
- const res = await fetch('https://registry.npmjs.org/shennian/latest', {
41
- headers: { Accept: 'application/json' },
42
- signal: AbortSignal.timeout(10_000),
43
- });
44
- if (!res.ok)
45
- throw new Error(`npm registry returned ${res.status}`);
46
- const data = (await res.json());
47
- return data.version;
48
- }
49
- /**
50
- * Compare semver strings. Returns:
51
- * 'none' — same or older
52
- * 'patch' — only patch differs
53
- * 'minor' — minor or patch differs
54
- * 'major' — major differs
55
- */
56
- export function compareVersions(current, latest) {
57
- const parse = (v) => v.replace(/^v/, '').split('.').map(Number);
58
- const [cMaj, cMin, cPat] = parse(current);
59
- const [lMaj, lMin, lPat] = parse(latest);
60
- if (lMaj > cMaj)
61
- return 'major';
62
- if (lMaj === cMaj && lMin > cMin)
63
- return 'minor';
64
- if (lMaj === cMaj && lMin === cMin && lPat > cPat)
65
- return 'patch';
66
- return 'none';
67
- }
68
- // ─── npm global path helpers ──────────────────────────────────────────────────
69
- function getNpmGlobalRoot() {
70
- return execSync('npm root -g', { encoding: 'utf-8', stdio: 'pipe' }).trim();
71
- }
72
- function getGlobalPkgDir() {
73
- return path.join(getNpmGlobalRoot(), 'shennian');
74
- }
75
- function getGlobalBinScript() {
76
- const root = getNpmGlobalRoot();
77
- return path.join(root, 'shennian', 'dist', 'bin', 'shennian.js');
78
- }
79
- // ─── Backup / Restore ─────────────────────────────────────────────────────────
80
- function backupVersion(version) {
81
- const pkgDir = getGlobalPkgDir();
82
- const dest = path.join(BACKUP_DIR, version);
83
- fs.mkdirSync(dest, { recursive: true });
84
- fs.cpSync(pkgDir, dest, { recursive: true });
85
- }
86
- function restoreVersion(version) {
87
- const src = path.join(BACKUP_DIR, version);
88
- if (!fs.existsSync(src))
89
- throw new Error(`Backup for ${version} not found`);
90
- const pkgDir = getGlobalPkgDir();
91
- fs.cpSync(src, pkgDir, { recursive: true, force: true });
92
- }
93
- function cleanOldBackups() {
94
- try {
95
- if (!fs.existsSync(BACKUP_DIR))
96
- return;
97
- const cutoff = Date.now() - BACKUP_TTL_DAYS * 86400_000;
98
- for (const entry of fs.readdirSync(BACKUP_DIR)) {
99
- const full = path.join(BACKUP_DIR, entry);
100
- const stat = fs.statSync(full);
101
- if (stat.mtimeMs < cutoff) {
102
- fs.rmSync(full, { recursive: true, force: true });
103
- }
104
- }
105
- }
106
- catch { /* noop */ }
107
- }
108
- // ─── Upgrade attempt tracking (crash detection) ───────────────────────────────
109
- export function readUpgradeAttempt() {
110
- try {
111
- return JSON.parse(fs.readFileSync(UPGRADE_ATTEMPT_FILE, 'utf-8'));
112
- }
113
- catch {
114
- return null;
115
- }
116
- }
117
- export function writeUpgradeAttempt(attempt) {
118
- fs.mkdirSync(SHENNIAN_DIR, { recursive: true });
119
- fs.writeFileSync(UPGRADE_ATTEMPT_FILE, JSON.stringify(attempt, null, 2));
120
- }
121
- export function clearUpgradeAttempt() {
122
- try {
123
- fs.unlinkSync(UPGRADE_ATTEMPT_FILE);
124
- }
125
- catch { /* noop */ }
126
- }
127
- /**
128
- * Called on daemon startup. Detects crash loops from a failed upgrade and
129
- * initiates rollback if crash count exceeds threshold.
130
- * Returns true if rollback was performed (caller should exit and let service manager restart).
131
- */
132
- export async function handleStartupCrashCheck() {
133
- const attempt = readUpgradeAttempt();
134
- if (!attempt)
135
- return false;
136
- const elapsed = Date.now() - attempt.attemptAt;
137
- // If more than 10 minutes have passed, this is a stale record — clear and continue
138
- if (elapsed > 10 * 60 * 1000) {
139
- clearUpgradeAttempt();
140
- return false;
141
- }
142
- attempt.attemptCount++;
143
- if (attempt.attemptCount >= MAX_CRASH_COUNT) {
144
- console.error(`[upgrade] New version crashed ${attempt.attemptCount} times, rolling back to ${attempt.from}...`);
145
- try {
146
- restoreVersion(attempt.from);
147
- clearUpgradeAttempt();
148
- console.error(`[upgrade] Rolled back to ${attempt.from}. Restarting...`);
149
- return true;
150
- }
151
- catch (err) {
152
- console.error(`[upgrade] Rollback failed: ${err instanceof Error ? err.message : String(err)}`);
153
- clearUpgradeAttempt();
154
- return false;
155
- }
156
- }
157
- writeUpgradeAttempt(attempt);
158
- return false;
159
- }
160
- // ─── Core upgrade ─────────────────────────────────────────────────────────────
161
- export async function performUpgrade(targetVersion, onProgress) {
162
- const currentVersion = getCurrentVersion();
163
- if (currentVersion === targetVersion) {
164
- return { ok: false, error: `Already on version ${targetVersion}` };
165
- }
166
- // Step 1: Verify npm is accessible
167
- onProgress({ step: 'checking' });
168
- try {
169
- execSync('npm --version', { stdio: 'pipe' });
170
- }
171
- catch {
172
- return { ok: false, error: 'npm is not available in PATH' };
173
- }
174
- // Step 2: Backup current version
175
- onProgress({ step: 'backing-up' });
176
- try {
177
- fs.mkdirSync(BACKUP_DIR, { recursive: true });
178
- backupVersion(currentVersion);
179
- }
180
- catch (err) {
181
- return { ok: false, error: `Backup failed: ${err instanceof Error ? err.message : String(err)}` };
182
- }
183
- // Step 3: npm install new version
184
- onProgress({ step: 'installing', version: targetVersion });
185
- try {
186
- await exec(`npm install -g shennian@${targetVersion}`, { timeout: 120_000 });
187
- }
188
- catch (err) {
189
- // Restore backup and abort
190
- try {
191
- restoreVersion(currentVersion);
192
- }
193
- catch { /* best effort */ }
194
- return {
195
- ok: false,
196
- error: `npm install failed: ${err instanceof Error ? err.message : String(err)}`,
197
- rolledBack: true,
198
- };
199
- }
200
- // Step 4: Smoke test — verify the new binary works
201
- onProgress({ step: 'verifying', version: targetVersion });
202
- try {
203
- const binScript = getGlobalBinScript();
204
- const { stdout } = await exec(`node "${binScript}" --version`, { timeout: 10_000 });
205
- if (!stdout.trim())
206
- throw new Error('Empty output from --version check');
207
- }
208
- catch (err) {
209
- try {
210
- restoreVersion(currentVersion);
211
- }
212
- catch { /* best effort */ }
213
- return {
214
- ok: false,
215
- error: `Smoke test failed: ${err instanceof Error ? err.message : String(err)}`,
216
- rolledBack: true,
217
- };
218
- }
219
- // Step 5: Write upgrade attempt file (crash detection on restart)
220
- writeUpgradeAttempt({
221
- from: currentVersion,
222
- to: targetVersion,
223
- attemptCount: 0,
224
- attemptAt: Date.now(),
225
- });
226
- cleanOldBackups();
227
- // Step 6: Signal restart (caller sends upgrade.status: restarting before killing)
228
- onProgress({ step: 'restarting', from: currentVersion, to: targetVersion });
229
- return { ok: true, from: currentVersion, to: targetVersion };
230
- }
231
- export async function checkForUpdate() {
232
- const current = getCurrentVersion();
233
- const latest = await fetchLatestVersion();
234
- const changeType = compareVersions(current, latest);
235
- if (changeType === 'none')
236
- return { hasUpdate: false };
237
- return { hasUpdate: true, current, latest, changeType };
238
- }
239
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/upgrade/engine.ts"],"names":[],"mappings":"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"}