@jingyi0605/codingns 0.1.5 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/README.md +44 -0
  2. package/bin/codingns.mjs +640 -53
  3. package/dist/public/assets/{TerminalPage-4p6EBqrR.js → TerminalPage-BkjqU9NG.js} +19 -19
  4. package/dist/public/assets/index-C6U8-9jg.css +1 -0
  5. package/dist/public/assets/index-CKSumuV2.js +109 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/env.d.ts +2 -0
  8. package/dist/server/config/env.js +8 -1
  9. package/dist/server/config/env.js.map +1 -1
  10. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +89 -0
  11. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +138 -0
  12. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -0
  13. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +115 -0
  14. package/dist/server/modules/assistant-capability/assistant-capability-service.js +241 -0
  15. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -0
  16. package/dist/server/modules/butler/butler-control-session-service.js +69 -30
  17. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  18. package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +9 -0
  19. package/dist/server/modules/butler/butler-follow-up-scheduler.js +47 -11
  20. package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -1
  21. package/dist/server/modules/butler/butler-follow-up-service.d.ts +7 -1
  22. package/dist/server/modules/butler/butler-follow-up-service.js +10 -0
  23. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  24. package/dist/server/modules/butler/butler-session-service.d.ts +2 -1
  25. package/dist/server/modules/butler/butler-session-service.js +10 -1
  26. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  27. package/dist/server/modules/butler/butler-session-summary-service.d.ts +8 -1
  28. package/dist/server/modules/butler/butler-session-summary-service.js +34 -7
  29. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  30. package/dist/server/modules/butler/context-aggregator.js +44 -13
  31. package/dist/server/modules/butler/context-aggregator.js.map +1 -1
  32. package/dist/server/modules/butler/patrol-scheduler.d.ts +9 -0
  33. package/dist/server/modules/butler/patrol-scheduler.js +63 -9
  34. package/dist/server/modules/butler/patrol-scheduler.js.map +1 -1
  35. package/dist/server/modules/butler/session-summary-scheduler.d.ts +9 -0
  36. package/dist/server/modules/butler/session-summary-scheduler.js +47 -11
  37. package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -1
  38. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.d.ts +38 -0
  39. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js +99 -0
  40. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js.map +1 -0
  41. package/dist/server/modules/debug-target/debug-target-controller.d.ts +70 -0
  42. package/dist/server/modules/debug-target/debug-target-controller.js +113 -0
  43. package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -0
  44. package/dist/server/modules/debug-target/debug-target-service.d.ts +102 -0
  45. package/dist/server/modules/debug-target/debug-target-service.js +1484 -0
  46. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -0
  47. package/dist/server/modules/debug-target/framework-compatibility-matrix.d.ts +4 -0
  48. package/dist/server/modules/debug-target/framework-compatibility-matrix.js +45 -0
  49. package/dist/server/modules/debug-target/framework-compatibility-matrix.js.map +1 -0
  50. package/dist/server/modules/debug-target/launch-adapter-registry.d.ts +25 -0
  51. package/dist/server/modules/debug-target/launch-adapter-registry.js +445 -0
  52. package/dist/server/modules/debug-target/launch-adapter-registry.js.map +1 -0
  53. package/dist/server/modules/file/file-content-service.d.ts +2 -1
  54. package/dist/server/modules/file/file-content-service.js +53 -0
  55. package/dist/server/modules/file/file-content-service.js.map +1 -1
  56. package/dist/server/modules/file/file-controller.d.ts +12 -1
  57. package/dist/server/modules/file/file-controller.js +72 -1
  58. package/dist/server/modules/file/file-controller.js.map +1 -1
  59. package/dist/server/modules/file/file-preview-link-service.d.ts +22 -0
  60. package/dist/server/modules/file/file-preview-link-service.js +160 -0
  61. package/dist/server/modules/file/file-preview-link-service.js.map +1 -0
  62. package/dist/server/modules/git/commit-orchestrator.d.ts +4 -1
  63. package/dist/server/modules/git/commit-orchestrator.js +18 -1
  64. package/dist/server/modules/git/commit-orchestrator.js.map +1 -1
  65. package/dist/server/modules/git/git-auth.d.ts +25 -0
  66. package/dist/server/modules/git/git-auth.js +88 -0
  67. package/dist/server/modules/git/git-auth.js.map +1 -0
  68. package/dist/server/modules/git/git-controller.d.ts +6 -0
  69. package/dist/server/modules/git/git-controller.js +5 -1
  70. package/dist/server/modules/git/git-controller.js.map +1 -1
  71. package/dist/server/modules/git/git-read-service.d.ts +2 -1
  72. package/dist/server/modules/git/git-read-service.js +19 -2
  73. package/dist/server/modules/git/git-read-service.js.map +1 -1
  74. package/dist/server/modules/git/git-remote-credential-service.d.ts +9 -0
  75. package/dist/server/modules/git/git-remote-credential-service.js +76 -0
  76. package/dist/server/modules/git/git-remote-credential-service.js.map +1 -0
  77. package/dist/server/modules/git/git-write-service.d.ts +5 -2
  78. package/dist/server/modules/git/git-write-service.js +33 -17
  79. package/dist/server/modules/git/git-write-service.js.map +1 -1
  80. package/dist/server/modules/git/types.d.ts +3 -0
  81. package/dist/server/modules/git/workspace-repo-guard.js +3 -2
  82. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  83. package/dist/server/modules/provider/codex-model-options.d.ts +3 -1
  84. package/dist/server/modules/provider/codex-model-options.js +4 -1
  85. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  86. package/dist/server/modules/provider/opencode-model-options.d.ts +3 -1
  87. package/dist/server/modules/provider/opencode-model-options.js +5 -1
  88. package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
  89. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +24 -0
  90. package/dist/server/modules/provider/provider-discovery-helper-client.js +14 -0
  91. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  92. package/dist/server/modules/provider/provider-discovery-helper-process.js +54 -0
  93. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  94. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +2 -1
  95. package/dist/server/modules/sessions/codex-app-server-helper-client.js +103 -0
  96. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  97. package/dist/server/modules/sessions/codex-app-server-helper-process.js +106 -1
  98. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  99. package/dist/server/modules/sessions/session-controller.d.ts +26 -0
  100. package/dist/server/modules/sessions/session-controller.js +39 -1
  101. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  102. package/dist/server/modules/sessions/session-history-service.d.ts +51 -5
  103. package/dist/server/modules/sessions/session-history-service.js +906 -59
  104. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  105. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -0
  106. package/dist/server/modules/sessions/session-live-runtime-service.js +59 -2
  107. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  108. package/dist/server/modules/sessions/session-provider-error-mapper.js +66 -0
  109. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  110. package/dist/server/modules/tasks/event-loop-monitor.d.ts +21 -0
  111. package/dist/server/modules/tasks/event-loop-monitor.js +64 -0
  112. package/dist/server/modules/tasks/event-loop-monitor.js.map +1 -0
  113. package/dist/server/modules/tasks/observability-controller.d.ts +30 -0
  114. package/dist/server/modules/tasks/observability-controller.js +44 -0
  115. package/dist/server/modules/tasks/observability-controller.js.map +1 -0
  116. package/dist/server/modules/tasks/observability-service.d.ts +32 -0
  117. package/dist/server/modules/tasks/observability-service.js +104 -0
  118. package/dist/server/modules/tasks/observability-service.js.map +1 -0
  119. package/dist/server/modules/tasks/scheduler-metrics.d.ts +41 -0
  120. package/dist/server/modules/tasks/scheduler-metrics.js +92 -0
  121. package/dist/server/modules/tasks/scheduler-metrics.js.map +1 -0
  122. package/dist/server/modules/tasks/task-activity-log.d.ts +39 -0
  123. package/dist/server/modules/tasks/task-activity-log.js +43 -0
  124. package/dist/server/modules/tasks/task-activity-log.js.map +1 -0
  125. package/dist/server/modules/tasks/task-helper-client.d.ts +11 -0
  126. package/dist/server/modules/tasks/task-helper-client.js +132 -0
  127. package/dist/server/modules/tasks/task-helper-client.js.map +1 -0
  128. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +16 -0
  129. package/dist/server/modules/tasks/task-helper-process-handlers.js +14 -0
  130. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -0
  131. package/dist/server/modules/tasks/task-helper-process.d.ts +1 -0
  132. package/dist/server/modules/tasks/task-helper-process.js +49 -0
  133. package/dist/server/modules/tasks/task-helper-process.js.map +1 -0
  134. package/dist/server/modules/tasks/task-lane-executors.d.ts +2 -0
  135. package/dist/server/modules/tasks/task-lane-executors.js +15 -0
  136. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -0
  137. package/dist/server/modules/tasks/task-manager.d.ts +15 -0
  138. package/dist/server/modules/tasks/task-manager.js +36 -0
  139. package/dist/server/modules/tasks/task-manager.js.map +1 -0
  140. package/dist/server/modules/tasks/task-metrics.d.ts +9 -0
  141. package/dist/server/modules/tasks/task-metrics.js +81 -0
  142. package/dist/server/modules/tasks/task-metrics.js.map +1 -0
  143. package/dist/server/modules/tasks/task-registry.d.ts +7 -0
  144. package/dist/server/modules/tasks/task-registry.js +21 -0
  145. package/dist/server/modules/tasks/task-registry.js.map +1 -0
  146. package/dist/server/modules/tasks/task-scheduler.d.ts +31 -0
  147. package/dist/server/modules/tasks/task-scheduler.js +473 -0
  148. package/dist/server/modules/tasks/task-scheduler.js.map +1 -0
  149. package/dist/server/modules/tasks/task-types.d.ts +106 -0
  150. package/dist/server/modules/tasks/task-types.js +23 -0
  151. package/dist/server/modules/tasks/task-types.js.map +1 -0
  152. package/dist/server/modules/terminal/command-template-service.d.ts +4 -0
  153. package/dist/server/modules/terminal/command-template-service.js +5 -3
  154. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  155. package/dist/server/modules/terminal/runtime/terminal-log-spooler.d.ts +7 -3
  156. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js +95 -15
  157. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js.map +1 -1
  158. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.d.ts +21 -0
  159. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +144 -0
  160. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -0
  161. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.d.ts +1 -0
  162. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +187 -0
  163. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -0
  164. package/dist/server/modules/terminal/terminal-service.d.ts +12 -0
  165. package/dist/server/modules/terminal/terminal-service.js +34 -17
  166. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  167. package/dist/server/modules/workbench/workbench-service.d.ts +23 -2
  168. package/dist/server/modules/workbench/workbench-service.js +126 -15
  169. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  170. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +5 -1
  171. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +88 -19
  172. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  173. package/dist/server/modules/workspace/workspace-code-composition.d.ts +2 -0
  174. package/dist/server/modules/workspace/workspace-code-composition.js +154 -0
  175. package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -0
  176. package/dist/server/modules/workspace/workspace-controller.d.ts +14 -0
  177. package/dist/server/modules/workspace/workspace-controller.js +19 -0
  178. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  179. package/dist/server/modules/workspace/workspace-service.d.ts +21 -14
  180. package/dist/server/modules/workspace/workspace-service.js +183 -234
  181. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  182. package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +35 -0
  183. package/dist/server/modules/worktree/worktree-cleanup-service.js +210 -0
  184. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -0
  185. package/dist/server/modules/worktree/worktree-controller.d.ts +44 -0
  186. package/dist/server/modules/worktree/worktree-controller.js +40 -0
  187. package/dist/server/modules/worktree/worktree-controller.js.map +1 -0
  188. package/dist/server/modules/worktree/worktree-manager.d.ts +34 -0
  189. package/dist/server/modules/worktree/worktree-manager.js +292 -0
  190. package/dist/server/modules/worktree/worktree-manager.js.map +1 -0
  191. package/dist/server/modules/worktree/worktree-merge-service.d.ts +52 -0
  192. package/dist/server/modules/worktree/worktree-merge-service.js +293 -0
  193. package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -0
  194. package/dist/server/modules/worktree/worktree-sync-service.d.ts +23 -0
  195. package/dist/server/modules/worktree/worktree-sync-service.js +166 -0
  196. package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -0
  197. package/dist/server/routes/assistant.d.ts +3 -0
  198. package/dist/server/routes/assistant.js +15 -0
  199. package/dist/server/routes/assistant.js.map +1 -0
  200. package/dist/server/routes/debug-targets.d.ts +3 -0
  201. package/dist/server/routes/debug-targets.js +15 -0
  202. package/dist/server/routes/debug-targets.js.map +1 -0
  203. package/dist/server/routes/files.js +2 -0
  204. package/dist/server/routes/files.js.map +1 -1
  205. package/dist/server/routes/git.js +1 -0
  206. package/dist/server/routes/git.js.map +1 -1
  207. package/dist/server/routes/observability.d.ts +3 -0
  208. package/dist/server/routes/observability.js +7 -0
  209. package/dist/server/routes/observability.js.map +1 -0
  210. package/dist/server/routes/sessions.js +1 -0
  211. package/dist/server/routes/sessions.js.map +1 -1
  212. package/dist/server/routes/workspaces.js +2 -0
  213. package/dist/server/routes/workspaces.js.map +1 -1
  214. package/dist/server/routes/worktrees.d.ts +3 -0
  215. package/dist/server/routes/worktrees.js +8 -0
  216. package/dist/server/routes/worktrees.js.map +1 -0
  217. package/dist/server/server/create-server.d.ts +38 -0
  218. package/dist/server/server/create-server.js +106 -11
  219. package/dist/server/server/create-server.js.map +1 -1
  220. package/dist/server/shared/utils/command-availability.d.ts +1 -0
  221. package/dist/server/shared/utils/command-availability.js +83 -0
  222. package/dist/server/shared/utils/command-availability.js.map +1 -0
  223. package/dist/server/shared/utils/secret-box.d.ts +2 -0
  224. package/dist/server/shared/utils/secret-box.js +29 -0
  225. package/dist/server/shared/utils/secret-box.js.map +1 -0
  226. package/dist/server/shared/utils/terminal-debug-log.js +5 -3
  227. package/dist/server/shared/utils/terminal-debug-log.js.map +1 -1
  228. package/dist/server/storage/repositories/ai-fallback-edit-repository.d.ts +11 -0
  229. package/dist/server/storage/repositories/ai-fallback-edit-repository.js +118 -0
  230. package/dist/server/storage/repositories/ai-fallback-edit-repository.js.map +1 -0
  231. package/dist/server/storage/repositories/debug-runtime-session-repository.d.ts +11 -0
  232. package/dist/server/storage/repositories/debug-runtime-session-repository.js +100 -0
  233. package/dist/server/storage/repositories/debug-runtime-session-repository.js.map +1 -0
  234. package/dist/server/storage/repositories/debug-service-repository.d.ts +9 -0
  235. package/dist/server/storage/repositories/debug-service-repository.js +99 -0
  236. package/dist/server/storage/repositories/debug-service-repository.js.map +1 -0
  237. package/dist/server/storage/repositories/debug-target-repository.d.ts +11 -0
  238. package/dist/server/storage/repositories/debug-target-repository.js +100 -0
  239. package/dist/server/storage/repositories/debug-target-repository.js.map +1 -0
  240. package/dist/server/storage/repositories/framework-analysis-result-repository.d.ts +9 -0
  241. package/dist/server/storage/repositories/framework-analysis-result-repository.js +98 -0
  242. package/dist/server/storage/repositories/framework-analysis-result-repository.js.map +1 -0
  243. package/dist/server/storage/repositories/git-remote-credential-repository.d.ts +9 -0
  244. package/dist/server/storage/repositories/git-remote-credential-repository.js +51 -0
  245. package/dist/server/storage/repositories/git-remote-credential-repository.js.map +1 -0
  246. package/dist/server/storage/repositories/port-lease-repository.d.ts +12 -0
  247. package/dist/server/storage/repositories/port-lease-repository.js +124 -0
  248. package/dist/server/storage/repositories/port-lease-repository.js.map +1 -0
  249. package/dist/server/storage/repositories/runtime-binding-repository.d.ts +10 -0
  250. package/dist/server/storage/repositories/runtime-binding-repository.js +89 -0
  251. package/dist/server/storage/repositories/runtime-binding-repository.js.map +1 -0
  252. package/dist/server/storage/repositories/session-fork-repository.d.ts +8 -0
  253. package/dist/server/storage/repositories/session-fork-repository.js +69 -0
  254. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -0
  255. package/dist/server/storage/repositories/session-index-repository.js +40 -2
  256. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  257. package/dist/server/storage/repositories/terminal-command-template-repository.js +77 -4
  258. package/dist/server/storage/repositories/terminal-command-template-repository.js.map +1 -1
  259. package/dist/server/storage/repositories/terminal-instance-repository.js +89 -7
  260. package/dist/server/storage/repositories/terminal-instance-repository.js.map +1 -1
  261. package/dist/server/storage/repositories/workspace-navigation-state-repository.d.ts +9 -0
  262. package/dist/server/storage/repositories/workspace-navigation-state-repository.js +49 -0
  263. package/dist/server/storage/repositories/workspace-navigation-state-repository.js.map +1 -0
  264. package/dist/server/storage/repositories/workspace-repository.d.ts +7 -1
  265. package/dist/server/storage/repositories/workspace-repository.js +32 -8
  266. package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
  267. package/dist/server/storage/repositories/workspace-worktree-repository.d.ts +13 -0
  268. package/dist/server/storage/repositories/workspace-worktree-repository.js +158 -0
  269. package/dist/server/storage/repositories/workspace-worktree-repository.js.map +1 -0
  270. package/dist/server/storage/sqlite/client.js +408 -0
  271. package/dist/server/storage/sqlite/client.js.map +1 -1
  272. package/dist/server/storage/sqlite/schema.sql +268 -0
  273. package/dist/server/types/domain.d.ts +256 -1
  274. package/dist/server/ws/workbench-ws-hub.js +33 -9
  275. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  276. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +6 -1
  277. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +240 -7
  278. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  279. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +26 -1
  280. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +507 -2
  281. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  282. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +94 -5
  283. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -1
  284. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +5 -1
  285. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +293 -3
  286. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  287. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
  288. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +117 -17
  289. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
  290. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +10 -0
  291. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +128 -8
  292. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  293. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +2 -1
  294. package/node_modules/@codingns/session-sync-core/dist/services.js +55 -8
  295. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  296. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +33 -0
  297. package/package.json +1 -1
  298. package/dist/public/assets/index-CxeghocY.css +0 -1
  299. package/dist/public/assets/index-DXusStl0.js +0 -108
