@jingyi0605/codingns 0.7.3 → 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 (419) 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/channels/wechat-claw-client.d.ts +51 -0
  103. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  104. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  105. package/dist/server/modules/debug-target/debug-target-service.d.ts +2 -0
  106. package/dist/server/modules/debug-target/debug-target-service.js +14 -0
  107. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  108. package/dist/server/modules/document-runtime/document-docx-fallback-renderer.py +139 -0
  109. package/dist/server/modules/document-runtime/document-export-executor.d.ts +50 -0
  110. package/dist/server/modules/document-runtime/document-export-executor.js +827 -0
  111. package/dist/server/modules/document-runtime/document-export-executor.js.map +1 -0
  112. package/dist/server/modules/document-runtime/document-runtime-controller.d.ts +127 -0
  113. package/dist/server/modules/document-runtime/document-runtime-controller.js +131 -0
  114. package/dist/server/modules/document-runtime/document-runtime-controller.js.map +1 -0
  115. package/dist/server/modules/document-runtime/document-runtime-service.d.ts +125 -0
  116. package/dist/server/modules/document-runtime/document-runtime-service.js +706 -0
  117. package/dist/server/modules/document-runtime/document-runtime-service.js.map +1 -0
  118. package/dist/server/modules/office/office-controller.d.ts +77 -0
  119. package/dist/server/modules/office/office-controller.js +174 -0
  120. package/dist/server/modules/office/office-controller.js.map +1 -0
  121. package/dist/server/modules/office/office-preview-link-service.d.ts +27 -0
  122. package/dist/server/modules/office/office-preview-link-service.js +121 -0
  123. package/dist/server/modules/office/office-preview-link-service.js.map +1 -0
  124. package/dist/server/modules/office/office-service.d.ts +67 -0
  125. package/dist/server/modules/office/office-service.js +359 -0
  126. package/dist/server/modules/office/office-service.js.map +1 -0
  127. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +38 -14
  128. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
  129. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +4 -0
  130. package/dist/server/modules/opencli/opencli-install-discovery.js +94 -0
  131. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -1
  132. package/dist/server/modules/opencli/opencli-runtime-builder.js +29 -0
  133. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -1
  134. package/dist/server/modules/opencli/opencli-runtime-guard.d.ts +2 -0
  135. package/dist/server/modules/opencli/opencli-runtime-guard.js +5 -0
  136. package/dist/server/modules/opencli/opencli-runtime-guard.js.map +1 -0
  137. package/dist/server/modules/ops-runtime/ops-runtime-controller.d.ts +70 -0
  138. package/dist/server/modules/ops-runtime/ops-runtime-controller.js +83 -0
  139. package/dist/server/modules/ops-runtime/ops-runtime-controller.js.map +1 -0
  140. package/dist/server/modules/ops-runtime/ops-runtime-service.d.ts +80 -0
  141. package/dist/server/modules/ops-runtime/ops-runtime-service.js +327 -0
  142. package/dist/server/modules/ops-runtime/ops-runtime-service.js.map +1 -0
  143. package/dist/server/modules/ops-runtime/ssh-ops-executor.d.ts +41 -0
  144. package/dist/server/modules/ops-runtime/ssh-ops-executor.js +478 -0
  145. package/dist/server/modules/ops-runtime/ssh-ops-executor.js.map +1 -0
  146. package/dist/server/modules/presentation/presentation-controller.d.ts +22 -0
  147. package/dist/server/modules/presentation/presentation-controller.js +59 -0
  148. package/dist/server/modules/presentation/presentation-controller.js.map +1 -0
  149. package/dist/server/modules/presentation/presentation-export-task-service.d.ts +24 -0
  150. package/dist/server/modules/presentation/presentation-export-task-service.js +137 -0
  151. package/dist/server/modules/presentation/presentation-export-task-service.js.map +1 -0
  152. package/dist/server/modules/presentation/presentation-export-types.d.ts +12 -0
  153. package/dist/server/modules/presentation/presentation-export-types.js +2 -0
  154. package/dist/server/modules/presentation/presentation-export-types.js.map +1 -0
  155. package/dist/server/modules/presentation/presentation-pdf-export-service.d.ts +20 -0
  156. package/dist/server/modules/presentation/presentation-pdf-export-service.js +29 -0
  157. package/dist/server/modules/presentation/presentation-pdf-export-service.js.map +1 -0
  158. package/dist/server/modules/presentation/presentation-pptx-export-service.d.ts +20 -0
  159. package/dist/server/modules/presentation/presentation-pptx-export-service.js +64 -0
  160. package/dist/server/modules/presentation/presentation-pptx-export-service.js.map +1 -0
  161. package/dist/server/modules/presentation/presentation-renderer.d.ts +21 -0
  162. package/dist/server/modules/presentation/presentation-renderer.js +208 -0
  163. package/dist/server/modules/presentation/presentation-renderer.js.map +1 -0
  164. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +3 -3
  165. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  166. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +6 -1
  167. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  168. package/dist/server/modules/sessions/codex-app-server-helper-process.js +2 -1
  169. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  170. package/dist/server/modules/sessions/session-controller.d.ts +1 -0
  171. package/dist/server/modules/sessions/session-controller.js +59 -4
  172. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  173. package/dist/server/modules/sessions/session-history-service.js +17 -5
  174. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  175. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -1
  176. package/dist/server/modules/sessions/session-live-runtime-service.js +86 -8
  177. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  178. package/dist/server/modules/sessions/session-provider-config-service.d.ts +25 -1
  179. package/dist/server/modules/sessions/session-provider-config-service.js +54 -5
  180. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  181. package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +14 -0
  182. package/dist/server/modules/sessions/workspace-office-mcp-config.js +54 -0
  183. package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -0
  184. package/dist/server/modules/sessions/workspace-session-auth-service.d.ts +27 -0
  185. package/dist/server/modules/sessions/workspace-session-auth-service.js +109 -0
  186. package/dist/server/modules/sessions/workspace-session-auth-service.js.map +1 -0
  187. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +50 -0
  188. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +332 -0
  189. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -0
  190. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +5 -0
  191. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -1
  192. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +67 -0
  193. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/agents/openai.yaml +4 -0
  194. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/references/cli-workflow.md +133 -0
  195. package/dist/server/modules/skills/skill-controller.d.ts +7 -0
  196. package/dist/server/modules/skills/skill-controller.js +7 -0
  197. package/dist/server/modules/skills/skill-controller.js.map +1 -1
  198. package/dist/server/modules/skills/skill-manager-service.d.ts +61 -0
  199. package/dist/server/modules/skills/skill-manager-service.js +218 -0
  200. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  201. package/dist/server/modules/skills/skill-name-policy.js +2 -1
  202. package/dist/server/modules/skills/skill-name-policy.js.map +1 -1
  203. package/dist/server/modules/tasks/task-helper-client.d.ts +1 -0
  204. package/dist/server/modules/tasks/task-helper-client.js +45 -9
  205. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  206. package/dist/server/modules/tasks/task-types.d.ts +5 -0
  207. package/dist/server/modules/tasks/task-types.js +6 -1
  208. package/dist/server/modules/tasks/task-types.js.map +1 -1
  209. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +2 -1
  210. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -1
  211. package/dist/server/modules/terminal/runtime/node-pty-loader.d.ts +5 -0
  212. package/dist/server/modules/terminal/runtime/node-pty-loader.js +68 -0
  213. package/dist/server/modules/terminal/runtime/node-pty-loader.js.map +1 -0
  214. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +2 -1
  215. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -1
  216. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +6 -9
  217. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
  218. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js +6 -9
  219. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js.map +1 -1
  220. package/dist/server/routes/assistant.d.ts +2 -1
  221. package/dist/server/routes/assistant.js +20 -1
  222. package/dist/server/routes/assistant.js.map +1 -1
  223. package/dist/server/routes/browser-runtime.d.ts +3 -0
  224. package/dist/server/routes/browser-runtime.js +14 -0
  225. package/dist/server/routes/browser-runtime.js.map +1 -0
  226. package/dist/server/routes/document-runtime.d.ts +3 -0
  227. package/dist/server/routes/document-runtime.js +18 -0
  228. package/dist/server/routes/document-runtime.js.map +1 -0
  229. package/dist/server/routes/office.d.ts +3 -0
  230. package/dist/server/routes/office.js +16 -0
  231. package/dist/server/routes/office.js.map +1 -0
  232. package/dist/server/routes/ops-runtime.d.ts +3 -0
  233. package/dist/server/routes/ops-runtime.js +13 -0
  234. package/dist/server/routes/ops-runtime.js.map +1 -0
  235. package/dist/server/routes/presentation.d.ts +3 -0
  236. package/dist/server/routes/presentation.js +5 -0
  237. package/dist/server/routes/presentation.js.map +1 -0
  238. package/dist/server/routes/skills.js +1 -0
  239. package/dist/server/routes/skills.js.map +1 -1
  240. package/dist/server/server/create-server.d.ts +36 -0
  241. package/dist/server/server/create-server.js +215 -4
  242. package/dist/server/server/create-server.js.map +1 -1
  243. package/dist/server/server/release-manifest-sync.d.ts +1 -0
  244. package/dist/server/server/release-manifest-sync.js +2 -2
  245. package/dist/server/server/release-manifest-sync.js.map +1 -1
  246. package/dist/server/server/start-host.js +1 -1
  247. package/dist/server/server/start-host.js.map +1 -1
  248. package/dist/server/storage/repositories/auth-token-repository.js +22 -6
  249. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  250. package/dist/server/storage/repositories/browser-profile-repository.d.ts +18 -0
  251. package/dist/server/storage/repositories/browser-profile-repository.js +134 -0
  252. package/dist/server/storage/repositories/browser-profile-repository.js.map +1 -0
  253. package/dist/server/storage/repositories/document-comment-repository.d.ts +10 -0
  254. package/dist/server/storage/repositories/document-comment-repository.js +118 -0
  255. package/dist/server/storage/repositories/document-comment-repository.js.map +1 -0
  256. package/dist/server/storage/repositories/document-repository.d.ts +16 -0
  257. package/dist/server/storage/repositories/document-repository.js +109 -0
  258. package/dist/server/storage/repositories/document-repository.js.map +1 -0
  259. package/dist/server/storage/repositories/document-revision-repository.d.ts +10 -0
  260. package/dist/server/storage/repositories/document-revision-repository.js +79 -0
  261. package/dist/server/storage/repositories/document-revision-repository.js.map +1 -0
  262. package/dist/server/storage/repositories/document-template-repository.d.ts +13 -0
  263. package/dist/server/storage/repositories/document-template-repository.js +244 -0
  264. package/dist/server/storage/repositories/document-template-repository.js.map +1 -0
  265. package/dist/server/storage/repositories/office-approval-repository.d.ts +11 -0
  266. package/dist/server/storage/repositories/office-approval-repository.js +109 -0
  267. package/dist/server/storage/repositories/office-approval-repository.js.map +1 -0
  268. package/dist/server/storage/repositories/office-artifact-repository.d.ts +10 -0
  269. package/dist/server/storage/repositories/office-artifact-repository.js +89 -0
  270. package/dist/server/storage/repositories/office-artifact-repository.js.map +1 -0
  271. package/dist/server/storage/repositories/office-audit-event-repository.d.ts +8 -0
  272. package/dist/server/storage/repositories/office-audit-event-repository.js +54 -0
  273. package/dist/server/storage/repositories/office-audit-event-repository.js.map +1 -0
  274. package/dist/server/storage/repositories/office-connector-repository.d.ts +10 -0
  275. package/dist/server/storage/repositories/office-connector-repository.js +97 -0
  276. package/dist/server/storage/repositories/office-connector-repository.js.map +1 -0
  277. package/dist/server/storage/repositories/office-receipt-repository.d.ts +8 -0
  278. package/dist/server/storage/repositories/office-receipt-repository.js +48 -0
  279. package/dist/server/storage/repositories/office-receipt-repository.js.map +1 -0
  280. package/dist/server/storage/repositories/office-rollback-record-repository.d.ts +8 -0
  281. package/dist/server/storage/repositories/office-rollback-record-repository.js +60 -0
  282. package/dist/server/storage/repositories/office-rollback-record-repository.js.map +1 -0
  283. package/dist/server/storage/repositories/office-task-repository.d.ts +19 -0
  284. package/dist/server/storage/repositories/office-task-repository.js +199 -0
  285. package/dist/server/storage/repositories/office-task-repository.js.map +1 -0
  286. package/dist/server/storage/repositories/office-task-step-repository.d.ts +10 -0
  287. package/dist/server/storage/repositories/office-task-step-repository.js +110 -0
  288. package/dist/server/storage/repositories/office-task-step-repository.js.map +1 -0
  289. package/dist/server/storage/repositories/ops-target-repository.d.ts +16 -0
  290. package/dist/server/storage/repositories/ops-target-repository.js +119 -0
  291. package/dist/server/storage/repositories/ops-target-repository.js.map +1 -0
  292. package/dist/server/storage/repositories/session-binding-repository.d.ts +4 -0
  293. package/dist/server/storage/repositories/session-binding-repository.js +70 -69
  294. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  295. package/dist/server/storage/repositories/session-changed-file-repository.d.ts +6 -0
  296. package/dist/server/storage/repositories/session-changed-file-repository.js +44 -43
  297. package/dist/server/storage/repositories/session-changed-file-repository.js.map +1 -1
  298. package/dist/server/storage/repositories/session-fork-repository.d.ts +2 -0
  299. package/dist/server/storage/repositories/session-fork-repository.js +42 -41
  300. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -1
  301. package/dist/server/storage/repositories/session-index-repository.d.ts +5 -0
  302. package/dist/server/storage/repositories/session-index-repository.js +153 -152
  303. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  304. package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +7 -0
  305. package/dist/server/storage/repositories/session-message-attachment-repository.js +91 -90
  306. package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
  307. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +2 -0
  308. package/dist/server/storage/repositories/session-message-origin-repository.js +25 -24
  309. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -1
  310. package/dist/server/storage/repositories/session-state-repository.d.ts +2 -0
  311. package/dist/server/storage/repositories/session-state-repository.js +35 -34
  312. package/dist/server/storage/repositories/session-state-repository.js.map +1 -1
  313. package/dist/server/storage/repositories/session-status-snapshot-repository.d.ts +2 -0
  314. package/dist/server/storage/repositories/session-status-snapshot-repository.js +25 -24
  315. package/dist/server/storage/repositories/session-status-snapshot-repository.js.map +1 -1
  316. package/dist/server/storage/sqlite/client.js +123 -1
  317. package/dist/server/storage/sqlite/client.js.map +1 -1
  318. package/dist/server/storage/sqlite/schema.sql +300 -1
  319. package/dist/server/types/domain.d.ts +205 -1
  320. package/package.json +14 -7
  321. package/scripts/postinstall.mjs +170 -36
  322. package/dist/public/assets/FileContextPanel-xGTYDclT.js +0 -1
  323. package/dist/public/assets/WorkbenchLayout-DScHaza9.js +0 -244
  324. package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +0 -1
  325. package/dist/public/assets/WorkbenchShellRoute-DhQo_0vu.css +0 -1
  326. package/dist/public/assets/file-tree-icon-lfU9Ag77.js +0 -3
  327. package/dist/public/assets/index-CFYXCsyx.css +0 -1
  328. package/dist/public/assets/index-NGxWr8Ix.js +0 -42
  329. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +0 -42
  330. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +0 -346
  331. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +0 -1
  332. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +0 -1
  333. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +0 -80
  334. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +0 -1
  335. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +0 -18
  336. package/node_modules/@codingns/session-sync-core/dist/index.js +0 -19
  337. package/node_modules/@codingns/session-sync-core/dist/index.js.map +0 -1
  338. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +0 -18
  339. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +0 -659
  340. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +0 -1
  341. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +0 -11
  342. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +0 -72
  343. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +0 -1
  344. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +0 -67
  345. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +0 -752
  346. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +0 -1
  347. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +0 -48
  348. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +0 -1184
  349. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +0 -1
  350. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.d.ts +0 -11
  351. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +0 -105
  352. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +0 -1
  353. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +0 -84
  354. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +0 -2436
  355. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +0 -1
  356. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +0 -47
  357. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +0 -1480
  358. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +0 -1
  359. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +0 -33
  360. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +0 -684
  361. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +0 -1
  362. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.d.ts +0 -9
  363. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js +0 -17
  364. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js.map +0 -1
  365. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +0 -1
  366. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +0 -8
  367. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +0 -1
  368. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.d.ts +0 -48
  369. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +0 -373
  370. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +0 -1
  371. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +0 -61
  372. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +0 -1191
  373. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +0 -1
  374. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +0 -27
  375. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +0 -415
  376. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +0 -1
  377. package/node_modules/@codingns/session-sync-core/dist/registry.d.ts +0 -7
  378. package/node_modules/@codingns/session-sync-core/dist/registry.js +0 -22
  379. package/node_modules/@codingns/session-sync-core/dist/registry.js.map +0 -1
  380. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +0 -24
  381. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +0 -329
  382. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +0 -1
  383. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +0 -30
  384. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +0 -939
  385. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +0 -1
  386. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +0 -1
  387. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -16
  388. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +0 -1
  389. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +0 -70
  390. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -2571
  391. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +0 -1
  392. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +0 -21
  393. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +0 -561
  394. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +0 -1
  395. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +0 -38
  396. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +0 -911
  397. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +0 -1
  398. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +0 -15
  399. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +0 -16
  400. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +0 -1
  401. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +0 -37
  402. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +0 -963
  403. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +0 -1
  404. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +0 -21
  405. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +0 -168
  406. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +0 -1
  407. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +0 -152
  408. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js +0 -2
  409. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js.map +0 -1
  410. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +0 -28
  411. package/node_modules/@codingns/session-sync-core/dist/services.js +0 -148
  412. package/node_modules/@codingns/session-sync-core/dist/services.js.map +0 -1
  413. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +0 -6
  414. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +0 -9
  415. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +0 -1
  416. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +0 -198
  417. package/node_modules/@codingns/session-sync-core/dist/types.js +0 -2
  418. package/node_modules/@codingns/session-sync-core/dist/types.js.map +0 -1
  419. package/node_modules/@codingns/session-sync-core/package.json +0 -33
