@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,157 @@
1
+ import crypto from "node:crypto";
2
+ import { AppError } from "../../shared/errors/app-error.js";
3
+ import { detectPreviewKind, resolvePreviewContentType } from "../file/file-preview-types.js";
4
+ const AFFAIRS_LIBRARY_PREVIEW_TOKEN_TTL_MS = 2 * 60 * 60 * 1000;
5
+ export class AffairsLibraryPreviewLinkService {
6
+ affairsLibraryService;
7
+ signingSecret;
8
+ constructor(affairsLibraryService, signingSecret) {
9
+ this.affairsLibraryService = affairsLibraryService;
10
+ this.signingSecret = signingSecret;
11
+ }
12
+ createLink(workspaceId, userId, requestedPath) {
13
+ const resolved = this.affairsLibraryService.resolvePreviewFile(workspaceId, userId, requestedPath, {
14
+ mustExist: true,
15
+ kind: "file"
16
+ });
17
+ const previewKind = detectPreviewKind(resolved.relativePath);
18
+ if (previewKind !== "html" && previewKind !== "image" && previewKind !== "pdf") {
19
+ throw new AppError({
20
+ statusCode: 400,
21
+ errorCode: "FILE_PREVIEW_NOT_SUPPORTED",
22
+ detail: "当前只支持为 HTML、图片和 PDF 生成受控预览链接",
23
+ field: "path"
24
+ });
25
+ }
26
+ const expiresAt = Date.now() + AFFAIRS_LIBRARY_PREVIEW_TOKEN_TTL_MS;
27
+ const token = this.createToken({
28
+ workspaceId,
29
+ userId,
30
+ expiresAt
31
+ });
32
+ return {
33
+ previewPath: buildAffairsPublicPreviewPath(token, resolved.relativePath),
34
+ previewUrl: "",
35
+ expiresAt: new Date(expiresAt).toISOString()
36
+ };
37
+ }
38
+ createOnlyOfficeLink(workspaceId, userId, requestedPath) {
39
+ const resolved = this.affairsLibraryService.resolvePreviewFile(workspaceId, userId, requestedPath, {
40
+ mustExist: true,
41
+ kind: "file"
42
+ });
43
+ const previewKind = detectPreviewKind(resolved.relativePath);
44
+ if (previewKind !== "office") {
45
+ throw new AppError({
46
+ statusCode: 400,
47
+ errorCode: "FILE_PREVIEW_NOT_SUPPORTED",
48
+ detail: "当前只支持为 Office 文件生成 ONLYOFFICE 受控链接",
49
+ field: "path"
50
+ });
51
+ }
52
+ const expiresAt = Date.now() + AFFAIRS_LIBRARY_PREVIEW_TOKEN_TTL_MS;
53
+ const token = this.createToken({
54
+ workspaceId,
55
+ userId,
56
+ expiresAt
57
+ });
58
+ return {
59
+ previewPath: buildAffairsPublicPreviewPath(token, resolved.relativePath),
60
+ previewUrl: "",
61
+ expiresAt: new Date(expiresAt).toISOString()
62
+ };
63
+ }
64
+ resolvePublicFile(token, requestedPath) {
65
+ const payload = this.verifyToken(token);
66
+ const resolved = this.affairsLibraryService.resolvePreviewFile(payload.workspaceId, payload.userId, requestedPath, {
67
+ mustExist: true,
68
+ kind: "file"
69
+ });
70
+ const contentType = resolvePreviewContentType(resolved.relativePath);
71
+ if (!contentType) {
72
+ throw new AppError({
73
+ statusCode: 400,
74
+ errorCode: "FILE_PREVIEW_ASSET_NOT_SUPPORTED",
75
+ detail: "当前预览链接不支持加载这种文件类型",
76
+ field: "path"
77
+ });
78
+ }
79
+ return {
80
+ workspaceId: payload.workspaceId,
81
+ absolutePath: resolved.absolutePath,
82
+ relativePath: resolved.relativePath,
83
+ contentType
84
+ };
85
+ }
86
+ createToken(payload) {
87
+ const encodedPayload = encodeBase64Url(JSON.stringify(payload));
88
+ const signature = this.sign(encodedPayload);
89
+ return `${encodedPayload}.${signature}`;
90
+ }
91
+ verifyToken(token) {
92
+ const [encodedPayload, signature] = token.split(".");
93
+ if (!encodedPayload || !signature) {
94
+ throw buildInvalidPreviewTokenError();
95
+ }
96
+ const expectedSignature = this.sign(encodedPayload);
97
+ if (!safeCompare(signature, expectedSignature)) {
98
+ throw buildInvalidPreviewTokenError();
99
+ }
100
+ let payload;
101
+ try {
102
+ payload = JSON.parse(decodeBase64Url(encodedPayload));
103
+ }
104
+ catch {
105
+ throw buildInvalidPreviewTokenError();
106
+ }
107
+ if (!payload.workspaceId || !payload.userId || typeof payload.expiresAt !== "number") {
108
+ throw buildInvalidPreviewTokenError();
109
+ }
110
+ if (payload.expiresAt <= Date.now()) {
111
+ throw new AppError({
112
+ statusCode: 401,
113
+ errorCode: "FILE_PREVIEW_TOKEN_EXPIRED",
114
+ detail: "预览链接已经过期,请重新打开文件预览"
115
+ });
116
+ }
117
+ return payload;
118
+ }
119
+ sign(encodedPayload) {
120
+ return crypto
121
+ .createHmac("sha256", this.signingSecret)
122
+ .update(encodedPayload)
123
+ .digest("base64url");
124
+ }
125
+ }
126
+ export function buildAffairsPublicPreviewPath(token, relativePath) {
127
+ return `/preview/affairs-files/${encodeURIComponent(token)}/${encodeRelativePath(relativePath)}`;
128
+ }
129
+ function encodeRelativePath(relativePath) {
130
+ return relativePath
131
+ .replace(/\\/g, "/")
132
+ .split("/")
133
+ .map((segment) => encodeURIComponent(segment))
134
+ .join("/");
135
+ }
136
+ function encodeBase64Url(input) {
137
+ return Buffer.from(input, "utf8").toString("base64url");
138
+ }
139
+ function decodeBase64Url(input) {
140
+ return Buffer.from(input, "base64url").toString("utf8");
141
+ }
142
+ function safeCompare(left, right) {
143
+ const leftBuffer = Buffer.from(left);
144
+ const rightBuffer = Buffer.from(right);
145
+ if (leftBuffer.byteLength !== rightBuffer.byteLength) {
146
+ return false;
147
+ }
148
+ return crypto.timingSafeEqual(leftBuffer, rightBuffer);
149
+ }
150
+ function buildInvalidPreviewTokenError() {
151
+ return new AppError({
152
+ statusCode: 401,
153
+ errorCode: "FILE_PREVIEW_TOKEN_INVALID",
154
+ detail: "预览链接无效,请重新打开文件预览"
155
+ });
156
+ }
157
+ //# sourceMappingURL=affairs-library-preview-link-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affairs-library-preview-link-service.js","sourceRoot":"","sources":["../../../../src/modules/workspace/affairs-library-preview-link-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export declare const AFFAIRS_LIBRARY_INDEX_DIRTY_REASONS: {
2
+ readonly refreshRequested: "refresh_requested";
3
+ readonly refreshFailed: "refresh_failed";
4
+ readonly bindingRequired: "binding_required";
5
+ readonly libraryDisabled: "library_disabled";
6
+ readonly missingIndexArtifact: "missing_index_artifact";
7
+ readonly missingExportDir: "missing_export_dir";
8
+ readonly missingExportStatus: "missing_export_status";
9
+ readonly missingExportManifest: "missing_export_manifest";
10
+ readonly commandLockMissing: "command_lock_missing";
11
+ readonly commandLockOwnerDead: "command_lock_owner_dead";
12
+ readonly commandLockHeartbeatStale: "command_lock_heartbeat_stale";
13
+ readonly queueTimeout: "queue_timeout";
14
+ readonly staleFallback: "stale_fallback";
15
+ readonly driftDetected: "drift_detected";
16
+ readonly rebuildRequired: "rebuild_required";
17
+ };
18
+ export declare const AFFAIRS_LIBRARY_RECONCILE_SCOPES: {
19
+ readonly lightweight: "lightweight";
20
+ readonly periodicAudit: "periodic_audit";
21
+ };
22
+ export declare const AFFAIRS_LIBRARY_RECONCILE_STATUSES: {
23
+ readonly healthy: "healthy";
24
+ readonly driftDetected: "drift_detected";
25
+ readonly rebuildRequired: "rebuild_required";
26
+ };
27
+ export declare const AFFAIRS_LIBRARY_RECONCILE_REASONS: {
28
+ readonly timer: "lightweight_reconcile:timer";
29
+ readonly pendingDirtySignal: "lightweight_reconcile:pending_dirty_signal";
30
+ readonly runtimeStatusAhead: "lightweight_reconcile:runtime_status_ahead";
31
+ readonly recentDirectoryMtime: "lightweight_reconcile:recent_directory_mtime";
32
+ readonly periodicAuditTimer: "periodic_audit:timer";
33
+ readonly periodicAuditPendingDirtySignal: "periodic_audit:pending_dirty_signal";
34
+ readonly periodicAuditRuntimeStatusAhead: "periodic_audit:runtime_status_ahead";
35
+ readonly periodicAuditLightweightDriftStreak: "periodic_audit:lightweight_drift_streak";
36
+ readonly periodicAuditRootDirMtime: "periodic_audit:root_dir_mtime";
37
+ };
38
+ export declare const AFFAIRS_LIBRARY_DEBUG_EVENTS: {
39
+ readonly lightweightReconcileTick: "lightweight_reconcile_tick";
40
+ readonly lightweightReconcileSkipped: "lightweight_reconcile_skipped";
41
+ readonly lightweightReconcileDriftDetected: "lightweight_reconcile_drift_detected";
42
+ readonly lightweightReconcileScheduledRefresh: "lightweight_reconcile_scheduled_refresh";
43
+ readonly periodicAuditTick: "periodic_audit_tick";
44
+ readonly periodicAuditSkipped: "periodic_audit_skipped";
45
+ readonly periodicAuditDriftDetected: "periodic_audit_drift_detected";
46
+ readonly periodicAuditScheduledRefresh: "periodic_audit_scheduled_refresh";
47
+ };
48
+ export type AffairsLibraryReconcileScope = (typeof AFFAIRS_LIBRARY_RECONCILE_SCOPES)[keyof typeof AFFAIRS_LIBRARY_RECONCILE_SCOPES];
49
+ export type AffairsLibraryReconcileStatus = (typeof AFFAIRS_LIBRARY_RECONCILE_STATUSES)[keyof typeof AFFAIRS_LIBRARY_RECONCILE_STATUSES];
50
+ export interface AffairsLibraryReconcileResult {
51
+ scope: AffairsLibraryReconcileScope;
52
+ status: AffairsLibraryReconcileStatus;
53
+ reason: string;
54
+ targetPaths: string[];
55
+ observedAt: string;
56
+ }
@@ -0,0 +1,48 @@
1
+ export const AFFAIRS_LIBRARY_INDEX_DIRTY_REASONS = {
2
+ refreshRequested: "refresh_requested",
3
+ refreshFailed: "refresh_failed",
4
+ bindingRequired: "binding_required",
5
+ libraryDisabled: "library_disabled",
6
+ missingIndexArtifact: "missing_index_artifact",
7
+ missingExportDir: "missing_export_dir",
8
+ missingExportStatus: "missing_export_status",
9
+ missingExportManifest: "missing_export_manifest",
10
+ commandLockMissing: "command_lock_missing",
11
+ commandLockOwnerDead: "command_lock_owner_dead",
12
+ commandLockHeartbeatStale: "command_lock_heartbeat_stale",
13
+ queueTimeout: "queue_timeout",
14
+ staleFallback: "stale_fallback",
15
+ driftDetected: "drift_detected",
16
+ rebuildRequired: "rebuild_required"
17
+ };
18
+ export const AFFAIRS_LIBRARY_RECONCILE_SCOPES = {
19
+ lightweight: "lightweight",
20
+ periodicAudit: "periodic_audit"
21
+ };
22
+ export const AFFAIRS_LIBRARY_RECONCILE_STATUSES = {
23
+ healthy: "healthy",
24
+ driftDetected: "drift_detected",
25
+ rebuildRequired: "rebuild_required"
26
+ };
27
+ export const AFFAIRS_LIBRARY_RECONCILE_REASONS = {
28
+ timer: "lightweight_reconcile:timer",
29
+ pendingDirtySignal: "lightweight_reconcile:pending_dirty_signal",
30
+ runtimeStatusAhead: "lightweight_reconcile:runtime_status_ahead",
31
+ recentDirectoryMtime: "lightweight_reconcile:recent_directory_mtime",
32
+ periodicAuditTimer: "periodic_audit:timer",
33
+ periodicAuditPendingDirtySignal: "periodic_audit:pending_dirty_signal",
34
+ periodicAuditRuntimeStatusAhead: "periodic_audit:runtime_status_ahead",
35
+ periodicAuditLightweightDriftStreak: "periodic_audit:lightweight_drift_streak",
36
+ periodicAuditRootDirMtime: "periodic_audit:root_dir_mtime"
37
+ };
38
+ export const AFFAIRS_LIBRARY_DEBUG_EVENTS = {
39
+ lightweightReconcileTick: "lightweight_reconcile_tick",
40
+ lightweightReconcileSkipped: "lightweight_reconcile_skipped",
41
+ lightweightReconcileDriftDetected: "lightweight_reconcile_drift_detected",
42
+ lightweightReconcileScheduledRefresh: "lightweight_reconcile_scheduled_refresh",
43
+ periodicAuditTick: "periodic_audit_tick",
44
+ periodicAuditSkipped: "periodic_audit_skipped",
45
+ periodicAuditDriftDetected: "periodic_audit_drift_detected",
46
+ periodicAuditScheduledRefresh: "periodic_audit_scheduled_refresh"
47
+ };
48
+ //# sourceMappingURL=affairs-library-refresh-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affairs-library-refresh-contract.js","sourceRoot":"","sources":["../../../../src/modules/workspace/affairs-library-refresh-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,gBAAgB,EAAE,mBAAmB;IACrC,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,oBAAoB,EAAE,wBAAwB;IAC9C,gBAAgB,EAAE,oBAAoB;IACtC,mBAAmB,EAAE,uBAAuB;IAC5C,qBAAqB,EAAE,yBAAyB;IAChD,kBAAkB,EAAE,sBAAsB;IAC1C,oBAAoB,EAAE,yBAAyB;IAC/C,yBAAyB,EAAE,8BAA8B;IACzD,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,kBAAkB;CAC3B,CAAC;AAEX,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,gBAAgB;CACvB,CAAC;AAEX,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,kBAAkB;CAC3B,CAAC;AAEX,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,KAAK,EAAE,6BAA6B;IACpC,kBAAkB,EAAE,4CAA4C;IAChE,kBAAkB,EAAE,4CAA4C;IAChE,oBAAoB,EAAE,8CAA8C;IACpE,kBAAkB,EAAE,sBAAsB;IAC1C,+BAA+B,EAAE,qCAAqC;IACtE,+BAA+B,EAAE,qCAAqC;IACtE,mCAAmC,EAAE,yCAAyC;IAC9E,yBAAyB,EAAE,+BAA+B;CAClD,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,wBAAwB,EAAE,4BAA4B;IACtD,2BAA2B,EAAE,+BAA+B;IAC5D,iCAAiC,EAAE,sCAAsC;IACzE,oCAAoC,EAAE,yCAAyC;IAC/E,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,wBAAwB;IAC9C,0BAA0B,EAAE,+BAA+B;IAC3D,6BAA6B,EAAE,kCAAkC;CACzD,CAAC"}
@@ -0,0 +1,344 @@
1
+ import fs from "node:fs";
2
+ import type { WorkspaceNavigationStateRepository } from "../../storage/repositories/workspace-navigation-state-repository.js";
3
+ import type { UserAffairsLibrarySettingRepository } from "../../storage/repositories/user-affairs-library-setting-repository.js";
4
+ import type { FileNode } from "../../types/domain.js";
5
+ import { type FilePreviewResult } from "../file/file-preview-types.js";
6
+ import type { TaskManager } from "../tasks/task-manager.js";
7
+ import { type TaskSnapshot } from "../tasks/task-types.js";
8
+ import type { WorkspaceService } from "./workspace-service.js";
9
+ export type AffairsLibraryDirectoryStateDto = "idle" | "queued" | "running" | "queue_timeout" | "fresh" | "failed";
10
+ export type AffairsLibraryDirectorySourceDto = "live" | "snapshot" | "mixed" | "stale_fallback";
11
+ export type AffairsLibraryFavoriteKind = "folder" | "tag";
12
+ export interface AffairsLibraryFavoriteRecord {
13
+ kind: AffairsLibraryFavoriteKind;
14
+ path: string;
15
+ label: string;
16
+ }
17
+ export interface AffairsLibraryBindingDto {
18
+ workspaceId: string | null;
19
+ rootDir: string;
20
+ enabled: boolean;
21
+ mirrorRoot: string | null;
22
+ allowedExtensions: string[];
23
+ includedHiddenPaths?: string[];
24
+ folderOpenBehavior?: "single_click" | "double_click";
25
+ configRelativePath: string;
26
+ exportMode: "v2";
27
+ updatedAt: string;
28
+ }
29
+ export interface AffairsLibraryIndexStatusDto {
30
+ state: "fresh" | "stale" | "queued" | "running" | "queue_timeout" | "cooldown" | "failed";
31
+ dirtyReasons: string[];
32
+ lastRequestedAt: string | null;
33
+ lastStartedAt: string | null;
34
+ lastCompletedAt: string | null;
35
+ lastFailedAt: string | null;
36
+ nextAllowedAt: string | null;
37
+ runningTaskId: string | null;
38
+ runningStage: string | null;
39
+ errorSummary: string | null;
40
+ workerHealth?: AffairsLibraryWorkerHealthDto | null;
41
+ progress?: AffairsLibraryIndexProgressDto | null;
42
+ }
43
+ export interface AffairsLibraryWorkerHealthDto {
44
+ workerKey: string;
45
+ rootDir: string | null;
46
+ state: "idle" | "running" | "terminating" | "recycled";
47
+ pid: number | null;
48
+ inflightLocalCount: number;
49
+ inflightRemoteRequestCount: number;
50
+ startedAt: string | null;
51
+ lastHeartbeatAt: string | null;
52
+ lastStartedAt: string | null;
53
+ lastCompletedAt: string | null;
54
+ lastFailedAt: string | null;
55
+ lastSoftCancelRequestedAt: string | null;
56
+ lastHardKillAt: string | null;
57
+ lastExitAt: string | null;
58
+ lastTerminationReason: string | null;
59
+ }
60
+ export interface AffairsLibraryIndexProgressDto {
61
+ scannedCount: number;
62
+ indexedCount: number;
63
+ skippedCount: number;
64
+ failedCount: number;
65
+ unchangedCount: number;
66
+ totalCount: number | null;
67
+ maxConcurrency: number | null;
68
+ }
69
+ export interface AffairsLibraryDirectoryStatusDto {
70
+ path: string;
71
+ state: AffairsLibraryDirectoryStateDto;
72
+ source: AffairsLibraryDirectorySourceDto;
73
+ lastRequestedAt: string | null;
74
+ lastCompletedAt: string | null;
75
+ lastFailedAt: string | null;
76
+ runningTaskId: string | null;
77
+ errorSummary: string | null;
78
+ generatedAt?: string | null;
79
+ filesystemObservedAt?: string | null;
80
+ staleReason?: string | null;
81
+ }
82
+ export interface AffairsLibraryDocumentRecordDto {
83
+ documentId: string;
84
+ path: string;
85
+ title: string;
86
+ summary: string;
87
+ updatedAt: string;
88
+ createdAt?: string | null;
89
+ sizeBytes?: number | null;
90
+ tags: string[];
91
+ derivedTags: string[];
92
+ isFavorite: boolean;
93
+ }
94
+ export interface AffairsLibraryTagNodeDto {
95
+ path: string;
96
+ name: string;
97
+ rootType: string;
98
+ parentPath: string | null;
99
+ depth: number;
100
+ documentCount: number;
101
+ }
102
+ export interface AffairsLibraryFolderNodeDto {
103
+ path: string;
104
+ name: string;
105
+ parentPath: string | null;
106
+ directDocumentCount: number;
107
+ documentCount: number;
108
+ createdAt?: string | null;
109
+ updatedAt?: string | null;
110
+ }
111
+ export interface AffairsLibrarySnapshotDto {
112
+ binding: AffairsLibraryBindingDto | null;
113
+ status: AffairsLibraryIndexStatusDto;
114
+ tags: AffairsLibraryTagNodeDto[];
115
+ favorites: AffairsLibraryFavoriteRecord[];
116
+ folders: AffairsLibraryFolderNodeDto[];
117
+ documentCount: number;
118
+ lastError: string | null;
119
+ }
120
+ export interface ListAffairsLibraryDocumentsInput {
121
+ browseMode: "folder" | "tag";
122
+ selectedFolderPath?: string | null;
123
+ selectedTagPath?: string | null;
124
+ selectedTagPaths?: string[] | null;
125
+ selectedFavoriteId?: string | null;
126
+ offset?: number;
127
+ limit?: number;
128
+ }
129
+ export interface AffairsLibraryDocumentListDto {
130
+ total: number;
131
+ offset: number;
132
+ limit: number;
133
+ items: AffairsLibraryDocumentRecordDto[];
134
+ tagFacetCounts?: Record<string, number>;
135
+ directoryStatus?: AffairsLibraryDirectoryStatusDto | null;
136
+ }
137
+ export type AffairsLibraryOperationType = "delete" | "move" | "copy" | "create_directory" | "create_file" | "write";
138
+ export interface AffairsLibraryDownloadDto {
139
+ workspaceId: string;
140
+ path: string;
141
+ fileName: string;
142
+ contentBase64: string;
143
+ size: number;
144
+ updatedAt: string;
145
+ }
146
+ export interface AffairsLibraryOperationResultDto {
147
+ success: true;
148
+ opType: AffairsLibraryOperationType;
149
+ sourcePath: string;
150
+ targetPath: string | null;
151
+ }
152
+ export interface AffairsLibraryResolvedPreviewFile {
153
+ workspaceId: string;
154
+ userId: string;
155
+ rootDir: string;
156
+ rootRealPath: string;
157
+ relativePath: string;
158
+ absolutePath: string;
159
+ exists: boolean;
160
+ stats: fs.Stats | null;
161
+ }
162
+ interface AffairsLibraryLogger {
163
+ info(bindings: Record<string, unknown>, message: string): void;
164
+ warn?(bindings: Record<string, unknown>, message: string): void;
165
+ }
166
+ interface UserAffairsLibrarySettingLike {
167
+ userId: string;
168
+ rootDir: string | null;
169
+ enabled: boolean;
170
+ favoritesJson: string | null;
171
+ lastWorkspaceId: string | null;
172
+ createdAt: string;
173
+ updatedAt: string;
174
+ }
175
+ interface AffairsLibraryDirectoryHintTaskResult {
176
+ directoryPath: string;
177
+ refreshedAt: string;
178
+ source: AffairsLibraryDirectorySourceDto;
179
+ itemCount: number;
180
+ changedPaths: string[];
181
+ items: AffairsLibraryDocumentRecordDto[];
182
+ generatedAt: string | null;
183
+ filesystemObservedAt: string | null;
184
+ }
185
+ export declare class AffairsLibraryService {
186
+ private readonly workspaceService;
187
+ private readonly workspaceNavigationStateRepository;
188
+ private readonly userAffairsLibrarySettingRepository;
189
+ private readonly taskManager;
190
+ private readonly logger;
191
+ private readonly exportCache;
192
+ private readonly autoTaskStateByWorkspace;
193
+ private readonly hotDirectoryCache;
194
+ private readonly lightweightReconcileTimers;
195
+ private readonly reconcileObservationStateByWorkspace;
196
+ constructor(workspaceService: WorkspaceService, workspaceNavigationStateRepository: WorkspaceNavigationStateRepository, userAffairsLibrarySettingRepository: UserAffairsLibrarySettingRepository, taskManager: TaskManager, logger: AffairsLibraryLogger);
197
+ getGlobalBinding(userId: string): AffairsLibraryBindingDto | null;
198
+ getBinding(workspaceId: string, userId: string): AffairsLibraryBindingDto | null;
199
+ saveGlobalBinding(userId: string, rootDir: string): AffairsLibraryBindingDto;
200
+ setGlobalEnabled(userId: string, enabled: boolean): AffairsLibraryBindingDto;
201
+ updateGlobalFavorites(userId: string, favorites: AffairsLibraryFavoriteRecord[]): AffairsLibraryFavoriteRecord[];
202
+ saveBinding(workspaceId: string, userId: string, rootDir: string): AffairsLibraryBindingDto;
203
+ setEnabled(workspaceId: string, userId: string, enabled: boolean): AffairsLibraryBindingDto;
204
+ getConfig(workspaceId: string, userId: string): {
205
+ binding: AffairsLibraryBindingDto | null;
206
+ mirrorRoot: string | null;
207
+ allowedExtensions: string[];
208
+ includedHiddenPaths?: string[];
209
+ folderOpenBehavior: "single_click" | "double_click";
210
+ configRelativePath: string;
211
+ canWrite: boolean;
212
+ };
213
+ saveConfig(workspaceId: string, userId: string, input: {
214
+ mirrorRoot?: string | null;
215
+ allowedExtensions?: string[];
216
+ includedHiddenPaths?: string[];
217
+ folderOpenBehavior?: "single_click" | "double_click";
218
+ }): Promise<{
219
+ binding: AffairsLibraryBindingDto;
220
+ mirrorRoot: string | null;
221
+ allowedExtensions: string[];
222
+ includedHiddenPaths?: string[];
223
+ folderOpenBehavior: "single_click" | "double_click";
224
+ configRelativePath: string;
225
+ canWrite: boolean;
226
+ applyConfigTaskId: string;
227
+ applyConfigStatus: AffairsLibraryIndexStatusDto;
228
+ }>;
229
+ getSnapshot(workspaceId: string, userId: string): AffairsLibrarySnapshotDto;
230
+ listDocuments(workspaceId: string, userId: string, input: ListAffairsLibraryDocumentsInput): AffairsLibraryDocumentListDto;
231
+ private listLiveFolderDocuments;
232
+ listFiles(workspaceId: string, userId: string, requestedPath: string | null | undefined, limit?: number): FileNode[];
233
+ private decideLiveDirectoryScan;
234
+ private buildCachedFolderDocuments;
235
+ private buildSnapshotFolderDocuments;
236
+ private buildFreshFolderDocuments;
237
+ private buildLiveDirectoryDocuments;
238
+ private writeDirectoryFallbackDebugLog;
239
+ updateFavorites(workspaceId: string, userId: string, favorites: AffairsLibraryFavoriteRecord[]): AffairsLibraryFavoriteRecord[];
240
+ previewDocument(workspaceId: string, userId: string, requestedPath: string): FilePreviewResult;
241
+ downloadFile(workspaceId: string, userId: string, requestedPath: string): AffairsLibraryDownloadDto;
242
+ operateFile(workspaceId: string, userId: string, input: {
243
+ opType: AffairsLibraryOperationType;
244
+ srcPath?: string;
245
+ dstPath?: string | null;
246
+ content?: string | null;
247
+ expectedVersion?: string | null;
248
+ }): AffairsLibraryOperationResultDto;
249
+ resolvePreviewFile(workspaceId: string, userId: string, requestedPath: string, options?: {
250
+ mustExist?: boolean;
251
+ kind?: "file" | "directory" | "any";
252
+ allowRoot?: boolean;
253
+ }): AffairsLibraryResolvedPreviewFile;
254
+ private ensureUserContentPath;
255
+ private afterFileMutation;
256
+ requestRefresh(workspaceId: string, userId: string, reason: string): {
257
+ taskId: string;
258
+ deduped: boolean;
259
+ status: AffairsLibraryIndexStatusDto;
260
+ };
261
+ requestRefreshHint(workspaceId: string, userId: string, reason: string, targetPath?: string | null): {
262
+ scheduled: boolean;
263
+ status: AffairsLibraryIndexStatusDto;
264
+ directoryStatus: AffairsLibraryDirectoryStatusDto | null;
265
+ };
266
+ notifyWorkspaceFileMutation(workspaceId: string, input: {
267
+ absolutePath: string;
268
+ kind: "upsert" | "delete";
269
+ }): void;
270
+ scheduleAutoRefresh(workspaceId: string, reason: string, targetPath?: string): void;
271
+ scheduleAutoApplyConfig(workspaceId: string, reason: string): void;
272
+ private syncLightweightReconcileTimers;
273
+ private ensureLightweightReconcileTimer;
274
+ private clearLightweightReconcileTimer;
275
+ private scheduleLightweightReconcile;
276
+ schedulePeriodicAudit(workspaceId: string, triggerReason: string): void;
277
+ private evaluateLightweightReconcile;
278
+ private evaluatePeriodicAudit;
279
+ private recordLightweightReconcileObservation;
280
+ private findRecentDirectoryDrift;
281
+ dispose(): void;
282
+ getRefreshTaskSnapshot(workspaceId: string): TaskSnapshot | null;
283
+ private readDirectoryStatus;
284
+ private getOrCreateHotDirectoryEntry;
285
+ private updateHotDirectoryCache;
286
+ private markHotDirectoryCacheDirty;
287
+ private ensureDirectoryWindow;
288
+ private scheduleDirectoryHintRefresh;
289
+ private runDirectoryHintTask;
290
+ private attachDirectoryHintTaskFollowUp;
291
+ private readFavorites;
292
+ private readIndexStatus;
293
+ private registerBackgroundTasks;
294
+ private runInternalCommand;
295
+ private resumeEnabledBindings;
296
+ private flushAutoTasks;
297
+ private getOrCreateAutoTaskState;
298
+ private armAutoTaskTimer;
299
+ private reconcileOrphanedRunningTasks;
300
+ private findActiveLibraryTaskSnapshots;
301
+ private findBlockingAutoTask;
302
+ private findRelevantIndexTaskSnapshot;
303
+ private attachAutoTaskFollowUp;
304
+ private readExportData;
305
+ private parseExportData;
306
+ private buildExportSignature;
307
+ private invalidateExportCache;
308
+ private readExportCacheFile;
309
+ private writeExportCacheFile;
310
+ private buildPreviewResult;
311
+ private readAvailableExportData;
312
+ private readLastUsableExportData;
313
+ private readConfig;
314
+ private readRawConfigFile;
315
+ getGlobalSetting(userId: string): UserAffairsLibrarySettingLike | null;
316
+ getEnabledBindingForWorkspace(workspaceId: string): UserAffairsLibrarySettingLike | null;
317
+ listEnabledBindingsForWatch(): Array<{
318
+ workspaceId: string | null;
319
+ rootDir: string | null;
320
+ enabled: boolean;
321
+ }>;
322
+ getBindingForWatch(workspaceId: string): {
323
+ workspaceId: string | null;
324
+ rootDir: string | null;
325
+ enabled: boolean;
326
+ } | null;
327
+ private buildBindingFromSetting;
328
+ private requireBinding;
329
+ private resolveLibrarySetting;
330
+ private upsertLibrarySetting;
331
+ private listEnabledSettingsWithWorkspace;
332
+ private findEnabledBindingByWorkspaceId;
333
+ private normalizeAndValidateBindingRootDir;
334
+ private normalizeFavorites;
335
+ private resolvePreferredWorkspaceId;
336
+ private ensureLibraryEnabled;
337
+ private assertLibraryRootDir;
338
+ }
339
+ export declare function runAffairsLibraryDirectoryHintInHelper(input: {
340
+ rootDir: string;
341
+ directoryPath: string;
342
+ signal?: AbortSignal;
343
+ }): Promise<AffairsLibraryDirectoryHintTaskResult>;
344
+ export {};