@jingyi0605/codingns 0.3.5 → 0.4.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 (255) hide show
  1. package/README.md +16 -0
  2. package/bin/codingns.mjs +1369 -10
  3. package/dist/public/assets/{TerminalPage-CgrfstRm.js → TerminalPage-6jHZV9Mh.js} +17 -17
  4. package/dist/public/assets/index-CSVhg7I8.js +123 -0
  5. package/dist/public/assets/index-Ce1VX19m.css +1 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/opencode-base-url-resolver.d.ts +7 -0
  8. package/dist/server/config/opencode-base-url-resolver.js +48 -11
  9. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  10. package/dist/server/config/opencode-system-probe-helper-client.d.ts +4 -0
  11. package/dist/server/config/opencode-system-probe-helper-client.js +29 -0
  12. package/dist/server/config/opencode-system-probe-helper-client.js.map +1 -1
  13. package/dist/server/config/opencode-system-probe-helper-process.d.ts +12 -0
  14. package/dist/server/config/opencode-system-probe-helper-process.js +34 -7
  15. package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
  16. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +317 -0
  17. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +549 -1
  18. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  19. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +330 -2
  20. package/dist/server/modules/assistant-capability/assistant-capability-service.js +958 -3
  21. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  22. package/dist/server/modules/butler/assistant-automation-service.d.ts +110 -0
  23. package/dist/server/modules/butler/assistant-automation-service.js +786 -0
  24. package/dist/server/modules/butler/assistant-automation-service.js.map +1 -0
  25. package/dist/server/modules/butler/assistant-automation-trigger.d.ts +94 -0
  26. package/dist/server/modules/butler/assistant-automation-trigger.js +400 -0
  27. package/dist/server/modules/butler/assistant-automation-trigger.js.map +1 -0
  28. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +55 -0
  29. package/dist/server/modules/butler/assistant-sandbox-service.js +266 -0
  30. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
  31. package/dist/server/modules/butler/butler-action-context-service.d.ts +4 -1
  32. package/dist/server/modules/butler/butler-action-context-service.js +8 -2
  33. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
  34. package/dist/server/modules/butler/butler-control-session-service.d.ts +8 -1
  35. package/dist/server/modules/butler/butler-control-session-service.js +154 -40
  36. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  37. package/dist/server/modules/butler/butler-control-timer-scheduler.d.ts +32 -0
  38. package/dist/server/modules/butler/butler-control-timer-scheduler.js +93 -0
  39. package/dist/server/modules/butler/butler-control-timer-scheduler.js.map +1 -0
  40. package/dist/server/modules/butler/butler-control-timer-service.d.ts +42 -0
  41. package/dist/server/modules/butler/butler-control-timer-service.js +132 -0
  42. package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -0
  43. package/dist/server/modules/butler/butler-controller.d.ts +42 -2
  44. package/dist/server/modules/butler/butler-controller.js +79 -12
  45. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  46. package/dist/server/modules/butler/butler-follow-up-service.d.ts +9 -1
  47. package/dist/server/modules/butler/butler-follow-up-service.js +273 -181
  48. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  49. package/dist/server/modules/butler/butler-inbox-analysis-service.d.ts +4 -1
  50. package/dist/server/modules/butler/butler-inbox-analysis-service.js +18 -4
  51. package/dist/server/modules/butler/butler-inbox-analysis-service.js.map +1 -1
  52. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +7 -6
  53. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
  54. package/dist/server/modules/butler/butler-profile-service.js +2 -5
  55. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  56. package/dist/server/modules/butler/butler-project-service.d.ts +3 -1
  57. package/dist/server/modules/butler/butler-project-service.js +7 -1
  58. package/dist/server/modules/butler/butler-project-service.js.map +1 -1
  59. package/dist/server/modules/butler/butler-session-service.d.ts +3 -1
  60. package/dist/server/modules/butler/butler-session-service.js +12 -1
  61. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  62. package/dist/server/modules/butler/butler-session-summary-service.js +2 -1
  63. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  64. package/dist/server/modules/butler/butler-workspace-context.d.ts +3 -0
  65. package/dist/server/modules/butler/butler-workspace-context.js +182 -51
  66. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  67. package/dist/server/modules/butler/patrol-execution-service.js +2 -1
  68. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
  69. package/dist/server/modules/butler/provider-adapter-registry.d.ts +3 -0
  70. package/dist/server/modules/butler/provider-adapter-registry.js +18 -1
  71. package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -1
  72. package/dist/server/modules/butler/verification-run-service.d.ts +9 -2
  73. package/dist/server/modules/butler/verification-run-service.js +188 -34
  74. package/dist/server/modules/butler/verification-run-service.js.map +1 -1
  75. package/dist/server/modules/debug-target/debug-target-controller.d.ts +13 -0
  76. package/dist/server/modules/debug-target/debug-target-controller.js +77 -2
  77. package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -1
  78. package/dist/server/modules/debug-target/debug-target-service.d.ts +17 -3
  79. package/dist/server/modules/debug-target/debug-target-service.js +696 -98
  80. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  81. package/dist/server/modules/git/git-command-helper-client.d.ts +3 -0
  82. package/dist/server/modules/git/git-command-helper-client.js +71 -29
  83. package/dist/server/modules/git/git-command-helper-client.js.map +1 -1
  84. package/dist/server/modules/git/git-command-helper-process.js +62 -9
  85. package/dist/server/modules/git/git-command-helper-process.js.map +1 -1
  86. package/dist/server/modules/git/git-command-runner.d.ts +1 -0
  87. package/dist/server/modules/git/git-command-runner.js +44 -1
  88. package/dist/server/modules/git/git-command-runner.js.map +1 -1
  89. package/dist/server/modules/git/git-controller.js +8 -7
  90. package/dist/server/modules/git/git-controller.js.map +1 -1
  91. package/dist/server/modules/git/git-read-service.d.ts +7 -7
  92. package/dist/server/modules/git/git-read-service.js +41 -24
  93. package/dist/server/modules/git/git-read-service.js.map +1 -1
  94. package/dist/server/modules/model-switch/cc-switch-adapter.js +6 -2
  95. package/dist/server/modules/model-switch/cc-switch-adapter.js.map +1 -1
  96. package/dist/server/modules/preferences/profile-service.d.ts +3 -1
  97. package/dist/server/modules/preferences/profile-service.js +74 -3
  98. package/dist/server/modules/preferences/profile-service.js.map +1 -1
  99. package/dist/server/modules/provider/codex-model-options.js +2 -3
  100. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  101. package/dist/server/modules/provider/opencode-model-options.js +2 -3
  102. package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
  103. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +14 -7
  104. package/dist/server/modules/provider/provider-discovery-helper-client.js +208 -46
  105. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  106. package/dist/server/modules/provider/provider-discovery-helper-process.js +96 -47
  107. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  108. package/dist/server/modules/provider/provider-discovery-runtime.d.ts +4 -0
  109. package/dist/server/modules/provider/provider-discovery-runtime.js +145 -0
  110. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -0
  111. package/dist/server/modules/sessions/claude-runtime-helper-client.js +23 -1
  112. package/dist/server/modules/sessions/claude-runtime-helper-client.js.map +1 -1
  113. package/dist/server/modules/sessions/session-history-service.d.ts +12 -3
  114. package/dist/server/modules/sessions/session-history-service.js +465 -67
  115. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  116. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
  117. package/dist/server/modules/sessions/session-live-runtime-service.js +164 -34
  118. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  119. package/dist/server/modules/sessions/session-message-origin-utils.d.ts +12 -0
  120. package/dist/server/modules/sessions/session-message-origin-utils.js +45 -0
  121. package/dist/server/modules/sessions/session-message-origin-utils.js.map +1 -0
  122. package/dist/server/modules/sessions/session-permission-request-service.js +167 -0
  123. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  124. package/dist/server/modules/skills/builtin-skill-service.d.ts +12 -0
  125. package/dist/server/modules/skills/builtin-skill-service.js +49 -0
  126. package/dist/server/modules/skills/builtin-skill-service.js.map +1 -0
  127. package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +82 -0
  128. package/dist/server/modules/skills/builtin-skills/codingns-assistant/agents/openai.yaml +4 -0
  129. package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +136 -0
  130. package/dist/server/modules/skills/skill-manager-service.d.ts +7 -0
  131. package/dist/server/modules/skills/skill-manager-service.js +98 -0
  132. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  133. package/dist/server/modules/tailscale/tailscale-helper-client.d.ts +1 -0
  134. package/dist/server/modules/tailscale/tailscale-helper-client.js +12 -0
  135. package/dist/server/modules/tailscale/tailscale-helper-client.js.map +1 -1
  136. package/dist/server/modules/tasks/task-helper-client.d.ts +10 -2
  137. package/dist/server/modules/tasks/task-helper-client.js +152 -27
  138. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  139. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +10 -3
  140. package/dist/server/modules/tasks/task-helper-process-handlers.js +7 -5
  141. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  142. package/dist/server/modules/tasks/task-helper-process.js +104 -3
  143. package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
  144. package/dist/server/modules/tasks/task-lane-executors.js +2 -2
  145. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
  146. package/dist/server/modules/tasks/task-types.d.ts +4 -0
  147. package/dist/server/modules/tasks/task-types.js +5 -1
  148. package/dist/server/modules/tasks/task-types.js.map +1 -1
  149. package/dist/server/modules/terminal/command-template-service.d.ts +11 -2
  150. package/dist/server/modules/terminal/command-template-service.js +91 -9
  151. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  152. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +1 -1
  153. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -1
  154. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +160 -11
  155. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -1
  156. package/dist/server/modules/terminal/template-port-runtime.d.ts +1 -1
  157. package/dist/server/modules/terminal/template-port-runtime.js +87 -37
  158. package/dist/server/modules/terminal/template-port-runtime.js.map +1 -1
  159. package/dist/server/modules/terminal/terminal-controller.d.ts +3 -0
  160. package/dist/server/modules/terminal/terminal-controller.js +41 -0
  161. package/dist/server/modules/terminal/terminal-controller.js.map +1 -1
  162. package/dist/server/modules/terminal/terminal-service.d.ts +4 -0
  163. package/dist/server/modules/terminal/terminal-service.js +35 -1
  164. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  165. package/dist/server/modules/workbench/workbench-service.d.ts +3 -0
  166. package/dist/server/modules/workbench/workbench-service.js +7 -6
  167. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  168. package/dist/server/modules/workbench/workspace-file-watcher.d.ts +14 -6
  169. package/dist/server/modules/workbench/workspace-file-watcher.js +267 -57
  170. package/dist/server/modules/workbench/workspace-file-watcher.js.map +1 -1
  171. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +3 -0
  172. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +149 -41
  173. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  174. package/dist/server/modules/workspace/workspace-code-composition.d.ts +1 -0
  175. package/dist/server/modules/workspace/workspace-code-composition.js +183 -1
  176. package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -1
  177. package/dist/server/modules/workspace/workspace-service.js +54 -17
  178. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  179. package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +1 -1
  180. package/dist/server/modules/worktree/worktree-cleanup-service.js +22 -17
  181. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  182. package/dist/server/modules/worktree/worktree-controller.js +6 -5
  183. package/dist/server/modules/worktree/worktree-controller.js.map +1 -1
  184. package/dist/server/modules/worktree/worktree-manager.d.ts +10 -2
  185. package/dist/server/modules/worktree/worktree-manager.js +35 -20
  186. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  187. package/dist/server/modules/worktree/worktree-merge-service.d.ts +2 -2
  188. package/dist/server/modules/worktree/worktree-merge-service.js +34 -27
  189. package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -1
  190. package/dist/server/modules/worktree/worktree-sync-service.d.ts +1 -1
  191. package/dist/server/modules/worktree/worktree-sync-service.js +5 -3
  192. package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -1
  193. package/dist/server/routes/assistant.js +43 -0
  194. package/dist/server/routes/assistant.js.map +1 -1
  195. package/dist/server/routes/butler.js +5 -0
  196. package/dist/server/routes/butler.js.map +1 -1
  197. package/dist/server/server/create-server.d.ts +8 -0
  198. package/dist/server/server/create-server.js +51 -13
  199. package/dist/server/server/create-server.js.map +1 -1
  200. package/dist/server/shared/http/request-abort.d.ts +2 -0
  201. package/dist/server/shared/http/request-abort.js +38 -0
  202. package/dist/server/shared/http/request-abort.js.map +1 -0
  203. package/dist/server/storage/repositories/assistant-automation-run-repository.d.ts +12 -0
  204. package/dist/server/storage/repositories/assistant-automation-run-repository.js +139 -0
  205. package/dist/server/storage/repositories/assistant-automation-run-repository.js.map +1 -0
  206. package/dist/server/storage/repositories/assistant-automation-task-repository.d.ts +15 -0
  207. package/dist/server/storage/repositories/assistant-automation-task-repository.js +173 -0
  208. package/dist/server/storage/repositories/assistant-automation-task-repository.js.map +1 -0
  209. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +17 -0
  210. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +164 -0
  211. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
  212. package/dist/server/storage/repositories/butler-control-session-repository.js +27 -3
  213. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
  214. package/dist/server/storage/repositories/butler-control-timer-repository.d.ts +15 -0
  215. package/dist/server/storage/repositories/butler-control-timer-repository.js +157 -0
  216. package/dist/server/storage/repositories/butler-control-timer-repository.js.map +1 -0
  217. package/dist/server/storage/repositories/user-preference-profile-repository.js +6 -3
  218. package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -1
  219. package/dist/server/storage/sqlite/client.js +239 -2
  220. package/dist/server/storage/sqlite/client.js.map +1 -1
  221. package/dist/server/storage/sqlite/schema.sql +107 -1
  222. package/dist/server/types/domain.d.ts +89 -2
  223. package/dist/server/ws/workbench-ws-hub.d.ts +14 -7
  224. package/dist/server/ws/workbench-ws-hub.js +316 -158
  225. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  226. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +4 -1
  227. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +111 -3
  228. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  229. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +6 -1
  230. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +306 -31
  231. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  232. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +5 -1
  233. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +187 -26
  234. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -1
  235. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +4 -1
  236. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +98 -1
  237. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -1
  238. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +2 -0
  239. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +71 -8
  240. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  241. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
  242. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +4 -1
  243. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
  244. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +44 -0
  245. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  246. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +9 -3
  247. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  248. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +1 -0
  249. package/node_modules/@codingns/session-sync-core/dist/services.js +17 -8
  250. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  251. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +4 -0
  252. package/package.json +1 -1
  253. package/scripts/postinstall.mjs +33 -0
  254. package/dist/public/assets/index-Cek6u0b9.css +0 -1
  255. package/dist/public/assets/index-THHY79si.js +0 -122
