@jingyi0605/codingns 0.9.0 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-B17QiMyT.js → AdaptiveButlerPage-kkJDsnCO.js} +2 -2
  2. package/dist/public/assets/{App-CFBwDUNA.js → App-DrNI9lWA.js} +6 -6
  3. package/dist/public/assets/{BootstrapPage-W5wU3BPh.js → BootstrapPage-QgVH5Mps.js} +1 -1
  4. package/dist/public/assets/{ConversationPage-DQLX1bUh.js → ConversationPage-DVk8VfIj.js} +1 -1
  5. package/dist/public/assets/{DesktopDetachPreviewPage-DTPeuAW-.js → DesktopDetachPreviewPage-BhfP0TpH.js} +1 -1
  6. package/dist/public/assets/{DesktopModal-6ii53_Y9.js → DesktopModal-DRmDrv0S.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-DNbJXnSs.js +2 -0
  8. package/dist/public/assets/FileContextPanel---fLO4ve.js +1 -0
  9. package/dist/public/assets/GitSidebar-sXUE0TqT.js +6 -0
  10. package/dist/public/assets/MobileCreateSessionSheet-BftZ5pvb.js +1 -0
  11. package/dist/public/assets/{MobileSheet-opTWyRe1.js → MobileSheet-nw5SCa3N.js} +1 -1
  12. package/dist/public/assets/{MobileTopHeaderFrame-BbNON3Y4.js → MobileTopHeaderFrame-DH_D02Wy.js} +1 -1
  13. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-BZEzPeMj.js → MobileWorkspaceSwitcherHeader-2K406G5p.js} +1 -1
  14. package/dist/public/assets/{PluginAccessOverview-mQDmAljp.js → PluginAccessOverview-BVJihw3D.js} +1 -1
  15. package/dist/public/assets/{PluginContainerPage-CcxUJpM4.js → PluginContainerPage-CR4vStvr.js} +1 -1
  16. package/dist/public/assets/{PluginDetailPage-D5--ACIt.js → PluginDetailPage-CrMX0Mnm.js} +1 -1
  17. package/dist/public/assets/{PluginsListPage-D_oJxYXT.js → PluginsListPage-FtIL71Yg.js} +1 -1
  18. package/dist/public/assets/{RelayConnectEntryPage-DROxpnkv.js → RelayConnectEntryPage-Bt1apX53.js} +1 -1
  19. package/dist/public/assets/{ServerSettingsModal-CUUOPqSe.js → ServerSettingsModal-D-guzPrI.js} +1 -1
  20. package/dist/public/assets/{SessionIndexPage-C2Jxh6Gp.js → SessionIndexPage-CX2FppcJ.js} +1 -1
  21. package/dist/public/assets/SettingsPage-BI2Olcvr.js +2 -0
  22. package/dist/public/assets/TerminalManagerPanel-B5MKGPy-.js +1 -0
  23. package/dist/public/assets/{TerminalPage-CwWyFDj8.js → TerminalPage-C2dTNGHK.js} +1 -1
  24. package/dist/public/assets/{TerminalRuntimeFallbackModal-CSVVbO8r.js → TerminalRuntimeFallbackModal-DAqOxFD8.js} +1 -1
  25. package/dist/public/assets/{ToolFilesPage-QBEY8oCf.js → ToolFilesPage-IsNwyE6T.js} +1 -1
  26. package/dist/public/assets/{ToolGitPage-BKoZ2l9v.js → ToolGitPage-BK1JBERN.js} +1 -1
  27. package/dist/public/assets/{ToolProcessesPage-BOH0ib4G.js → ToolProcessesPage-DwTYUQCK.js} +1 -1
  28. package/dist/public/assets/{ToolsHomePage-BcMZ3BCQ.js → ToolsHomePage-BLOy7lPg.js} +1 -1
  29. package/dist/public/assets/{WorkbenchLandingPage-B5zoppEl.js → WorkbenchLandingPage-CqZKR6EA.js} +1 -1
  30. package/dist/public/assets/WorkbenchLayout-CJHQtwuL.js +1022 -0
  31. package/dist/public/assets/{WorkbenchModal-NGmPgqaE.js → WorkbenchModal-BM-OeW-b.js} +1 -1
  32. package/dist/public/assets/WorkbenchShellRoute-2bKI6Q9k.js +1 -0
  33. package/dist/public/assets/WorkbenchShellRoute-BjuZD101.css +1 -0
  34. package/dist/public/assets/WorkspaceDebugDetailPage-BMsEN5iG.js +1 -0
  35. package/dist/public/assets/WorkspaceDetailPage-5H9Gosx2.js +1 -0
  36. package/dist/public/assets/WorkspaceHomePage-DQiXKgiP.js +1 -0
  37. package/dist/public/assets/{client-runtime-manager-DXbI9K1K.js → client-runtime-manager-CgPJq21V.js} +1 -1
  38. package/dist/public/assets/index-BARqMVSw.css +1 -0
  39. package/dist/public/assets/index-BUoNjVrY.js +50 -0
  40. package/dist/public/assets/{login-direct-candidate-resolver-DkKyFtQJ.js → login-direct-candidate-resolver-CGaxAXV8.js} +1 -1
  41. package/dist/public/assets/{plugin-permission-copy-CzN269Bk.js → plugin-permission-copy-BR9gWy8b.js} +1 -1
  42. package/dist/public/assets/{plugins-api-Bv9DHpLF.js → plugins-api-CdCsrG2e.js} +1 -1
  43. package/dist/public/assets/{preferences-service-D2ISL2Zz.js → preferences-service-lOhnlxzP.js} +1 -1
  44. package/dist/public/assets/{relay-entry-Bg0OisQy.js → relay-entry-CQpxTS8y.js} +1 -1
  45. package/dist/public/assets/{terminal-runtime-meta-C8t-CIDF.js → terminal-runtime-meta-oteTx66X.js} +1 -1
  46. package/dist/public/assets/useRegisteredDebugTemplates-Bu2ykZ6s.js +1 -0
  47. package/dist/public/assets/workbench-navigation-DlgXuFW2.js +1 -0
  48. package/dist/public/index.html +2 -2
  49. package/dist/server/config/env.d.ts +1 -0
  50. package/dist/server/config/env.js +3 -0
  51. package/dist/server/config/env.js.map +1 -1
  52. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -1
  53. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -1
  54. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +2 -2
  55. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -1
  56. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +20 -3
  57. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +3 -3
  58. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -1
  59. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
  60. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
  61. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
  62. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
  63. package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
  64. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
  65. package/dist/server/modules/butler/butler-follow-up-service.d.ts +3 -0
  66. package/dist/server/modules/butler/butler-follow-up-service.js +11 -1
  67. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  68. package/dist/server/modules/butler/butler-inbox-service.d.ts +3 -0
  69. package/dist/server/modules/butler/butler-inbox-service.js +14 -2
  70. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  71. package/dist/server/modules/butler/butler-session-service.d.ts +3 -0
  72. package/dist/server/modules/butler/butler-session-service.js +18 -0
  73. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  74. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  75. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  76. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  77. package/dist/server/modules/file/file-controller.d.ts +11 -2
  78. package/dist/server/modules/file/file-controller.js +404 -17
  79. package/dist/server/modules/file/file-controller.js.map +1 -1
  80. package/dist/server/modules/file/file-search-service.js +200 -12
  81. package/dist/server/modules/file/file-search-service.js.map +1 -1
  82. package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +18 -5
  83. package/dist/server/modules/file/workspace-file-bridge-service.d.ts +9 -0
  84. package/dist/server/modules/file/workspace-file-bridge-service.js +3 -0
  85. package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
  86. package/dist/server/modules/file/workspace-file-bridge-watch-service.d.ts +9 -0
  87. package/dist/server/modules/file/workspace-file-bridge-watch-service.js +28 -0
  88. package/dist/server/modules/file/workspace-file-bridge-watch-service.js.map +1 -1
  89. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  90. package/dist/server/modules/tasks/task-types.js +1 -0
  91. package/dist/server/modules/tasks/task-types.js.map +1 -1
  92. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +1 -1
  93. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +22 -5
  94. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -1
  95. package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
  96. package/dist/server/modules/workbench/workbench-controller.js +20 -0
  97. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  98. package/dist/server/modules/workbench/workbench-service.d.ts +6 -6
  99. package/dist/server/modules/workbench/workbench-service.js +33 -36
  100. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  101. package/dist/server/modules/workspace/affairs-library-controller.d.ts +8 -0
  102. package/dist/server/modules/workspace/affairs-library-controller.js +11 -0
  103. package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -1
  104. package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +6 -0
  105. package/dist/server/modules/workspace/affairs-library-preview-link-service.js +12 -2
  106. package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -1
  107. package/dist/server/modules/workspace/affairs-library-service.d.ts +9 -0
  108. package/dist/server/modules/workspace/affairs-library-service.js +182 -42
  109. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  110. package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +8 -0
  111. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +55 -8
  112. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -1
  113. package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +13 -0
  114. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +167 -21
  115. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  116. package/dist/server/modules/workspace/affairs-tag-controller.d.ts +3 -0
  117. package/dist/server/modules/workspace/affairs-tag-controller.js +5 -0
  118. package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -1
  119. package/dist/server/modules/workspace/affairs-tag-service.d.ts +22 -1
  120. package/dist/server/modules/workspace/affairs-tag-service.js +41 -2
  121. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
  122. package/dist/server/modules/workspace/teable-api-client.d.ts +118 -0
  123. package/dist/server/modules/workspace/teable-api-client.js +142 -0
  124. package/dist/server/modules/workspace/teable-api-client.js.map +1 -0
  125. package/dist/server/modules/workspace/teable-catalog-controller.d.ts +18 -0
  126. package/dist/server/modules/workspace/teable-catalog-controller.js +17 -0
  127. package/dist/server/modules/workspace/teable-catalog-controller.js.map +1 -0
  128. package/dist/server/modules/workspace/teable-catalog-service.d.ts +36 -0
  129. package/dist/server/modules/workspace/teable-catalog-service.js +124 -0
  130. package/dist/server/modules/workspace/teable-catalog-service.js.map +1 -0
  131. package/dist/server/modules/workspace/teable-credential-service.d.ts +8 -0
  132. package/dist/server/modules/workspace/teable-credential-service.js +37 -0
  133. package/dist/server/modules/workspace/teable-credential-service.js.map +1 -0
  134. package/dist/server/modules/workspace/teable-field-mapping-controller.d.ts +25 -0
  135. package/dist/server/modules/workspace/teable-field-mapping-controller.js +31 -0
  136. package/dist/server/modules/workspace/teable-field-mapping-controller.js.map +1 -0
  137. package/dist/server/modules/workspace/teable-field-mapping-service.d.ts +38 -0
  138. package/dist/server/modules/workspace/teable-field-mapping-service.js +215 -0
  139. package/dist/server/modules/workspace/teable-field-mapping-service.js.map +1 -0
  140. package/dist/server/modules/workspace/teable-global-binding-controller.d.ts +22 -0
  141. package/dist/server/modules/workspace/teable-global-binding-controller.js +25 -0
  142. package/dist/server/modules/workspace/teable-global-binding-controller.js.map +1 -0
  143. package/dist/server/modules/workspace/teable-global-binding-service.d.ts +35 -0
  144. package/dist/server/modules/workspace/teable-global-binding-service.js +151 -0
  145. package/dist/server/modules/workspace/teable-global-binding-service.js.map +1 -0
  146. package/dist/server/modules/workspace/teable-mirror-sync-controller.d.ts +29 -0
  147. package/dist/server/modules/workspace/teable-mirror-sync-controller.js +50 -0
  148. package/dist/server/modules/workspace/teable-mirror-sync-controller.js.map +1 -0
  149. package/dist/server/modules/workspace/teable-mirror-sync-service.d.ts +157 -0
  150. package/dist/server/modules/workspace/teable-mirror-sync-service.js +917 -0
  151. package/dist/server/modules/workspace/teable-mirror-sync-service.js.map +1 -0
  152. package/dist/server/modules/workspace/teable-runtime-controller.d.ts +58 -0
  153. package/dist/server/modules/workspace/teable-runtime-controller.js +60 -0
  154. package/dist/server/modules/workspace/teable-runtime-controller.js.map +1 -0
  155. package/dist/server/modules/workspace/teable-runtime-service.d.ts +96 -0
  156. package/dist/server/modules/workspace/teable-runtime-service.js +362 -0
  157. package/dist/server/modules/workspace/teable-runtime-service.js.map +1 -0
  158. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.d.ts +22 -0
  159. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js +20 -0
  160. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js.map +1 -0
  161. package/dist/server/modules/workspace/teable-workbench-sync-config-service.d.ts +22 -0
  162. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js +159 -0
  163. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js.map +1 -0
  164. package/dist/server/routes/affairs.d.ts +9 -1
  165. package/dist/server/routes/affairs.js +120 -1
  166. package/dist/server/routes/affairs.js.map +1 -1
  167. package/dist/server/routes/workbench.js +15 -0
  168. package/dist/server/routes/workbench.js.map +1 -1
  169. package/dist/server/routes/workspaces.js +51 -41
  170. package/dist/server/routes/workspaces.js.map +1 -1
  171. package/dist/server/server/create-server.d.ts +14 -0
  172. package/dist/server/server/create-server.js +73 -7
  173. package/dist/server/server/create-server.js.map +1 -1
  174. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
  175. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
  176. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
  177. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +8 -5
  178. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -1
  179. package/dist/server/storage/repositories/user-teable-credential-repository.d.ts +9 -0
  180. package/dist/server/storage/repositories/user-teable-credential-repository.js +45 -0
  181. package/dist/server/storage/repositories/user-teable-credential-repository.js.map +1 -0
  182. package/dist/server/storage/repositories/user-teable-field-mapping-repository.d.ts +10 -0
  183. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js +69 -0
  184. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js.map +1 -0
  185. package/dist/server/storage/repositories/user-teable-global-setting-repository.d.ts +8 -0
  186. package/dist/server/storage/repositories/user-teable-global-setting-repository.js +52 -0
  187. package/dist/server/storage/repositories/user-teable-global-setting-repository.js.map +1 -0
  188. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.d.ts +9 -0
  189. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js +66 -0
  190. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js.map +1 -0
  191. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.d.ts +9 -0
  192. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js +67 -0
  193. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js.map +1 -0
  194. package/dist/server/storage/repositories/user-teable-sync-log-repository.d.ts +14 -0
  195. package/dist/server/storage/repositories/user-teable-sync-log-repository.js +97 -0
  196. package/dist/server/storage/repositories/user-teable-sync-log-repository.js.map +1 -0
  197. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.d.ts +8 -0
  198. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js +55 -0
  199. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js.map +1 -0
  200. package/dist/server/storage/sqlite/client.js +404 -1
  201. package/dist/server/storage/sqlite/client.js.map +1 -1
  202. package/dist/server/storage/sqlite/schema.sql +167 -1
  203. package/dist/server/types/domain.d.ts +106 -0
  204. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +22 -3
  205. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +29 -2
  206. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -1
  207. package/node_modules/@codingns/session-sync-core/package.json +3 -1
  208. package/package.json +1 -1
  209. package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +0 -2
  210. package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +0 -1
  211. package/dist/public/assets/GitSidebar-BdwiDtOr.js +0 -6
  212. package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +0 -1
  213. package/dist/public/assets/SettingsPage-BlAZCHsy.js +0 -2
  214. package/dist/public/assets/TerminalManagerPanel-CjzbiWjl.js +0 -1
  215. package/dist/public/assets/WorkbenchLayout-CikJBS62.js +0 -1019
  216. package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +0 -1
  217. package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +0 -1
  218. package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +0 -1
  219. package/dist/public/assets/WorkspaceDetailPage-DgOSjscR.js +0 -1
  220. package/dist/public/assets/WorkspaceHomePage-HPa7M_Vh.js +0 -1
  221. package/dist/public/assets/index-BxJPQpFM.css +0 -1
  222. package/dist/public/assets/index-CeXGOT_T.js +0 -50
  223. package/dist/public/assets/useRegisteredDebugTemplates-Bol3NVfN.js +0 -1
  224. package/dist/public/assets/workbench-navigation-B7IjRQd8.js +0 -1
