@jingyi0605/codingns 0.7.4 → 0.8.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 (416) hide show
  1. package/README.md +6 -0
  2. package/bin/codingns.mjs +747 -28
  3. package/bin/office-mcp-server.mjs +620 -0
  4. package/dist/public/assets/{AdaptiveButlerPage-CgBX49t-.js → AdaptiveButlerPage-BsgVNRAa.js} +1 -1
  5. package/dist/public/assets/{App-tXOqoHNl.js → App-tPcbyRdS.js} +3 -3
  6. package/dist/public/assets/{BootstrapPage-DoRMz87R.js → BootstrapPage--MDOigQi.js} +1 -1
  7. package/dist/public/assets/{ConversationPage-DXR6Hp4O.js → ConversationPage-BBss5ED8.js} +6 -6
  8. package/dist/public/assets/{DesktopDetachPreviewPage-Cyk-ZYCk.js → DesktopDetachPreviewPage-CB8DoqwU.js} +1 -1
  9. package/dist/public/assets/{DesktopWindowPage-DNVNK3hs.js → DesktopWindowPage-GtIx5m8K.js} +1 -1
  10. package/dist/public/assets/FileContextPanel-BcM7AIT4.js +1 -0
  11. package/dist/public/assets/{GitSidebar-Cr3Z9OUI.js → GitSidebar-CMtkaxuI.js} +2 -2
  12. package/dist/public/assets/{MobileCreateSessionSheet-DMW0V6GJ.js → MobileCreateSessionSheet-CrFY41_8.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-CkdnZ_MU.js → MobileTopHeaderFrame-DGVOzXyg.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-KIbqBYJN.js → MobileWorkspaceSwitcherHeader-DLkACTnQ.js} +1 -1
  15. package/dist/public/assets/{RelayConnectEntryPage-DIRBH3hw.js → RelayConnectEntryPage-0MPPjxtQ.js} +1 -1
  16. package/dist/public/assets/{ServerSettingsModal-C-9RxdWP.js → ServerSettingsModal-vgOhwus4.js} +1 -1
  17. package/dist/public/assets/{SessionIndexPage-bRlIydRA.js → SessionIndexPage-KK626Ra9.js} +1 -1
  18. package/dist/public/assets/{SettingsPage-CMEt4ua9.js → SettingsPage-B3edBJIo.js} +2 -2
  19. package/dist/public/assets/{TerminalManagerPanel-2bi9wVhT.js → TerminalManagerPanel-BxlhZp8c.js} +1 -1
  20. package/dist/public/assets/{TerminalPage-DayZz2Tf.js → TerminalPage-B6Rdhylx.js} +1 -1
  21. package/dist/public/assets/{TerminalRuntimeFallbackModal-DgwYcp-Y.js → TerminalRuntimeFallbackModal-BVLfrpSa.js} +1 -1
  22. package/dist/public/assets/{ToolFilesPage-YvnP_FXW.js → ToolFilesPage-N_gwwUjD.js} +1 -1
  23. package/dist/public/assets/{ToolGitPage-GMcQKtV9.js → ToolGitPage-DOcuuWM1.js} +1 -1
  24. package/dist/public/assets/{ToolProcessesPage-DFIQ7BCd.js → ToolProcessesPage-D-FfJ7Re.js} +1 -1
  25. package/dist/public/assets/{ToolsHomePage-CSilFzXR.js → ToolsHomePage-CHfPxd20.js} +1 -1
  26. package/dist/public/assets/{WorkbenchLandingPage-1VtToSz9.js → WorkbenchLandingPage-CTTnfovY.js} +1 -1
  27. package/dist/public/assets/WorkbenchLayout-CbpJg0g1.js +244 -0
  28. package/dist/public/assets/{WorkbenchModal-BWXYSXmC.js → WorkbenchModal-Bt_1fYmM.js} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +1 -0
  30. package/dist/public/assets/WorkbenchShellRoute-DyaMnPfS.js +1 -0
  31. package/dist/public/assets/{WorkspaceDebugDetailPage-Ux8_Q7la.js → WorkspaceDebugDetailPage-s7yuDIxR.js} +1 -1
  32. package/dist/public/assets/{WorkspaceDetailPage-B402p99m.js → WorkspaceDetailPage-Cf-gVpqK.js} +1 -1
  33. package/dist/public/assets/{WorkspaceHomePage-D2pob6HI.js → WorkspaceHomePage-COf6I8sT.js} +1 -1
  34. package/dist/public/assets/{client-runtime-manager-C5D76ewj.js → client-runtime-manager-DGdKvYzx.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-BeHqeru9.js +590 -0
  36. package/dist/public/assets/index-CcaQt50x.css +1 -0
  37. package/dist/public/assets/index-CuzMc7q2.js +42 -0
  38. package/dist/public/assets/{login-direct-candidate-resolver-wXSaB0i7.js → login-direct-candidate-resolver-DEP_xCmR.js} +1 -1
  39. package/dist/public/assets/{model-switch-api-CPtou49j.js → model-switch-api-c6kcbBGm.js} +1 -1
  40. package/dist/public/assets/{preferences-service-CdaK7zA8.js → preferences-service-CV6Ih0BG.js} +1 -1
  41. package/dist/public/assets/{realtime-client-BjQazYsK.js → realtime-client-CRCx5xBt.js} +1 -1
  42. package/dist/public/assets/{relay-entry-BwE5nw0l.js → relay-entry-C751A-Sm.js} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-C-Lbyx2i.js → terminal-runtime-meta-CRAVR-8G.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-BM7-c-gx.js → useRegisteredDebugTemplates-D6YtNS0r.js} +1 -1
  45. package/dist/public/index.html +2 -2
  46. package/dist/server/config/env.d.ts +3 -0
  47. package/dist/server/config/env.js +67 -1
  48. package/dist/server/config/env.js.map +1 -1
  49. package/dist/server/config/opencode-base-url-resolver.d.ts +3 -2
  50. package/dist/server/config/opencode-base-url-resolver.js +64 -24
  51. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  52. package/dist/server/middlewares/auth-guard.js +4 -0
  53. package/dist/server/middlewares/auth-guard.js.map +1 -1
  54. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +168 -1
  55. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +205 -4
  56. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  57. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +296 -2
  58. package/dist/server/modules/assistant-capability/assistant-capability-service.js +872 -3
  59. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  60. package/dist/server/modules/auth/auth-service.d.ts +21 -1
  61. package/dist/server/modules/auth/auth-service.js +64 -0
  62. package/dist/server/modules/auth/auth-service.js.map +1 -1
  63. package/dist/server/modules/browser-runtime/browser-profile-service.d.ts +26 -0
  64. package/dist/server/modules/browser-runtime/browser-profile-service.js +85 -0
  65. package/dist/server/modules/browser-runtime/browser-profile-service.js.map +1 -0
  66. package/dist/server/modules/browser-runtime/browser-runtime-controller.d.ts +69 -0
  67. package/dist/server/modules/browser-runtime/browser-runtime-controller.js +83 -0
  68. package/dist/server/modules/browser-runtime/browser-runtime-controller.js.map +1 -0
  69. package/dist/server/modules/browser-runtime/browser-runtime-service.d.ts +56 -0
  70. package/dist/server/modules/browser-runtime/browser-runtime-service.js +215 -0
  71. package/dist/server/modules/browser-runtime/browser-runtime-service.js.map +1 -0
  72. package/dist/server/modules/browser-runtime/browser-task-execution-support.d.ts +65 -0
  73. package/dist/server/modules/browser-runtime/browser-task-execution-support.js +432 -0
  74. package/dist/server/modules/browser-runtime/browser-task-execution-support.js.map +1 -0
  75. package/dist/server/modules/browser-runtime/browser-task-executor-registry.d.ts +7 -0
  76. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js +21 -0
  77. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js.map +1 -0
  78. package/dist/server/modules/browser-runtime/browser-task-executor.d.ts +55 -0
  79. package/dist/server/modules/browser-runtime/browser-task-executor.js +2 -0
  80. package/dist/server/modules/browser-runtime/browser-task-executor.js.map +1 -0
  81. package/dist/server/modules/browser-runtime/browser-task-payload.d.ts +31 -0
  82. package/dist/server/modules/browser-runtime/browser-task-payload.js +55 -0
  83. package/dist/server/modules/browser-runtime/browser-task-payload.js.map +1 -0
  84. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +19 -0
  85. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +219 -0
  86. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -0
  87. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.d.ts +15 -0
  88. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js +33 -0
  89. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js.map +1 -0
  90. package/dist/server/modules/browser-runtime/playwright-browser-executor.d.ts +16 -0
  91. package/dist/server/modules/browser-runtime/playwright-browser-executor.js +272 -0
  92. package/dist/server/modules/browser-runtime/playwright-browser-executor.js.map +1 -0
  93. package/dist/server/modules/butler/butler-auth-service.js +4 -0
  94. package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
  95. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +1 -0
  96. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
  97. package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
  98. package/dist/server/modules/butler/butler-session-summary-service.js +5 -3
  99. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  100. package/dist/server/modules/butler/butler-workspace-context.js +23 -0
  101. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  102. package/dist/server/modules/debug-target/debug-target-service.d.ts +2 -0
  103. package/dist/server/modules/debug-target/debug-target-service.js +14 -0
  104. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  105. package/dist/server/modules/document-runtime/document-docx-fallback-renderer.py +139 -0
  106. package/dist/server/modules/document-runtime/document-export-executor.d.ts +50 -0
  107. package/dist/server/modules/document-runtime/document-export-executor.js +827 -0
  108. package/dist/server/modules/document-runtime/document-export-executor.js.map +1 -0
  109. package/dist/server/modules/document-runtime/document-runtime-controller.d.ts +127 -0
  110. package/dist/server/modules/document-runtime/document-runtime-controller.js +131 -0
  111. package/dist/server/modules/document-runtime/document-runtime-controller.js.map +1 -0
  112. package/dist/server/modules/document-runtime/document-runtime-service.d.ts +125 -0
  113. package/dist/server/modules/document-runtime/document-runtime-service.js +706 -0
  114. package/dist/server/modules/document-runtime/document-runtime-service.js.map +1 -0
  115. package/dist/server/modules/office/office-controller.d.ts +77 -0
  116. package/dist/server/modules/office/office-controller.js +174 -0
  117. package/dist/server/modules/office/office-controller.js.map +1 -0
  118. package/dist/server/modules/office/office-preview-link-service.d.ts +27 -0
  119. package/dist/server/modules/office/office-preview-link-service.js +121 -0
  120. package/dist/server/modules/office/office-preview-link-service.js.map +1 -0
  121. package/dist/server/modules/office/office-service.d.ts +67 -0
  122. package/dist/server/modules/office/office-service.js +359 -0
  123. package/dist/server/modules/office/office-service.js.map +1 -0
  124. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +38 -14
  125. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
  126. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +4 -0
  127. package/dist/server/modules/opencli/opencli-install-discovery.js +94 -0
  128. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -1
  129. package/dist/server/modules/opencli/opencli-runtime-builder.js +29 -0
  130. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -1
  131. package/dist/server/modules/opencli/opencli-runtime-guard.d.ts +2 -0
  132. package/dist/server/modules/opencli/opencli-runtime-guard.js +5 -0
  133. package/dist/server/modules/opencli/opencli-runtime-guard.js.map +1 -0
  134. package/dist/server/modules/ops-runtime/ops-runtime-controller.d.ts +70 -0
  135. package/dist/server/modules/ops-runtime/ops-runtime-controller.js +83 -0
  136. package/dist/server/modules/ops-runtime/ops-runtime-controller.js.map +1 -0
  137. package/dist/server/modules/ops-runtime/ops-runtime-service.d.ts +80 -0
  138. package/dist/server/modules/ops-runtime/ops-runtime-service.js +327 -0
  139. package/dist/server/modules/ops-runtime/ops-runtime-service.js.map +1 -0
  140. package/dist/server/modules/ops-runtime/ssh-ops-executor.d.ts +41 -0
  141. package/dist/server/modules/ops-runtime/ssh-ops-executor.js +478 -0
  142. package/dist/server/modules/ops-runtime/ssh-ops-executor.js.map +1 -0
  143. package/dist/server/modules/presentation/presentation-controller.d.ts +22 -0
  144. package/dist/server/modules/presentation/presentation-controller.js +59 -0
  145. package/dist/server/modules/presentation/presentation-controller.js.map +1 -0
  146. package/dist/server/modules/presentation/presentation-export-task-service.d.ts +24 -0
  147. package/dist/server/modules/presentation/presentation-export-task-service.js +137 -0
  148. package/dist/server/modules/presentation/presentation-export-task-service.js.map +1 -0
  149. package/dist/server/modules/presentation/presentation-export-types.d.ts +12 -0
  150. package/dist/server/modules/presentation/presentation-export-types.js +2 -0
  151. package/dist/server/modules/presentation/presentation-export-types.js.map +1 -0
  152. package/dist/server/modules/presentation/presentation-pdf-export-service.d.ts +20 -0
  153. package/dist/server/modules/presentation/presentation-pdf-export-service.js +29 -0
  154. package/dist/server/modules/presentation/presentation-pdf-export-service.js.map +1 -0
  155. package/dist/server/modules/presentation/presentation-pptx-export-service.d.ts +20 -0
  156. package/dist/server/modules/presentation/presentation-pptx-export-service.js +64 -0
  157. package/dist/server/modules/presentation/presentation-pptx-export-service.js.map +1 -0
  158. package/dist/server/modules/presentation/presentation-renderer.d.ts +21 -0
  159. package/dist/server/modules/presentation/presentation-renderer.js +208 -0
  160. package/dist/server/modules/presentation/presentation-renderer.js.map +1 -0
  161. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +3 -3
  162. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  163. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +6 -1
  164. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  165. package/dist/server/modules/sessions/codex-app-server-helper-process.js +2 -1
  166. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  167. package/dist/server/modules/sessions/session-controller.d.ts +1 -0
  168. package/dist/server/modules/sessions/session-controller.js +59 -4
  169. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  170. package/dist/server/modules/sessions/session-history-service.js +17 -5
  171. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  172. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -1
  173. package/dist/server/modules/sessions/session-live-runtime-service.js +86 -8
  174. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  175. package/dist/server/modules/sessions/session-provider-config-service.d.ts +25 -1
  176. package/dist/server/modules/sessions/session-provider-config-service.js +54 -5
  177. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  178. package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +14 -0
  179. package/dist/server/modules/sessions/workspace-office-mcp-config.js +54 -0
  180. package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -0
  181. package/dist/server/modules/sessions/workspace-session-auth-service.d.ts +27 -0
  182. package/dist/server/modules/sessions/workspace-session-auth-service.js +109 -0
  183. package/dist/server/modules/sessions/workspace-session-auth-service.js.map +1 -0
  184. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +50 -0
  185. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +332 -0
  186. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -0
  187. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +5 -0
  188. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -1
  189. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +67 -0
  190. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/agents/openai.yaml +4 -0
  191. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/references/cli-workflow.md +133 -0
  192. package/dist/server/modules/skills/skill-controller.d.ts +7 -0
  193. package/dist/server/modules/skills/skill-controller.js +7 -0
  194. package/dist/server/modules/skills/skill-controller.js.map +1 -1
  195. package/dist/server/modules/skills/skill-manager-service.d.ts +61 -0
  196. package/dist/server/modules/skills/skill-manager-service.js +218 -0
  197. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  198. package/dist/server/modules/skills/skill-name-policy.js +2 -1
  199. package/dist/server/modules/skills/skill-name-policy.js.map +1 -1
  200. package/dist/server/modules/tasks/task-helper-client.d.ts +1 -0
  201. package/dist/server/modules/tasks/task-helper-client.js +45 -9
  202. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  203. package/dist/server/modules/tasks/task-types.d.ts +5 -0
  204. package/dist/server/modules/tasks/task-types.js +6 -1
  205. package/dist/server/modules/tasks/task-types.js.map +1 -1
  206. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +2 -1
  207. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -1
  208. package/dist/server/modules/terminal/runtime/node-pty-loader.d.ts +5 -0
  209. package/dist/server/modules/terminal/runtime/node-pty-loader.js +68 -0
  210. package/dist/server/modules/terminal/runtime/node-pty-loader.js.map +1 -0
  211. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +2 -1
  212. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -1
  213. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +6 -9
  214. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
  215. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js +6 -9
  216. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js.map +1 -1
  217. package/dist/server/routes/assistant.d.ts +2 -1
  218. package/dist/server/routes/assistant.js +20 -1
  219. package/dist/server/routes/assistant.js.map +1 -1
  220. package/dist/server/routes/browser-runtime.d.ts +3 -0
  221. package/dist/server/routes/browser-runtime.js +14 -0
  222. package/dist/server/routes/browser-runtime.js.map +1 -0
  223. package/dist/server/routes/document-runtime.d.ts +3 -0
  224. package/dist/server/routes/document-runtime.js +18 -0
  225. package/dist/server/routes/document-runtime.js.map +1 -0
  226. package/dist/server/routes/office.d.ts +3 -0
  227. package/dist/server/routes/office.js +16 -0
  228. package/dist/server/routes/office.js.map +1 -0
  229. package/dist/server/routes/ops-runtime.d.ts +3 -0
  230. package/dist/server/routes/ops-runtime.js +13 -0
  231. package/dist/server/routes/ops-runtime.js.map +1 -0
  232. package/dist/server/routes/presentation.d.ts +3 -0
  233. package/dist/server/routes/presentation.js +5 -0
  234. package/dist/server/routes/presentation.js.map +1 -0
  235. package/dist/server/routes/skills.js +1 -0
  236. package/dist/server/routes/skills.js.map +1 -1
  237. package/dist/server/server/create-server.d.ts +36 -0
  238. package/dist/server/server/create-server.js +215 -4
  239. package/dist/server/server/create-server.js.map +1 -1
  240. package/dist/server/server/release-manifest-sync.d.ts +1 -0
  241. package/dist/server/server/release-manifest-sync.js +2 -2
  242. package/dist/server/server/release-manifest-sync.js.map +1 -1
  243. package/dist/server/server/start-host.js +1 -1
  244. package/dist/server/server/start-host.js.map +1 -1
  245. package/dist/server/storage/repositories/auth-token-repository.js +22 -6
  246. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  247. package/dist/server/storage/repositories/browser-profile-repository.d.ts +18 -0
  248. package/dist/server/storage/repositories/browser-profile-repository.js +134 -0
  249. package/dist/server/storage/repositories/browser-profile-repository.js.map +1 -0
  250. package/dist/server/storage/repositories/document-comment-repository.d.ts +10 -0
  251. package/dist/server/storage/repositories/document-comment-repository.js +118 -0
  252. package/dist/server/storage/repositories/document-comment-repository.js.map +1 -0
  253. package/dist/server/storage/repositories/document-repository.d.ts +16 -0
  254. package/dist/server/storage/repositories/document-repository.js +109 -0
  255. package/dist/server/storage/repositories/document-repository.js.map +1 -0
  256. package/dist/server/storage/repositories/document-revision-repository.d.ts +10 -0
  257. package/dist/server/storage/repositories/document-revision-repository.js +79 -0
  258. package/dist/server/storage/repositories/document-revision-repository.js.map +1 -0
  259. package/dist/server/storage/repositories/document-template-repository.d.ts +13 -0
  260. package/dist/server/storage/repositories/document-template-repository.js +244 -0
  261. package/dist/server/storage/repositories/document-template-repository.js.map +1 -0
  262. package/dist/server/storage/repositories/office-approval-repository.d.ts +11 -0
  263. package/dist/server/storage/repositories/office-approval-repository.js +109 -0
  264. package/dist/server/storage/repositories/office-approval-repository.js.map +1 -0
  265. package/dist/server/storage/repositories/office-artifact-repository.d.ts +10 -0
  266. package/dist/server/storage/repositories/office-artifact-repository.js +89 -0
  267. package/dist/server/storage/repositories/office-artifact-repository.js.map +1 -0
  268. package/dist/server/storage/repositories/office-audit-event-repository.d.ts +8 -0
  269. package/dist/server/storage/repositories/office-audit-event-repository.js +54 -0
  270. package/dist/server/storage/repositories/office-audit-event-repository.js.map +1 -0
  271. package/dist/server/storage/repositories/office-connector-repository.d.ts +10 -0
  272. package/dist/server/storage/repositories/office-connector-repository.js +97 -0
  273. package/dist/server/storage/repositories/office-connector-repository.js.map +1 -0
  274. package/dist/server/storage/repositories/office-receipt-repository.d.ts +8 -0
  275. package/dist/server/storage/repositories/office-receipt-repository.js +48 -0
  276. package/dist/server/storage/repositories/office-receipt-repository.js.map +1 -0
  277. package/dist/server/storage/repositories/office-rollback-record-repository.d.ts +8 -0
  278. package/dist/server/storage/repositories/office-rollback-record-repository.js +60 -0
  279. package/dist/server/storage/repositories/office-rollback-record-repository.js.map +1 -0
  280. package/dist/server/storage/repositories/office-task-repository.d.ts +19 -0
  281. package/dist/server/storage/repositories/office-task-repository.js +199 -0
  282. package/dist/server/storage/repositories/office-task-repository.js.map +1 -0
  283. package/dist/server/storage/repositories/office-task-step-repository.d.ts +10 -0
  284. package/dist/server/storage/repositories/office-task-step-repository.js +110 -0
  285. package/dist/server/storage/repositories/office-task-step-repository.js.map +1 -0
  286. package/dist/server/storage/repositories/ops-target-repository.d.ts +16 -0
  287. package/dist/server/storage/repositories/ops-target-repository.js +119 -0
  288. package/dist/server/storage/repositories/ops-target-repository.js.map +1 -0
  289. package/dist/server/storage/repositories/session-binding-repository.d.ts +4 -0
  290. package/dist/server/storage/repositories/session-binding-repository.js +70 -69
  291. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  292. package/dist/server/storage/repositories/session-changed-file-repository.d.ts +6 -0
  293. package/dist/server/storage/repositories/session-changed-file-repository.js +44 -43
  294. package/dist/server/storage/repositories/session-changed-file-repository.js.map +1 -1
  295. package/dist/server/storage/repositories/session-fork-repository.d.ts +2 -0
  296. package/dist/server/storage/repositories/session-fork-repository.js +42 -41
  297. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -1
  298. package/dist/server/storage/repositories/session-index-repository.d.ts +5 -0
  299. package/dist/server/storage/repositories/session-index-repository.js +153 -152
  300. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  301. package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +7 -0
  302. package/dist/server/storage/repositories/session-message-attachment-repository.js +91 -90
  303. package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
  304. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +2 -0
  305. package/dist/server/storage/repositories/session-message-origin-repository.js +25 -24
  306. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -1
  307. package/dist/server/storage/repositories/session-state-repository.d.ts +2 -0
  308. package/dist/server/storage/repositories/session-state-repository.js +35 -34
  309. package/dist/server/storage/repositories/session-state-repository.js.map +1 -1
  310. package/dist/server/storage/repositories/session-status-snapshot-repository.d.ts +2 -0
  311. package/dist/server/storage/repositories/session-status-snapshot-repository.js +25 -24
  312. package/dist/server/storage/repositories/session-status-snapshot-repository.js.map +1 -1
  313. package/dist/server/storage/sqlite/client.js +123 -1
  314. package/dist/server/storage/sqlite/client.js.map +1 -1
  315. package/dist/server/storage/sqlite/schema.sql +300 -1
  316. package/dist/server/types/domain.d.ts +205 -1
  317. package/package.json +14 -7
  318. package/scripts/postinstall.mjs +159 -7
  319. package/dist/public/assets/FileContextPanel-xGTYDclT.js +0 -1
  320. package/dist/public/assets/WorkbenchLayout-DScHaza9.js +0 -244
  321. package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +0 -1
  322. package/dist/public/assets/WorkbenchShellRoute-DhQo_0vu.css +0 -1
  323. package/dist/public/assets/file-tree-icon-lfU9Ag77.js +0 -3
  324. package/dist/public/assets/index-CFYXCsyx.css +0 -1
  325. package/dist/public/assets/index-NGxWr8Ix.js +0 -42
  326. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +0 -42
  327. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +0 -346
  328. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +0 -1
  329. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +0 -1
  330. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +0 -80
  331. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +0 -1
  332. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +0 -18
  333. package/node_modules/@codingns/session-sync-core/dist/index.js +0 -19
  334. package/node_modules/@codingns/session-sync-core/dist/index.js.map +0 -1
  335. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +0 -18
  336. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +0 -659
  337. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +0 -1
  338. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +0 -11
  339. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +0 -72
  340. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +0 -1
  341. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +0 -67
  342. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +0 -752
  343. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +0 -1
  344. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +0 -48
  345. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +0 -1184
  346. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +0 -1
  347. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.d.ts +0 -11
  348. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +0 -105
  349. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +0 -1
  350. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +0 -84
  351. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +0 -2436
  352. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +0 -1
  353. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +0 -47
  354. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +0 -1480
  355. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +0 -1
  356. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +0 -33
  357. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +0 -684
  358. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +0 -1
  359. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.d.ts +0 -9
  360. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js +0 -17
  361. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js.map +0 -1
  362. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +0 -1
  363. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +0 -8
  364. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +0 -1
  365. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.d.ts +0 -48
  366. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +0 -373
  367. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +0 -1
  368. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +0 -61
  369. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +0 -1191
  370. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +0 -1
  371. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +0 -27
  372. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +0 -415
  373. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +0 -1
  374. package/node_modules/@codingns/session-sync-core/dist/registry.d.ts +0 -7
  375. package/node_modules/@codingns/session-sync-core/dist/registry.js +0 -22
  376. package/node_modules/@codingns/session-sync-core/dist/registry.js.map +0 -1
  377. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +0 -24
  378. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +0 -329
  379. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +0 -1
  380. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +0 -30
  381. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +0 -939
  382. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +0 -1
  383. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +0 -1
  384. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -16
  385. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +0 -1
  386. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +0 -70
  387. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -2571
  388. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +0 -1
  389. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +0 -21
  390. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +0 -561
  391. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +0 -1
  392. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +0 -38
  393. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +0 -911
  394. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +0 -1
  395. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +0 -15
  396. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +0 -16
  397. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +0 -1
  398. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +0 -37
  399. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +0 -963
  400. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +0 -1
  401. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +0 -21
  402. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +0 -168
  403. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +0 -1
  404. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +0 -152
  405. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js +0 -2
  406. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js.map +0 -1
  407. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +0 -28
  408. package/node_modules/@codingns/session-sync-core/dist/services.js +0 -148
  409. package/node_modules/@codingns/session-sync-core/dist/services.js.map +0 -1
  410. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +0 -6
  411. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +0 -9
  412. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +0 -1
  413. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +0 -198
  414. package/node_modules/@codingns/session-sync-core/dist/types.js +0 -2
  415. package/node_modules/@codingns/session-sync-core/dist/types.js.map +0 -1
  416. package/node_modules/@codingns/session-sync-core/package.json +0 -33
