shennian 0.2.0 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/bin/shennian.d.ts +0 -1
  2. package/dist/bin/shennian.js +0 -1
  3. package/dist/src/agents/adapter.d.ts +0 -1
  4. package/dist/src/agents/adapter.js +0 -1
  5. package/dist/src/agents/claude.d.ts +1 -1
  6. package/dist/src/agents/claude.js +12 -6
  7. package/dist/src/agents/codex.d.ts +18 -1
  8. package/dist/src/agents/codex.js +372 -13
  9. package/dist/src/agents/command-spec.d.ts +28 -3
  10. package/dist/src/agents/command-spec.js +251 -10
  11. package/dist/src/agents/cursor.d.ts +0 -1
  12. package/dist/src/agents/cursor.js +2 -4
  13. package/dist/src/agents/custom.d.ts +0 -6
  14. package/dist/src/agents/custom.js +4 -40
  15. package/dist/src/agents/detect.d.ts +0 -1
  16. package/dist/src/agents/detect.js +0 -1
  17. package/dist/src/agents/gemini.d.ts +0 -1
  18. package/dist/src/agents/gemini.js +7 -3
  19. package/dist/src/agents/model-registry/cache.d.ts +0 -1
  20. package/dist/src/agents/model-registry/cache.js +0 -1
  21. package/dist/src/agents/model-registry/discovery.d.ts +0 -1
  22. package/dist/src/agents/model-registry/discovery.js +90 -48
  23. package/dist/src/agents/model-registry/parsers.d.ts +4 -1
  24. package/dist/src/agents/model-registry/parsers.js +168 -1
  25. package/dist/src/agents/model-registry/runner.d.ts +2 -7
  26. package/dist/src/agents/model-registry/runner.js +3 -134
  27. package/dist/src/agents/model-registry/service.d.ts +0 -1
  28. package/dist/src/agents/model-registry/service.js +12 -10
  29. package/dist/src/agents/model-registry/types.d.ts +0 -1
  30. package/dist/src/agents/model-registry/types.js +0 -1
  31. package/dist/src/agents/model-registry.d.ts +3 -2
  32. package/dist/src/agents/model-registry.js +3 -2
  33. package/dist/src/agents/openclaw.d.ts +0 -1
  34. package/dist/src/agents/openclaw.js +13 -4
  35. package/dist/src/agents/pi.d.ts +0 -1
  36. package/dist/src/agents/pi.js +0 -1
  37. package/dist/src/commands/agent.d.ts +0 -1
  38. package/dist/src/commands/agent.js +2 -33
  39. package/dist/src/commands/daemon.d.ts +6 -1
  40. package/dist/src/commands/daemon.js +153 -18
  41. package/dist/src/commands/pair-qr.d.ts +0 -1
  42. package/dist/src/commands/pair-qr.js +0 -1
  43. package/dist/src/commands/pair.d.ts +0 -1
  44. package/dist/src/commands/pair.js +0 -1
  45. package/dist/src/commands/upgrade.d.ts +0 -1
  46. package/dist/src/commands/upgrade.js +0 -1
  47. package/dist/src/config/index.d.ts +0 -1
  48. package/dist/src/config/index.js +0 -1
  49. package/dist/src/fs/handler.d.ts +0 -1
  50. package/dist/src/fs/handler.js +18 -1
  51. package/dist/src/fs/security.d.ts +0 -1
  52. package/dist/src/fs/security.js +5 -1
  53. package/dist/src/index.d.ts +0 -1
  54. package/dist/src/index.js +36 -8
  55. package/dist/src/log-reporter.d.ts +0 -1
  56. package/dist/src/log-reporter.js +2 -20
  57. package/dist/src/native-fusion/parsers.d.ts +0 -1
  58. package/dist/src/native-fusion/parsers.js +407 -44
  59. package/dist/src/native-fusion/service.d.ts +0 -1
  60. package/dist/src/native-fusion/service.js +16 -10
  61. package/dist/src/native-fusion/state.d.ts +0 -1
  62. package/dist/src/native-fusion/state.js +0 -1
  63. package/dist/src/native-fusion/types.d.ts +0 -1
  64. package/dist/src/native-fusion/types.js +0 -1
  65. package/dist/src/region.d.ts +0 -1
  66. package/dist/src/region.js +0 -1
  67. package/dist/src/relay/client.d.ts +11 -2
  68. package/dist/src/relay/client.js +22 -4
  69. package/dist/src/session/handlers/agents.d.ts +0 -1
  70. package/dist/src/session/handlers/agents.js +0 -1
  71. package/dist/src/session/handlers/chat.d.ts +0 -1
  72. package/dist/src/session/handlers/chat.js +49 -8
  73. package/dist/src/session/handlers/control.d.ts +0 -1
  74. package/dist/src/session/handlers/control.js +0 -1
  75. package/dist/src/session/handlers/fs.d.ts +0 -1
  76. package/dist/src/session/handlers/fs.js +37 -3
  77. package/dist/src/session/manager.d.ts +1 -1
  78. package/dist/src/session/manager.js +23 -4
  79. package/dist/src/session/store.d.ts +0 -1
  80. package/dist/src/session/store.js +0 -1
  81. package/dist/src/session/types.d.ts +6 -1
  82. package/dist/src/session/types.js +0 -1
  83. package/dist/src/upgrade/engine.d.ts +0 -1
  84. package/dist/src/upgrade/engine.js +0 -1
  85. package/package.json +3 -2
  86. package/dist/bin/shennian.d.ts.map +0 -1
  87. package/dist/bin/shennian.js.map +0 -1
  88. package/dist/src/__experiments__/probe-debug.d.ts +0 -2
  89. package/dist/src/__experiments__/probe-debug.d.ts.map +0 -1
  90. package/dist/src/__experiments__/probe-debug.js +0 -66
  91. package/dist/src/__experiments__/probe-debug.js.map +0 -1
  92. package/dist/src/__experiments__/probe-final-benchmark.d.ts +0 -3
  93. package/dist/src/__experiments__/probe-final-benchmark.d.ts.map +0 -1
  94. package/dist/src/__experiments__/probe-final-benchmark.js +0 -234
  95. package/dist/src/__experiments__/probe-final-benchmark.js.map +0 -1
  96. package/dist/src/__experiments__/probe-models-final.d.ts +0 -19
  97. package/dist/src/__experiments__/probe-models-final.d.ts.map +0 -1
  98. package/dist/src/__experiments__/probe-models-final.js +0 -250
  99. package/dist/src/__experiments__/probe-models-final.js.map +0 -1
  100. package/dist/src/__experiments__/probe-models.d.ts +0 -7
  101. package/dist/src/__experiments__/probe-models.d.ts.map +0 -1
  102. package/dist/src/__experiments__/probe-models.js +0 -251
  103. package/dist/src/__experiments__/probe-models.js.map +0 -1
  104. package/dist/src/__tests__/agents-e2e.d.ts +0 -21
  105. package/dist/src/__tests__/agents-e2e.d.ts.map +0 -1
  106. package/dist/src/__tests__/agents-e2e.js +0 -146
  107. package/dist/src/__tests__/agents-e2e.js.map +0 -1
  108. package/dist/src/__tests__/claude-adapter.test.d.ts +0 -2
  109. package/dist/src/__tests__/claude-adapter.test.d.ts.map +0 -1
  110. package/dist/src/__tests__/claude-adapter.test.js +0 -75
  111. package/dist/src/__tests__/claude-adapter.test.js.map +0 -1
  112. package/dist/src/__tests__/codex-adapter.test.d.ts +0 -2
  113. package/dist/src/__tests__/codex-adapter.test.d.ts.map +0 -1
  114. package/dist/src/__tests__/codex-adapter.test.js +0 -224
  115. package/dist/src/__tests__/codex-adapter.test.js.map +0 -1
  116. package/dist/src/__tests__/config.test.d.ts +0 -2
  117. package/dist/src/__tests__/config.test.d.ts.map +0 -1
  118. package/dist/src/__tests__/config.test.js +0 -60
  119. package/dist/src/__tests__/config.test.js.map +0 -1
  120. package/dist/src/__tests__/cursor-adapter.test.d.ts +0 -2
  121. package/dist/src/__tests__/cursor-adapter.test.d.ts.map +0 -1
  122. package/dist/src/__tests__/cursor-adapter.test.js +0 -69
  123. package/dist/src/__tests__/cursor-adapter.test.js.map +0 -1
  124. package/dist/src/__tests__/custom-agent-flow.test.d.ts +0 -2
  125. package/dist/src/__tests__/custom-agent-flow.test.d.ts.map +0 -1
  126. package/dist/src/__tests__/custom-agent-flow.test.js +0 -244
  127. package/dist/src/__tests__/custom-agent-flow.test.js.map +0 -1
  128. package/dist/src/__tests__/daemon-autostart.test.d.ts +0 -2
  129. package/dist/src/__tests__/daemon-autostart.test.d.ts.map +0 -1
  130. package/dist/src/__tests__/daemon-autostart.test.js +0 -60
  131. package/dist/src/__tests__/daemon-autostart.test.js.map +0 -1
  132. package/dist/src/__tests__/e2e-relay.d.ts +0 -19
  133. package/dist/src/__tests__/e2e-relay.d.ts.map +0 -1
  134. package/dist/src/__tests__/e2e-relay.js +0 -256
  135. package/dist/src/__tests__/e2e-relay.js.map +0 -1
  136. package/dist/src/__tests__/model-discovery.test.d.ts +0 -2
  137. package/dist/src/__tests__/model-discovery.test.d.ts.map +0 -1
  138. package/dist/src/__tests__/model-discovery.test.js +0 -47
  139. package/dist/src/__tests__/model-discovery.test.js.map +0 -1
  140. package/dist/src/__tests__/model-switching.test.d.ts +0 -2
  141. package/dist/src/__tests__/model-switching.test.d.ts.map +0 -1
  142. package/dist/src/__tests__/model-switching.test.js +0 -253
  143. package/dist/src/__tests__/model-switching.test.js.map +0 -1
  144. package/dist/src/__tests__/native-fusion-parsers.test.d.ts +0 -2
  145. package/dist/src/__tests__/native-fusion-parsers.test.d.ts.map +0 -1
  146. package/dist/src/__tests__/native-fusion-parsers.test.js +0 -216
  147. package/dist/src/__tests__/native-fusion-parsers.test.js.map +0 -1
  148. package/dist/src/__tests__/native-fusion-service.test.d.ts +0 -2
  149. package/dist/src/__tests__/native-fusion-service.test.d.ts.map +0 -1
  150. package/dist/src/__tests__/native-fusion-service.test.js +0 -157
  151. package/dist/src/__tests__/native-fusion-service.test.js.map +0 -1
  152. package/dist/src/__tests__/native-session-sync.test.d.ts +0 -2
  153. package/dist/src/__tests__/native-session-sync.test.d.ts.map +0 -1
  154. package/dist/src/__tests__/native-session-sync.test.js +0 -198
  155. package/dist/src/__tests__/native-session-sync.test.js.map +0 -1
  156. package/dist/src/__tests__/pair-qr.test.d.ts +0 -2
  157. package/dist/src/__tests__/pair-qr.test.d.ts.map +0 -1
  158. package/dist/src/__tests__/pair-qr.test.js +0 -13
  159. package/dist/src/__tests__/pair-qr.test.js.map +0 -1
  160. package/dist/src/__tests__/pi-context.test.d.ts +0 -2
  161. package/dist/src/__tests__/pi-context.test.d.ts.map +0 -1
  162. package/dist/src/__tests__/pi-context.test.js +0 -261
  163. package/dist/src/__tests__/pi-context.test.js.map +0 -1
  164. package/dist/src/__tests__/session-manager.test.d.ts +0 -2
  165. package/dist/src/__tests__/session-manager.test.d.ts.map +0 -1
  166. package/dist/src/__tests__/session-manager.test.js +0 -592
  167. package/dist/src/__tests__/session-manager.test.js.map +0 -1
  168. package/dist/src/__tests__/session-store.test.d.ts +0 -2
  169. package/dist/src/__tests__/session-store.test.d.ts.map +0 -1
  170. package/dist/src/__tests__/session-store.test.js +0 -106
  171. package/dist/src/__tests__/session-store.test.js.map +0 -1
  172. package/dist/src/agents/adapter.d.ts.map +0 -1
  173. package/dist/src/agents/adapter.js.map +0 -1
  174. package/dist/src/agents/claude.d.ts.map +0 -1
  175. package/dist/src/agents/claude.js.map +0 -1
  176. package/dist/src/agents/codex.d.ts.map +0 -1
  177. package/dist/src/agents/codex.js.map +0 -1
  178. package/dist/src/agents/command-spec.d.ts.map +0 -1
  179. package/dist/src/agents/command-spec.js.map +0 -1
  180. package/dist/src/agents/cursor.d.ts.map +0 -1
  181. package/dist/src/agents/cursor.js.map +0 -1
  182. package/dist/src/agents/custom.d.ts.map +0 -1
  183. package/dist/src/agents/custom.js.map +0 -1
  184. package/dist/src/agents/detect.d.ts.map +0 -1
  185. package/dist/src/agents/detect.js.map +0 -1
  186. package/dist/src/agents/gemini.d.ts.map +0 -1
  187. package/dist/src/agents/gemini.js.map +0 -1
  188. package/dist/src/agents/model-registry/cache.d.ts.map +0 -1
  189. package/dist/src/agents/model-registry/cache.js.map +0 -1
  190. package/dist/src/agents/model-registry/discovery.d.ts.map +0 -1
  191. package/dist/src/agents/model-registry/discovery.js.map +0 -1
  192. package/dist/src/agents/model-registry/parsers.d.ts.map +0 -1
  193. package/dist/src/agents/model-registry/parsers.js.map +0 -1
  194. package/dist/src/agents/model-registry/runner.d.ts.map +0 -1
  195. package/dist/src/agents/model-registry/runner.js.map +0 -1
  196. package/dist/src/agents/model-registry/service.d.ts.map +0 -1
  197. package/dist/src/agents/model-registry/service.js.map +0 -1
  198. package/dist/src/agents/model-registry/types.d.ts.map +0 -1
  199. package/dist/src/agents/model-registry/types.js.map +0 -1
  200. package/dist/src/agents/model-registry.d.ts.map +0 -1
  201. package/dist/src/agents/model-registry.js.map +0 -1
  202. package/dist/src/agents/openclaw.d.ts.map +0 -1
  203. package/dist/src/agents/openclaw.js.map +0 -1
  204. package/dist/src/agents/pi.d.ts.map +0 -1
  205. package/dist/src/agents/pi.js.map +0 -1
  206. package/dist/src/commands/agent.d.ts.map +0 -1
  207. package/dist/src/commands/agent.js.map +0 -1
  208. package/dist/src/commands/daemon.d.ts.map +0 -1
  209. package/dist/src/commands/daemon.js.map +0 -1
  210. package/dist/src/commands/pair-qr.d.ts.map +0 -1
  211. package/dist/src/commands/pair-qr.js.map +0 -1
  212. package/dist/src/commands/pair.d.ts.map +0 -1
  213. package/dist/src/commands/pair.js.map +0 -1
  214. package/dist/src/commands/upgrade.d.ts.map +0 -1
  215. package/dist/src/commands/upgrade.js.map +0 -1
  216. package/dist/src/config/index.d.ts.map +0 -1
  217. package/dist/src/config/index.js.map +0 -1
  218. package/dist/src/fs/handler.d.ts.map +0 -1
  219. package/dist/src/fs/handler.js.map +0 -1
  220. package/dist/src/fs/multimodal.d.ts +0 -5
  221. package/dist/src/fs/multimodal.d.ts.map +0 -1
  222. package/dist/src/fs/multimodal.js +0 -39
  223. package/dist/src/fs/multimodal.js.map +0 -1
  224. package/dist/src/fs/security.d.ts.map +0 -1
  225. package/dist/src/fs/security.js.map +0 -1
  226. package/dist/src/index.d.ts.map +0 -1
  227. package/dist/src/index.js.map +0 -1
  228. package/dist/src/log-reporter.d.ts.map +0 -1
  229. package/dist/src/log-reporter.js.map +0 -1
  230. package/dist/src/native-fusion/parsers.d.ts.map +0 -1
  231. package/dist/src/native-fusion/parsers.js.map +0 -1
  232. package/dist/src/native-fusion/service.d.ts.map +0 -1
  233. package/dist/src/native-fusion/service.js.map +0 -1
  234. package/dist/src/native-fusion/state.d.ts.map +0 -1
  235. package/dist/src/native-fusion/state.js.map +0 -1
  236. package/dist/src/native-fusion/types.d.ts.map +0 -1
  237. package/dist/src/native-fusion/types.js.map +0 -1
  238. package/dist/src/native-sync/discover.d.ts +0 -6
  239. package/dist/src/native-sync/discover.d.ts.map +0 -1
  240. package/dist/src/native-sync/discover.js +0 -69
  241. package/dist/src/native-sync/discover.js.map +0 -1
  242. package/dist/src/native-sync/parsers.d.ts +0 -3
  243. package/dist/src/native-sync/parsers.d.ts.map +0 -1
  244. package/dist/src/native-sync/parsers.js +0 -373
  245. package/dist/src/native-sync/parsers.js.map +0 -1
  246. package/dist/src/native-sync/service.d.ts +0 -16
  247. package/dist/src/native-sync/service.d.ts.map +0 -1
  248. package/dist/src/native-sync/service.js +0 -95
  249. package/dist/src/native-sync/service.js.map +0 -1
  250. package/dist/src/native-sync/state.d.ts +0 -6
  251. package/dist/src/native-sync/state.d.ts.map +0 -1
  252. package/dist/src/native-sync/state.js +0 -34
  253. package/dist/src/native-sync/state.js.map +0 -1
  254. package/dist/src/native-sync/types.d.ts +0 -23
  255. package/dist/src/native-sync/types.d.ts.map +0 -1
  256. package/dist/src/native-sync/types.js +0 -4
  257. package/dist/src/native-sync/types.js.map +0 -1
  258. package/dist/src/region.d.ts.map +0 -1
  259. package/dist/src/region.js.map +0 -1
  260. package/dist/src/relay/client.d.ts.map +0 -1
  261. package/dist/src/relay/client.js.map +0 -1
  262. package/dist/src/session/handlers/agents.d.ts.map +0 -1
  263. package/dist/src/session/handlers/agents.js.map +0 -1
  264. package/dist/src/session/handlers/chat.d.ts.map +0 -1
  265. package/dist/src/session/handlers/chat.js.map +0 -1
  266. package/dist/src/session/handlers/control.d.ts.map +0 -1
  267. package/dist/src/session/handlers/control.js.map +0 -1
  268. package/dist/src/session/handlers/fs.d.ts.map +0 -1
  269. package/dist/src/session/handlers/fs.js.map +0 -1
  270. package/dist/src/session/handlers/queue.d.ts +0 -4
  271. package/dist/src/session/handlers/queue.d.ts.map +0 -1
  272. package/dist/src/session/handlers/queue.js +0 -66
  273. package/dist/src/session/handlers/queue.js.map +0 -1
  274. package/dist/src/session/manager.d.ts.map +0 -1
  275. package/dist/src/session/manager.js.map +0 -1
  276. package/dist/src/session/store.d.ts.map +0 -1
  277. package/dist/src/session/store.js.map +0 -1
  278. package/dist/src/session/types.d.ts.map +0 -1
  279. package/dist/src/session/types.js.map +0 -1
  280. package/dist/src/upgrade/engine.d.ts.map +0 -1
  281. package/dist/src/upgrade/engine.js.map +0 -1
  282. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,157 +0,0 @@
