@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
@@ -0,0 +1,219 @@
1
+ import path from "node:path";
2
+ import { pathToFileURL } from "node:url";
3
+ import { AppError } from "../../shared/errors/app-error.js";
4
+ import { OpenCliInstallDiscovery } from "../opencli/opencli-install-discovery.js";
5
+ import { BrowserTaskExecutionPersistence, ensureNotCancelled, normalizeFilePaths, requireString, runBrowserTaskActions } from "./browser-task-execution-support.js";
6
+ import { parseBrowserTaskPayload } from "./browser-task-payload.js";
7
+ import { OpenCliBrowserBridgeService } from "./opencli-browser-bridge-service.js";
8
+ export class OpenCliBridgeBrowserExecutor {
9
+ backend = "opencli_bridge";
10
+ persistence;
11
+ bridgeStatusService;
12
+ installDiscovery;
13
+ constructor(databasePath, officeTaskRepository, officeTaskStepRepository, officeArtifactRepository, officeReceiptRepository, officeAuditEventRepository, openCliHealthService, installDiscovery = new OpenCliInstallDiscovery()) {
14
+ this.persistence = new BrowserTaskExecutionPersistence(this.backend, {
15
+ databasePath,
16
+ officeTaskRepository,
17
+ officeTaskStepRepository,
18
+ officeArtifactRepository,
19
+ officeReceiptRepository,
20
+ officeAuditEventRepository
21
+ });
22
+ this.bridgeStatusService = new OpenCliBrowserBridgeService(openCliHealthService);
23
+ this.installDiscovery = installDiscovery;
24
+ }
25
+ async execute(input) {
26
+ await this.ensureBridgeReady();
27
+ const payload = parseBrowserTaskPayload(input.task.inputJson);
28
+ const page = await this.createPage();
29
+ return await runBrowserTaskActions({
30
+ task: input.task,
31
+ payload: {
32
+ ...payload,
33
+ executionBackend: this.backend
34
+ },
35
+ backend: this.backend,
36
+ runContext: input.runContext,
37
+ lifecycle: this.persistence,
38
+ executeAction: async (action, step, runContext) => {
39
+ return await this.executeAction(page, input.task, step, action, runContext);
40
+ },
41
+ getFinalUrl: () => page.getCurrentUrl()
42
+ });
43
+ }
44
+ async executeAction(page, task, step, action, runContext) {
45
+ const timeout = action.timeoutMs && action.timeoutMs > 0 ? action.timeoutMs : 15_000;
46
+ ensureNotCancelled(runContext);
47
+ switch (action.type) {
48
+ case "goto": {
49
+ await page.goto(requireString(action.url, "url"), {
50
+ waitUntil: "domcontentloaded",
51
+ settleMs: timeout
52
+ });
53
+ return {
54
+ step,
55
+ artifactIds: [],
56
+ outputJson: JSON.stringify({
57
+ currentUrl: await page.getCurrentUrl(),
58
+ executionBackend: this.backend
59
+ })
60
+ };
61
+ }
62
+ case "click": {
63
+ await page.click(requireString(action.selector, "selector"));
64
+ return {
65
+ step,
66
+ artifactIds: [],
67
+ outputJson: JSON.stringify({
68
+ clicked: action.selector,
69
+ executionBackend: this.backend
70
+ })
71
+ };
72
+ }
73
+ case "fill": {
74
+ await page.typeText(requireString(action.selector, "selector"), requireString(action.value, "value"));
75
+ return {
76
+ step,
77
+ artifactIds: [],
78
+ outputJson: JSON.stringify({
79
+ filled: action.selector,
80
+ executionBackend: this.backend
81
+ })
82
+ };
83
+ }
84
+ case "press": {
85
+ const key = requireString(action.key ?? action.value, "key");
86
+ if (action.selector?.trim()) {
87
+ await page.click(action.selector.trim());
88
+ }
89
+ await page.pressKey(key);
90
+ return {
91
+ step,
92
+ artifactIds: [],
93
+ outputJson: JSON.stringify({
94
+ key,
95
+ selector: action.selector ?? null,
96
+ executionBackend: this.backend
97
+ })
98
+ };
99
+ }
100
+ case "upload": {
101
+ const selector = requireString(action.selector, "selector");
102
+ const files = normalizeFilePaths(action.filePaths, action.filePath);
103
+ await page.setFileInput(files, selector);
104
+ return {
105
+ step,
106
+ artifactIds: [],
107
+ outputJson: JSON.stringify({
108
+ selector,
109
+ fileCount: files.length,
110
+ executionBackend: this.backend
111
+ })
112
+ };
113
+ }
114
+ case "wait": {
115
+ await page.wait({ time: timeout / 1000 });
116
+ return {
117
+ step,
118
+ artifactIds: [],
119
+ outputJson: JSON.stringify({
120
+ waitedMs: timeout,
121
+ executionBackend: this.backend
122
+ })
123
+ };
124
+ }
125
+ case "read_dom":
126
+ case "extract_text": {
127
+ const bodyText = await page.evaluate("document.body ? document.body.innerText : ''");
128
+ const currentUrl = await page.getCurrentUrl();
129
+ const artifact = this.persistence.createTextArtifact(task, step, {
130
+ kind: "dom_snapshot",
131
+ fileName: "dom-snapshot.json",
132
+ contentType: "application/json",
133
+ content: JSON.stringify({
134
+ url: currentUrl,
135
+ text: typeof bodyText === "string" ? bodyText : String(bodyText ?? ""),
136
+ executionBackend: this.backend
137
+ }, null, 2)
138
+ });
139
+ return {
140
+ step,
141
+ artifactIds: [artifact.id],
142
+ outputJson: JSON.stringify({
143
+ artifactId: artifact.id,
144
+ textLength: typeof bodyText === "string" ? bodyText.length : String(bodyText ?? "").length,
145
+ executionBackend: this.backend
146
+ })
147
+ };
148
+ }
149
+ case "screenshot": {
150
+ const base64 = await page.screenshot({
151
+ fullPage: action.fullPage ?? true,
152
+ format: "png"
153
+ });
154
+ const artifact = this.persistence.createBinaryArtifact(task, step, {
155
+ kind: "screenshot",
156
+ fileName: `screenshot-${step.stepSeq}.png`,
157
+ contentType: "image/png",
158
+ content: Buffer.from(base64, "base64")
159
+ });
160
+ return {
161
+ step,
162
+ artifactIds: [artifact.id],
163
+ outputJson: JSON.stringify({
164
+ artifactId: artifact.id,
165
+ url: await page.getCurrentUrl(),
166
+ executionBackend: this.backend
167
+ })
168
+ };
169
+ }
170
+ default:
171
+ throw new AppError({
172
+ statusCode: 400,
173
+ errorCode: "BROWSER_ACTION_BACKEND_NOT_SUPPORTED",
174
+ detail: `opencli 浏览器桥接暂不支持动作 ${action.type}`
175
+ });
176
+ }
177
+ }
178
+ async ensureBridgeReady() {
179
+ const status = await this.bridgeStatusService.getStatus();
180
+ if (status.availability === "ready") {
181
+ return;
182
+ }
183
+ const errorCode = status.availability === "daemon_missing"
184
+ ? "OPENCLI_BRIDGE_DAEMON_MISSING"
185
+ : status.availability === "extension_missing"
186
+ ? "OPENCLI_BRIDGE_EXTENSION_MISSING"
187
+ : "OPENCLI_BRIDGE_UNAVAILABLE";
188
+ throw new AppError({
189
+ statusCode: 409,
190
+ errorCode,
191
+ detail: status.detail ?? "OpenCLI 浏览器桥接当前不可用"
192
+ });
193
+ }
194
+ async createPage() {
195
+ const discovery = this.installDiscovery.discover();
196
+ const installPath = discovery.installPath?.trim();
197
+ if (!installPath) {
198
+ throw new AppError({
199
+ statusCode: 409,
200
+ errorCode: "OPENCLI_INSTALL_NOT_FOUND",
201
+ detail: "未找到 opencli 安装目录,无法加载浏览器桥接"
202
+ });
203
+ }
204
+ const pageModuleUrl = pathToFileURL(path.join(installPath, "dist", "src", "browser", "page.js")).href;
205
+ try {
206
+ const pageModule = await import(pageModuleUrl);
207
+ const PageCtor = pageModule.Page;
208
+ return new PageCtor("codingns-office-browser");
209
+ }
210
+ catch (error) {
211
+ throw new AppError({
212
+ statusCode: 500,
213
+ errorCode: "OPENCLI_BRIDGE_LOAD_FAILED",
214
+ detail: error instanceof Error ? error.message : "无法加载 opencli 浏览器桥接模块"
215
+ });
216
+ }
217
+ }
218
+ }
219
+ //# sourceMappingURL=opencli-bridge-browser-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencli-bridge-browser-executor.js","sourceRoot":"","sources":["../../../../src/modules/browser-runtime/opencli-bridge-browser-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { OpenCliHealthService } from "../opencli/opencli-health-service.js";
2
+ export type BrowserBridgeAvailability = "ready" | "daemon_missing" | "extension_missing" | "unavailable";
3
+ export interface BrowserBridgeStatusDto {
4
+ provider: "opencli";
5
+ availability: BrowserBridgeAvailability;
6
+ detail: string | null;
7
+ checkedAt: string;
8
+ installPath: string | null;
9
+ version: string | null;
10
+ }
11
+ export declare class OpenCliBrowserBridgeService {
12
+ private readonly openCliHealthService;
13
+ constructor(openCliHealthService: OpenCliHealthService);
14
+ getStatus(): Promise<BrowserBridgeStatusDto>;
15
+ }
@@ -0,0 +1,33 @@
1
+ export class OpenCliBrowserBridgeService {
2
+ openCliHealthService;
3
+ constructor(openCliHealthService) {
4
+ this.openCliHealthService = openCliHealthService;
5
+ }
6
+ async getStatus() {
7
+ const health = await this.openCliHealthService.check();
8
+ return {
9
+ provider: "opencli",
10
+ availability: mapBridgeAvailability(health),
11
+ detail: health.errorDetail ?? null,
12
+ checkedAt: health.checkedAt,
13
+ installPath: health.installPath,
14
+ version: health.version
15
+ };
16
+ }
17
+ }
18
+ function mapBridgeAvailability(result) {
19
+ if (result.installState !== "installed") {
20
+ return "unavailable";
21
+ }
22
+ switch (result.healthState) {
23
+ case "ready":
24
+ return "ready";
25
+ case "bridge_missing":
26
+ return "extension_missing";
27
+ case "binary_ready":
28
+ return "daemon_missing";
29
+ default:
30
+ return "unavailable";
31
+ }
32
+ }
33
+ //# sourceMappingURL=opencli-browser-bridge-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencli-browser-bridge-service.js","sourceRoot":"","sources":["../../../../src/modules/browser-runtime/opencli-browser-bridge-service.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAAG,CAAC;IAE3E,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;YAClC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;CACF;AAED,SAAS,qBAAqB,CAAC,MAAgC;IAC7D,IAAI,MAAM,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC;QAC7B,KAAK,cAAc;YACjB,OAAO,gBAAgB,CAAC;QAC1B;YACE,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { HostConfig } from "../../config/env.js";
2
+ import type { OfficeArtifactRepository } from "../../storage/repositories/office-artifact-repository.js";
3
+ import type { OfficeAuditEventRepository } from "../../storage/repositories/office-audit-event-repository.js";
4
+ import type { OfficeReceiptRepository } from "../../storage/repositories/office-receipt-repository.js";
5
+ import type { OfficeTaskRepository } from "../../storage/repositories/office-task-repository.js";
6
+ import type { OfficeTaskStepRepository } from "../../storage/repositories/office-task-step-repository.js";
7
+ import type { BrowserExecutionResult, BrowserTaskExecutor, ExecuteBrowserTaskInput } from "./browser-task-executor.js";
8
+ export declare class PlaywrightBrowserExecutor implements BrowserTaskExecutor {
9
+ private readonly config;
10
+ readonly backend: "playwright";
11
+ private readonly persistence;
12
+ constructor(config: HostConfig, officeTaskRepository: OfficeTaskRepository, officeTaskStepRepository: OfficeTaskStepRepository, officeArtifactRepository: OfficeArtifactRepository, officeReceiptRepository: OfficeReceiptRepository, officeAuditEventRepository: OfficeAuditEventRepository);
13
+ execute(input: ExecuteBrowserTaskInput): Promise<BrowserExecutionResult>;
14
+ private executeAction;
15
+ private createDownloadedArtifact;
16
+ }
@@ -0,0 +1,272 @@
1
+ import { chromium } from "playwright-core";
2
+ import { AppError } from "../../shared/errors/app-error.js";
3
+ import { BrowserTaskExecutionPersistence, ensureBrowserExecutablePath, ensureNotCancelled, normalizeFileName, normalizeFilePaths, normalizeStringArray, requireString, runBrowserTaskActions } from "./browser-task-execution-support.js";
4
+ import { parseBrowserTaskPayload } from "./browser-task-payload.js";
5
+ export class PlaywrightBrowserExecutor {
6
+ config;
7
+ backend = "playwright";
8
+ persistence;
9
+ constructor(config, officeTaskRepository, officeTaskStepRepository, officeArtifactRepository, officeReceiptRepository, officeAuditEventRepository) {
10
+ this.config = config;
11
+ this.persistence = new BrowserTaskExecutionPersistence(this.backend, {
12
+ databasePath: config.databasePath,
13
+ officeTaskRepository,
14
+ officeTaskStepRepository,
15
+ officeArtifactRepository,
16
+ officeReceiptRepository,
17
+ officeAuditEventRepository
18
+ });
19
+ }
20
+ async execute(input) {
21
+ let context = null;
22
+ let browser = null;
23
+ try {
24
+ const profile = requireBrowserProfile(input.profile);
25
+ const payload = parseBrowserTaskPayload(input.task.inputJson);
26
+ if (profile.mode === "persistent") {
27
+ const executablePath = requireBrowserExecutablePath(this.config, profile.engine);
28
+ context = await chromium.launchPersistentContext(profile.userDataDir ?? "", {
29
+ channel: undefined,
30
+ executablePath,
31
+ acceptDownloads: true,
32
+ headless: true
33
+ });
34
+ }
35
+ else {
36
+ browser = await chromium.connectOverCDP(profile.cdpEndpoint ?? "");
37
+ context = browser.contexts()[0] ?? await browser.newContext({ acceptDownloads: true });
38
+ }
39
+ const page = await ensurePage(context, payload.startUrl);
40
+ return await runBrowserTaskActions({
41
+ task: input.task,
42
+ payload: {
43
+ ...payload,
44
+ executionBackend: this.backend
45
+ },
46
+ backend: this.backend,
47
+ runContext: input.runContext,
48
+ lifecycle: this.persistence,
49
+ executeAction: async (action, step, runContext) => {
50
+ return await this.executeAction(page, input.task, step, action, runContext);
51
+ },
52
+ getFinalUrl: () => page.url()
53
+ });
54
+ }
55
+ finally {
56
+ await context?.close().catch(() => undefined);
57
+ await browser?.close().catch(() => undefined);
58
+ }
59
+ }
60
+ async executeAction(page, task, step, action, runContext) {
61
+ const timeout = action.timeoutMs && action.timeoutMs > 0 ? action.timeoutMs : 15_000;
62
+ ensureNotCancelled(runContext);
63
+ switch (action.type) {
64
+ case "goto": {
65
+ await page.goto(requireString(action.url, "url"), { waitUntil: "domcontentloaded", timeout });
66
+ ensureNotCancelled(runContext);
67
+ return {
68
+ step,
69
+ artifactIds: [],
70
+ outputJson: JSON.stringify({
71
+ currentUrl: page.url(),
72
+ executionBackend: this.backend
73
+ })
74
+ };
75
+ }
76
+ case "click": {
77
+ await page.locator(requireString(action.selector, "selector")).click({ timeout });
78
+ ensureNotCancelled(runContext);
79
+ return {
80
+ step,
81
+ artifactIds: [],
82
+ outputJson: JSON.stringify({
83
+ clicked: action.selector,
84
+ executionBackend: this.backend
85
+ })
86
+ };
87
+ }
88
+ case "fill": {
89
+ await page.locator(requireString(action.selector, "selector")).fill(requireString(action.value, "value"), { timeout });
90
+ ensureNotCancelled(runContext);
91
+ return {
92
+ step,
93
+ artifactIds: [],
94
+ outputJson: JSON.stringify({
95
+ filled: action.selector,
96
+ executionBackend: this.backend
97
+ })
98
+ };
99
+ }
100
+ case "press": {
101
+ const key = requireString(action.key ?? action.value, "key");
102
+ if (action.selector?.trim()) {
103
+ await page.locator(action.selector.trim()).press(key, { timeout });
104
+ }
105
+ else {
106
+ await page.keyboard.press(key);
107
+ }
108
+ ensureNotCancelled(runContext);
109
+ return {
110
+ step,
111
+ artifactIds: [],
112
+ outputJson: JSON.stringify({
113
+ key,
114
+ selector: action.selector ?? null,
115
+ executionBackend: this.backend
116
+ })
117
+ };
118
+ }
119
+ case "select": {
120
+ const selector = requireString(action.selector, "selector");
121
+ const optionValues = normalizeStringArray(action.values, action.value, "value");
122
+ await page.locator(selector).selectOption(optionValues, { timeout });
123
+ ensureNotCancelled(runContext);
124
+ return {
125
+ step,
126
+ artifactIds: [],
127
+ outputJson: JSON.stringify({
128
+ selector,
129
+ values: optionValues,
130
+ executionBackend: this.backend
131
+ })
132
+ };
133
+ }
134
+ case "upload": {
135
+ const selector = requireString(action.selector, "selector");
136
+ const filePaths = normalizeFilePaths(action.filePaths, action.filePath);
137
+ await page.locator(selector).setInputFiles(filePaths, { timeout });
138
+ ensureNotCancelled(runContext);
139
+ return {
140
+ step,
141
+ artifactIds: [],
142
+ outputJson: JSON.stringify({
143
+ selector,
144
+ fileCount: filePaths.length,
145
+ executionBackend: this.backend
146
+ })
147
+ };
148
+ }
149
+ case "download": {
150
+ const selector = requireString(action.selector, "selector");
151
+ const [download] = await Promise.all([
152
+ page.waitForEvent("download", { timeout }),
153
+ page.locator(selector).click({ timeout })
154
+ ]);
155
+ ensureNotCancelled(runContext);
156
+ const fileName = normalizeFileName(action.fileName, await download.suggestedFilename());
157
+ const artifact = await this.createDownloadedArtifact(task, step, download, fileName);
158
+ return {
159
+ step,
160
+ artifactIds: [artifact.id],
161
+ outputJson: JSON.stringify({
162
+ artifactId: artifact.id,
163
+ selector,
164
+ fileName,
165
+ executionBackend: this.backend
166
+ })
167
+ };
168
+ }
169
+ case "wait": {
170
+ await page.waitForTimeout(timeout);
171
+ ensureNotCancelled(runContext);
172
+ return {
173
+ step,
174
+ artifactIds: [],
175
+ outputJson: JSON.stringify({
176
+ waitedMs: timeout,
177
+ executionBackend: this.backend
178
+ })
179
+ };
180
+ }
181
+ case "read_dom":
182
+ case "extract_text": {
183
+ const bodyText = await page.locator("body").innerText({ timeout });
184
+ ensureNotCancelled(runContext);
185
+ const artifact = this.persistence.createTextArtifact(task, step, {
186
+ kind: "dom_snapshot",
187
+ fileName: "dom-snapshot.json",
188
+ contentType: "application/json",
189
+ content: JSON.stringify({
190
+ url: page.url(),
191
+ text: bodyText,
192
+ executionBackend: this.backend
193
+ }, null, 2)
194
+ });
195
+ return {
196
+ step,
197
+ artifactIds: [artifact.id],
198
+ outputJson: JSON.stringify({
199
+ artifactId: artifact.id,
200
+ textLength: bodyText.length,
201
+ executionBackend: this.backend
202
+ })
203
+ };
204
+ }
205
+ case "screenshot": {
206
+ const screenshot = await page.screenshot({ fullPage: action.fullPage ?? true, type: "png", timeout });
207
+ ensureNotCancelled(runContext);
208
+ const artifact = this.persistence.createBinaryArtifact(task, step, {
209
+ kind: "screenshot",
210
+ fileName: `screenshot-${step.stepSeq}.png`,
211
+ contentType: "image/png",
212
+ content: screenshot
213
+ });
214
+ return {
215
+ step,
216
+ artifactIds: [artifact.id],
217
+ outputJson: JSON.stringify({
218
+ artifactId: artifact.id,
219
+ url: page.url(),
220
+ executionBackend: this.backend
221
+ })
222
+ };
223
+ }
224
+ default:
225
+ throw new AppError({
226
+ statusCode: 400,
227
+ errorCode: "BROWSER_ACTION_NOT_SUPPORTED",
228
+ detail: `暂不支持浏览器动作 ${action.type}`
229
+ });
230
+ }
231
+ }
232
+ async createDownloadedArtifact(task, step, download, fileName) {
233
+ const temporaryPath = await download.path();
234
+ if (!temporaryPath) {
235
+ throw new AppError({
236
+ statusCode: 500,
237
+ errorCode: "BROWSER_DOWNLOAD_PATH_UNAVAILABLE",
238
+ detail: "下载文件路径不可用"
239
+ });
240
+ }
241
+ return this.persistence.createFileArtifact(task, step, {
242
+ kind: "downloaded_file",
243
+ fileName,
244
+ contentType: null,
245
+ sourceFilePath: temporaryPath,
246
+ metadata: {
247
+ suggestedFileName: await download.suggestedFilename()
248
+ }
249
+ });
250
+ }
251
+ }
252
+ async function ensurePage(context, startUrl) {
253
+ const page = context.pages()[0] ?? await context.newPage();
254
+ if (startUrl?.trim()) {
255
+ await page.goto(startUrl.trim(), { waitUntil: "domcontentloaded" });
256
+ }
257
+ return page;
258
+ }
259
+ function requireBrowserProfile(profile) {
260
+ if (!profile) {
261
+ throw new AppError({
262
+ statusCode: 500,
263
+ errorCode: "BROWSER_PROFILE_REQUIRED",
264
+ detail: "playwright 执行器缺少浏览器 Profile"
265
+ });
266
+ }
267
+ return profile;
268
+ }
269
+ function requireBrowserExecutablePath(config, engine) {
270
+ return ensureBrowserExecutablePath(config.databasePath, engine === "chrome" ? config.chromeExecutablePath : config.edgeExecutablePath, engine);
271
+ }
272
+ //# sourceMappingURL=playwright-browser-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-browser-executor.js","sourceRoot":"","sources":["../../../../src/modules/browser-runtime/playwright-browser-executor.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,10 @@ export class ButlerAuthService {
40
40
  tokenHash: hashToken(accessToken),
