@jingyi0605/codingns 0.7.3 → 0.8.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 (419) hide show
  1. package/README.md +6 -0
  2. package/bin/codingns.mjs +747 -28
  3. package/bin/office-mcp-server.mjs +620 -0
  4. package/dist/public/assets/{AdaptiveButlerPage-CgBX49t-.js → AdaptiveButlerPage-BsgVNRAa.js} +1 -1
  5. package/dist/public/assets/{App-tXOqoHNl.js → App-tPcbyRdS.js} +3 -3
  6. package/dist/public/assets/{BootstrapPage-DoRMz87R.js → BootstrapPage--MDOigQi.js} +1 -1
  7. package/dist/public/assets/{ConversationPage-DXR6Hp4O.js → ConversationPage-BBss5ED8.js} +6 -6
  8. package/dist/public/assets/{DesktopDetachPreviewPage-Cyk-ZYCk.js → DesktopDetachPreviewPage-CB8DoqwU.js} +1 -1
  9. package/dist/public/assets/{DesktopWindowPage-DNVNK3hs.js → DesktopWindowPage-GtIx5m8K.js} +1 -1
  10. package/dist/public/assets/FileContextPanel-BcM7AIT4.js +1 -0
  11. package/dist/public/assets/{GitSidebar-Cr3Z9OUI.js → GitSidebar-CMtkaxuI.js} +2 -2
  12. package/dist/public/assets/{MobileCreateSessionSheet-DMW0V6GJ.js → MobileCreateSessionSheet-CrFY41_8.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-CkdnZ_MU.js → MobileTopHeaderFrame-DGVOzXyg.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-KIbqBYJN.js → MobileWorkspaceSwitcherHeader-DLkACTnQ.js} +1 -1
  15. package/dist/public/assets/{RelayConnectEntryPage-DIRBH3hw.js → RelayConnectEntryPage-0MPPjxtQ.js} +1 -1
  16. package/dist/public/assets/{ServerSettingsModal-C-9RxdWP.js → ServerSettingsModal-vgOhwus4.js} +1 -1
  17. package/dist/public/assets/{SessionIndexPage-bRlIydRA.js → SessionIndexPage-KK626Ra9.js} +1 -1
  18. package/dist/public/assets/{SettingsPage-CMEt4ua9.js → SettingsPage-B3edBJIo.js} +2 -2
  19. package/dist/public/assets/{TerminalManagerPanel-2bi9wVhT.js → TerminalManagerPanel-BxlhZp8c.js} +1 -1
  20. package/dist/public/assets/{TerminalPage-DayZz2Tf.js → TerminalPage-B6Rdhylx.js} +1 -1
  21. package/dist/public/assets/{TerminalRuntimeFallbackModal-DgwYcp-Y.js → TerminalRuntimeFallbackModal-BVLfrpSa.js} +1 -1
  22. package/dist/public/assets/{ToolFilesPage-YvnP_FXW.js → ToolFilesPage-N_gwwUjD.js} +1 -1
  23. package/dist/public/assets/{ToolGitPage-GMcQKtV9.js → ToolGitPage-DOcuuWM1.js} +1 -1
  24. package/dist/public/assets/{ToolProcessesPage-DFIQ7BCd.js → ToolProcessesPage-D-FfJ7Re.js} +1 -1
  25. package/dist/public/assets/{ToolsHomePage-CSilFzXR.js → ToolsHomePage-CHfPxd20.js} +1 -1
  26. package/dist/public/assets/{WorkbenchLandingPage-1VtToSz9.js → WorkbenchLandingPage-CTTnfovY.js} +1 -1
  27. package/dist/public/assets/WorkbenchLayout-CbpJg0g1.js +244 -0
  28. package/dist/public/assets/{WorkbenchModal-BWXYSXmC.js → WorkbenchModal-Bt_1fYmM.js} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +1 -0
  30. package/dist/public/assets/WorkbenchShellRoute-DyaMnPfS.js +1 -0
  31. package/dist/public/assets/{WorkspaceDebugDetailPage-Ux8_Q7la.js → WorkspaceDebugDetailPage-s7yuDIxR.js} +1 -1
  32. package/dist/public/assets/{WorkspaceDetailPage-B402p99m.js → WorkspaceDetailPage-Cf-gVpqK.js} +1 -1
  33. package/dist/public/assets/{WorkspaceHomePage-D2pob6HI.js → WorkspaceHomePage-COf6I8sT.js} +1 -1
  34. package/dist/public/assets/{client-runtime-manager-C5D76ewj.js → client-runtime-manager-DGdKvYzx.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-BeHqeru9.js +590 -0
  36. package/dist/public/assets/index-CcaQt50x.css +1 -0
  37. package/dist/public/assets/index-CuzMc7q2.js +42 -0
  38. package/dist/public/assets/{login-direct-candidate-resolver-wXSaB0i7.js → login-direct-candidate-resolver-DEP_xCmR.js} +1 -1
  39. package/dist/public/assets/{model-switch-api-CPtou49j.js → model-switch-api-c6kcbBGm.js} +1 -1
  40. package/dist/public/assets/{preferences-service-CdaK7zA8.js → preferences-service-CV6Ih0BG.js} +1 -1
  41. package/dist/public/assets/{realtime-client-BjQazYsK.js → realtime-client-CRCx5xBt.js} +1 -1
  42. package/dist/public/assets/{relay-entry-BwE5nw0l.js → relay-entry-C751A-Sm.js} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-C-Lbyx2i.js → terminal-runtime-meta-CRAVR-8G.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-BM7-c-gx.js → useRegisteredDebugTemplates-D6YtNS0r.js} +1 -1
  45. package/dist/public/index.html +2 -2
  46. package/dist/server/config/env.d.ts +3 -0
  47. package/dist/server/config/env.js +67 -1
  48. package/dist/server/config/env.js.map +1 -1
  49. package/dist/server/config/opencode-base-url-resolver.d.ts +3 -2
  50. package/dist/server/config/opencode-base-url-resolver.js +64 -24
  51. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  52. package/dist/server/middlewares/auth-guard.js +4 -0
  53. package/dist/server/middlewares/auth-guard.js.map +1 -1
  54. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +168 -1
  55. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +205 -4
  56. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  57. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +296 -2
  58. package/dist/server/modules/assistant-capability/assistant-capability-service.js +872 -3
  59. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  60. package/dist/server/modules/auth/auth-service.d.ts +21 -1
  61. package/dist/server/modules/auth/auth-service.js +64 -0
  62. package/dist/server/modules/auth/auth-service.js.map +1 -1
  63. package/dist/server/modules/browser-runtime/browser-profile-service.d.ts +26 -0
  64. package/dist/server/modules/browser-runtime/browser-profile-service.js +85 -0
  65. package/dist/server/modules/browser-runtime/browser-profile-service.js.map +1 -0
  66. package/dist/server/modules/browser-runtime/browser-runtime-controller.d.ts +69 -0
  67. package/dist/server/modules/browser-runtime/browser-runtime-controller.js +83 -0
  68. package/dist/server/modules/browser-runtime/browser-runtime-controller.js.map +1 -0
  69. package/dist/server/modules/browser-runtime/browser-runtime-service.d.ts +56 -0
  70. package/dist/server/modules/browser-runtime/browser-runtime-service.js +215 -0
  71. package/dist/server/modules/browser-runtime/browser-runtime-service.js.map +1 -0
  72. package/dist/server/modules/browser-runtime/browser-task-execution-support.d.ts +65 -0
  73. package/dist/server/modules/browser-runtime/browser-task-execution-support.js +432 -0
  74. package/dist/server/modules/browser-runtime/browser-task-execution-support.js.map +1 -0
  75. package/dist/server/modules/browser-runtime/browser-task-executor-registry.d.ts +7 -0
  76. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js +21 -0
  77. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js.map +1 -0
  78. package/dist/server/modules/browser-runtime/browser-task-executor.d.ts +55 -0
  79. package/dist/server/modules/browser-runtime/browser-task-executor.js +2 -0
  80. package/dist/server/modules/browser-runtime/browser-task-executor.js.map +1 -0
  81. package/dist/server/modules/browser-runtime/browser-task-payload.d.ts +31 -0
  82. package/dist/server/modules/browser-runtime/browser-task-payload.js +55 -0
  83. package/dist/server/modules/browser-runtime/browser-task-payload.js.map +1 -0
  84. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +19 -0
  85. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +219 -0
  86. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -0
  87. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.d.ts +15 -0
  88. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js +33 -0
  89. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js.map +1 -0
  90. package/dist/server/modules/browser-runtime/playwright-browser-executor.d.ts +16 -0
  91. package/dist/server/modules/browser-runtime/playwright-browser-executor.js +272 -0
  92. package/dist/server/modules/browser-runtime/playwright-browser-executor.js.map +1 -0
  93. package/dist/server/modules/butler/butler-auth-service.js +4 -0
  94. package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
  95. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +1 -0
  96. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
  97. package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
  98. package/dist/server/modules/butler/butler-session-summary-service.js +5 -3
  99. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  100. package/dist/server/modules/butler/butler-workspace-context.js +23 -0
  101. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  102. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  103. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  104. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  105. package/dist/server/modules/debug-target/debug-target-service.d.ts +2 -0
  106. package/dist/server/modules/debug-target/debug-target-service.js +14 -0
  107. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  108. package/dist/server/modules/document-runtime/document-docx-fallback-renderer.py +139 -0
  109. package/dist/server/modules/document-runtime/document-export-executor.d.ts +50 -0
  110. package/dist/server/modules/document-runtime/document-export-executor.js +827 -0
  111. package/dist/server/modules/document-runtime/document-export-executor.js.map +1 -0
  112. package/dist/server/modules/document-runtime/document-runtime-controller.d.ts +127 -0
  113. package/dist/server/modules/document-runtime/document-runtime-controller.js +131 -0
  114. package/dist/server/modules/document-runtime/document-runtime-controller.js.map +1 -0
  115. package/dist/server/modules/document-runtime/document-runtime-service.d.ts +125 -0
  116. package/dist/server/modules/document-runtime/document-runtime-service.js +706 -0
  117. package/dist/server/modules/document-runtime/document-runtime-service.js.map +1 -0
  118. package/dist/server/modules/office/office-controller.d.ts +77 -0
  119. package/dist/server/modules/office/office-controller.js +174 -0
  120. package/dist/server/modules/office/office-controller.js.map +1 -0
  121. package/dist/server/modules/office/office-preview-link-service.d.ts +27 -0
  122. package/dist/server/modules/office/office-preview-link-service.js +121 -0
  123. package/dist/server/modules/office/office-preview-link-service.js.map +1 -0
  124. package/dist/server/modules/office/office-service.d.ts +67 -0
  125. package/dist/server/modules/office/office-service.js +359 -0
  126. package/dist/server/modules/office/office-service.js.map +1 -0
  127. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +38 -14
  128. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
  129. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +4 -0
  130. package/dist/server/modules/opencli/opencli-install-discovery.js +94 -0
  131. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -1
  132. package/dist/server/modules/opencli/opencli-runtime-builder.js +29 -0
  133. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -1
  134. package/dist/server/modules/opencli/opencli-runtime-guard.d.ts +2 -0
  135. package/dist/server/modules/opencli/opencli-runtime-guard.js +5 -0
  136. package/dist/server/modules/opencli/opencli-runtime-guard.js.map +1 -0
  137. package/dist/server/modules/ops-runtime/ops-runtime-controller.d.ts +70 -0
  138. package/dist/server/modules/ops-runtime/ops-runtime-controller.js +83 -0
  139. package/dist/server/modules/ops-runtime/ops-runtime-controller.js.map +1 -0
  140. package/dist/server/modules/ops-runtime/ops-runtime-service.d.ts +80 -0
  141. package/dist/server/modules/ops-runtime/ops-runtime-service.js +327 -0
  142. package/dist/server/modules/ops-runtime/ops-runtime-service.js.map +1 -0
  143. package/dist/server/modules/ops-runtime/ssh-ops-executor.d.ts +41 -0
  144. package/dist/server/modules/ops-runtime/ssh-ops-executor.js +478 -0
  145. package/dist/server/modules/ops-runtime/ssh-ops-executor.js.map +1 -0
  146. package/dist/server/modules/presentation/presentation-controller.d.ts +22 -0
  147. package/dist/server/modules/presentation/presentation-controller.js +59 -0
  148. package/dist/server/modules/presentation/presentation-controller.js.map +1 -0
  149. package/dist/server/modules/presentation/presentation-export-task-service.d.ts +24 -0
  150. package/dist/server/modules/presentation/presentation-export-task-service.js +137 -0
  151. package/dist/server/modules/presentation/presentation-export-task-service.js.map +1 -0
  152. package/dist/server/modules/presentation/presentation-export-types.d.ts +12 -0
  153. package/dist/server/modules/presentation/presentation-export-types.js +2 -0
  154. package/dist/server/modules/presentation/presentation-export-types.js.map +1 -0
  155. package/dist/server/modules/presentation/presentation-pdf-export-service.d.ts +20 -0
  156. package/dist/server/modules/presentation/presentation-pdf-export-service.js +29 -0
  157. package/dist/server/modules/presentation/presentation-pdf-export-service.js.map +1 -0
  158. package/dist/server/modules/presentation/presentation-pptx-export-service.d.ts +20 -0
  159. package/dist/server/modules/presentation/presentation-pptx-export-service.js +64 -0
  160. package/dist/server/modules/presentation/presentation-pptx-export-service.js.map +1 -0
  161. package/dist/server/modules/presentation/presentation-renderer.d.ts +21 -0
  162. package/dist/server/modules/presentation/presentation-renderer.js +208 -0
  163. package/dist/server/modules/presentation/presentation-renderer.js.map +1 -0
  164. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +3 -3
  165. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  166. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +6 -1
  167. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  168. package/dist/server/modules/sessions/codex-app-server-helper-process.js +2 -1
  169. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  170. package/dist/server/modules/sessions/session-controller.d.ts +1 -0
  171. package/dist/server/modules/sessions/session-controller.js +59 -4
  172. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  173. package/dist/server/modules/sessions/session-history-service.js +17 -5
  174. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  175. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -1
  176. package/dist/server/modules/sessions/session-live-runtime-service.js +86 -8
  177. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  178. package/dist/server/modules/sessions/session-provider-config-service.d.ts +25 -1
  179. package/dist/server/modules/sessions/session-provider-config-service.js +54 -5
  180. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  181. package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +14 -0
  182. package/dist/server/modules/sessions/workspace-office-mcp-config.js +54 -0
  183. package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -0
  184. package/dist/server/modules/sessions/workspace-session-auth-service.d.ts +27 -0
  185. package/dist/server/modules/sessions/workspace-session-auth-service.js +109 -0
  186. package/dist/server/modules/sessions/workspace-session-auth-service.js.map +1 -0
  187. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +50 -0
  188. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +332 -0
  189. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -0
  190. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +5 -0
  191. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -1
  192. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +67 -0
  193. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/agents/openai.yaml +4 -0
  194. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/references/cli-workflow.md +133 -0
  195. package/dist/server/modules/skills/skill-controller.d.ts +7 -0
  196. package/dist/server/modules/skills/skill-controller.js +7 -0
  197. package/dist/server/modules/skills/skill-controller.js.map +1 -1
  198. package/dist/server/modules/skills/skill-manager-service.d.ts +61 -0
  199. package/dist/server/modules/skills/skill-manager-service.js +218 -0
  200. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  201. package/dist/server/modules/skills/skill-name-policy.js +2 -1
  202. package/dist/server/modules/skills/skill-name-policy.js.map +1 -1
  203. package/dist/server/modules/tasks/task-helper-client.d.ts +1 -0
  204. package/dist/server/modules/tasks/task-helper-client.js +45 -9
  205. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  206. package/dist/server/modules/tasks/task-types.d.ts +5 -0
  207. package/dist/server/modules/tasks/task-types.js +6 -1
  208. package/dist/server/modules/tasks/task-types.js.map +1 -1
  209. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +2 -1
  210. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -1
  211. package/dist/server/modules/terminal/runtime/node-pty-loader.d.ts +5 -0
  212. package/dist/server/modules/terminal/runtime/node-pty-loader.js +68 -0
  213. package/dist/server/modules/terminal/runtime/node-pty-loader.js.map +1 -0
  214. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +2 -1
  215. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -1
  216. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +6 -9
  217. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
  218. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js +6 -9
  219. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js.map +1 -1
  220. package/dist/server/routes/assistant.d.ts +2 -1
  221. package/dist/server/routes/assistant.js +20 -1
  222. package/dist/server/routes/assistant.js.map +1 -1
  223. package/dist/server/routes/browser-runtime.d.ts +3 -0
  224. package/dist/server/routes/browser-runtime.js +14 -0
  225. package/dist/server/routes/browser-runtime.js.map +1 -0
  226. package/dist/server/routes/document-runtime.d.ts +3 -0
  227. package/dist/server/routes/document-runtime.js +18 -0
  228. package/dist/server/routes/document-runtime.js.map +1 -0
  229. package/dist/server/routes/office.d.ts +3 -0
  230. package/dist/server/routes/office.js +16 -0
  231. package/dist/server/routes/office.js.map +1 -0
  232. package/dist/server/routes/ops-runtime.d.ts +3 -0
  233. package/dist/server/routes/ops-runtime.js +13 -0
  234. package/dist/server/routes/ops-runtime.js.map +1 -0
  235. package/dist/server/routes/presentation.d.ts +3 -0
  236. package/dist/server/routes/presentation.js +5 -0
  237. package/dist/server/routes/presentation.js.map +1 -0
  238. package/dist/server/routes/skills.js +1 -0
  239. package/dist/server/routes/skills.js.map +1 -1
  240. package/dist/server/server/create-server.d.ts +36 -0
  241. package/dist/server/server/create-server.js +215 -4
  242. package/dist/server/server/create-server.js.map +1 -1
  243. package/dist/server/server/release-manifest-sync.d.ts +1 -0
  244. package/dist/server/server/release-manifest-sync.js +2 -2
  245. package/dist/server/server/release-manifest-sync.js.map +1 -1
  246. package/dist/server/server/start-host.js +1 -1
  247. package/dist/server/server/start-host.js.map +1 -1
  248. package/dist/server/storage/repositories/auth-token-repository.js +22 -6
  249. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  250. package/dist/server/storage/repositories/browser-profile-repository.d.ts +18 -0
  251. package/dist/server/storage/repositories/browser-profile-repository.js +134 -0
  252. package/dist/server/storage/repositories/browser-profile-repository.js.map +1 -0
  253. package/dist/server/storage/repositories/document-comment-repository.d.ts +10 -0
  254. package/dist/server/storage/repositories/document-comment-repository.js +118 -0
  255. package/dist/server/storage/repositories/document-comment-repository.js.map +1 -0
  256. package/dist/server/storage/repositories/document-repository.d.ts +16 -0
  257. package/dist/server/storage/repositories/document-repository.js +109 -0
  258. package/dist/server/storage/repositories/document-repository.js.map +1 -0
  259. package/dist/server/storage/repositories/document-revision-repository.d.ts +10 -0
  260. package/dist/server/storage/repositories/document-revision-repository.js +79 -0
  261. package/dist/server/storage/repositories/document-revision-repository.js.map +1 -0
  262. package/dist/server/storage/repositories/document-template-repository.d.ts +13 -0
  263. package/dist/server/storage/repositories/document-template-repository.js +244 -0
  264. package/dist/server/storage/repositories/document-template-repository.js.map +1 -0
  265. package/dist/server/storage/repositories/office-approval-repository.d.ts +11 -0
  266. package/dist/server/storage/repositories/office-approval-repository.js +109 -0
  267. package/dist/server/storage/repositories/office-approval-repository.js.map +1 -0
  268. package/dist/server/storage/repositories/office-artifact-repository.d.ts +10 -0
  269. package/dist/server/storage/repositories/office-artifact-repository.js +89 -0
  270. package/dist/server/storage/repositories/office-artifact-repository.js.map +1 -0
  271. package/dist/server/storage/repositories/office-audit-event-repository.d.ts +8 -0
  272. package/dist/server/storage/repositories/office-audit-event-repository.js +54 -0
  273. package/dist/server/storage/repositories/office-audit-event-repository.js.map +1 -0
  274. package/dist/server/storage/repositories/office-connector-repository.d.ts +10 -0
  275. package/dist/server/storage/repositories/office-connector-repository.js +97 -0
  276. package/dist/server/storage/repositories/office-connector-repository.js.map +1 -0
  277. package/dist/server/storage/repositories/office-receipt-repository.d.ts +8 -0
  278. package/dist/server/storage/repositories/office-receipt-repository.js +48 -0
  279. package/dist/server/storage/repositories/office-receipt-repository.js.map +1 -0
  280. package/dist/server/storage/repositories/office-rollback-record-repository.d.ts +8 -0
  281. package/dist/server/storage/repositories/office-rollback-record-repository.js +60 -0
  282. package/dist/server/storage/repositories/office-rollback-record-repository.js.map +1 -0
  283. package/dist/server/storage/repositories/office-task-repository.d.ts +19 -0
  284. package/dist/server/storage/repositories/office-task-repository.js +199 -0
  285. package/dist/server/storage/repositories/office-task-repository.js.map +1 -0
  286. package/dist/server/storage/repositories/office-task-step-repository.d.ts +10 -0
  287. package/dist/server/storage/repositories/office-task-step-repository.js +110 -0
  288. package/dist/server/storage/repositories/office-task-step-repository.js.map +1 -0
  289. package/dist/server/storage/repositories/ops-target-repository.d.ts +16 -0
  290. package/dist/server/storage/repositories/ops-target-repository.js +119 -0
  291. package/dist/server/storage/repositories/ops-target-repository.js.map +1 -0
  292. package/dist/server/storage/repositories/session-binding-repository.d.ts +4 -0
  293. package/dist/server/storage/repositories/session-binding-repository.js +70 -69
  294. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  295. package/dist/server/storage/repositories/session-changed-file-repository.d.ts +6 -0
  296. package/dist/server/storage/repositories/session-changed-file-repository.js +44 -43
  297. package/dist/server/storage/repositories/session-changed-file-repository.js.map +1 -1
  298. package/dist/server/storage/repositories/session-fork-repository.d.ts +2 -0
  299. package/dist/server/storage/repositories/session-fork-repository.js +42 -41
  300. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -1
  301. package/dist/server/storage/repositories/session-index-repository.d.ts +5 -0
  302. package/dist/server/storage/repositories/session-index-repository.js +153 -152
  303. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  304. package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +7 -0
  305. package/dist/server/storage/repositories/session-message-attachment-repository.js +91 -90
  306. package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
  307. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +2 -0
  308. package/dist/server/storage/repositories/session-message-origin-repository.js +25 -24
  309. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -1
  310. package/dist/server/storage/repositories/session-state-repository.d.ts +2 -0
  311. package/dist/server/storage/repositories/session-state-repository.js +35 -34
  312. package/dist/server/storage/repositories/session-state-repository.js.map +1 -1
  313. package/dist/server/storage/repositories/session-status-snapshot-repository.d.ts +2 -0
  314. package/dist/server/storage/repositories/session-status-snapshot-repository.js +25 -24
  315. package/dist/server/storage/repositories/session-status-snapshot-repository.js.map +1 -1
  316. package/dist/server/storage/sqlite/client.js +123 -1
  317. package/dist/server/storage/sqlite/client.js.map +1 -1
  318. package/dist/server/storage/sqlite/schema.sql +300 -1
  319. package/dist/server/types/domain.d.ts +205 -1
  320. package/package.json +14 -7
  321. package/scripts/postinstall.mjs +170 -36
  322. package/dist/public/assets/FileContextPanel-xGTYDclT.js +0 -1
  323. package/dist/public/assets/WorkbenchLayout-DScHaza9.js +0 -244
  324. package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +0 -1
  325. package/dist/public/assets/WorkbenchShellRoute-DhQo_0vu.css +0 -1
  326. package/dist/public/assets/file-tree-icon-lfU9Ag77.js +0 -3
  327. package/dist/public/assets/index-CFYXCsyx.css +0 -1
  328. package/dist/public/assets/index-NGxWr8Ix.js +0 -42
  329. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +0 -42
  330. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +0 -346
  331. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +0 -1
  332. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +0 -1
  333. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +0 -80
  334. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +0 -1
  335. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +0 -18
  336. package/node_modules/@codingns/session-sync-core/dist/index.js +0 -19
  337. package/node_modules/@codingns/session-sync-core/dist/index.js.map +0 -1
  338. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +0 -18
  339. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +0 -659
  340. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +0 -1
  341. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +0 -11
  342. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +0 -72
  343. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +0 -1
  344. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +0 -67
  345. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +0 -752
  346. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +0 -1
  347. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +0 -48
  348. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +0 -1184
  349. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +0 -1
  350. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.d.ts +0 -11
  351. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +0 -105
  352. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +0 -1
  353. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +0 -84
  354. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +0 -2436
  355. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +0 -1
  356. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +0 -47
  357. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +0 -1480
  358. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +0 -1
  359. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +0 -33
  360. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +0 -684
  361. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +0 -1
  362. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.d.ts +0 -9
  363. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js +0 -17
  364. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js.map +0 -1
  365. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +0 -1
  366. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +0 -8
  367. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +0 -1
  368. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.d.ts +0 -48
  369. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +0 -373
  370. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +0 -1
  371. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +0 -61
  372. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +0 -1191
  373. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +0 -1
  374. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +0 -27
  375. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +0 -415
  376. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +0 -1
  377. package/node_modules/@codingns/session-sync-core/dist/registry.d.ts +0 -7
  378. package/node_modules/@codingns/session-sync-core/dist/registry.js +0 -22
  379. package/node_modules/@codingns/session-sync-core/dist/registry.js.map +0 -1
  380. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +0 -24
  381. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +0 -329
  382. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +0 -1
  383. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +0 -30
  384. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +0 -939
  385. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +0 -1
  386. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +0 -1
  387. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -16
  388. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +0 -1
  389. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +0 -70
  390. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -2571
  391. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +0 -1
  392. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +0 -21
  393. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +0 -561
  394. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +0 -1
  395. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +0 -38
  396. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +0 -911
  397. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +0 -1
  398. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +0 -15
  399. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +0 -16
  400. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +0 -1
  401. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +0 -37
  402. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +0 -963
  403. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +0 -1
  404. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +0 -21
  405. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +0 -168
  406. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +0 -1
  407. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +0 -152
  408. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js +0 -2
  409. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js.map +0 -1
  410. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +0 -28
  411. package/node_modules/@codingns/session-sync-core/dist/services.js +0 -148
  412. package/node_modules/@codingns/session-sync-core/dist/services.js.map +0 -1
  413. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +0 -6
  414. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +0 -9
  415. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +0 -1
  416. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +0 -198
  417. package/node_modules/@codingns/session-sync-core/dist/types.js +0 -2
  418. package/node_modules/@codingns/session-sync-core/dist/types.js.map +0 -1
  419. package/node_modules/@codingns/session-sync-core/package.json +0 -33