@@ -3,6 +3,7 @@ import path from "node:path";
3
3
  import chokidar from "chokidar";
4
4
  import ignore from "ignore";
5
5
  const DEBOUNCE_MS = 500;
6
+ const GIT_REF_WATCH_DEPTH = 8;
6
7
  /**
7
8
  * 工作区文件监听服务。
8
9
  *
@@ -17,7 +18,9 @@ const DEBOUNCE_MS = 500;
17
18
  */
18
19
  export class WorkspaceFileWatcher {
19
20
  workspaceService;
20
- watchers = new Map();
21
+ fileTreeWatchers = new Map();
22
+ gitWatchers = new Map();
23
+ debounceTimers = new Map();
21
24
  onChange = null;
22
25
  constructor(workspaceService) {
23
26
  this.workspaceService = workspaceService;
@@ -26,77 +29,120 @@ export class WorkspaceFileWatcher {
26
29
  this.onChange = callback;
27
30
  }
28
31
  /**
29
- * 为指定工作区启动文件监听。内部使用引用计数,多个订阅者共享同一个 watcher。
32
+ * 文件树监听只盯当前展开目录,避免默认递归监听整个工作区。
30
33
  */
31
- subscribe(workspaceId) {
32
- const existing = this.watchers.get(workspaceId);
33
- if (existing) {
34
- existing.subscriberCount++;
35
- return;
36
- }
34
+ subscribeFileTree(workspaceId, paths) {
37
35
  const workspace = this.workspaceService.getWorkspaceOrThrow(workspaceId);
38
36
  const ig = loadGitignoreRules(workspace.path);
39
- const watcher = chokidar.watch(workspace.path, {
40
- ignored: (absolutePath) => {
41
- // chokidar 传入绝对路径,转为相对路径后用 ignore 库匹配
42
- const relative = path.relative(workspace.path, absolutePath);
43
- if (!relative) {
44
- return false;
45
- }
46
- return ig.ignores(relative);
47
- },
48
- ignoreInitial: true,
49
- ignorePermissionErrors: true,
50
- persistent: true
51
- });
52
- const entry = {
53
- watcher,
54
- debounceTimer: null,
55
- subscriberCount: 1
56
- };
57
- watcher.on("all", () => {
58
- this.scheduleRefresh(workspaceId);
59
- });
60
- this.watchers.set(workspaceId, entry);
37
+ for (const normalizedPath of normalizeWatchPaths(paths)) {
38
+ const key = `${workspaceId}::${normalizedPath}`;
39
+ const existing = this.fileTreeWatchers.get(key);
40
+ if (existing) {
41
+ existing.subscriberCount += 1;
42
+ continue;
43
+ }
44
+ const watchTarget = resolveFileTreeWatchTarget(workspace.path, normalizedPath);
45
+ const watcher = chokidar.watch(watchTarget, {
46
+ depth: 0,
47
+ ignored: (absolutePath) => shouldIgnoreWorkspacePath(workspace.path, ig, absolutePath),
48
+ ignoreInitial: true,
49
+ ignorePermissionErrors: true,
50
+ persistent: true
51
+ });
52
+ watcher.on("all", () => {
53
+ this.scheduleRefresh(workspaceId, "fileTree");
54
+ });
55
+ this.fileTreeWatchers.set(key, {
56
+ watcher,
57
+ subscriberCount: 1
58
+ });
59
+ }
61
60
  }
62
61
  /**
63
- * 取消订阅。引用计数归零时自动关闭 watcher
62
+ * Git 监听只盯 `.git` 元数据和 worktree 相关的 gitdir/commondir
64
63
  */
65
- unsubscribe(workspaceId) {
66
- const entry = this.watchers.get(workspaceId);
67
- if (!entry) {
68
- return;
69
- }
70
- entry.subscriberCount--;
71
- if (entry.subscriberCount <= 0) {
72
- entry.watcher.close();
73
- if (entry.debounceTimer) {
74
- clearTimeout(entry.debounceTimer);
64
+ subscribeGit(workspaceId) {
65
+ const workspace = this.workspaceService.getWorkspaceOrThrow(workspaceId);
66
+ for (const target of resolveGitWatchTargets(workspace)) {
67
+ const key = `${workspaceId}::${target.path}`;
68
+ const existing = this.gitWatchers.get(key);
69
+ if (existing) {
70
+ existing.subscriberCount += 1;
71
+ continue;
75
72
  }
76
- this.watchers.delete(workspaceId);
73
+ const watcher = chokidar.watch(target.path, {
74
+ depth: target.depth,
75
+ ignoreInitial: true,
76
+ ignorePermissionErrors: true,
77
+ persistent: true
78
+ });
79
+ watcher.on("all", () => {
80
+ this.scheduleRefresh(workspaceId, "git");
81
+ });
82
+ this.gitWatchers.set(key, {
83
+ watcher,
84
+ subscriberCount: 1
85
+ });
77
86
  }
78
87
  }
79
- scheduleRefresh(workspaceId) {
80
- const entry = this.watchers.get(workspaceId);
81
- if (!entry) {
82
- return;
88
+ unsubscribeFileTree(workspaceId, paths) {
89
+ for (const normalizedPath of normalizeWatchPaths(paths)) {
90
+ const key = `${workspaceId}::${normalizedPath}`;
91
+ const entry = this.fileTreeWatchers.get(key);
92
+ if (!entry) {
93
+ continue;
94
+ }
95
+ entry.subscriberCount -= 1;
96
+ if (entry.subscriberCount <= 0) {
97
+ void entry.watcher.close();
98
+ this.fileTreeWatchers.delete(key);
99
+ }
83
100
  }
84
- if (entry.debounceTimer) {
85
- clearTimeout(entry.debounceTimer);
101
+ }
102
+ unsubscribeGit(workspaceId) {
103
+ for (const key of [...this.gitWatchers.keys()]) {
104
+ if (!key.startsWith(`${workspaceId}::`)) {
105
+ continue;
106
+ }
107
+ const entry = this.gitWatchers.get(key);
108
+ if (!entry) {
109
+ continue;
110
+ }
111
+ entry.subscriberCount -= 1;
112
+ if (entry.subscriberCount <= 0) {
113
+ void entry.watcher.close();
114
+ this.gitWatchers.delete(key);
115
+ }
86
116
  }
87
- entry.debounceTimer = setTimeout(() => {
88
- entry.debounceTimer = null;
89
- this.onChange?.(workspaceId);
117
+ }
118
+ scheduleRefresh(workspaceId, scope) {
119
+ const key = `${scope}::${workspaceId}`;
120
+ const existingTimer = this.debounceTimers.get(key);
121
+ if (existingTimer) {
122
+ clearTimeout(existingTimer);
123
+ }
124
+ const timer = setTimeout(() => {
125
+ this.debounceTimers.delete(key);
126
+ this.onChange?.({
127
+ workspaceId,
128
+ scope
129
+ });
90
130
  }, DEBOUNCE_MS);
131
+ this.debounceTimers.set(key, timer);
91
132
  }
92
133
  dispose() {
93
- for (const entry of this.watchers.values()) {
94
- entry.watcher.close();
95
- if (entry.debounceTimer) {
96
- clearTimeout(entry.debounceTimer);
97
- }
134
+ for (const entry of this.fileTreeWatchers.values()) {
135
+ void entry.watcher.close();
136
+ }
137
+ for (const entry of this.gitWatchers.values()) {
138
+ void entry.watcher.close();
98
139
  }
99
- this.watchers.clear();
140
+ for (const timer of this.debounceTimers.values()) {
141
+ clearTimeout(timer);
142
+ }
143
+ this.fileTreeWatchers.clear();
144
+ this.gitWatchers.clear();
145
+ this.debounceTimers.clear();
100
146
  }
101
147
  }
102
148
  /**
@@ -134,4 +180,168 @@ function loadGitignoreRules(workspacePath) {
134
180
  }
135
181
  return ig;
136
182
  }
183
+ function normalizeWatchPaths(paths) {
184
+ const uniquePaths = new Set();
185
+ for (const value of paths.length > 0 ? paths : [""]) {
186
+ uniquePaths.add(normalizePanelPath(value));
187
+ }
188
+ return [...uniquePaths];
189
+ }
190
+ function normalizePanelPath(value) {
191
+ return value.trim().replace(/\\/g, "/").replace(/^\/+|\/+$/g, "");
192
+ }
193
+ function shouldIgnoreWorkspacePath(workspacePath, ig, absolutePath) {
194
+ const relative = path.relative(workspacePath, absolutePath);
195
+ if (!relative) {
196
+ return false;
197
+ }
198
+ return ig.ignores(relative);
199
+ }
200
+ function resolveFileTreeWatchTarget(workspacePath, relativePath) {
201
+ const workspaceRoot = path.resolve(workspacePath);
202
+ let currentPath = path.resolve(workspaceRoot, relativePath || ".");
203
+ while (isPathInside(currentPath, workspaceRoot)) {
204
+ if (fs.existsSync(currentPath)) {
205
+ try {
206
+ if (fs.statSync(currentPath).isDirectory()) {
207
+ return currentPath;
208
+ }
209
+ }
210
+ catch {
211
+ return path.dirname(currentPath);
212
+ }
213
+ return path.dirname(currentPath);
214
+ }
215
+ const parentPath = path.dirname(currentPath);
216
+ if (parentPath === currentPath) {
217
+ break;
218
+ }
219
+ currentPath = parentPath;
220
+ }
221
+ return workspaceRoot;
222
+ }
223
+ function resolveGitWatchTargets(workspace) {
224
+ const targets = new Set();
225
+ const workspaceRoot = path.resolve(workspace.path);
226
+ const gitEntry = path.join(workspaceRoot, ".git");
227
+ addExistingFileWatchTarget(targets, gitEntry);
228
+ const repoRootEntry = workspace.repoRoot && path.resolve(workspace.repoRoot) !== workspaceRoot
229
+ ? path.join(path.resolve(workspace.repoRoot), ".git")
230
+ : null;
231
+ addExistingFileWatchTarget(targets, repoRootEntry);
232
+ const candidateGitDirs = [gitEntry, repoRootEntry].filter((value) => Boolean(value));
233
+ for (const candidate of candidateGitDirs) {
234
+ const resolvedGitDir = resolveGitDirectory(candidate);
235
+ if (!resolvedGitDir) {
236
+ continue;
237
+ }
238
+ addGitMetadataWatchTargets(targets, resolvedGitDir);
239
+ const commonDir = resolveGitCommonDirectory(resolvedGitDir);
240
+ if (commonDir) {
241
+ addGitMetadataWatchTargets(targets, commonDir);
242
+ }
243
+ }
244
+ return [...targets].map((targetPath) => ({
245
+ path: targetPath,
246
+ depth: isGitRefDirectory(targetPath) ? GIT_REF_WATCH_DEPTH : 0
247
+ }));
248
+ }
249
+ function resolveGitDirectory(gitEntryPath) {
250
+ if (!fs.existsSync(gitEntryPath)) {
251
+ return null;
252
+ }
253
+ try {
254
+ const stat = fs.statSync(gitEntryPath);
255
+ if (stat.isDirectory()) {
256
+ return gitEntryPath;
257
+ }
258
+ if (!stat.isFile()) {
259
+ return null;
260
+ }
261
+ const content = fs.readFileSync(gitEntryPath, "utf-8");
262
+ const gitDirLine = content
263
+ .split(/\r?\n/)
264
+ .find((line) => line.trim().toLowerCase().startsWith("gitdir:"));
265
+ if (!gitDirLine) {
266
+ return null;
267
+ }
268
+ const rawGitDir = gitDirLine.slice(gitDirLine.indexOf(":") + 1).trim();
269
+ if (!rawGitDir) {
270
+ return null;
271
+ }
272
+ return path.resolve(path.dirname(gitEntryPath), rawGitDir);
273
+ }
274
+ catch {
275
+ return null;
276
+ }
277
+ }
278
+ function resolveGitCommonDirectory(gitDirectory) {
279
+ const commonDirPath = path.join(gitDirectory, "commondir");
280
+ if (!fs.existsSync(commonDirPath)) {
281
+ return null;
282
+ }
283
+ try {
284
+ const rawValue = fs.readFileSync(commonDirPath, "utf-8").trim();
285
+ if (!rawValue) {
286
+ return null;
287
+ }
288
+ return path.resolve(gitDirectory, rawValue);
289
+ }
290
+ catch {
291
+ return null;
292
+ }
293
+ }
294
+ function addGitMetadataWatchTargets(targets, gitDirectory) {
295
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "HEAD"));
296
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "index"));
297
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "packed-refs"));
298
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "FETCH_HEAD"));
299
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "ORIG_HEAD"));
300
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "MERGE_HEAD"));
301
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "REBASE_HEAD"));
302
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "CHERRY_PICK_HEAD"));
303
+ addExistingFileWatchTarget(targets, path.join(gitDirectory, "logs", "HEAD"));
304
+ addExistingDirectoryWatchTarget(targets, path.join(gitDirectory, "refs", "heads"));
305
+ addExistingDirectoryWatchTarget(targets, path.join(gitDirectory, "refs", "remotes"));
306
+ addExistingDirectoryWatchTarget(targets, path.join(gitDirectory, "rebase-merge"));
307
+ addExistingDirectoryWatchTarget(targets, path.join(gitDirectory, "rebase-apply"));
308
+ }
309
+ function addExistingFileWatchTarget(targets, targetPath) {
310
+ if (!targetPath || !fs.existsSync(targetPath)) {
311
+ return;
312
+ }
313
+ try {
314
+ const resolvedPath = path.resolve(targetPath);
315
+ if (fs.statSync(resolvedPath).isFile()) {
316
+ targets.add(resolvedPath);
317
+ }
318
+ }
319
+ catch {
320
+ // 忽略不存在或无法访问的路径
321
+ }
322
+ }
323
+ function addExistingDirectoryWatchTarget(targets, targetPath) {
324
+ if (!targetPath || !fs.existsSync(targetPath)) {
325
+ return;
326
+ }
327
+ try {
328
+ const resolvedPath = path.resolve(targetPath);
329
+ if (fs.statSync(resolvedPath).isDirectory()) {
330
+ targets.add(resolvedPath);
331
+ }
332
+ }
333
+ catch {
334
+ // 忽略不存在或无法访问的路径
335
+ }
336
+ }
337
+ function isGitRefDirectory(targetPath) {
338
+ return (targetPath.endsWith(`${path.sep}refs${path.sep}heads`) ||
339
+ targetPath.endsWith(`${path.sep}refs${path.sep}remotes`));
340
+ }
341
+ function isPathInside(candidate, parent) {
342
+ const normalizedCandidate = path.resolve(candidate);
343
+ const normalizedParent = path.resolve(parent);
344
+ return (normalizedCandidate === normalizedParent ||
345
+ normalizedCandidate.startsWith(`${normalizedParent}${path.sep}`));
346
+ }
137
347
  //# sourceMappingURL=workspace-file-watcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-file-watcher.js","sourceRoot":"","sources":["../../../../src/modules/workbench/workspace-file-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-file-watcher.js","sourceRoot":"","sources":["../../../../src/modules/workbench/workspace-file-watcher.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,7 @@ export declare class WorkspacePanelSnapshotService {
40
40
  private readonly taskManager;
41
41
  private readonly fileTreeCache;
42
42
  private readonly gitSnapshotCache;
43
+ private readonly gitRefreshStates;
43
44
  private readonly terminalManagerCache;
44
45
  private readonly workspaceManagementCache;
45
46
  private readonly fileTreeInflight;
@@ -53,6 +54,7 @@ export declare class WorkspacePanelSnapshotService {
53
54
  }): Promise<FileTreeSnapshot>;
54
55
  getGitPanelSnapshot(workspaceId: string, options?: {
55
56
  force?: boolean;
57
+ signal?: AbortSignal;
56
58
  }): Promise<GitPanelSnapshot>;
57
59
  getTerminalManagerSnapshot(workspaceId: string, options?: {
58
60
  force?: boolean;
@@ -64,6 +66,7 @@ export declare class WorkspacePanelSnapshotService {
64
66
  invalidateGit(workspaceId: string): void;
65
67
  invalidateTerminalManager(workspaceId: string): void;
66
68
  invalidateWorkspaceManagement(workspaceId: string): void;
69
+ private getOrCreateGitRefreshState;
67
70
  private registerBackgroundTasks;
68
71
  private loadTerminalManagerSnapshot;
69
72
  }