@@ -0,0 +1,332 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { resolveBuiltinSkillDirectory } from "../skills/builtin-skill-service.js";
4
+ import { CODINGNS_OPENCLI_BLOCK_BROWSER_DEPENDENT_COMMANDS_ENV } from "../opencli/opencli-runtime-guard.js";
5
+ import { buildWorkspaceOfficeMcpCommandArgs, CODEX_WORKSPACE_OFFICE_MCP_ENABLE_ENV, CODINGNS_OFFICE_MCP_AUTH_FILE_ENV, WORKSPACE_OFFICE_MCP_NAME } from "./workspace-office-mcp-config.js";
6
+ const WORKSPACE_SESSION_ASSISTANT_FILE = "WORKSPACE_SESSION_ASSISTANT.md";
7
+ const WORKSPACE_SESSION_SKILL_DIRECTORY = "codingns-workspace-session";
8
+ const WORKSPACE_SESSION_COMPOSED_INSTRUCTION_FILE = "WORKSPACE_SESSION_COMPOSED.md";
9
+ export class WorkspaceSessionRuntimeContextService {
10
+ workspaceSessionAuthService;
11
+ options;
12
+ constructor(workspaceSessionAuthService, options = {}) {
13
+ this.workspaceSessionAuthService = workspaceSessionAuthService;
14
+ this.options = options;
15
+ }
16
+ syncRuntimeContext(input) {
17
+ const credential = this.workspaceSessionAuthService.ensureWorkspaceCredential({
18
+ runtimeHomeDir: input.runtimeHomeDir,
19
+ userId: input.userId,
20
+ workspaceId: input.workspaceId,
21
+ projectId: input.projectId ?? null,
22
+ sessionId: input.sessionId
23
+ });
24
+ const authFilePath = this.workspaceSessionAuthService.getCredentialFilePath(input.runtimeHomeDir);
25
+ const instructionPath = path.join(input.runtimeHomeDir, input.provider === "claude-code" ? "CLAUDE.md" : WORKSPACE_SESSION_ASSISTANT_FILE);
26
+ fs.mkdirSync(input.runtimeHomeDir, { recursive: true });
27
+ syncProviderRuntimeBase(input.runtimeHomeDir, input.provider, this.options);
28
+ syncWorkspaceSessionSkill(input.runtimeHomeDir);
29
+ fs.writeFileSync(instructionPath, `${buildWorkspaceAssistantInstructions({
30
+ workspaceId: input.workspaceId,
31
+ projectId: input.projectId ?? null,
32
+ authFilePath
33
+ })}\n`, "utf8");
34
+ // 这里保留一份显式可读认证信息,供 CLI 自动发现或运行时环境变量指向。
35
+ fs.writeFileSync(authFilePath, `${JSON.stringify(credential, null, 2)}\n`, "utf8");
36
+ configureWorkspaceOfficeMcpRuntime(input.runtimeHomeDir, {
37
+ provider: input.provider,
38
+ authFilePath
39
+ });
40
+ configureWorkspaceInstructionRuntime(input.runtimeHomeDir, {
41
+ provider: input.provider,
42
+ instructionFilePath: instructionPath
43
+ });
44
+ return {
45
+ authFilePath,
46
+ instructionFilePath: instructionPath,
47
+ runtimeHomeDir: input.runtimeHomeDir,
48
+ runtimeEnv: buildWorkspaceSessionRuntimeEnv(input.provider, authFilePath, instructionPath)
49
+ };
50
+ }
51
+ syncRuntimeOfficeMcpContext(input) {
52
+ const credential = this.workspaceSessionAuthService.ensureWorkspaceCredential({
53
+ runtimeHomeDir: input.runtimeHomeDir,
54
+ userId: input.userId,
55
+ workspaceId: input.workspaceId,
56
+ projectId: input.projectId ?? null,
57
+ sessionId: input.sessionId
58
+ });
59
+ const authFilePath = this.workspaceSessionAuthService.getCredentialFilePath(input.runtimeHomeDir);
60
+ fs.mkdirSync(input.runtimeHomeDir, { recursive: true });
61
+ // 这里只保留工作区 scoped auth 文件本身。
62
+ // Codex 的 office MCP 现在改成 helper 启动 `codex app-server` 时临时注入 `-c mcp_servers...`,
63
+ // 不再写入真实 home 的 config.toml,也不改 transcript/home 落盘语义。
64
+ fs.writeFileSync(authFilePath, `${JSON.stringify(credential, null, 2)}\n`, "utf8");
65
+ syncWorkspaceSessionSkill(input.runtimeHomeDir);
66
+ configureWorkspaceOfficeMcpRuntime(input.runtimeHomeDir, {
67
+ provider: input.provider,
68
+ authFilePath
69
+ });
70
+ return {
71
+ authFilePath,
72
+ runtimeHomeDir: input.runtimeHomeDir
73
+ };
74
+ }
75
+ prepareWorkspaceInstructionBundle(input) {
76
+ const runtimeHomeDir = resolveWorkspaceSessionRuntimeArtifactDir({
77
+ workspacePath: input.workspacePath,
78
+ workspaceId: input.workspaceId,
79
+ sessionId: input.sessionId,
80
+ runtimeStorageRootDir: this.options.runtimeStorageRootDir
81
+ });
82
+ const credential = this.workspaceSessionAuthService.ensureWorkspaceCredential({
83
+ runtimeHomeDir,
84
+ userId: input.userId,
85
+ workspaceId: input.workspaceId,
86
+ projectId: input.projectId ?? null,
87
+ sessionId: input.sessionId
88
+ });
89
+ const authFilePath = this.workspaceSessionAuthService.getCredentialFilePath(runtimeHomeDir);
90
+ fs.mkdirSync(runtimeHomeDir, { recursive: true });
91
+ syncProviderRuntimeBase(runtimeHomeDir, input.provider, this.options);
92
+ syncWorkspaceSessionSkill(runtimeHomeDir);
93
+ const baseInstruction = `${buildWorkspaceAssistantInstructions({
94
+ workspaceId: input.workspaceId,
95
+ projectId: input.projectId ?? null,
96
+ authFilePath
97
+ })}\n`;
98
+ const workspaceAgentsPath = path.join(input.workspacePath, "AGENTS.md");
99
+ const composedInstructionPath = path.join(runtimeHomeDir, WORKSPACE_SESSION_COMPOSED_INSTRUCTION_FILE);
100
+ const composedInstruction = composeWorkspaceInstructionDocument({
101
+ workspaceAgentsPath,
102
+ workspaceInstruction: baseInstruction
103
+ });
104
+ fs.writeFileSync(authFilePath, `${JSON.stringify(credential, null, 2)}\n`, "utf8");
105
+ fs.writeFileSync(composedInstructionPath, composedInstruction, "utf8");
106
+ configureWorkspaceOfficeMcpRuntime(runtimeHomeDir, {
107
+ provider: input.provider,
108
+ authFilePath
109
+ });
110
+ configureWorkspaceInstructionRuntime(runtimeHomeDir, {
111
+ provider: input.provider,
112
+ instructionFilePath: composedInstructionPath
113
+ });
114
+ return {
115
+ authFilePath,
116
+ instructionFilePath: composedInstructionPath,
117
+ runtimeHomeDir,
118
+ runtimeEnv: buildWorkspaceSessionRuntimeEnv(input.provider, authFilePath, composedInstructionPath)
119
+ };
120
+ }
121
+ }
122
+ function resolveWorkspaceSessionRuntimeArtifactDir(input) {
123
+ const globalRuntimeRootDir = input.runtimeStorageRootDir?.trim() ?? "";
124
+ if (globalRuntimeRootDir) {
125
+ return path.join(globalRuntimeRootDir, "workspace-session-runtime", input.workspaceId, input.sessionId);
126
+ }
127
+ return path.join(input.workspacePath, ".codingns", "workspace-session-runtime", input.sessionId);
128
+ }
129
+ function syncWorkspaceSessionSkill(runtimeHomeDir) {
130
+ const sourceDir = resolveBuiltinSkillDirectory(WORKSPACE_SESSION_SKILL_DIRECTORY);
131
+ const targetSkillsDir = path.join(runtimeHomeDir, "skills");
132
+ const targetDir = path.join(targetSkillsDir, WORKSPACE_SESSION_SKILL_DIRECTORY);
133
+ fs.mkdirSync(targetSkillsDir, { recursive: true });
134
+ fs.cpSync(sourceDir, targetDir, { recursive: true });
135
+ }
136
+ function syncProviderRuntimeBase(runtimeHomeDir, provider, options) {
137
+ switch (provider) {
138
+ case "codex":
139
+ syncCodexRuntimeBase(runtimeHomeDir, options.codexHomeDir);
140
+ return;
141
+ case "claude-code":
142
+ syncClaudeRuntimeBase(runtimeHomeDir, options.claudeCodeHomeDir);
143
+ return;
144
+ default:
145
+ return;
146
+ }
147
+ }
148
+ function syncCodexRuntimeBase(runtimeHomeDir, codexHomeDir) {
149
+ const sourceHomeDir = codexHomeDir?.trim() ?? "";
150
+ if (!sourceHomeDir || path.resolve(sourceHomeDir) === path.resolve(runtimeHomeDir)) {
151
+ return;
152
+ }
153
+ syncOptionalFile(path.join(sourceHomeDir, "auth.json"), path.join(runtimeHomeDir, "auth.json"));
154
+ syncOptionalDirectory(path.join(sourceHomeDir, "skills"), path.join(runtimeHomeDir, "skills"));
155
+ const sourceConfigPath = path.join(sourceHomeDir, "config.toml");
156
+ if (fs.existsSync(sourceConfigPath) && fs.statSync(sourceConfigPath).isFile()) {
157
+ const targetConfigPath = path.join(runtimeHomeDir, "config.toml");
158
+ if (!fs.existsSync(targetConfigPath)) {
159
+ fs.copyFileSync(sourceConfigPath, targetConfigPath);
160
+ }
161
+ }
162
+ }
163
+ function syncClaudeRuntimeBase(runtimeHomeDir, claudeCodeHomeDir) {
164
+ const sourceHomeDir = claudeCodeHomeDir?.trim() ?? "";
165
+ if (!sourceHomeDir || path.resolve(sourceHomeDir) === path.resolve(runtimeHomeDir)) {
166
+ return;
167
+ }
168
+ syncOptionalFile(path.join(sourceHomeDir, "config.json"), path.join(runtimeHomeDir, "config.json"));
169
+ syncOptionalFile(path.join(sourceHomeDir, "project-config.json"), path.join(runtimeHomeDir, "project-config.json"));
170
+ syncOptionalFile(path.join(sourceHomeDir, "settings.json"), path.join(runtimeHomeDir, "settings.json"));
171
+ syncOptionalFile(path.join(sourceHomeDir, "settings.local.json"), path.join(runtimeHomeDir, "settings.local.json"));
172
+ syncOptionalDirectory(path.join(sourceHomeDir, "plugins"), path.join(runtimeHomeDir, "plugins"));
173
+ syncOptionalDirectory(path.join(sourceHomeDir, "skills"), path.join(runtimeHomeDir, "skills"));
174
+ }
175
+ function configureWorkspaceInstructionRuntime(runtimeHomeDir, input) {
176
+ if (input.provider === "codex") {
177
+ const configPath = path.join(runtimeHomeDir, "config.toml");
178
+ if (fs.existsSync(configPath) && fs.statSync(configPath).isFile()) {
179
+ const current = fs.readFileSync(configPath, "utf8");
180
+ const lines = current
181
+ .split(/\r?\n/)
182
+ .filter((line) => !line.trim().startsWith("model_instructions_file"));
183
+ lines.push(`model_instructions_file = ${JSON.stringify(input.instructionFilePath)}`);
184
+ fs.writeFileSync(configPath, `${lines.filter((line) => line.length > 0).join("\n")}\n`, "utf8");
185
+ }
186
+ }
187
+ }
188
+ function syncOptionalFile(sourcePath, targetPath) {
189
+ if (!fs.existsSync(sourcePath) || !fs.statSync(sourcePath).isFile()) {
190
+ return;
191
+ }
192
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
193
+ fs.copyFileSync(sourcePath, targetPath);
194
+ }
195
+ function syncOptionalDirectory(sourcePath, targetPath) {
196
+ if (!fs.existsSync(sourcePath) || !fs.statSync(sourcePath).isDirectory()) {
197
+ return;
198
+ }
199
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
200
+ fs.cpSync(sourcePath, targetPath, { recursive: true });
201
+ }
202
+ function configureWorkspaceOfficeMcpRuntime(runtimeHomeDir, input) {
203
+ switch (input.provider) {
204
+ case "codex":
205
+ return;
206
+ case "claude-code":
207
+ upsertClaudeMcpConfig(runtimeHomeDir, input.authFilePath);
208
+ return;
209
+ case "opencode":
210
+ upsertOpenCodeMcpConfig(runtimeHomeDir, input.authFilePath);
211
+ return;
212
+ default:
213
+ return;
214
+ }
215
+ }
216
+ function upsertClaudeMcpConfig(runtimeHomeDir, authFilePath) {
217
+ const configPath = path.join(runtimeHomeDir, ".claude.json");
218
+ const parsed = readJsonObject(configPath);
219
+ const mcpCommandArgs = buildWorkspaceOfficeMcpCommandArgs(authFilePath);
220
+ const next = {
221
+ ...parsed,
222
+ mcpServers: {
223
+ ...(isPlainObject(parsed.mcpServers) ? parsed.mcpServers : {}),
224
+ [WORKSPACE_OFFICE_MCP_NAME]: {
225
+ type: "stdio",
226
+ command: process.execPath,
227
+ args: mcpCommandArgs,
228
+ env: {
229
+ [CODINGNS_OFFICE_MCP_AUTH_FILE_ENV]: authFilePath
230
+ }
231
+ }
232
+ }
233
+ };
234
+ fs.writeFileSync(configPath, `${JSON.stringify(next, null, 2)}\n`, "utf8");
235
+ }
236
+ function upsertOpenCodeMcpConfig(runtimeHomeDir, authFilePath) {
237
+ const configPath = path.join(runtimeHomeDir, "opencode.json");
238
+ const parsed = readJsonObject(configPath);
239
+ const mcpCommandArgs = buildWorkspaceOfficeMcpCommandArgs(authFilePath);
240
+ const next = {
241
+ ...parsed,
242
+ mcp: {
243
+ ...(isPlainObject(parsed.mcp) ? parsed.mcp : {}),
244
+ [WORKSPACE_OFFICE_MCP_NAME]: {
245
+ type: "local",
246
+ enabled: true,
247
+ command: [
248
+ process.execPath,
249
+ ...mcpCommandArgs
250
+ ],
251
+ environment: {
252
+ [CODINGNS_OFFICE_MCP_AUTH_FILE_ENV]: authFilePath
253
+ }
254
+ }
255
+ }
256
+ };
257
+ fs.writeFileSync(configPath, `${JSON.stringify(next, null, 2)}\n`, "utf8");
258
+ }
259
+ function readJsonObject(filePath) {
260
+ if (!fs.existsSync(filePath) || !fs.statSync(filePath).isFile()) {
261
+ return {};
262
+ }
263
+ try {
264
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
265
+ return isPlainObject(parsed) ? parsed : {};
266
+ }
267
+ catch {
268
+ return {};
269
+ }
270
+ }
271
+ function isPlainObject(value) {
272
+ return typeof value === "object" && value !== null && !Array.isArray(value);
273
+ }
274
+ function buildWorkspaceAssistantInstructions(input) {
275
+ return `# 工作区会话助手规则
276
+
277
+ - 当前会话是工作区普通会话,不是 Butler 控制面,也不是全局管理员。
278
+ - 当前受控范围固定为 workspaceId=\`${input.workspaceId}\`${input.projectId ? `,projectId=\`${input.projectId}\`` : ""}。
279
+ - 助手正式能力必须优先走 \`codingns assistant ...\` 或对应 \`/api/assistant/*\` 入口,不要自己拼私有 HTTP。
280
+ - 文档操作优先走 \`assistant office.document.*\`。
281
+ - 浏览器操作优先走 \`assistant office.browser.*\`。
282
+ - 当前工作区会话已经暴露正式浏览器入口命令:\`codingns assistant office browser-profile-list\`、\`codingns assistant office browser-profile-create\`、\`codingns assistant office browser-task-create\`、\`codingns assistant office browser-task-get\`。
283
+ - 只要任务属于打开网页、登录网站、抓取页面、读取 DOM、截图、提交表单、下载文件这一类真实网页操作,默认先用 \`assistant office.browser.task.create\`,不要先落到 Codex 自带 Browser。
284
+ - 如果当前会话同时还能看到 \`$codingns-opencli\`,不要被它里面的站点命令带偏:公开页面、公开榜单、公开帖子、公开趋势数据才考虑它;登录态、验证码、订单、购物车、个人账户、后台页面、表单提交、下载文件、点击页面控件、复用人工已登录 Chrome/Edge 这类任务必须走 \`office.browser.*\`。
285
+ - 就算 \`codingns-opencli\` 里存在 \`taobao/*\`、\`jd/*\` 这类 browser-dependent 命令,也不能把它们当成工作区真实站点任务的默认入口。
286
+ - 涉及登录、验证码、二次确认弹窗、复杂前端站点、必须复用现有 Chrome/Edge 登录态这几类任务时,创建浏览器任务优先显式传 \`executionBackend=opencli_bridge\`,不要继续默认无头浏览器。
287
+ - 当 \`executionBackend=opencli_bridge\` 时,\`browser-task-create\` 可以不传 \`profileId\`;这条链路会直接走无感浏览器桥接,不再依赖 Profile。
288
+ - 只有任务本身明显适合无头执行,或者用户明确要求无头链路时,才继续使用默认 \`playwright\`。
289
+ - \`browser-task-create --input-json\` 必须传 JSON 对象,不要猜私有 body。最小模板直接照抄:\`{"startUrl":"https://example.invalid","actions":[{"type":"read_dom"}]}\`。
290
+ - 浏览器动作类型当前只支持:\`goto\`、\`click\`、\`fill\`、\`press\`、\`select\`、\`upload\`、\`download\`、\`wait\`、\`read_dom\`、\`extract_text\`、\`screenshot\`。
291
+ - 常见模板:打开页面读 DOM 用 \`{"startUrl":"https://target.example","actions":[{"type":"read_dom"}]}\`;打开页面截图用 \`{"startUrl":"https://target.example","actions":[{"type":"screenshot","fullPage":true}]}\`;等待后再读用 \`{"startUrl":"https://target.example","actions":[{"type":"wait","timeoutMs":3000},{"type":"read_dom"}]}\`。
292
+ - 不要回答“当前环境没有浏览器能力”或“没有暴露浏览器能力”;对真实站点任务,先查上面这组 \`codingns assistant office ...\` 命令的 \`--help\` 或直接调用它们。
293
+ - 只有本地预览、开发调试 \`localhost\` / \`127.0.0.1\` / \`::1\`,或用户明确要求当前 in-app browser 时,才优先使用 Codex 自带 Browser。
294
+ - 真实浏览器任务的最小顺序是:优先直接用 \`assistant office.browser.task.create\` 并显式传 \`executionBackend=opencli_bridge\`;只有用户明确要求无头 \`playwright\`,或者要手工管理独立浏览器资料目录时,再先查/建 Profile。
295
+ - 遇到真实站点浏览器任务,先查 \`browser-task-create --help\` 或工作区专用 skill 里的模板,不要退回去翻源码、编译产物或自己拼接口路径。
296
+ - 运维任务优先走 \`assistant office.ops.*\`。
297
+ - 新建终端优先走 \`assistant terminals create\`。
298
+ - 写终端、执行运维、merge 工作树前,必须先征得用户确认。
299
+ - 不要尝试跨工作区、跨项目,或调用当前未开放能力。
300
+ - 当前工作区会话 scoped 认证文件:\`${input.authFilePath}\`。
301
+ `;
302
+ }
303
+ function composeWorkspaceInstructionDocument(input) {
304
+ const sections = [];
305
+ if (fs.existsSync(input.workspaceAgentsPath) && fs.statSync(input.workspaceAgentsPath).isFile()) {
306
+ const workspaceAgentsContent = fs.readFileSync(input.workspaceAgentsPath, "utf8").trim();
307
+ if (workspaceAgentsContent.length > 0) {
308
+ sections.push(workspaceAgentsContent);
309
+ }
310
+ }
311
+ sections.push(`# 工作区会话附加规则
312
+
313
+ 下面这段规则由 Host 在工作区会话启动时显式注入,只对当前工作区会话生效。
314
+
315
+ ${input.workspaceInstruction.trim()}`);
316
+ return `${sections.join("\n\n")}\n`;
317
+ }
318
+ function buildWorkspaceSessionRuntimeEnv(provider, authFilePath, instructionFilePath) {
319
+ const runtimeEnv = {
320
+ CODINGNS_AUTH_FILE: authFilePath,
321
+ BUTLER_AUTH_FILE: authFilePath,
322
+ WORKSPACE_SESSION_AUTH_FILE: authFilePath,
323
+ WORKSPACE_SESSION_ASSISTANT_FILE: instructionFilePath,
324
+ [CODINGNS_OFFICE_MCP_AUTH_FILE_ENV]: authFilePath
325
+ };
326
+ if (provider === "codex") {
327
+ runtimeEnv[CODEX_WORKSPACE_OFFICE_MCP_ENABLE_ENV] = "1";
328
+ }
329
+ runtimeEnv[CODINGNS_OPENCLI_BLOCK_BROWSER_DEPENDENT_COMMANDS_ENV] = "1";
330
+ return runtimeEnv;
331
+ }
332
+ //# sourceMappingURL=workspace-session-runtime-context-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-session-runtime-context-service.js","sourceRoot":"","sources":["../../../../src/modules/sessions/workspace-session-runtime-context-service.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,11 @@ const ASSISTANT_RUNTIME_SKILL_SPECS = [
7
7
  name: "codingns-assistant",