1
- // @covers src/native-fusion/service.ts
2
- import fs from 'node:fs';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { beforeEach, describe, expect, it, vi } from 'vitest';
6
- const { mockLoadState, mockSaveState, mockListClaudeFiles, mockListCodexFiles, mockParseClaudeChunk } = vi.hoisted(() => ({
7
- mockLoadState: vi.fn(),
8
- mockSaveState: vi.fn(),
9
- mockListClaudeFiles: vi.fn(),
10
- mockListCodexFiles: vi.fn(),
11
- mockParseClaudeChunk: vi.fn(),
12
- }));
13
- vi.mock('../native-fusion/state.js', () => ({
14
- loadNativeScannerState: mockLoadState,
15
- saveNativeScannerState: mockSaveState,
16
- }));
17
- vi.mock('../native-fusion/parsers.js', () => ({
18
- listClaudeTranscriptFiles: mockListClaudeFiles,
19
- listCodexRolloutFiles: mockListCodexFiles,
20
- parseClaudeTranscriptChunk: mockParseClaudeChunk,
21
- parseCodexRolloutChunk: vi.fn(),
22
- }));
23
- import { NativeSessionFusionService } from '../native-fusion/service.js';
24
- function createClient() {
25
- return {
26
- getState: vi.fn(() => 'connected'),
27
- sendBufferedEvent: vi.fn(async () => { }),
28
- };
29
- }
30
- function createTranscriptFile() {
31
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'native-fusion-'));
32
- const filePath = path.join(dir, 'claude-session.jsonl');
33
- fs.writeFileSync(filePath, '');
34
- return filePath;
35
- }
36
- describe('NativeSessionFusionService', () => {
37
- beforeEach(() => {
38
- vi.clearAllMocks();
39
- mockLoadState.mockReturnValue({ files: {} });
40
- mockListCodexFiles.mockReturnValue([]);
41
- });
42
- it('does not claim a native claude user message before sourceSessionKey is known', async () => {
43
- const now = Date.parse('2026-04-23T13:09:17.785Z');
44
- vi.setSystemTime(now);
45
- const client = createClient();
46
- const service = new NativeSessionFusionService(client);
47
- const filePath = createTranscriptFile();
48
- mockListClaudeFiles.mockReturnValue([filePath]);
49
- service.registerManagedSend({
50
- sessionId: 'sess-1',
51
- agentType: 'claude',
52
- canonicalMessageId: 'msg-user-1',
53
- text: 'hello',
54
- });
55
- mockParseClaudeChunk.mockReturnValue({
56
- nextOffset: 200,
57
- events: [
58
- {
59
- agentType: 'claude',
60
- sourceMode: 'claude_transcript_import',
61
- sourceSessionKey: 'claude-native-1',
62
- sourceEventKey: 'evt-user',
63
- cursor: `${filePath}:1`,
64
- role: 'user',
65
- ts: now,
66
- payload: 'hello',
67
- title: 'hello',
68
- workDir: 'Users/lichen/Documents/code/projects/shennian',
69
- },
70
- {
71
- agentType: 'claude',
72
- sourceMode: 'claude_transcript_import',
73
- sourceSessionKey: 'claude-native-1',
74
- sourceEventKey: 'evt-assistant',
75
- cursor: `${filePath}:2`,
76
- role: 'agent',
77
- ts: now + 4000,
78
- payload: 'Hey! What are you working on?',
79
- title: 'hello',
80
- modelId: 'claude-sonnet-4-6',
81
- workDir: 'Users/lichen/Documents/code/projects/shennian',
82
- },
83
- ],
84
- });
85
- await service.scanNow();
86
- expect(client.sendBufferedEvent).toHaveBeenCalledTimes(1);
87
- const firstCall = client.sendBufferedEvent.mock.calls[0];
88
- const sent = firstCall[0].payload.events;
89
- expect(sent).toHaveLength(2);
90
- expect(sent[0]).toMatchObject({
91
- sourceMode: 'claude_transcript_import',
92
- role: 'user',
93
- payload: 'hello',
94
- });
95
- expect(sent[1]).toMatchObject({
96
- sourceMode: 'claude_transcript_import',
97
- role: 'agent',
98
- payload: 'Hey! What are you working on?',
99
- });
100
- });
101
- it('claims a managed echo once sourceSessionKey is known and suppresses the immediate assistant echo', async () => {
102
- const now = Date.parse('2026-04-23T13:09:17.785Z');
103
- vi.setSystemTime(now);
104
- const client = createClient();
105
- const service = new NativeSessionFusionService(client);
106
- const filePath = createTranscriptFile();
107
- mockListClaudeFiles.mockReturnValue([filePath]);
108
- service.registerManagedSend({
109
- sessionId: 'sess-1',
110
- agentType: 'claude',
111
- canonicalMessageId: 'msg-user-1',
112
- sourceSessionKey: 'claude-native-1',
113
- text: 'hello',
114
- });
115
- mockParseClaudeChunk.mockReturnValue({
116
- nextOffset: 200,
117
- events: [
118
- {
119
- agentType: 'claude',
120
- sourceMode: 'claude_transcript_import',
121
- sourceSessionKey: 'claude-native-1',
122
- sourceEventKey: 'evt-user',
123
- cursor: `${filePath}:1`,
124
- role: 'user',
125
- ts: now,
126
- payload: 'hello',
127
- title: 'hello',
128
- workDir: 'Users/lichen/Documents/code/projects/shennian',
129
- },
130
- {
131
- agentType: 'claude',
132
- sourceMode: 'claude_transcript_import',
133
- sourceSessionKey: 'claude-native-1',
134
- sourceEventKey: 'evt-assistant',
135
- cursor: `${filePath}:2`,
136
- role: 'agent',
137
- ts: now + 4000,
138
- payload: 'Hey! What are you working on?',
139
- title: 'hello',
140
- modelId: 'claude-sonnet-4-6',
141
- workDir: 'Users/lichen/Documents/code/projects/shennian',
142
- },
143
- ],
144
- });
145
- await service.scanNow();
146
- expect(client.sendBufferedEvent).toHaveBeenCalledTimes(1);
147
- const firstCall = client.sendBufferedEvent.mock.calls[0];
148
- const sent = firstCall[0].payload.events;
149
- expect(sent).toHaveLength(1);
150
- expect(sent[0]).toMatchObject({
151
- sourceMode: 'managed_echo_claim',
152
- role: 'user',
153
- claimCanonicalMessageId: 'msg-user-1',
154
- });
155
- });
156
- });
157
- //# sourceMappingURL=native-fusion-service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-fusion-service.test.js","sourceRoot":"","sources":["../../../src/__tests__/native-fusion-service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=native-session-sync.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-session-sync.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/native-session-sync.test.ts"],"names":[],"mappings":""}
@@ -1,198 +0,0 @@
1
- // @covers packages/cli/src/native-sync/parsers.ts
2
- // @covers packages/cli/src/native-sync/service.ts
3
- import fs from 'node:fs';
4
- import os from 'node:os';
5
- import path from 'node:path';
6
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
7
- import { parseNativeSessionFile } from '../native-sync/parsers.js';
8
- import { NativeSessionSyncService } from '../native-sync/service.js';
9
- import * as discoverModule from '../native-sync/discover.js';
10
- import * as parserModule from '../native-sync/parsers.js';
11
- import * as stateModule from '../native-sync/state.js';
12
- function createTempJsonlFile(contents) {
13
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'native-sync-'));
14
- const filePath = path.join(dir, 'session.jsonl');
15
- fs.writeFileSync(filePath, contents);
16
- return filePath;
17
- }
18
- describe('native session parsers', () => {
19
- it('parses Claude history with tool results', () => {
20
- const filePath = createTempJsonlFile([
21
- JSON.stringify({
22
- type: 'user',
23
- sessionId: 'claude-session-1',
24
- cwd: '/repo',
25
- uuid: 'u1',
26
- timestamp: '2026-04-16T03:00:00.000Z',
27
- message: { role: 'user', content: '帮我看一下 nginx' },
28
- }),
29
- JSON.stringify({
30
- type: 'assistant',
31
- sessionId: 'claude-session-1',
32
- cwd: '/repo',
33
- uuid: 'a1',
34
- timestamp: '2026-04-16T03:00:01.000Z',
35
- message: {
36
- model: 'claude-sonnet-4-6',
37
- content: [
38
- { type: 'tool_use', id: 'tool-1', name: 'Bash', input: { command: 'systemctl status nginx' } },
39
- ],
40
- },
41
- }),
42
- JSON.stringify({
43
- type: 'user',
44
- sessionId: 'claude-session-1',
45
- cwd: '/repo',
46
- uuid: 'u2',
47
- timestamp: '2026-04-16T03:00:02.000Z',
48
- message: {
49
- role: 'user',
50
- content: [
51
- { type: 'tool_result', tool_use_id: 'tool-1', content: 'inactive (dead)' },
52
- ],
53
- },
54
- }),
55
- JSON.stringify({
56
- type: 'assistant',
57
- sessionId: 'claude-session-1',
58
- cwd: '/repo',
59
- uuid: 'a2',
60
- timestamp: '2026-04-16T03:00:03.000Z',
61
- message: {
62
- model: 'claude-sonnet-4-6',
63
- content: [{ type: 'text', text: 'nginx 已经停止。' }],
64
- },
65
- }),
66
- JSON.stringify({
67
- type: 'last-prompt',
68
- sessionId: 'claude-session-1',
69
- lastPrompt: '帮我看一下 nginx',
70
- }),
71
- ].join('\n'));
72
- const parsed = parseNativeSessionFile({
73
- agentType: 'claude',
74
- path: filePath,
75
- size: fs.statSync(filePath).size,
76
- mtimeMs: fs.statSync(filePath).mtimeMs,
77
- });
78
- expect(parsed?.agentType).toBe('claude');
79
- expect(parsed?.agentSessionId).toBe('claude-session-1');
80
- expect(parsed?.workDir).toBe('/repo');
81
- expect(parsed?.modelId).toBe('claude-sonnet-4-6');
82
- expect(parsed?.title).toContain('帮我看一下 nginx');
83
- expect(parsed?.messages).toHaveLength(3);
84
- expect(parsed?.messages[1]?.payload).toContain('"type":"tool"');
85
- expect(parsed?.messages[1]?.payload).toContain('inactive (dead)');
86
- expect(parsed?.messages[2]?.payload).toBe('nginx 已经停止。');
87
- });
88
- it('parses Codex history with tool outputs', () => {
89
- const filePath = createTempJsonlFile([
90
- JSON.stringify({
91
- timestamp: '2026-04-16T03:10:00.000Z',
92
- type: 'session_meta',
93
- payload: { id: 'codex-session-1', cwd: '/root/shennian', timestamp: '2026-04-16T03:10:00.000Z' },
94
- }),
95
- JSON.stringify({
96
- timestamp: '2026-04-16T03:10:00.500Z',
97
- type: 'turn_context',
98
- payload: { model: 'gpt-5.4' },
99
- }),
100
- JSON.stringify({
101
- timestamp: '2026-04-16T03:10:01.000Z',
102
- type: 'event_msg',
103
- payload: { type: 'user_message', message: '检查当前目录' },
104
- }),
105
- JSON.stringify({
106
- timestamp: '2026-04-16T03:10:02.000Z',
107
- type: 'response_item',
108
- payload: {
109
- type: 'function_call',
110
- name: 'shell_command',
111
- call_id: 'call-1',
112
- arguments: '{"command":"pwd"}',
113
- },
114
- }),
115
- JSON.stringify({
116
- timestamp: '2026-04-16T03:10:03.000Z',
117
- type: 'response_item',
118
- payload: {
119
- type: 'function_call_output',
120
- call_id: 'call-1',
121
- output: '/root/shennian',
122
- },
123
- }),
124
- JSON.stringify({
125
- timestamp: '2026-04-16T03:10:04.000Z',
126
- type: 'response_item',
127
- payload: {
128
- type: 'message',
129
- role: 'assistant',
130
- phase: 'final_answer',
131
- content: [{ type: 'output_text', text: '当前目录是 `/root/shennian`。' }],
132
- },
133
- }),
134
- ].join('\n'));
135
- const parsed = parseNativeSessionFile({
136
- agentType: 'codex',
137
- path: filePath,
138
- size: fs.statSync(filePath).size,
139
- mtimeMs: fs.statSync(filePath).mtimeMs,
140
- });
141
- expect(parsed?.agentType).toBe('codex');
142
- expect(parsed?.agentSessionId).toBe('codex-session-1');
143
- expect(parsed?.workDir).toBe('/root/shennian');
144
- expect(parsed?.modelId).toBe('gpt-5.4');
145
- expect(parsed?.messages).toHaveLength(3);
146
- expect(parsed?.messages[1]?.payload).toContain('"name":"shell_command"');
147
- expect(parsed?.messages[1]?.payload).toContain('/root/shennian');
148
- expect(parsed?.messages[2]?.payload).toContain('当前目录是');
149
- });
150
- });
151
- describe('NativeSessionSyncService', () => {
152
- const client = {
153
- getState: vi.fn(() => 'connected'),
154
- sendBufferedEvent: vi.fn(),
155
- sendRes: vi.fn(),
156
- };
157
- beforeEach(() => {
158
- vi.clearAllMocks();
159
- });
160
- afterEach(() => {
161
- vi.restoreAllMocks();
162
- });
163
- it('syncs discovered files and persists state after ack', async () => {
164
- vi.spyOn(discoverModule, 'discoverNativeSessionFiles').mockReturnValue([
165
- { agentType: 'claude', path: '/tmp/a.jsonl', size: 12, mtimeMs: 34 },
166
- ]);
167
- vi.spyOn(parserModule, 'parseNativeSessionFile').mockReturnValue({
168
- agentType: 'claude',
169
- agentSessionId: 'claude-session-1',
170
- modelId: 'claude-sonnet-4-6',
171
- title: 'hello',
172
- status: 'completed',
173
- workDir: '/repo',
174
- createdAt: '2026-04-16T03:00:00.000Z',
175
- updatedAt: '2026-04-16T03:00:03.000Z',
176
- lastActivityAt: '2026-04-16T03:00:03.000Z',
177
- messages: [
178
- { id: 'm1', sessionId: 'claude-session-1', role: 'user', ts: 1, payload: 'hi' },
179
- ],
180
- });
181
- vi.spyOn(stateModule, 'loadNativeSyncState').mockReturnValue({ version: 1, files: {} });
182
- const saveSpy = vi.spyOn(stateModule, 'saveNativeSyncState').mockImplementation(() => { });
183
- client.sendBufferedEvent.mockResolvedValue(undefined);
184
- const service = new NativeSessionSyncService(client);
185
- const result = await service.syncNow({ reason: 'test', force: true });
186
- expect(client.sendBufferedEvent).toHaveBeenCalledWith(expect.objectContaining({
187
- type: 'event',
188
- event: 'native.session.import',
189
- }), 180_000);
190
- expect(saveSpy).toHaveBeenCalledTimes(1);
191
- expect(result).toEqual({
192
- scannedFiles: 1,
193
- syncedSessions: 1,
194
- syncedMessages: 1,
195
- });
196
- });
197
- });
198
- //# sourceMappingURL=native-session-sync.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-session-sync.test.js","sourceRoot":"","sources":["../../../src/__tests__/native-session-sync.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pair-qr.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pair-qr.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pair-qr.test.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- // @arch docs/product/PRD.md#手机扫码配对
2
- // @covers packages/cli/src/commands/pair-qr.ts
3
- import { describe, expect, it } from 'vitest';
4
- import { buildPairQrPayload, PAIR_QR_RENDER_OPTIONS } from '../commands/pair-qr';
5
- describe('pair qr helpers', () => {
6
- it('encodes the pair token with the pair scheme', () => {
7
- expect(buildPairQrPayload('sn-abcd-efgh-ijkl')).toBe('pair:sn-abcd-efgh-ijkl');
8
- });
9
- it('renders the pairing qr in standard size for better scan reliability', () => {
10
- expect(PAIR_QR_RENDER_OPTIONS).toEqual({ small: false });
11
- });
12
- });
13
- //# sourceMappingURL=pair-qr.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pair-qr.test.js","sourceRoot":"","sources":["../../../src/__tests__/pair-qr.test.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+CAA+C;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEhF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pi-context.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pi-context.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pi-context.test.ts"],"names":[],"mappings":""}