@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
@@ -0,0 +1,69 @@
1
+ export class UserTeableFieldMappingRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ listByUserId(userId) {
7
+ return this.db
8
+ .prepare(`SELECT mapping_id, user_id, config_id, source_type, target_table_id, items_json, created_at, updated_at
9
+ FROM user_teable_field_mappings
10
+ WHERE user_id = ?
11
+ ORDER BY CASE source_type
12
+ WHEN 'tags' THEN 1
13
+ WHEN 'sessions' THEN 2
14
+ WHEN 'todos' THEN 3
15
+ ELSE 99
16
+ END ASC, datetime(updated_at) DESC`)
17
+ .all(userId)
18
+ .map((row) => mapRow(row));
19
+ }
20
+ findByUserIdAndConfigId(userId, configId) {
21
+ const row = this.db
22
+ .prepare(`SELECT mapping_id, user_id, config_id, source_type, target_table_id, items_json, created_at, updated_at
23
+ FROM user_teable_field_mappings
24
+ WHERE user_id = ? AND config_id = ?
25
+ LIMIT 1`)
26
+ .get(userId, configId);
27
+ return row ? mapRow(row) : null;
28
+ }
29
+ upsert(record) {
30
+ this.db
31
+ .prepare(`INSERT INTO user_teable_field_mappings (
32
+ mapping_id,
33
+ user_id,
34
+ config_id,
35
+ source_type,
36
+ target_table_id,
37
+ items_json,
38
+ created_at,
39
+ updated_at
40
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
41
+ ON CONFLICT(user_id, config_id) DO UPDATE SET
42
+ mapping_id = excluded.mapping_id,
43
+ source_type = excluded.source_type,
44
+ target_table_id = excluded.target_table_id,
45
+ items_json = excluded.items_json,
46
+ updated_at = excluded.updated_at`)
47
+ .run(record.mappingId, record.userId, record.configId, record.sourceType, record.targetTableId, record.itemsJson, record.createdAt, record.updatedAt);
48
+ return record;
49
+ }
50
+ delete(userId, configId) {
51
+ this.db
52
+ .prepare(`DELETE FROM user_teable_field_mappings
53
+ WHERE user_id = ? AND config_id = ?`)
54
+ .run(userId, configId);
55
+ }
56
+ }
57
+ function mapRow(row) {
58
+ return {
59
+ mappingId: row.mapping_id,
60
+ userId: row.user_id,
61
+ configId: row.config_id,
62
+ sourceType: row.source_type,
63
+ targetTableId: row.target_table_id,
64
+ itemsJson: row.items_json,
65
+ createdAt: row.created_at,
66
+ updatedAt: row.updated_at
67
+ };
68
+ }
69
+ //# sourceMappingURL=user-teable-field-mapping-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-field-mapping-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-field-mapping-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gCAAgC;IACd;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;4CAQoC,CACrC;aACA,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAgC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,QAAgB;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;iBAGS,CACV;aACA,GAAG,CAAC,MAAM,EAAE,QAAQ,CAA0C,CAAC;QAElE,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAAoC;QACzC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;2CAemC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,QAAgB;QACrC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;6CACqC,CACtC;aACA,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3B,CAAC;CACF;AAaD,SAAS,MAAM,CAAC,GAA8B;IAC5C,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { UserTeableGlobalSettingRecord } from "../../types/domain.js";
3
+ export declare class UserTeableGlobalSettingRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ findByUserId(userId: string): UserTeableGlobalSettingRecord | null;
7
+ upsert(record: UserTeableGlobalSettingRecord): UserTeableGlobalSettingRecord;
8
+ }
@@ -0,0 +1,52 @@
1
+ export class UserTeableGlobalSettingRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ findByUserId(userId) {
7
+ const row = this.db
8
+ .prepare(`SELECT user_id, base_url, space_id, base_id, auth_ref, enabled, mirror_mode, created_at, updated_at
9
+ FROM user_teable_global_settings
10
+ WHERE user_id = ?`)
11
+ .get(userId);
12
+ return row ? mapUserTeableGlobalSettingRow(row) : null;
13
+ }
14
+ upsert(record) {
15
+ this.db
16
+ .prepare(`INSERT INTO user_teable_global_settings (
17
+ user_id,
18
+ base_url,
19
+ space_id,
20
+ base_id,
21
+ auth_ref,
22
+ enabled,
23
+ mirror_mode,
24
+ created_at,
25
+ updated_at
26
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
27
+ ON CONFLICT(user_id) DO UPDATE SET
28
+ base_url = excluded.base_url,
29
+ space_id = excluded.space_id,
30
+ base_id = excluded.base_id,
31
+ auth_ref = excluded.auth_ref,
32
+ enabled = excluded.enabled,
33
+ mirror_mode = excluded.mirror_mode,
34
+ updated_at = excluded.updated_at`)
35
+ .run(record.userId, record.baseUrl, record.spaceId, record.baseId, record.authRef, record.enabled ? 1 : 0, record.mirrorMode, record.createdAt, record.updatedAt);
36
+ return record;
37
+ }
38
+ }
39
+ function mapUserTeableGlobalSettingRow(row) {
40
+ return {
41
+ userId: row.user_id,
42
+ baseUrl: row.base_url,
43
+ spaceId: row.space_id,
44
+ baseId: row.base_id,
45
+ authRef: row.auth_ref,
46
+ enabled: row.enabled === 1,
47
+ mirrorMode: row.mirror_mode,
48
+ createdAt: row.created_at,
49
+ updatedAt: row.updated_at
50
+ };
51
+ }
52
+ //# sourceMappingURL=user-teable-global-setting-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-global-setting-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-global-setting-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iCAAiC;IACf;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,YAAY,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;2BAEmB,CACpB;aACA,GAAG,CAAC,MAAM,CAA2C,CAAC;QAEzD,OAAO,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,MAAqC;QAC1C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;;2CAkBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAcD,SAAS,6BAA6B,CAAC,GAA+B;IACpE,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { TeableSyncSourceType, UserTeableMirrorRecordMappingRecord } from "../../types/domain.js";
3
+ export declare class UserTeableMirrorRecordMappingRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ listByUserIdAndMirrorType(userId: string, mirrorType: TeableSyncSourceType): UserTeableMirrorRecordMappingRecord[];
7
+ findByUserIdAndMirrorTypeAndLocalId(userId: string, mirrorType: TeableSyncSourceType, localId: string): UserTeableMirrorRecordMappingRecord | null;
8
+ upsert(record: UserTeableMirrorRecordMappingRecord): UserTeableMirrorRecordMappingRecord;
9
+ }
@@ -0,0 +1,66 @@
1
+ export class UserTeableMirrorRecordMappingRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ listByUserIdAndMirrorType(userId, mirrorType) {
7
+ return this.db
8
+ .prepare(`SELECT mapping_id, user_id, mirror_type, local_id, teable_record_id, fingerprint, last_synced_at, deleted_at, created_at, updated_at
9
+ FROM user_teable_mirror_record_mappings
10
+ WHERE user_id = ?
11
+ AND mirror_type = ?
12
+ ORDER BY datetime(updated_at) DESC, local_id ASC`)
13
+ .all(userId, mirrorType)
14
+ .map((row) => mapMappingRow(row));
15
+ }
16
+ findByUserIdAndMirrorTypeAndLocalId(userId, mirrorType, localId) {
17
+ const row = this.db
18
+ .prepare(`SELECT mapping_id, user_id, mirror_type, local_id, teable_record_id, fingerprint, last_synced_at, deleted_at, created_at, updated_at
19
+ FROM user_teable_mirror_record_mappings
20
+ WHERE user_id = ?
21
+ AND mirror_type = ?
22
+ AND local_id = ?
23
+ LIMIT 1`)
24
+ .get(userId, mirrorType, localId);
25
+ return row ? mapMappingRow(row) : null;
26
+ }
27
+ upsert(record) {
28
+ this.db
29
+ .prepare(`INSERT INTO user_teable_mirror_record_mappings (
30
+ mapping_id,
31
+ user_id,
32
+ mirror_type,
33
+ local_id,
34
+ teable_record_id,
35
+ fingerprint,
36
+ last_synced_at,
37
+ deleted_at,
38
+ created_at,
39
+ updated_at
40
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
41
+ ON CONFLICT(user_id, mirror_type, local_id) DO UPDATE SET
42
+ mapping_id = excluded.mapping_id,
43
+ teable_record_id = excluded.teable_record_id,
44
+ fingerprint = excluded.fingerprint,
45
+ last_synced_at = excluded.last_synced_at,
46
+ deleted_at = excluded.deleted_at,
47
+ updated_at = excluded.updated_at`)
48
+ .run(record.mappingId, record.userId, record.mirrorType, record.localId, record.teableRecordId, record.fingerprint, record.lastSyncedAt, record.deletedAt, record.createdAt, record.updatedAt);
49
+ return record;
50
+ }
51
+ }
52
+ function mapMappingRow(row) {
53
+ return {
54
+ mappingId: row.mapping_id,
55
+ userId: row.user_id,
56
+ mirrorType: row.mirror_type,
57
+ localId: row.local_id,
58
+ teableRecordId: row.teable_record_id,
59
+ fingerprint: row.fingerprint,
60
+ lastSyncedAt: row.last_synced_at,
61
+ deletedAt: row.deleted_at,
62
+ createdAt: row.created_at,
63
+ updatedAt: row.updated_at
64
+ };
65
+ }
66
+ //# sourceMappingURL=user-teable-mirror-record-mapping-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-mirror-record-mapping-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-mirror-record-mapping-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,uCAAuC;IACrB;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,yBAAyB,CAAC,MAAc,EAAE,UAAgC;QACxE,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;0DAIkD,CACnD;aACA,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;aACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAuC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,mCAAmC,CACjC,MAAc,EACd,UAAgC,EAChC,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;iBAKS,CACV;aACA,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAiD,CAAC;QAEpF,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,MAA2C;QAChD,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;;2CAkBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAeD,SAAS,aAAa,CAAC,GAAqC;IAC1D,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { UserTeableMirrorTableBindingRecord } from "../../types/domain.js";
3
+ export declare class UserTeableMirrorTableBindingRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ listByUserId(userId: string): UserTeableMirrorTableBindingRecord[];
7
+ findByUserIdAndMirrorType(userId: string, mirrorType: UserTeableMirrorTableBindingRecord["mirrorType"]): UserTeableMirrorTableBindingRecord | null;
8
+ upsert(record: UserTeableMirrorTableBindingRecord): UserTeableMirrorTableBindingRecord;
9
+ }
@@ -0,0 +1,67 @@
1
+ export class UserTeableMirrorTableBindingRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ listByUserId(userId) {
7
+ return this.db
8
+ .prepare(`SELECT binding_id, user_id, mirror_type, table_id, table_name, read_only_mode, last_synced_at, created_at, updated_at
9
+ FROM user_teable_mirror_table_bindings
10
+ WHERE user_id = ?
11
+ ORDER BY CASE mirror_type
12
+ WHEN 'tags' THEN 1
13
+ WHEN 'sessions' THEN 2
14
+ WHEN 'todos' THEN 3
15
+ ELSE 99
16
+ END ASC`)
17
+ .all(userId)
18
+ .map((row) => mapRow(row));
19
+ }
20
+ findByUserIdAndMirrorType(userId, mirrorType) {
21
+ const row = this.db
22
+ .prepare(`SELECT binding_id, user_id, mirror_type, table_id, table_name, read_only_mode, last_synced_at, created_at, updated_at
23
+ FROM user_teable_mirror_table_bindings
24
+ WHERE user_id = ?
25
+ AND mirror_type = ?
26
+ LIMIT 1`)
27
+ .get(userId, mirrorType);
28
+ return row ? mapRow(row) : null;
29
+ }
30
+ upsert(record) {
31
+ this.db
32
+ .prepare(`INSERT INTO user_teable_mirror_table_bindings (
33
+ binding_id,
34
+ user_id,
35
+ mirror_type,
36
+ table_id,
37
+ table_name,
38
+ read_only_mode,
39
+ last_synced_at,
40
+ created_at,
41
+ updated_at
42
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
43
+ ON CONFLICT(user_id, mirror_type) DO UPDATE SET
44
+ binding_id = excluded.binding_id,
45
+ table_id = excluded.table_id,
46
+ table_name = excluded.table_name,
47
+ read_only_mode = excluded.read_only_mode,
48
+ last_synced_at = excluded.last_synced_at,
49
+ updated_at = excluded.updated_at`)
50
+ .run(record.bindingId, record.userId, record.mirrorType, record.tableId, record.tableName, record.readOnlyMode, record.lastSyncedAt, record.createdAt, record.updatedAt);
51
+ return record;
52
+ }
53
+ }
54
+ function mapRow(row) {
55
+ return {
56
+ bindingId: row.binding_id,
57
+ userId: row.user_id,
58
+ mirrorType: row.mirror_type,
59
+ tableId: row.table_id,
60
+ tableName: row.table_name,
61
+ readOnlyMode: row.read_only_mode,
62
+ lastSyncedAt: row.last_synced_at,
63
+ createdAt: row.created_at,
64
+ updatedAt: row.updated_at
65
+ };
66
+ }
67
+ //# sourceMappingURL=user-teable-mirror-table-binding-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-mirror-table-binding-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-mirror-table-binding-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,sCAAsC;IACpB;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;iBAQS,CACV;aACA,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAsC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,yBAAyB,CAAC,MAAc,EAAE,UAA4D;QACpG,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;iBAIS,CACV;aACA,GAAG,CAAC,MAAM,EAAE,UAAU,CAAgD,CAAC;QAE1E,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAA0C;QAC/C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;2CAiBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAcD,SAAS,MAAM,CAAC,GAAoC;IAClD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { TeableSyncLogState, TeableSyncLogTriggerType, UserTeableSyncLogRecord } from "../../types/domain.js";
3
+ export declare class UserTeableSyncLogRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ listByUserId(userId: string, input?: {
7
+ limit?: number;
8
+ triggerType?: TeableSyncLogTriggerType;
9
+ state?: TeableSyncLogState;
10
+ }): UserTeableSyncLogRecord[];
11
+ create(record: UserTeableSyncLogRecord): UserTeableSyncLogRecord;
12
+ update(record: UserTeableSyncLogRecord): UserTeableSyncLogRecord;
13
+ findById(userId: string, logId: string): UserTeableSyncLogRecord | null;
14
+ }
@@ -0,0 +1,97 @@
1
+ export class UserTeableSyncLogRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ listByUserId(userId, input = {}) {
7
+ const where = ["user_id = ?"];
8
+ const values = [userId];
9
+ if (input.triggerType) {
10
+ where.push("trigger_type = ?");
11
+ values.push(input.triggerType);
12
+ }
13
+ if (input.state) {
14
+ where.push("state = ?");
15
+ values.push(input.state);
16
+ }
17
+ const limit = Math.min(Math.max(input.limit ?? 50, 1), 200);
18
+ values.push(limit);
19
+ return this.db
20
+ .prepare(`SELECT log_id, user_id, trigger_type, source_types_json, task_id, state, summary, counts_json,
21
+ error_detail, reason, started_at, finished_at, created_at, updated_at
22
+ FROM user_teable_sync_logs
23
+ WHERE ${where.join(" AND ")}
24
+ ORDER BY datetime(created_at) DESC, log_id DESC
25
+ LIMIT ?`)
26
+ .all(...values)
27
+ .map((row) => mapRow(row));
28
+ }
29
+ create(record) {
30
+ this.db
31
+ .prepare(`INSERT INTO user_teable_sync_logs (
32
+ log_id,
33
+ user_id,
34
+ trigger_type,
35
+ source_types_json,
36
+ task_id,
37
+ state,
38
+ summary,
39
+ counts_json,
40
+ error_detail,
41
+ reason,
42
+ started_at,
43
+ finished_at,
44
+ created_at,
45
+ updated_at
46
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
47
+ .run(record.logId, record.userId, record.triggerType, record.sourceTypesJson, record.taskId, record.state, record.summary, record.countsJson, record.errorDetail, record.reason, record.startedAt, record.finishedAt, record.createdAt, record.updatedAt);
48
+ return record;
49
+ }
50
+ update(record) {
51
+ this.db
52
+ .prepare(`UPDATE user_teable_sync_logs
53
+ SET task_id = ?,
54
+ state = ?,
55
+ summary = ?,
56
+ counts_json = ?,
57
+ error_detail = ?,
58
+ reason = ?,
59
+ started_at = ?,
60
+ finished_at = ?,
61
+ updated_at = ?
62
+ WHERE log_id = ?
63
+ AND user_id = ?`)
64
+ .run(record.taskId, record.state, record.summary, record.countsJson, record.errorDetail, record.reason, record.startedAt, record.finishedAt, record.updatedAt, record.logId, record.userId);
65
+ return record;
66
+ }
67
+ findById(userId, logId) {
68
+ const row = this.db
69
+ .prepare(`SELECT log_id, user_id, trigger_type, source_types_json, task_id, state, summary, counts_json,
70
+ error_detail, reason, started_at, finished_at, created_at, updated_at
71
+ FROM user_teable_sync_logs
72
+ WHERE user_id = ?
73
+ AND log_id = ?
74
+ LIMIT 1`)
75
+ .get(userId, logId);
76
+ return row ? mapRow(row) : null;
77
+ }
78
+ }
79
+ function mapRow(row) {
80
+ return {
81
+ logId: row.log_id,
82
+ userId: row.user_id,
83
+ triggerType: row.trigger_type,
84
+ sourceTypesJson: row.source_types_json,
85
+ taskId: row.task_id,
86
+ state: row.state,
87
+ summary: row.summary,
88
+ countsJson: row.counts_json,
89
+ errorDetail: row.error_detail,
90
+ reason: row.reason,
91
+ startedAt: row.started_at,
92
+ finishedAt: row.finished_at,
93
+ createdAt: row.created_at,
94
+ updatedAt: row.updated_at
95
+ };
96
+ }
97
+ //# sourceMappingURL=user-teable-sync-log-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-sync-log-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-sync-log-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { UserTeableWorkbenchSyncConfigRecord } from "../../types/domain.js";
3
+ export declare class UserTeableWorkbenchSyncConfigRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ listByUserId(userId: string): UserTeableWorkbenchSyncConfigRecord[];
7
+ replaceAllForUser(userId: string, records: UserTeableWorkbenchSyncConfigRecord[]): UserTeableWorkbenchSyncConfigRecord[];
8
+ }
@@ -0,0 +1,55 @@
1
+ export class UserTeableWorkbenchSyncConfigRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ listByUserId(userId) {
7
+ return this.db
8
+ .prepare(`SELECT config_id, user_id, source_type, enabled, scope_json, target_table_id, created_at, updated_at
9
+ FROM user_teable_workbench_sync_configs
10
+ WHERE user_id = ?
11
+ ORDER BY CASE source_type
12
+ WHEN 'tags' THEN 1
13
+ WHEN 'sessions' THEN 2
14
+ WHEN 'todos' THEN 3
15
+ ELSE 99
16
+ END ASC`)
17
+ .all(userId)
18
+ .map((row) => mapRow(row));
19
+ }
20
+ replaceAllForUser(userId, records) {
21
+ const deleteStatement = this.db.prepare(`DELETE FROM user_teable_workbench_sync_configs
22
+ WHERE user_id = ?`);
23
+ const insertStatement = this.db.prepare(`INSERT INTO user_teable_workbench_sync_configs (
24
+ config_id,
25
+ user_id,
26
+ source_type,
27
+ enabled,
28
+ scope_json,
29
+ target_table_id,
30
+ created_at,
31
+ updated_at
32
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`);
33
+ const transaction = this.db.transaction((nextUserId, nextRecords) => {
34
+ deleteStatement.run(nextUserId);
35
+ for (const record of nextRecords) {
36
+ insertStatement.run(record.configId, record.userId, record.sourceType, record.enabled ? 1 : 0, record.scopeJson, record.targetTableId, record.createdAt, record.updatedAt);
37
+ }
38
+ });
39
+ transaction(userId, records);
40
+ return records;
41
+ }
42
+ }
43
+ function mapRow(row) {
44
+ return {
45
+ configId: row.config_id,
46
+ userId: row.user_id,
47
+ sourceType: row.source_type,
48
+ enabled: row.enabled === 1,
49
+ scopeJson: row.scope_json,
50
+ targetTableId: row.target_table_id,
51
+ createdAt: row.created_at,
52
+ updatedAt: row.updated_at
53
+ };
54
+ }
55
+ //# sourceMappingURL=user-teable-workbench-sync-config-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-workbench-sync-config-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-workbench-sync-config-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,uCAAuC;IACrB;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;iBAQS,CACV;aACA,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAuC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,OAA8C;QAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACrC;yBACmB,CACpB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACrC;;;;;;;;;wCASkC,CACnC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,UAAkB,EAAE,WAAkD,EAAE,EAAE;YACjH,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,eAAe,CAAC,GAAG,CACjB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAaD,SAAS,MAAM,CAAC,GAAqC;IACnD,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -10,10 +10,12 @@ export declare class WorkspaceRepository {
10
10
  findById(id: string): Workspace | null;
11
11
  findByPath(workspacePath: string): Workspace | null;
12
12
  list(): Workspace[];
13
+ listByOwnerUserId(ownerUserId: string): Workspace[];
13
14
  getNextSortOrder(): number;
14
- reorderVisible(workspaceIds: readonly string[]): void;
15
+ reorderVisible(workspaceIds: readonly string[], ownerUserId?: string): void;
15
16
  restore(id: string, input: {
16
17
  name?: string;
18
+ ownerUserId?: string | null;
17
19
  repoRoot?: string | null;
18
20
  updatedAt: string;
19
21
  }): Workspace | null;
@@ -6,9 +6,9 @@ export class WorkspaceRepository {
6
6
  create(record) {
7
7
  const sortOrder = record.sortOrder ?? this.getNextSortOrder();
8
8
  this.db
9
- .prepare(`INSERT INTO workspaces (id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at)
10
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
11
- .run(record.id, record.name, record.path, record.repoRoot, record.favorite ? 1 : 0, sortOrder, record.createdAt, record.updatedAt, record.removedAt ?? null);
9
+ .prepare(`INSERT INTO workspaces (id, owner_user_id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at)
10
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
11
+ .run(record.id, record.ownerUserId ?? null, record.name, record.path, record.repoRoot, record.favorite ? 1 : 0, sortOrder, record.createdAt, record.updatedAt, record.removedAt ?? null);
12
12
  return {
13
13
  ...record,
14
14
  sortOrder,
@@ -17,7 +17,7 @@ export class WorkspaceRepository {
17
17
  }
18
18
  findById(id) {
19
19
  const row = this.db
20
- .prepare(`SELECT id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
20
+ .prepare(`SELECT id, owner_user_id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
21
21
  FROM workspaces
22
22
  WHERE id = ?`)
23
23
  .get(id);
@@ -25,7 +25,7 @@ export class WorkspaceRepository {
25
25
  }
26
26
  findByPath(workspacePath) {
27
27
  const row = this.db
28
- .prepare(`SELECT id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
28
+ .prepare(`SELECT id, owner_user_id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
29
29
  FROM workspaces
30
30
  WHERE path = ?`)
31
31
  .get(workspacePath);
@@ -33,13 +33,23 @@ export class WorkspaceRepository {
33
33
  }
34
34
  list() {
35
35
  return this.db
36
- .prepare(`SELECT id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
36
+ .prepare(`SELECT id, owner_user_id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
37
37
  FROM workspaces
38
38
  WHERE removed_at IS NULL
39
39
  ORDER BY sort_order ASC, updated_at DESC, created_at DESC`)
40
40
  .all()
41
41
  .map((row) => mapWorkspaceRow(row));
42
42
  }
43
+ listByOwnerUserId(ownerUserId) {
44
+ return this.db
45
+ .prepare(`SELECT id, owner_user_id, name, path, repo_root, favorite, sort_order, created_at, updated_at, removed_at
46
+ FROM workspaces
47
+ WHERE owner_user_id = ?
48
+ AND removed_at IS NULL
49
+ ORDER BY sort_order ASC, updated_at DESC, created_at DESC`)
50
+ .all(ownerUserId)
51
+ .map((row) => mapWorkspaceRow(row));
52
+ }
43
53
  getNextSortOrder() {
44
54
  const row = this.db
45
55
  .prepare(`SELECT COALESCE(MAX(sort_order), -1) AS max_sort_order
@@ -47,13 +57,15 @@ export class WorkspaceRepository {
47
57
  .get();
48
58
  return (row?.max_sort_order ?? -1) + 1;
49
59
  }
50
- reorderVisible(workspaceIds) {
60
+ reorderVisible(workspaceIds, ownerUserId) {
51
61
  const update = this.db.prepare(`UPDATE workspaces
52
62
  SET sort_order = ?
53
- WHERE id = ? AND removed_at IS NULL`);
63
+ WHERE id = ?
64
+ AND removed_at IS NULL
65
+ AND (? IS NULL OR owner_user_id = ?)`);
54
66
  const runInTransaction = this.db.transaction((orderedIds) => {
55
67
  orderedIds.forEach((workspaceId, index) => {
56
- update.run(index, workspaceId);
68
+ update.run(index, workspaceId, ownerUserId ?? null, ownerUserId ?? null);
57
69
  });
58
70
  });
59
71
  runInTransaction(workspaceIds);
@@ -62,11 +74,12 @@ export class WorkspaceRepository {
62
74
  this.db
63
75
  .prepare(`UPDATE workspaces
64
76
  SET name = COALESCE(?, name),
77
+ owner_user_id = COALESCE(?, owner_user_id),
65
78
  repo_root = COALESCE(?, repo_root),
66
79
  updated_at = ?,
67
80
  removed_at = NULL
68
81
  WHERE id = ?`)
69
- .run(input.name?.trim() || null, input.repoRoot ?? null, input.updatedAt, id);
82
+ .run(input.name?.trim() || null, input.ownerUserId ?? null, input.repoRoot ?? null, input.updatedAt, id);
70
83
  return this.findById(id);
71
84
  }
72
85
  markRemoved(id, removedAt, updatedAt) {
@@ -82,6 +95,7 @@ export class WorkspaceRepository {
82
95
  function mapWorkspaceRow(row) {
83
96
  return {
84
97
  id: row.id,
98
+ ownerUserId: row.owner_user_id,
85
99
  name: row.name,
86
100
  path: row.path,
87
101
  repoRoot: row.repo_root,
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/workspace-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/workspace-repository.ts"],"names":[],"mappings":"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"}