8
8
  directoryName: "codingns-assistant",
9
9
  usedByTargetCli: ["codex", "claude-code"]
10
+ },
11
+ {
12
+ name: "codingns-workspace-session",
13
+ directoryName: "codingns-workspace-session",
14
+ usedByTargetCli: ["codex", "claude-code"]
10
15
  }
11
16
  ];
12
17
  export function listAssistantRuntimeSkills() {
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-runtime-skill-catalog.js","sourceRoot":"","sources":["../../../../src/modules/skills/assistant-runtime-skill-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAWzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,gBAAgB,CACjB,CAAC;AAEF,MAAM,6BAA6B,GAAqE;IACtG;QACE,IAAI,EAAE,oBAAoB;QAC1B,aAAa,EAAE,oBAAoB;QACnC,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;KAC1C;CACF,CAAC;AAEF,MAAM,UAAU,0BAA0B;IACxC,OAAO,6BAA6B;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAA6C,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"assistant-runtime-skill-catalog.js","sourceRoot":"","sources":["../../../../src/modules/skills/assistant-runtime-skill-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAWzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,gBAAgB,CACjB,CAAC;AAEF,MAAM,6BAA6B,GAAqE;IACtG;QACE,IAAI,EAAE,oBAAoB;QAC1B,aAAa,EAAE,oBAAoB;QACnC,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;KAC1C;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,aAAa,EAAE,4BAA4B;QAC3C,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;KAC1C;CACF,CAAC;AAEF,MAAM,UAAU,0BAA0B;IACxC,OAAO,6BAA6B;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAA6C,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: codingns-workspace-session
3
+ description: Use when running inside a CodingNS 工作区会话。This skill no longer teaches the full CLI surface; it only defines workspace-scoped routing and safety rules, while formal office capabilities are exposed through MCP tools.
4
+ ---
5
+
6
+ # CodingNS Workspace Session
7
+
8
+ ## 概述
9
+
10
+ 这套 Skill 只服务工作区普通会话,不服务 Butler 助手控制面。
11
+
12
+ 工作区会话里的正式能力优先来自运行时已经挂载的 MCP / tool schema;这份 Skill 只负责路由和安全规则,不再承担整套 CLI 教程。
13
+
14
+ 不要自己拼私有 HTTP,不要脑补不存在的跨工作区能力,不要为了“找能力”退回去翻源码和编译产物。
15
+
16
+ ## 工作区边界
17
+
18
+ - 当前会话只能在当前 `workspaceId`,以及可选的当前 `projectId` 范围内行动。
19
+ - 不要尝试跨工作区、跨项目调用能力。
20
+ - 能力是否可用,以当前 runtime 已暴露的 MCP 工具或 `codingns assistant capabilities list` 的真实返回为准。
21
+ - 写终端、执行运维、merge 工作树前,必须先征得用户确认。
22
+
23
+ ## 办公能力路由
24
+
25
+ - 文档产物、模板导出、结构化文档更新:优先走 `office.document.*`。
26
+ - 真实站点网页、企业后台、登录流程、页面抓取、表单提交、下载文件:优先走 `office.browser.*`。
27
+ - SSH 主机、浏览器运维目标、远程任务:优先走 `office.ops.*`。
28
+ - 终端只处理当前工作区里的本地命令和调试,不替代正式浏览器/运维入口。
29
+
30
+ ## 浏览器意图分流规则
31
+
32
+ - 命中以下意图时,默认先走 `office.browser.*`,不要先退回本地 Browser 或源码探测:
33
+ - 打开网页
34
+ - 登录网站
35
+ - 抓取页面内容
36
+ - 读取 DOM / 标题 / 主要区块
37
+ - 截图
38
+ - 点按钮、切标签、翻页
39
+ - 填表单、提交表单
40
+ - 下载文件
41
+ - 只有下面这些场景,才优先保留 Codex 自带 Browser:
42
+ - 本地预览 `localhost` / `127.0.0.1` / `::1`
43
+ - 检查当前 Codex 内嵌浏览器里已经打开的本地页面
44
+ - 前端开发调试、热更新验证、UI 冒烟检查
45
+ - 用户明确点名要用 Browser / in-app browser / 当前浏览器标签
46
+ - 如果任务既像“网页操作”又像“本地前端调试”,先看目标 URL:
47
+ - `localhost` / `127.0.0.1` / `::1`:优先 Codex Browser
48
+ - 其他真实站点或内网地址:优先 `office.browser.*`
49
+ - 如果当前会话同时还能看到 `$codingns-opencli`,不要被它里面的站点命令带偏:
50
+ - 公开页面、公开榜单、公开帖子、公开趋势数据:可以考虑 `codingns-opencli`
51
+ - 登录态、验证码、订单、购物车、个人账户、后台页面、表单提交、下载文件、点击页面控件、复用人工已登录 Chrome/Edge:一律不要直接运行 browser-dependent 的 OpenCLI 命令,必须走 `office.browser.*`
52
+ - 就算 `codingns-opencli` 里存在 `taobao/*`、`jd/*` 这类 browser-dependent 命令,也不能把它们当成工作区真实站点任务的默认入口。
53
+ - 如果是真实站点登录、验证码、二次确认弹窗、复杂前端交互、必须复用人工已登录 Chrome/Edge 登录态,创建浏览器任务时优先显式传 `executionBackend=opencli_bridge`。
54
+ - 只有页面明显适合无头执行,或者用户明确要求无头链路时,才继续用默认 `playwright`。
55
+
56
+ ## 默认工作流
57
+
58
+ 1. 先看当前 runtime 已暴露的 MCP 工具;必要时再用 `codingns assistant capabilities list` 复核。
59
+ 2. 命中文档类意图时,优先 `office.document.*`。
60
+ 3. 命中真实网页类意图时,优先 `office.browser.*`。
61
+ 4. 命中远程运维类意图时,优先 `office.ops.*`。
62
+ 5. 只有本地 `localhost` / `127.0.0.1` / `::1` 页面调试,才优先 Codex 自带 Browser。
63
+ 6. 需要本地命令执行时,先新建终端,再在用户确认后写入命令。
64
+
65
+ ## 资源
66
+
67
+ - `references/cli-workflow.md`:保留最小 CLI 兜底参考,主要用于 MCP 不可用时排障。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "CodingNS Workspace Session"
3
+ short_description: "工作区会话专用 Skill,默认把真实网页操作收口到 office.browser.*"
4
+ default_prompt: "Use $codingns-workspace-session inside CodingNS workspace sessions. Treat `office.browser.*` as the default first-class entry for real website operations such as open/login/scrape/form-submit/download. If `$codingns-opencli` is also present, only use it for public data collection; do not use browser-dependent OpenCLI site commands for login/account/order/admin tasks. For login/captcha/complex real sites/reusing human Chrome or Edge state, prefer `office.browser.*` with `executionBackend=opencli_bridge`. Only use the built-in Browser first for localhost or explicit in-app browser debugging."
@@ -0,0 +1,133 @@
1
+ # CodingNS Workspace Session CLI Workflow
2
+
3
+ ## 1. 总原则
4
+
5
+ - 先确认当前工作区会话开放了哪些能力,再决定调用哪一组命令。
6
+ - 不自己拼私有 HTTP。
7
+ - 不跨工作区、不跨项目。
8
+ - 不知道参数时先查 help,不要硬猜。
9
+ - 不要回答“当前环境没有浏览器能力”;真实站点浏览器任务默认先走下面这组 `codingns assistant office ...` 命令。
10
+
11
+ ## 2. 先查哪些 help
12
+
13
+ 全局入口:
14
+
15
+ ```bash
16
+ codingns assistant --help
17
+ codingns assistant help workspaces
18
+ codingns assistant help projects
19
+ codingns assistant help sessions
20
+ codingns assistant help terminals
21
+ codingns assistant help office
22
+ ```
23
+
24
+ 按动作查询:
25
+
26
+ ```bash
27
+ codingns assistant capabilities list --help
28
+ codingns assistant terminals create --help
29
+ codingns assistant office browser-profile-list --help
30
+ codingns assistant office browser-profile-create --help
31
+ codingns assistant office browser-task-create --help
32
+ codingns assistant office browser-task-get --help
33
+ codingns assistant office document-create --help
34
+ codingns assistant office ops-target-create --help
35
+ codingns assistant office ops-ssh-task-create --help
36
+ ```
37
+
38
+ ## 3. 浏览器类正式工作流
39
+
40
+ 先看有没有可复用 Profile:
41
+
42
+ ```bash
43
+ codingns assistant office browser-profile-list [--workspace-id <workspaceId>] [--token <token>]
44
+ ```
45
+
46
+ 没有合适 Profile 时再创建:
47
+
48
+ ```bash
49
+ codingns assistant office browser-profile-create --engine chrome --mode persistent --display-name "办公 Chrome" [--workspace-id <workspaceId>] [--token <token>]
50
+ ```
51
+
52
+ 随后创建并执行浏览器任务:
53
+
54
+ ```bash
55
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://example.invalid","actions":[{"type":"read_dom"},{"type":"screenshot","fullPage":true}]}' [--token <token>]
56
+ codingns assistant office browser-task-get <taskId> [--token <token>]
57
+ ```
58
+
59
+ 如果是登录、验证码、复杂真实站点、必须复用现有浏览器登录态,优先显式指定真实浏览器调试后端:
60
+
61
+ ```bash
62
+ codingns assistant office browser-task-create --profile-id <profileId> --execution-backend opencli_bridge --execute true --input-json '{"startUrl":"https://target.example/login","actions":[{"type":"read_dom"},{"type":"screenshot","fullPage":true}]}' [--token <token>]
63
+ ```
64
+
65
+ `browser-task-create --input-json` 的最小格式不要猜,直接按这个对象写:
66
+
67
+ ```json
68
+ {
69
+ "startUrl": "https://example.invalid",
70
+ "actions": [
71
+ { "type": "read_dom" }
72
+ ]
73
+ }
74
+ ```
75
+
76
+ 支持动作:
77
+
78
+ - `goto`:打开指定 URL,需要 `url`
79
+ - `click`:点击元素,需要 `selector`
80
+ - `fill`:填写输入框,需要 `selector` 和 `value`
81
+ - `press`:按键,需要 `key`,可选 `selector`
82
+ - `select`:下拉选择,需要 `selector` 和 `value` 或 `values`
83
+ - `upload`:上传文件,需要 `selector` 和 `filePath` 或 `filePaths`
84
+ - `download`:点击后下载,需要 `selector`,可选 `fileName`
85
+ - `wait`:等待指定毫秒数,常用 `timeoutMs`
86
+ - `read_dom`:读取页面 body 文本并生成 DOM 快照
87
+ - `extract_text`:提取页面 body 文本
88
+ - `screenshot`:截图,常用 `fullPage: true`
89
+
90
+ 常用模板:
91
+
92
+ ```bash
93
+ # 1. 打开网页并读 DOM
94
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"read_dom"}]}' [--token <token>]
95
+
96
+ # 2. 打开网页并截图
97
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"screenshot","fullPage":true}]}' [--token <token>]
98
+
99
+ # 3. 等页面稳定后再读取
100
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://www.zhihu.com/signin","actions":[{"type":"wait","timeoutMs":3000},{"type":"read_dom"}]}' [--token <token>]
101
+
102
+ # 4. 点击按钮后截图
103
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://target.example","actions":[{"type":"click","selector":"button[type=\\"submit\\"]"},{"type":"screenshot"}]}' [--token <token>]
104
+
105
+ # 5. 填表单
106
+ codingns assistant office browser-task-create --profile-id <profileId> --execute true --input-json '{"startUrl":"https://target.example/login","actions":[{"type":"fill","selector":"input[name=\\"username\\"]","value":"demo"},{"type":"fill","selector":"input[name=\\"password\\"]","value":"secret"},{"type":"screenshot"}]}' [--token <token>]
107
+
108
+ # 6. 登录页 / 验证码 / 复杂真实站点:优先真实浏览器调试
109
+ codingns assistant office browser-task-create --profile-id <profileId> --execution-backend opencli_bridge --execute true --input-json '{"startUrl":"https://target.example/login","actions":[{"type":"read_dom"},{"type":"wait","timeoutMs":3000},{"type":"screenshot","fullPage":true}]}' [--token <token>]
110
+
111
+ # 7. 已登录浏览器里继续点按钮、截图、保留真人登录态
112
+ codingns assistant office browser-task-create --profile-id <profileId> --execution-backend opencli_bridge --execute true --input-json '{"startUrl":"https://target.example/console","actions":[{"type":"click","selector":"button[data-testid=\\"next-step\\"]"},{"type":"wait","timeoutMs":1500},{"type":"screenshot","fullPage":true}]}' [--token <token>]
113
+ ```
114
+
115
+ 遇到真实站点浏览器任务,先查这里或 `--help`,不要退回去扫描源码和编译产物找 API 路径。
116
+
117
+ 浏览器意图分流规则:
118
+
119
+ - 真实站点、企业后台、内网网页、网页控制台、需要沉淀截图/下载产物/回执:优先 `office.browser.*`
120
+ - 其中只要涉及登录、验证码、复杂交互、必须复用当前 Chrome/Edge 登录态:优先在 `browser-task-create` 里显式传 `--execution-backend opencli_bridge`
121
+ - 如果当前会话里同时存在 `$codingns-opencli`,只把它当成公开数据抓取兜底,不要拿它里面 browser-dependent 的站点命令替代 `office.browser.*`
122
+ - 订单、购物车、个人账户、后台页面、表单提交、下载文件、点击页面控件这类任务,即使 `codingns-opencli` 里有 `taobao/*`、`jd/*` 之类命令,也一律不要直接调用
123
+ - 本地预览、`localhost` / `127.0.0.1` / `::1` 页面检查、前端热更新验证:优先 Codex 自带 Browser
124
+ - 如果用户明确要求当前 in-app browser,也按用户要求走 Codex Browser
125
+
126
+ ## 4. 什么时候优先用什么
127
+
128
+ - 需要看当前会话真实开放了哪些能力:优先 `capabilities list`
129
+ - 需要当前工作区终端:优先 `terminals create` / `terminals list`
130
+ - 需要打开网页、登录网站、抓页面、截图、点按钮、填表单、下载文件:优先 `office browser-task-create`
131
+ - 只有本地 `localhost` / `127.0.0.1` / `::1` 调试,才优先 Codex 自带 Browser
132
+ - 需要正式文档产物:优先 `office document-create`
133
+ - 需要 SSH 运维:优先 `office ops-target-create` 和 `office ops-ssh-task-create`
@@ -4,6 +4,10 @@ import { SkillManagerService } from "./skill-manager-service.js";
4
4
  interface SkillOverviewQuery {
5
5
  targetCli?: string | string[];
6
6
  }
7
+ interface WorkspaceSessionMcpStatusQuery {
8
+ workspaceId?: string;
9
+ sessionId?: string;
10
+ }
7
11
  export declare class SkillController {
8
12
  private readonly skillManagerService;
9
13
  constructor(skillManagerService: SkillManagerService);
@@ -19,5 +23,8 @@ export declare class SkillController {
19
23
  readonly sync: (request: FastifyRequest<{
20
24
  Body: SyncManagedSkillInput;
21
25
  }>, reply: FastifyReply) => Promise<void>;
26
+ readonly getWorkspaceSessionMcpStatus: (request: FastifyRequest<{
27
+ Querystring: WorkspaceSessionMcpStatusQuery;
28
+ }>, reply: FastifyReply) => Promise<void>;
22
29
  }
23
30
  export {};
@@ -25,6 +25,13 @@ export class SkillController {
25
25
  requireUserId(request);
26
26
  reply.send(this.skillManagerService.syncManagedSkill(request.body ?? { skillId: "", targetCli: [] }));
27
27
  };
28
+ getWorkspaceSessionMcpStatus = async (request, reply) => {
29
+ requireUserId(request);
30
+ reply.send(this.skillManagerService.getWorkspaceSessionMcpStatus({
31
+ workspaceId: request.query.workspaceId ?? "",
32
+ sessionId: request.query.sessionId ?? null
33
+ }));
34
+ };
28
35
  }
29
36
  function isMarkdownSkillInput(input) {
30
37
  return Boolean(input && "markdownContent" in input && typeof input.markdownContent === "string");
@@ -1 +1 @@
1
- {"version":3,"file":"skill-controller.js","sourceRoot":"","sources":["../../../../src/modules/skills/skill-controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAczD,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAEhE,WAAW,GAAG,KAAK,EAC1B,OAA4D,EAC5D,KAAmB,EACJ,EAAE;QACjB,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC;IAEO,GAAG,GAAG,KAAK,EAClB,OAA0F,EAC1F,KAAmB,EACJ,EAAE;QACjB,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9H,CAAC,CAAC;IAEO,MAAM,GAAG,KAAK,EACrB,OAA4D,EAC5D,KAAmB,EACJ,EAAE;QACjB,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACvH,CAAC,CAAC;IAEO,IAAI,GAAG,KAAK,EACnB,OAAwD,EACxD,KAAmB,EACJ,EAAE;QACjB,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC;CACH;AAED,SAAS,oBAAoB,CAC3B,KAA0E;IAE1E,OAAO,OAAO,CAAC,KAAK,IAAI,iBAAiB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAqC;IACpE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1E,OAAO;QACL,SAAS,EAAE,SAA2C;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"skill-controller.js","sourceRoot":"","sources":["../../../../src/modules/skills/skill-controller.ts"],"names":[],"mappings":"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"}