package/bin/codingns.mjs CHANGED
@@ -40,6 +40,9 @@ switch (command) {
40
40
  case "opencli":
41
41
  await runOpenCliCommand(argv);
42
42
  break;
43
+ case "mcp":
44
+ await runMcpCommand(argv);
45
+ break;
43
46
  default:
44
47
  console.error(`[codingns] 不支持的命令:${command}`);
45
48
  printHelp(1);
@@ -606,6 +609,21 @@ async function runAssistantCommand(argv) {
606
609
  projectId: readOptionalTrimmedValue(options.values["project-id"])
607
610
  })));
608
611
  return;
612
+ case "terminals:create":
613
+ await printAssistantResponse(await requestAssistant({
614
+ method: "POST",
615
+ path: "/api/assistant/terminals",
616
+ argv: rest,
617
+ supportedOptions: ["workspace-id", "project-id", "name", "cwd", "shell"],
618
+ helpTopic: "terminals.create"
619
+ }, (options) => ({
620
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
621
+ projectId: readOptionalTrimmedValue(options.values["project-id"]),
622
+ name: readOptionalTrimmedValue(options.values.name),
623
+ cwd: readOptionalTrimmedValue(options.values.cwd),
624
+ shell: readOptionalTrimmedValue(options.values.shell)
625
+ })));
626
+ return;
609
627
  case "terminals:history": {
610
628
  const [terminalId, ...tail] = rest;
611
629
  await printAssistantResponse(await requestAssistant({
@@ -627,9 +645,11 @@ async function runAssistantCommand(argv) {
627
645
  path: `/api/assistant/terminals/${requirePositional(terminalId, "terminalId")}/input`,
628
646
  argv: tail,
629
647
  supportedOptions: ["input"],
648
+ supportedFlags: ["confirm"],
630
649
  helpTopic: "terminals.send"
631
650
  }, (options) => ({
632
- content: requireOptionValue(options.values.input, "input")
651
+ content: requireOptionValue(options.values.input, "input"),
652
+ confirm: options.flags.confirm === true
633
653
  })));
634
654
  return;
635
655
  }
@@ -639,7 +659,245 @@ async function runAssistantCommand(argv) {
639
659
  method: "DELETE",
640
660
  path: `/api/assistant/terminals/${requirePositional(terminalId, "terminalId")}`,
641
661
  argv: tail,
662
+ supportedFlags: ["confirm"],
642
663
  helpTopic: "terminals.close"
664
+ }, (options) => ({
665
+ confirm: options.flags.confirm === true
666
+ })));
667
+ return;
668
+ }
669
+ case "office:document-create":
670
+ await printAssistantResponse(await requestAssistant({
671
+ method: "POST",
672
+ path: "/api/assistant/office/documents",
673
+ argv: rest,
674
+ supportedOptions: ["workspace-id", "title", "template-id", "template-key", "summary", "content-json", "outline-json"],
675
+ helpTopic: "office.document-create"
676
+ }, (options) => ({
677
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
678
+ title: requireOptionValue(options.values.title, "title"),
679
+ templateId: readOptionalTrimmedValue(options.values["template-id"]),
680
+ templateKey: readOptionalTrimmedValue(options.values["template-key"]),
681
+ summary: readOptionalTrimmedValue(options.values.summary),
682
+ content: parseJsonOption(options.values["content-json"], "content-json"),
683
+ outline: parseJsonOption(options.values["outline-json"], "outline-json")
684
+ })));
685
+ return;
686
+ case "office:document-update": {
687
+ const [documentId, ...tail] = rest;
688
+ await printAssistantResponse(await requestAssistant({
689
+ method: "PATCH",
690
+ path: `/api/assistant/office/documents/${requirePositional(documentId, "documentId")}`,
691
+ argv: tail,
692
+ supportedOptions: ["title", "template-id", "summary", "status", "content-json", "outline-json"],
693
+ helpTopic: "office.document-update"
694
+ }, (options) => ({
695
+ title: readOptionalTrimmedValue(options.values.title),
696
+ templateId: readOptionalTrimmedValue(options.values["template-id"]),
697
+ summary: readOptionalTrimmedValue(options.values.summary),
698
+ status: readOptionalTrimmedValue(options.values.status),
699
+ content: parseJsonOption(options.values["content-json"], "content-json"),
700
+ outline: parseJsonOption(options.values["outline-json"], "outline-json")
701
+ })));
702
+ return;
703
+ }
704
+ case "office:document-export": {
705
+ const [documentId, ...tail] = rest;
706
+ await printAssistantResponse(await requestAssistant({
707
+ method: "POST",
708
+ path: `/api/assistant/office/documents/${requirePositional(documentId, "documentId")}/export`,
709
+ argv: tail,
710
+ supportedOptions: ["workspace-id", "format", "risk-level", "execute"],
711
+ helpTopic: "office.document-export"
712
+ }, (options) => ({
713
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
714
+ format: readOptionalTrimmedValue(options.values.format),
715
+ riskLevel: readOptionalTrimmedValue(options.values["risk-level"]),
716
+ execute: parseOptionalBooleanOption(options.values.execute, "execute")
717
+ })));
718
+ return;
719
+ }
720
+ case "office:document-task": {
721
+ const [taskId, ...tail] = rest;
722
+ await printAssistantResponse(await requestAssistant({
723
+ method: "GET",
724
+ path: `/api/assistant/office/document-tasks/${requirePositional(taskId, "taskId")}`,
725
+ argv: tail,
726
+ helpTopic: "office.document-task"
727
+ }));
728
+ return;
729
+ }
730
+ case "office:browser-profiles":
731
+ case "office:browser-profile-list":
732
+ await printAssistantResponse(await requestAssistant({
733
+ method: "GET",
734
+ path: "/api/assistant/office/browser/profiles",
735
+ argv: rest,
736
+ supportedOptions: ["workspace-id"],
737
+ helpTopic: "office.browser-profile-list"
738
+ }, (options) => ({
739
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"])
740
+ })));
741
+ return;
742
+ case "office:browser-profile-create":
743
+ await printAssistantResponse(await requestAssistant({
744
+ method: "POST",
745
+ path: "/api/assistant/office/browser/profiles",
746
+ argv: rest,
747
+ supportedOptions: ["workspace-id", "engine", "mode", "display-name", "ownership-scope", "cdp-endpoint"],
748
+ helpTopic: "office.browser-profile-create"
749
+ }, (options) => ({
750
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
751
+ engine: readOptionalTrimmedValue(options.values.engine),
752
+ mode: readOptionalTrimmedValue(options.values.mode),
753
+ displayName: readOptionalTrimmedValue(options.values["display-name"]),
754
+ ownershipScope: readOptionalTrimmedValue(options.values["ownership-scope"]),
755
+ cdpEndpoint: readOptionalTrimmedValue(options.values["cdp-endpoint"])
756
+ })));
757
+ return;
758
+ case "office:browser-profile-get": {
759
+ const [profileId, ...tail] = rest;
760
+ await printAssistantResponse(await requestAssistant({
761
+ method: "GET",
762
+ path: `/api/assistant/office/browser/profiles/${requirePositional(profileId, "profileId")}`,
763
+ argv: tail,
764
+ helpTopic: "office.browser-profile-get"
765
+ }));
766
+ return;
767
+ }
768
+ case "office:browser-task-create":
769
+ await printAssistantResponse(await requestAssistant({
770
+ method: "POST",
771
+ path: "/api/assistant/office/browser/tasks",
772
+ argv: rest,
773
+ supportedOptions: ["workspace-id", "title", "profile-id", "risk-level", "execution-backend", "execute", "input-json"],
774
+ helpTopic: "office.browser-task-create"
775
+ }, (options) => ({
776
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
777
+ title: readOptionalTrimmedValue(options.values.title),
778
+ profileId: readOptionalTrimmedValue(options.values["profile-id"]),
779
+ riskLevel: readOptionalTrimmedValue(options.values["risk-level"]),
780
+ executionBackend: readOptionalTrimmedValue(options.values["execution-backend"]),
781
+ execute: parseOptionalBooleanOption(options.values.execute, "execute"),
782
+ input: parseJsonOption(options.values["input-json"], "input-json")
783
+ })));
784
+ return;
785
+ case "office:browser-task-get": {
786
+ const [taskId, ...tail] = rest;
787
+ await printAssistantResponse(await requestAssistant({
788
+ method: "GET",
789
+ path: `/api/assistant/office/browser/tasks/${requirePositional(taskId, "taskId")}`,
790
+ argv: tail,
791
+ helpTopic: "office.browser-task-get"
792
+ }));
793
+ return;
794
+ }
795
+ case "office:ops-targets":
796
+ await printAssistantResponse(await requestAssistant({
797
+ method: "GET",
798
+ path: "/api/assistant/office/ops/targets",
799
+ argv: rest,
800
+ supportedOptions: ["workspace-id", "kind", "status"],
801
+ helpTopic: "office.ops-targets"
802
+ }, (options) => ({
803
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
804
+ kind: readOptionalTrimmedValue(options.values.kind),
805
+ status: readOptionalTrimmedValue(options.values.status)
806
+ })));
807
+ return;
808
+ case "office:ops-target-create":
809
+ await printAssistantResponse(await requestAssistant({
810
+ method: "POST",
811
+ path: "/api/assistant/office/ops/targets",
812
+ argv: rest,
813
+ supportedOptions: ["workspace-id", "kind", "display-name", "environment", "credential-ref", "config-json"],
814
+ helpTopic: "office.ops-target-create"
815
+ }, (options) => ({
816
+ workspaceId: readOptionalTrimmedValue(options.values["workspace-id"]),
817
+ kind: readOptionalTrimmedValue(options.values.kind),
818
+ displayName: requireOptionValue(options.values["display-name"], "display-name"),
819
+ environment: readOptionalTrimmedValue(options.values.environment),
820
+ credentialRef: readOptionalTrimmedValue(options.values["credential-ref"]),
821
+ config: parseJsonOption(options.values["config-json"], "config-json") ?? {}
822
+ })));
823
+ return;
824
+ case "office:ops-target-get": {
825
+ const [targetId, ...tail] = rest;
826
+ await printAssistantResponse(await requestAssistant({
827
+ method: "GET",
828
+ path: `/api/assistant/office/ops/targets/${requirePositional(targetId, "targetId")}`,
829
+ argv: tail,
830
+ helpTopic: "office.ops-target-get"
831
+ }));
832
+ return;
833
+ }
834
+ case "office:ops-ssh-task-create":
835
+ await printAssistantResponse(await requestAssistant({
836
+ method: "POST",
837
+ path: "/api/assistant/office/ops/ssh-tasks",
838
+ argv: rest,
839
+ supportedOptions: ["title", "target-id", "risk-level", "execute", "input-json"],
840
+ helpTopic: "office.ops-ssh-task-create"
841
+ }, (options) => ({
842
+ title: readOptionalTrimmedValue(options.values.title),
843
+ targetId: requireOptionValue(options.values["target-id"], "target-id"),
844
+ riskLevel: readOptionalTrimmedValue(options.values["risk-level"]),
845
+ execute: parseOptionalBooleanOption(options.values.execute, "execute"),
846
+ input: parseJsonOption(options.values["input-json"], "input-json")
847
+ })));
848
+ return;
849
+ case "office:ops-task-execute": {
850
+ const [taskId, ...tail] = rest;
851
+ await printAssistantResponse(await requestAssistant({
852
+ method: "POST",
853
+ path: `/api/assistant/office/ops/tasks/${requirePositional(taskId, "taskId")}/execute`,
854
+ argv: tail,
855
+ supportedFlags: ["confirm"],
856
+ helpTopic: "office.ops-task-execute"
857
+ }, (options) => ({
858
+ confirm: options.flags.confirm === true
859
+ })));
860
+ return;
861
+ }
862
+ case "office:task-approval-reply": {
863
+ const [approvalId, ...tail] = rest;
864
+ await printAssistantResponse(await requestAssistant({
865
+ method: "POST",
866
+ path: `/api/assistant/office/task-approvals/${requirePositional(approvalId, "approvalId")}/reply`,
867
+ argv: tail,
868
+ supportedOptions: ["status", "decision-note"],
869
+ helpTopic: "office.task-approval-reply"
870
+ }, (options) => ({
871
+ status: readOptionalTrimmedValue(options.values.status) ?? "approved",
872
+ decisionNote: readOptionalTrimmedValue(options.values["decision-note"])
873
+ })));
874
+ return;
875
+ }
876
+ case "office:ops-browser-task-create":
877
+ await printAssistantResponse(await requestAssistant({
878
+ method: "POST",
879
+ path: "/api/assistant/office/ops/browser-tasks",
880
+ argv: rest,
881
+ supportedOptions: ["title", "target-id", "profile-id", "execution-backend", "risk-level", "input-json"],
882
+ supportedFlags: ["confirm"],
883
+ helpTopic: "office.ops-browser-task-create"
884
+ }, (options) => ({
885
+ title: readOptionalTrimmedValue(options.values.title),
886
+ targetId: requireOptionValue(options.values["target-id"], "target-id"),
887
+ profileId: readOptionalTrimmedValue(options.values["profile-id"]),
888
+ executionBackend: readOptionalTrimmedValue(options.values["execution-backend"]),
889
+ riskLevel: readOptionalTrimmedValue(options.values["risk-level"]),
890
+ input: parseJsonOption(options.values["input-json"], "input-json"),
891
+ confirm: options.flags.confirm === true
892
+ })));
893
+ return;
894
+ case "office:ops-task-get": {
895
+ const [taskId, ...tail] = rest;
896
+ await printAssistantResponse(await requestAssistant({
897
+ method: "GET",
898
+ path: `/api/assistant/office/ops/tasks/${requirePositional(taskId, "taskId")}`,
899
+ argv: tail,
900
+ helpTopic: "office.ops-task-get"
643
901
  }));
644
902
  return;
645
903
  }
