@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,555 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { isIncludedHiddenPath, normalizeIncludedHiddenPaths } from "../affairs-indexer/core/src/scanner/file-scanner.js";
4
+ import { writeAffairsLibraryDebugLog } from "./affairs-library-debug-log.js";
5
+ const CONFIG_RELATIVE_PATH = ".ai-index/doc-semantic-index.config.json";
6
+ const INDEX_EXPORTS_RELATIVE_PATH = ".ai-index/exports";
7
+ const INDEX_EXPORT_STATUS_RELATIVE_PATH = ".ai-index/exports/status.json";
8
+ const INDEX_EXPORT_MANIFEST_RELATIVE_PATH = ".ai-index/exports/manifest.json";
9
+ const AUTO_REFRESH_QUIET_WINDOW_MS = 800;
10
+ const PERIODIC_AUDIT_INTERVAL_MS = 10 * 60 * 1000;
11
+ const INDEX_DIR_NAME = ".ai-index";
12
+ const DIRECTORY_EVENT_RECENT_WINDOW_MS = 5_000;
13
+ const DIRECTORY_EVENT_SCAN_LIMIT = 2_000;
14
+ const TEMPORARY_FILE_PATTERNS = [
15
+ /\.swp$/i,
16
+ /\.swo$/i,
17
+ /\.swx$/i,
18
+ /\.tmp$/i,
19
+ /\.temp$/i,
20
+ /\.bak$/i,
21
+ /\.orig$/i,
22
+ /\.part$/i,
23
+ /\.partial$/i,
24
+ /\.download$/i,
25
+ /\.crdownload$/i,
26
+ /~$/i,
27
+ /^~\$/i,
28
+ /^\.~.+/i,
29
+ /^#.*#$/i,
30
+ /^\.#.+/i,
31
+ /^\.goutputstream-.+/i,
32
+ /^\.tmp.+/i,
33
+ /^\.DS_Store$/i
34
+ ];
35
+ /**
36
+ * 外部文件自动刷新服务。
37
+ *
38
+ * 这一版不再用 chokidar 递归盯整棵资料库,改成每个资料库根目录只挂一个
39
+ * `fs.watch(..., { recursive: true })`。这样句柄数量跟“资料库数量”相关,
40
+ * 不再跟目录树规模线性增长。
41
+ *
42
+ * 规则:
43
+ * - 配置文件:继续走专用链路
44
+ * - 普通文档:走 targeted refresh
45
+ * - 常见临时文件:直接忽略
46
+ * - 再补一层低频周期刷新,给外部 watcher 漏事件兜底
47
+ */
48
+ export class AffairsLibraryDirtyWatchService {
49
+ listEnabledBindings;
50
+ getEnabledBindingByWorkspaceId;
51
+ onWorkspaceDirty;
52
+ logger;
53
+ watchersByWorkspace = new Map();
54
+ debounceTimers = new Map();
55
+ pendingDirtyStateByWorkspace = new Map();
56
+ constructor(listEnabledBindings, getEnabledBindingByWorkspaceId, onWorkspaceDirty, logger) {
57
+ this.listEnabledBindings = listEnabledBindings;
58
+ this.getEnabledBindingByWorkspaceId = getEnabledBindingByWorkspaceId;
59
+ this.onWorkspaceDirty = onWorkspaceDirty;
60
+ this.logger = logger;
61
+ }
62
+ syncAll() {
63
+ const enabledBindings = this.listEnabledBindings();
64
+ const activeWorkspaceIds = new Set(enabledBindings
65
+ .map((item) => item.workspaceId?.trim() ?? "")
66
+ .filter(Boolean));
67
+ for (const binding of enabledBindings) {
68
+ const workspaceId = binding.workspaceId?.trim() ?? "";
69
+ const rootDir = binding.rootDir?.trim() ?? "";
70
+ if (workspaceId && rootDir && binding.enabled) {
71
+ this.ensureWorkspaceWatch(workspaceId, rootDir);
72
+ }
73
+ }
74
+ for (const workspaceId of [...this.watchersByWorkspace.keys()]) {
75
+ if (!activeWorkspaceIds.has(workspaceId)) {
76
+ this.stopWorkspaceWatch(workspaceId);
77
+ }
78
+ }
79
+ }
80
+ syncWorkspace(workspaceId) {
81
+ const state = this.getEnabledBindingByWorkspaceId(workspaceId);
82
+ const rootDir = state?.rootDir?.trim() ?? "";
83
+ if (!rootDir) {
84
+ this.stopWorkspaceWatch(workspaceId);
85
+ return;
86
+ }
87
+ this.ensureWorkspaceWatch(workspaceId, rootDir);
88
+ }
89
+ dispose() {
90
+ for (const timer of this.debounceTimers.values()) {
91
+ clearTimeout(timer);
92
+ }
93
+ this.debounceTimers.clear();
94
+ this.pendingDirtyStateByWorkspace.clear();
95
+ for (const entry of this.watchersByWorkspace.values()) {
96
+ if (entry.periodicTimer) {
97
+ clearInterval(entry.periodicTimer);
98
+ }
99
+ entry.watcher.close();
100
+ }
101
+ this.watchersByWorkspace.clear();
102
+ }
103
+ ensureWorkspaceWatch(workspaceId, rootDir) {
104
+ if (!fs.existsSync(rootDir) || !fs.statSync(rootDir).isDirectory()) {
105
+ this.stopWorkspaceWatch(workspaceId);
106
+ this.logger.info({
107
+ workspaceId,
108
+ rootDir,
109
+ skipped: "root_dir_invalid"
110
+ }, "事务文档库外部刷新监听已跳过,根目录当前不可用");
111
+ writeAffairsLibraryDebugLog({
112
+ event: "watch_service_skipped",
113
+ processRole: "host",
114
+ workspaceId,
115
+ rootDir,
116
+ source: "affairs_library.watch",
117
+ status: "skipped",
118
+ message: "根目录当前不可用"
119
+ });
120
+ return;
121
+ }
122
+ const existing = this.watchersByWorkspace.get(workspaceId);
123
+ if (existing?.rootDir === rootDir) {
124
+ return;
125
+ }
126
+ if (existing) {
127
+ this.stopWorkspaceWatch(workspaceId);
128
+ }
129
+ try {
130
+ const watcher = fs.watch(rootDir, { persistent: true, recursive: true }, (eventType, fileName) => {
131
+ try {
132
+ this.handleFsWatchEvent(workspaceId, rootDir, eventType, fileName);
133
+ }
134
+ catch (error) {
135
+ this.logger.warn({
136
+ workspaceId,
137
+ rootDir,
138
+ eventType,
139
+ fileName: normalizeFsWatchFileName(fileName),
140
+ error: error instanceof Error ? error.message : String(error),
141
+ source: "affairs_library.watch"
142
+ }, "事务文档库外部刷新监听处理文件变动失败");
143
+ }
144
+ });
145
+ watcher.on("error", (error) => {
146
+ this.logger.warn({
147
+ workspaceId,
148
+ rootDir,
149
+ error: error instanceof Error ? error.message : String(error),
150
+ source: "affairs_library.watch"
151
+ }, "事务文档库外部刷新监听异常,已停止当前监听,等待下次同步恢复");
152
+ this.stopWorkspaceWatch(workspaceId);
153
+ });
154
+ const periodicTimer = setInterval(() => {
155
+ this.onWorkspaceDirty(workspaceId, {
156
+ kind: "audit",
157
+ reason: "periodic_audit"
158
+ });
159
+ }, PERIODIC_AUDIT_INTERVAL_MS);
160
+ this.watchersByWorkspace.set(workspaceId, {
161
+ rootDir,
162
+ watcher,
163
+ periodicTimer
164
+ });
165
+ this.logger.info({
166
+ workspaceId,
167
+ rootDir,
168
+ periodicAuditIntervalMs: PERIODIC_AUDIT_INTERVAL_MS,
169
+ source: "affairs_library.watch"
170
+ }, "事务文档库外部刷新监听已启动");
171
+ writeAffairsLibraryDebugLog({
172
+ event: "watch_service_started",
173
+ processRole: "host",
174
+ workspaceId,
175
+ rootDir,
176
+ source: "affairs_library.watch",
177
+ status: "running",
178
+ details: {
179
+ periodicAuditIntervalMs: PERIODIC_AUDIT_INTERVAL_MS
180
+ }
181
+ });
182
+ }
183
+ catch (error) {
184
+ this.logger.warn({
185
+ workspaceId,
186
+ rootDir,
187
+ error: error instanceof Error ? error.message : String(error),
188
+ source: "affairs_library.watch"
189
+ }, "事务文档库外部刷新监听启动失败");
190
+ writeAffairsLibraryDebugLog({
191
+ event: "watch_service_failed_to_start",
192
+ processRole: "host",
193
+ workspaceId,
194
+ rootDir,
195
+ source: "affairs_library.watch",
196
+ status: "failed",
197
+ message: error instanceof Error ? error.message : String(error)
198
+ });
199
+ this.stopWorkspaceWatch(workspaceId);
200
+ }
201
+ }
202
+ stopWorkspaceWatch(workspaceId) {
203
+ const timer = this.debounceTimers.get(workspaceId);
204
+ if (timer) {
205
+ clearTimeout(timer);
206
+ this.debounceTimers.delete(workspaceId);
207
+ }
208
+ this.pendingDirtyStateByWorkspace.delete(workspaceId);
209
+ const entry = this.watchersByWorkspace.get(workspaceId);
210
+ if (!entry) {
211
+ return;
212
+ }
213
+ if (entry.periodicTimer) {
214
+ clearInterval(entry.periodicTimer);
215
+ }
216
+ entry.watcher.close();
217
+ this.watchersByWorkspace.delete(workspaceId);
218
+ this.logger.info({
219
+ workspaceId,
220
+ rootDir: entry.rootDir,
221
+ source: "affairs_library.watch"
222
+ }, "事务文档库外部刷新监听已停止");
223
+ writeAffairsLibraryDebugLog({
224
+ event: "watch_service_stopped",
225
+ processRole: "host",
226
+ workspaceId,
227
+ rootDir: entry.rootDir,
228
+ source: "affairs_library.watch",
229
+ status: "stopped"
230
+ });
231
+ }
232
+ handleFsWatchEvent(workspaceId, rootDir, eventType, fileName) {
233
+ const relativePath = this.normalizeRelativePath(rootDir, fileName);
234
+ if (!relativePath) {
235
+ return;
236
+ }
237
+ const dirtyState = this.getOrCreatePendingDirtyState(workspaceId);
238
+ const missingIndexArtifactReason = this.detectMissingIndexArtifactReason(rootDir, relativePath);
239
+ if (missingIndexArtifactReason) {
240
+ dirtyState.indexChanged = true;
241
+ dirtyState.reasons.add(missingIndexArtifactReason);
242
+ this.logger.info({
243
+ workspaceId,
244
+ rootDir,
245
+ eventType,
246
+ relativePath,
247
+ reason: missingIndexArtifactReason,
248
+ source: "affairs_library.watch"
249
+ }, "事务文档库外部刷新监听发现索引产物缺失,已提交重建脏标记");
250
+ writeAffairsLibraryDebugLog({
251
+ event: "watch_missing_artifact_detected",
252
+ processRole: "host",
253
+ workspaceId,
254
+ rootDir,
255
+ source: "affairs_library.watch",
256
+ eventType,
257
+ targetPath: relativePath,
258
+ reason: missingIndexArtifactReason,
259
+ status: "dirty_marked"
260
+ });
261
+ this.scheduleWorkspaceRefresh(workspaceId);
262
+ return;
263
+ }
264
+ const effectiveTargetPath = this.resolveEffectiveTargetPath(rootDir, relativePath);
265
+ if (!effectiveTargetPath) {
266
+ return;
267
+ }
268
+ dirtyState.reasons.add(`${eventType}:${effectiveTargetPath}`);
269
+ if (effectiveTargetPath === CONFIG_RELATIVE_PATH) {
270
+ dirtyState.configChanged = true;
271
+ }
272
+ else {
273
+ dirtyState.indexChanged = true;
274
+ dirtyState.indexTargets.add(normalizeTargetPath(effectiveTargetPath));
275
+ }
276
+ this.logger.info({
277
+ workspaceId,
278
+ rootDir,
279
+ eventType,
280
+ relativePath: effectiveTargetPath,
281
+ source: "affairs_library.watch"
282
+ }, "事务文档库外部刷新监听捕获到文件变动");
283
+ writeAffairsLibraryDebugLog({
284
+ event: "watch_event_captured",
285
+ processRole: "host",
286
+ workspaceId,
287
+ rootDir,
288
+ source: "affairs_library.watch",
289
+ watchKind: effectiveTargetPath === CONFIG_RELATIVE_PATH
290
+ ? "config"
291
+ : "index",
292
+ eventType,
293
+ targetPath: effectiveTargetPath,
294
+ status: "captured"
295
+ });
296
+ this.scheduleWorkspaceRefresh(workspaceId);
297
+ }
298
+ scheduleWorkspaceRefresh(workspaceId) {
299
+ const existingTimer = this.debounceTimers.get(workspaceId);
300
+ if (existingTimer) {
301
+ clearTimeout(existingTimer);
302
+ }
303
+ const timer = setTimeout(() => {
304
+ this.debounceTimers.delete(workspaceId);
305
+ this.flushWorkspaceDirtyState(workspaceId);
306
+ }, AUTO_REFRESH_QUIET_WINDOW_MS);
307
+ this.debounceTimers.set(workspaceId, timer);
308
+ }
309
+ flushWorkspaceDirtyState(workspaceId) {
310
+ const state = this.pendingDirtyStateByWorkspace.get(workspaceId);
311
+ if (!state) {
312
+ return;
313
+ }
314
+ this.pendingDirtyStateByWorkspace.delete(workspaceId);
315
+ const reasons = [...state.reasons].sort((a, b) => a.localeCompare(b, "zh-CN"));
316
+ this.logger.info({
317
+ workspaceId,
318
+ reasonCount: reasons.length,
319
+ configChanged: state.configChanged,
320
+ indexChanged: state.indexChanged,
321
+ indexTargets: [...state.indexTargets].sort((a, b) => a.localeCompare(b, "zh-CN")),
322
+ reasons,
323
+ source: "affairs_library.watch"
324
+ }, "事务文档库外部刷新监听已提交脏标记");
325
+ writeAffairsLibraryDebugLog({
326
+ event: "watch_dirty_state_flushed",
327
+ processRole: "host",
328
+ workspaceId,
329
+ source: "affairs_library.watch",
330
+ status: "flushed",
331
+ details: {
332
+ reasonCount: reasons.length,
333
+ configChanged: state.configChanged,
334
+ indexChanged: state.indexChanged,
335
+ indexTargets: [...state.indexTargets].sort((a, b) => a.localeCompare(b, "zh-CN")),
336
+ reasons
337
+ }
338
+ });
339
+ if (state.configChanged) {
340
+ this.onWorkspaceDirty(workspaceId, {
341
+ kind: "config",
342
+ reason: reasons.find((item) => item.includes(CONFIG_RELATIVE_PATH)) ?? "watch:config_changed"
343
+ });
344
+ }
345
+ if (state.indexChanged) {
346
+ const targetPath = pickNarrowestTargetPath([...state.indexTargets]);
347
+ this.onWorkspaceDirty(workspaceId, {
348
+ kind: "index",
349
+ reason: reasons.find((item) => isIndexReason(item)) ?? "watch:external_change",
350
+ ...(targetPath ? { targetPath } : {})
351
+ });
352
+ }
353
+ }
354
+ shouldIgnorePath(rootDir, relativePath) {
355
+ if (relativePath === CONFIG_RELATIVE_PATH) {
356
+ return false;
357
+ }
358
+ const includedHiddenPaths = this.readIncludedHiddenPaths(rootDir);
359
+ if (hasHiddenPathSegment(relativePath) && !isIncludedHiddenPath(relativePath, includedHiddenPaths)) {
360
+ return true;
361
+ }
362
+ if (relativePath === INDEX_DIR_NAME || relativePath.startsWith(`${INDEX_DIR_NAME}/`)) {
363
+ return true;
364
+ }
365
+ const baseName = path.posix.basename(relativePath);
366
+ return TEMPORARY_FILE_PATTERNS.some((pattern) => pattern.test(baseName));
367
+ }
368
+ detectMissingIndexArtifactReason(rootDir, relativePath) {
369
+ if (relativePath === CONFIG_RELATIVE_PATH) {
370
+ return null;
371
+ }
372
+ if (relativePath !== INDEX_DIR_NAME && !relativePath.startsWith(`${INDEX_DIR_NAME}/`)) {
373
+ return null;
374
+ }
375
+ const indexDirPath = path.join(rootDir, INDEX_DIR_NAME);
376
+ if (!fs.existsSync(indexDirPath)) {
377
+ return "watch:missing_index_artifact:.ai-index";
378
+ }
379
+ const exportDirPath = path.join(rootDir, INDEX_EXPORTS_RELATIVE_PATH);
380
+ if (!fs.existsSync(exportDirPath)) {
381
+ return "watch:missing_index_artifact:.ai-index/exports";
382
+ }
383
+ if (!fs.existsSync(path.join(rootDir, INDEX_EXPORT_STATUS_RELATIVE_PATH))) {
384
+ return `watch:missing_index_artifact:${INDEX_EXPORT_STATUS_RELATIVE_PATH}`;
385
+ }
386
+ if (!fs.existsSync(path.join(rootDir, INDEX_EXPORT_MANIFEST_RELATIVE_PATH))) {
387
+ return `watch:missing_index_artifact:${INDEX_EXPORT_MANIFEST_RELATIVE_PATH}`;
388
+ }
389
+ return null;
390
+ }
391
+ resolveEffectiveTargetPath(rootDir, relativePath) {
392
+ if (this.shouldIgnorePath(rootDir, relativePath)) {
393
+ return null;
394
+ }
395
+ const absolutePath = path.join(rootDir, relativePath);
396
+ if (!fs.existsSync(absolutePath)) {
397
+ return relativePath;
398
+ }
399
+ let stats;
400
+ try {
401
+ stats = fs.statSync(absolutePath);
402
+ }
403
+ catch {
404
+ return relativePath;
405
+ }
406
+ if (!stats.isDirectory()) {
407
+ return relativePath;
408
+ }
409
+ const candidates = scanRecentDirectoryTargets(rootDir, relativePath, Date.now() - DIRECTORY_EVENT_RECENT_WINDOW_MS).filter((item) => !this.shouldIgnorePath(rootDir, item));
410
+ if (candidates.length === 0) {
411
+ return null;
412
+ }
413
+ return pickNarrowestTargetPath(candidates) ?? relativePath;
414
+ }
415
+ normalizeRelativePath(rootDir, inputPath) {
416
+ const normalizedInput = normalizeFsWatchFileName(inputPath);
417
+ if (!normalizedInput) {
418
+ return null;
419
+ }
420
+ const rootBaseName = path.basename(rootDir).trim();
421
+ if (normalizedInput === rootBaseName) {
422
+ return null;
423
+ }
424
+ const relativePath = normalizedInput.replace(/\\/g, "/").replace(/^\/+/, "");
425
+ if (!relativePath || relativePath === "." || relativePath.startsWith("../")) {
426
+ const fallback = path.relative(rootDir, normalizedInput).replace(/\\/g, "/");
427
+ if (!fallback || fallback === "." || fallback.startsWith("../")) {
428
+ return null;
429
+ }
430
+ return fallback;
431
+ }
432
+ return relativePath;
433
+ }
434
+ readIncludedHiddenPaths(rootDir) {
435
+ const configPath = path.join(rootDir, CONFIG_RELATIVE_PATH);
436
+ if (!fs.existsSync(configPath)) {
437
+ return [];
438
+ }
439
+ try {
440
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf8"));
441
+ return normalizeIncludedHiddenPaths(Array.isArray(raw?.includedHiddenPaths) ? raw.includedHiddenPaths : []);
442
+ }
443
+ catch {
444
+ return [];
445
+ }
446
+ }
447
+ getOrCreatePendingDirtyState(workspaceId) {
448
+ const current = this.pendingDirtyStateByWorkspace.get(workspaceId);
449
+ if (current) {
450
+ return current;
451
+ }
452
+ const next = {
453
+ configChanged: false,
454
+ indexChanged: false,
455
+ reasons: new Set(),
456
+ indexTargets: new Set()
457
+ };
458
+ this.pendingDirtyStateByWorkspace.set(workspaceId, next);
459
+ return next;
460
+ }
461
+ }
462
+ function normalizeFsWatchFileName(value) {
463
+ if (typeof value === "string") {
464
+ return value.trim();
465
+ }
466
+ if (Buffer.isBuffer(value)) {
467
+ return value.toString("utf-8").trim();
468
+ }
469
+ return "";
470
+ }
471
+ function normalizeTargetPath(relativePath) {
472
+ return relativePath.trim().replace(/^\.\/+/, "").replace(/\/+$/, "");
473
+ }
474
+ function hasHiddenPathSegment(relativePath) {
475
+ return relativePath
476
+ .split("/")
477
+ .map((segment) => segment.trim())
478
+ .filter(Boolean)
479
+ .some((segment) => segment.startsWith("."));
480
+ }
481
+ function pickNarrowestTargetPath(targets) {
482
+ if (targets.length === 0) {
483
+ return undefined;
484
+ }
485
+ let selected = targets[0]?.trim() || undefined;
486
+ for (const target of targets) {
487
+ const normalizedTarget = target.trim();
488
+ if (!normalizedTarget) {
489
+ continue;
490
+ }
491
+ if (!selected || selected.startsWith(`${normalizedTarget}/`)) {
492
+ selected = normalizedTarget;
493
+ }
494
+ }
495
+ return selected || undefined;
496
+ }
497
+ function isIndexReason(reason) {
498
+ return !reason.includes(CONFIG_RELATIVE_PATH);
499
+ }
500
+ function scanRecentDirectoryTargets(rootDir, relativeDirectoryPath, minMtimeMs) {
501
+ const absoluteDirectoryPath = path.join(rootDir, relativeDirectoryPath);
502
+ const stack = [{
503
+ absolutePath: absoluteDirectoryPath,
504
+ relativePath: relativeDirectoryPath
505
+ }];
506
+ const results = [];
507
+ let visitedCount = 0;
508
+ while (stack.length > 0 && visitedCount < DIRECTORY_EVENT_SCAN_LIMIT) {
509
+ const current = stack.pop();
510
+ if (!current) {
511
+ continue;
512
+ }
513
+ let entries;
514
+ try {
515
+ entries = fs.readdirSync(current.absolutePath, { withFileTypes: true });
516
+ }
517
+ catch {
518
+ continue;
519
+ }
520
+ for (const entry of entries) {
521
+ if (visitedCount >= DIRECTORY_EVENT_SCAN_LIMIT) {
522
+ break;
523
+ }
524
+ visitedCount += 1;
525
+ const nextRelativePath = normalizeTargetPath(path.posix.join(current.relativePath, entry.name));
526
+ const nextAbsolutePath = path.join(current.absolutePath, entry.name);
527
+ let stats;
528
+ try {
529
+ stats = fs.statSync(nextAbsolutePath);
530
+ }
531
+ catch {
532
+ continue;
533
+ }
534
+ if (stats.mtimeMs < minMtimeMs) {
535
+ if (entry.isDirectory()) {
536
+ stack.push({
537
+ absolutePath: nextAbsolutePath,
538
+ relativePath: nextRelativePath
539
+ });
540
+ }
541
+ continue;
542
+ }
543
+ if (entry.isDirectory()) {
544
+ stack.push({
545
+ absolutePath: nextAbsolutePath,
546
+ relativePath: nextRelativePath
547
+ });
548
+ continue;
549
+ }
550
+ results.push(nextRelativePath);
551
+ }
552
+ }
553
+ return results;
554
+ }
555
+ //# sourceMappingURL=affairs-library-dirty-watch-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affairs-library-dirty-watch-service.js","sourceRoot":"","sources":["../../../../src/modules/workspace/affairs-library-dirty-watch-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { AffairsLibraryService } from "./affairs-library-service.js";
2
+ export interface AffairsLibraryPreviewLinkResult {
3
+ previewPath: string;
4
+ previewUrl: string;
5
+ expiresAt: string;
6
+ }
7
+ export interface PublicAffairsLibraryPreviewResult {
8
+ workspaceId: string;
9
+ absolutePath: string;
10
+ relativePath: string;
11
+ contentType: string;
12
+ }
13
+ export declare class AffairsLibraryPreviewLinkService {
14
+ private readonly affairsLibraryService;
15
+ private readonly signingSecret;
16
+ constructor(affairsLibraryService: AffairsLibraryService, signingSecret: string);
17
+ createLink(workspaceId: string, userId: string, requestedPath: string): AffairsLibraryPreviewLinkResult;
18
+ createOnlyOfficeLink(workspaceId: string, userId: string, requestedPath: string): AffairsLibraryPreviewLinkResult;
19
+ resolvePublicFile(token: string, requestedPath: string): PublicAffairsLibraryPreviewResult;
20
+ private createToken;
21
+ private verifyToken;
22
+ private sign;
23
+ }
24
+ export declare function buildAffairsPublicPreviewPath(token: string, relativePath: string): string;