@@ -0,0 +1,191 @@
1
+ export class AssistantSandboxWorkspaceRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ create(record) {
7
+ this.db
8
+ .prepare(`INSERT INTO assistant_sandboxes (
9
+ id,
10
+ user_id,
11
+ workspace_id,
12
+ control_session_id,
13
+ title,
14
+ description,
15
+ source_kind,
16
+ source_ref,
17
+ visibility,
18
+ status,
19
+ purpose,
20
+ expires_at,
21
+ promoted_at,
22
+ created_at,
23
+ updated_at
24
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
25
+ .run(record.id, record.userId, record.workspaceId, record.controlSessionId, record.title, record.description, record.sourceKind, record.sourceRef, record.visibility, record.status, record.purpose, record.expiresAt, record.promotedAt, record.createdAt, record.updatedAt);
26
+ return record;
27
+ }
28
+ findById(id) {
29
+ const row = this.db
30
+ .prepare(`SELECT
31
+ id,
32
+ user_id,
33
+ workspace_id,
34
+ control_session_id,
35
+ title,
36
+ description,
37
+ source_kind,
38
+ source_ref,
39
+ visibility,
40
+ status,
41
+ purpose,
42
+ expires_at,
43
+ promoted_at,
44
+ created_at,
45
+ updated_at
46
+ FROM assistant_sandboxes
47
+ WHERE id = ?`)
48
+ .get(id);
49
+ return row ? mapRow(row) : null;
50
+ }
51
+ findByWorkspaceId(workspaceId) {
52
+ const row = this.db
53
+ .prepare(`SELECT
54
+ id,
55
+ user_id,
56
+ workspace_id,
57
+ control_session_id,
58
+ title,
59
+ description,
60
+ source_kind,
61
+ source_ref,
62
+ visibility,
63
+ status,
64
+ purpose,
65
+ expires_at,
66
+ promoted_at,
67
+ created_at,
68
+ updated_at
69
+ FROM assistant_sandboxes
70
+ WHERE workspace_id = ?`)
71
+ .get(workspaceId);
72
+ return row ? mapRow(row) : null;
73
+ }
74
+ list(filters = {}) {
75
+ const whereParts = [];
76
+ const values = [];
77
+ if (filters.userId?.trim()) {
78
+ whereParts.push("user_id = ?");
79
+ values.push(filters.userId.trim());
80
+ }
81
+ if (filters.controlSessionId?.trim()) {
82
+ whereParts.push("control_session_id = ?");
83
+ values.push(filters.controlSessionId.trim());
84
+ }
85
+ if (filters.statuses?.length) {
86
+ whereParts.push(`status IN (${filters.statuses.map(() => "?").join(", ")})`);
87
+ values.push(...filters.statuses);
88
+ }
89
+ const whereClause = whereParts.length > 0 ? `WHERE ${whereParts.join(" AND ")}` : "";
90
+ const limitClause = filters.limit ? "LIMIT ?" : "";
91
+ if (filters.limit) {
92
+ values.push(filters.limit);
93
+ }
94
+ return this.db
95
+ .prepare(`SELECT
96
+ id,
97
+ user_id,
98
+ workspace_id,
99
+ control_session_id,
100
+ title,
101
+ description,
102
+ source_kind,
103
+ source_ref,
104
+ visibility,
105
+ status,
106
+ purpose,
107
+ expires_at,
108
+ promoted_at,
109
+ created_at,
110
+ updated_at
111
+ FROM assistant_sandboxes
112
+ ${whereClause}
113
+ ORDER BY updated_at DESC, created_at DESC
114
+ ${limitClause}`)
115
+ .all(...values)
116
+ .map((row) => mapRow(row));
117
+ }
118
+ listManagedWorkspaceIds() {
119
+ return this.db
120
+ .prepare(`SELECT workspace_id
121
+ FROM assistant_sandboxes
122
+ WHERE status != 'deleted'`)
123
+ .all()
124
+ .map((row) => row.workspace_id);
125
+ }
126
+ listDueCleanup(referenceAt, limit) {
127
+ return this.db
128
+ .prepare(`SELECT
129
+ id,
130
+ user_id,
131
+ workspace_id,
132
+ control_session_id,
133
+ title,
134
+ description,
135
+ source_kind,
136
+ source_ref,
137
+ visibility,
138
+ status,
139
+ purpose,
140
+ expires_at,
141
+ promoted_at,
142
+ created_at,
143
+ updated_at
144
+ FROM assistant_sandboxes
145
+ WHERE status = 'orphaned'
146
+ AND expires_at IS NOT NULL
147
+ AND expires_at <= ?
148
+ ORDER BY expires_at ASC, updated_at ASC
149
+ LIMIT ?`)
150
+ .all(referenceAt, limit)
151
+ .map((row) => mapRow(row));
152
+ }
153
+ update(record) {
154
+ this.db
155
+ .prepare(`UPDATE assistant_sandboxes
156
+ SET control_session_id = ?,
157
+ title = ?,
158
+ description = ?,
159
+ source_kind = ?,
160
+ source_ref = ?,
161
+ visibility = ?,
162
+ status = ?,
163
+ purpose = ?,
164
+ expires_at = ?,
165
+ promoted_at = ?,
166
+ updated_at = ?
167
+ WHERE id = ?`)
168
+ .run(record.controlSessionId, record.title, record.description, record.sourceKind, record.sourceRef, record.visibility, record.status, record.purpose, record.expiresAt, record.promotedAt, record.updatedAt, record.id);
169
+ return record;
170
+ }
171
+ }
172
+ function mapRow(row) {
173
+ return {
174
+ id: row.id,
175
+ userId: row.user_id,
176
+ workspaceId: row.workspace_id,
177
+ controlSessionId: row.control_session_id,
178
+ title: row.title,
179
+ description: row.description,
180
+ sourceKind: row.source_kind,
181
+ sourceRef: row.source_ref,
182
+ visibility: row.visibility,
183
+ status: row.status,
184
+ purpose: row.purpose,
185
+ expiresAt: row.expires_at,
186
+ promotedAt: row.promoted_at,
187
+ createdAt: row.created_at,
188
+ updatedAt: row.updated_at
189
+ };
190
+ }
191
+ //# sourceMappingURL=assistant-sandbox-workspace-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-sandbox-workspace-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/assistant-sandbox-workspace-repository.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export class UserAffairsLibrarySettingRepository {
5
5
  }
6
6
  findByUserId(userId) {
7
7
  const row = this.db
8
- .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
8
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, dashboard_state_json, created_at, updated_at
9
9
  FROM user_affairs_library_settings
10
10
  WHERE user_id = ?`)
11
11
  .get(userId);
@@ -13,7 +13,7 @@ export class UserAffairsLibrarySettingRepository {
13
13
  }
14
14
  findEnabledByWorkspaceId(workspaceId) {
15
15
  const row = this.db
16
- .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
16
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, dashboard_state_json, created_at, updated_at
17
17
  FROM user_affairs_library_settings
18
18
  WHERE last_workspace_id = ?
19
19
  AND enabled = 1
@@ -26,7 +26,7 @@ export class UserAffairsLibrarySettingRepository {
26
26
  }
27
27
  listEnabled() {
28
28
  return this.db
29
- .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
29
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, dashboard_state_json, created_at, updated_at
30
30
  FROM user_affairs_library_settings
31
31
  WHERE enabled = 1
32
32
  AND root_dir IS NOT NULL
@@ -42,16 +42,18 @@ export class UserAffairsLibrarySettingRepository {
42
42
  enabled,
43
43
  favorites_json,
44
44
  last_workspace_id,
45
+ dashboard_state_json,
45
46
  created_at,
46
47
  updated_at
47
- ) VALUES (?, ?, ?, ?, ?, ?, ?)
48
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
48
49
  ON CONFLICT(user_id) DO UPDATE SET
49
50
  root_dir = excluded.root_dir,
50
51
  enabled = excluded.enabled,
51
52
  favorites_json = excluded.favorites_json,
52
53
  last_workspace_id = excluded.last_workspace_id,
54
+ dashboard_state_json = excluded.dashboard_state_json,
53
55
  updated_at = excluded.updated_at`)
54
- .run(record.userId, record.rootDir, record.enabled ? 1 : 0, record.favoritesJson, record.lastWorkspaceId, record.createdAt, record.updatedAt);
56
+ .run(record.userId, record.rootDir, record.enabled ? 1 : 0, record.favoritesJson, record.lastWorkspaceId, record.dashboardStateJson || "{}", record.createdAt, record.updatedAt);
55
57
  return record;
56
58
  }
57
59
  }
@@ -62,6 +64,7 @@ function mapUserAffairsLibrarySettingRow(row) {
62
64
  enabled: row.enabled === 1,
63
65
  favoritesJson: row.favorites_json,
64
66
  lastWorkspaceId: row.last_workspace_id,
67
+ dashboardStateJson: row.dashboard_state_json?.trim() || "{}",
65
68
  createdAt: row.created_at,
66
69
  updatedAt: row.updated_at
67
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"user-affairs-library-setting-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-affairs-library-setting-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,mCAAmC;IACjB;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,CAA6C,CAAC;QAE3D,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,wBAAwB,CAAC,WAAmB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;;iBAOS,CACV;aACA,GAAG,CAAC,WAAW,CAA6C,CAAC;QAEhE,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;oCAI4B,CAC7B;aACA,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,GAAmC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,MAAuC;QAC5C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;2CAcmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAYD,SAAS,+BAA+B,CAAC,GAAiC;IACxE,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"user-affairs-library-setting-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-affairs-library-setting-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,mCAAmC;IACjB;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,CAA6C,CAAC;QAE3D,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,wBAAwB,CAAC,WAAmB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;;iBAOS,CACV;aACA,GAAG,CAAC,WAAW,CAA6C,CAAC;QAEhE,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;oCAI4B,CAC7B;aACA,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,+BAA+B,CAAC,GAAmC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,MAAuC;QAC5C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;2CAgBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,kBAAkB,IAAI,IAAI,EACjC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAaD,SAAS,+BAA+B,CAAC,GAAiC;IACxE,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,IAAI;QAC5D,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 { UserTeableCredentialRecord } from "../../types/domain.js";
3
+ export declare class UserTeableCredentialRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ findByUserIdAndAuthRef(userId: string, authRef: string): UserTeableCredentialRecord | null;
7
+ upsert(record: UserTeableCredentialRecord): UserTeableCredentialRecord;
8
+ delete(userId: string, authRef: string): void;
9
+ }
@@ -0,0 +1,45 @@
1
+ export class UserTeableCredentialRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ findByUserIdAndAuthRef(userId, authRef) {
7
+ const row = this.db
8
+ .prepare(`SELECT token_ciphertext, created_at, updated_at
9
+ FROM user_teable_credentials
10
+ WHERE user_id = ? AND auth_ref = ?`)
11
+ .get(userId, authRef);
12
+ if (!row) {
13
+ return null;
14
+ }
15
+ return {
16
+ userId,
17
+ authRef,
18
+ tokenCiphertext: row.token_ciphertext,
19
+ createdAt: row.created_at,
20
+ updatedAt: row.updated_at
21
+ };
22
+ }
23
+ upsert(record) {
24
+ this.db
25
+ .prepare(`INSERT INTO user_teable_credentials (
26
+ user_id,
27
+ auth_ref,
28
+ token_ciphertext,
29
+ created_at,
30
+ updated_at
31
+ ) VALUES (?, ?, ?, ?, ?)
32
+ ON CONFLICT(user_id, auth_ref) DO UPDATE SET
33
+ token_ciphertext = excluded.token_ciphertext,
34
+ updated_at = excluded.updated_at`)
35
+ .run(record.userId, record.authRef, record.tokenCiphertext, record.createdAt, record.updatedAt);
36
+ return record;
37
+ }
38
+ delete(userId, authRef) {
39
+ this.db
40
+ .prepare(`DELETE FROM user_teable_credentials
41
+ WHERE user_id = ? AND auth_ref = ?`)
42
+ .run(userId, authRef);
43
+ }
44
+ }
45
+ //# sourceMappingURL=user-teable-credential-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-teable-credential-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-teable-credential-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,sBAAsB,CAAC,MAAc,EAAE,OAAe;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;4CAEoC,CACrC;aACA,GAAG,CAAC,MAAM,EAAE,OAAO,CAAwC,CAAC;QAE/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,MAAM;YACN,OAAO;YACP,eAAe,EAAE,GAAG,CAAC,gBAAgB;YACrC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAkC;QACvC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;2CASmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,OAAe;QACpC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;4CACoC,CACrC;aACA,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { UserTeableFieldMappingRecord } from "../../types/domain.js";
3
+ export declare class UserTeableFieldMappingRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ listByUserId(userId: string): UserTeableFieldMappingRecord[];
7
+ findByUserIdAndConfigId(userId: string, configId: string): UserTeableFieldMappingRecord | null;
8
+ upsert(record: UserTeableFieldMappingRecord): UserTeableFieldMappingRecord;
9
+ delete(userId: string, configId: string): void;
10
+ }
@@ -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
+ }