@@ -658,11 +916,13 @@ async function runAssistantCommand(argv) {
658
916
  argv: rest,
659
917
  supportedOptions: ["workspace-id", "root-path", "command-hint"],
660
918
  repeatableOptions: ["command-hint"],
919
+ supportedFlags: ["confirm"],
661
920
  helpTopic: "debug-targets.analyze"
662
921
  }, (options) => ({
663
922
  workspaceId: requireOptionValue(options.values["workspace-id"], "workspace-id"),
664
923
  rootPath: requireOptionValue(options.values["root-path"], "root-path"),
665
- commandHints: readMultiOptionValues(options.values["command-hint"])
924
+ commandHints: readMultiOptionValues(options.values["command-hint"]),
925
+ confirm: options.flags.confirm === true
666
926
  })));
667
927
  return;
668
928
  case "debug-targets:framework-analysis": {
@@ -681,8 +941,11 @@ async function runAssistantCommand(argv) {
681
941
  method: "POST",
682
942
  path: `/api/assistant/debug-targets/${requirePositional(targetId, "targetId")}/framework-analysis/refresh`,
683
943
  argv: tail,
944
+ supportedFlags: ["confirm"],
684
945
  helpTopic: "debug-targets.refresh-framework-analysis"
685
- }));
946
+ }, (options) => ({
947
+ confirm: options.flags.confirm === true
948
+ })));
686
949
  return;