41
41
  deviceSessionId: null,
42
42
  callerKind: "assistant_runtime",
43
+ capabilityProfile: "butler-full",
44
+ workspaceId: null,
45
+ projectId: null,
46
+ sessionId: null,
43
47
  expiresAt,
44
48
  revokedAt: null,
45
49
  createdAt: issuedAt
@@ -1 +1 @@
1
- {"version":3,"file":"butler-auth-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-auth-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butler-auth-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,8BAA8B,CAAC;AAItC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,oCAAoC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9D,MAAM,uBAAuB,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAUnD,MAAM,OAAO,iBAAiB;IAET;IACA;IAFnB,YACmB,mBAAuE,EACvE,MAAyC;QADzC,wBAAmB,GAAnB,mBAAmB,CAAoD;QACvE,WAAM,GAAN,MAAM,CAAmC;IACzD,CAAC;IAEJ,yBAAyB,CAAC,aAAqB,EAAE,MAAc;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,QAAQ,IAAI,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACnD,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,aAAqB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,8BAA8B,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAE3D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC9B,EAAE,EAAE,QAAQ,EAAE;YACd,MAAM;YACN,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;YACjC,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,mBAAmB;YAC/B,iBAAiB,EAAE,aAAa;YAChC,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,SAAS;YACT,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACvE,WAAW;YACX,QAAQ;YACR,SAAS;YACT,MAAM;SACP,CAAC;IACJ,CAAC;CACF;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAuC,CAAC;QAEnG,IACE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;eAClC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;eACtC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;eACnC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;eACpC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAmC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAqC,EACrC,MAAc,EACd,mBAA4D;IAE5D,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAE3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,oCAAoC,GAAG,IAAI,EAAE,CAAC;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3F,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,IAAY;IACzD,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,OAAO,UAAU,cAAc,IAAI,IAAI,EAAE,CAAC;AAC5C,CAAC"}
@@ -15,6 +15,7 @@ export function buildButlerInboxAnalysisInstruction(input) {
15
15
  `5. 必须检查项目会话:至少执行一次 \`codingns assistant sessions list --project ${input.project.id}\`。`,
16
16
  "6. 如果发现与当前代办直接相关的会话,继续按需读取 `sessions runtime` 和 `sessions messages`,只看最相关的 1 到 3 个会话。",
17
17
  "7. 如果项目下存在可用终端,按需读取 `terminals list` 和 `terminals history`,但不要发送任何终端输入。",
18
+ "8. 如果代办明显涉及办公文档、浏览器自动化或 SSH/控制台运维,必须补查对应 `codingns assistant office ... --help` 或实际 office 查询结果,不能只停留在普通项目会话信息。",
18
19
  "8. 必须根据你查到的真实信息判断:当前仓库是否已经有相关实现、相关会话是否已经做过一半、当前最合理的下一步是什么。",
19
20
  "",
20
21
  "## 严格禁止",
@@ -1 +1 @@
1
- {"version":3,"file":"butler-inbox-instruction-adapter.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-inbox-instruction-adapter.ts"],"names":[],"mappings":"AAKA,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAqB3D,MAAM,UAAU,mCAAmC,CAAC,KAInD;IACC,MAAM,MAAM,GAAG;QACb,+CAA+C;QAC/C,qFAAqF;QACrF,yCAAyC;QACzC,kDAAkD;QAClD,uEAAuE;QACvE,EAAE;QACF,cAAc;QACd,2CAA2C;QAC3C,iGAAiG;QACjG,8DAA8D;QAC9D,0DAA0D,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;QAC/E,mEAAmE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;QACxF,uFAAuF;QACvF,yEAAyE;QACzE,4DAA4D;QAC5D,EAAE;QACF,SAAS;QACT,yBAAyB;QACzB,0BAA0B;QAC1B,eAAe;QACf,iBAAiB;QACjB,EAAE;QACF,SAAS;QACT,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;QAC7B,UAAU,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;QAClC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;QAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC7B,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;QAC7B,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;QAC5B,EAAE;QACF,SAAS;QACT,WAAW;QACX,6DAA6D;QAC7D,+DAA+D;QAC/D,6CAA6C;QAC7C,6CAA6C;QAC7C,EAAE;QACF,0BAA0B;QAC1B,qDAAqD;QACrD,sCAAsC;QACtC,wEAAwE;QACxE,4EAA4E;QAC5E,2CAA2C;QAC3C,qDAAqD;QACrD,yCAAyC;QACzC,EAAE;QACF,SAAS;QACT,qBAAqB;QACrB,0BAA0B;QAC1B,iDAAiD;QACjD,gEAAgE;QAChE,EAAE;QACF,SAAS;QACT,IAAI,CAAC,SAAS,CACZ;YACE,eAAe,EAAE,eAAe;YAChC,eAAe,EAAE;gBACf,MAAM;gBACN,mBAAmB;gBACnB,EAAE;gBACF,MAAM;gBACN,uCAAuC;gBACvC,EAAE;gBACF,QAAQ;gBACR,gCAAgC;gBAChC,EAAE;gBACF,OAAO;gBACP,uBAAuB;aACxB,CAAC,IAAI,CAAC,KAAK,CAAC;YACb,iBAAiB,EAAE,eAAe;YAClC,kBAAkB,EAAE,aAAa;YACjC,WAAW,EAAE;gBACX,sCAAsC;gBACtC,mCAAmC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;gBACrD,8CAA8C,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;aACjE;SACF,EACD,IAAI,EACJ,CAAC,CACF;QACD,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,uBAAuB;QAC9C,MAAM;QACN,QAAQ,EAAE;YACR,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YAC/B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;SAC5B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"butler-inbox-instruction-adapter.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-inbox-instruction-adapter.ts"],"names":[],"mappings":"AAKA,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAqB3D,MAAM,UAAU,mCAAmC,CAAC,KAInD;IACC,MAAM,MAAM,GAAG;QACb,+CAA+C;QAC/C,qFAAqF;QACrF,yCAAyC;QACzC,kDAAkD;QAClD,uEAAuE;QACvE,EAAE;QACF,cAAc;QACd,2CAA2C;QAC3C,iGAAiG;QACjG,8DAA8D;QAC9D,0DAA0D,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;QAC/E,mEAAmE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;QACxF,uFAAuF;QACvF,yEAAyE;QACzE,iHAAiH;QACjH,4DAA4D;QAC5D,EAAE;QACF,SAAS;QACT,yBAAyB;QACzB,0BAA0B;QAC1B,eAAe;QACf,iBAAiB;QACjB,EAAE;QACF,SAAS;QACT,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;QAC7B,UAAU,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;QAClC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;QAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC7B,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;QAC7B,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;QAC5B,EAAE;QACF,SAAS;QACT,WAAW;QACX,6DAA6D;QAC7D,+DAA+D;QAC/D,6CAA6C;QAC7C,6CAA6C;QAC7C,EAAE;QACF,0BAA0B;QAC1B,qDAAqD;QACrD,sCAAsC;QACtC,wEAAwE;QACxE,4EAA4E;QAC5E,2CAA2C;QAC3C,qDAAqD;QACrD,yCAAyC;QACzC,EAAE;QACF,SAAS;QACT,qBAAqB;QACrB,0BAA0B;QAC1B,iDAAiD;QACjD,gEAAgE;QAChE,EAAE;QACF,SAAS;QACT,IAAI,CAAC,SAAS,CACZ;YACE,eAAe,EAAE,eAAe;YAChC,eAAe,EAAE;gBACf,MAAM;gBACN,mBAAmB;gBACnB,EAAE;gBACF,MAAM;gBACN,uCAAuC;gBACvC,EAAE;gBACF,QAAQ;gBACR,gCAAgC;gBAChC,EAAE;gBACF,OAAO;gBACP,uBAAuB;aACxB,CAAC,IAAI,CAAC,KAAK,CAAC;YACb,iBAAiB,EAAE,eAAe;YAClC,kBAAkB,EAAE,aAAa;YACjC,WAAW,EAAE;gBACX,sCAAsC;gBACtC,mCAAmC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;gBACrD,8CAA8C,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;aACjE;SACF,EACD,IAAI,EACJ,CAAC,CACF;QACD,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,uBAAuB;QAC9C,MAAM;QACN,QAAQ,EAAE;YACR,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YAC/B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;SAC5B;KACF,CAAC;AACJ,CAAC"}