@@ -0,0 +1,241 @@
1
+ import { createId } from "../../shared/utils/id.js";
2
+ import { nowIso } from "../../shared/utils/time.js";
3
+ const ASSISTANT_CAPABILITIES = [
4
+ {
5
+ name: "capabilities.list",
6
+ mode: "read",
7
+ enabled: true,
8
+ summary: "查看当前开放的助手内部能力"
9
+ },
10
+ {
11
+ name: "projects.list",
12
+ mode: "read",
13
+ enabled: true,
14
+ summary: "列出当前托管项目"
15
+ },
16
+ {
17
+ name: "projects.get",
18
+ mode: "read",
19
+ enabled: true,
20
+ summary: "读取指定项目详情和概况"
21
+ },
22
+ {
23
+ name: "projects.sessions.list",
24
+ mode: "read",
25
+ enabled: true,
26
+ summary: "列出指定项目下可操作的会话"
27
+ },
28
+ {
29
+ name: "sessions.get",
30
+ mode: "read",
31
+ enabled: true,
32
+ summary: "读取指定会话详情"
33
+ },
34
+ {
35
+ name: "sessions.messages.list",
36
+ mode: "read",
37
+ enabled: true,
38
+ summary: "读取指定会话消息窗口"
39
+ },
40
+ {
41
+ name: "sessions.runtime.get",
42
+ mode: "read",
43
+ enabled: true,
44
+ summary: "读取指定会话运行态"
45
+ },
46
+ {
47
+ name: "sessions.message.send",
48
+ mode: "proxy_execute",
49
+ enabled: true,
50
+ summary: "向指定真实项目会话发送消息"
51
+ },
52
+ {
53
+ name: "sessions.fork",
54
+ mode: "proxy_execute",
55
+ enabled: true,
56
+ summary: "从指定会话或消息点 fork 新会话"
57
+ },
58
+ {
59
+ name: "terminals.list",
60
+ mode: "read",
61
+ enabled: true,
62
+ summary: "列出指定工作区或项目下的终端"
63
+ },
64
+ {
65
+ name: "terminals.history.read",
66
+ mode: "read",
67
+ enabled: true,
68
+ summary: "读取终端历史输出"
69
+ },
70
+ {
71
+ name: "terminals.input.send",
72
+ mode: "proxy_execute",
73
+ enabled: true,
74
+ summary: "向受控终端发送输入"
75
+ }
76
+ ];
77
+ export class AssistantCapabilityService {
78
+ butlerProjectService;
79
+ butlerSessionService;
80
+ sessionHistoryService;
81
+ sessionLiveRuntimeService;
82
+ terminalService;
83
+ constructor(butlerProjectService, butlerSessionService, sessionHistoryService, sessionLiveRuntimeService, terminalService) {
84
+ this.butlerProjectService = butlerProjectService;
85
+ this.butlerSessionService = butlerSessionService;
86
+ this.sessionHistoryService = sessionHistoryService;
87
+ this.sessionLiveRuntimeService = sessionLiveRuntimeService;
88
+ this.terminalService = terminalService;
89
+ }
90
+ listCapabilities() {
91
+ return this.createReceipt("capabilities.list", {
92
+ kind: "none",
93
+ id: null
94
+ }, {
95
+ version: "2026-04-14",
96
+ items: ASSISTANT_CAPABILITIES
97
+ });
98
+ }
99
+ listProjects(input) {
100
+ const items = this.butlerProjectService.list({
101
+ workspaceId: input.workspaceId?.trim() || undefined,
102
+ lifecycleStatus: input.lifecycleStatus,
103
+ riskLevel: input.riskLevel
104
+ });
105
+ return this.createReceipt("projects.list", {
106
+ kind: "none",
107
+ id: null
108
+ }, {
109
+ items
110
+ });
111
+ }
112
+ async getProject(projectId, userId) {
113
+ await this.butlerSessionService.ensureProjectSessionsSynced(projectId, userId);
114
+ const project = this.butlerProjectService.getById(projectId);
115
+ const overview = this.butlerProjectService.getOverview(projectId);
116
+ const sessions = this.butlerSessionService.listByProject(projectId, userId);
117
+ return this.createReceipt("projects.get", {
118
+ kind: "project",
119
+ id: projectId
120
+ }, {
121
+ project,
122
+ overview,
123
+ sessions
124
+ });
125
+ }
126
+ async listProjectSessions(projectId, userId) {
127
+ await this.butlerSessionService.ensureProjectSessionsSynced(projectId, userId);
128
+ const items = this.butlerSessionService.listByProject(projectId, userId);
129
+ return this.createReceipt("projects.sessions.list", {
130
+ kind: "project",
131
+ id: projectId
132
+ }, {
133
+ items
134
+ });
135
+ }
136
+ getSession(sessionId, userId) {
137
+ const session = this.sessionHistoryService.getSession(sessionId, userId);
138
+ return this.createReceipt("sessions.get", {
139
+ kind: "session",
140
+ id: sessionId
141
+ }, {
142
+ session
143
+ });
144
+ }
145
+ async listSessionMessages(input) {
146
+ const page = await this.sessionHistoryService.readSessionHistory(input.sessionId, input.cursor, input.limit, input.direction, input.userId);
147
+ return this.createReceipt("sessions.messages.list", {
148
+ kind: "session",
149
+ id: input.sessionId
150
+ }, {
151
+ page
152
+ });
153
+ }
154
+ async getSessionRuntime(sessionId, userId) {
155
+ const runtime = await this.sessionLiveRuntimeService.getSessionRuntime(sessionId, userId);
156
+ return this.createReceipt("sessions.runtime.get", {
157
+ kind: "session",
158
+ id: sessionId
159
+ }, {
160
+ runtime
161
+ });
162
+ }
163
+ async sendSessionMessage(input) {
164
+ const result = await this.sessionLiveRuntimeService.sendLiveMessage({
165
+ sessionId: input.sessionId,
166
+ userId: input.userId,
167
+ content: input.content,
168
+ clientRequestId: input.clientRequestId?.trim() || null,
169
+ runtimeOptions: {
170
+ model: input.model?.trim() || null,
171
+ reasoningLevel: input.reasoningLevel?.trim() || null,
172
+ permissionMode: input.permissionMode?.trim() || null,
173
+ attachments: []
174
+ }
175
+ });
176
+ return this.createReceipt("sessions.message.send", {
177
+ kind: "session",
178
+ id: input.sessionId
179
+ }, {
180
+ result
181
+ });
182
+ }
183
+ async forkSession(input) {
184
+ const session = await this.sessionHistoryService.forkSession({
185
+ sessionId: input.sessionId,
186
+ userId: input.userId,
187
+ sourceType: input.sourceType,
188
+ sourceMessageId: input.sourceMessageId?.trim() || null,
189
+ strategy: input.strategy ?? "auto",
190
+ targetProvider: input.targetProvider?.trim() || null
191
+ });
192
+ return this.createReceipt("sessions.fork", {
193
+ kind: "session",
194
+ id: input.sessionId
195
+ }, {
196
+ session
197
+ });
198
+ }
199
+ async listTerminals(input) {
200
+ const workspaceId = input.projectId?.trim()
201
+ ? this.butlerProjectService.getById(input.projectId).workspaceId
202
+ : input.workspaceId?.trim() || "";
203
+ const items = await this.terminalService.listTerminals(workspaceId);
204
+ return this.createReceipt("terminals.list", {
205
+ kind: input.projectId?.trim() ? "project" : "none",
206
+ id: input.projectId?.trim() || null
207
+ }, {
208
+ workspaceId,
209
+ items
210
+ });
211
+ }
212
+ async readTerminalHistory(input) {
213
+ const page = await this.terminalService.readTerminalHistory(input.terminalId, input.beforeSeq, input.limit);
214
+ return this.createReceipt("terminals.history.read", {
215
+ kind: "terminal",
216
+ id: input.terminalId
217
+ }, {
218
+ page
219
+ });
220
+ }
221
+ async sendTerminalInput(input) {
222
+ const result = await this.terminalService.writeInput(input.terminalId, input.content);
223
+ return this.createReceipt("terminals.input.send", {
224
+ kind: "terminal",
225
+ id: input.terminalId
226
+ }, {
227
+ result
228
+ });
229
+ }
230
+ createReceipt(capability, targetRef, payload) {
231
+ return {
232
+ ok: true,
233
+ capability,
234
+ auditId: createId(),
235
+ timestamp: nowIso(),
236
+ targetRef,
237
+ payload
238
+ };
239
+ }
240
+ }
241
+ //# sourceMappingURL=assistant-capability-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-capability-service.js","sourceRoot":"","sources":["../../../../src/modules/assistant-capability/assistant-capability-service.ts"],"names":[],"mappings":"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"}
@@ -220,6 +220,7 @@ function syncCodexInstructionConfig(profile, codexHomeDir, sourceCodexHomeDir) {
220
220
  removeFileIfExists(path.join(targetHomeDir, "AGENTS.override.md"));
221
221
  // 助手需要独立规则,但不能因为独立 home 丢掉 Codex 登录态。
222
222
  syncOptionalFile(path.join(sourceHomeDir, "auth.json"), path.join(targetHomeDir, "auth.json"));
223
+ syncOptionalDirectory(path.join(sourceHomeDir, "skills", "codingns-assistant"), path.join(targetHomeDir, "skills", "codingns-assistant"));
223
224
  writeFileIfChanged(path.join(targetHomeDir, "config.toml"), `${configContent}\n`);
224
225
  }