@@ -1,684 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { messageIdFromRawRef, nextTimestamp, normalizeWorkspacePath, safeDate, sliceHistory } from "./utils.js";
4
- import { buildKimiMessageRawRef, extractKimiDisplayTextSegments, normalizeKimiMessageRecord, readKimiFirstNonEmptyString, readKimiFirstPresentValue, readKimiPath } from "../kimi-message-normalizer.js";
5
- import { buildKimiSessionRawStoreRef, buildKimiWorkspacePathByHash, parseKimiSessionIdFromRawStoreRef, readKimiWorkDirRecords } from "../kimi-shared.js";
6
- const SUBSCRIBE_POLL_INTERVAL_MS = 800;
7
- const KIMI_SESSION_SUMMARY_CACHE_LIMIT = 512;
8
- export class KimiAdapter {
9
- options;
10
- providerId = "kimi";
11
- sessionSummaryCache = new Map();
12
- constructor(options) {
13
- this.options = options;
14
- }
15
- async detectSessions(workspacePath, options) {
16
- const discovery = await this.detectSessionsDetailed(workspacePath, options);
17
- return discovery.sessions;
18
- }
19
- async detectSessionsDetailed(workspacePath, options) {
20
- const startedAt = Date.now();
21
- const targetWorkspacePath = normalizeWorkspacePath(workspacePath);
22
- const workspacePathByHash = buildKimiWorkspacePathByHash(readKimiWorkDirRecords(this.options.homeDir));
23
- const knownByRawStoreRef = new Map((options?.knownSessions ?? [])
24
- .filter((session) => session.provider === this.providerId)
25
- .map((session) => [session.rawStoreRef, session]));
26
- const sessions = [];
27
- let scannedFiles = 0;
28
- let skippedByMtimeSize = 0;
29
- let parsedFiles = 0;
30
- let bytesRead = 0;
31
- for (const files of this.listSessionFiles()) {
32
- scannedFiles += 1;
33
- const rawStoreRef = buildKimiSessionRawStoreRef(files.sessionId);
34
- const cached = this.sessionSummaryCache.get(rawStoreRef);
35
- const known = knownByRawStoreRef.get(rawStoreRef);
36
- if (cached &&
37
- cached.sourceMtimeMs === files.sourceMtimeMs &&
38
- cached.sourceSizeBytes === files.sourceSizeBytes) {
39
- this.touchSessionSummaryCache(rawStoreRef, cached);
40
- skippedByMtimeSize += 1;
41
- if (cached.summary &&
42
- normalizeWorkspacePath(cached.summary.workspacePath) === targetWorkspacePath) {
43
- sessions.push({
44
- ...cached.summary,
45
- provider: this.providerId,
46
- providerSessionId: files.sessionId,
47
- rawStoreRef,
48
- sourceMtimeMs: files.sourceMtimeMs,
49
- sourceSizeBytes: files.sourceSizeBytes
50
- });
51
- continue;
52
- }
53
- if (cached.workspacePath &&
54
- normalizeWorkspacePath(cached.workspacePath) !== targetWorkspacePath) {
55
- continue;
56
- }
57
- }
58
- if (known
59
- && known.sourceMtimeMs === files.sourceMtimeMs
60
- && known.sourceSizeBytes === files.sourceSizeBytes
61
- && normalizeWorkspacePath(known.workspacePath) === targetWorkspacePath) {
62
- skippedByMtimeSize += 1;
63
- sessions.push({
64
- ...known,
65
- provider: this.providerId,
66
- providerSessionId: files.sessionId,
67
- rawStoreRef,
68
- sourceMtimeMs: files.sourceMtimeMs,
69
- sourceSizeBytes: files.sourceSizeBytes
70
- });
71
- this.touchSessionSummaryCache(rawStoreRef, {
72
- sourceMtimeMs: files.sourceMtimeMs,
73
- sourceSizeBytes: files.sourceSizeBytes,
74
- workspacePath: known.workspacePath,
75
- summary: {
76
- ...known,
77
- provider: this.providerId,
78
- providerSessionId: files.sessionId,
79
- rawStoreRef,
80
- sourceMtimeMs: files.sourceMtimeMs,
81
- sourceSizeBytes: files.sourceSizeBytes
82
- }
83
- });
84
- continue;
85
- }
86
- parsedFiles += 1;
87
- bytesRead += files.sourceSizeBytes;
88
- const summary = this.buildSessionSummary(files, workspacePath, false, workspacePathByHash);
89
- if (!summary) {
90
- this.touchSessionSummaryCache(rawStoreRef, {
91
- sourceMtimeMs: files.sourceMtimeMs,
92
- sourceSizeBytes: files.sourceSizeBytes,
93
- workspacePath: null,
94
- summary: null
95
- });
96
- continue;
97
- }
98
- if (normalizeWorkspacePath(summary.workspacePath) !== targetWorkspacePath) {
99
- this.touchSessionSummaryCache(rawStoreRef, {
100
- sourceMtimeMs: files.sourceMtimeMs,
101
- sourceSizeBytes: files.sourceSizeBytes,
102
- workspacePath: summary.workspacePath,
103
- summary: null
104
- });
105
- continue;
106
- }
107
- sessions.push(summary);
108
- this.touchSessionSummaryCache(rawStoreRef, {
109
- sourceMtimeMs: files.sourceMtimeMs,
110
- sourceSizeBytes: files.sourceSizeBytes,
111
- workspacePath: summary.workspacePath,
112
- summary
113
- });
114
- }
115
- const sortedSessions = sessions.sort((left, right) => (right.lastMessageAt ?? "").localeCompare(left.lastMessageAt ?? ""));
116
- const diagnostic = {
117
- provider: this.providerId,
118
- status: "success",
119
- durationMs: Date.now() - startedAt,
120
- sessionCount: sortedSessions.length,
121
- isComplete: true,
122
- errorMessage: null,
123
- scannedFiles,
124
- skippedByMtimeSize,
125
- parsedFiles,
126
- bytesRead
127
- };
128
- return {
129
- sessions: sortedSessions,
130
- isComplete: true,
131
- providerDiagnostics: [diagnostic]
132
- };
133
- }
134
- async readRecentSessionHistory(providerSessionId, rawStoreRef, _totalMessageCount, limit) {
135
- return this.readSessionHistory(providerSessionId, rawStoreRef, null, limit, "backward");
136
- }
137
- async readSessionHistory(providerSessionId, rawStoreRef, cursor, limit, direction = "forward") {
138
- const files = this.resolveSessionFiles(providerSessionId, rawStoreRef);
139
- const messages = this.parseSessionMessages(files, true);
140
- return sliceHistory(messages, cursor, limit, direction);
141
- }
142
- subscribeSession(providerSessionId, rawStoreRef, cursor, limit, onEvent) {
143
- let currentCursor = cursor;
144
- let lastRevision = this.readSessionRevision(providerSessionId, rawStoreRef);
145
- const timer = setInterval(async () => {
146
- const nextRevision = this.readSessionRevision(providerSessionId, rawStoreRef);
147
- if (!nextRevision || !lastRevision || nextRevision <= lastRevision) {
148
- return;
149
- }
150
- lastRevision = nextRevision;
151
- const page = await this.readSessionHistory(providerSessionId, rawStoreRef, currentCursor, limit, "forward");
152
- if (page.messages.length === 0) {
153
- return;
154
- }
155
- currentCursor = page.cursor;
156
- await onEvent({
157
- messages: page.messages,
158
- cursor: page.cursor
159
- });
160
- }, SUBSCRIBE_POLL_INTERVAL_MS);
161
- return {
162
- close() {
163
- clearInterval(timer);
164
- }
165
- };
166
- }
167
- async resumeSession(providerSessionId, rawStoreRef) {
168
- const files = this.resolveSessionFiles(providerSessionId, rawStoreRef);
169
- return {
170
- provider: this.providerId,
171
- providerSessionId: files.sessionId,
172
- resumedAt: nextTimestamp(),
173
- rawStoreRef: buildKimiSessionRawStoreRef(files.sessionId)
174
- };
175
- }
176
- async startSession(_workspacePath, _options) {
177
- throw new Error("KIMI_READ_ONLY_PROVIDER");
178
- }
179
- async sendMessage(_providerSessionId, _rawStoreRef, _content, _clientRequestId, _permissionMode) {
180
- throw new Error("KIMI_READ_ONLY_PROVIDER");
181
- }
182
- async readSessionTitle(providerSessionId, rawStoreRef) {
183
- const files = this.resolveSessionFiles(providerSessionId, rawStoreRef);
184
- const summary = this.buildSessionSummary(files, "", true, buildKimiWorkspacePathByHash(readKimiWorkDirRecords(this.options.homeDir)));
185
- return summary?.title ?? files.sessionId;
186
- }
187
- async renameSessionTitle(_providerSessionId, _rawStoreRef, _title) {
188
- throw new Error("KIMI_READ_ONLY_PROVIDER");
189
- }
190
- async updateSessionArchiveState(_providerSessionId, rawStoreRef, isArchived) {
191
- return {
192
- rawStoreRef,
193
- isArchived
194
- };
195
- }
196
- async deleteSession(providerSessionId, rawStoreRef) {
197
- const files = this.resolveSessionFiles(providerSessionId, rawStoreRef);
198
- if (!existsSync(files.sessionDir)) {
199
- throw new Error("PROVIDER_SESSION_NOT_FOUND");
200
- }
201
- rmSync(files.sessionDir, { recursive: true, force: true });
202
- this.sessionSummaryCache.delete(buildKimiSessionRawStoreRef(files.sessionId));
203
- }
204
- getProviderCapabilities() {
205
- const currentDefaultModel = normalizeOptionalText(this.options.defaultModel);
206
- return {
207
- provider: this.providerId,
208
- canStartSession: true,
209
- canResumeSession: true,
210
- canSendMessage: true,
211
- inRunInputMode: "none",
212
- supportsSubagents: false,
213
- supportsInterrupt: true,
214
- supportsStructuredToolCalls: true,
215
- supportsTokenUsage: false,
216
- supportsAttachments: false,
217
- supportsPermissionPrompt: false,
218
- supportsCheckpoint: false,
219
- supportsSessionDelete: true,
220
- modelOptions: [
221
- {
222
- id: "provider-default",
223
- name: currentDefaultModel
224
- ? `跟随 Kimi CLI 默认模型(当前:${currentDefaultModel})`
225
- : "跟随 Kimi CLI 默认模型",
226
- usesProviderDefault: true
227
- }
228
- ],
229
- limitations: [
230
- "当前按单轮命令模式运行,每次消息会单独启动一轮 Kimi CLI 进程,暂不支持在同一轮运行中继续追加指导。"
231
- ]
232
- };
233
- }
234
- async getSessionCapabilities() {
235
- return this.getProviderCapabilities();
236
- }
237
- async readContextUsage() {
238
- return null;
239
- }
240
- resolveSessionFiles(providerSessionId, rawStoreRef) {
241
- const sessionIdFromStoreRef = parseKimiSessionIdFromRawStoreRef(rawStoreRef);
242
- const sessionId = sessionIdFromStoreRef && sessionIdFromStoreRef.length > 0
243
- ? sessionIdFromStoreRef
244
- : providerSessionId.trim();
245
- if (!sessionId) {
246
- throw new Error("PROVIDER_SESSION_ID_REQUIRED");
247
- }
248
- const files = this.listSessionFiles().find((item) => item.sessionId === sessionId);
249
- if (!files) {
250
- throw new Error("PROVIDER_SESSION_NOT_FOUND");
251
- }
252
- return files;
253
- }
254
- readSessionRevision(providerSessionId, rawStoreRef) {
255
- try {
256
- const files = this.resolveSessionFiles(providerSessionId, rawStoreRef);
257
- return files.sourceMtimeMs * 1_000 + files.sourceSizeBytes;
258
- }
259
- catch {
260
- return null;
261
- }
262
- }
263
- listSessionFiles() {
264
- const sessionsRoot = join(this.options.homeDir, "sessions");
265
- if (!existsSync(sessionsRoot)) {
266
- return [];
267
- }
268
- const results = [];
269
- const firstLevel = readdirSync(sessionsRoot, { withFileTypes: true });
270
- for (const hashDir of firstLevel) {
271
- if (!hashDir.isDirectory()) {
272
- continue;
273
- }
274
- const hashPath = join(sessionsRoot, hashDir.name);
275
- const secondLevel = readdirSync(hashPath, { withFileTypes: true });
276
- for (const sessionDirEntry of secondLevel) {
277
- if (!sessionDirEntry.isDirectory()) {
278
- continue;
279
- }
280
- const sessionDir = join(hashPath, sessionDirEntry.name);
281
- const statePath = buildExistingFilePath(sessionDir, "state.json");
282
- const contextPath = buildExistingFilePath(sessionDir, "context.jsonl");
283
- const wirePath = buildExistingFilePath(sessionDir, "wire.jsonl");
284
- const sourceStats = readSessionSourceStats([statePath, contextPath, wirePath]);
285
- if (!sourceStats) {
286
- continue;
287
- }
288
- const state = readJsonFileSafely(statePath);
289
- const sessionId = readKimiFirstNonEmptyString(state, [
290
- ["sessionId"],
291
- ["session_id"],
292
- ["id"],
293
- ["session", "id"]
294
- ]) ?? sessionDirEntry.name;
295
- results.push({
296
- workDirHash: hashDir.name,
297
- sessionId,
298
- sessionDir,
299
- statePath,
300
- contextPath,
301
- wirePath,
302
- sourceMtimeMs: sourceStats.mtimeMs,
303
- sourceSizeBytes: sourceStats.sizeBytes
304
- });
305
- }
306
- }
307
- return results;
308
- }
309
- buildSessionSummary(files, fallbackWorkspacePath, strict, workspacePathByHash) {
310
- const state = readJsonFileSafely(files.statePath, strict, files.sessionId, "state.json");
311
- const messages = this.parseSessionMessages(files, strict);
312
- const workspacePath = readKimiFirstNonEmptyString(state, [
313
- ["cwd"],
314
- ["workspacePath"],
315
- ["workspace_path"],
316
- ["workdir"],
317
- ["workingDirectory"],
318
- ["workspace", "path"],
319
- ["workspace", "cwd"],
320
- ["project", "path"]
321
- ]) ??
322
- workspacePathByHash.get(files.workDirHash) ??
323
- readWorkspacePathFromSessionLogs(files, strict) ??
324
- fallbackWorkspacePath;
325
- if (!workspacePath.trim()) {
326
- return null;
327
- }
328
- const sessionTitle = readKimiFirstNonEmptyString(state, [
329
- ["title"],
330
- ["custom_title"],
331
- ["sessionTitle"],
332
- ["session", "title"],
333
- ["summary", "title"]
334
- ]) ??
335
- messages.find((message) => message.role === "user")?.content.slice(0, 48) ??
336
- files.sessionId;
337
- return {
338
- provider: this.providerId,
339
- providerSessionId: files.sessionId,
340
- title: sessionTitle,
341
- workspacePath,
342
- rawStoreRef: buildKimiSessionRawStoreRef(files.sessionId),
343
- isArchived: readFirstBoolean(state, [["archived"], ["isArchived"], ["session", "archived"]]) ?? false,
344
- lastMessageAt: resolveKimiSummaryLastMessageAt(messages, files.sourceMtimeMs),
345
- messageCount: messages.length,
346
- sourceMtimeMs: files.sourceMtimeMs,
347
- sourceSizeBytes: files.sourceSizeBytes
348
- };
349
- }
350
- parseSessionMessages(files, strict) {
351
- const drafts = [];
352
- let sourceOrder = 0;
353
- // 约定:context 作为主历史,wire 只补充 context 中缺失的运行时细节。
354
- const contextLines = readJsonLinesSafely(files.contextPath, strict, files.sessionId, "context.jsonl");
355
- for (const line of contextLines) {
356
- sourceOrder = appendMessageDrafts(drafts, files.sessionId, "context", line, sourceOrder);
357
- }
358
- const wireLines = readJsonLinesSafely(files.wirePath, strict, files.sessionId, "wire.jsonl");
359
- for (const line of wireLines) {
360
- sourceOrder = appendMessageDrafts(drafts, files.sessionId, "wire", line, sourceOrder);
361
- }
362
- drafts.sort((left, right) => {
363
- if (left.sortAtMs !== right.sortAtMs) {
364
- return left.sortAtMs - right.sortAtMs;
365
- }
366
- return left.sourceOrder - right.sourceOrder;
367
- });
368
- const collapsedDrafts = collapseEquivalentKimiDrafts(dropWireDraftsCoveredByContext(drafts));
369
- return collapsedDrafts.map((draft, index) => ({
370
- messageId: messageIdFromRawRef(draft.rawRef),
371
- provider: "kimi",
372
- providerSessionId: files.sessionId,
373
- role: draft.role,
374
- kind: draft.kind,
375
- content: draft.content,
376
- toolCall: draft.toolCall,
377
- timestamp: draft.timestamp,
378
- sequence: index + 1,
379
- rawRef: draft.rawRef
380
- }));
381
- }
382
- touchSessionSummaryCache(rawStoreRef, entry) {
383
- this.sessionSummaryCache.delete(rawStoreRef);
384
- this.sessionSummaryCache.set(rawStoreRef, entry);
385
- while (this.sessionSummaryCache.size > KIMI_SESSION_SUMMARY_CACHE_LIMIT) {
386
- const oldestKey = this.sessionSummaryCache.keys().next().value;
387
- if (!oldestKey) {
388
- break;
389
- }
390
- this.sessionSummaryCache.delete(oldestKey);
391
- }
392
- }
393
- }
394
- function appendMessageDrafts(drafts, sessionId, source, line, sourceOrder) {
395
- const timestamp = resolveMessageTimestamp(line.data, line.lineNumber, source);
396
- const sortAtMs = Date.parse(timestamp);
397
- const normalizedMessages = normalizeKimiMessageRecord(line.data);
398
- for (const normalized of normalizedMessages) {
399
- sourceOrder += 1;
400
- drafts.push({
401
- source,
402
- role: normalized.role,
403
- kind: normalized.kind,
404
- content: normalized.content,
405
- toolCall: normalized.toolCall,
406
- timestamp,
407
- sortAtMs,
408
- rawRef: buildKimiMessageRawRef(sessionId, source, line.lineNumber, normalized.partIndex ?? undefined),
409
- sourceOrder
410
- });
411
- }
412
- return sourceOrder;
413
- }
414
- function collapseEquivalentKimiDrafts(drafts) {
415
- const collapsed = [];
416
- for (const draft of drafts) {
417
- let equivalentIndex = -1;
418
- for (let index = collapsed.length - 1; index >= 0; index -= 1) {
419
- if (isEquivalentKimiDraft(collapsed[index], draft)) {
420
- equivalentIndex = index;
421
- break;
422
- }
423
- }
424
- if (equivalentIndex === -1) {
425
- collapsed.push(draft);
426
- continue;
427
- }
428
- collapsed[equivalentIndex] = pickPreferredKimiDraft(collapsed[equivalentIndex], draft);
429
- }
430
- return collapsed;
431
- }
432
- function isEquivalentKimiDraft(left, right) {
433
- if (left.role !== right.role || left.kind !== right.kind) {
434
- return false;
435
- }
436
- if ((left.kind === "tool_call" || left.kind === "tool_result")
437
- && left.toolCall?.callId
438
- && right.toolCall?.callId) {
439
- return left.toolCall.callId === right.toolCall.callId;
440
- }
441
- if (left.kind !== "text"
442
- && left.kind !== "thinking") {
443
- return false;
444
- }
445
- const leftComparable = normalizeComparableKimiDraftContent(left.content);
446
- const rightComparable = normalizeComparableKimiDraftContent(right.content);
447
- if (!leftComparable || leftComparable !== rightComparable) {
448
- return false;
449
- }
450
- return Math.abs(left.sortAtMs - right.sortAtMs) <= 2 * 60 * 1_000;
451
- }
452
- function dropWireDraftsCoveredByContext(drafts) {
453
- const contextCounts = new Map();
454
- for (const draft of drafts) {
455
- const comparableKey = buildComparableKimiDraftKey(draft);
456
- if (!comparableKey || draft.source !== "context") {
457
- continue;
458
- }
459
- contextCounts.set(comparableKey, (contextCounts.get(comparableKey) ?? 0) + 1);
460
- }
461
- const result = [];
462
- for (const draft of drafts) {
463
- const comparableKey = buildComparableKimiDraftKey(draft);
464
- if (comparableKey
465
- && draft.source === "wire"
466
- && (contextCounts.get(comparableKey) ?? 0) > 0) {
467
- contextCounts.set(comparableKey, (contextCounts.get(comparableKey) ?? 1) - 1);
468
- continue;
469
- }
470
- result.push(draft);
471
- }
472
- return result;
473
- }
474
- function pickPreferredKimiDraft(left, right) {
475
- const leftQuality = scoreKimiDraftQuality(left);
476
- const rightQuality = scoreKimiDraftQuality(right);
477
- if (leftQuality !== rightQuality) {
478
- return rightQuality > leftQuality ? right : left;
479
- }
480
- const leftSourcePriority = kimiDraftSourcePriority(left.source);
481
- const rightSourcePriority = kimiDraftSourcePriority(right.source);
482
- if (leftSourcePriority !== rightSourcePriority) {
483
- return rightSourcePriority > leftSourcePriority ? right : left;
484
- }
485
- if (left.content.length !== right.content.length) {
486
- return right.content.length > left.content.length ? right : left;
487
- }
488
- if (left.sortAtMs !== right.sortAtMs) {
489
- return right.sortAtMs >= left.sortAtMs ? right : left;
490
- }
491
- return right.sourceOrder >= left.sourceOrder ? right : left;
492
- }
493
- function scoreKimiDraftQuality(draft) {
494
- let score = 0;
495
- const lowerContent = draft.content.toLowerCase();
496
- score += normalizeComparableKimiDraftContent(draft.content).length;
497
- if (draft.toolCall?.callId) {
498
- score += 100;
499
- }
500
- if (draft.content.includes("<system-reminder")) {
501
- score -= 200;
502
- }
503
- if (draft.content.includes("<system>")) {
504
- score -= 80;
505
- }
506
- if (lowerContent.includes("turnbegin") || lowerContent.includes("contentpart")) {
507
- score -= 100;
508
- }
509
- if (lowerContent.includes("statusupdate") || /chatcmpl[-_a-z0-9]+/i.test(draft.content)) {
510
- score -= 100;
511
- }
512
- return score;
513
- }
514
- function kimiDraftSourcePriority(source) {
515
- return source === "context" ? 2 : 1;
516
- }
517
- function normalizeComparableKimiDraftContent(content) {
518
- const cleaned = extractKimiDisplayTextSegments(content).join("\n\n") || content;
519
- return cleaned
520
- .replace(/\r\n/g, "\n")
521
- .trim()
522
- .replace(/\s+/g, " ");
523
- }
524
- function buildComparableKimiDraftKey(draft) {
525
- if ((draft.kind === "tool_call" || draft.kind === "tool_result")
526
- && draft.toolCall?.callId) {
527
- return `${draft.role}:${draft.kind}:${draft.toolCall.callId}`;
528
- }
529
- if (draft.kind !== "text" && draft.kind !== "thinking") {
530
- return null;
531
- }
532
- const comparableContent = normalizeComparableKimiDraftContent(draft.content);
533
- if (!comparableContent) {
534
- return null;
535
- }
536
- return `${draft.role}:${draft.kind}:${comparableContent}`;
537
- }
538
- function resolveMessageTimestamp(record, lineNumber, source) {
539
- const candidate = readKimiFirstPresentValue(record, [
540
- ["timestamp"],
541
- ["createdAt"],
542
- ["created_at"],
543
- ["time"],
544
- ["event", "timestamp"],
545
- ["message", "timestamp"],
546
- ["payload", "timestamp"]
547
- ]);
548
- const normalized = safeDate(candidate, "");
549
- if (normalized) {
550
- return normalized;
551
- }
552
- const offset = source === "context" ? 0 : 500;
553
- return new Date(Date.UTC(2020, 0, 1) + lineNumber * 1_000 + offset).toISOString();
554
- }
555
- function readWorkspacePathFromSessionLogs(files, strict) {
556
- const lines = [
557
- ...readJsonLinesSafely(files.contextPath, strict, files.sessionId, "context.jsonl"),
558
- ...readJsonLinesSafely(files.wirePath, strict, files.sessionId, "wire.jsonl")
559
- ];
560
- for (const line of lines) {
561
- const workspacePath = readKimiFirstNonEmptyString(line.data, [
562
- ["cwd"],
563
- ["workspacePath"],
564
- ["workspace_path"],
565
- ["workdir"],
566
- ["workingDirectory"],
567
- ["workspace", "path"],
568
- ["workspace", "cwd"],
569
- ["project", "path"],
570
- ["message", "cwd"],
571
- ["payload", "cwd"]
572
- ]);
573
- if (workspacePath?.trim()) {
574
- return workspacePath.trim();
575
- }
576
- }
577
- return null;
578
- }
579
- function buildExistingFilePath(sessionDir, fileName) {
580
- const filePath = join(sessionDir, fileName);
581
- return existsSync(filePath) ? filePath : null;
582
- }
583
- function readSessionSourceStats(filePaths) {
584
- const existingPaths = filePaths.filter((filePath) => Boolean(filePath));
585
- if (existingPaths.length === 0) {
586
- return null;
587
- }
588
- let mtimeMs = 0;
589
- let sizeBytes = 0;
590
- for (const filePath of existingPaths) {
591
- const stats = statSync(filePath);
592
- mtimeMs = Math.max(mtimeMs, stats.mtimeMs);
593
- sizeBytes += stats.size;
594
- }
595
- return {
596
- mtimeMs,
597
- sizeBytes
598
- };
599
- }
600
- function readJsonFileSafely(filePath, strict = false, sessionId = "", fileName = "") {
601
- if (!filePath || !existsSync(filePath)) {
602
- return null;
603
- }
604
- try {
605
- return JSON.parse(readFileSync(filePath, "utf8"));
606
- }
607
- catch (error) {
608
- if (strict) {
609
- throw createKimiHistoryParseError({
610
- sessionId,
611
- fileName: fileName || filePath,
612
- detail: error instanceof Error ? error.message : "INVALID_JSON"
613
- });
614
- }
615
- return null;
616
- }
617
- }
618
- function readJsonLinesSafely(filePath, strict, sessionId, fileName) {
619
- if (!filePath || !existsSync(filePath)) {
620
- return [];
621
- }
622
- const lines = readFileSync(filePath, "utf8")
623
- .split(/\r?\n/)
624
- .map((line) => line.trimEnd());
625
- const records = [];
626
- for (let index = 0; index < lines.length; index += 1) {
627
- const line = lines[index];
628
- if (!line.trim()) {
629
- continue;
630
- }
631
- try {
632
- const data = JSON.parse(line);
633
- records.push({
634
- lineNumber: index + 1,
635
- data
636
- });
637
- }
638
- catch (error) {
639
- if (!strict) {
640
- continue;
641
- }
642
- throw createKimiHistoryParseError({
643
- sessionId,
644
- fileName,
645
- lineNumber: index + 1,
646
- detail: error instanceof Error ? error.message : "INVALID_JSON_LINE"
647
- });
648
- }
649
- }
650
- return records;
651
- }
652
- function createKimiHistoryParseError(input) {
653
- const location = input.lineNumber ? `:${input.lineNumber}` : "";
654
- return new Error(`KIMI_HISTORY_PARSE_ERROR session=${input.sessionId} file=${input.fileName}${location} detail=${input.detail}`);
655
- }
656
- function readFirstBoolean(record, paths) {
657
- if (!record) {
658
- return null;
659
- }
660
- for (const path of paths) {
661
- const value = readKimiPath(record, path);
662
- if (typeof value === "boolean") {
663
- return value;
664
- }
665
- }
666
- return null;
667
- }
668
- function normalizeOptionalText(value) {
669
- const trimmed = value?.trim();
670
- return trimmed ? trimmed : null;
671
- }
672
- function resolveKimiSummaryLastMessageAt(messages, sourceMtimeMs) {
673
- const lastMessageTimestamp = messages.at(-1)?.timestamp ?? null;
674
- if (!lastMessageTimestamp) {
675
- return Number.isFinite(sourceMtimeMs) ? new Date(sourceMtimeMs).toISOString() : null;
676
- }
677
- return isSyntheticKimiTimestamp(lastMessageTimestamp)
678
- ? new Date(sourceMtimeMs).toISOString()
679
- : lastMessageTimestamp;
680
- }
681
- function isSyntheticKimiTimestamp(timestamp) {
682
- return timestamp.startsWith("2020-01-01T00:");
683
- }
684
- //# sourceMappingURL=kimi.js.map