687
950
  }
688
951
  case "debug-targets:launch-plan": {
@@ -693,9 +956,11 @@ async function runAssistantCommand(argv) {
693
956
  argv: tail,
694
957
  supportedOptions: ["port-request"],
695
958
  repeatableOptions: ["port-request"],
959
+ supportedFlags: ["confirm"],
696
960
  helpTopic: "debug-targets.launch-plan"
697
961
  }, (options) => ({
698
- portRequests: parseDebugPortRequests(options.values["port-request"])
962
+ portRequests: parseDebugPortRequests(options.values["port-request"]),
963
+ confirm: options.flags.confirm === true
699
964
  })));
700
965
  return;
701
966
  }
@@ -707,11 +972,13 @@ async function runAssistantCommand(argv) {
707
972
  argv: tail,
708
973
  supportedOptions: ["shell", "runtime-type", "port-request"],
709
974
  repeatableOptions: ["port-request"],
975
+ supportedFlags: ["confirm"],
710
976
  helpTopic: "debug-targets.run"
711
977
  }, (options) => ({
712
978
  shell: readOptionalTrimmedValue(options.values.shell),
713
979
  runtimeType: readOptionalTrimmedValue(options.values["runtime-type"]),
714
- portRequests: parseDebugPortRequests(options.values["port-request"])
980
+ portRequests: parseDebugPortRequests(options.values["port-request"]),
981
+ confirm: options.flags.confirm === true
715
982
  })));