225
226
  function resolveSourceCodexHomeDir(sourceCodexHomeDir, targetHomeDir) {
@@ -266,61 +267,90 @@ function composeInstructionContent(profile, promptContext) {
266
267
  ## 代码助手运行附加说明(系统自动生成)
267
268
 
268
269
  - 当前工作目录是代码助手专用目录,只使用这里的助手规则,不回退到普通项目会话规则。
270
+ - 你是代码助手控制面,不是项目实现者。默认职责只有:查看、分析、归纳、补查信息、安排下一步、把指令发送给真实项目会话或终端。
271
+ - 禁止直接改业务项目代码、禁止直接生成补丁并落盘、禁止自己在项目目录里写实现。用户要推进开发时,只能通过内部 API 续接/新建项目会话、发送消息、查询结果,或者操作受控终端。
272
+ - 如果用户要求“修改代码”“继续实现”“修 bug”,先定位目标项目和目标会话;没有会话就先新建/续接项目会话,再把任务发给那个会话继续做,不要自己在 Butler 工作目录里动手。
269
273
  - 当前聚合后的平台摘要写在 \`BUTLER_CONTEXT.md\`,先看这里,不要把所有项目原始记录一股脑塞进回答。
270
274
  - 当前摘要作用域是:${promptContext.scope === "project" ? `项目 ${promptContext.projectId}` : "全局总览"}。
275
+ - 你自己的主工具入口不是一堆 HTTP 路由,而是 \`codingns assistant ...\`。真正执行前,先用 \`codingns assistant --help\`、\`codingns assistant help <group>\`、\`codingns assistant <group> <action> --help\` 按需查命令。
276
+ - 如果当前 Codex 环境能发现 \`codingns-assistant\` skill,优先按这个 skill 的流程工作:先查能力,再查项目/会话/终端,再决定是否发送消息、fork 或发终端输入。
277
+ - 默认查询顺序固定为:先看 \`BUTLER_CONTEXT.md\`,再用 \`codingns assistant capabilities list\` 确认能力,再按 \`projects / sessions / terminals\` 分组查具体对象;不要先翻一大堆旧 REST 文档。
271
278
  - 如果你在跟进开发会话,且目标或上下文里提到了 spec,只能围绕 spec 明确写出的必做项推进,不能顺着建议项无限扩展开发范围。
272
279
  - 如果当前没有 spec,就先从用户要求和会话现状里归纳一句核心任务,后续只围绕这个核心任务推进;不要把建议项、最佳实践、顺手优化当成必做项。
273
- - 如果用户的问题里已经带了项目名、会话名、错误词或任务关键词,优先按 \`BUTLER_API.md\` \`GET /api/butler/search?q=...\` 命中摘要,再决定要不要继续翻原始消息;如果用户明确点名历史会话或归档会话,记得加 \`includeArchived=true\`。
274
- - 如果 \`BUTLER_CONTEXT.md\` 里的项目数或会话数是 0,不能直接下结论,必须先按 \`BUTLER_API.md\` 实查一次 \`GET /api/butler/overview\` 和 \`GET /api/butler/projects\`。
275
- - 如果用户追问的细节超出当前摘要,先明确缺口,再要求宿主系统按 \`BUTLER_API.md\` 的说明补查具体项目、会话、巡视或验证信息。
276
- - 如果用户追问会话内容,先定位 \`sessionId\`,再调用 \`GET /api/sessions/:sessionId/messages?direction=backward&limit=40\` 查看最近消息,不要只复述摘要。
280
+ - 如果用户的问题里已经带了项目名、会话名、错误词或任务关键词,先通过 \`codingns assistant projects --help\`、\`codingns assistant sessions --help\` 选对命令,再查目标对象;如果用户明确点名历史会话或归档会话,按 help 提示补充筛选参数。
281
+ - 如果 \`BUTLER_CONTEXT.md\` 里的项目数或会话数是 0,不能直接下结论,必须先跑 \`codingns assistant capabilities list\` 和 \`codingns assistant projects list\` 确认真实状态。
282
+ - 如果用户追问的细节超出当前摘要,先明确缺口,再按 \`BUTLER_API.md\` 里记录的 CLI 顺序补查项目、会话、消息窗口或终端历史。
283
+ - 如果用户追问会话内容,先定位 \`sessionId\`,再优先用 \`codingns assistant sessions messages <sessionId>\` 查看最近消息,不要只复述摘要。
284
+ - 需要推进开发时,优先用 \`codingns assistant sessions send <sessionId> --message ...\`;只有明确需要 shell 链路时,才用 \`codingns assistant terminals send <terminalId> --input ...\`。
277
285
  - 不要编造不存在的项目状态;信息不足时直接说缺什么。
278
286
  `;
279
287
  }
280
288
  function buildApiGuideContent(auth, authFilePath) {
281
- return `# 代码助手内部补查接口
289
+ return `# 代码助手 CLI 与按需补查指南
282
290
 
283
- 这些接口由宿主系统提供,用于按需补查信息,不应该在每轮对话默认全量注入。
291
+ 默认不要直接背 HTTP 路由。先用 \`codingns assistant ...\` 和分层 help 按需查询。
284
292
 
285
293
  ## 固定认证方式
286
294
 
287
295
  - Butler 专用凭证文件:\`${path.basename(authFilePath)}\`
288
296
  - 凭证文件路径:\`${authFilePath}\`
289
297
  - 当前 API 基地址:\`${auth.apiBaseUrl}\`
290
- - 调内部接口时固定读取这个文件,不要每轮重新摸索认证方式。
291
- - 请求头固定为:\`Authorization: Bearer <BUTLER_AUTH.json.accessToken>\`
298
+ - 先从这个文件导出环境变量,再执行 \`codingns assistant ...\`。
299
+
300
+ ## 推荐先准备一次环境变量
301
+
302
+ \`\`\`bash
303
+ export CODINGNS_BASE_URL="$(jq -r '.apiBaseUrl' "${authFilePath}")"
304
+ export CODINGNS_ACCESS_TOKEN="$(jq -r '.accessToken' "${authFilePath}")"
305
+ \`\`\`
292
306
 
293
307
  ## 默认读取顺序
294
308
 
295
309
  1. 先读 \`BUTLER_CONTEXT.md\` 的当前摘要。
296
- 2. 用户的问题里带了项目名、会话名、报错词、任务词时,先补查 \`GET /api/butler/search?q=...\`,优先命中摘要层;如果用户明确点名历史会话或归档会话,改用 \`GET /api/butler/search?q=...&includeArchived=true\`。
297
- 3. 如果摘要里项目数或会话数是 0,先补查 \`GET /api/butler/overview\` \`GET /api/butler/projects\`,确认不是旧摘要。
298
- 4. 用户问全局情况时,补查 \`GET /api/butler/overview\`。
299
- 5. 用户明确追问某个项目时,补查 \`GET /api/butler/projects/:projectId/context\`。
300
- 6. 用户追问某个会话内容时,先拿到 \`sessionId\`,再补查 \`GET /api/sessions/:sessionId/messages?direction=backward&limit=40\`。
301
- 7. 仍然不够时,再按既有 butler 细节接口查询项目、会话、记忆、巡视、验证对象。
310
+ 2. 先跑 \`codingns assistant capabilities list\`,确认当前开放能力。
311
+ 3. 不知道怎么查时,先跑 \`codingns assistant --help\`、\`codingns assistant help projects\`、\`codingns assistant help sessions\`、\`codingns assistant help terminals\`。
312
+ 4. 要找项目时,先 \`codingns assistant projects list\`,需要详情时再 \`projects get <projectId>\`。
313
+ 5. 要找会话时,先 \`codingns assistant sessions list --project <projectId>\`,再按需要用 \`sessions get\`、\`sessions runtime\`、\`sessions messages\`。
314
+ 6. 要推进开发时,优先 \`codingns assistant sessions send <sessionId> --message "..."\`。
315
+ 7. 只有明确需要 shell 链路时,先 \`terminals list\`、\`terminals history\`,再决定是否 \`terminals send\`。
316
+ 8. 要开新分支时,再用 \`codingns assistant sessions fork <sessionId>\`。
317
+
318
+ ## 执行边界
319
+
320
+ - 你不能直接修改项目代码,也不能把自己当成项目执行会话。
321
+ - 需要推进开发时,只能通过下面这些 CLI 命令驱动真实项目会话或受控终端。
322
+ - 需要命令结果时,优先查终端历史;确实要执行命令,再向受控终端发送输入。
323
+ - 需要分叉会话时,统一走 \`codingns assistant sessions fork\`,不要自己伪造一条“新上下文”继续编。
302
324
 
303
- ## 调用示例
325
+ ## help 入口
304
326
 
305
327
  \`\`\`bash
306
- TOKEN="$(jq -r '.accessToken' "${authFilePath}")"
307
- BASE_URL="$(jq -r '.apiBaseUrl' "${authFilePath}")"
308
- curl -H "Authorization: Bearer ${"$"}TOKEN" "${"$"}BASE_URL/api/butler/overview"
328
+ codingns assistant --help
329
+ codingns assistant help projects
330
+ codingns assistant help sessions
331
+ codingns assistant sessions send --help
332
+ codingns assistant terminals send --help
309
333
  \`\`\`
310
334
 
311
- ## 可用接口
335
+ ## 常用命令
312
336
 
313
- - \`GET /api/butler/overview\`:全局聚合总览,只返回摘要层和行动层。
314
- - \`GET /api/butler/projects\`:当前 Butler 视图中的项目列表。
315
- - \`GET /api/butler/context-snapshot\`:完整聚合快照,仍然只返回摘要字段,不返回全量原始正文。
316
- - \`GET /api/butler/search?q=...\`:Butler 摘要优先检索入口,先按项目、会话、记忆、巡视、验证摘要做命中。
317
- - \`GET /api/butler/search?q=...&includeArchived=true\`:当用户明确要查历史会话或归档会话时,扩展到归档摘要。
318
- - \`GET /api/butler/projects/:projectId/context\`:单项目聚合上下文,用于回答项目级追问。
319
- - \`GET /api/butler/projects/:projectId/sessions\`:项目会话列表。
320
- - \`GET /api/butler/projects/:projectId/memories\`:项目记忆摘要列表。
321
- - \`GET /api/butler/projects/:projectId/patrol-runs\`:项目巡视记录列表。
322
- - \`GET /api/butler/projects/:projectId/verifications\`:项目验证记录列表。
323
- - \`GET /api/sessions/:sessionId/messages?direction=backward&limit=40\`:读取某个真实会话最近几十条消息。
337
+ - \`codingns assistant capabilities list\`:查看当前 Butler 可用能力。
338
+ - \`codingns assistant projects list\`:列出托管项目。
339
+ - \`codingns assistant projects get <projectId>\`:读取项目详情和项目下可操作会话。
340
+ - \`codingns assistant sessions list --project <projectId>\`:列出项目会话。
341
+ - \`codingns assistant sessions get <sessionId>\`:读取真实会话详情。
342
+ - \`codingns assistant sessions messages <sessionId> --limit 40\`:读取最近消息窗口。
343
+ - \`codingns assistant sessions runtime <sessionId>\`:查看会话是否还在运行。
344
+ - \`codingns assistant sessions send <sessionId> --message "..."\`:向真实项目会话发消息。
345
+ - \`codingns assistant sessions fork <sessionId> --message-id <messageId>\`:从消息点 fork 新会话。
346
+ - \`codingns assistant terminals list --project-id <projectId>\`:列出项目下终端。
347
+ - \`codingns assistant terminals history <terminalId> --limit 50\`:读取终端最近输出。
348
+ - \`codingns assistant terminals send <terminalId> --input "npm test\\n"\`:向终端发送输入。
349
+
350
+ ## 底层说明
351
+
352
+ - 上面这些命令最终还是调用宿主系统的 \`/api/assistant/*\`。
353
+ - 只有当 CLI 还没覆盖某个极少数细节时,才回退到底层 HTTP。
324
354
  `;
325
355
  }
326
356
  function toTomlString(value) {
@@ -345,6 +375,15 @@ function syncOptionalFile(sourcePath, targetPath) {
345
375
  }
346
376
  fs.copyFileSync(sourcePath, targetPath);
347
377
  }
378
+ function syncOptionalDirectory(sourcePath, targetPath) {
379
+ if (!fs.existsSync(sourcePath) || !fs.statSync(sourcePath).isDirectory()) {
380
+ fs.rmSync(targetPath, { recursive: true, force: true });
381
+ return;
382
+ }
383
+ fs.rmSync(targetPath, { recursive: true, force: true });
384
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
385
+ fs.cpSync(sourcePath, targetPath, { recursive: true });
386
+ }
348
387
  function normalizeControlContent(value, fallback) {
349
388
  const normalized = value?.trim() ?? fallback.trim();
350
389
  if (!normalized) {
@@ -1 +1 @@
1
- {"version":3,"file":"butler-control-session-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-control-session-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butler-control-session-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-control-session-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOpD,OAAO,EACL,8BAA8B,EAE/B,MAAM,6BAA6B,CAAC;AAwBrC,MAAM,OAAO,2BAA2B;IAEnB;IACA;IACA;IACA;IAIA;IAIA;IACA;IACA;IACA;IAfnB,YACmB,oBAA0C,EAC1C,8BAA8D,EAC9D,gBAA2D,EAC3D,qBAGhB,EACgB,yBAGhB,EACgB,uBAA8E,EAC9E,iBAAiG,EACjG,eAA8B,IAAI,EAClC,qBAAoC,IAAI;QAdxC,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,mCAA8B,GAA9B,8BAA8B,CAAgC;QAC9D,qBAAgB,GAAhB,gBAAgB,CAA2C;QAC3D,0BAAqB,GAArB,qBAAqB,CAGrC;QACgB,8BAAyB,GAAzB,yBAAyB,CAGzC;QACgB,4BAAuB,GAAvB,uBAAuB,CAAuD;QAC9E,sBAAiB,GAAjB,iBAAiB,CAAgF;QACjG,iBAAY,GAAZ,YAAY,CAAsB;QAClC,uBAAkB,GAAlB,kBAAkB,CAAsB;IACxD,CAAC;IAEJ,iBAAiB,CAAC,MAAc;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7F,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;YACzC,GAAG,OAAO;YACV,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,MAAM,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,QAAwC,EAAE;QAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC7G,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7F,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;gBACzC,GAAG,OAAO;gBACV,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,MAAM,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;YACpE,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,UAAU;YAC5B,OAAO;YACP,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC;YAC7D,cAAc,EAAE;gBACd,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzC,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC3D,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC3D,WAAW,EAAE,EAAE;aAChB;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;YACzD,EAAE,EAAE,QAAQ,EAAE;YACd,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,SAAS;YACjB,kBAAkB,EAAE,aAAa,CAAC,OAAO;YACzC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC;YACtC,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,MAAc;QAMd,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAE1D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;gBACzD,GAAG,OAAO;gBACV,MAAM,EAAE,SAAS;gBACjB,kBAAkB,EAAE,aAAa,CAAC,OAAO;gBACzC,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;aAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,KAAoC;QAUpC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/F,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAE1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC;gBAClE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM;gBACN,OAAO;gBACP,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC;gBAC7D,cAAc,EAAE;oBACd,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;oBACzC,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBAC3D,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;oBAC3D,WAAW,EAAE,EAAE;iBAChB;aACF,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;gBACzD,GAAG,OAAO;gBACV,MAAM,EAAE,SAAS;gBACjB,kBAAkB,EAAE,aAAa,CAAC,OAAO;gBACzC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC;gBACtC,SAAS,EAAE,MAAM,CAAC,UAAU;aAC7B,CAAC,CAAC;YAEH,OAAO;gBACL,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,UAAuC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAErF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,kCAAkC;gBAC7C,MAAM,EAAE,2BAA2B;aACpC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,MAA4B,EAAE,MAAc;QACzD,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;SACzE,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,OAAsB,EAAE,aAAkC,EAAE,MAAc;QACjG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAEO,oBAAoB,CAAC,OAAsB,EAAE,aAAkC,EAAE,MAAc;QACrG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,8BAA8B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC7F,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACzH,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClF,CAAC;IAEO,UAAU,CAAC,MAA4B,EAAE,eAAuB;QACtE,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;YACzC,GAAG,MAAM;YACT,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,eAAe;YAClD,SAAS,EAAE,MAAM,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,qBAAqB,CAC5B,OAAsB,EACtB,aAAkC,EAClC,IAA+B,EAC/B,YAAoB;IAEpB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACrE,kBAAkB,CAAC,cAAc,EAAE,yBAAyB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAEtF,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,kBAAkB,CAAC,OAAO,CAAC,cAAc,EAAE,yBAAyB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACrE,kBAAkB,CAAC,cAAc,EAAE,yBAAyB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,kBAAkB,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,EACrD,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CACnC,CAAC;IACF,kBAAkB,CAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,EACjD,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAsB,EACtB,YAA2B,EAC3B,kBAAiC;IAEjC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,yBAAyB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,mBAAmB,GACvB,OAAO,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,cAAc;QACrD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,mBAAmB,GACvB,aAAa,KAAK,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE;QAC1G,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,aAAa,GAAG,yBAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAE1F,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAC1D,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnE,sCAAsC;IACtC,gBAAgB,CACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EACrC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CACtC,CAAC;IACF,qBAAqB,CACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EACxD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CACzD,CAAC;IACF,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,yBAAyB,CAAC,kBAAiC,EAAE,aAAqB;IACzF,MAAM,gBAAgB,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAEpD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEhE,IAAI,wBAAwB,KAAK,aAAa,EAAE,CAAC;YAC/C,OAAO,wBAAwB,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExE,IAAI,eAAe,KAAK,aAAa,EAAE,CAAC;QACtC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,yBAAyB,CAAC,mBAA2B,EAAE,mBAA2B;IACzF,MAAM,gBAAgB,GAAG,mBAAmB;SACzC,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAC9E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;IAEV,OAAO;QACL,2BAA2B;QAC3B,gBAAgB;QAChB,6BAA6B,YAAY,CAAC,mBAAmB,CAAC,EAAE;KACjE;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACxC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAsB,EACtB,aAAkC;IAElC,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;;;;;;;;;aAS3B,aAAa,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;;;CAYxF,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA+B,EAAE,YAAoB;IACjF,OAAO;;;;;;oBAMW,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;aAClC,YAAY;iBACR,IAAI,CAAC,UAAU;;;;;;mDAMmB,YAAY;wDACP,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDnE,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,UAAkB;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACpE,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO;IACT,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB,EAAE,UAAkB;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyB,EAAE,QAAgB;IAC1E,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,QAAQ,CAAC;YACjB,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,eAAe;YAC1B,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAgC;IAC7D,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,CAAC"}
@@ -1,23 +1,32 @@
1
+ import { type SchedulerMetrics } from "../tasks/scheduler-metrics.js";
1
2
  import type { ButlerFollowUpService } from "./butler-follow-up-service.js";
2
3
  interface ButlerFollowUpSchedulerLogger {
3
4
  error(message: string, detail?: unknown): void;
4
5
  }
5
6
  interface ButlerFollowUpSchedulerOptions {
6
7
  intervalMs?: number;
8
+ maxIntervalMs?: number;
7
9
  now?: () => string;
8
10
  logger?: ButlerFollowUpSchedulerLogger;
11
+ schedulerMetrics?: SchedulerMetrics;
9
12
  }
10
13
  export declare class ButlerFollowUpScheduler {
11
14
  private readonly butlerFollowUpService;
12
15
  private readonly intervalMs;
16
+ private readonly maxIntervalMs;
13
17
  private readonly now;
14
18
  private readonly logger;
19
+ private readonly schedulerMetrics;
15
20
  private timer;
16
21
  private ticking;
22
+ private started;
23
+ private disposed;
24
+ private idleStreak;
17
25
  constructor(butlerFollowUpService: Pick<ButlerFollowUpService, "runDueTasks">, options?: ButlerFollowUpSchedulerOptions);
18
26
  start(): void;
19
27
  dispose(): Promise<void>;
20
28
  runOnce(): Promise<void>;
29
+ private scheduleNext;
21
30
  private tick;
22
31
  }
23
32
  export {};
@@ -1,31 +1,38 @@
1
1
  import { nowIso } from "../../shared/utils/time.js";
2
+ import { resolveAdaptiveSchedulerDelayMs } from "../tasks/scheduler-metrics.js";
2
3
  const DEFAULT_INTERVAL_MS = 10_000;
3
4
  export class ButlerFollowUpScheduler {
4
5
  butlerFollowUpService;
5
6
  intervalMs;
7
+ maxIntervalMs;
6
8
  now;
7
9
  logger;
10
+ schedulerMetrics;
8
11
  timer = null;
9
12
  ticking = false;
13
+ started = false;
14
+ disposed = false;
15
+ idleStreak = 0;
10
16
  constructor(butlerFollowUpService, options = {}) {
11
17
  this.butlerFollowUpService = butlerFollowUpService;
12
18
  this.intervalMs = Math.max(5_000, options.intervalMs ?? DEFAULT_INTERVAL_MS);
19
+ this.maxIntervalMs = Math.max(this.intervalMs, options.maxIntervalMs ?? this.intervalMs * 8);
13
20
  this.now = options.now ?? nowIso;
14
21
  this.logger = options.logger ?? console;
22
+ this.schedulerMetrics = options.schedulerMetrics ?? null;
15
23
  }
16
24
  start() {
17
- if (this.timer) {
25
+ if (this.timer || this.disposed) {
18
26
  return;
19
27
  }
20
- void this.tick();
21
- this.timer = setInterval(() => {
22
- void this.tick();
23
- }, this.intervalMs);
24
- this.timer.unref?.();
28
+ this.started = true;
29
+ this.scheduleNext(0);
25
30
  }
26
31
  async dispose() {
32
+ this.started = false;
33
+ this.disposed = true;
27
34
  if (this.timer) {
28
- clearInterval(this.timer);
35
+ clearTimeout(this.timer);
29
36
  this.timer = null;
30
37
  }
31
38
  while (this.ticking) {
@@ -33,24 +40,53 @@ export class ButlerFollowUpScheduler {
33
40
  }
34
41
  }
35
42
  async runOnce() {
36
- await this.tick();
43
+ await this.tick(false);
44
+ }
45
+ scheduleNext(delayMs) {
46
+ this.timer = setTimeout(() => {
47
+ this.timer = null;
48
+ void this.tick();
49
+ }, delayMs);
50
+ this.timer.unref?.();
37
51
  }
38
- async tick() {
52
+ async tick(shouldScheduleNext = true) {
39
53
  if (this.ticking) {
40
54
  return;
41
55
  }
42
56
  this.ticking = true;
57
+ const tickStartedAt = Date.now();
58
+ const referenceAt = this.now();
59
+ let result = null;
60
+ let errorCount = 0;
43
61
  try {
44
- await this.butlerFollowUpService.runDueTasks(this.now());
62
+ result = await this.butlerFollowUpService.runDueTasks(referenceAt);
45
63
  }
46
64
  catch (error) {
65
+ errorCount = 1;
47
66
  this.logger.error("[butler-follow-up-scheduler] tick failed", {
48
67
  error: error instanceof Error ? error.message : String(error),
49
- referenceAt: this.now()
68
+ referenceAt
50
69
  });
51
70
  }
52
71
  finally {
53
72
  this.ticking = false;
73
+ const idle = result?.idle ?? true;
74
+ const taskCount = result?.dueTaskCount ?? 0;
75
+ this.idleStreak = idle ? this.idleStreak + 1 : 0;
76
+ const nextDelayMs = resolveAdaptiveSchedulerDelayMs(this.intervalMs, this.maxIntervalMs, this.idleStreak);
77
+ this.schedulerMetrics?.recordTick({
78
+ schedulerName: "butler_follow_up",
79
+ referenceAt,
80
+ durationMs: Date.now() - tickStartedAt,
81
+ taskCount,
82
+ idle,
83
+ errorCount,
84
+ nextDelayMs,
85
+ idleStreak: this.idleStreak
86
+ });
87
+ if (shouldScheduleNext && this.started && !this.disposed && this.timer === null) {
88
+ this.scheduleNext(nextDelayMs);
89
+ }
54
90
  }
55
91
  }
56
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"butler-follow-up-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-follow-up-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAYnC,MAAM,OAAO,uBAAuB;IAQf;IAPF,UAAU,CAAS;IACnB,GAAG,CAAe;IAClB,MAAM,CAAgC;IAC/C,KAAK,GAA0C,IAAI,CAAC;IACpD,OAAO,GAAG,KAAK,CAAC;IAExB,YACmB,qBAAiE,EAClF,UAA0C,EAAE;QAD3B,0BAAqB,GAArB,qBAAqB,CAA4C;QAGlF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;IAC1C,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE;gBAC5D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"butler-follow-up-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-follow-up-scheduler.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,12 @@ export interface ButlerFollowUpTaskView {
37
37
  updatedAt: string;
38
38
  completedAt: string | null;
39
39
  }
40
+ export interface ButlerFollowUpRunDueTasksResult {
41
+ activeTaskCount: number;
42
+ dueTaskCount: number;
43
+ processedTaskCount: number;
44
+ idle: boolean;
45
+ }
40
46
  export interface CreateButlerFollowUpTaskInput {
41
47
  projectId: string;
42
48
  butlerSessionId: string;
@@ -70,7 +76,7 @@ export declare class ButlerFollowUpService {
70
76
  getTask(taskId: string): ButlerFollowUpTaskView;
71
77
  createTask(input: CreateButlerFollowUpTaskInput, userId: string): Promise<ButlerFollowUpTaskView>;
72
78
  cancelTask(taskId: string, userId: string): ButlerFollowUpTaskView;
73
- runDueTasks(referenceAt?: string): Promise<void>;
79
+ runDueTasks(referenceAt?: string): Promise<ButlerFollowUpRunDueTasksResult>;
74
80
  handleSessionTerminal(sessionId: string, referenceAt?: string): Promise<void>;
75
81
  processTask(taskId: string, referenceAt?: string): Promise<ButlerFollowUpTask>;
76
82
  private persist;