@web-auto/webauto 0.1.1 → 0.1.2

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 (354) hide show
  1. package/apps/desktop-console/default-settings.json +1 -0
  2. package/apps/desktop-console/dist/main/index.mjs +1618 -0
  3. package/apps/desktop-console/{src → dist}/main/preload.mjs +10 -0
  4. package/apps/desktop-console/dist/renderer/index.js +3063 -0
  5. package/apps/desktop-console/entry/ui-console.mjs +299 -0
  6. package/apps/webauto/entry/account.mjs +356 -0
  7. package/apps/webauto/entry/lib/account-detect.mjs +160 -0
  8. package/apps/webauto/entry/lib/account-store.mjs +587 -0
  9. package/apps/webauto/entry/lib/profilepool.mjs +1 -1
  10. package/apps/webauto/entry/xhs-install.mjs +27 -3
  11. package/apps/webauto/entry/xhs-status.mjs +152 -0
  12. package/apps/webauto/entry/xhs-unified.mjs +595 -17
  13. package/bin/webauto.mjs +247 -12
  14. package/dist/apps/webauto/server.js +66 -0
  15. package/dist/modules/camo-backend/src/index.js +575 -0
  16. package/dist/modules/camo-backend/src/internal/BrowserSession.js +817 -0
  17. package/dist/modules/camo-backend/src/internal/ElementRegistry.js +61 -0
  18. package/dist/modules/camo-backend/src/internal/ProfileLock.js +85 -0
  19. package/dist/modules/camo-backend/src/internal/SessionManager.js +172 -0
  20. package/dist/modules/camo-backend/src/internal/container-matcher.js +852 -0
  21. package/dist/modules/camo-backend/src/internal/engine-manager.js +258 -0
  22. package/dist/modules/camo-backend/src/internal/fingerprint.js +203 -0
  23. package/dist/modules/camo-backend/src/internal/pageRuntime.js +29 -0
  24. package/dist/modules/camo-backend/src/internal/runtimeInjector.js +30 -0
  25. package/dist/modules/camo-backend/src/internal/state-bus.js +46 -0
  26. package/dist/modules/camo-backend/src/internal/storage-paths.js +36 -0
  27. package/dist/modules/camo-backend/src/internal/ws-server.js +1202 -0
  28. package/dist/modules/camo-runtime/src/utils/browser-service.mjs +423 -0
  29. package/dist/modules/camo-runtime/src/utils/config.mjs +77 -0
  30. package/dist/modules/container-registry/src/index.js +184 -0
  31. package/dist/modules/logging/src/index.js +92 -0
  32. package/dist/modules/operations/src/builtin.js +27 -0
  33. package/dist/modules/operations/src/container-binding.js +75 -0
  34. package/dist/modules/operations/src/executor.js +146 -0
  35. package/dist/modules/operations/src/operations/click.js +167 -0
  36. package/dist/modules/operations/src/operations/extract.js +204 -0
  37. package/dist/modules/operations/src/operations/find-child.js +17 -0
  38. package/dist/modules/operations/src/operations/highlight.js +138 -0
  39. package/dist/modules/operations/src/operations/key.js +61 -0
  40. package/dist/modules/operations/src/operations/navigate.js +148 -0
  41. package/dist/modules/operations/src/operations/scroll.js +126 -0
  42. package/dist/modules/operations/src/operations/type.js +190 -0
  43. package/dist/modules/operations/src/queue.js +100 -0
  44. package/dist/modules/operations/src/registry.js +11 -0
  45. package/dist/modules/operations/src/system/mouse.js +33 -0
  46. package/dist/modules/state/src/atomic-json.js +33 -0
  47. package/dist/modules/workflow/blocks/AnchorVerificationBlock.js +71 -0
  48. package/dist/modules/workflow/blocks/BehaviorRandomizer.js +26 -0
  49. package/dist/modules/workflow/blocks/CallWorkflowBlock.js +38 -0
  50. package/dist/modules/workflow/blocks/CloseDetailBlock.js +209 -0
  51. package/dist/modules/workflow/blocks/CollectBatch.js +137 -0
  52. package/dist/modules/workflow/blocks/CollectCommentsBlock.js +415 -0
  53. package/dist/modules/workflow/blocks/CollectSearchListBlock.js +599 -0
  54. package/dist/modules/workflow/blocks/CollectWeiboPosts.js +229 -0
  55. package/dist/modules/workflow/blocks/DetectPageStateBlock.js +259 -0
  56. package/dist/modules/workflow/blocks/EnsureLoginBlock.js +162 -0
  57. package/dist/modules/workflow/blocks/EnsureSession.js +426 -0
  58. package/dist/modules/workflow/blocks/ErrorClassifier.js +164 -0
  59. package/dist/modules/workflow/blocks/ErrorRecoveryBlock.js +319 -0
  60. package/dist/modules/workflow/blocks/ExpandCommentsBlock.js +1032 -0
  61. package/dist/modules/workflow/blocks/ExtractDetailBlock.js +310 -0
  62. package/dist/modules/workflow/blocks/ExtractPostFields.js +88 -0
  63. package/dist/modules/workflow/blocks/GenerateSmartReplyBlock.js +68 -0
  64. package/dist/modules/workflow/blocks/GoToSearchBlock.js +497 -0
  65. package/dist/modules/workflow/blocks/GracefulFallbackBlock.js +104 -0
  66. package/dist/modules/workflow/blocks/HighlightBlock.js +66 -0
  67. package/dist/modules/workflow/blocks/InitAutoScroll.js +65 -0
  68. package/dist/modules/workflow/blocks/LoadContainerDefinition.js +50 -0
  69. package/dist/modules/workflow/blocks/LoadContainerIndex.js +43 -0
  70. package/dist/modules/workflow/blocks/LocateAndGuardBlock.js +176 -0
  71. package/dist/modules/workflow/blocks/LoginRecoveryBlock.js +242 -0
  72. package/dist/modules/workflow/blocks/MatchContainers.js +64 -0
  73. package/dist/modules/workflow/blocks/MonitoringBlock.js +190 -0
  74. package/dist/modules/workflow/blocks/OpenDetailBlock.js +1240 -0
  75. package/dist/modules/workflow/blocks/OrganizeXhsNotesBlock.js +117 -0
  76. package/dist/modules/workflow/blocks/PersistXhsNoteBlock.js +270 -0
  77. package/dist/modules/workflow/blocks/PickSinglePost.js +69 -0
  78. package/dist/modules/workflow/blocks/ProgressTracker.js +125 -0
  79. package/dist/modules/workflow/blocks/RecordFixtureBlock.js +44 -0
  80. package/dist/modules/workflow/blocks/RenderMarkdown.js +48 -0
  81. package/dist/modules/workflow/blocks/SaveFile.js +54 -0
  82. package/dist/modules/workflow/blocks/ScrollNextBatch.js +72 -0
  83. package/dist/modules/workflow/blocks/SessionHealthBlock.js +73 -0
  84. package/dist/modules/workflow/blocks/StartBrowserService.js +45 -0
  85. package/dist/modules/workflow/blocks/ValidateContainerDefinition.js +67 -0
  86. package/dist/modules/workflow/blocks/ValidateExtract.js +35 -0
  87. package/dist/modules/workflow/blocks/WaitSearchPermitBlock.js +162 -0
  88. package/dist/modules/workflow/blocks/WaitStable.js +74 -0
  89. package/dist/modules/workflow/blocks/WarmupCommentsBlock.js +120 -0
  90. package/dist/modules/workflow/blocks/WorkflowExecutor.js +156 -0
  91. package/dist/modules/workflow/blocks/XiaohongshuCollectFromLinksBlock.js +1004 -0
  92. package/dist/modules/workflow/blocks/XiaohongshuCollectLinksBlock.js +1049 -0
  93. package/dist/modules/workflow/blocks/XiaohongshuFullCollectBlock.js +782 -0
  94. package/dist/modules/workflow/blocks/helpers/anchorVerify.js +198 -0
  95. package/dist/modules/workflow/blocks/helpers/asyncWorkQueue.js +53 -0
  96. package/dist/modules/workflow/blocks/helpers/commentScroller.js +334 -0
  97. package/dist/modules/workflow/blocks/helpers/commentSectionLocator.js +126 -0
  98. package/dist/modules/workflow/blocks/helpers/containerAnchors.js +301 -0
  99. package/dist/modules/workflow/blocks/helpers/debugArtifacts.js +6 -0
  100. package/dist/modules/workflow/blocks/helpers/downloadPaths.js +29 -0
  101. package/dist/modules/workflow/blocks/helpers/expandCommentsController.js +53 -0
  102. package/dist/modules/workflow/blocks/helpers/expandCommentsExtractor.js +129 -0
  103. package/dist/modules/workflow/blocks/helpers/macosVisionOcrPlugin.js +116 -0
  104. package/dist/modules/workflow/blocks/helpers/mergeXhsMarkdown.js +109 -0
  105. package/dist/modules/workflow/blocks/helpers/openDetailController.js +56 -0
  106. package/dist/modules/workflow/blocks/helpers/openDetailTypes.js +7 -0
  107. package/dist/modules/workflow/blocks/helpers/openDetailViewport.js +474 -0
  108. package/dist/modules/workflow/blocks/helpers/openDetailWaiter.js +104 -0
  109. package/dist/modules/workflow/blocks/helpers/operationLogger.js +195 -0
  110. package/dist/modules/workflow/blocks/helpers/persistedNotes.js +107 -0
  111. package/dist/modules/workflow/blocks/helpers/replyExpander.js +260 -0
  112. package/dist/modules/workflow/blocks/helpers/scrollIntoView.js +138 -0
  113. package/dist/modules/workflow/blocks/helpers/searchExecutor.js +328 -0
  114. package/dist/modules/workflow/blocks/helpers/searchGate.js +46 -0
  115. package/dist/modules/workflow/blocks/helpers/searchPageState.js +164 -0
  116. package/dist/modules/workflow/blocks/helpers/searchResultWaiter.js +64 -0
  117. package/dist/modules/workflow/blocks/helpers/simpleAnchor.js +134 -0
  118. package/dist/modules/workflow/blocks/helpers/smartReply.js +40 -0
  119. package/dist/modules/workflow/blocks/helpers/systemInput.js +635 -0
  120. package/dist/modules/workflow/blocks/helpers/targetCountMode.js +9 -0
  121. package/dist/modules/workflow/blocks/helpers/xhsCliArgs.js +80 -0
  122. package/dist/modules/workflow/blocks/helpers/xhsCommentDom.js +805 -0
  123. package/dist/modules/workflow/blocks/helpers/xhsNoteOrganizer.js +140 -0
  124. package/dist/modules/workflow/blocks/restore/RestorePhaseBlock.js +204 -0
  125. package/dist/modules/workflow/config/workflowRegistry.js +32 -0
  126. package/dist/modules/workflow/definitions/batch-collect-workflow.js +63 -0
  127. package/dist/modules/workflow/definitions/scroll-extract-workflow.js +74 -0
  128. package/dist/modules/workflow/definitions/xiaohongshu-collect-workflow-v2.js +81 -0
  129. package/dist/modules/workflow/definitions/xiaohongshu-collect-workflow.js +57 -0
  130. package/dist/modules/workflow/definitions/xiaohongshu-full-collect-workflow-v3.js +68 -0
  131. package/dist/modules/workflow/definitions/xiaohongshu-note-collect.js +49 -0
  132. package/dist/modules/workflow/definitions/xiaohongshu-phase1-workflow-v3.js +30 -0
  133. package/dist/modules/workflow/definitions/xiaohongshu-phase2-links-workflow-v3.js +40 -0
  134. package/dist/modules/workflow/definitions/xiaohongshu-phase3-collect-workflow-v1.js +54 -0
  135. package/dist/modules/workflow/definitions/xiaohongshu-phase34-from-links-workflow-v3.js +25 -0
  136. package/dist/modules/workflow/src/WeiboEventDrivenWorkflowRunner.js +308 -0
  137. package/dist/modules/workflow/src/context.js +70 -0
  138. package/dist/modules/workflow/src/index.js +5 -0
  139. package/dist/modules/workflow/src/orchestrator.js +230 -0
  140. package/dist/modules/workflow/src/runner.js +55 -0
  141. package/dist/modules/workflow/src/runtime.js +70 -0
  142. package/dist/modules/workflow/workflows/WeiboFeedExtractionWorkflow.js +359 -0
  143. package/dist/modules/workflow/workflows/XiaohongshuLoginWorkflow.js +110 -0
  144. package/dist/modules/xiaohongshu/app/src/blocks/MatchCommentsBlock.js +139 -0
  145. package/dist/modules/xiaohongshu/app/src/blocks/Phase1EnsureServicesBlock.js +36 -0
  146. package/dist/modules/xiaohongshu/app/src/blocks/Phase1MonitorCookieBlock.js +213 -0
  147. package/dist/modules/xiaohongshu/app/src/blocks/Phase1StartProfileBlock.js +121 -0
  148. package/dist/modules/xiaohongshu/app/src/blocks/Phase2CollectLinksBlock.js +1249 -0
  149. package/dist/modules/xiaohongshu/app/src/blocks/Phase2SearchBlock.js +703 -0
  150. package/dist/modules/xiaohongshu/app/src/blocks/Phase34CloseDetailBlock.js +41 -0
  151. package/dist/modules/xiaohongshu/app/src/blocks/Phase34CloseTabsBlock.js +44 -0
  152. package/dist/modules/xiaohongshu/app/src/blocks/Phase34CollectCommentsBlock.js +150 -0
  153. package/dist/modules/xiaohongshu/app/src/blocks/Phase34ExtractDetailBlock.js +117 -0
  154. package/dist/modules/xiaohongshu/app/src/blocks/Phase34OpenDetailBlock.js +102 -0
  155. package/dist/modules/xiaohongshu/app/src/blocks/Phase34OpenTabsBlock.js +109 -0
  156. package/dist/modules/xiaohongshu/app/src/blocks/Phase34PersistDetailBlock.js +117 -0
  157. package/dist/modules/xiaohongshu/app/src/blocks/Phase34ProcessSingleNoteBlock.js +114 -0
  158. package/dist/modules/xiaohongshu/app/src/blocks/Phase34ValidateLinksBlock.js +90 -0
  159. package/dist/modules/xiaohongshu/app/src/blocks/Phase3InteractBlock.js +1009 -0
  160. package/dist/modules/xiaohongshu/app/src/blocks/Phase4MultiTabHarvestBlock.js +233 -0
  161. package/dist/modules/xiaohongshu/app/src/blocks/ReplyInteractBlock.js +291 -0
  162. package/dist/modules/xiaohongshu/app/src/blocks/XhsDiscoverFallbackBlock.js +240 -0
  163. package/dist/modules/xiaohongshu/app/src/blocks/helpers/commentMatchDsl.js +126 -0
  164. package/dist/modules/xiaohongshu/app/src/blocks/helpers/commentMatcher.js +99 -0
  165. package/dist/modules/xiaohongshu/app/src/blocks/helpers/evidence.js +27 -0
  166. package/dist/modules/xiaohongshu/app/src/blocks/helpers/sharding.js +42 -0
  167. package/dist/modules/xiaohongshu/app/src/blocks/helpers/xhsComments.js +270 -0
  168. package/dist/modules/xiaohongshu/app/src/index.js +9 -0
  169. package/dist/modules/xiaohongshu/app/src/utils/checkpoints.js +222 -0
  170. package/dist/modules/xiaohongshu/app/src/utils/controllerAction.js +43 -0
  171. package/dist/services/controller/src/controller.js +1476 -0
  172. package/dist/services/controller/src/index.js +2 -0
  173. package/dist/services/controller/src/payload-normalizer.js +129 -0
  174. package/dist/services/shared/heartbeat.js +120 -0
  175. package/dist/services/shared/lib/errorHandler.js +2 -0
  176. package/dist/services/shared/serviceProcessLogger.js +139 -0
  177. package/dist/services/unified-api/RemoteBrowserSession.js +176 -0
  178. package/dist/services/unified-api/RemoteSessionManager.js +148 -0
  179. package/dist/services/unified-api/container-operations-handler.js +115 -0
  180. package/dist/services/unified-api/server.js +652 -0
  181. package/dist/services/unified-api/state-registry.js +274 -0
  182. package/dist/services/unified-api/task-persistence.js +66 -0
  183. package/dist/services/unified-api/task-state.js +130 -0
  184. package/modules/camo-runtime/src/autoscript/action-providers/xhs/search.mjs +12 -5
  185. package/modules/xiaohongshu/app/pnpm-lock.yaml +24 -0
  186. package/package.json +37 -9
  187. package/.beads/README.md +0 -81
  188. package/.beads/config.yaml +0 -67
  189. package/.beads/interactions.jsonl +0 -0
  190. package/.beads/issues.jsonl +0 -180
  191. package/.beads/metadata.json +0 -4
  192. package/.claude/settings.local.json +0 -10
  193. package/.github/workflows/ci.yml +0 -55
  194. package/AGENTS.md +0 -253
  195. package/apps/desktop-console/README.md +0 -27
  196. package/apps/desktop-console/package-lock.json +0 -897
  197. package/apps/desktop-console/package.json +0 -20
  198. package/apps/desktop-console/scripts/build-and-install.mjs +0 -19
  199. package/apps/desktop-console/scripts/build.mjs +0 -45
  200. package/apps/desktop-console/scripts/test-preload.mjs +0 -13
  201. package/apps/desktop-console/src/main/config.mts +0 -26
  202. package/apps/desktop-console/src/main/core-daemon-manager.mts +0 -131
  203. package/apps/desktop-console/src/main/desktop-settings.mts +0 -267
  204. package/apps/desktop-console/src/main/heartbeat-watchdog.mts +0 -50
  205. package/apps/desktop-console/src/main/heartbeat-watchdog.test.mts +0 -68
  206. package/apps/desktop-console/src/main/index-streaming.test.mts +0 -20
  207. package/apps/desktop-console/src/main/index.mts +0 -980
  208. package/apps/desktop-console/src/main/profile-store.mts +0 -239
  209. package/apps/desktop-console/src/main/profile-store.test.mts +0 -54
  210. package/apps/desktop-console/src/main/state-bridge.mts +0 -114
  211. package/apps/desktop-console/src/main/task-state-types.ts +0 -32
  212. package/apps/desktop-console/src/renderer/hooks/use-task-state.mts +0 -120
  213. package/apps/desktop-console/src/renderer/index.mts +0 -133
  214. package/apps/desktop-console/src/renderer/index.test.mts +0 -34
  215. package/apps/desktop-console/src/renderer/path-helpers.mts +0 -46
  216. package/apps/desktop-console/src/renderer/path-helpers.test.mts +0 -14
  217. package/apps/desktop-console/src/renderer/tabs/debug.mts +0 -48
  218. package/apps/desktop-console/src/renderer/tabs/debug.test.mts +0 -22
  219. package/apps/desktop-console/src/renderer/tabs/logs.mts +0 -421
  220. package/apps/desktop-console/src/renderer/tabs/logs.test.mts +0 -27
  221. package/apps/desktop-console/src/renderer/tabs/preflight.mts +0 -486
  222. package/apps/desktop-console/src/renderer/tabs/preflight.test.mts +0 -33
  223. package/apps/desktop-console/src/renderer/tabs/profile-pool.mts +0 -213
  224. package/apps/desktop-console/src/renderer/tabs/results.mts +0 -171
  225. package/apps/desktop-console/src/renderer/tabs/run.test.mts +0 -63
  226. package/apps/desktop-console/src/renderer/tabs/runtime.mts +0 -151
  227. package/apps/desktop-console/src/renderer/tabs/settings.mts +0 -146
  228. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/account-flow.mts +0 -486
  229. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/guide-browser-check.mts +0 -56
  230. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/helpers.mts +0 -262
  231. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/layout-block.mts +0 -430
  232. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/live-stats.mts +0 -847
  233. package/apps/desktop-console/src/renderer/tabs/xiaohongshu/run-flow.mts +0 -443
  234. package/apps/desktop-console/src/renderer/tabs/xiaohongshu-state.mts +0 -425
  235. package/apps/desktop-console/src/renderer/tabs/xiaohongshu.mts +0 -497
  236. package/apps/desktop-console/src/renderer/tabs/xiaohongshu.test.mts +0 -291
  237. package/apps/desktop-console/src/renderer/ui-components.mts +0 -31
  238. package/docs/README_camoufox_chinese.md +0 -141
  239. package/docs/USAGE_V3.md +0 -163
  240. package/docs/arch/OCR_MACOS_PLUGIN.md +0 -39
  241. package/docs/arch/PORTS.md +0 -40
  242. package/docs/arch/REGRESSION_CHECKLIST.md +0 -121
  243. package/docs/arch/SEARCH_GATE.md +0 -224
  244. package/docs/arch/VIEWPORT_SAFETY.md +0 -182
  245. package/docs/arch/XIAOHONGSHU_OFFLINE_MOCK_DESIGN.md +0 -267
  246. package/docs/xiaohongshu-container-driven-summary.md +0 -221
  247. package/docs/xiaohongshu-full-collect-runbook.md +0 -134
  248. package/docs/xiaohongshu-next-steps.md +0 -228
  249. package/docs/xiaohongshu-quickstart.md +0 -73
  250. package/docs/xiaohongshu-workflow-summary.md +0 -227
  251. package/modules/container-registry/tests/container-registry.test.ts +0 -16
  252. package/modules/logging/tests/logging.test.ts +0 -38
  253. package/modules/operations/tests/operations.test.ts +0 -22
  254. package/modules/operations/tests/viewport-filter.test.ts +0 -161
  255. package/modules/operations/tests/visible-only.test.ts +0 -250
  256. package/modules/session-manager/tests/session-manager.test.ts +0 -23
  257. package/modules/state/src/atomic-json.test.ts +0 -30
  258. package/modules/state/src/paths.test.ts +0 -59
  259. package/modules/state/src/xiaohongshu-collect-state.test.ts +0 -259
  260. package/modules/workflow/blocks/AnchorVerificationBlock.d.ts.map +0 -1
  261. package/modules/workflow/blocks/AnchorVerificationBlock.js.map +0 -1
  262. package/modules/workflow/blocks/DetectPageStateBlock.d.ts.map +0 -1
  263. package/modules/workflow/blocks/DetectPageStateBlock.js.map +0 -1
  264. package/modules/workflow/blocks/ErrorRecoveryBlock.d.ts.map +0 -1
  265. package/modules/workflow/blocks/ErrorRecoveryBlock.js.map +0 -1
  266. package/modules/workflow/blocks/WaitSearchPermitBlock.d.ts.map +0 -1
  267. package/modules/workflow/blocks/WaitSearchPermitBlock.js.map +0 -1
  268. package/modules/workflow/blocks/helpers/containerAnchors.d.ts.map +0 -1
  269. package/modules/workflow/blocks/helpers/containerAnchors.js.map +0 -1
  270. package/modules/workflow/blocks/helpers/downloadPaths.test.ts +0 -62
  271. package/modules/workflow/blocks/helpers/mergeXhsMarkdown.test.ts +0 -121
  272. package/modules/workflow/blocks/helpers/operationLogger.d.ts.map +0 -1
  273. package/modules/workflow/blocks/helpers/operationLogger.js.map +0 -1
  274. package/modules/workflow/blocks/helpers/persistedNotes.test.ts +0 -268
  275. package/modules/workflow/blocks/helpers/searchPageState.d.ts.map +0 -1
  276. package/modules/workflow/blocks/helpers/searchPageState.js.map +0 -1
  277. package/modules/workflow/blocks/helpers/targetCountMode.test.ts +0 -29
  278. package/modules/workflow/blocks/helpers/xhsCliArgs.test.ts +0 -75
  279. package/modules/workflow/tests/smartReply.test.ts +0 -32
  280. package/modules/xiaohongshu/app/src/blocks/Phase3Interact.matcher.test.ts +0 -33
  281. package/modules/xiaohongshu/app/src/utils/__tests__/checkpoints.test.ts +0 -141
  282. package/modules/xiaohongshu/app/tests/commentMatchDsl.test.ts +0 -50
  283. package/modules/xiaohongshu/app/tests/commentMatcher.test.ts +0 -46
  284. package/modules/xiaohongshu/app/tests/sharding.test.ts +0 -31
  285. package/package-scripts.json +0 -8
  286. package/runtime/infra/utils/README.md +0 -13
  287. package/runtime/infra/utils/scripts/README.md +0 -0
  288. package/runtime/infra/utils/scripts/development/eval-in-session.mjs +0 -40
  289. package/runtime/infra/utils/scripts/development/highlight-search-containers.mjs +0 -35
  290. package/runtime/infra/utils/scripts/service/kill-port.mjs +0 -24
  291. package/runtime/infra/utils/scripts/service/start-api.mjs +0 -39
  292. package/runtime/infra/utils/scripts/service/start-browser-service.mjs +0 -106
  293. package/runtime/infra/utils/scripts/service/stop-api.mjs +0 -18
  294. package/runtime/infra/utils/scripts/service/stop-browser-service.mjs +0 -104
  295. package/runtime/infra/utils/scripts/test-services.mjs +0 -94
  296. package/services/shared/heartbeat.test.ts +0 -102
  297. package/services/unified-api/__tests__/task-state.test.ts +0 -95
  298. package/sitecustomize.py +0 -19
  299. package/tests/README.md +0 -194
  300. package/tests/e2e/workflows/weibo-feed-extraction.test.ts +0 -171
  301. package/tests/fixtures/data/container-definitions.json +0 -67
  302. package/tests/fixtures/pages/simple-page.html +0 -69
  303. package/tests/integration/01-test-container-match.mjs +0 -188
  304. package/tests/integration/02-test-dom-branch.mjs +0 -161
  305. package/tests/integration/03-test-container-operation-system.mjs +0 -91
  306. package/tests/integration/05-test-container-lifecycle-events.mjs +0 -224
  307. package/tests/integration/05-test-container-lifecycle-with-events.mjs +0 -250
  308. package/tests/integration/06-test-container-dom-tree-drawing.mjs +0 -256
  309. package/tests/integration/07-test-weibo-container-lifecycle.mjs +0 -355
  310. package/tests/integration/08-test-weibo-feed-workflow.test.mjs +0 -164
  311. package/tests/integration/10-test-visual-analyzer.mjs +0 -312
  312. package/tests/integration/11-test-visual-loop.mjs +0 -284
  313. package/tests/integration/12-test-simple-visual-loop.mjs +0 -242
  314. package/tests/integration/13-test-visual-robust.mjs +0 -185
  315. package/tests/integration/14-test-visual-highlight-loop.mjs +0 -271
  316. package/tests/integration/inspect-page.mjs +0 -50
  317. package/tests/integration/run-all-tests.mjs +0 -95
  318. package/tests/patch_verification/CODEX_PATCH_TEST.md +0 -103
  319. package/tests/patch_verification/PHASE2_ANALYSIS.md +0 -179
  320. package/tests/patch_verification/PHASE2_OPTIMIZATION_REPORT.md +0 -55
  321. package/tests/patch_verification/PHASE2_TO_PHASE4_SUMMARY.md +0 -126
  322. package/tests/patch_verification/QUICK_TEST_SEQUENCE.md +0 -262
  323. package/tests/patch_verification/README.md +0 -143
  324. package/tests/patch_verification/RUN_TESTS.md +0 -60
  325. package/tests/patch_verification/TEST_EXECUTION.md +0 -99
  326. package/tests/patch_verification/TEST_PLAN.md +0 -328
  327. package/tests/patch_verification/TEST_RESULTS.md +0 -34
  328. package/tests/patch_verification/TOOL_TEST_PLAN.md +0 -48
  329. package/tests/patch_verification/run-tool-test.mjs +0 -121
  330. package/tests/patch_verification/temp_test_files/test01.txt +0 -1
  331. package/tests/patch_verification/temp_test_files/test02.txt +0 -3
  332. package/tests/patch_verification/temp_test_files/test02_gnu.txt +0 -3
  333. package/tests/patch_verification/temp_test_files/test03.txt +0 -1
  334. package/tests/patch_verification/temp_test_files/test03_multiline.txt +0 -5
  335. package/tests/patch_verification/temp_test_files/test04_function.ts +0 -5
  336. package/tests/patch_verification/temp_test_files/test05_import.ts +0 -4
  337. package/tests/patch_verification/temp_test_files/test06_special_chars.txt +0 -4
  338. package/tests/patch_verification/temp_test_files/test07_indentation.ts +0 -5
  339. package/tests/patch_verification/temp_test_files/test08_mismatch.txt +0 -1
  340. package/tests/patch_verification/temp_test_files/test_add_02.txt +0 -3
  341. package/tests/patch_verification/temp_test_files/test_simple.txt +0 -1
  342. package/tests/runner/TestReporter.mjs +0 -57
  343. package/tests/runner/TestRunner.mjs +0 -244
  344. package/tests/unit/commands/profile.test.mjs +0 -10
  345. package/tests/unit/container/change-notifier.test.mjs +0 -181
  346. package/tests/unit/lifecycle/session-registry.test.mjs +0 -135
  347. package/tests/unit/operations/registry.test.ts +0 -73
  348. package/tests/unit/utils/browser-service.test.mjs +0 -153
  349. package/tests/unit/utils/config.test.mjs +0 -166
  350. package/tests/unit/utils/fingerprint.test.mjs +0 -166
  351. package/tsconfig.json +0 -31
  352. package/tsconfig.services.json +0 -26
  353. /package/apps/desktop-console/{src → dist}/renderer/index.html +0 -0
  354. /package/apps/desktop-console/{src/renderer/tabs → dist/renderer}/run.mts +0 -0