716
983
  return;
717
984
  }
@@ -913,8 +1180,11 @@ async function runAssistantCommand(argv) {
913
1180
  method: "POST",
914
1181
  path: `/api/assistant/worktrees/${requirePositional(workspaceId, "workspaceId")}/merge-into-parent`,
915
1182
  argv: tail,
1183
+ supportedFlags: ["confirm"],
916
1184
  helpTopic: "worktrees.merge"
917
- }));
1185
+ }, (options) => ({
1186
+ confirm: options.flags.confirm === true
1187
+ })));
918
1188
  return;
919
1189
  }
920
1190
  case "worktrees:cleanup": {
@@ -936,6 +1206,83 @@ async function runAssistantCommand(argv) {
936
1206
  }
937
1207
  }
938
1208
 
1209
+ async function runMcpCommand(argv) {
1210
+ const [target, action, ...rest] = argv;
1211
+
1212
+ if (!target || isHelpToken(target)) {
1213
+ printMcpHelp(0);
1214
+ }
1215
+
1216
+ if (target !== "workspace-office") {
1217
+ console.error(`[codingns] 不支持的 MCP 目标:${target}`);
1218
+ printMcpHelp(1);
1219
+ }
1220
+
1221
+ if (!action || isHelpToken(action)) {
1222
+ printMcpWorkspaceOfficeHelp(0);
1223
+ }
1224
+
1225
+ switch (action) {
1226
+ case "serve":
1227
+ await runWorkspaceOfficeMcpServe(rest);
1228
+ return;
1229
+ default:
1230
+ console.error(`[codingns] 不支持的 workspace-office MCP 动作:${action}`);
1231
+ printMcpWorkspaceOfficeHelp(1);
1232
+ }
1233
+ }
1234
+
1235
+ async function runWorkspaceOfficeMcpServe(argv) {
1236
+ const options = parseArgs(argv, {
1237
+ supportedOptions: ["base-url", "token", "auth-file"],
1238
+ supportedFlags: []
1239
+ });
1240
+
1241
+ if (options.help) {
1242
+ printMcpWorkspaceOfficeHelp(0);
1243
+ }
1244
+
1245
+ if (options.errors.length > 0) {
1246
+ for (const error of options.errors) {
1247
+ console.error(`[codingns] ${error}`);
1248
+ }
1249
+ printMcpWorkspaceOfficeHelp(1);
1250
+ }
1251
+
1252
+ const authFilePath = readStringOption(
1253
+ options.values["auth-file"],
1254
+ process.env.WORKSPACE_SESSION_AUTH_FILE,
1255
+ process.env.CODINGNS_AUTH_FILE,
1256
+ process.env.BUTLER_AUTH_FILE
1257
+ );
1258
+ const credential = authFilePath
1259
+ ? readAssistantCredentialFromFile(path.resolve(authFilePath))
1260
+ : readAssistantCredential();
1261
+ const baseUrl = readStringOption(
1262
+ options.values["base-url"],
1263
+ process.env.CODINGNS_OFFICE_MCP_BASE_URL,
1264
+ credential?.apiBaseUrl ?? ""
1265
+ );
1266
+ const accessToken = readStringOption(
1267
+ options.values.token,
1268
+ process.env.CODINGNS_OFFICE_MCP_ACCESS_TOKEN,
1269
+ credential?.accessToken ?? ""
1270
+ );
1271
+
1272
+ if (!baseUrl) {
1273
+ fail("workspace-office MCP 缺少 baseUrl,请传 --base-url 或提供认证文件");
1274
+ }
1275
+
1276
+ if (!accessToken) {
1277
+ fail("workspace-office MCP 缺少 access token,请传 --token 或提供认证文件");
1278
+ }
1279
+
1280
+ process.env.CODINGNS_OFFICE_MCP_BASE_URL = baseUrl;
1281
+ process.env.CODINGNS_OFFICE_MCP_ACCESS_TOKEN = accessToken;
1282
+ await import("./office-mcp-server.mjs");
1283
+ await new Promise(() => {});
1284
+ }
1285
+
939
1286
  async function runSkillsCommand(argv) {
940
1287
  const [action, ...rest] = argv;
941
1288
 
@@ -1231,7 +1578,7 @@ async function requestAssistant(command, buildPayload) {
1231
1578
  let response;
1232
1579
 
1233
1580
  try {
1234
- const usesJsonBody = command.method === "POST" || command.method === "PUT";
1581
+ const usesJsonBody = command.method === "POST" || command.method === "PUT" || command.method === "DELETE";
1235
1582
  response = await fetch(url, {
1236
1583
  method: command.method,
1237
1584
  headers: {
@@ -1578,6 +1925,15 @@ function readAssistantCredential() {
1578
1925
  return cachedAssistantCredential;
1579
1926
  }
1580
1927
 
1928
+ cachedAssistantCredential = readAssistantCredentialFromFile(credentialFilePath);
1929
+ return cachedAssistantCredential;
1930
+ }
1931
+
1932
+ function readAssistantCredentialFromFile(credentialFilePath) {
1933
+ if (!credentialFilePath) {
1934
+ return null;
1935
+ }
1936
+
1581
1937
  let rawContent;
1582
1938
 
1583
1939
  try {
@@ -1652,6 +2008,31 @@ function readOptionalTrimmedValue(value) {
1652
2008
  return normalized.length > 0 ? normalized : null;
1653
2009
  }
1654
2010
 
2011
+ function parseJsonOption(value, field) {
2012
+ const normalized = readOptionalTrimmedValue(value);
2013
+
2014
+ if (!normalized) {
2015
+ return undefined;
2016
+ }
2017
+
2018
+ try {
2019
+ return JSON.parse(normalized);
2020
+ } catch (error) {
2021
+ const detail = error instanceof Error ? error.message : "未知错误";
2022
+ fail(`参数 --${field} 不是合法 JSON:${detail}`);
2023
+ }
2024
+ }
2025
+
2026
+ function parseOptionalBooleanOption(value, field) {
2027
+ const normalized = readOptionalTrimmedValue(value);
2028
+
2029
+ if (normalized === null) {
2030
+ return undefined;
2031
+ }
2032
+
2033
+ return parseBooleanOption(normalized, field);
2034
+ }
2035
+
1655
2036
  function readAssistantTerminalHistoryLimitOption(value) {
1656
2037
  const normalized = readOptionalTrimmedValue(value);
1657
2038
 
@@ -1798,6 +2179,7 @@ codingns 用法:
1798
2179
 
1799
2180
  codingns start [--host 0.0.0.0] [--port 3002] [--data-dir ~/.codingns] [--demo]
1800
2181
  codingns assistant <group> <action> [options]
2182
+ codingns mcp workspace-office serve [--auth-file <path> | --base-url <url> --token <token>]
1801
2183
  codingns provider-sessions <action> [options]
1802
2184
  codingns skills <action> [options]
1803
2185
  codingns opencli <action> [options]
@@ -1814,14 +2196,19 @@ assistant 例子:
1814
2196
 
1815
2197
  codingns assistant capabilities list --token <token>
1816
2198
  codingns assistant projects list --status active --token <token>
2199
+ codingns assistant office browser-profile-list --token <token>
2200
+ codingns assistant office browser-profile-create --engine chrome --mode persistent --display-name "办公 Chrome" --token <token>
2201
+ codingns assistant office browser-task-create --execution-backend opencli_bridge --input-json '{"startUrl":"https://example.invalid","actions":[{"type":"read_dom"}]}' --token <token>
2202
+ codingns assistant office ops-target-create --kind ssh_host --display-name "生产 SSH" --config-json '{"host":"10.0.0.8","username":"root"}' --token <token>
2203
+ codingns assistant office document-create --title "周报" --template-key team.doct.weekly --content-json '{"sections":[]}' --token <token>
1817
2204
  codingns assistant workspaces list --token <token>
1818
- codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> --token <token>
1819
- codingns assistant debug-targets launch-plan <targetId> --port-request role=backend,cwd=apps/api,port=44001 --token <token>
2205
+ codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> --confirm --token <token>
2206
+ codingns assistant debug-targets launch-plan <targetId> --port-request role=backend,cwd=apps/api,port=44001 --confirm --token <token>
1820
2207
  codingns assistant worktrees tree --root-workspace-id <id> --token <token>
1821
2208
  codingns assistant sessions send <sessionId> --message "继续修复类型错误" --token <token>
1822
2209
  codingns assistant follow-ups continue <taskId> --summary "目标还没完成" --continue-prompt "继续补齐剩余实现" --token <token>
1823
- codingns assistant terminals send <terminalId> --input "npm test\\n" --token <token>
1824
- codingns assistant terminals close <terminalId> --token <token>
2210
+ codingns assistant terminals send <terminalId> --input "npm test\\n" --confirm --token <token>
2211
+ codingns assistant terminals close <terminalId> --confirm --token <token>
1825
2212
 
1826
2213
  skills 例子:
1827
2214
 
@@ -1835,6 +2222,10 @@ opencli 例子:
1835
2222
  codingns opencli check --token <token>
1836
2223
  codingns opencli config --enabled true --command-id hackernews/top --token <token>
1837
2224
 
2225
+ mcp 例子:
2226
+
2227
+ codingns mcp workspace-office serve --auth-file ~/.codingns/host/workspace-session-runtime/<workspaceId>/<sessionId>/WORKSPACE_SESSION_AUTH.json
2228
+
1838
2229
  provider-sessions 例子:
1839
2230
 
1840
2231
  codingns provider-sessions delete --provider codex --provider-session-id <id> --raw-store-ref <ref>
@@ -1849,6 +2240,52 @@ provider-sessions 例子:
1849
2240
  process.exit(exitCode);
1850
2241
  }
1851
2242
 
2243
+ function printMcpHelp(exitCode) {
2244
+ const output = `
2245
+ codingns mcp 用法:
2246
+
2247
+ codingns mcp workspace-office serve [--auth-file <path> | --base-url <url> --token <token>]
2248
+
2249
+ 说明:
2250
+
2251
+ workspace-office 会启动工作区专用 office MCP server。
2252
+ 它只暴露当前工作区允许的 office.document.* / office.browser.* / office.ops.*。
2253
+ `.trim();
2254
+
2255
+ if (exitCode === 0) {
2256
+ console.log(output);
2257
+ } else {
2258
+ console.error(output);
2259
+ }
2260
+
2261
+ process.exit(exitCode);
2262
+ }
2263
+
2264
+ function printMcpWorkspaceOfficeHelp(exitCode) {
2265
+ const output = `
2266
+ codingns mcp workspace-office serve
2267
+
2268
+ 用途:
2269
+ 启动工作区专用 office MCP server,供 Codex / Claude / OpenCode 这类支持 MCP 的 CLI 直接挂正式办公工具。
2270
+
2271
+ 用法:
2272
+ codingns mcp workspace-office serve [--auth-file <path> | --base-url <url> --token <token>]
2273
+
2274
+ 说明:
2275
+ - 优先复用工作区 scoped 认证文件。
2276
+ - 真实执行仍走 Host /api/assistant/office/*。
2277
+ - 暴露工具只包含当前工作区允许的 office.document.* / office.browser.* / office.ops.*。
2278
+ `.trim();
2279
+
2280
+ if (exitCode === 0) {
2281
+ console.log(output);
2282
+ } else {
2283
+ console.error(output);
2284
+ }
2285
+
2286
+ process.exit(exitCode);
2287
+ }
2288
+
1852
2289
  function printAssistantHelpTopic(topic, exitCode) {
1853
2290
  const output = getAssistantHelpText(topic);
1854
2291
 
@@ -1899,6 +2336,259 @@ function printProviderSessionsHelpTopic(topic, exitCode) {
1899
2336
 
1900
2337
  function getAssistantHelpText(topic) {
1901
2338
  switch (topic) {
2339
+ case "office":
2340
+ return `
2341
+ codingns assistant office
2342
+
2343
+ 可用动作:
2344
+ document-create 创建办公文档
2345
+ document-update 更新办公文档
2346
+ document-export 创建或执行文档导出任务
2347
+ document-task 读取文档导出任务
2348
+ browser-profile-list 列出浏览器 Profile
2349
+ browser-profile-create 创建浏览器 Profile
2350
+ browser-profile-get 读取浏览器 Profile
2351
+ browser-task-create 创建并可选执行浏览器任务
2352
+ browser-task-get 读取浏览器任务
2353
+ ops-targets 列出运维目标
2354
+ ops-target-create 创建运维目标
2355
+ ops-target-get 读取运维目标
2356
+ ops-ssh-task-create 创建 SSH 运维任务
2357
+ ops-task-execute 执行已创建的 SSH 运维任务
2358
+ task-approval-reply 回复办公任务审批
2359
+ ops-browser-task-create 创建浏览器运维任务
2360
+ ops-task-get 读取运维任务
2361
+
2362
+ 示例:
2363
+ codingns assistant office browser-profile-create --engine chrome --mode persistent --display-name "办公 Chrome" --token <token>
2364
+ codingns assistant office browser-task-create --execution-backend opencli_bridge --input-json '{"startUrl":"https://example.invalid","actions":[{"type":"read_dom"}]}' --token <token>
2365
+ codingns assistant office ops-target-create --kind ssh_host --display-name "生产 SSH" --config-json '{"host":"10.0.0.8","username":"root"}' --token <token>
2366
+ codingns assistant office document-create --title "周报" --template-key team.doct.weekly --content-json '{"sections":[]}' --token <token>
2367
+ `.trim();
2368
+ case "office.document-create":
2369
+ return `
2370
+ codingns assistant office document-create
2371
+
2372
+ 用途:
2373
+ 在助手能力面里创建正式办公文档。
2374
+
2375
+ 用法:
2376
+ codingns assistant office document-create --title <title> [--workspace-id <id>] [--template-id <id> | --template-key <key>] [--summary <text>] [--content-json <json>] [--outline-json <json>] --token <token>
2377
+ `.trim();
2378
+ case "office.document-update":
2379
+ return `
2380
+ codingns assistant office document-update
2381
+
2382
+ 用途:
2383
+ 更新已有办公文档的标题、模板、摘要或结构化内容。
2384
+
2385
+ 用法:
2386
+ codingns assistant office document-update <documentId> [--title <title>] [--template-id <id>] [--summary <text>] [--status draft|reviewing|published|archived] [--content-json <json>] [--outline-json <json>] --token <token>
2387
+ `.trim();
2388
+ case "office.document-export":
2389
+ return `
2390
+ codingns assistant office document-export
2391
+
2392
+ 用途:
2393
+ 创建文档导出任务,并可选择立即执行。
2394
+
2395
+ 用法:
2396
+ codingns assistant office document-export <documentId> [--workspace-id <id>] [--format docx|pdf|md] [--risk-level low|medium|high] [--execute true|false] --token <token>
2397
+ `.trim();
2398
+ case "office.document-task":
2399
+ return `
2400
+ codingns assistant office document-task
2401
+
2402
+ 用途:
2403
+ 读取文档导出任务状态、产物和回执。
2404
+
2405
+ 用法:
2406
+ codingns assistant office document-task <taskId> --token <token>
2407
+ `.trim();
2408
+ case "office.browser-profiles":
2409
+ case "office.browser-profile-list":
2410
+ return `
2411
+ codingns assistant office browser-profile-list
2412
+
2413
+ 用途:
2414
+ 列出办公浏览器 Profile。
2415
+
2416
+ 用法:
2417
+ codingns assistant office browser-profile-list [--workspace-id <id>] --token <token>
2418
+
2419
+ 兼容:
2420
+ 旧别名 \`codingns assistant office browser-profiles\` 仍可继续使用。
2421
+ `.trim();
2422
+ case "office.browser-profile-create":
2423
+ return `
2424
+ codingns assistant office browser-profile-create
2425
+
2426
+ 用途:
2427
+ 创建独立持久化 Profile,或创建 CDP 接管模式的浏览器 Profile。
2428
+
2429
+ 用法:
2430
+ codingns assistant office browser-profile-create [--workspace-id <id>] [--engine chrome|edge] [--mode persistent|cdp_attached] [--display-name <name>] [--ownership-scope user|workspace] [--cdp-endpoint <url>] --token <token>
2431
+ `.trim();
2432
+ case "office.browser-profile-get":
2433
+ return `
2434
+ codingns assistant office browser-profile-get
2435
+
2436
+ 用途:
2437
+ 读取办公浏览器 Profile 详情。
2438
+
2439
+ 用法:
2440
+ codingns assistant office browser-profile-get <profileId> --token <token>
2441
+ `.trim();
2442
+ case "office.browser-task-create":
2443
+ return `
2444
+ codingns assistant office browser-task-create
2445
+
2446
+ 用途:
2447
+ 创建并可选立即执行办公浏览器任务,工作区会话里调用浏览器能力就走这条链路。
2448
+
2449
+ 用法:
2450
+ codingns assistant office browser-task-create [--profile-id <profileId>] [--workspace-id <id>] [--title <title>] [--risk-level low|medium|high] [--execution-backend playwright|opencli_bridge] [--execute true|false] [--input-json <json>] --token <token>
2451
+
2452
+ 输入约定:
2453
+ --input-json 必须是一个 JSON 对象,最小结构如下:
2454
+ {"startUrl":"https://example.invalid","actions":[{"type":"read_dom"}]}
2455
+
2456
+ 后端选择:
2457
+ - playwright:默认,无头浏览器执行
2458
+ - playwright 仍然要求显式传 --profile-id
2459
+ - opencli_bridge:复用 opencli 浏览器扩展,走真实浏览器调试
2460
+ - opencli_bridge 是无感桥接入口,通常不需要也不建议传 --profile-id
2461
+ - 涉及登录、验证码、二次确认弹窗、复杂真实站点、必须复用现有 Chrome/Edge 登录态时,优先显式传 --execution-backend opencli_bridge
2462
+ - 只有页面明显适合无头执行,或者用户明确要求无头链路时,才继续使用默认 playwright
2463
+
2464
+ 支持动作:
2465
+ - goto:打开指定 url,字段:type、url
2466
+ - click:点击元素,字段:type、selector
2467
+ - fill:填写输入框,字段:type、selector、value
2468
+ - press:按键,字段:type、key;可选 selector
2469
+ - select:选择下拉项,字段:type、selector、value 或 values
2470
+ - upload:上传文件,字段:type、selector、filePath 或 filePaths
2471
+ - download:点击并等待下载,字段:type、selector;可选 fileName
2472
+ - wait:纯等待,字段:type;可选 timeoutMs
2473
+ - read_dom:读取 body 文本并生成 DOM 快照产物,字段:type
2474
+ - extract_text:提取 body 文本并生成文本产物,字段:type
2475
+ - screenshot:截图并生成 PNG 产物,字段:type;可选 fullPage、timeoutMs
2476
+
2477
+ 最小可抄样例:
2478
+ 1. 打开页面并读取内容
2479
+ {"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"read_dom"}]}
2480
+ 2. 打开页面后截图
2481
+ {"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"screenshot","fullPage":true}]}
2482
+ 3. 打开页面,等待,再读取 DOM
2483
+ {"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"wait","timeoutMs":3000},{"type":"read_dom"}]}
2484
+ 4. 点击按钮后截图
2485
+ {"startUrl":"https://example.invalid","actions":[{"type":"click","selector":"button[type=\\"submit\\"]"},{"type":"screenshot"}]}
2486
+ 5. 填表单后停留
2487
+ {"startUrl":"https://example.invalid/login","actions":[{"type":"fill","selector":"input[name=\\"username\\"]","value":"demo"},{"type":"fill","selector":"input[name=\\"password\\"]","value":"secret"},{"type":"screenshot"}]}
2488
+ 6. 登录页 / 验证码 / 复杂真实站点,优先真实浏览器调试
2489
+ {"startUrl":"https://target.example/login","executionBackend":"opencli_bridge","actions":[{"type":"read_dom"},{"type":"wait","timeoutMs":3000},{"type":"screenshot","fullPage":true}]}
2490
+ 7. 已登录浏览器里继续操作,保留真人登录态
2491
+ {"startUrl":"https://target.example/console","executionBackend":"opencli_bridge","actions":[{"type":"click","selector":"button[data-testid=\\"next-step\\"]"},{"type":"wait","timeoutMs":1500},{"type":"screenshot","fullPage":true}]}
2492
+
2493
+ 建议顺序:
2494
+ 无头 playwright 任务先 running \`browser-profile-list\` 看是否已有可复用 Profile;没有再创建 Profile。
2495
+ 遇到登录、验证码、复杂真实站点或必须复用现有浏览器登录态时,优先显式传 \`--execution-backend opencli_bridge\`;通常不需要先手动查/建 Profile,也不需要传 \`--profile-id\`。
2496
+ 遇到真实站点网页任务,先查这里的示例,不要退回去翻源码或自己猜私有 HTTP body。
2497
+ `.trim();
2498
+ case "office.browser-task-get":
2499
+ return `
2500
+ codingns assistant office browser-task-get
2501
+
2502
+ 用途:
2503
+ 读取办公浏览器任务状态、产物和回执。
2504
+
2505
+ 用法:
2506
+ codingns assistant office browser-task-get <taskId> --token <token>
2507
+ `.trim();
2508
+ case "office.ops-targets":
2509
+ return `
2510
+ codingns assistant office ops-targets
2511
+
2512
+ 用途:
2513
+ 列出办公运维目标。
2514
+
2515
+ 用法:
2516
+ codingns assistant office ops-targets [--workspace-id <id>] [--kind ssh_host|web_console] [--status active|disabled|error] --token <token>
2517
+ `.trim();
2518
+ case "office.ops-target-create":
2519
+ return `
2520
+ codingns assistant office ops-target-create
2521
+
2522
+ 用途:
2523
+ 创建 SSH 主机或网页控制台运维目标。
2524
+
2525
+ 用法:
2526
+ codingns assistant office ops-target-create --workspace-id <id> --display-name <name> [--kind ssh_host|web_console] [--environment <name>] [--credential-ref <ref>] [--config-json <json>] --token <token>
2527
+ `.trim();
2528
+ case "office.ops-target-get":
2529
+ return `
2530
+ codingns assistant office ops-target-get
2531
+
2532
+ 用途:
2533
+ 读取办公运维目标详情。
2534
+
2535
+ 用法:
2536
+ codingns assistant office ops-target-get <targetId> --token <token>
2537
+ `.trim();
2538
+ case "office.ops-ssh-task-create":
2539
+ return `
2540
+ codingns assistant office ops-ssh-task-create
2541
+
2542
+ 用途:
2543
+ 创建 SSH 运维任务,可选立即执行。
2544
+
2545
+ 用法:
2546
+ codingns assistant office ops-ssh-task-create --target-id <targetId> [--title <title>] [--risk-level low|medium|high] [--execute true|false] [--input-json <json>] --token <token>
2547
+ `.trim();
2548
+ case "office.ops-task-execute":
2549
+ return `
2550
+ codingns assistant office ops-task-execute
2551
+
2552
+ 用途:
2553
+ 执行已经创建并处于 ready 状态的 SSH 运维任务。
2554
+
2555
+ 用法:
2556
+ codingns assistant office ops-task-execute <taskId> --confirm --token <token>
2557
+ `.trim();
2558
+ case "office.task-approval-reply":
2559
+ return `
2560
+ codingns assistant office task-approval-reply
2561
+
2562
+ 用途:
2563
+ 处理办公任务审批。高风险 SSH 任务审批通过后,才能继续执行。
2564
+
2565
+ 用法:
2566
+ codingns assistant office task-approval-reply <approvalId> [--status approved|rejected] [--decision-note <text>] --token <token>
2567
+ `.trim();
2568
+ case "office.ops-browser-task-create":
2569
+ return `
2570
+ codingns assistant office ops-browser-task-create
2571
+
2572
+ 用途:
2573
+ 创建浏览器运维任务;登录态、控制台、真实站点优先走 opencli_bridge 无感桥接。
2574
+
2575
+ 用法:
2576
+ codingns assistant office ops-browser-task-create --target-id <targetId> [--profile-id <profileId>] [--execution-backend playwright|opencli_bridge] [--title <title>] [--risk-level low|medium|high] [--input-json <json>] [--confirm] --token <token>
2577
+
2578
+ 说明:
2579
+ - opencli_bridge:默认推荐。通常不需要传 --profile-id。
2580
+ - playwright:仍然需要显式传 --profile-id。
2581
+ `.trim();
2582
+ case "office.ops-task-get":
2583
+ return `
2584
+ codingns assistant office ops-task-get
2585
+
2586
+ 用途:
2587
+ 读取办公运维任务状态、产物和回执。
2588
+
2589
+ 用法:
2590
+ codingns assistant office ops-task-get <taskId> --token <token>
2591
+ `.trim();
1902
2592
  case "capabilities":
1903
2593
  case "capabilities.list":
1904
2594
  return `
@@ -2429,14 +3119,26 @@ codingns assistant follow-ups fail
2429
3119
  codingns assistant terminals
2430
3120
 
2431
3121
  可用动作:
3122
+ create 在当前工作区或项目下新建终端
2432
3123
  list 列出项目或工作区下的终端
2433
3124
  history 读取终端历史输出
2434
3125
  send 向受控终端发送输入
2435
3126
  close 关闭受控终端
2436
3127
 
2437
3128
  示例:
3129
+ codingns assistant terminals create --workspace-id <workspaceId> --token <token>
2438
3130
  codingns assistant terminals list --project-id <projectId> --token <token>
2439
3131
  codingns assistant terminals send <terminalId> --input "npm test\\n" --token <token>
3132
+ `.trim();
3133
+ case "terminals.create":
3134
+ return `
3135
+ codingns assistant terminals create
3136
+
3137
+ 用途:
3138
+ 在指定工作区或项目作用域下正式新建一个受控终端。
3139
+
3140
+ 用法:
3141
+ codingns assistant terminals create [--workspace-id <id> | --project-id <id>] [--name <name>] [--cwd <cwd>] [--shell <shell>] --token <token>
2440
3142
  `.trim();
2441
3143
  case "terminals.list":
2442
3144
  return `
@@ -2466,7 +3168,7 @@ codingns assistant terminals send
2466
3168
  向受控终端发送输入,比如测试命令或构建命令。
2467
3169
 
2468
3170
  用法:
2469
- codingns assistant terminals send <terminalId> --input "npm test\\n" --token <token>
3171
+ codingns assistant terminals send <terminalId> --input "npm test\\n" --confirm --token <token>
2470
3172
  `.trim();
2471
3173
  case "terminals.close":
2472
3174
  return `
@@ -2476,7 +3178,7 @@ codingns assistant terminals close
2476
3178
  关闭指定受控终端,常用于停止调试进程或回收运行资源。
2477
3179
 
2478
3180
  用法:
2479
- codingns assistant terminals close <terminalId> --token <token>
3181
+ codingns assistant terminals close <terminalId> --confirm --token <token>
2480
3182
  `.trim();
2481
3183
  case "debug-targets":
2482
3184
  return `
@@ -2493,8 +3195,8 @@ codingns assistant debug-targets
2493
3195
  runtimes 读取运行历史
2494
3196
 
2495
3197
  示例:
2496
- codingns assistant debug-targets analyze --workspace-id <id> --root-path /repo/demo --token <token>
2497
- codingns assistant debug-targets launch-plan <targetId> --port-request role=backend,cwd=apps/api,port=44001 --token <token>
3198
+ codingns assistant debug-targets analyze --workspace-id <id> --root-path /repo/demo --confirm --token <token>
3199
+ codingns assistant debug-targets launch-plan <targetId> --port-request role=backend,cwd=apps/api,port=44001 --confirm --token <token>
2498
3200
  `.trim();
2499
3201
  case "debug-targets.compatibility-matrix":
2500
3202
  return `
@@ -2514,7 +3216,7 @@ codingns assistant debug-targets analyze
2514
3216
  分析指定工作区下的调试目标、服务和框架兼容性。
2515
3217
 
2516
3218
  用法:
2517
- codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> [--command-hint "pnpm dev"] [--command-hint "node server.js"] --token <token>
3219
+ codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> [--command-hint "pnpm dev"] [--command-hint "node server.js"] [--confirm] --token <token>
2518
3220
  `.trim();
2519
3221
  case "debug-targets.framework-analysis":
2520
3222
  return `
@@ -2534,7 +3236,7 @@ codingns assistant debug-targets refresh-framework-analysis
2534
3236
  刷新指定调试目标的框架分析结果。
2535
3237
 
2536
3238
  用法:
2537
- codingns assistant debug-targets refresh-framework-analysis <targetId> --token <token>
3239
+ codingns assistant debug-targets refresh-framework-analysis <targetId> [--confirm] --token <token>
2538
3240
  `.trim();
2539
3241
  case "debug-targets.launch-plan":
2540
3242
  return `
@@ -2544,7 +3246,7 @@ codingns assistant debug-targets launch-plan
2544
3246
  生成调试目标启动计划,可通过重复的 --port-request 显式请求服务端口。
2545
3247
 
2546
3248
  用法:
2547
- codingns assistant debug-targets launch-plan <targetId> [--port-request role=frontend,cwd=apps/web,port=43001] [--port-request role=backend,cwd=apps/api,port=44001] --token <token>
3249
+ codingns assistant debug-targets launch-plan <targetId> [--port-request role=frontend,cwd=apps/web,port=43001] [--port-request role=backend,cwd=apps/api,port=44001] [--confirm] --token <token>
2548
3250
  `.trim();
2549
3251
  case "debug-targets.run":
2550
3252
  return `
@@ -2554,7 +3256,7 @@ codingns assistant debug-targets run
2554
3256
  启动调试目标,可选指定 shell、runtimeType 和显式端口请求。
2555
3257
 
2556
3258
  用法:
2557
- codingns assistant debug-targets run <targetId> [--shell zsh] [--runtime-type tmux|embedded-pty|conpty-powershell|conpty-cmd|conpty-git-bash] [--port-request role=backend,cwd=apps/api,port=44001] --token <token>
3259
+ codingns assistant debug-targets run <targetId> [--shell zsh] [--runtime-type tmux|embedded-pty|conpty-powershell|conpty-cmd|conpty-git-bash] [--port-request role=backend,cwd=apps/api,port=44001] [--confirm] --token <token>
2558
3260
  `.trim();
2559
3261
  case "debug-targets.runtime-latest":
2560
3262
  return `
@@ -2649,7 +3351,7 @@ codingns assistant worktrees merge
2649
3351
  把子工作树合并回父工作区。
2650
3352
 
2651
3353
  用法:
2652
- codingns assistant worktrees merge <workspaceId> --token <token>
3354
+ codingns assistant worktrees merge <workspaceId> --confirm --token <token>
2653
3355
  `.trim();
2654
3356
  case "worktrees.cleanup":
2655
3357
  return `
@@ -2665,17 +3367,34 @@ codingns assistant worktrees cleanup
2665
3367
  return `
2666
3368
  codingns assistant 用法:
2667
3369
 
2668
- codingns assistant help [capabilities|projects|sessions|sandboxes|automations|timers|follow-ups|terminals|debug-targets|debug-runtimes|workspaces|worktrees] [action]
3370
+ codingns assistant help [capabilities|projects|sessions|sandboxes|automations|timers|follow-ups|terminals|office|debug-targets|debug-runtimes|workspaces|worktrees] [action]
2669
3371
  codingns assistant capabilities list [--base-url http://127.0.0.1:3002] --token <token>
2670
3372
  codingns assistant projects list [--workspace-id <id>] [--status active|paused|archived] [--risk-level low|medium|high] --token <token>
2671
3373
  codingns assistant projects get <projectId> [--base-url ...] --token <token>
2672
3374
  codingns assistant follow-ups continue <taskId> --summary "..." --continue-prompt "..." --token <token>
3375
+ codingns assistant office document-create --title <title> [--template-key <key>] [--content-json <json>] [--base-url ...] --token <token>
3376
+ codingns assistant office document-update <documentId> [--title <title>] [--content-json <json>] [--base-url ...] --token <token>
3377
+ codingns assistant office document-export <documentId> [--format docx|pdf|md] [--risk-level low|medium|high] [--execute true|false] [--base-url ...] --token <token>
3378
+ codingns assistant office document-task <taskId> [--base-url ...] --token <token>
3379
+ codingns assistant office browser-profiles [--workspace-id <id>] [--base-url ...] --token <token>
3380
+ codingns assistant office browser-profile-create [--workspace-id <id>] [--engine chrome|edge] [--mode persistent|cdp_attached] [--display-name <name>] [--ownership-scope user|workspace] [--cdp-endpoint <url>] [--base-url ...] --token <token>
3381
+ codingns assistant office browser-profile-get <profileId> [--base-url ...] --token <token>
3382
+ codingns assistant office browser-task-create [--profile-id <profileId>] [--workspace-id <id>] [--title <title>] [--risk-level low|medium|high] [--execution-backend playwright|opencli_bridge] [--execute true|false] [--input-json <json>] [--base-url ...] --token <token>
3383
+ codingns assistant office browser-task-get <taskId> [--base-url ...] --token <token>
3384
+ codingns assistant office ops-targets [--workspace-id <id>] [--kind ssh_host|web_console] [--status active|disabled|error] [--base-url ...] --token <token>
3385
+ codingns assistant office ops-target-create --workspace-id <id> --display-name <name> [--kind ssh_host|web_console] [--environment <name>] [--credential-ref <ref>] [--config-json <json>] [--base-url ...] --token <token>
3386
+ codingns assistant office ops-target-get <targetId> [--base-url ...] --token <token>
3387
+ codingns assistant office ops-ssh-task-create --target-id <targetId> [--title <title>] [--risk-level low|medium|high] [--execute true|false] [--input-json <json>] [--base-url ...] --token <token>
3388
+ codingns assistant office ops-task-execute <taskId> [--confirm] [--base-url ...] --token <token>
3389
+ codingns assistant office task-approval-reply <approvalId> [--status approved|rejected] [--decision-note <text>] [--base-url ...] --token <token>
3390
+ codingns assistant office ops-browser-task-create --target-id <targetId> [--profile-id <profileId>] [--execution-backend playwright|opencli_bridge] [--title <title>] [--risk-level low|medium|high] [--input-json <json>] [--confirm] [--base-url ...] --token <token>
3391
+ codingns assistant office ops-task-get <taskId> [--base-url ...] --token <token>
2673
3392
  codingns assistant debug-targets compatibility-matrix [--base-url ...] --token <token>
2674
- codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> [--command-hint <command>] [--command-hint <command>] [--base-url ...] --token <token>
3393
+ codingns assistant debug-targets analyze --workspace-id <id> --root-path <path> [--command-hint <command>] [--command-hint <command>] [--confirm] [--base-url ...] --token <token>
2675
3394
  codingns assistant debug-targets framework-analysis <targetId> [--base-url ...] --token <token>
2676
- codingns assistant debug-targets refresh-framework-analysis <targetId> [--base-url ...] --token <token>
2677
- codingns assistant debug-targets launch-plan <targetId> [--port-request role=backend,cwd=apps/api,port=44001] [--base-url ...] --token <token>
2678
- codingns assistant debug-targets run <targetId> [--shell zsh] [--runtime-type tmux|embedded-pty|conpty-powershell|conpty-cmd|conpty-git-bash] [--port-request role=backend,cwd=apps/api,port=44001] [--base-url ...] --token <token>
3395
+ codingns assistant debug-targets refresh-framework-analysis <targetId> [--confirm] [--base-url ...] --token <token>
3396
+ codingns assistant debug-targets launch-plan <targetId> [--port-request role=backend,cwd=apps/api,port=44001] [--confirm] [--base-url ...] --token <token>
3397
+ codingns assistant debug-targets run <targetId> [--shell zsh] [--runtime-type tmux|embedded-pty|conpty-powershell|conpty-cmd|conpty-git-bash] [--port-request role=backend,cwd=apps/api,port=44001] [--confirm] [--base-url ...] --token <token>
2679
3398
  codingns assistant debug-targets runtime-latest <targetId> [--base-url ...] --token <token>
2680
3399
  codingns assistant debug-targets runtimes <targetId> [--limit 5] [--base-url ...] --token <token>
2681
3400
  codingns assistant debug-runtimes get <runtimeId> [--base-url ...] --token <token>
@@ -2712,12 +3431,12 @@ codingns assistant 用法:
2712
3431
  codingns assistant timers cancel <timerId> [--base-url ...] --token <token>
2713
3432
  codingns assistant terminals list [--workspace-id <id> | --project-id <id>] --token <token>
2714
3433
  codingns assistant terminals history <terminalId> [--before-seq <n>] [--limit 20] --token <token>
2715
- codingns assistant terminals send <terminalId> --input "npm test\\n" --token <token>
2716
- codingns assistant terminals close <terminalId> [--base-url ...] --token <token>
3434
+ codingns assistant terminals send <terminalId> --input "npm test\\n" --confirm --token <token>
3435
+ codingns assistant terminals close <terminalId> [--confirm] [--base-url ...] --token <token>
2717
3436
  codingns assistant worktrees tree --root-workspace-id <id> [--base-url ...] --token <token>
2718
3437
  codingns assistant worktrees create --source-workspace-id <id> --branch-name <name> [--display-name <name>] [--base-ref <ref>] [--base-url ...] --token <token>
2719
3438
  codingns assistant worktrees merge-preview <workspaceId> [--base-url ...] --token <token>
2720
- codingns assistant worktrees merge <workspaceId> [--base-url ...] --token <token>
3439
+ codingns assistant worktrees merge <workspaceId> [--confirm] [--base-url ...] --token <token>
2721
3440
  codingns assistant worktrees cleanup <workspaceId> [--delete-branch] [--base-url ...] --token <token>
2722
3441
 
2723
3442
  环境变量: