@jingyi0605/codingns 0.8.5 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/bin/codingns.mjs +7 -156
  2. package/dist/public/assets/AdaptiveButlerPage-B17QiMyT.js +2 -0
  3. package/dist/public/assets/{App-BOHBGFOd.js → App-CFBwDUNA.js} +6 -6
  4. package/dist/public/assets/{BootstrapPage-BxHQT4nA.js → BootstrapPage-W5wU3BPh.js} +1 -1
  5. package/dist/public/assets/{ConversationPage-DWFsF6BB.js → ConversationPage-DQLX1bUh.js} +6 -6
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DOgEjYEf.js → DesktopDetachPreviewPage-DTPeuAW-.js} +1 -1
  7. package/dist/public/assets/DesktopModal-6ii53_Y9.js +1 -0
  8. package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +2 -0
  9. package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +1 -0
  10. package/dist/public/assets/GitSidebar-BdwiDtOr.js +6 -0
  11. package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +1 -0
  12. package/dist/public/assets/MobileSheet-opTWyRe1.js +1 -0
  13. package/dist/public/assets/{MobileTopHeaderFrame-lcp2GscV.js → MobileTopHeaderFrame-BbNON3Y4.js} +1 -1
  14. package/dist/public/assets/MobileWorkspaceSwitcherHeader-BZEzPeMj.js +1 -0
  15. package/dist/public/assets/{PluginAccessOverview-DGcKAMQl.js → PluginAccessOverview-mQDmAljp.js} +1 -1
  16. package/dist/public/assets/PluginContainerPage-CcxUJpM4.js +1 -0
  17. package/dist/public/assets/{PluginDetailPage-CAJ7LFpD.js → PluginDetailPage-D5--ACIt.js} +1 -1
  18. package/dist/public/assets/{PluginsListPage-BxZG1NyT.js → PluginsListPage-D_oJxYXT.js} +1 -1
  19. package/dist/public/assets/{RelayConnectEntryPage-CfNO_TIl.js → RelayConnectEntryPage-DROxpnkv.js} +1 -1
  20. package/dist/public/assets/{ServerSettingsModal-by36Z_5k.js → ServerSettingsModal-CUUOPqSe.js} +1 -1
  21. package/dist/public/assets/SessionIndexPage-C2Jxh6Gp.js +1 -0
  22. package/dist/public/assets/SettingsPage-BlAZCHsy.js +2 -0
  23. package/dist/public/assets/{TerminalManagerPanel-NVZRxxmH.js → TerminalManagerPanel-CjzbiWjl.js} +1 -1
  24. package/dist/public/assets/{TerminalPage-C4LNoPBp.js → TerminalPage-CwWyFDj8.js} +2 -2
  25. package/dist/public/assets/TerminalRuntimeFallbackModal-CSVVbO8r.js +1 -0
  26. package/dist/public/assets/{ToolFilesPage-47zbdgTW.js → ToolFilesPage-QBEY8oCf.js} +1 -1
  27. package/dist/public/assets/{ToolGitPage-Fuk_b_jg.js → ToolGitPage-BKoZ2l9v.js} +1 -1
  28. package/dist/public/assets/{ToolProcessesPage-sWSMWD-9.js → ToolProcessesPage-BOH0ib4G.js} +1 -1
  29. package/dist/public/assets/{ToolsHomePage-R1mZlbZi.js → ToolsHomePage-BcMZ3BCQ.js} +1 -1
  30. package/dist/public/assets/{WorkbenchLandingPage-CqmiFH2u.js → WorkbenchLandingPage-B5zoppEl.js} +1 -1
  31. package/dist/public/assets/WorkbenchLayout-BksVkkFF.css +1 -0
  32. package/dist/public/assets/WorkbenchLayout-CikJBS62.js +1019 -0
  33. package/dist/public/assets/{WorkbenchModal-C7qoQElW.js → WorkbenchModal-NGmPgqaE.js} +1 -1
  34. package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +1 -0
  35. package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +1 -0
  36. package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +1 -0
  37. package/dist/public/assets/{WorkspaceDetailPage-BPsrFffw.js → WorkspaceDetailPage-DgOSjscR.js} +1 -1
  38. package/dist/public/assets/{WorkspaceHomePage-KAtqZOAb.js → WorkspaceHomePage-HPa7M_Vh.js} +1 -1
  39. package/dist/public/assets/{client-runtime-manager-wmCJZKYd.js → client-runtime-manager-DXbI9K1K.js} +1 -1
  40. package/dist/public/assets/index-BxJPQpFM.css +1 -0
  41. package/dist/public/assets/index-CeXGOT_T.js +50 -0
  42. package/dist/public/assets/{login-direct-candidate-resolver-BOAgTuUf.js → login-direct-candidate-resolver-DkKyFtQJ.js} +1 -1
  43. package/dist/public/assets/{plugin-permission-copy-Cq99cnzV.js → plugin-permission-copy-CzN269Bk.js} +1 -1
  44. package/dist/public/assets/{plugins-api-BQTV5DOp.js → plugins-api-Bv9DHpLF.js} +1 -1
  45. package/dist/public/assets/{preferences-service-DJxbEEeg.js → preferences-service-D2ISL2Zz.js} +1 -1
  46. package/dist/public/assets/{relay-entry-D-LfvdiX.js → relay-entry-Bg0OisQy.js} +1 -1
  47. package/dist/public/assets/{terminal-runtime-meta-BJmy8dyK.js → terminal-runtime-meta-C8t-CIDF.js} +1 -1
  48. package/dist/public/assets/{useRegisteredDebugTemplates-DQAWVdCo.js → useRegisteredDebugTemplates-Bol3NVfN.js} +1 -1
  49. package/dist/public/assets/{workbench-navigation-MEzCSmsK.js → workbench-navigation-B7IjRQd8.js} +1 -1
  50. package/dist/public/index.html +2 -2
  51. package/dist/server/middlewares/auth-guard.js +10 -5
  52. package/dist/server/middlewares/auth-guard.js.map +1 -1
  53. package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.d.ts +11 -0
  54. package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.js +22 -0
  55. package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.js.map +1 -0
  56. package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.d.ts +23 -0
  57. package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.js +23 -0
  58. package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.js.map +1 -0
  59. package/dist/server/modules/affairs-indexer/contracts/src/index.d.ts +4 -0
  60. package/dist/server/modules/affairs-indexer/contracts/src/index.js +5 -0
  61. package/dist/server/modules/affairs-indexer/contracts/src/index.js.map +1 -0
  62. package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.d.ts +7 -0
  63. package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.js +2 -0
  64. package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.js.map +1 -0
  65. package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.d.ts +16 -0
  66. package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.js +2 -0
  67. package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.js.map +1 -0
  68. package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.d.ts +10 -0
  69. package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.js +215 -0
  70. package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.js.map +1 -0
  71. package/dist/server/modules/affairs-indexer/core/src/index.d.ts +31 -0
  72. package/dist/server/modules/affairs-indexer/core/src/index.js +32 -0
  73. package/dist/server/modules/affairs-indexer/core/src/index.js.map +1 -0
  74. package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.d.ts +20 -0
  75. package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.js +47 -0
  76. package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.js.map +1 -0
  77. package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.d.ts +17 -0
  78. package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.js +63 -0
  79. package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.js.map +1 -0
  80. package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.d.ts +12 -0
  81. package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.js +42 -0
  82. package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.js.map +1 -0
  83. package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.d.ts +7 -0
  84. package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.js +107 -0
  85. package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.js.map +1 -0
  86. package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.d.ts +19 -0
  87. package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.js +37 -0
  88. package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.js.map +1 -0
  89. package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.d.ts +7 -0
  90. package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.js +123 -0
  91. package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.js.map +1 -0
  92. package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.d.ts +8 -0
  93. package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.js +111 -0
  94. package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.js.map +1 -0
  95. package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.d.ts +42 -0
  96. package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.js +2 -0
  97. package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.js.map +1 -0
  98. package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.d.ts +18 -0
  99. package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.js +91 -0
  100. package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.js.map +1 -0
  101. package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.d.ts +18 -0
  102. package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.js +59 -0
  103. package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.js.map +1 -0
  104. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.d.ts +48 -0
  105. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js +193 -0
  106. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -0
  107. package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.d.ts +7 -0
  108. package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.js +371 -0
  109. package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.js.map +1 -0
  110. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.d.ts +10 -0
  111. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.js +55 -0
  112. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.js.map +1 -0
  113. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.d.ts +9 -0
  114. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.js +2 -0
  115. package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.js.map +1 -0
  116. package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.d.ts +7 -0
  117. package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.js +130 -0
  118. package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.js.map +1 -0
  119. package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.d.ts +7 -0
  120. package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.js +228 -0
  121. package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.js.map +1 -0
  122. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +205 -0
  123. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +1471 -0
  124. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -0
  125. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.d.ts +161 -0
  126. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js +1350 -0
  127. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -0
  128. package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.d.ts +32 -0
  129. package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.js +208 -0
  130. package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.js.map +1 -0
  131. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +30 -0
  132. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +66 -0
  133. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -0
  134. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.d.ts +33 -0
  135. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +705 -0
  136. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -0
  137. package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.d.ts +80 -0
  138. package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.js +193 -0
  139. package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.js.map +1 -0
  140. package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.d.ts +77 -0
  141. package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.js +467 -0
  142. package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.js.map +1 -0
  143. package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.d.ts +17 -0
  144. package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.js +264 -0
  145. package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.js.map +1 -0
  146. package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.d.ts +11 -0
  147. package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.js +76 -0
  148. package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.js.map +1 -0
  149. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.d.ts +26 -0
  150. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +305 -0
  151. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -0
  152. package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.d.ts +53 -0
  153. package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.js +566 -0
  154. package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.js.map +1 -0
  155. package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.d.ts +47 -0
  156. package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.js +227 -0
  157. package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.js.map +1 -0
  158. package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.d.ts +5 -0
  159. package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.js +245 -0
  160. package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.js.map +1 -0
  161. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.d.ts +14 -0
  162. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +87 -0
  163. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -0
  164. package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.d.ts +13 -0
  165. package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.js +16 -0
  166. package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.js.map +1 -0
  167. package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.d.ts +22 -0
  168. package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.js +430 -0
  169. package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.js.map +1 -0
  170. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +9 -0
  171. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +19 -0
  172. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -0
  173. package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.d.ts +21 -0
  174. package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.js +94 -0
  175. package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.js.map +1 -0
  176. package/dist/server/modules/affairs-indexer/core/src/utils/abort.d.ts +2 -0
  177. package/dist/server/modules/affairs-indexer/core/src/utils/abort.js +13 -0
  178. package/dist/server/modules/affairs-indexer/core/src/utils/abort.js.map +1 -0
  179. package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.d.ts +9 -0
  180. package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.js +64 -0
  181. package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.js.map +1 -0
  182. package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.d.ts +10 -0
  183. package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.js +230 -0
  184. package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.js.map +1 -0
  185. package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.d.ts +2 -0
  186. package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.js +19 -0
  187. package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.js.map +1 -0
  188. package/dist/server/modules/affairs-indexer/internal-command-runner.d.ts +31 -0
  189. package/dist/server/modules/affairs-indexer/internal-command-runner.js +643 -0
  190. package/dist/server/modules/affairs-indexer/internal-command-runner.js.map +1 -0
  191. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +0 -49
  192. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +10 -56
  193. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  194. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +2 -46
  195. package/dist/server/modules/assistant-capability/assistant-capability-service.js +15 -158
  196. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  197. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +4 -2
  198. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +62 -21
  199. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -1
  200. package/dist/server/modules/butler/butler-control-session-service.d.ts +3 -4
  201. package/dist/server/modules/butler/butler-control-session-service.js +39 -62
  202. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  203. package/dist/server/modules/butler/butler-controller.d.ts +11 -3
  204. package/dist/server/modules/butler/butler-controller.js +19 -4
  205. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  206. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  207. package/dist/server/modules/butler/butler-profile-service.d.ts +1 -1
  208. package/dist/server/modules/butler/butler-profile-service.js +34 -63
  209. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  210. package/dist/server/modules/butler/butler-project-service.d.ts +1 -3
  211. package/dist/server/modules/butler/butler-project-service.js +1 -7
  212. package/dist/server/modules/butler/butler-project-service.js.map +1 -1
  213. package/dist/server/modules/butler/butler-session-service.d.ts +1 -0
  214. package/dist/server/modules/butler/butler-session-service.js +109 -0
  215. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  216. package/dist/server/modules/butler/butler-session-summary-service.js +0 -2
  217. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  218. package/dist/server/modules/butler/butler-workspace-context.d.ts +5 -1
  219. package/dist/server/modules/butler/butler-workspace-context.js +21 -12
  220. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  221. package/dist/server/modules/file/file-content-service.d.ts +11 -0
  222. package/dist/server/modules/file/file-content-service.js +55 -0
  223. package/dist/server/modules/file/file-content-service.js.map +1 -1
  224. package/dist/server/modules/file/file-controller.d.ts +26 -1
  225. package/dist/server/modules/file/file-controller.js +59 -4
  226. package/dist/server/modules/file/file-controller.js.map +1 -1
  227. package/dist/server/modules/file/file-preview-link-service.d.ts +1 -0
  228. package/dist/server/modules/file/file-preview-link-service.js +25 -0
  229. package/dist/server/modules/file/file-preview-link-service.js.map +1 -1
  230. package/dist/server/modules/file/file-preview-service.js +15 -4
  231. package/dist/server/modules/file/file-preview-service.js.map +1 -1
  232. package/dist/server/modules/file/file-preview-types.d.ts +9 -1
  233. package/dist/server/modules/file/file-preview-types.js +8 -1
  234. package/dist/server/modules/file/file-preview-types.js.map +1 -1
  235. package/dist/server/modules/file/recent-modified-file-service.d.ts +15 -0
  236. package/dist/server/modules/file/recent-modified-file-service.js +102 -0
  237. package/dist/server/modules/file/recent-modified-file-service.js.map +1 -0
  238. package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +6 -0
  239. package/dist/server/modules/file/workspace-file-bridge-service.d.ts +11 -0
  240. package/dist/server/modules/file/workspace-file-bridge-service.js +19 -0
  241. package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
  242. package/dist/server/modules/file/workspace-index-apply-service.d.ts +25 -0
  243. package/dist/server/modules/file/workspace-index-apply-service.js +42 -0
  244. package/dist/server/modules/file/workspace-index-apply-service.js.map +1 -0
  245. package/dist/server/modules/office/office-controller.d.ts +15 -1
  246. package/dist/server/modules/office/office-controller.js +26 -1
  247. package/dist/server/modules/office/office-controller.js.map +1 -1
  248. package/dist/server/modules/office/onlyoffice-integration-service.d.ts +78 -0
  249. package/dist/server/modules/office/onlyoffice-integration-service.js +610 -0
  250. package/dist/server/modules/office/onlyoffice-integration-service.js.map +1 -0
  251. package/dist/server/modules/plugins/plugin-file-gateway-service.d.ts +12 -0
  252. package/dist/server/modules/plugins/plugin-file-gateway-service.js +13 -0
  253. package/dist/server/modules/plugins/plugin-file-gateway-service.js.map +1 -1
  254. package/dist/server/modules/preferences/profile-service.d.ts +1 -0
  255. package/dist/server/modules/preferences/profile-service.js +27 -3
  256. package/dist/server/modules/preferences/profile-service.js.map +1 -1
  257. package/dist/server/modules/sessions/codex-app-server-helper-process.js +0 -8
  258. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  259. package/dist/server/modules/sessions/session-controller.d.ts +1 -0
  260. package/dist/server/modules/sessions/session-controller.js +3 -0
  261. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  262. package/dist/server/modules/sessions/session-history-service.d.ts +2 -0
  263. package/dist/server/modules/sessions/session-history-service.js +78 -3
  264. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  265. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +1 -0
  266. package/dist/server/modules/sessions/session-live-runtime-service.js +4 -0
  267. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  268. package/dist/server/modules/sessions/session-permission-request-service.js +0 -4
  269. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  270. package/dist/server/modules/sessions/workspace-session-instruction-watch-service.d.ts +23 -0
  271. package/dist/server/modules/sessions/workspace-session-instruction-watch-service.js +122 -0
  272. package/dist/server/modules/sessions/workspace-session-instruction-watch-service.js.map +1 -0
  273. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +15 -0
  274. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +93 -10
  275. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -1
  276. package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +6 -7
  277. package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +2 -3
  278. package/dist/server/modules/system/host-resource-controller.d.ts +7 -0
  279. package/dist/server/modules/system/host-resource-controller.js +12 -0
  280. package/dist/server/modules/system/host-resource-controller.js.map +1 -0
  281. package/dist/server/modules/system/host-resource-service.d.ts +54 -0
  282. package/dist/server/modules/system/host-resource-service.js +162 -0
  283. package/dist/server/modules/system/host-resource-service.js.map +1 -0
  284. package/dist/server/modules/tasks/observability-service.d.ts +12 -2
  285. package/dist/server/modules/tasks/observability-service.js +13 -1
  286. package/dist/server/modules/tasks/observability-service.js.map +1 -1
  287. package/dist/server/modules/tasks/task-helper-client.d.ts +36 -2
  288. package/dist/server/modules/tasks/task-helper-client.js +201 -19
  289. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  290. package/dist/server/modules/tasks/task-helper-pool.d.ts +37 -0
  291. package/dist/server/modules/tasks/task-helper-pool.js +173 -0
  292. package/dist/server/modules/tasks/task-helper-pool.js.map +1 -0
  293. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +27 -0
  294. package/dist/server/modules/tasks/task-helper-process-handlers.js +25 -1
  295. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  296. package/dist/server/modules/tasks/task-helper-process.js +75 -26
  297. package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
  298. package/dist/server/modules/tasks/task-helper-scheduling.d.ts +11 -0
  299. package/dist/server/modules/tasks/task-helper-scheduling.js +43 -0
  300. package/dist/server/modules/tasks/task-helper-scheduling.js.map +1 -0
  301. package/dist/server/modules/tasks/task-lane-executors.js +19 -3
  302. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
  303. package/dist/server/modules/tasks/task-manager.d.ts +1 -0
  304. package/dist/server/modules/tasks/task-manager.js +3 -0
  305. package/dist/server/modules/tasks/task-manager.js.map +1 -1
  306. package/dist/server/modules/tasks/task-registry.d.ts +1 -0
  307. package/dist/server/modules/tasks/task-registry.js +3 -0
  308. package/dist/server/modules/tasks/task-registry.js.map +1 -1
  309. package/dist/server/modules/tasks/task-scheduler.d.ts +6 -0
  310. package/dist/server/modules/tasks/task-scheduler.js +162 -7
  311. package/dist/server/modules/tasks/task-scheduler.js.map +1 -1
  312. package/dist/server/modules/tasks/task-types.d.ts +28 -3
  313. package/dist/server/modules/tasks/task-types.js +14 -2
  314. package/dist/server/modules/tasks/task-types.js.map +1 -1
  315. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +68 -0
  316. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +286 -0
  317. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -0
  318. package/dist/server/modules/workbench/workbench-controller.js +11 -1
  319. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  320. package/dist/server/modules/workbench/workbench-service.d.ts +9 -2
  321. package/dist/server/modules/workbench/workbench-service.js +58 -18
  322. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  323. package/dist/server/modules/workspace/affairs-library-controller.d.ts +117 -0
  324. package/dist/server/modules/workspace/affairs-library-controller.js +164 -0
  325. package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -0
  326. package/dist/server/modules/workspace/affairs-library-debug-log.d.ts +23 -0
  327. package/dist/server/modules/workspace/affairs-library-debug-log.js +107 -0
  328. package/dist/server/modules/workspace/affairs-library-debug-log.js.map +1 -0
  329. package/dist/server/modules/workspace/affairs-library-dirty-watch-service.d.ts +52 -0
  330. package/dist/server/modules/workspace/affairs-library-dirty-watch-service.js +555 -0
  331. package/dist/server/modules/workspace/affairs-library-dirty-watch-service.js.map +1 -0
  332. package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +24 -0
  333. package/dist/server/modules/workspace/affairs-library-preview-link-service.js +157 -0
  334. package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -0
  335. package/dist/server/modules/workspace/affairs-library-refresh-contract.d.ts +56 -0
  336. package/dist/server/modules/workspace/affairs-library-refresh-contract.js +48 -0
  337. package/dist/server/modules/workspace/affairs-library-refresh-contract.js.map +1 -0
  338. package/dist/server/modules/workspace/affairs-library-service.d.ts +344 -0
  339. package/dist/server/modules/workspace/affairs-library-service.js +3755 -0
  340. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -0
  341. package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +78 -0
  342. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +146 -0
  343. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -0
  344. package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +133 -0
  345. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +1447 -0
  346. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -0
  347. package/dist/server/modules/workspace/affairs-tag-controller.d.ts +107 -0
  348. package/dist/server/modules/workspace/affairs-tag-controller.js +97 -0
  349. package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -0
  350. package/dist/server/modules/workspace/affairs-tag-service.d.ts +153 -0
  351. package/dist/server/modules/workspace/affairs-tag-service.js +680 -0
  352. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -0
  353. package/dist/server/modules/workspace/workspace-controller.d.ts +2 -1
  354. package/dist/server/modules/workspace/workspace-controller.js +8 -2
  355. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  356. package/dist/server/modules/workspace/workspace-service.js +60 -9
  357. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  358. package/dist/server/routes/affairs.d.ts +3 -0
  359. package/dist/server/routes/affairs.js +7 -0
  360. package/dist/server/routes/affairs.js.map +1 -0
  361. package/dist/server/routes/assistant.js +0 -5
  362. package/dist/server/routes/assistant.js.map +1 -1
  363. package/dist/server/routes/files.js +5 -0
  364. package/dist/server/routes/files.js.map +1 -1
  365. package/dist/server/routes/office.js +4 -0
  366. package/dist/server/routes/office.js.map +1 -1
  367. package/dist/server/routes/system.d.ts +2 -1
  368. package/dist/server/routes/system.js +2 -1
  369. package/dist/server/routes/system.js.map +1 -1
  370. package/dist/server/routes/workspaces.d.ts +4 -1
  371. package/dist/server/routes/workspaces.js +46 -1
  372. package/dist/server/routes/workspaces.js.map +1 -1
  373. package/dist/server/server/create-server.d.ts +6 -2
  374. package/dist/server/server/create-server.js +113 -32
  375. package/dist/server/server/create-server.js.map +1 -1
  376. package/dist/server/shared/http/error-handler.js +10 -0
  377. package/dist/server/shared/http/error-handler.js.map +1 -1
  378. package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.d.ts +10 -0
  379. package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.js +47 -0
  380. package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.js.map +1 -0
  381. package/dist/server/storage/repositories/butler-profile-repository.js +7 -3
  382. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
  383. package/dist/server/storage/repositories/office-onlyoffice-setting-repository.d.ts +19 -0
  384. package/dist/server/storage/repositories/office-onlyoffice-setting-repository.js +55 -0
  385. package/dist/server/storage/repositories/office-onlyoffice-setting-repository.js.map +1 -0
  386. package/dist/server/storage/repositories/session-index-repository.js +9 -2
  387. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  388. package/dist/server/storage/repositories/user-affairs-library-setting-repository.d.ts +10 -0
  389. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +69 -0
  390. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -0
  391. package/dist/server/storage/repositories/user-preference-profile-repository.js +6 -3
  392. package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -1
  393. package/dist/server/storage/repositories/workspace-navigation-state-repository.d.ts +3 -0
  394. package/dist/server/storage/repositories/workspace-navigation-state-repository.js +47 -4
  395. package/dist/server/storage/repositories/workspace-navigation-state-repository.js.map +1 -1
  396. package/dist/server/storage/sqlite/client.js +230 -123
  397. package/dist/server/storage/sqlite/client.js.map +1 -1
  398. package/dist/server/storage/sqlite/schema.sql +48 -25
  399. package/dist/server/types/domain.d.ts +27 -20
  400. package/dist/server/ws/workbench-ws-hub.js +2 -2
  401. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  402. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -2
  403. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +1 -1
  404. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -6
  405. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  406. package/package.json +1 -1
  407. package/dist/public/assets/AdaptiveButlerPage-B153lk5H.css +0 -1
  408. package/dist/public/assets/AdaptiveButlerPage-CJw8Ae62.js +0 -3
  409. package/dist/public/assets/DesktopModal-D_A8sgQU.js +0 -1
  410. package/dist/public/assets/DesktopWindowPage-DK7L7osV.js +0 -2
  411. package/dist/public/assets/FileContextPanel-BdCoubcJ.js +0 -1
  412. package/dist/public/assets/GitSidebar-BeZ0hj7A.js +0 -6
  413. package/dist/public/assets/MobileCreateSessionSheet-DfLMVu8q.js +0 -1
  414. package/dist/public/assets/MobileSheet-5kZ-w-gU.js +0 -1
  415. package/dist/public/assets/MobileWorkspaceSwitcherHeader-C6JMiOq_.js +0 -1
  416. package/dist/public/assets/PluginContainerPage-BlY-xJDh.js +0 -1
  417. package/dist/public/assets/SessionIndexPage-DkBp9Mqz.js +0 -1
  418. package/dist/public/assets/SettingsPage-C-ASmJAG.js +0 -2
  419. package/dist/public/assets/TerminalRuntimeFallbackModal-Bzum5nZ0.js +0 -1
  420. package/dist/public/assets/WorkbenchLayout-OFi6CWgH.js +0 -244
  421. package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +0 -1
  422. package/dist/public/assets/WorkbenchShellRoute-BAQe_E0O.js +0 -1
  423. package/dist/public/assets/WorkspaceDebugDetailPage-DhKa6e9y.js +0 -1
  424. package/dist/public/assets/file-tree-icon-Mg1DiBRX.js +0 -590
  425. package/dist/public/assets/index-C4t-vvqk.css +0 -1
  426. package/dist/public/assets/index-CL97fwWB.js +0 -42
  427. package/dist/public/assets/realtime-client-CLafKzzJ.js +0 -1
  428. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +0 -32
  429. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +0 -93
  430. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +0 -1
  431. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +0 -69
  432. package/dist/server/modules/butler/assistant-sandbox-service.js +0 -399
  433. package/dist/server/modules/butler/assistant-sandbox-service.js.map +0 -1
  434. package/dist/server/modules/channels/wechat-claw-client.d.ts +0 -51
  435. package/dist/server/modules/channels/wechat-claw-client.js +0 -245
  436. package/dist/server/modules/channels/wechat-claw-client.js.map +0 -1
  437. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +0 -18
  438. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +0 -191
  439. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ export class UserAffairsLibrarySettingRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ findByUserId(userId) {
7
+ const row = this.db
8
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
9
+ FROM user_affairs_library_settings
10
+ WHERE user_id = ?`)
11
+ .get(userId);
12
+ return row ? mapUserAffairsLibrarySettingRow(row) : null;
13
+ }
14
+ findEnabledByWorkspaceId(workspaceId) {
15
+ const row = this.db
16
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
17
+ FROM user_affairs_library_settings
18
+ WHERE last_workspace_id = ?
19
+ AND enabled = 1
20
+ AND root_dir IS NOT NULL
21
+ AND TRIM(root_dir) <> ''
22
+ ORDER BY datetime(updated_at) DESC
23
+ LIMIT 1`)
24
+ .get(workspaceId);
25
+ return row ? mapUserAffairsLibrarySettingRow(row) : null;
26
+ }
27
+ listEnabled() {
28
+ return this.db
29
+ .prepare(`SELECT user_id, root_dir, enabled, favorites_json, last_workspace_id, created_at, updated_at
30
+ FROM user_affairs_library_settings
31
+ WHERE enabled = 1
32
+ AND root_dir IS NOT NULL
33
+ AND TRIM(root_dir) <> ''`)
34
+ .all()
35
+ .map((row) => mapUserAffairsLibrarySettingRow(row));
36
+ }
37
+ upsert(record) {
38
+ this.db
39
+ .prepare(`INSERT INTO user_affairs_library_settings (
40
+ user_id,
41
+ root_dir,
42
+ enabled,
43
+ favorites_json,
44
+ last_workspace_id,
45
+ created_at,
46
+ updated_at
47
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
48
+ ON CONFLICT(user_id) DO UPDATE SET
49
+ root_dir = excluded.root_dir,
50
+ enabled = excluded.enabled,
51
+ favorites_json = excluded.favorites_json,
52
+ last_workspace_id = excluded.last_workspace_id,
53
+ updated_at = excluded.updated_at`)
54
+ .run(record.userId, record.rootDir, record.enabled ? 1 : 0, record.favoritesJson, record.lastWorkspaceId, record.createdAt, record.updatedAt);
55
+ return record;
56
+ }
57
+ }
58
+ function mapUserAffairsLibrarySettingRow(row) {
59
+ return {
60
+ userId: row.user_id,
61
+ rootDir: row.root_dir,
62
+ enabled: row.enabled === 1,
63
+ favoritesJson: row.favorites_json,
64
+ lastWorkspaceId: row.last_workspace_id,
65
+ createdAt: row.created_at,
66
+ updatedAt: row.updated_at
67
+ };
68
+ }
69
+ //# sourceMappingURL=user-affairs-library-setting-repository.js.map
@@ -0,0 +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"}
@@ -5,7 +5,7 @@ export class UserPreferenceProfileRepository {
5
5
  }
6
6
  findByUserId(userId) {
7
7
  const row = this.db
8
- .prepare(`SELECT language, theme, auto_theme, default_permission_mode, providers_json, debug_port_pools_json, created_at, updated_at
8
+ .prepare(`SELECT language, theme, auto_theme, default_permission_mode, providers_json, debug_port_pools_json, affairs_dashboard_states_json, created_at, updated_at
9
9
  FROM user_preference_profiles
10
10
  WHERE user_id = ?`)
11
11
  .get(userId);
@@ -20,6 +20,7 @@ export class UserPreferenceProfileRepository {
20
20
  defaultPermissionMode: row.default_permission_mode,
21
21
  providers: JSON.parse(row.providers_json),
22
22
  debugPortPools: JSON.parse(row.debug_port_pools_json),
23
+ affairsDashboardStatesByWorkspace: JSON.parse(row.affairs_dashboard_states_json),
23
24
  createdAt: row.created_at,
24
25
  updatedAt: row.updated_at
25
26
  };
@@ -34,9 +35,10 @@ export class UserPreferenceProfileRepository {
34
35
  default_permission_mode,
35
36
  providers_json,
36
37
  debug_port_pools_json,
38
+ affairs_dashboard_states_json,
37
39
  created_at,
38
40
  updated_at
39
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
41
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
40
42
  ON CONFLICT(user_id) DO UPDATE SET
41
43
  language = excluded.language,
42
44
  theme = excluded.theme,
@@ -44,8 +46,9 @@ export class UserPreferenceProfileRepository {
44
46
  default_permission_mode = excluded.default_permission_mode,
45
47
  providers_json = excluded.providers_json,
46
48
  debug_port_pools_json = excluded.debug_port_pools_json,
49
+ affairs_dashboard_states_json = excluded.affairs_dashboard_states_json,
47
50
  updated_at = excluded.updated_at`)
48
- .run(record.userId, record.language, record.theme, record.autoTheme ? 1 : 0, record.defaultPermissionMode, JSON.stringify(record.providers), JSON.stringify(record.debugPortPools), record.createdAt, record.updatedAt);
51
+ .run(record.userId, record.language, record.theme, record.autoTheme ? 1 : 0, record.defaultPermissionMode, JSON.stringify(record.providers), JSON.stringify(record.debugPortPools), JSON.stringify(record.affairsDashboardStatesByWorkspace), record.createdAt, record.updatedAt);
49
52
  return record;
50
53
  }
51
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-preference-profile-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-preference-profile-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,+BAA+B;IACb;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,CAAyC,CAAC;QAEvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,QAAmD;YACjE,KAAK,EAAE,GAAG,CAAC,KAA6C;YACxD,SAAS,EAAE,GAAG,CAAC,UAAU,KAAK,CAAC;YAC/B,qBAAqB,EAAE,GAAG,CAAC,uBAA+E;YAC1G,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAA6C;YACrF,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAkD;YACtG,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAmC;QACxC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;;2CAkBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,qBAAqB,EAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EACrC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"user-preference-profile-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/user-preference-profile-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,+BAA+B;IACb;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,CAAyC,CAAC;QAEvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,QAAmD;YACjE,KAAK,EAAE,GAAG,CAAC,KAA6C;YACxD,SAAS,EAAE,GAAG,CAAC,UAAU,KAAK,CAAC;YAC/B,qBAAqB,EAAE,GAAG,CAAC,uBAA+E;YAC1G,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAA6C;YACrF,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAkD;YACtG,iCAAiC,EAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAqE;YACnH,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAmC;QACxC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;;;;2CAoBmC,CACpC;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,qBAAqB,EAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,CAAC,EACxD,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -3,6 +3,9 @@ import type { WorkspaceNavigationStateRecord } from "../../types/domain.js";
3
3
  export declare class WorkspaceNavigationStateRepository {
4
4
  private readonly db;
5
5
  constructor(db: Database.Database);
6
+ listEnabledAffairsLibraries(): WorkspaceNavigationStateRecord[];
7
+ findAnyEnabledAffairsLibraryByWorkspaceId(workspaceId: string): WorkspaceNavigationStateRecord | null;
8
+ findLatestAffairsLibraryByWorkspaceId(workspaceId: string): WorkspaceNavigationStateRecord | null;
6
9
  listByUserId(userId: string): WorkspaceNavigationStateRecord[];
7
10
  findByWorkspaceIdAndUserId(workspaceId: string, userId: string): WorkspaceNavigationStateRecord | null;
8
11
  upsert(record: WorkspaceNavigationStateRecord): WorkspaceNavigationStateRecord;
@@ -3,9 +3,43 @@ export class WorkspaceNavigationStateRepository {
3
3
  constructor(db) {
4
4
  this.db = db;
5
5
  }
6
+ listEnabledAffairsLibraries() {
7
+ return this.db
8
+ .prepare(`SELECT workspace_id, user_id, collapsed, background_color, affairs_library_root_path, affairs_library_enabled, affairs_library_favorites_json, updated_at
9
+ FROM workspace_navigation_states
10
+ WHERE affairs_library_enabled = 1
11
+ AND affairs_library_root_path IS NOT NULL
12
+ AND TRIM(affairs_library_root_path) <> ''`)
13
+ .all()
14
+ .map((row) => mapWorkspaceNavigationStateRow(row));
15
+ }
16
+ findAnyEnabledAffairsLibraryByWorkspaceId(workspaceId) {
17
+ const row = this.db
18
+ .prepare(`SELECT workspace_id, user_id, collapsed, background_color, affairs_library_root_path, affairs_library_enabled, affairs_library_favorites_json, updated_at
19
+ FROM workspace_navigation_states
20
+ WHERE workspace_id = ?
21
+ AND affairs_library_enabled = 1
22
+ AND affairs_library_root_path IS NOT NULL
23
+ AND TRIM(affairs_library_root_path) <> ''
24
+ LIMIT 1`)
25
+ .get(workspaceId);
26
+ return row ? mapWorkspaceNavigationStateRow(row) : null;
27
+ }
28
+ findLatestAffairsLibraryByWorkspaceId(workspaceId) {
29
+ const row = this.db
30
+ .prepare(`SELECT workspace_id, user_id, collapsed, background_color, affairs_library_root_path, affairs_library_enabled, affairs_library_favorites_json, updated_at
31
+ FROM workspace_navigation_states
32
+ WHERE workspace_id = ?
33
+ AND affairs_library_root_path IS NOT NULL
34
+ AND TRIM(affairs_library_root_path) <> ''
35
+ ORDER BY datetime(updated_at) DESC
36
+ LIMIT 1`)
37
+ .get(workspaceId);
38
+ return row ? mapWorkspaceNavigationStateRow(row) : null;
39
+ }
6
40
  listByUserId(userId) {
7
41
  return this.db
8
- .prepare(`SELECT workspace_id, user_id, collapsed, background_color, updated_at
42
+ .prepare(`SELECT workspace_id, user_id, collapsed, background_color, affairs_library_root_path, affairs_library_enabled, affairs_library_favorites_json, updated_at
9
43
  FROM workspace_navigation_states
10
44
  WHERE user_id = ?`)
11
45
  .all(userId)
@@ -13,7 +47,7 @@ export class WorkspaceNavigationStateRepository {
13
47
  }
14
48
  findByWorkspaceIdAndUserId(workspaceId, userId) {
15
49
  const row = this.db
16
- .prepare(`SELECT workspace_id, user_id, collapsed, background_color, updated_at
50
+ .prepare(`SELECT workspace_id, user_id, collapsed, background_color, affairs_library_root_path, affairs_library_enabled, affairs_library_favorites_json, updated_at
17
51
  FROM workspace_navigation_states
18
52
  WHERE workspace_id = ?
19
53
  AND user_id = ?`)
@@ -27,13 +61,19 @@ export class WorkspaceNavigationStateRepository {
27
61
  user_id,
28
62
  collapsed,
29
63
  background_color,
64
+ affairs_library_root_path,
65
+ affairs_library_enabled,
66
+ affairs_library_favorites_json,
30
67
  updated_at
31
- ) VALUES (?, ?, ?, ?, ?)
68
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
32
69
  ON CONFLICT(workspace_id, user_id) DO UPDATE SET
33
70
  collapsed = excluded.collapsed,
34
71
  background_color = excluded.background_color,
72
+ affairs_library_root_path = excluded.affairs_library_root_path,
73
+ affairs_library_enabled = excluded.affairs_library_enabled,
74
+ affairs_library_favorites_json = excluded.affairs_library_favorites_json,
35
75
  updated_at = excluded.updated_at`)
36
- .run(record.workspaceId, record.userId, record.collapsed ? 1 : 0, record.backgroundColor, record.updatedAt);
76
+ .run(record.workspaceId, record.userId, record.collapsed ? 1 : 0, record.backgroundColor, record.affairsLibraryRootPath ?? null, record.affairsLibraryEnabled ? 1 : 0, record.affairsLibraryFavoritesJson ?? null, record.updatedAt);
37
77
  return record;
38
78
  }
39
79
  }
@@ -43,6 +83,9 @@ function mapWorkspaceNavigationStateRow(row) {
43
83
  userId: row.user_id,
44
84
  collapsed: row.collapsed === 1,
45
85
  backgroundColor: row.background_color,
86
+ affairsLibraryRootPath: row.affairs_library_root_path,
87
+ affairsLibraryEnabled: row.affairs_library_enabled === 1,
88
+ affairsLibraryFavoritesJson: row.affairs_library_favorites_json,
46
89
  updatedAt: row.updated_at
47
90
  };
48
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-navigation-state-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/workspace-navigation-state-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,kCAAkC;IAChB;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;2BAEmB,CACpB;aACA,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,8BAA8B,CAAC,GAAkC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,0BAA0B,CAAC,WAAmB,EAAE,MAAc;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;2BAGmB,CACpB;aACA,GAAG,CAAC,WAAW,EAAE,MAAM,CAA4C,CAAC;QAEvE,OAAO,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAsC;QAC3C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;4CAUoC,CACrC;aACA,GAAG,CACF,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAUD,SAAS,8BAA8B,CAAC,GAAgC;IACtE,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC;QAC9B,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workspace-navigation-state-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/workspace-navigation-state-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,kCAAkC;IAChB;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,2BAA2B;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;qDAI6C,CAC9C;aACA,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,8BAA8B,CAAC,GAAkC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,yCAAyC,CAAC,WAAmB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;iBAMS,CACV;aACA,GAAG,CAAC,WAAW,CAA4C,CAAC;QAE/D,OAAO,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,qCAAqC,CAAC,WAAmB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;iBAMS,CACV;aACA,GAAG,CAAC,WAAW,CAA4C,CAAC;QAE/D,OAAO,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;2BAEmB,CACpB;aACA,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,8BAA8B,CAAC,GAAkC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,0BAA0B,CAAC,WAAmB,EAAE,MAAc;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;2BAGmB,CACpB;aACA,GAAG,CAAC,WAAW,EAAE,MAAM,CAA4C,CAAC;QAEvE,OAAO,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAsC;QAC3C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;4CAgBoC,CACrC;aACA,GAAG,CACF,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,sBAAsB,IAAI,IAAI,EACrC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpC,MAAM,CAAC,2BAA2B,IAAI,IAAI,EAC1C,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAaD,SAAS,8BAA8B,CAAC,GAAgC;IACtE,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC;QAC9B,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,sBAAsB,EAAE,GAAG,CAAC,yBAAyB;QACrD,qBAAqB,EAAE,GAAG,CAAC,uBAAuB,KAAK,CAAC;QACxD,2BAA2B,EAAE,GAAG,CAAC,8BAA8B;QAC/D,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -16,6 +16,7 @@ export function createDatabaseClient(databasePath) {
16
16
  ensureWorkspaceRemovalColumn(db);
17
17
  ensureWorkspaceSortOrderColumn(db);
18
18
  ensureWorkspaceNavigationBackgroundColorColumn(db);
19
+ ensureWorkspaceNavigationAffairsLibraryColumns(db);
19
20
  ensureOpenCliProviderSchema(db);
20
21
  ensureOpenCliCatalogSchema(db);
21
22
  ensureOpenCliRuntimeProfileSchema(db);
@@ -45,11 +46,12 @@ export function createDatabaseClient(databasePath) {
45
46
  ensureTerminalCommandTemplateDebugSchema(db);
46
47
  ensureTerminalInstanceDebugSchema(db);
47
48
  ensureUserPreferenceProfileSchema(db);
49
+ ensureUserAffairsLibrarySettingsSchema(db);
48
50
  ensureButlerProfileSchema(db);
49
51
  ensureButlerControlSessionSchema(db);
50
52
  ensureButlerControlTimerSchema(db);
51
53
  ensureAssistantAutomationSchema(db);
52
- ensureAssistantSandboxSchema(db);
54
+ ensureOnlyOfficeSettingsSchema(db);
53
55
  ensureDocumentTemplateSchema(db);
54
56
  ensurePluginRegistrySchema(db);
55
57
  ensurePluginRuntimeSessionSchema(db);
@@ -248,6 +250,24 @@ function ensureAuthDeviceSchema(db) {
248
250
  db.exec("ALTER TABLE auth_devices ADD COLUMN user_agent TEXT");
249
251
  }
250
252
  }
253
+ function ensureWorkspaceNavigationAffairsLibraryColumns(db) {
254
+ if (!tableExists(db, "workspace_navigation_states")) {
255
+ return;
256
+ }
257
+ const columns = db
258
+ .prepare("PRAGMA table_info(workspace_navigation_states)")
259
+ .all();
260
+ const columnNames = new Set(columns.map((column) => column.name));
261
+ if (!columnNames.has("affairs_library_root_path")) {
262
+ db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_root_path TEXT");
263
+ }
264
+ if (!columnNames.has("affairs_library_enabled")) {
265
+ db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_enabled INTEGER NOT NULL DEFAULT 0 CHECK (affairs_library_enabled IN (0, 1))");
266
+ }
267
+ if (!columnNames.has("affairs_library_favorites_json")) {
268
+ db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_favorites_json TEXT");
269
+ }
270
+ }
251
271
  function ensurePluginRegistrySchema(db) {
252
272
  db.exec(`
253
273
  CREATE TABLE IF NOT EXISTS plugin_definitions (
@@ -635,10 +655,13 @@ function ensureButlerProfileSchema(db) {
635
655
  const columns = db
636
656
  .prepare("PRAGMA table_info(butler_profiles)")
637
657
  .all();
638
- if (columns.some((column) => column.name === "display_name")) {
639
- return;
658
+ const columnNames = new Set(columns.map((column) => column.name));
659
+ if (!columnNames.has("display_name")) {
660
+ db.exec("ALTER TABLE butler_profiles ADD COLUMN display_name TEXT NOT NULL DEFAULT '代码助手'");
661
+ }
662
+ if (!columnNames.has("setup_completed")) {
663
+ db.exec("ALTER TABLE butler_profiles ADD COLUMN setup_completed INTEGER NOT NULL DEFAULT 0 CHECK (setup_completed IN (0, 1))");
640
664
  }
641
- db.exec("ALTER TABLE butler_profiles ADD COLUMN display_name TEXT NOT NULL DEFAULT '代码助手'");
642
665
  }
643
666
  function ensureUserPreferenceProfileSchema(db) {
644
667
  const columns = db
@@ -655,6 +678,191 @@ function ensureUserPreferenceProfileSchema(db) {
655
678
  db.exec(`ALTER TABLE user_preference_profiles
656
679
  ADD COLUMN debug_port_pools_json TEXT NOT NULL DEFAULT '{"start":43000,"end":47999}'`);
657
680
  }
681
+ if (!columnNames.has("affairs_dashboard_states_json")) {
682
+ db.exec(`ALTER TABLE user_preference_profiles
683
+ ADD COLUMN affairs_dashboard_states_json TEXT NOT NULL DEFAULT '{}'`);
684
+ }
685
+ migrateLegacyAffairsShortcutAppsColumn(db, columnNames);
686
+ }
687
+ function migrateLegacyAffairsShortcutAppsColumn(db, columnNames) {
688
+ if (!tableExists(db, "user_preference_profiles")) {
689
+ return;
690
+ }
691
+ const resolvedColumnNames = columnNames
692
+ ?? new Set(db.prepare("PRAGMA table_info(user_preference_profiles)").all()
693
+ .map((column) => column.name));
694
+ if (!resolvedColumnNames.has("affairs_shortcut_apps_json")) {
695
+ return;
696
+ }
697
+ const rows = db
698
+ .prepare(`SELECT
699
+ user_id,
700
+ language,
701
+ theme,
702
+ auto_theme,
703
+ default_permission_mode,
704
+ providers_json,
705
+ debug_port_pools_json,
706
+ affairs_dashboard_states_json,
707
+ affairs_shortcut_apps_json,
708
+ created_at,
709
+ updated_at
710
+ FROM user_preference_profiles`)
711
+ .all();
712
+ const migratedRows = rows.map((row) => ({
713
+ ...row,
714
+ affairs_dashboard_states_json: JSON.stringify(mergeLegacyShortcutAppsIntoDashboardStates(parseJsonObjectRecord(row.affairs_dashboard_states_json), parseJsonObjectRecord(row.affairs_shortcut_apps_json)))
715
+ }));
716
+ db.exec("BEGIN IMMEDIATE");
717
+ try {
718
+ db.exec(`
719
+ ALTER TABLE user_preference_profiles RENAME TO user_preference_profiles_legacy;
720
+
721
+ CREATE TABLE user_preference_profiles (
722
+ user_id TEXT PRIMARY KEY,
723
+ language TEXT NOT NULL CHECK (language IN ('zh-CN', 'en-US')),
724
+ theme TEXT NOT NULL CHECK (theme IN ('light', 'dark', 'sky-blue', 'eye-green')),
725
+ auto_theme INTEGER NOT NULL DEFAULT 0 CHECK (auto_theme IN (0, 1)),
726
+ default_permission_mode TEXT NOT NULL CHECK (
727
+ default_permission_mode IN ('default', 'acceptEdits', 'bypassPermissions')
728
+ ),
729
+ providers_json TEXT NOT NULL,
730
+ debug_port_pools_json TEXT NOT NULL,
731
+ affairs_dashboard_states_json TEXT NOT NULL DEFAULT '{}',
732
+ created_at TEXT NOT NULL,
733
+ updated_at TEXT NOT NULL,
734
+ FOREIGN KEY (user_id) REFERENCES auth_users(id)
735
+ )
736
+ `);
737
+ const insertStatement = db.prepare(`
738
+ INSERT INTO user_preference_profiles (
739
+ user_id,
740
+ language,
741
+ theme,
742
+ auto_theme,
743
+ default_permission_mode,
744
+ providers_json,
745
+ debug_port_pools_json,
746
+ affairs_dashboard_states_json,
747
+ created_at,
748
+ updated_at
749
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
750
+ `);
751
+ for (const row of migratedRows) {
752
+ insertStatement.run(row.user_id, row.language, row.theme, row.auto_theme, row.default_permission_mode, row.providers_json, row.debug_port_pools_json, row.affairs_dashboard_states_json, row.created_at, row.updated_at);
753
+ }
754
+ db.exec("DROP TABLE user_preference_profiles_legacy");
755
+ db.exec("COMMIT");
756
+ }
757
+ catch (error) {
758
+ db.exec("ROLLBACK");
759
+ throw error;
760
+ }
761
+ }
762
+ function parseJsonObjectRecord(value) {
763
+ try {
764
+ const parsed = JSON.parse(value);
765
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
766
+ return {};
767
+ }
768
+ return { ...parsed };
769
+ }
770
+ catch {
771
+ return {};
772
+ }
773
+ }
774
+ function mergeLegacyShortcutAppsIntoDashboardStates(dashboardStatesByWorkspace, legacyShortcutAppsByWorkspace) {
775
+ const result = {
776
+ ...dashboardStatesByWorkspace
777
+ };
778
+ for (const [workspaceId, shortcutApps] of Object.entries(legacyShortcutAppsByWorkspace)) {
779
+ const normalizedWorkspaceId = workspaceId.trim();
780
+ if (!normalizedWorkspaceId || Object.prototype.hasOwnProperty.call(result, normalizedWorkspaceId)) {
781
+ continue;
782
+ }
783
+ if (!Array.isArray(shortcutApps)) {
784
+ continue;
785
+ }
786
+ result[normalizedWorkspaceId] = {
787
+ workspaceId: normalizedWorkspaceId,
788
+ shortcutApps
789
+ };
790
+ }
791
+ return result;
792
+ }
793
+ function ensureUserAffairsLibrarySettingsSchema(db) {
794
+ if (!tableExists(db, "user_affairs_library_settings")) {
795
+ db.exec(`
796
+ CREATE TABLE user_affairs_library_settings (
797
+ user_id TEXT PRIMARY KEY,
798
+ root_dir TEXT,
799
+ enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
800
+ favorites_json TEXT,
801
+ last_workspace_id TEXT,
802
+ created_at TEXT NOT NULL,
803
+ updated_at TEXT NOT NULL,
804
+ FOREIGN KEY (user_id) REFERENCES auth_users(id)
805
+ )
806
+ `);
807
+ return;
808
+ }
809
+ const columns = db
810
+ .prepare("PRAGMA table_info(user_affairs_library_settings)")
811
+ .all();
812
+ const columnNames = new Set(columns.map((column) => column.name));
813
+ if (!columnNames.has("favorites_json")) {
814
+ db.exec("ALTER TABLE user_affairs_library_settings ADD COLUMN favorites_json TEXT");
815
+ }
816
+ if (!columnNames.has("last_workspace_id")) {
817
+ db.exec("ALTER TABLE user_affairs_library_settings ADD COLUMN last_workspace_id TEXT");
818
+ }
819
+ migrateLegacyAffairsLibrarySettings(db);
820
+ }
821
+ function migrateLegacyAffairsLibrarySettings(db) {
822
+ if (!tableExists(db, "workspace_navigation_states") || !tableExists(db, "user_affairs_library_settings")) {
823
+ return;
824
+ }
825
+ db.exec(`
826
+ INSERT INTO user_affairs_library_settings (
827
+ user_id,
828
+ root_dir,
829
+ enabled,
830
+ favorites_json,
831
+ last_workspace_id,
832
+ created_at,
833
+ updated_at
834
+ )
835
+ SELECT
836
+ legacy.user_id,
837
+ legacy.affairs_library_root_path,
838
+ legacy.affairs_library_enabled,
839
+ legacy.affairs_library_favorites_json,
840
+ legacy.workspace_id,
841
+ legacy.updated_at,
842
+ legacy.updated_at
843
+ FROM (
844
+ SELECT
845
+ workspace_id,
846
+ user_id,
847
+ affairs_library_root_path,
848
+ affairs_library_enabled,
849
+ affairs_library_favorites_json,
850
+ updated_at,
851
+ ROW_NUMBER() OVER (
852
+ PARTITION BY user_id
853
+ ORDER BY datetime(updated_at) DESC
854
+ ) AS row_number
855
+ FROM workspace_navigation_states
856
+ WHERE affairs_library_root_path IS NOT NULL
857
+ AND TRIM(affairs_library_root_path) <> ''
858
+ ) AS legacy
859
+ WHERE legacy.row_number = 1
860
+ AND NOT EXISTS (
861
+ SELECT 1
862
+ FROM user_affairs_library_settings AS current
863
+ WHERE current.user_id = legacy.user_id
864
+ )
865
+ `);
658
866
  }
659
867
  function ensureManagedSkillScopeSchema(db) {
660
868
  if (!tableExists(db, "managed_skills")) {
@@ -912,125 +1120,6 @@ function ensureAssistantAutomationSchema(db) {
912
1120
  ON assistant_automation_runs(automation_id, created_at DESC);
913
1121
  `);
914
1122
  }
915
- function ensureAssistantSandboxSchema(db) {
916
- const columns = db
917
- .prepare("PRAGMA table_info(assistant_sandboxes)")
918
- .all();
919
- if (columns.length > 0) {
920
- const columnNames = new Set(columns.map((column) => column.name));
921
- const tableSql = db
922
- .prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'assistant_sandboxes'")
923
- .get()?.sql ?? "";
924
- const needsStatusConstraintRebuild = !tableSql.includes("'orphaned'");
925
- if (needsStatusConstraintRebuild) {
926
- const hasControlSessionId = columnNames.has("control_session_id");
927
- const rebuild = db.transaction(() => {
928
- db.exec("ALTER TABLE assistant_sandboxes RENAME TO assistant_sandboxes_legacy");
929
- db.exec(`
930
- CREATE TABLE assistant_sandboxes (
931
- id TEXT PRIMARY KEY,
932
- user_id TEXT NOT NULL,
933
- workspace_id TEXT NOT NULL UNIQUE,
934
- control_session_id TEXT,
935
- title TEXT NOT NULL,
936
- description TEXT,
937
- source_kind TEXT NOT NULL CHECK (source_kind IN ('blank', 'clone')),
938
- source_ref TEXT,
939
- visibility TEXT NOT NULL CHECK (visibility IN ('assistant_only', 'pinned')),
940
- status TEXT NOT NULL CHECK (status IN ('active', 'archived', 'expired', 'orphaned', 'deleted')),
941
- purpose TEXT,
942
- expires_at TEXT,
943
- promoted_at TEXT,
944
- created_at TEXT NOT NULL,
945
- updated_at TEXT NOT NULL,
946
- FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
947
- FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
948
- FOREIGN KEY (control_session_id) REFERENCES butler_control_sessions(id) ON DELETE SET NULL
949
- );
950
- `);
951
- db.exec(`
952
- INSERT INTO assistant_sandboxes (
953
- id,
954
- user_id,
955
- workspace_id,
956
- control_session_id,
957
- title,
958
- description,
959
- source_kind,
960
- source_ref,
961
- visibility,
962
- status,
963
- purpose,
964
- expires_at,
965
- promoted_at,
966
- created_at,
967
- updated_at
968
- )
969
- SELECT
970
- id,
971
- user_id,
972
- workspace_id,
973
- ${hasControlSessionId ? "control_session_id" : "NULL"},
974
- title,
975
- description,
976
- source_kind,
977
- source_ref,
978
- visibility,
979
- status,
980
- purpose,
981
- expires_at,
982
- promoted_at,
983
- created_at,
984
- updated_at
985
- FROM assistant_sandboxes_legacy;
986
- `);
987
- db.exec("DROP TABLE assistant_sandboxes_legacy");
988
- });
989
- rebuild();
990
- }
991
- else if (!columnNames.has("control_session_id")) {
992
- db.exec("ALTER TABLE assistant_sandboxes ADD COLUMN control_session_id TEXT");
993
- }
994
- db.exec(`
995
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_user_status
996
- ON assistant_sandboxes(user_id, status, updated_at DESC);
997
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_workspace
998
- ON assistant_sandboxes(workspace_id, status, updated_at DESC);
999
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_control_session
1000
- ON assistant_sandboxes(control_session_id, status, updated_at DESC);
1001
- `);
1002
- return;
1003
- }
1004
- db.exec(`
1005
- CREATE TABLE IF NOT EXISTS assistant_sandboxes (
1006
- id TEXT PRIMARY KEY,
1007
- user_id TEXT NOT NULL,
1008
- workspace_id TEXT NOT NULL UNIQUE,
1009
- control_session_id TEXT,
1010
- title TEXT NOT NULL,
1011
- description TEXT,
1012
- source_kind TEXT NOT NULL CHECK (source_kind IN ('blank', 'clone')),
1013
- source_ref TEXT,
1014
- visibility TEXT NOT NULL CHECK (visibility IN ('assistant_only', 'pinned')),
1015
- status TEXT NOT NULL CHECK (status IN ('active', 'archived', 'expired', 'orphaned', 'deleted')),
1016
- purpose TEXT,
1017
- expires_at TEXT,
1018
- promoted_at TEXT,
1019
- created_at TEXT NOT NULL,
1020
- updated_at TEXT NOT NULL,
1021
- FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
1022
- FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
1023
- FOREIGN KEY (control_session_id) REFERENCES butler_control_sessions(id) ON DELETE SET NULL
1024
- );
1025
-
1026
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_user_status
1027
- ON assistant_sandboxes(user_id, status, updated_at DESC);
1028
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_workspace
1029
- ON assistant_sandboxes(workspace_id, status, updated_at DESC);
1030
- CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_control_session
1031
- ON assistant_sandboxes(control_session_id, status, updated_at DESC);
1032
- `);
1033
- }
1034
1123
  function ensureVerificationRunSchema(db) {
1035
1124
  const verificationRunSql = readTableSql(db, "verification_runs");
1036
1125
  if (!verificationRunSql.includes("status IN ('queued', 'running', 'passed', 'failed', 'skipped')")) {
@@ -1121,6 +1210,21 @@ function ensureDocumentTemplateSchema(db) {
1121
1210
  db.exec("ALTER TABLE document_templates ADD COLUMN template_source_path TEXT");
1122
1211
  }
1123
1212
  }
1213
+ function ensureOnlyOfficeSettingsSchema(db) {
1214
+ if (!tableExists(db, "office_onlyoffice_settings")) {
1215
+ return;
1216
+ }
1217
+ const columns = db
1218
+ .prepare("PRAGMA table_info(office_onlyoffice_settings)")
1219
+ .all();
1220
+ const columnNames = new Set(columns.map((column) => column.name));
1221
+ if (!columnNames.has("user_display_name")) {
1222
+ db.exec("ALTER TABLE office_onlyoffice_settings ADD COLUMN user_display_name TEXT");
1223
+ }
1224
+ if (!columnNames.has("user_avatar_url")) {
1225
+ db.exec("ALTER TABLE office_onlyoffice_settings ADD COLUMN user_avatar_url TEXT");
1226
+ }
1227
+ }
1124
1228
  function ensureOpsTargetWorkspaceSchema(db) {
1125
1229
  if (!tableExists(db, "ops_targets")) {
1126
1230
  return;
@@ -1526,6 +1630,9 @@ function ensureSessionRelationColumns(db) {
1526
1630
  .prepare("PRAGMA table_info(session_indices)")
1527
1631
  .all();
1528
1632
  const columnNames = new Set(columns.map((column) => column.name));
1633
+ if (!columnNames.has("session_visibility")) {
1634
+ db.exec("ALTER TABLE session_indices ADD COLUMN session_visibility TEXT NOT NULL DEFAULT 'workspace' CHECK (session_visibility IN ('workspace', 'affairs_lightweight'))");
1635
+ }
1529
1636
  if (!columnNames.has("parent_session_id")) {
1530
1637
  db.exec("ALTER TABLE session_indices ADD COLUMN parent_session_id TEXT");
1531
1638
  }