@jingyi0605/codingns 0.9.0 → 0.9.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 (331) hide show
  1. package/bin/codingns.mjs +75 -0
  2. package/dist/public/assets/{AdaptiveButlerPage-B17QiMyT.js → AdaptiveButlerPage-khJQh6a_.js} +2 -2
  3. package/dist/public/assets/{App-CFBwDUNA.js → App-If9gThKM.js} +6 -6
  4. package/dist/public/assets/{BootstrapPage-W5wU3BPh.js → BootstrapPage-DcfYtoLC.js} +1 -1
  5. package/dist/public/assets/{ConversationPage-DQLX1bUh.js → ConversationPage-Bfb7GLTM.js} +1 -1
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DTPeuAW-.js → DesktopDetachPreviewPage-CXUPMcBz.js} +1 -1
  7. package/dist/public/assets/{DesktopModal-6ii53_Y9.js → DesktopModal-bMdI1jEe.js} +1 -1
  8. package/dist/public/assets/DesktopWindowPage-D1xwgS-7.js +2 -0
  9. package/dist/public/assets/FileContextPanel-C4syif3B.js +1 -0
  10. package/dist/public/assets/GitSidebar-DduL9aTV.js +6 -0
  11. package/dist/public/assets/MobileCreateSessionSheet-DWPBsEx8.js +1 -0
  12. package/dist/public/assets/{MobileSheet-opTWyRe1.js → MobileSheet-BXvQPkxt.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-BbNON3Y4.js → MobileTopHeaderFrame-vdYOyaaB.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-BZEzPeMj.js → MobileWorkspaceSwitcherHeader-DT330cAx.js} +1 -1
  15. package/dist/public/assets/{PluginAccessOverview-mQDmAljp.js → PluginAccessOverview-C77TeZTK.js} +1 -1
  16. package/dist/public/assets/{PluginContainerPage-CcxUJpM4.js → PluginContainerPage-DdSwOCw-.js} +1 -1
  17. package/dist/public/assets/{PluginDetailPage-D5--ACIt.js → PluginDetailPage-BK1yTzvO.js} +1 -1
  18. package/dist/public/assets/{PluginsListPage-D_oJxYXT.js → PluginsListPage-DAAwSc6W.js} +1 -1
  19. package/dist/public/assets/{RelayConnectEntryPage-DROxpnkv.js → RelayConnectEntryPage-4Yyo2p8b.js} +1 -1
  20. package/dist/public/assets/{ServerSettingsModal-CUUOPqSe.js → ServerSettingsModal-C_DEisHs.js} +1 -1
  21. package/dist/public/assets/{SessionIndexPage-C2Jxh6Gp.js → SessionIndexPage-DyMikN_x.js} +1 -1
  22. package/dist/public/assets/SettingsPage-CDAVsPr3.js +2 -0
  23. package/dist/public/assets/TerminalManagerPanel-4OR47vcf.js +1 -0
  24. package/dist/public/assets/{TerminalPage-CwWyFDj8.js → TerminalPage-Pvx396YX.js} +1 -1
  25. package/dist/public/assets/{TerminalRuntimeFallbackModal-CSVVbO8r.js → TerminalRuntimeFallbackModal-KvG6k4AQ.js} +1 -1
  26. package/dist/public/assets/{ToolFilesPage-QBEY8oCf.js → ToolFilesPage-DrYHk0N-.js} +1 -1
  27. package/dist/public/assets/{ToolGitPage-BKoZ2l9v.js → ToolGitPage-Dz1q-Ns_.js} +1 -1
  28. package/dist/public/assets/{ToolProcessesPage-BOH0ib4G.js → ToolProcessesPage-CRhphOmM.js} +1 -1
  29. package/dist/public/assets/{ToolsHomePage-BcMZ3BCQ.js → ToolsHomePage-BJSDLR6T.js} +1 -1
  30. package/dist/public/assets/{WorkbenchLandingPage-B5zoppEl.js → WorkbenchLandingPage-BlkxdOLC.js} +1 -1
  31. package/dist/public/assets/WorkbenchLayout-D-U7ghT0.js +1022 -0
  32. package/dist/public/assets/{WorkbenchModal-NGmPgqaE.js → WorkbenchModal-xbx1o6MO.js} +1 -1
  33. package/dist/public/assets/WorkbenchShellRoute-DyWSCHz_.js +1 -0
  34. package/dist/public/assets/WorkbenchShellRoute-htbkGbtW.css +1 -0
  35. package/dist/public/assets/WorkspaceDebugDetailPage-B4ol2_a5.js +1 -0
  36. package/dist/public/assets/WorkspaceDetailPage-DMakfmHR.js +1 -0
  37. package/dist/public/assets/WorkspaceHomePage-tmCafatd.js +1 -0
  38. package/dist/public/assets/{client-runtime-manager-DXbI9K1K.js → client-runtime-manager-Bwau7p1v.js} +1 -1
  39. package/dist/public/assets/index-DmUJ8tIw.css +1 -0
  40. package/dist/public/assets/index-_OCkVmfl.js +50 -0
  41. package/dist/public/assets/{login-direct-candidate-resolver-DkKyFtQJ.js → login-direct-candidate-resolver-CKUQ07IA.js} +1 -1
  42. package/dist/public/assets/{plugin-permission-copy-CzN269Bk.js → plugin-permission-copy-DIVk5jNp.js} +1 -1
  43. package/dist/public/assets/{plugins-api-Bv9DHpLF.js → plugins-api-DHJVvPZw.js} +1 -1
  44. package/dist/public/assets/{preferences-service-D2ISL2Zz.js → preferences-service-CyxxeBmS.js} +1 -1
  45. package/dist/public/assets/{relay-entry-Bg0OisQy.js → relay-entry-B5GmiOrR.js} +1 -1
  46. package/dist/public/assets/{terminal-runtime-meta-C8t-CIDF.js → terminal-runtime-meta-DBsyT35T.js} +1 -1
  47. package/dist/public/assets/useRegisteredDebugTemplates-wCGD2SLW.js +1 -0
  48. package/dist/public/assets/workbench-navigation-RyUjchbD.js +1 -0
  49. package/dist/public/index.html +2 -2
  50. package/dist/server/config/env.d.ts +1 -0
  51. package/dist/server/config/env.js +3 -0
  52. package/dist/server/config/env.js.map +1 -1
  53. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -1
  54. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +1 -0
  55. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +31 -0
  56. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -1
  57. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -1
  58. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +1 -0
  59. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +1 -0
  60. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -1
  61. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +4 -1
  62. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -1
  63. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +140 -16
  64. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -1
  65. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +2 -2
  66. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -1
  67. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +20 -3
  68. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +3 -3
  69. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -1
  70. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +1 -1
  71. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +8 -7
  72. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  73. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +14 -13
  74. package/dist/server/modules/assistant-capability/assistant-capability-service.js +27 -24
  75. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  76. package/dist/server/modules/auth/auth-controller.d.ts +27 -1
  77. package/dist/server/modules/auth/auth-controller.js +20 -0
  78. package/dist/server/modules/auth/auth-controller.js.map +1 -1
  79. package/dist/server/modules/auth/auth-service.d.ts +32 -1
  80. package/dist/server/modules/auth/auth-service.js +217 -2
  81. package/dist/server/modules/auth/auth-service.js.map +1 -1
  82. package/dist/server/modules/bootstrap/bootstrap-service.js +1 -0
  83. package/dist/server/modules/bootstrap/bootstrap-service.js.map +1 -1
  84. package/dist/server/modules/butler/assistant-automation-service.d.ts +1 -1
  85. package/dist/server/modules/butler/assistant-automation-service.js +9 -10
  86. package/dist/server/modules/butler/assistant-automation-service.js.map +1 -1
  87. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
  88. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
  89. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
  90. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
  91. package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
  92. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
  93. package/dist/server/modules/butler/butler-action-context-service.js +2 -2
  94. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
  95. package/dist/server/modules/butler/butler-control-action-service.d.ts +5 -5
  96. package/dist/server/modules/butler/butler-control-action-service.js +19 -19
  97. package/dist/server/modules/butler/butler-control-action-service.js.map +1 -1
  98. package/dist/server/modules/butler/butler-control-session-service.d.ts +1 -1
  99. package/dist/server/modules/butler/butler-control-session-service.js +27 -26
  100. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  101. package/dist/server/modules/butler/butler-control-timer-service.js +4 -5
  102. package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -1
  103. package/dist/server/modules/butler/butler-controller.d.ts +2 -2
  104. package/dist/server/modules/butler/butler-controller.js +19 -17
  105. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  106. package/dist/server/modules/butler/butler-follow-up-service.d.ts +3 -0
  107. package/dist/server/modules/butler/butler-follow-up-service.js +11 -1
  108. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  109. package/dist/server/modules/butler/butler-inbox-service.d.ts +3 -0
  110. package/dist/server/modules/butler/butler-inbox-service.js +14 -2
  111. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  112. package/dist/server/modules/butler/butler-profile-service.d.ts +5 -5
  113. package/dist/server/modules/butler/butler-profile-service.js +17 -16
  114. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  115. package/dist/server/modules/butler/butler-project-service.d.ts +7 -6
  116. package/dist/server/modules/butler/butler-project-service.js +35 -21
  117. package/dist/server/modules/butler/butler-project-service.js.map +1 -1
  118. package/dist/server/modules/butler/butler-session-service.d.ts +5 -2
  119. package/dist/server/modules/butler/butler-session-service.js +51 -27
  120. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  121. package/dist/server/modules/butler/butler-session-summary-service.d.ts +2 -2
  122. package/dist/server/modules/butler/butler-session-summary-service.js +23 -9
  123. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  124. package/dist/server/modules/butler/context-aggregator.js +9 -9
  125. package/dist/server/modules/butler/context-aggregator.js.map +1 -1
  126. package/dist/server/modules/butler/patrol-execution-service.d.ts +0 -1
  127. package/dist/server/modules/butler/patrol-execution-service.js +6 -12
  128. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
  129. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  130. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  131. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  132. package/dist/server/modules/file/file-controller.d.ts +11 -2
  133. package/dist/server/modules/file/file-controller.js +404 -17
  134. package/dist/server/modules/file/file-controller.js.map +1 -1
  135. package/dist/server/modules/file/file-search-service.js +200 -12
  136. package/dist/server/modules/file/file-search-service.js.map +1 -1
  137. package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +18 -5
  138. package/dist/server/modules/file/workspace-file-bridge-service.d.ts +9 -0
  139. package/dist/server/modules/file/workspace-file-bridge-service.js +3 -0
  140. package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
  141. package/dist/server/modules/file/workspace-file-bridge-watch-service.d.ts +9 -0
  142. package/dist/server/modules/file/workspace-file-bridge-watch-service.js +28 -0
  143. package/dist/server/modules/file/workspace-file-bridge-watch-service.js.map +1 -1
  144. package/dist/server/modules/sessions/session-controller.js +3 -3
  145. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  146. package/dist/server/modules/sessions/session-history-service.d.ts +8 -3
  147. package/dist/server/modules/sessions/session-history-service.js +126 -11
  148. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  149. package/dist/server/modules/sessions/session-live-runtime-service.js +25 -15
  150. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  151. package/dist/server/modules/sessions/session-permission-request-service.js +28 -15
  152. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  153. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  154. package/dist/server/modules/tasks/task-types.js +1 -0
  155. package/dist/server/modules/tasks/task-types.js.map +1 -1
  156. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +1 -1
  157. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +22 -5
  158. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -1
  159. package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
  160. package/dist/server/modules/workbench/workbench-controller.js +20 -0
  161. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  162. package/dist/server/modules/workbench/workbench-service.d.ts +6 -6
  163. package/dist/server/modules/workbench/workbench-service.js +42 -45
  164. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  165. package/dist/server/modules/workspace/affairs-library-controller.d.ts +8 -0
  166. package/dist/server/modules/workspace/affairs-library-controller.js +11 -0
  167. package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -1
  168. package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +6 -0
  169. package/dist/server/modules/workspace/affairs-library-preview-link-service.js +12 -2
  170. package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -1
  171. package/dist/server/modules/workspace/affairs-library-service.d.ts +12 -1
  172. package/dist/server/modules/workspace/affairs-library-service.js +294 -96
  173. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  174. package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +8 -0
  175. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +55 -8
  176. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -1
  177. package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +13 -0
  178. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +167 -21
  179. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  180. package/dist/server/modules/workspace/affairs-tag-controller.d.ts +3 -0
  181. package/dist/server/modules/workspace/affairs-tag-controller.js +5 -0
  182. package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -1
  183. package/dist/server/modules/workspace/affairs-tag-service.d.ts +34 -1
  184. package/dist/server/modules/workspace/affairs-tag-service.js +568 -4
  185. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
  186. package/dist/server/modules/workspace/teable-api-client.d.ts +118 -0
  187. package/dist/server/modules/workspace/teable-api-client.js +142 -0
  188. package/dist/server/modules/workspace/teable-api-client.js.map +1 -0
  189. package/dist/server/modules/workspace/teable-catalog-controller.d.ts +18 -0
  190. package/dist/server/modules/workspace/teable-catalog-controller.js +17 -0
  191. package/dist/server/modules/workspace/teable-catalog-controller.js.map +1 -0
  192. package/dist/server/modules/workspace/teable-catalog-service.d.ts +36 -0
  193. package/dist/server/modules/workspace/teable-catalog-service.js +124 -0
  194. package/dist/server/modules/workspace/teable-catalog-service.js.map +1 -0
  195. package/dist/server/modules/workspace/teable-credential-service.d.ts +8 -0
  196. package/dist/server/modules/workspace/teable-credential-service.js +37 -0
  197. package/dist/server/modules/workspace/teable-credential-service.js.map +1 -0
  198. package/dist/server/modules/workspace/teable-field-mapping-controller.d.ts +25 -0
  199. package/dist/server/modules/workspace/teable-field-mapping-controller.js +31 -0
  200. package/dist/server/modules/workspace/teable-field-mapping-controller.js.map +1 -0
  201. package/dist/server/modules/workspace/teable-field-mapping-service.d.ts +38 -0
  202. package/dist/server/modules/workspace/teable-field-mapping-service.js +215 -0
  203. package/dist/server/modules/workspace/teable-field-mapping-service.js.map +1 -0
  204. package/dist/server/modules/workspace/teable-global-binding-controller.d.ts +22 -0
  205. package/dist/server/modules/workspace/teable-global-binding-controller.js +25 -0
  206. package/dist/server/modules/workspace/teable-global-binding-controller.js.map +1 -0
  207. package/dist/server/modules/workspace/teable-global-binding-service.d.ts +35 -0
  208. package/dist/server/modules/workspace/teable-global-binding-service.js +151 -0
  209. package/dist/server/modules/workspace/teable-global-binding-service.js.map +1 -0
  210. package/dist/server/modules/workspace/teable-mirror-sync-controller.d.ts +29 -0
  211. package/dist/server/modules/workspace/teable-mirror-sync-controller.js +50 -0
  212. package/dist/server/modules/workspace/teable-mirror-sync-controller.js.map +1 -0
  213. package/dist/server/modules/workspace/teable-mirror-sync-service.d.ts +157 -0
  214. package/dist/server/modules/workspace/teable-mirror-sync-service.js +917 -0
  215. package/dist/server/modules/workspace/teable-mirror-sync-service.js.map +1 -0
  216. package/dist/server/modules/workspace/teable-runtime-controller.d.ts +58 -0
  217. package/dist/server/modules/workspace/teable-runtime-controller.js +60 -0
  218. package/dist/server/modules/workspace/teable-runtime-controller.js.map +1 -0
  219. package/dist/server/modules/workspace/teable-runtime-service.d.ts +96 -0
  220. package/dist/server/modules/workspace/teable-runtime-service.js +362 -0
  221. package/dist/server/modules/workspace/teable-runtime-service.js.map +1 -0
  222. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.d.ts +22 -0
  223. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js +20 -0
  224. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js.map +1 -0
  225. package/dist/server/modules/workspace/teable-workbench-sync-config-service.d.ts +22 -0
  226. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js +159 -0
  227. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js.map +1 -0
  228. package/dist/server/modules/workspace/workspace-controller.d.ts +1 -1
  229. package/dist/server/modules/workspace/workspace-controller.js +7 -7
  230. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  231. package/dist/server/modules/workspace/workspace-service.d.ts +7 -0
  232. package/dist/server/modules/workspace/workspace-service.js +151 -10
  233. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  234. package/dist/server/routes/affairs.d.ts +9 -1
  235. package/dist/server/routes/affairs.js +120 -1
  236. package/dist/server/routes/affairs.js.map +1 -1
  237. package/dist/server/routes/auth.js +6 -0
  238. package/dist/server/routes/auth.js.map +1 -1
  239. package/dist/server/routes/workbench.js +15 -0
  240. package/dist/server/routes/workbench.js.map +1 -1
  241. package/dist/server/routes/workspaces.js +51 -41
  242. package/dist/server/routes/workspaces.js.map +1 -1
  243. package/dist/server/server/create-server.d.ts +18 -0
  244. package/dist/server/server/create-server.js +99 -7
  245. package/dist/server/server/create-server.js.map +1 -1
  246. package/dist/server/server/start-host.js +20 -0
  247. package/dist/server/server/start-host.js.map +1 -1
  248. package/dist/server/shared/http/request-diagnostics.d.ts +56 -0
  249. package/dist/server/shared/http/request-diagnostics.js +256 -0
  250. package/dist/server/shared/http/request-diagnostics.js.map +1 -0
  251. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
  252. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
  253. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
  254. package/dist/server/storage/repositories/auth-token-repository.d.ts +1 -0
  255. package/dist/server/storage/repositories/auth-token-repository.js +8 -0
  256. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  257. package/dist/server/storage/repositories/auth-user-repository.d.ts +50 -0
  258. package/dist/server/storage/repositories/auth-user-repository.js +198 -27
  259. package/dist/server/storage/repositories/auth-user-repository.js.map +1 -1
  260. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +4 -1
  261. package/dist/server/storage/repositories/butler-control-session-repository.js +55 -8
  262. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
  263. package/dist/server/storage/repositories/butler-profile-repository.d.ts +2 -1
  264. package/dist/server/storage/repositories/butler-profile-repository.js +35 -6
  265. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
  266. package/dist/server/storage/repositories/butler-project-repository.d.ts +2 -0
  267. package/dist/server/storage/repositories/butler-project-repository.js +38 -4
  268. package/dist/server/storage/repositories/butler-project-repository.js.map +1 -1
  269. package/dist/server/storage/repositories/butler-session-repository.d.ts +2 -1
  270. package/dist/server/storage/repositories/butler-session-repository.js +35 -6
  271. package/dist/server/storage/repositories/butler-session-repository.js.map +1 -1
  272. package/dist/server/storage/repositories/session-binding-repository.d.ts +3 -0
  273. package/dist/server/storage/repositories/session-binding-repository.js +70 -2
  274. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  275. package/dist/server/storage/repositories/session-index-repository.js +7 -5
  276. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  277. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +8 -5
  278. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -1
  279. package/dist/server/storage/repositories/user-teable-credential-repository.d.ts +9 -0
  280. package/dist/server/storage/repositories/user-teable-credential-repository.js +45 -0
  281. package/dist/server/storage/repositories/user-teable-credential-repository.js.map +1 -0
  282. package/dist/server/storage/repositories/user-teable-field-mapping-repository.d.ts +10 -0
  283. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js +69 -0
  284. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js.map +1 -0
  285. package/dist/server/storage/repositories/user-teable-global-setting-repository.d.ts +8 -0
  286. package/dist/server/storage/repositories/user-teable-global-setting-repository.js +52 -0
  287. package/dist/server/storage/repositories/user-teable-global-setting-repository.js.map +1 -0
  288. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.d.ts +9 -0
  289. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js +66 -0
  290. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js.map +1 -0
  291. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.d.ts +9 -0
  292. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js +67 -0
  293. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js.map +1 -0
  294. package/dist/server/storage/repositories/user-teable-sync-log-repository.d.ts +14 -0
  295. package/dist/server/storage/repositories/user-teable-sync-log-repository.js +97 -0
  296. package/dist/server/storage/repositories/user-teable-sync-log-repository.js.map +1 -0
  297. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.d.ts +8 -0
  298. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js +55 -0
  299. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js.map +1 -0
  300. package/dist/server/storage/repositories/workspace-repository.d.ts +3 -1
  301. package/dist/server/storage/repositories/workspace-repository.js +24 -10
  302. package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
  303. package/dist/server/storage/sqlite/client.js +692 -1
  304. package/dist/server/storage/sqlite/client.js.map +1 -1
  305. package/dist/server/storage/sqlite/schema.sql +200 -10
  306. package/dist/server/types/domain.d.ts +114 -1
  307. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +34 -7
  308. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +1 -1
  309. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +3 -7
  310. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  311. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +22 -3
  312. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +29 -2
  313. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -1
  314. package/node_modules/@codingns/session-sync-core/package.json +3 -1
  315. package/package.json +1 -1
  316. package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +0 -2
  317. package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +0 -1
  318. package/dist/public/assets/GitSidebar-BdwiDtOr.js +0 -6
  319. package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +0 -1
  320. package/dist/public/assets/SettingsPage-BlAZCHsy.js +0 -2
  321. package/dist/public/assets/TerminalManagerPanel-CjzbiWjl.js +0 -1
  322. package/dist/public/assets/WorkbenchLayout-CikJBS62.js +0 -1019
  323. package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +0 -1
  324. package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +0 -1
  325. package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +0 -1
  326. package/dist/public/assets/WorkspaceDetailPage-DgOSjscR.js +0 -1
  327. package/dist/public/assets/WorkspaceHomePage-HPa7M_Vh.js +0 -1
  328. package/dist/public/assets/index-BxJPQpFM.css +0 -1
  329. package/dist/public/assets/index-CeXGOT_T.js +0 -50
  330. package/dist/public/assets/useRegisteredDebugTemplates-Bol3NVfN.js +0 -1
  331. package/dist/public/assets/workbench-navigation-B7IjRQd8.js +0 -1