package/bin/webauto.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import minimist from 'minimist';
3
3
  import { spawn } from 'node:child_process';
4
- import { existsSync, writeFileSync, readFileSync } from 'node:fs';
4
+ import { existsSync, writeFileSync, readFileSync, mkdirSync } from 'node:fs';
5
5
  import path from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
 
@@ -20,7 +20,7 @@ function saveState(state) {
20
20
  try {
21
21
  const dir = path.dirname(STATE_FILE);
22
22
  if (!existsSync(dir)) {
23
- import('node:fs').then(fs => fs.mkdirSync(dir, { recursive: true }));
23
+ mkdirSync(dir, { recursive: true });
24
24
  }
25
25
  writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
26
26
  } catch {}
@@ -29,10 +29,11 @@ function saveState(state) {
29
29
  function isGlobalInstall() {
30
30
  // Check if running from global node_modules
31
31
  const execPath = process.argv[1] || '';
32
+ const npmPrefix = String(process.env.NPM_CONFIG_PREFIX || '').trim();
32
33
  return execPath.includes('node_modules/@web-auto/webauto') ||
33
34
  execPath.includes('/opt/homebrew/lib/node_modules') ||
34
35
  execPath.includes('/usr/local/lib/node_modules') ||
35
- execPath.includes(process.env.NPM_CONFIG_PREFIX || '') ||
36
+ (npmPrefix ? execPath.includes(npmPrefix) : false) ||
36
37
  !existsSync(path.join(ROOT, '.git'));
37
38
  }
38
39
 
@@ -40,20 +41,189 @@ function npmBin() {
40
41
  return process.platform === 'win32' ? 'npm.cmd' : 'npm';
41
42
  }
42
43
 
43
- function usage() {
44
- console.log(`webauto (dev)
44
+ function printMainHelp() {
45
+ console.log(`webauto CLI
45
46
 
46
47
  Usage:
48
+ webauto --help
49
+ webauto account --help
50
+ webauto ui console --help
51
+ webauto xhs --help
52
+
53
+ Core Commands:
54
+ webauto account <list|sync|add|get|update|delete|login|sync-alias> [options]
47
55
  webauto ui console [--build] [--install] [--check]
48
- webauto dev install-global [--full] [--link]
56
+ webauto ui test <scenario> [options]
57
+ webauto xhs install [--download-browser] [--download-geoip] [--ensure-backend]
58
+ webauto xhs unified [xhs options...]
59
+ webauto xhs status [--run-id <id>] [--json]
60
+ webauto xhs orchestrate [xhs options...]
61
+
62
+ Build & Release:
49
63
  webauto build:dev # Local link mode
50
64
  webauto build:release # Prepare npm release
51
65
 
66
+ Examples (standard):
67
+ webauto account add --platform xiaohongshu --alias 主号
68
+ webauto account list
69
+ webauto account login xhs-0001 --url https://www.xiaohongshu.com
70
+ webauto account sync-alias xhs-0001
71
+ webauto ui console --check
72
+ webauto ui console --build
73
+ webauto ui console --install
74
+ webauto ui test env-check
75
+ webauto ui test account-flow --profile test-001
76
+ webauto ui test config-save --output ./report.json
77
+ webauto ui test crawl-run --keyword "测试" --target 10
78
+ webauto xhs install --ensure-backend
79
+ webauto xhs unified --profile xiaohongshu-batch-1 --keyword "seedance2.0" --max-notes 100 --do-comments true --persist-comments true --do-likes true --like-keywords "真牛逼" --env debug --tab-count 4
80
+
81
+ Tips:
82
+ - xhs 命令会转发到 apps/webauto/entry/xhs-*.mjs
83
+ - account 命令会转发到 apps/webauto/entry/account.mjs
84
+ - 全量参数请看: webauto xhs --help
85
+ `);
86
+ }
87
+
88
+ function printUiConsoleHelp() {
89
+ console.log(`webauto ui console
90
+
91
+ Usage:
92
+ webauto ui console [--build] [--install] [--check] [--no-daemon]
93
+ webauto ui test <scenario> [options]
94
+
95
+ Options:
96
+ --check 只检查构建/依赖状态,不启动 UI
97
+ --build 缺少构建产物时自动构建
98
+ --install 缺少依赖时自动安装
99
+ --no-daemon 前台模式运行(不后台守护)
100
+
101
+ Test Scenarios:
102
+ env-check 环境检查(camo CLI + 服务健康)
103
+ account-flow 账户创建/登录流程测试
104
+ config-save 配置导入/导出测试
105
+ crawl-run 完整爬取流程测试(dry-run 模式)
106
+
107
+ Test Options:
108
+ --profile <id> 测试用 profile ID
109
+ --keyword <kw> 测试关键词
110
+ --target <n> 目标数量
111
+ --headless 无头模式
112
+ --output <path> 输出 JSON 报告路径
113
+
52
114
  Examples:
53
115
  webauto ui console --check
54
116
  webauto ui console --build
55
117
  webauto ui console --install
56
- webauto dev install-global --link
118
+ webauto ui test env-check
119
+ webauto ui test account-flow --profile test-001
120
+ webauto ui test config-save --output ./report.json
121
+ webauto ui test crawl-run --keyword "测试" --target 10 --headless
122
+ `);
123
+ }
124
+
125
+ function printXhsHelp() {
126
+ console.log(`webauto xhs
127
+
128
+ Usage:
129
+ webauto xhs install [--download-browser] [--download-geoip] [--ensure-backend]
130
+ webauto xhs unified --profile <id> --keyword <kw> [options...]
131
+ webauto xhs status [--run-id <id>] [--json]
132
+ webauto xhs orchestrate --profile <id> --keyword <kw> [options...]
133
+
134
+ Subcommands:
135
+ install 运行 xhs-install,检查/安装 camoufox、geoip,按需拉起 backend
136
+ unified 运行统一脚本(搜索 + 打开详情 + 评论抓取 + 点赞)
137
+ status 查询当前任务状态与错误摘要(支持 runId 详情)
138
+ orchestrate 运行编排入口(默认调用 unified 模式)
139
+
140
+ Unified Required:
141
+ --profile <id> 配置好的 camo profile(示例: xiaohongshu-batch-1)
142
+ --keyword <kw> 搜索关键词
143
+
144
+ Unified Common Options:
145
+ --max-notes <n> 目标帖子数,默认 30
146
+ --total-notes <n> 多账号总目标数(按账号自动分片)
147
+ --total-target <n> total-notes 别名
148
+ --parallel 启用多账号并行执行
149
+ --concurrency <n> 并行度(默认=账号数)
150
+ --plan-only 仅生成分片计划,不执行
151
+ --tab-count <n> 轮询 tab 数,默认 4
152
+ --throttle <ms> 操作节流,默认 500
153
+ --note-interval <ms> 帖子间等待,默认 900
154
+ --env <name> 输出环境目录,默认 debug
155
+ --output-root <path> 自定义输出根目录
156
+ --dry-run 干跑(禁用点赞/回复)
157
+ --no-dry-run 强制非干跑
158
+
159
+ Comment Crawl Options:
160
+ --do-comments <bool> 是否抓评论,默认 true
161
+ --persist-comments <bool> 是否落盘评论,默认 true(dry-run 下默认 false)
162
+
163
+ Like Options:
164
+ --do-likes <bool> 是否启用点赞,默认 false
165
+ --like-keywords "<k1,k2>" 点赞关键词(命中评论触发)
166
+ --max-likes <n> 每轮最多点赞数,默认 2
167
+ --match-mode any|all 关键词匹配模式,默认 any
168
+ --match-min-hits <n> 最低命中词数,默认 1
169
+ --match-keywords "<...>" 匹配关键词集合(默认回落到 keyword)
170
+
171
+ Optional Advanced:
172
+ --do-reply <bool> 是否回复(默认 false)
173
+ --reply-text "<text>" 回复文案(默认: 感谢分享,已关注)
174
+ --do-ocr <bool> 是否启用 OCR(默认 false)
175
+ --ocr-command "<cmd>" OCR 命令路径
176
+ --input-mode protocol|... 输入模式(默认 protocol)
177
+
178
+ Standard Workflows:
179
+ 1) 初始化与后端检查
180
+ webauto xhs install --download-geoip --ensure-backend
181
+
182
+ 2) 全功能采集(搜索 + 评论 + 点赞)
183
+ webauto xhs unified --profile xiaohongshu-batch-1 --keyword "seedance2.0" --max-notes 100 --do-comments true --persist-comments true --do-likes true --like-keywords "真牛逼" --env debug --tab-count 4
184
+
185
+ 3) 只做搜索 + 评论抓取(不点赞)
186
+ webauto xhs unified --profile xiaohongshu-batch-1 --keyword "seedance2.0" --max-notes 50 --do-comments true --persist-comments true --do-likes false --env debug
187
+
188
+ 4) 点赞策略增强(多关键词 + 命中阈值)
189
+ webauto xhs unified --profile xiaohongshu-batch-1 --keyword "deepseek新模型" --max-notes 100 --do-comments true --persist-comments true --do-likes true --like-keywords "真牛逼,真敬业,太强了" --match-mode any --match-min-hits 1 --max-likes 3 --env debug --tab-count 4
190
+
191
+ 5) 多账号并行分片(总量100,3账号并发)
192
+ webauto xhs unified --profiles xiaohongshu-batch-1,xiaohongshu-batch-2,xiaohongshu-batch-3 --keyword "seedance2.0" --total-notes 100 --parallel --concurrency 3 --do-comments true --persist-comments true --do-likes true --like-keywords "真牛逼" --env debug --tab-count 4
193
+
194
+ 6) 查看运行状态与错误
195
+ webauto xhs status
196
+ webauto xhs status --run-id <runId> --json
197
+
198
+ Output:
199
+ 默认目录: ~/.webauto/download/xiaohongshu/<env>/<keyword>/
200
+ 典型产物:
201
+ - <noteId>/comments.jsonl
202
+ - like-evidence/<noteId>/summary-*.json
203
+ - .like-state.jsonl
204
+ `);
205
+ }
206
+
207
+ function printAccountHelp() {
208
+ console.log(`webauto account
209
+
210
+ Usage:
211
+ webauto account --help
212
+ webauto account list [--json]
213
+ webauto account list --records [--json]
214
+ webauto account add [--platform <name>] [--alias <alias>] [--name <name>] [--username <username>] [--profile <id>] [--fingerprint <id>] [--json]
215
+ webauto account get <id|alias> [--json]
216
+ webauto account update <id|alias> [--alias <alias>|--clear-alias] [--name <name>] [--username <name>] [--profile <id>] [--fingerprint <id>] [--status active|disabled|archived] [--json]
217
+ webauto account delete <id|alias> [--delete-profile] [--delete-fingerprint] [--json]
218
+ webauto account login <id|alias> [--url <url>] [--sync-alias] [--json]
219
+ webauto account sync-alias <id|alias> [--selector <css>] [--alias <value>] [--json]
220
+ webauto account sync <profileId|all> [--json]
221
+
222
+ Examples:
223
+ webauto account list
224
+ webauto account sync all
225
+ webauto account list --records
226
+ webauto account login xiaohongshu-batch-1 --url https://www.xiaohongshu.com
57
227
  `);
58
228
  }
59
229
 
@@ -182,19 +352,36 @@ async function uiConsole({ build, install, checkOnly }) {
182
352
  }
183
353
 
184
354
  async function main() {
355
+ const rawArgv = process.argv.slice(2);
185
356
  const args = minimist(process.argv.slice(2), {
186
357
  boolean: ['help', 'build', 'install', 'check', 'full', 'link'],
187
358
  alias: { h: 'help' },
188
359
  });
189
360
 
361
+ const cmd = String(args._[0] || '').trim();
362
+ const sub = String(args._[1] || '').trim();
363
+
190
364
  if (args.help) {
191
- usage();
365
+ if (cmd === 'account') {
366
+ printAccountHelp();
367
+ return;
368
+ }
369
+ if (cmd === 'ui' && sub === 'console') {
370
+ printUiConsoleHelp();
371
+ return;
372
+ }
373
+ if (cmd === 'xhs') {
374
+ printXhsHelp();
375
+ return;
376
+ }
377
+ printMainHelp();
192
378
  return;
193
379
  }
194
380
 
195
- const cmd = String(args._[0] || '').trim();
196
- const sub = String(args._[1] || '').trim();
197
- const sub2 = String(args._[2] || '').trim();
381
+ if (!cmd) {
382
+ printMainHelp();
383
+ return;
384
+ }
198
385
 
199
386
  // build:dev - local development mode
200
387
  if (cmd === 'build:dev') {
@@ -226,12 +413,60 @@ async function main() {
226
413
  return;
227
414
  }
228
415
 
416
+
417
+ // Delegate to ui-console.mjs for test scenarios
418
+ if (cmd === 'ui' && sub === 'test') {
419
+ const uiConsoleScript = path.join(ROOT, 'apps', 'desktop-console', 'entry', 'ui-console.mjs');
420
+ await run(process.execPath, [uiConsoleScript, ...rawArgv.slice(1)]);
421
+ return;
422
+ }
423
+ if (cmd === 'account') {
424
+ const script = path.join(ROOT, 'apps', 'webauto', 'entry', 'account.mjs');
425
+ await run(process.execPath, [script, ...rawArgv.slice(1)]);
426
+ return;
427
+ }
428
+
429
+ if (cmd === 'xhs') {
430
+ if (!sub || sub === 'help') {
431
+ printXhsHelp();
432
+ return;
433
+ }
434
+
435
+ if (sub === 'install') {
436
+ const script = path.join(ROOT, 'apps', 'webauto', 'entry', 'xhs-install.mjs');
437
+ await run(process.execPath, [script, ...rawArgv.slice(2)]);
438
+ return;
439
+ }
440
+
441
+ if (sub === 'unified' || sub === 'run') {
442
+ const script = path.join(ROOT, 'apps', 'webauto', 'entry', 'xhs-unified.mjs');
443
+ await run(process.execPath, [script, ...rawArgv.slice(2)]);
444
+ return;
445
+ }
446
+
447
+ if (sub === 'status') {
448
+ const script = path.join(ROOT, 'apps', 'webauto', 'entry', 'xhs-status.mjs');
449
+ await run(process.execPath, [script, ...rawArgv.slice(2)]);
450
+ return;
451
+ }
452
+
453
+ if (sub === 'orchestrate') {
454
+ const script = path.join(ROOT, 'apps', 'webauto', 'entry', 'xhs-orchestrate.mjs');
455
+ await run(process.execPath, [script, ...rawArgv.slice(2)]);
456
+ return;
457
+ }
458
+
459
+ console.error(`❌ 未知 xhs 子命令: ${sub}`);
460
+ printXhsHelp();
461
+ process.exit(2);
462
+ }
463
+
229
464
  if (cmd === 'dev' && sub === 'install-global') {
230
465
  console.error('❌ `webauto dev install-global` 已迁移,请使用新的 app 入口与 npm 发布流程。');
231
466
  process.exit(2);
232
467
  }
233
468
 
234
- usage();
469
+ printMainHelp();
235
470
  process.exit(1);
236
471
  }
237
472
 
@@ -0,0 +1,66 @@
1
+ const runtimeMode = String(process.env.WEBAUTO_RUNTIME_MODE || 'autoscript')
2
+ .trim()
3
+ .toLowerCase();
4
+ const autoscriptProvider = String(process.env.WEBAUTO_BROWSER_PROVIDER || 'camo')
5
+ .trim()
6
+ .toLowerCase();
7
+ const autoscriptKeepalive = process.env.WEBAUTO_AUTOSCRIPT_KEEPALIVE !== '0';
8
+ const autoscriptStopOnExit = process.env.WEBAUTO_AUTOSCRIPT_STOP_ON_EXIT === '1';
9
+ const autoscriptExitOnUnhealthy = process.env.WEBAUTO_AUTOSCRIPT_EXIT_ON_UNHEALTHY === '1';
10
+ function sleep(ms) {
11
+ return new Promise((resolve) => setTimeout(resolve, ms));
12
+ }
13
+ function stopBrowserBackendIfRequested() {
14
+ if (!autoscriptStopOnExit)
15
+ return;
16
+ console.log('[webauto] skip backend shutdown (managed by @web-auto/camo)');
17
+ }
18
+ async function runAutoscriptRuntime() {
19
+ process.env.WEBAUTO_BROWSER_PROVIDER = autoscriptProvider;
20
+ const { ensureBrowserService, checkBrowserService } = await import('../../modules/camo-runtime/src/utils/browser-service.mjs');
21
+ console.log(`[webauto] runtime mode=autoscript provider=${autoscriptProvider}`);
22
+ await ensureBrowserService();
23
+ if (!autoscriptKeepalive)
24
+ return;
25
+ let shuttingDown = false;
26
+ const onSignal = (signal) => {
27
+ if (shuttingDown)
28
+ return;
29
+ shuttingDown = true;
30
+ console.log(`[webauto] received ${signal}, shutting down autoscript runtime`);
31
+ stopBrowserBackendIfRequested();
32
+ process.exit(0);
33
+ };
34
+ process.on('SIGINT', () => onSignal('SIGINT'));
35
+ process.on('SIGTERM', () => onSignal('SIGTERM'));
36
+ console.log('[webauto] autoscript backend ready');
37
+ while (!shuttingDown) {
38
+ await sleep(5000);
39
+ const healthy = await checkBrowserService();
40
+ if (!healthy) {
41
+ console.warn('[webauto] autoscript backend health check failed');
42
+ if (autoscriptExitOnUnhealthy) {
43
+ stopBrowserBackendIfRequested();
44
+ process.exit(1);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ async function startRuntime() {
50
+ if (runtimeMode === 'unified') {
51
+ console.log('[webauto] runtime mode=unified');
52
+ await import('../../services/unified-api/server.js');
53
+ return;
54
+ }
55
+ if (runtimeMode === 'autoscript') {
56
+ await runAutoscriptRuntime();
57
+ return;
58
+ }
59
+ throw new Error(`Unsupported WEBAUTO_RUNTIME_MODE: ${runtimeMode}. Allowed: autoscript|unified`);
60
+ }
61
+ void startRuntime().catch((error) => {
62
+ console.error('[webauto] runtime start failed:', error?.message || String(error));
63
+ process.exit(1);
64
+ });
65
+ export {};
66
+ //# sourceMappingURL=server.js.map