@@ -156,7 +156,7 @@ export declare class SessionHistoryService {
156
156
  listWorkspaceSessions(workspaceId: string, userId: string): SessionListItem[];
157
157
  getProviderCapabilitiesSnapshot(provider: string): ProviderCapabilities;
158
158
  getProviderCapabilities(provider: string, workspaceId?: string | null): Promise<ProviderCapabilities>;
159
- getSessionCapabilities(sessionId: string): Promise<ProviderCapabilities>;
159
+ getSessionCapabilities(sessionId: string, userId: string): Promise<ProviderCapabilities>;
160
160
  private enrichProviderCapabilities;
161
161
  private resolveProviderCapabilitiesImmediate;
162
162
  private scheduleProviderCapabilityRefresh;
@@ -167,7 +167,7 @@ export declare class SessionHistoryService {
167
167
  private assertProviderCapabilityEnabled;
168
168
  private assertProviderSendEnabled;
169
169
  getSessionContextUsage(sessionId: string): Promise<ContextUsageSnapshot | null>;
170
- resumeSession(sessionId: string): Promise<{
170
+ resumeSession(sessionId: string, userId: string): Promise<{
171
171
  sessionId: string;
172
172
  provider: string;
173
173
  providerSessionId: string;
@@ -182,7 +182,7 @@ export declare class SessionHistoryService {
182
182
  private readForkSourceMessages;
183
183
  private assertForkDepthWithinLimit;
184
184
  private getSessionForkDepth;
185
- sendMessage(sessionId: string, content: string, clientRequestId: string | null, permissionMode?: string | null): Promise<SendMessageResult & {
185
+ sendMessage(sessionId: string, userId: string, content: string, clientRequestId: string | null, permissionMode?: string | null): Promise<SendMessageResult & {
186
186
  sessionId: string;
187
187
  }>;
188
188
  subscribeSession(sessionId: string, cursor: string | null, limit: number, onEnvelope: (envelope: SessionHistoryEnvelope) => Promise<void> | void, userId?: string | null): Promise<ProviderSubscription>;
@@ -198,6 +198,7 @@ export declare class SessionHistoryService {
198
198
  provider: string;
199
199
  providerSessionId: string | null;
200
200
  rawStoreRef: string | null;
201
+ userId?: string | null;
201
202
  }): void;
202
203
  private runDiscoverWorkspaceSessions;
203
204
  private readPage;
@@ -220,6 +221,9 @@ export declare class SessionHistoryService {
220
221
  private ensureSessionChangedFilesIndexed;
221
222
  private persistSessionChangedFiles;
222
223
  private getWorkspaceOrThrow;
224
+ private getWorkspaceForUserOrThrow;
225
+ private getBindingForUserOrThrow;
226
+ private resolveWorkspaceOwnerUserId;
223
227
  private getSessionListItemOrThrow;
224
228
  private findSessionListItem;
225
229
  private repairMissingSessionListItem;
@@ -250,6 +254,7 @@ export declare class SessionHistoryService {
250
254
  private refreshSessionState;
251
255
  private inspectGeminiHistoryActivity;
252
256
  private repairCodexDirtyBindingBeforeHistoryRead;
257
+ private repairClaudeEmptyBindingBeforeHistoryRead;
253
258
  private resolveLiveActivityObservation;
254
259
  private upsertSnapshot;
255
260
  private markSessionError;
@@ -1,4 +1,5 @@
1
- import { existsSync, readFileSync, statSync } from "node:fs";
1
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
2
3
  import { CapabilityService, ClaudeCodeAdapter, CodexAdapter, GeminiAdapter, KimiAdapter, LegnaCodeAdapter, OpenCodeAdapter, ProviderRegistry, SessionSyncService } from "@codingns/session-sync-core";
3
4
  import { AppError } from "../../shared/errors/app-error.js";
4
5
  import { hashContent } from "../../shared/utils/hash.js";
@@ -314,6 +315,7 @@ export class SessionHistoryService {
314
315
  binding = await this.repairCodexDirtyBindingBeforeHistoryRead(resolvedSessionId, userId, binding);
315
316
  repairBindingMs = Date.now() - repairStartedAt;
316
317
  }
318
+ binding = this.repairClaudeEmptyBindingBeforeHistoryRead(resolvedSessionId, binding);
317
319
  const current = this.sessionStatusSnapshotRepository.findBySessionId(resolvedSessionId);
318
320
  const safeLimit = clampLimit(limit);
319
321
  const knownTotalLookupStartedAt = Date.now();
@@ -495,8 +497,8 @@ export class SessionHistoryService {
495
497
  throw mapSessionProviderError(error);
496
498
  }
497
499
  }
498
- async getSessionCapabilities(sessionId) {
499
- const binding = this.getBindingOrThrow(sessionId);
500
+ async getSessionCapabilities(sessionId, userId) {
501
+ const binding = this.getBindingForUserOrThrow(sessionId, userId);
500
502
  const workspace = this.getWorkspaceOrThrow(binding.workspaceId);
501
503
  const workspacePath = workspace.path;
502
504
  return this.capabilityService
@@ -632,8 +634,8 @@ export class SessionHistoryService {
632
634
  throw mapSessionProviderError(error);
633
635
  }
634
636
  }
635
- async resumeSession(sessionId) {
636
- const binding = this.getBindingOrThrow(sessionId);
637
+ async resumeSession(sessionId, userId) {
638
+ const binding = this.getBindingForUserOrThrow(sessionId, userId);
637
639
  this.assertProviderCapabilityEnabled(binding.provider, "canResumeSession", "当前 provider 不支持继续会话");
638
640
  try {
639
641
  const result = await this.sessionSyncService.resumeSession(binding.provider, binding.providerSessionId, binding.rawStoreRef);
@@ -670,7 +672,7 @@ export class SessionHistoryService {
670
672
  return this.startSessionDirect(input);
671
673
  }
672
674
  async startSessionDirect(input) {
673
- const workspace = this.getWorkspaceOrThrow(input.workspaceId);
675
+ const workspace = this.getWorkspaceForUserOrThrow(input.workspaceId, input.userId);
674
676
  this.assertProviderCapabilityEnabled(input.provider, "canStartSession", "当前 provider 不支持创建会话");
675
677
  const sessionId = createId();
676
678
  const providerBinding = this.prepareDirectSessionBinding({
@@ -687,6 +689,7 @@ export class SessionHistoryService {
687
689
  const persist = this.db.transaction(() => {
688
690
  this.sessionBindingRepository.upsert({
689
691
  sessionId,
692
+ userId: input.userId,
690
693
  workspaceId: workspace.id,
691
694
  provider: result.session.provider,
692
695
  providerSessionId: result.session.providerSessionId,
@@ -745,9 +748,9 @@ export class SessionHistoryService {
745
748
  }
746
749
  }
747
750
  async forkSession(input) {
748
- const binding = this.getBindingOrThrow(input.sessionId);
751
+ const binding = this.getBindingForUserOrThrow(input.sessionId, input.userId);
749
752
  const targetWorkspaceId = input.targetWorkspaceId?.trim() || binding.workspaceId;
750
- const workspace = this.getWorkspaceOrThrow(targetWorkspaceId);
753
+ const workspace = this.getWorkspaceForUserOrThrow(targetWorkspaceId, input.userId);
751
754
  const targetProvider = input.targetProvider?.trim() || binding.provider;
752
755
  this.assertProviderCapabilityEnabled(targetProvider, "canStartSession", "当前 provider 不支持 fork 创建会话");
753
756
  const sourceMessageId = input.sourceType === "message"
@@ -789,6 +792,7 @@ export class SessionHistoryService {
789
792
  this.db.transaction(() => {
790
793
  this.sessionBindingRepository.upsert({
791
794
  sessionId,
795
+ userId: input.userId,
792
796
  workspaceId: workspace.id,
793
797
  provider: result.session.provider,
794
798
  providerSessionId: result.session.providerSessionId,
@@ -1037,8 +1041,8 @@ export class SessionHistoryService {
1037
1041
  }
1038
1042
  return depth;
1039
1043
  }
1040
- async sendMessage(sessionId, content, clientRequestId, permissionMode = null) {
1041
- const binding = this.getBindingOrThrow(sessionId);
1044
+ async sendMessage(sessionId, userId, content, clientRequestId, permissionMode = null) {
1045
+ const binding = this.getBindingForUserOrThrow(sessionId, userId);
1042
1046
  this.assertProviderSendEnabled(binding.provider, "sessionId", "当前 provider 不支持继续发送消息");
1043
1047
  const result = await this.sessionSyncService
1044
1048
  .sendMessage(binding.provider, binding.providerSessionId, binding.rawStoreRef, content, clientRequestId, permissionMode)
@@ -1235,6 +1239,7 @@ export class SessionHistoryService {
1235
1239
  });
1236
1240
  this.sessionBindingRepository.upsert({
1237
1241
  ...binding,
1242
+ userId: input.userId,
1238
1243
  rawStoreRef: result.rawStoreRef,
1239
1244
  updatedAt: timestamp
1240
1245
  });
@@ -1365,6 +1370,10 @@ export class SessionHistoryService {
1365
1370
  const currentIndex = this.sessionIndexRepository.findIndexRecordBySessionId(sessionId);
1366
1371
  this.sessionBindingRepository.upsert({
1367
1372
  sessionId,
1373
+ userId: snapshot.userId
1374
+ ?? currentBinding?.userId
1375
+ ?? duplicateBinding?.userId
1376
+ ?? this.resolveWorkspaceOwnerUserId(workspaceId),
1368
1377
  workspaceId,
1369
1378
  provider: resolvedSnapshot.provider,
1370
1379
  providerSessionId: resolvedSnapshot.providerSessionId,
@@ -1402,7 +1411,7 @@ export class SessionHistoryService {
1402
1411
  async runDiscoverWorkspaceSessions(workspaceId, userId, refreshStateMode = "inline", signal) {
1403
1412
  const startedAt = Date.now();
1404
1413
  const debugStartedAtMs = terminalDebugNowMs();
1405
- const workspace = this.getWorkspaceOrThrow(workspaceId);
1414
+ const workspace = this.getWorkspaceForUserOrThrow(workspaceId, userId);
1406
1415
  let discoverDurationMs = 0;
1407
1416
  let persistDurationMs = 0;
1408
1417
  let persistPass1DurationMs = 0;
@@ -1470,6 +1479,7 @@ export class SessionHistoryService {
1470
1479
  : null;
1471
1480
  const nextBinding = {
1472
1481
  sessionId,
1482
+ userId,
1473
1483
  workspaceId: workspace.id,
1474
1484
  provider: session.provider,
1475
1485
  providerSessionId: session.providerSessionId,
@@ -2241,6 +2251,31 @@ export class SessionHistoryService {
2241
2251
  }
2242
2252
  return workspace;
2243
2253
  }
2254
+ getWorkspaceForUserOrThrow(workspaceId, userId) {
2255
+ const workspace = this.getWorkspaceOrThrow(workspaceId);
2256
+ if (workspace.ownerUserId !== userId) {
2257
+ throw new AppError({
2258
+ statusCode: 404,
2259
+ errorCode: "WORKSPACE_NOT_FOUND",
2260
+ detail: "工作区不存在"
2261
+ });
2262
+ }
2263
+ return workspace;
2264
+ }
2265
+ getBindingForUserOrThrow(sessionId, userId) {
2266
+ const binding = this.sessionBindingRepository.findBySessionIdForUser(sessionId, userId);
2267
+ if (!binding) {
2268
+ throw new AppError({
2269
+ statusCode: 404,
2270
+ errorCode: "SESSION_NOT_FOUND",
2271
+ detail: "session 不存在"
2272
+ });
2273
+ }
2274
+ return this.resolvePendingSessionAliasBinding(binding) ?? binding;
2275
+ }
2276
+ resolveWorkspaceOwnerUserId(workspaceId) {
2277
+ return this.workspaceRepository.findById(workspaceId)?.ownerUserId ?? null;
2278
+ }
2244
2279
  getSessionListItemOrThrow(sessionId, userId) {
2245
2280
  const canonicalSessionId = this.resolveCanonicalSessionId(sessionId, userId);
2246
2281
  const item = this.findSessionListItem(canonicalSessionId, sessionId, userId)
@@ -2614,6 +2649,7 @@ export class SessionHistoryService {
2614
2649
  if (!targetBinding) {
2615
2650
  this.sessionBindingRepository.upsert({
2616
2651
  sessionId: input.targetSessionId,
2652
+ userId: sourceBinding.userId ?? this.resolveWorkspaceOwnerUserId(input.workspaceId),
2617
2653
  workspaceId: input.workspaceId,
2618
2654
  provider: input.provider,
2619
2655
  providerSessionId: buildPendingBindingValue(input.provider, input.targetSessionId),
@@ -2698,6 +2734,7 @@ export class SessionHistoryService {
2698
2734
  // 保留旧 session_id 作为 alias,避免前端或 Butler 还拿着旧 id 时直接炸成 SESSION_NOT_FOUND。
2699
2735
  this.sessionBindingRepository.upsert({
2700
2736
  sessionId: input.sourceSessionId,
2737
+ userId: sourceBinding.userId ?? this.resolveWorkspaceOwnerUserId(sourceBinding.workspaceId),
2701
2738
  workspaceId: sourceBinding.workspaceId,
2702
2739
  provider: sourceBinding.provider,
2703
2740
  providerSessionId: buildAliasBindingValue(input.provider, input.targetSessionId, input.sourceSessionId),
@@ -3101,6 +3138,21 @@ export class SessionHistoryService {
3101
3138
  this.codexDirtyBindingRepairStates.set(sessionId, currentState);
3102
3139
  });
3103
3140
  }
3141
+ repairClaudeEmptyBindingBeforeHistoryRead(sessionId, binding) {
3142
+ if (!shouldRepairClaudeEmptyHistoryBinding(binding)) {
3143
+ return binding;
3144
+ }
3145
+ const repairedRawStoreRef = findBestClaudeHistoryFileNearBinding(binding);
3146
+ if (!repairedRawStoreRef || repairedRawStoreRef === binding.rawStoreRef) {
3147
+ return binding;
3148
+ }
3149
+ this.persistSessionBinding(sessionId, binding.workspaceId, {
3150
+ provider: binding.provider,
3151
+ providerSessionId: binding.providerSessionId,
3152
+ rawStoreRef: repairedRawStoreRef
3153
+ });
3154
+ return this.getBindingOrThrow(sessionId);
3155
+ }
3104
3156
  resolveLiveActivityObservation(sessionId) {
3105
3157
  for (const resolver of this.liveActivityObservationResolvers) {
3106
3158
  const observation = resolver(sessionId);
@@ -3596,6 +3648,69 @@ function shouldSkipClaudePendingBinding(binding) {
3596
3648
  function isPendingBindingValue(value) {
3597
3649
  return value.trim().toLowerCase().startsWith("pending://");
3598
3650
  }
3651
+ function shouldRepairClaudeEmptyHistoryBinding(binding) {
3652
+ if (binding.provider !== "claude-code") {
3653
+ return false;
3654
+ }
3655
+ if (isPendingBindingValue(binding.providerSessionId) || isPendingBindingValue(binding.rawStoreRef)) {
3656
+ return false;
3657
+ }
3658
+ const currentStats = safeStat(binding.rawStoreRef);
3659
+ return !currentStats || currentStats.size === 0;
3660
+ }
3661
+ function findBestClaudeHistoryFileNearBinding(binding) {
3662
+ const providerSessionId = binding.providerSessionId.trim();
3663
+ if (!providerSessionId || isPendingBindingValue(providerSessionId)) {
3664
+ return null;
3665
+ }
3666
+ const candidates = new Set();
3667
+ for (const projectsRoot of collectClaudeProjectsRootsNearBinding(binding)) {
3668
+ for (const candidate of listClaudeSessionCandidates(projectsRoot, providerSessionId)) {
3669
+ candidates.add(candidate);
3670
+ }
3671
+ }
3672
+ const nonEmptyCandidates = Array.from(candidates)
3673
+ .map((filePath) => ({
3674
+ filePath,
3675
+ stats: safeStat(filePath)
3676
+ }))
3677
+ .filter((candidate) => Boolean(candidate.stats && candidate.stats.size > 0))
3678
+ .sort((left, right) => {
3679
+ if (right.stats.size !== left.stats.size) {
3680
+ return right.stats.size - left.stats.size;
3681
+ }
3682
+ return right.stats.mtimeMs - left.stats.mtimeMs;
3683
+ });
3684
+ return nonEmptyCandidates[0]?.filePath ?? null;
3685
+ }
3686
+ function collectClaudeProjectsRootsNearBinding(binding) {
3687
+ const roots = new Set();
3688
+ const rawStoreRef = binding.rawStoreRef.trim();
3689
+ if (rawStoreRef && !isPendingBindingValue(rawStoreRef)) {
3690
+ // rawStoreRef 通常是 <home>/projects/<workspace-slug>/<session>.jsonl。
3691
+ // 即使 <workspace-slug> 算错了,向上两级仍然能拿到正确的 projects 根。
3692
+ roots.add(dirname(dirname(rawStoreRef)));
3693
+ }
3694
+ const runtimeHomeDir = binding.runtimeHomeDir?.trim() ?? "";
3695
+ if (runtimeHomeDir) {
3696
+ roots.add(join(runtimeHomeDir, "projects"));
3697
+ }
3698
+ return Array.from(roots);
3699
+ }
3700
+ function listClaudeSessionCandidates(projectsRoot, providerSessionId) {
3701
+ if (!projectsRoot || !existsSync(projectsRoot)) {
3702
+ return [];
3703
+ }
3704
+ try {
3705
+ return readdirSync(projectsRoot, { withFileTypes: true })
3706
+ .filter((entry) => entry.isDirectory())
3707
+ .map((entry) => join(projectsRoot, entry.name, `${providerSessionId}.jsonl`))
3708
+ .filter((filePath) => existsSync(filePath));
3709
+ }
3710
+ catch {
3711
+ return [];
3712
+ }
3713
+ }
3599
3714
  function isSessionBindingProviderUniqueConflict(error) {
3600
3715
  if (!(error instanceof Error)) {
3601
3716
  return false;