@agentrhq/webcmd 0.1.1 → 0.2.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 (1290) hide show
  1. package/README.md +278 -20
  2. package/cli-manifest.json +16247 -34913
  3. package/clis/_atlassian/shared.js +1 -1
  4. package/clis/booking/search.js +4 -4
  5. package/clis/chatgpt/ask.js +2 -2
  6. package/clis/chatgpt/utils.js +41 -42
  7. package/clis/chatgpt/utils.test.js +23 -23
  8. package/clis/chatgpt-app/ax.js +5 -5
  9. package/clis/chatgpt-app/ax.test.js +8 -8
  10. package/clis/chatgpt-app/new.js +2 -2
  11. package/clis/codex/sidebar.js +1 -1
  12. package/clis/codex/sidebar.test.js +12 -12
  13. package/clis/coingecko/top.js +3 -3
  14. package/clis/dblp/dblp.test.js +1 -1
  15. package/clis/discord-app/search.js +1 -1
  16. package/clis/discord-app/utils.js +6 -6
  17. package/clis/facebook/__fixtures__/notifications-page.html +6 -6
  18. package/clis/facebook/add-friend.js +2 -2
  19. package/clis/facebook/feed.js +18 -18
  20. package/clis/facebook/friends.js +4 -4
  21. package/clis/facebook/groups.js +3 -3
  22. package/clis/facebook/join-group.js +2 -2
  23. package/clis/facebook/marketplace-inbox.js +3 -3
  24. package/clis/facebook/marketplace-listings.js +1 -1
  25. package/clis/facebook/notifications.js +14 -15
  26. package/clis/facebook/notifications.test.js +28 -29
  27. package/clis/gemini/ask.test.js +12 -12
  28. package/clis/gemini/deep-research-result.js +2 -2
  29. package/clis/gemini/deep-research-result.test.js +2 -2
  30. package/clis/gemini/deep-research.js +2 -2
  31. package/clis/gemini/deep-research.test.js +1 -1
  32. package/clis/gemini/models.js +11 -11
  33. package/clis/gemini/models.test.js +1 -1
  34. package/clis/gemini/reply-state.test.js +89 -89
  35. package/clis/gemini/utils.js +41 -41
  36. package/clis/gemini/utils.test.js +30 -30
  37. package/clis/geogebra/utils.js +1 -1
  38. package/clis/google-scholar/search.js +3 -3
  39. package/clis/grok/delete.js +1 -1
  40. package/clis/grok/export-all.js +2 -2
  41. package/clis/grok/export.js +2 -2
  42. package/clis/grok/pin.js +3 -3
  43. package/clis/grok/utils.js +12 -12
  44. package/clis/grok/utils.test.js +2 -2
  45. package/clis/indeed/indeed.test.js +3 -3
  46. package/clis/indeed/utils.js +1 -1
  47. package/clis/instagram/post.js +19 -19
  48. package/clis/instagram/post.test.js +2 -2
  49. package/clis/instagram/reel.js +6 -6
  50. package/clis/linkedin/connect.js +3 -3
  51. package/clis/linkedin/people-search.js +4 -4
  52. package/clis/linkedin/profile-experience.js +6 -6
  53. package/clis/linkedin/profile-experience.test.js +10 -10
  54. package/clis/linkedin/profile-read.js +1 -1
  55. package/clis/linkedin/safe-send.js +1 -1
  56. package/clis/linkedin/search.js +1 -1
  57. package/clis/linkedin/shared.js +2 -2
  58. package/clis/linkedin/timeline.js +5 -5
  59. package/clis/manus/manus.test.js +2 -2
  60. package/clis/medium/feed.js +3 -3
  61. package/clis/medium/search.js +3 -3
  62. package/clis/medium/user.js +3 -3
  63. package/clis/notebooklm/auth.js +2 -2
  64. package/clis/notebooklm/note-list.test.js +4 -4
  65. package/clis/notebooklm/notes-get.test.js +8 -8
  66. package/clis/notebooklm/source-fulltext.test.js +11 -11
  67. package/clis/notebooklm/utils.js +28 -28
  68. package/clis/notebooklm/utils.test.js +10 -10
  69. package/clis/pixiv/search.test.js +3 -3
  70. package/clis/qoder/quest.js +2 -2
  71. package/clis/reddit/home.js +2 -2
  72. package/clis/reddit/hot.js +1 -1
  73. package/clis/reddit/read.js +2 -2
  74. package/clis/reddit/read.test.js +1 -1
  75. package/clis/reddit/reply.js +2 -2
  76. package/clis/reddit/whoami.js +2 -2
  77. package/clis/reuters/article-detail.js +1 -1
  78. package/clis/reuters/search.js +1 -1
  79. package/clis/slock/attachment-upload.test.js +1 -1
  80. package/clis/slock/task-convert.js +1 -1
  81. package/clis/substack/feed.js +3 -3
  82. package/clis/substack/publication.js +3 -3
  83. package/clis/substack/search.js +4 -4
  84. package/clis/tiktok/comment.js +2 -2
  85. package/clis/tiktok/follow.js +4 -4
  86. package/clis/tiktok/like.js +1 -1
  87. package/clis/tiktok/save.js +1 -1
  88. package/clis/tiktok/unfollow.js +4 -4
  89. package/clis/tiktok/unlike.js +1 -1
  90. package/clis/tiktok/unsave.js +2 -2
  91. package/clis/tiktok/write-refactor.test.js +5 -5
  92. package/clis/twitter/accept.js +3 -3
  93. package/clis/twitter/followers.js +1 -1
  94. package/clis/twitter/list-remove-core.js +2 -2
  95. package/clis/twitter/list-tweets.test.js +3 -3
  96. package/clis/twitter/lists.js +6 -6
  97. package/clis/twitter/lists.test.js +2 -2
  98. package/clis/twitter/reply-dm.js +1 -1
  99. package/clis/twitter/shared.test.js +4 -5
  100. package/clis/twitter/trending.js +1 -1
  101. package/clis/twitter/utils.js +1 -1
  102. package/clis/web/read.js +1 -1
  103. package/clis/web/read.test.js +2 -2
  104. package/clis/yahoo-finance/quote.js +1 -1
  105. package/clis/youtube/history.js +4 -4
  106. package/clis/youtube/transcript-group.js +1 -1
  107. package/clis/youtube/transcript-group.test.js +5 -5
  108. package/clis/youtube/transcript.js +5 -5
  109. package/clis/youtube/video.js +4 -4
  110. package/clis/youtube/video.test.js +6 -6
  111. package/dist/src/adapter-shadow.d.ts +11 -0
  112. package/dist/src/adapter-shadow.js +72 -0
  113. package/dist/src/adapter-shadow.test.js +49 -0
  114. package/dist/src/adapter-source.d.ts +11 -0
  115. package/dist/src/adapter-source.js +24 -0
  116. package/dist/src/adapter-source.test.d.ts +1 -0
  117. package/dist/src/adapter-source.test.js +29 -0
  118. package/dist/src/brand.d.ts +9 -0
  119. package/dist/src/brand.js +9 -0
  120. package/dist/src/brand.test.d.ts +1 -0
  121. package/dist/src/brand.test.js +15 -0
  122. package/dist/src/browser/analyze.d.ts +118 -0
  123. package/dist/src/browser/analyze.js +405 -0
  124. package/dist/src/browser/analyze.test.d.ts +1 -0
  125. package/dist/src/browser/analyze.test.js +209 -0
  126. package/dist/src/browser/article-extract.d.ts +57 -0
  127. package/dist/src/browser/article-extract.e2e.test.d.ts +1 -0
  128. package/dist/src/browser/article-extract.e2e.test.js +105 -0
  129. package/dist/src/browser/article-extract.js +169 -0
  130. package/dist/src/browser/article-extract.test.d.ts +1 -0
  131. package/dist/src/browser/article-extract.test.js +94 -0
  132. package/dist/src/browser/ax-snapshot.d.ts +37 -0
  133. package/dist/src/browser/ax-snapshot.js +217 -0
  134. package/dist/src/browser/ax-snapshot.test.d.ts +1 -0
  135. package/dist/src/browser/ax-snapshot.test.js +91 -0
  136. package/dist/src/browser/base-page.d.ts +151 -0
  137. package/dist/src/browser/base-page.js +1060 -0
  138. package/dist/src/browser/base-page.test.d.ts +1 -0
  139. package/dist/src/browser/base-page.test.js +803 -0
  140. package/dist/src/browser/bridge-readiness.d.ts +14 -0
  141. package/dist/src/browser/bridge-readiness.js +24 -0
  142. package/dist/src/browser/bridge-readiness.test.d.ts +1 -0
  143. package/dist/src/browser/bridge-readiness.test.js +58 -0
  144. package/dist/src/browser/bridge.d.ts +26 -0
  145. package/dist/src/browser/bridge.js +58 -0
  146. package/dist/src/browser/cdp-click-fixture.test.d.ts +1 -0
  147. package/dist/src/browser/cdp-click-fixture.test.js +87 -0
  148. package/dist/src/browser/cdp.d.ts +46 -0
  149. package/dist/src/browser/cdp.js +536 -0
  150. package/dist/src/browser/cdp.test.d.ts +1 -0
  151. package/dist/src/browser/cdp.test.js +79 -0
  152. package/dist/src/browser/compound.d.ts +59 -0
  153. package/dist/src/browser/compound.js +112 -0
  154. package/dist/src/browser/compound.test.d.ts +1 -0
  155. package/dist/src/browser/compound.test.js +175 -0
  156. package/dist/src/browser/config.d.ts +2 -0
  157. package/dist/src/browser/config.js +14 -0
  158. package/dist/src/browser/daemon-client.d.ts +33 -0
  159. package/dist/src/browser/daemon-client.js +187 -0
  160. package/dist/src/browser/daemon-client.test.d.ts +1 -0
  161. package/dist/src/browser/daemon-client.test.js +411 -0
  162. package/dist/src/browser/daemon-lifecycle.d.ts +37 -0
  163. package/dist/src/browser/daemon-lifecycle.js +147 -0
  164. package/dist/src/browser/daemon-transport.d.ts +54 -0
  165. package/dist/src/browser/daemon-transport.js +68 -0
  166. package/dist/src/browser/daemon-version.d.ts +4 -0
  167. package/dist/src/browser/daemon-version.js +12 -0
  168. package/dist/src/browser/dom-helpers.d.ts +41 -0
  169. package/dist/src/browser/dom-helpers.js +239 -0
  170. package/dist/src/browser/dom-helpers.test.d.ts +1 -0
  171. package/dist/src/browser/dom-helpers.test.js +106 -0
  172. package/dist/src/browser/dom-snapshot.d.ts +93 -0
  173. package/dist/src/browser/dom-snapshot.js +894 -0
  174. package/dist/src/browser/dom-snapshot.test.d.ts +11 -0
  175. package/dist/src/browser/dom-snapshot.test.js +313 -0
  176. package/dist/src/browser/errors.d.ts +38 -0
  177. package/dist/src/browser/errors.js +90 -0
  178. package/dist/src/browser/errors.test.d.ts +1 -0
  179. package/dist/src/browser/errors.test.js +60 -0
  180. package/dist/src/browser/extract.d.ts +69 -0
  181. package/dist/src/browser/extract.js +132 -0
  182. package/dist/src/browser/extract.test.d.ts +1 -0
  183. package/dist/src/browser/extract.test.js +129 -0
  184. package/dist/src/browser/find.d.ts +84 -0
  185. package/dist/src/browser/find.js +398 -0
  186. package/dist/src/browser/find.test.d.ts +1 -0
  187. package/dist/src/browser/find.test.js +180 -0
  188. package/dist/src/browser/html-tree.d.ts +75 -0
  189. package/dist/src/browser/html-tree.js +112 -0
  190. package/dist/src/browser/html-tree.test.d.ts +1 -0
  191. package/dist/src/browser/html-tree.test.js +181 -0
  192. package/dist/src/browser/index.d.ts +14 -0
  193. package/dist/src/browser/index.js +12 -0
  194. package/dist/src/browser/network-cache.d.ts +49 -0
  195. package/dist/src/browser/network-cache.js +78 -0
  196. package/dist/src/browser/network-cache.test.d.ts +1 -0
  197. package/dist/src/browser/network-cache.test.js +75 -0
  198. package/dist/src/browser/network-interceptor.d.ts +11 -0
  199. package/dist/src/browser/network-interceptor.js +11 -0
  200. package/dist/src/browser/network-key.d.ts +22 -0
  201. package/dist/src/browser/network-key.js +66 -0
  202. package/dist/src/browser/network-key.test.d.ts +1 -0
  203. package/dist/src/browser/network-key.test.js +49 -0
  204. package/dist/src/browser/page.d.ts +83 -0
  205. package/dist/src/browser/page.js +453 -0
  206. package/dist/src/browser/page.test.d.ts +1 -0
  207. package/dist/src/browser/page.test.js +406 -0
  208. package/dist/src/browser/profile.d.ts +14 -0
  209. package/dist/src/browser/profile.js +86 -0
  210. package/dist/src/browser/protocol.d.ts +65 -0
  211. package/dist/src/browser/protocol.js +1 -0
  212. package/dist/src/browser/runtime/local-cloak/actions.d.ts +3 -0
  213. package/dist/src/browser/runtime/local-cloak/actions.js +240 -0
  214. package/dist/src/browser/runtime/local-cloak/downloads.d.ts +3 -0
  215. package/dist/src/browser/runtime/local-cloak/downloads.js +28 -0
  216. package/dist/src/browser/runtime/local-cloak/network.d.ts +28 -0
  217. package/dist/src/browser/runtime/local-cloak/network.js +120 -0
  218. package/dist/src/browser/runtime/local-cloak/network.test.d.ts +1 -0
  219. package/dist/src/browser/runtime/local-cloak/network.test.js +124 -0
  220. package/dist/src/browser/runtime/local-cloak/profiles.d.ts +6 -0
  221. package/dist/src/browser/runtime/local-cloak/profiles.js +17 -0
  222. package/dist/src/browser/runtime/local-cloak/profiles.test.d.ts +1 -0
  223. package/dist/src/browser/runtime/local-cloak/profiles.test.js +19 -0
  224. package/dist/src/browser/runtime/local-cloak/provider.d.ts +15 -0
  225. package/dist/src/browser/runtime/local-cloak/provider.js +27 -0
  226. package/dist/src/browser/runtime/local-cloak/provider.test.d.ts +1 -0
  227. package/dist/src/browser/runtime/local-cloak/provider.test.js +244 -0
  228. package/dist/src/browser/runtime/local-cloak/session-manager.d.ts +77 -0
  229. package/dist/src/browser/runtime/local-cloak/session-manager.js +280 -0
  230. package/dist/src/browser/runtime/local-cloak/session-manager.test.d.ts +1 -0
  231. package/dist/src/browser/runtime/local-cloak/session-manager.test.js +92 -0
  232. package/dist/src/browser/runtime/provider.d.ts +9 -0
  233. package/dist/src/browser/runtime/provider.js +1 -0
  234. package/dist/src/browser/runtime/provider.test.d.ts +2 -0
  235. package/dist/src/browser/runtime/provider.test.js +49 -0
  236. package/dist/src/browser/shape-filter.d.ts +52 -0
  237. package/dist/src/browser/shape-filter.js +101 -0
  238. package/dist/src/browser/shape-filter.test.d.ts +1 -0
  239. package/dist/src/browser/shape-filter.test.js +101 -0
  240. package/dist/src/browser/shape.d.ts +23 -0
  241. package/dist/src/browser/shape.js +95 -0
  242. package/dist/src/browser/shape.test.d.ts +1 -0
  243. package/dist/src/browser/shape.test.js +82 -0
  244. package/dist/src/browser/stealth.d.ts +11 -0
  245. package/dist/src/browser/stealth.js +359 -0
  246. package/dist/src/browser/stealth.test.d.ts +1 -0
  247. package/dist/src/browser/stealth.test.js +134 -0
  248. package/dist/src/browser/tabs.d.ts +13 -0
  249. package/dist/src/browser/tabs.js +70 -0
  250. package/dist/src/browser/target-errors.d.ts +39 -0
  251. package/dist/src/browser/target-errors.js +45 -0
  252. package/dist/src/browser/target-errors.test.d.ts +1 -0
  253. package/dist/src/browser/target-errors.test.js +94 -0
  254. package/dist/src/browser/target-resolver.d.ts +158 -0
  255. package/dist/src/browser/target-resolver.js +570 -0
  256. package/dist/src/browser/target-resolver.test.d.ts +1 -0
  257. package/dist/src/browser/target-resolver.test.js +118 -0
  258. package/dist/src/browser/utils.d.ts +20 -0
  259. package/dist/src/browser/utils.js +64 -0
  260. package/dist/src/browser/utils.test.d.ts +1 -0
  261. package/dist/src/browser/utils.test.js +29 -0
  262. package/dist/src/browser/verify-fixture.d.ts +65 -0
  263. package/dist/src/browser/verify-fixture.js +318 -0
  264. package/dist/src/browser/verify-fixture.test.d.ts +1 -0
  265. package/dist/src/browser/verify-fixture.test.js +219 -0
  266. package/dist/src/browser/visual-refs.d.ts +11 -0
  267. package/dist/src/browser/visual-refs.js +108 -0
  268. package/dist/src/browser.test.d.ts +1 -0
  269. package/dist/src/browser.test.js +297 -0
  270. package/dist/src/build-manifest.d.ts +103 -0
  271. package/dist/src/build-manifest.js +363 -0
  272. package/dist/src/build-manifest.test.d.ts +1 -0
  273. package/dist/src/build-manifest.test.js +341 -0
  274. package/dist/src/capabilityRouting.d.ts +19 -0
  275. package/dist/src/capabilityRouting.js +56 -0
  276. package/dist/src/capabilityRouting.test.d.ts +1 -0
  277. package/dist/src/capabilityRouting.test.js +63 -0
  278. package/dist/src/cli-argv-preprocess.d.ts +63 -0
  279. package/dist/src/cli-argv-preprocess.js +303 -0
  280. package/dist/src/cli-argv-preprocess.test.d.ts +1 -0
  281. package/dist/src/cli-argv-preprocess.test.js +304 -0
  282. package/dist/src/cli.d.ts +79 -0
  283. package/dist/src/cli.js +3350 -0
  284. package/dist/src/cli.test.d.ts +1 -0
  285. package/dist/src/cli.test.js +3041 -0
  286. package/dist/src/commanderAdapter.d.ts +21 -0
  287. package/dist/src/commanderAdapter.js +208 -0
  288. package/dist/src/commanderAdapter.test.d.ts +1 -0
  289. package/dist/src/commanderAdapter.test.js +352 -0
  290. package/dist/src/commands/auth.d.ts +40 -0
  291. package/dist/src/commands/auth.js +434 -0
  292. package/dist/src/commands/auth.test.d.ts +1 -0
  293. package/dist/src/commands/auth.test.js +252 -0
  294. package/dist/src/commands/daemon.d.ts +9 -0
  295. package/dist/src/commands/daemon.js +91 -0
  296. package/dist/src/commands/daemon.test.d.ts +1 -0
  297. package/dist/src/commands/daemon.test.js +293 -0
  298. package/dist/src/completion-fast.d.ts +22 -0
  299. package/dist/src/completion-fast.js +88 -0
  300. package/dist/src/completion-shared.d.ts +13 -0
  301. package/dist/src/completion-shared.js +61 -0
  302. package/dist/src/completion.d.ts +21 -0
  303. package/dist/src/completion.js +68 -0
  304. package/dist/src/completion.test.d.ts +1 -0
  305. package/dist/src/completion.test.js +24 -0
  306. package/dist/src/constants.d.ts +18 -0
  307. package/dist/src/constants.js +41 -0
  308. package/dist/src/convention-audit.d.ts +50 -0
  309. package/dist/src/convention-audit.js +553 -0
  310. package/dist/src/convention-audit.test.d.ts +1 -0
  311. package/dist/src/convention-audit.test.js +255 -0
  312. package/dist/src/daemon/server.d.ts +13 -0
  313. package/dist/src/daemon/server.js +190 -0
  314. package/dist/src/daemon/server.test.d.ts +1 -0
  315. package/dist/src/daemon/server.test.js +184 -0
  316. package/dist/src/daemon-utils.d.ts +19 -0
  317. package/dist/src/daemon-utils.js +46 -0
  318. package/dist/src/daemon.d.ts +1 -0
  319. package/dist/src/daemon.js +27 -0
  320. package/dist/src/daemon.test.d.ts +1 -0
  321. package/dist/src/daemon.test.js +69 -0
  322. package/dist/src/discovery.d.ts +46 -0
  323. package/dist/src/discovery.js +341 -0
  324. package/dist/src/doctor.d.ts +39 -0
  325. package/dist/src/doctor.js +174 -0
  326. package/dist/src/doctor.test.d.ts +1 -0
  327. package/dist/src/doctor.test.js +309 -0
  328. package/dist/src/download/article-download.d.ts +72 -0
  329. package/dist/src/download/article-download.js +305 -0
  330. package/dist/src/download/article-download.test.d.ts +1 -0
  331. package/dist/src/download/article-download.test.js +235 -0
  332. package/dist/src/download/index.d.ts +71 -0
  333. package/dist/src/download/index.js +363 -0
  334. package/dist/src/download/index.test.d.ts +1 -0
  335. package/dist/src/download/index.test.js +173 -0
  336. package/dist/src/download/media-download.d.ts +49 -0
  337. package/dist/src/download/media-download.js +127 -0
  338. package/dist/src/download/media-download.test.d.ts +1 -0
  339. package/dist/src/download/media-download.test.js +112 -0
  340. package/dist/src/download/progress.d.ts +36 -0
  341. package/dist/src/download/progress.js +120 -0
  342. package/dist/src/download/progress.test.d.ts +1 -0
  343. package/dist/src/download/progress.test.js +36 -0
  344. package/dist/src/electron-apps.d.ts +31 -0
  345. package/dist/src/electron-apps.js +83 -0
  346. package/dist/src/electron-apps.test.d.ts +1 -0
  347. package/dist/src/electron-apps.test.js +67 -0
  348. package/dist/src/engine.test.d.ts +1 -0
  349. package/dist/src/engine.test.js +312 -0
  350. package/dist/src/errors.d.ts +114 -0
  351. package/dist/src/errors.js +174 -0
  352. package/dist/src/errors.test.d.ts +1 -0
  353. package/dist/src/errors.test.js +109 -0
  354. package/dist/src/execution.d.ts +24 -0
  355. package/dist/src/execution.js +511 -0
  356. package/dist/src/execution.test.d.ts +1 -0
  357. package/dist/src/execution.test.js +657 -0
  358. package/dist/src/external-clis.yaml +0 -37
  359. package/dist/src/external.d.ts +49 -0
  360. package/dist/src/external.js +211 -0
  361. package/dist/src/external.test.d.ts +1 -0
  362. package/dist/src/external.test.js +95 -0
  363. package/dist/src/generate-release-notes-cli.test.d.ts +1 -0
  364. package/dist/src/generate-release-notes-cli.test.js +140 -0
  365. package/dist/src/help.d.ts +88 -0
  366. package/dist/src/help.js +556 -0
  367. package/dist/src/help.test.d.ts +1 -0
  368. package/dist/src/help.test.js +58 -0
  369. package/dist/src/hooks.d.ts +46 -0
  370. package/dist/src/hooks.js +58 -0
  371. package/dist/src/hooks.test.d.ts +4 -0
  372. package/dist/src/hooks.test.js +92 -0
  373. package/dist/src/interceptor.d.ts +44 -0
  374. package/dist/src/interceptor.js +183 -0
  375. package/dist/src/interceptor.test.d.ts +4 -0
  376. package/dist/src/interceptor.test.js +81 -0
  377. package/dist/src/launcher.d.ts +41 -0
  378. package/dist/src/launcher.js +226 -0
  379. package/dist/src/launcher.test.d.ts +1 -0
  380. package/dist/src/launcher.test.js +153 -0
  381. package/dist/src/logger.d.ts +26 -0
  382. package/dist/src/logger.js +49 -0
  383. package/dist/src/main.d.ts +5 -0
  384. package/dist/src/main.js +177 -0
  385. package/dist/src/manifest-types.d.ts +43 -0
  386. package/dist/src/manifest-types.js +9 -0
  387. package/dist/src/node-network.d.ts +10 -0
  388. package/dist/src/node-network.js +174 -0
  389. package/dist/src/node-network.test.d.ts +1 -0
  390. package/dist/src/node-network.test.js +55 -0
  391. package/dist/src/observation/artifact.d.ts +16 -0
  392. package/dist/src/observation/artifact.js +260 -0
  393. package/dist/src/observation/artifact.test.d.ts +1 -0
  394. package/dist/src/observation/artifact.test.js +121 -0
  395. package/dist/src/observation/events.d.ts +89 -0
  396. package/dist/src/observation/events.js +1 -0
  397. package/dist/src/observation/index.d.ts +7 -0
  398. package/dist/src/observation/index.js +7 -0
  399. package/dist/src/observation/manager.d.ts +9 -0
  400. package/dist/src/observation/manager.js +27 -0
  401. package/dist/src/observation/manager.test.d.ts +1 -0
  402. package/dist/src/observation/manager.test.js +13 -0
  403. package/dist/src/observation/redaction.d.ts +11 -0
  404. package/dist/src/observation/redaction.js +81 -0
  405. package/dist/src/observation/redaction.test.d.ts +1 -0
  406. package/dist/src/observation/redaction.test.js +32 -0
  407. package/dist/src/observation/retention.d.ts +32 -0
  408. package/dist/src/observation/retention.js +160 -0
  409. package/dist/src/observation/retention.test.d.ts +1 -0
  410. package/dist/src/observation/retention.test.js +118 -0
  411. package/dist/src/observation/ring-buffer.d.ts +22 -0
  412. package/dist/src/observation/ring-buffer.js +45 -0
  413. package/dist/src/observation/ring-buffer.test.d.ts +1 -0
  414. package/dist/src/observation/ring-buffer.test.js +22 -0
  415. package/dist/src/observation/session.d.ts +25 -0
  416. package/dist/src/observation/session.js +50 -0
  417. package/dist/src/output.d.ts +14 -0
  418. package/dist/src/output.js +152 -0
  419. package/dist/src/output.test.d.ts +1 -0
  420. package/dist/src/output.test.js +53 -0
  421. package/dist/src/package-exports.test.d.ts +1 -0
  422. package/dist/src/package-exports.test.js +112 -0
  423. package/dist/src/package-paths.d.ts +8 -0
  424. package/dist/src/package-paths.js +41 -0
  425. package/dist/src/pipeline/executor.d.ts +11 -0
  426. package/dist/src/pipeline/executor.js +93 -0
  427. package/dist/src/pipeline/executor.test.d.ts +4 -0
  428. package/dist/src/pipeline/executor.test.js +182 -0
  429. package/dist/src/pipeline/index.d.ts +5 -0
  430. package/dist/src/pipeline/index.js +5 -0
  431. package/dist/src/pipeline/registry.d.ts +28 -0
  432. package/dist/src/pipeline/registry.js +55 -0
  433. package/dist/src/pipeline/steps/browser.d.ts +13 -0
  434. package/dist/src/pipeline/steps/browser.js +86 -0
  435. package/dist/src/pipeline/steps/download.d.ts +18 -0
  436. package/dist/src/pipeline/steps/download.js +252 -0
  437. package/dist/src/pipeline/steps/download.test.d.ts +1 -0
  438. package/dist/src/pipeline/steps/download.test.js +102 -0
  439. package/dist/src/pipeline/steps/fetch.d.ts +5 -0
  440. package/dist/src/pipeline/steps/fetch.js +122 -0
  441. package/dist/src/pipeline/steps/fetch.test.d.ts +1 -0
  442. package/dist/src/pipeline/steps/fetch.test.js +117 -0
  443. package/dist/src/pipeline/steps/intercept.d.ts +5 -0
  444. package/dist/src/pipeline/steps/intercept.js +50 -0
  445. package/dist/src/pipeline/steps/tap.d.ts +12 -0
  446. package/dist/src/pipeline/steps/tap.js +93 -0
  447. package/dist/src/pipeline/steps/transform.d.ts +9 -0
  448. package/dist/src/pipeline/steps/transform.js +70 -0
  449. package/dist/src/pipeline/template.d.ts +17 -0
  450. package/dist/src/pipeline/template.js +344 -0
  451. package/dist/src/pipeline/template.test.d.ts +4 -0
  452. package/dist/src/pipeline/template.test.js +197 -0
  453. package/dist/src/pipeline/transform.test.d.ts +4 -0
  454. package/dist/src/pipeline/transform.test.js +133 -0
  455. package/dist/src/plugin-manifest.d.ts +70 -0
  456. package/dist/src/plugin-manifest.js +160 -0
  457. package/dist/src/plugin-manifest.test.d.ts +4 -0
  458. package/dist/src/plugin-manifest.test.js +179 -0
  459. package/dist/src/plugin-scaffold.d.ts +28 -0
  460. package/dist/src/plugin-scaffold.js +143 -0
  461. package/dist/src/plugin-scaffold.test.d.ts +4 -0
  462. package/dist/src/plugin-scaffold.test.js +83 -0
  463. package/dist/src/plugin.d.ts +146 -0
  464. package/dist/src/plugin.js +1303 -0
  465. package/dist/src/plugin.test.d.ts +4 -0
  466. package/dist/src/plugin.test.js +1363 -0
  467. package/dist/src/registry-api.d.ts +13 -0
  468. package/dist/src/registry-api.js +10 -0
  469. package/dist/src/registry.d.ts +123 -0
  470. package/dist/src/registry.js +125 -0
  471. package/dist/src/registry.test.d.ts +4 -0
  472. package/dist/src/registry.test.js +209 -0
  473. package/dist/src/release-notes.d.ts +38 -0
  474. package/dist/src/release-notes.js +99 -0
  475. package/dist/src/release-notes.test.d.ts +1 -0
  476. package/dist/src/release-notes.test.js +61 -0
  477. package/dist/src/runtime-copy.test.d.ts +1 -0
  478. package/dist/src/runtime-copy.test.js +29 -0
  479. package/dist/src/runtime-detect.d.ts +31 -0
  480. package/dist/src/runtime-detect.js +47 -0
  481. package/dist/src/runtime-detect.test.d.ts +1 -0
  482. package/dist/src/runtime-detect.test.js +39 -0
  483. package/dist/src/runtime-identity.test.d.ts +1 -0
  484. package/dist/src/runtime-identity.test.js +18 -0
  485. package/dist/src/runtime.d.ts +47 -0
  486. package/dist/src/runtime.js +54 -0
  487. package/dist/src/scripts/framework.d.ts +7 -0
  488. package/dist/src/scripts/framework.js +25 -0
  489. package/dist/src/scripts/interact.d.ts +4 -0
  490. package/dist/src/scripts/interact.js +20 -0
  491. package/dist/src/scripts/store.d.ts +13 -0
  492. package/dist/src/scripts/store.js +48 -0
  493. package/dist/src/serialization.d.ts +42 -0
  494. package/dist/src/serialization.js +103 -0
  495. package/dist/src/serialization.test.d.ts +1 -0
  496. package/dist/src/serialization.test.js +78 -0
  497. package/dist/src/skills.d.ts +14 -0
  498. package/dist/src/skills.js +127 -0
  499. package/dist/src/skills.test.d.ts +1 -0
  500. package/dist/src/skills.test.js +71 -0
  501. package/dist/src/snapshotFormatter.d.ts +11 -0
  502. package/dist/src/snapshotFormatter.js +336 -0
  503. package/dist/src/snapshotFormatter.test.d.ts +7 -0
  504. package/dist/src/snapshotFormatter.test.js +521 -0
  505. package/dist/src/tui.d.ts +28 -0
  506. package/dist/src/tui.js +179 -0
  507. package/dist/src/tui.test.d.ts +1 -0
  508. package/dist/src/tui.test.js +19 -0
  509. package/dist/src/types.d.ts +236 -0
  510. package/dist/src/types.js +7 -0
  511. package/dist/src/update-check.d.ts +66 -0
  512. package/dist/src/update-check.js +206 -0
  513. package/dist/src/update-check.test.d.ts +1 -0
  514. package/dist/src/update-check.test.js +117 -0
  515. package/dist/src/utils.d.ts +57 -0
  516. package/dist/src/utils.js +152 -0
  517. package/dist/src/utils.test.d.ts +1 -0
  518. package/dist/src/utils.test.js +155 -0
  519. package/dist/src/validate.d.ts +21 -0
  520. package/dist/src/validate.js +130 -0
  521. package/dist/src/validate.test.d.ts +9 -0
  522. package/dist/src/validate.test.js +90 -0
  523. package/dist/src/verify.d.ts +26 -0
  524. package/dist/src/verify.js +67 -0
  525. package/dist/src/version.d.ts +4 -0
  526. package/dist/src/version.js +22 -0
  527. package/package.json +7 -3
  528. package/scripts/check-package-bin.mjs +95 -0
  529. package/scripts/generate-release-notes.ts +234 -0
  530. package/scripts/postinstall.js +1 -1
  531. package/scripts/silent-column-drop-baseline.json +0 -498
  532. package/scripts/typed-error-lint-baseline.json +0 -464
  533. package/skills/webcmd-adapter-author/SKILL.md +216 -213
  534. package/skills/webcmd-adapter-author/references/adapter-template.md +206 -399
  535. package/skills/webcmd-adapter-author/references/api-discovery.md +111 -220
  536. package/skills/webcmd-adapter-author/references/coverage-matrix.md +34 -68
  537. package/skills/webcmd-adapter-author/references/field-conventions.md +84 -167
  538. package/skills/webcmd-adapter-author/references/field-decode-playbook.md +60 -146
  539. package/skills/webcmd-adapter-author/references/jsdom-fixture-pattern.md +111 -178
  540. package/skills/webcmd-adapter-author/references/output-design.md +47 -125
  541. package/skills/webcmd-adapter-author/references/site-memory.md +116 -166
  542. package/skills/webcmd-adapter-author/references/site-recon.md +74 -78
  543. package/skills/webcmd-adapter-author/references/strategy-selection.md +80 -124
  544. package/skills/webcmd-adapter-author/references/success-rate-pitfalls.md +80 -105
  545. package/skills/webcmd-adapter-author/references/typed-errors.md +87 -178
  546. package/skills/webcmd-autofix/SKILL.md +136 -143
  547. package/skills/webcmd-sitemap-author/SKILL.md +58 -67
  548. package/skills/webcmd-sitemap-author/references/sitemap-schema.md +354 -494
  549. package/skills/webcmd-usage/SKILL.md +106 -97
  550. package/clis/12306/auth.js +0 -59
  551. package/clis/12306/me.js +0 -73
  552. package/clis/12306/orders.js +0 -96
  553. package/clis/12306/passengers.js +0 -90
  554. package/clis/12306/price.js +0 -166
  555. package/clis/12306/stations.js +0 -66
  556. package/clis/12306/train.js +0 -91
  557. package/clis/12306/trains.js +0 -166
  558. package/clis/12306/utils.js +0 -272
  559. package/clis/12306/utils.test.js +0 -424
  560. package/clis/1688/assets.js +0 -205
  561. package/clis/1688/assets.test.js +0 -39
  562. package/clis/1688/auth.js +0 -46
  563. package/clis/1688/download.js +0 -77
  564. package/clis/1688/download.test.js +0 -31
  565. package/clis/1688/item.js +0 -188
  566. package/clis/1688/item.test.js +0 -67
  567. package/clis/1688/search.js +0 -310
  568. package/clis/1688/search.test.js +0 -75
  569. package/clis/1688/shared.js +0 -557
  570. package/clis/1688/shared.test.js +0 -57
  571. package/clis/1688/store.js +0 -227
  572. package/clis/1688/store.test.js +0 -62
  573. package/clis/1point3acres/auth.js +0 -52
  574. package/clis/1point3acres/digest.js +0 -35
  575. package/clis/1point3acres/forum.js +0 -51
  576. package/clis/1point3acres/forums.js +0 -44
  577. package/clis/1point3acres/hot.js +0 -35
  578. package/clis/1point3acres/latest.js +0 -35
  579. package/clis/1point3acres/notifications.js +0 -64
  580. package/clis/1point3acres/search.js +0 -71
  581. package/clis/1point3acres/thread.js +0 -117
  582. package/clis/1point3acres/user.js +0 -77
  583. package/clis/1point3acres/utils.js +0 -247
  584. package/clis/36kr/article.js +0 -66
  585. package/clis/36kr/article.test.js +0 -46
  586. package/clis/36kr/hot.js +0 -87
  587. package/clis/36kr/hot.test.js +0 -15
  588. package/clis/36kr/news.js +0 -52
  589. package/clis/36kr/news.test.js +0 -85
  590. package/clis/36kr/search.js +0 -79
  591. package/clis/51job/company.js +0 -126
  592. package/clis/51job/detail.js +0 -109
  593. package/clis/51job/hot.js +0 -56
  594. package/clis/51job/search.js +0 -80
  595. package/clis/51job/utils.js +0 -302
  596. package/clis/51job/utils.test.js +0 -69
  597. package/clis/aibase/news.js +0 -110
  598. package/clis/aibase/news.test.js +0 -59
  599. package/clis/autohome/__fixtures__/catalog.html +0 -11
  600. package/clis/autohome/__fixtures__/koubei.json +0 -116
  601. package/clis/autohome/autohome.test.js +0 -115
  602. package/clis/autohome/brand.js +0 -108
  603. package/clis/autohome/score.js +0 -103
  604. package/clis/autohome/utils.js +0 -157
  605. package/clis/baidu-scholar/search.js +0 -87
  606. package/clis/baidu-scholar/search.test.js +0 -23
  607. package/clis/bilibili/auth.js +0 -36
  608. package/clis/bilibili/comment.js +0 -107
  609. package/clis/bilibili/comment.test.js +0 -153
  610. package/clis/bilibili/comments.js +0 -136
  611. package/clis/bilibili/comments.test.js +0 -142
  612. package/clis/bilibili/download.js +0 -178
  613. package/clis/bilibili/download.test.js +0 -173
  614. package/clis/bilibili/dynamic.js +0 -34
  615. package/clis/bilibili/dynamic.test.js +0 -68
  616. package/clis/bilibili/favorite.js +0 -47
  617. package/clis/bilibili/feed.js +0 -220
  618. package/clis/bilibili/follow.js +0 -140
  619. package/clis/bilibili/follow.test.js +0 -203
  620. package/clis/bilibili/following.js +0 -44
  621. package/clis/bilibili/history.js +0 -45
  622. package/clis/bilibili/hot.js +0 -40
  623. package/clis/bilibili/hot.test.js +0 -17
  624. package/clis/bilibili/me.js +0 -13
  625. package/clis/bilibili/ranking.js +0 -25
  626. package/clis/bilibili/search.js +0 -24
  627. package/clis/bilibili/subtitle.js +0 -141
  628. package/clis/bilibili/subtitle.test.js +0 -240
  629. package/clis/bilibili/summary.js +0 -167
  630. package/clis/bilibili/summary.test.js +0 -210
  631. package/clis/bilibili/unfollow.js +0 -121
  632. package/clis/bilibili/user-videos.js +0 -39
  633. package/clis/bilibili/utils.js +0 -273
  634. package/clis/bilibili/utils.test.js +0 -97
  635. package/clis/bilibili/video.js +0 -155
  636. package/clis/bilibili/video.test.js +0 -308
  637. package/clis/boss/auth.js +0 -47
  638. package/clis/boss/batchgreet.js +0 -61
  639. package/clis/boss/chatlist.js +0 -116
  640. package/clis/boss/chatlist.test.js +0 -211
  641. package/clis/boss/chatmsg.js +0 -117
  642. package/clis/boss/chatmsg.test.js +0 -230
  643. package/clis/boss/detail.js +0 -63
  644. package/clis/boss/exchange.js +0 -46
  645. package/clis/boss/greet.js +0 -49
  646. package/clis/boss/invite.js +0 -64
  647. package/clis/boss/joblist.js +0 -31
  648. package/clis/boss/mark.js +0 -70
  649. package/clis/boss/recommend.js +0 -45
  650. package/clis/boss/resume.js +0 -150
  651. package/clis/boss/search.js +0 -197
  652. package/clis/boss/search.test.js +0 -78
  653. package/clis/boss/send.js +0 -44
  654. package/clis/boss/stats.js +0 -66
  655. package/clis/boss/utils.js +0 -468
  656. package/clis/boss/utils.test.js +0 -34
  657. package/clis/chaoxing/assignments.js +0 -76
  658. package/clis/chaoxing/auth.js +0 -54
  659. package/clis/chaoxing/exams.js +0 -75
  660. package/clis/chaoxing/utils.js +0 -223
  661. package/clis/chaoxing/utils.test.js +0 -45
  662. package/clis/cnki/search.js +0 -61
  663. package/clis/cnki/search.test.js +0 -18
  664. package/clis/ctrip/auth.js +0 -50
  665. package/clis/ctrip/ctrip.test.js +0 -719
  666. package/clis/ctrip/flight.js +0 -136
  667. package/clis/ctrip/hotel-search.js +0 -132
  668. package/clis/ctrip/hotel-suggest.js +0 -45
  669. package/clis/ctrip/search.js +0 -41
  670. package/clis/ctrip/utils.js +0 -473
  671. package/clis/deepseek/ask.js +0 -158
  672. package/clis/deepseek/ask.test.js +0 -399
  673. package/clis/deepseek/auth.js +0 -54
  674. package/clis/deepseek/detail.js +0 -46
  675. package/clis/deepseek/detail.test.js +0 -81
  676. package/clis/deepseek/history.js +0 -27
  677. package/clis/deepseek/new.js +0 -33
  678. package/clis/deepseek/read.js +0 -25
  679. package/clis/deepseek/send.js +0 -140
  680. package/clis/deepseek/send.test.js +0 -107
  681. package/clis/deepseek/status.js +0 -26
  682. package/clis/deepseek/utils.js +0 -487
  683. package/clis/deepseek/utils.test.js +0 -370
  684. package/clis/dianping/__fixtures__/search.html +0 -168
  685. package/clis/dianping/__fixtures__/shop.html +0 -6
  686. package/clis/dianping/auth.js +0 -49
  687. package/clis/dianping/cityResolver.js +0 -185
  688. package/clis/dianping/dianping.test.js +0 -578
  689. package/clis/dianping/search.js +0 -157
  690. package/clis/dianping/shop.js +0 -173
  691. package/clis/dianping/utils.js +0 -157
  692. package/clis/dongchedi/__fixtures__/search.json +0 -60
  693. package/clis/dongchedi/__fixtures__/series-detail.json +0 -911
  694. package/clis/dongchedi/__fixtures__/series-score.json +0 -1396
  695. package/clis/dongchedi/dongchedi.test.js +0 -191
  696. package/clis/dongchedi/koubei.js +0 -85
  697. package/clis/dongchedi/models.js +0 -91
  698. package/clis/dongchedi/score.js +0 -83
  699. package/clis/dongchedi/search.js +0 -83
  700. package/clis/dongchedi/series.js +0 -87
  701. package/clis/dongchedi/specs.js +0 -115
  702. package/clis/dongchedi/utils.js +0 -180
  703. package/clis/douban/auth.js +0 -50
  704. package/clis/douban/book-hot.js +0 -15
  705. package/clis/douban/download.js +0 -68
  706. package/clis/douban/download.test.js +0 -170
  707. package/clis/douban/marks.js +0 -116
  708. package/clis/douban/movie-hot.js +0 -15
  709. package/clis/douban/movie-hot.test.js +0 -14
  710. package/clis/douban/photos.js +0 -35
  711. package/clis/douban/reviews.js +0 -107
  712. package/clis/douban/search.js +0 -18
  713. package/clis/douban/search.test.js +0 -11
  714. package/clis/douban/subject.js +0 -46
  715. package/clis/douban/subject.test.js +0 -11
  716. package/clis/douban/top250.js +0 -68
  717. package/clis/douban/utils.js +0 -657
  718. package/clis/douban/utils.test.js +0 -488
  719. package/clis/doubao/ask.js +0 -40
  720. package/clis/doubao/auth.js +0 -66
  721. package/clis/doubao/detail.js +0 -35
  722. package/clis/doubao/detail.test.js +0 -42
  723. package/clis/doubao/history.js +0 -30
  724. package/clis/doubao/history.test.js +0 -37
  725. package/clis/doubao/meeting-summary.js +0 -41
  726. package/clis/doubao/meeting-transcript.js +0 -38
  727. package/clis/doubao/new.js +0 -22
  728. package/clis/doubao/read.js +0 -21
  729. package/clis/doubao/send.js +0 -24
  730. package/clis/doubao/status.js +0 -26
  731. package/clis/doubao/utils.js +0 -1156
  732. package/clis/doubao/utils.test.js +0 -396
  733. package/clis/doubao-app/ask.js +0 -54
  734. package/clis/doubao-app/dump.js +0 -25
  735. package/clis/doubao-app/new.js +0 -21
  736. package/clis/doubao-app/read.js +0 -19
  737. package/clis/doubao-app/screenshot.js +0 -19
  738. package/clis/doubao-app/send.js +0 -28
  739. package/clis/doubao-app/status.js +0 -17
  740. package/clis/doubao-app/utils.js +0 -110
  741. package/clis/douyin/_shared/browser-fetch.js +0 -66
  742. package/clis/douyin/_shared/browser-fetch.test.js +0 -64
  743. package/clis/douyin/_shared/creation-id.js +0 -5
  744. package/clis/douyin/_shared/creation-id.test.js +0 -22
  745. package/clis/douyin/_shared/evaluate-result.js +0 -16
  746. package/clis/douyin/_shared/imagex-upload.js +0 -53
  747. package/clis/douyin/_shared/imagex-upload.test.js +0 -87
  748. package/clis/douyin/_shared/public-api.js +0 -29
  749. package/clis/douyin/_shared/sts2.js +0 -21
  750. package/clis/douyin/_shared/sts2.test.js +0 -27
  751. package/clis/douyin/_shared/text-extra.js +0 -15
  752. package/clis/douyin/_shared/text-extra.test.js +0 -37
  753. package/clis/douyin/_shared/timing.js +0 -22
  754. package/clis/douyin/_shared/timing.test.js +0 -28
  755. package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
  756. package/clis/douyin/_shared/tos-upload.js +0 -331
  757. package/clis/douyin/_shared/tos-upload.test.js +0 -229
  758. package/clis/douyin/_shared/transcode.js +0 -45
  759. package/clis/douyin/_shared/transcode.test.js +0 -91
  760. package/clis/douyin/_shared/vod-upload.js +0 -212
  761. package/clis/douyin/_shared/vod-upload.test.js +0 -38
  762. package/clis/douyin/activities.js +0 -23
  763. package/clis/douyin/activities.test.js +0 -55
  764. package/clis/douyin/auth.js +0 -39
  765. package/clis/douyin/collections.js +0 -23
  766. package/clis/douyin/collections.test.js +0 -45
  767. package/clis/douyin/delete.js +0 -152
  768. package/clis/douyin/delete.test.js +0 -100
  769. package/clis/douyin/draft.js +0 -355
  770. package/clis/douyin/draft.test.js +0 -335
  771. package/clis/douyin/drafts.js +0 -24
  772. package/clis/douyin/drafts.test.js +0 -11
  773. package/clis/douyin/hashtag.js +0 -114
  774. package/clis/douyin/hashtag.test.js +0 -171
  775. package/clis/douyin/location.js +0 -25
  776. package/clis/douyin/location.test.js +0 -23
  777. package/clis/douyin/profile.js +0 -29
  778. package/clis/douyin/profile.test.js +0 -46
  779. package/clis/douyin/publish-upload-id.test.js +0 -206
  780. package/clis/douyin/publish.js +0 -341
  781. package/clis/douyin/publish.test.js +0 -38
  782. package/clis/douyin/search.js +0 -308
  783. package/clis/douyin/search.test.js +0 -307
  784. package/clis/douyin/stats.js +0 -28
  785. package/clis/douyin/stats.test.js +0 -22
  786. package/clis/douyin/update.js +0 -32
  787. package/clis/douyin/update.test.js +0 -11
  788. package/clis/douyin/user-videos.js +0 -82
  789. package/clis/douyin/user-videos.test.js +0 -151
  790. package/clis/douyin/videos.js +0 -52
  791. package/clis/douyin/videos.test.js +0 -54
  792. package/clis/eastmoney/_secid.js +0 -78
  793. package/clis/eastmoney/announcement.js +0 -53
  794. package/clis/eastmoney/convertible.js +0 -74
  795. package/clis/eastmoney/etf.js +0 -66
  796. package/clis/eastmoney/holders.js +0 -79
  797. package/clis/eastmoney/hot-rank.js +0 -51
  798. package/clis/eastmoney/hot-rank.test.js +0 -59
  799. package/clis/eastmoney/index-board.js +0 -97
  800. package/clis/eastmoney/kline.js +0 -88
  801. package/clis/eastmoney/kuaixun.js +0 -55
  802. package/clis/eastmoney/longhu.js +0 -68
  803. package/clis/eastmoney/money-flow.js +0 -79
  804. package/clis/eastmoney/northbound.js +0 -58
  805. package/clis/eastmoney/quote.js +0 -108
  806. package/clis/eastmoney/rank.js +0 -95
  807. package/clis/eastmoney/sectors.js +0 -77
  808. package/clis/flomo/auth.js +0 -55
  809. package/clis/flomo/memos.js +0 -228
  810. package/clis/flomo/memos.test.js +0 -144
  811. package/clis/gitee/auth.js +0 -41
  812. package/clis/gitee/index.js +0 -3
  813. package/clis/gitee/search.js +0 -137
  814. package/clis/gitee/search.test.js +0 -65
  815. package/clis/gitee/trending.js +0 -568
  816. package/clis/gitee/user.js +0 -200
  817. package/clis/gitee/user.test.js +0 -63
  818. package/clis/gov-law/commands.test.js +0 -39
  819. package/clis/gov-law/recent.js +0 -22
  820. package/clis/gov-law/search.js +0 -41
  821. package/clis/gov-law/shared.js +0 -51
  822. package/clis/gov-policy/__fixtures__/recent.html +0 -16
  823. package/clis/gov-policy/__fixtures__/search.html +0 -41
  824. package/clis/gov-policy/gov-policy.test.js +0 -224
  825. package/clis/gov-policy/recent.js +0 -90
  826. package/clis/gov-policy/search.js +0 -91
  827. package/clis/gov-policy/utils.js +0 -54
  828. package/clis/guazi/__fixtures__/detail.html +0 -7
  829. package/clis/guazi/__fixtures__/list.html +0 -5
  830. package/clis/guazi/browse.js +0 -95
  831. package/clis/guazi/car.js +0 -110
  832. package/clis/guazi/guazi.test.js +0 -126
  833. package/clis/guazi/utils.js +0 -133
  834. package/clis/huodongxing/events.js +0 -322
  835. package/clis/huodongxing/events.test.js +0 -296
  836. package/clis/hupu/__fixtures__/hot-home.html +0 -64
  837. package/clis/hupu/auth.js +0 -47
  838. package/clis/hupu/detail.js +0 -72
  839. package/clis/hupu/hot.js +0 -163
  840. package/clis/hupu/hot.test.js +0 -224
  841. package/clis/hupu/like.js +0 -76
  842. package/clis/hupu/mentions.js +0 -160
  843. package/clis/hupu/reply.js +0 -72
  844. package/clis/hupu/search.js +0 -60
  845. package/clis/hupu/unlike.js +0 -76
  846. package/clis/hupu/utils.js +0 -319
  847. package/clis/jd/add-cart.js +0 -72
  848. package/clis/jd/auth.js +0 -46
  849. package/clis/jd/cart.js +0 -80
  850. package/clis/jd/commands.test.js +0 -41
  851. package/clis/jd/detail.js +0 -63
  852. package/clis/jd/item.js +0 -730
  853. package/clis/jd/item.test.js +0 -354
  854. package/clis/jd/item.test.ts +0 -517
  855. package/clis/jd/reviews.js +0 -55
  856. package/clis/jd/search.js +0 -66
  857. package/clis/jianyu/auth.js +0 -62
  858. package/clis/jianyu/detail.js +0 -21
  859. package/clis/jianyu/search.js +0 -634
  860. package/clis/jianyu/search.test.js +0 -153
  861. package/clis/jianyu/shared/china-bid-search.js +0 -165
  862. package/clis/jianyu/shared/procurement-contract.js +0 -324
  863. package/clis/jianyu/shared/procurement-contract.test.js +0 -72
  864. package/clis/jianyu/shared/procurement-detail.js +0 -107
  865. package/clis/jianyu/shared/procurement-detail.test.js +0 -84
  866. package/clis/jike/auth.js +0 -48
  867. package/clis/jike/comment.js +0 -107
  868. package/clis/jike/create.js +0 -106
  869. package/clis/jike/feed.js +0 -68
  870. package/clis/jike/like.js +0 -61
  871. package/clis/jike/notifications.js +0 -169
  872. package/clis/jike/post.js +0 -72
  873. package/clis/jike/read.test.js +0 -86
  874. package/clis/jike/repost.js +0 -103
  875. package/clis/jike/search.js +0 -68
  876. package/clis/jike/topic.js +0 -65
  877. package/clis/jike/user.js +0 -65
  878. package/clis/jike/utils.js +0 -25
  879. package/clis/jimeng/auth.js +0 -46
  880. package/clis/jimeng/generate.js +0 -84
  881. package/clis/jimeng/history.js +0 -48
  882. package/clis/jimeng/new.js +0 -44
  883. package/clis/jimeng/workspaces.js +0 -42
  884. package/clis/juejin/hot.js +0 -37
  885. package/clis/juejin/juejin.test.js +0 -241
  886. package/clis/juejin/recommend.js +0 -61
  887. package/clis/juejin/utils.js +0 -199
  888. package/clis/ke/auth.js +0 -46
  889. package/clis/ke/chengjiao.js +0 -78
  890. package/clis/ke/ershoufang.js +0 -101
  891. package/clis/ke/utils.js +0 -104
  892. package/clis/ke/xiaoqu.js +0 -78
  893. package/clis/ke/zufang.js +0 -95
  894. package/clis/kimi/_utils.js +0 -110
  895. package/clis/kimi/audit-extras.js +0 -268
  896. package/clis/kimi/auth.js +0 -57
  897. package/clis/kimi/chat.js +0 -470
  898. package/clis/kimi/kimi.test.js +0 -187
  899. package/clis/kimi/storage.js +0 -169
  900. package/clis/kimi/ui.js +0 -314
  901. package/clis/kimi/usage.js +0 -144
  902. package/clis/linux-do/auth.js +0 -55
  903. package/clis/linux-do/categories.js +0 -50
  904. package/clis/linux-do/feed.js +0 -395
  905. package/clis/linux-do/feed.test.js +0 -153
  906. package/clis/linux-do/search.js +0 -29
  907. package/clis/linux-do/tags.js +0 -28
  908. package/clis/linux-do/topic-content.js +0 -155
  909. package/clis/linux-do/topic-content.test.js +0 -59
  910. package/clis/linux-do/topic.js +0 -53
  911. package/clis/linux-do/user-posts.js +0 -57
  912. package/clis/linux-do/user-topics.js +0 -37
  913. package/clis/maimai/auth.js +0 -47
  914. package/clis/maimai/search-talents.js +0 -192
  915. package/clis/maimai/search-talents.test.js +0 -29
  916. package/clis/mubu/doc.js +0 -41
  917. package/clis/mubu/docs.js +0 -44
  918. package/clis/mubu/notes.js +0 -245
  919. package/clis/mubu/recent.js +0 -28
  920. package/clis/mubu/search.js +0 -63
  921. package/clis/mubu/utils.js +0 -304
  922. package/clis/nowcoder/auth.js +0 -65
  923. package/clis/nowcoder/companies.js +0 -24
  924. package/clis/nowcoder/creators.js +0 -28
  925. package/clis/nowcoder/detail.js +0 -62
  926. package/clis/nowcoder/experience.js +0 -37
  927. package/clis/nowcoder/hot.js +0 -25
  928. package/clis/nowcoder/jobs.js +0 -22
  929. package/clis/nowcoder/notifications.js +0 -30
  930. package/clis/nowcoder/papers.js +0 -41
  931. package/clis/nowcoder/practice.js +0 -38
  932. package/clis/nowcoder/recommend.js +0 -31
  933. package/clis/nowcoder/referral.js +0 -40
  934. package/clis/nowcoder/salary.js +0 -41
  935. package/clis/nowcoder/search.js +0 -50
  936. package/clis/nowcoder/suggest.js +0 -34
  937. package/clis/nowcoder/topics.js +0 -28
  938. package/clis/nowcoder/trending.js +0 -26
  939. package/clis/ones/common.js +0 -144
  940. package/clis/ones/enrich-tasks.js +0 -37
  941. package/clis/ones/login.js +0 -81
  942. package/clis/ones/logout.js +0 -18
  943. package/clis/ones/me.js +0 -31
  944. package/clis/ones/my-tasks.js +0 -121
  945. package/clis/ones/resolve-labels.js +0 -64
  946. package/clis/ones/task-helpers.js +0 -212
  947. package/clis/ones/task-helpers.test.js +0 -12
  948. package/clis/ones/task.js +0 -67
  949. package/clis/ones/tasks.js +0 -80
  950. package/clis/ones/token-info.js +0 -43
  951. package/clis/ones/worklog.js +0 -268
  952. package/clis/ones/worklog.test.js +0 -20
  953. package/clis/powerchina/auth.js +0 -52
  954. package/clis/powerchina/search.js +0 -251
  955. package/clis/powerchina/search.test.js +0 -93
  956. package/clis/quark/auth.js +0 -47
  957. package/clis/quark/ls.js +0 -64
  958. package/clis/quark/mkdir.js +0 -37
  959. package/clis/quark/mv.js +0 -54
  960. package/clis/quark/rename.js +0 -27
  961. package/clis/quark/rm.js +0 -25
  962. package/clis/quark/save.js +0 -81
  963. package/clis/quark/share-tree.js +0 -46
  964. package/clis/quark/utils.js +0 -146
  965. package/clis/quark/utils.test.js +0 -58
  966. package/clis/qwen/ask.js +0 -104
  967. package/clis/qwen/ask.test.js +0 -36
  968. package/clis/qwen/auth.js +0 -56
  969. package/clis/qwen/detail.js +0 -62
  970. package/clis/qwen/history.js +0 -61
  971. package/clis/qwen/image.js +0 -179
  972. package/clis/qwen/new.js +0 -23
  973. package/clis/qwen/read.js +0 -41
  974. package/clis/qwen/send.js +0 -55
  975. package/clis/qwen/status.js +0 -37
  976. package/clis/qwen/utils.js +0 -461
  977. package/clis/qwen/utils.test.js +0 -128
  978. package/clis/rednote/auth.js +0 -52
  979. package/clis/rednote/comments.js +0 -85
  980. package/clis/rednote/download.js +0 -59
  981. package/clis/rednote/feed.js +0 -27
  982. package/clis/rednote/navigation.test.js +0 -26
  983. package/clis/rednote/note.js +0 -68
  984. package/clis/rednote/notifications.js +0 -139
  985. package/clis/rednote/rednote.test.js +0 -240
  986. package/clis/rednote/search.js +0 -107
  987. package/clis/rednote/user.js +0 -55
  988. package/clis/sinablog/article.js +0 -15
  989. package/clis/sinablog/hot.js +0 -15
  990. package/clis/sinablog/search.js +0 -52
  991. package/clis/sinablog/user.js +0 -16
  992. package/clis/sinablog/utils.js +0 -186
  993. package/clis/sinafinance/news.js +0 -62
  994. package/clis/sinafinance/rolling-news.js +0 -41
  995. package/clis/sinafinance/stock-rank.js +0 -66
  996. package/clis/sinafinance/stock.js +0 -121
  997. package/clis/sinafinance/stock.test.js +0 -59
  998. package/clis/smzdm/search.js +0 -149
  999. package/clis/smzdm/search.test.js +0 -114
  1000. package/clis/taobao/add-cart.js +0 -150
  1001. package/clis/taobao/auth.js +0 -58
  1002. package/clis/taobao/cart.js +0 -96
  1003. package/clis/taobao/commands.test.js +0 -41
  1004. package/clis/taobao/detail.js +0 -71
  1005. package/clis/taobao/reviews.js +0 -77
  1006. package/clis/taobao/search.js +0 -97
  1007. package/clis/tdx/hot-rank.js +0 -48
  1008. package/clis/tdx/hot-rank.test.js +0 -59
  1009. package/clis/ths/hot-rank.js +0 -50
  1010. package/clis/ths/hot-rank.test.js +0 -64
  1011. package/clis/tieba/commands.test.js +0 -79
  1012. package/clis/tieba/hot.js +0 -48
  1013. package/clis/tieba/posts.js +0 -86
  1014. package/clis/tieba/read.js +0 -141
  1015. package/clis/tieba/search.js +0 -109
  1016. package/clis/tieba/utils.js +0 -240
  1017. package/clis/tieba/utils.test.js +0 -290
  1018. package/clis/toutiao/articles.js +0 -55
  1019. package/clis/toutiao/auth.js +0 -70
  1020. package/clis/toutiao/hot.js +0 -63
  1021. package/clis/toutiao/toutiao.test.js +0 -378
  1022. package/clis/toutiao/utils.js +0 -161
  1023. package/clis/trae-cn/activity.js +0 -22
  1024. package/clis/trae-cn/approve.js +0 -52
  1025. package/clis/trae-cn/ask.js +0 -99
  1026. package/clis/trae-cn/dump.js +0 -5
  1027. package/clis/trae-cn/export.js +0 -40
  1028. package/clis/trae-cn/model.js +0 -22
  1029. package/clis/trae-cn/new.js +0 -63
  1030. package/clis/trae-cn/read.js +0 -23
  1031. package/clis/trae-cn/screenshot.js +0 -5
  1032. package/clis/trae-cn/select-model.js +0 -25
  1033. package/clis/trae-cn/send.js +0 -23
  1034. package/clis/trae-cn/setup.js +0 -75
  1035. package/clis/trae-cn/status.js +0 -27
  1036. package/clis/trae-cn/targets.js +0 -96
  1037. package/clis/trae-cn/trae-cn.test.js +0 -412
  1038. package/clis/trae-cn/utils.js +0 -750
  1039. package/clis/trae-cn/watch.js +0 -119
  1040. package/clis/uisdc/news.js +0 -105
  1041. package/clis/uisdc/news.test.js +0 -66
  1042. package/clis/v2ex/auth.js +0 -44
  1043. package/clis/v2ex/daily.js +0 -99
  1044. package/clis/v2ex/hot.js +0 -26
  1045. package/clis/v2ex/latest.js +0 -26
  1046. package/clis/v2ex/me.js +0 -100
  1047. package/clis/v2ex/member.js +0 -28
  1048. package/clis/v2ex/node.js +0 -39
  1049. package/clis/v2ex/nodes.js +0 -26
  1050. package/clis/v2ex/notifications.js +0 -72
  1051. package/clis/v2ex/replies.js +0 -27
  1052. package/clis/v2ex/topic.js +0 -31
  1053. package/clis/v2ex/user.js +0 -34
  1054. package/clis/wanfang/search.js +0 -66
  1055. package/clis/wanfang/search.test.js +0 -23
  1056. package/clis/wechat-channels/auth.js +0 -62
  1057. package/clis/wechat-channels/publish.js +0 -732
  1058. package/clis/wechat-channels/publish.test.js +0 -144
  1059. package/clis/weibo/auth.js +0 -53
  1060. package/clis/weibo/comments.js +0 -53
  1061. package/clis/weibo/delete.js +0 -172
  1062. package/clis/weibo/delete.test.js +0 -94
  1063. package/clis/weibo/envelope.test.js +0 -85
  1064. package/clis/weibo/favorites.js +0 -170
  1065. package/clis/weibo/favorites.test.js +0 -114
  1066. package/clis/weibo/feed.js +0 -69
  1067. package/clis/weibo/hot.js +0 -39
  1068. package/clis/weibo/me.js +0 -75
  1069. package/clis/weibo/post.js +0 -75
  1070. package/clis/weibo/publish.js +0 -306
  1071. package/clis/weibo/publish.test.js +0 -192
  1072. package/clis/weibo/search.js +0 -80
  1073. package/clis/weibo/user-posts.js +0 -234
  1074. package/clis/weibo/user-posts.test.js +0 -92
  1075. package/clis/weibo/user.js +0 -63
  1076. package/clis/weibo/utils.js +0 -59
  1077. package/clis/weibo/utils.test.js +0 -36
  1078. package/clis/weixin/create-draft.js +0 -226
  1079. package/clis/weixin/download.js +0 -371
  1080. package/clis/weixin/download.test.js +0 -106
  1081. package/clis/weixin/drafts.js +0 -66
  1082. package/clis/weixin/drafts.test.js +0 -69
  1083. package/clis/weixin/search.js +0 -157
  1084. package/clis/weixin/search.test.js +0 -227
  1085. package/clis/weread/ai-outline.js +0 -171
  1086. package/clis/weread/ai-outline.test.js +0 -83
  1087. package/clis/weread/auth.js +0 -59
  1088. package/clis/weread/book-search.js +0 -438
  1089. package/clis/weread/book-search.test.js +0 -242
  1090. package/clis/weread/book.js +0 -233
  1091. package/clis/weread/commands.test.js +0 -398
  1092. package/clis/weread/highlights.js +0 -24
  1093. package/clis/weread/notebooks.js +0 -22
  1094. package/clis/weread/notes.js +0 -30
  1095. package/clis/weread/private-api-regression.test.js +0 -369
  1096. package/clis/weread/ranking.js +0 -29
  1097. package/clis/weread/search-regression.test.js +0 -494
  1098. package/clis/weread/search.js +0 -186
  1099. package/clis/weread/shelf.js +0 -66
  1100. package/clis/weread/utils.js +0 -321
  1101. package/clis/weread/utils.test.js +0 -128
  1102. package/clis/weread-official/book.js +0 -135
  1103. package/clis/weread-official/commands.test.js +0 -385
  1104. package/clis/weread-official/discover.js +0 -107
  1105. package/clis/weread-official/list-apis.js +0 -95
  1106. package/clis/weread-official/notes.js +0 -171
  1107. package/clis/weread-official/readdata.js +0 -158
  1108. package/clis/weread-official/review.js +0 -93
  1109. package/clis/weread-official/search.js +0 -106
  1110. package/clis/weread-official/shelf.js +0 -97
  1111. package/clis/weread-official/utils.js +0 -293
  1112. package/clis/weread-official/utils.test.js +0 -242
  1113. package/clis/xianyu/auth.js +0 -68
  1114. package/clis/xianyu/chat.js +0 -74
  1115. package/clis/xianyu/chat.test.js +0 -84
  1116. package/clis/xianyu/im.js +0 -322
  1117. package/clis/xianyu/im.test.js +0 -253
  1118. package/clis/xianyu/inbox.js +0 -96
  1119. package/clis/xianyu/item.js +0 -153
  1120. package/clis/xianyu/item.test.js +0 -56
  1121. package/clis/xianyu/messages.js +0 -91
  1122. package/clis/xianyu/publish.js +0 -485
  1123. package/clis/xianyu/publish.test.js +0 -220
  1124. package/clis/xianyu/reply.js +0 -82
  1125. package/clis/xianyu/search.js +0 -262
  1126. package/clis/xianyu/search.test.js +0 -104
  1127. package/clis/xianyu/utils.js +0 -8
  1128. package/clis/xiaoe/auth.js +0 -55
  1129. package/clis/xiaoe/catalog.js +0 -227
  1130. package/clis/xiaoe/content.js +0 -175
  1131. package/clis/xiaoe/courses.js +0 -127
  1132. package/clis/xiaoe/detail.js +0 -36
  1133. package/clis/xiaoe/play-url.js +0 -121
  1134. package/clis/xiaoe/xiaoe.test.js +0 -486
  1135. package/clis/xiaohongshu/ask.js +0 -426
  1136. package/clis/xiaohongshu/ask.test.js +0 -271
  1137. package/clis/xiaohongshu/auth.js +0 -53
  1138. package/clis/xiaohongshu/collection-helpers.js +0 -283
  1139. package/clis/xiaohongshu/collection-helpers.test.js +0 -125
  1140. package/clis/xiaohongshu/comments.js +0 -228
  1141. package/clis/xiaohongshu/comments.test.js +0 -320
  1142. package/clis/xiaohongshu/creator-note-detail.js +0 -482
  1143. package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
  1144. package/clis/xiaohongshu/creator-notes-summary.js +0 -98
  1145. package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
  1146. package/clis/xiaohongshu/creator-notes.js +0 -479
  1147. package/clis/xiaohongshu/creator-notes.test.js +0 -281
  1148. package/clis/xiaohongshu/creator-profile.js +0 -55
  1149. package/clis/xiaohongshu/creator-stats.js +0 -76
  1150. package/clis/xiaohongshu/creator-stats.test.js +0 -24
  1151. package/clis/xiaohongshu/delete-note.js +0 -260
  1152. package/clis/xiaohongshu/delete-note.test.js +0 -172
  1153. package/clis/xiaohongshu/download.js +0 -249
  1154. package/clis/xiaohongshu/download.test.js +0 -339
  1155. package/clis/xiaohongshu/draft-clear.js +0 -91
  1156. package/clis/xiaohongshu/draft-delete.js +0 -103
  1157. package/clis/xiaohongshu/draft-open.js +0 -43
  1158. package/clis/xiaohongshu/draft-utils.js +0 -142
  1159. package/clis/xiaohongshu/drafts.js +0 -28
  1160. package/clis/xiaohongshu/drafts.test.js +0 -172
  1161. package/clis/xiaohongshu/feed.js +0 -163
  1162. package/clis/xiaohongshu/feed.test.js +0 -126
  1163. package/clis/xiaohongshu/follow.js +0 -226
  1164. package/clis/xiaohongshu/follow.test.js +0 -211
  1165. package/clis/xiaohongshu/liked.js +0 -29
  1166. package/clis/xiaohongshu/liked.test.js +0 -82
  1167. package/clis/xiaohongshu/navigation.test.js +0 -38
  1168. package/clis/xiaohongshu/note-helpers.js +0 -69
  1169. package/clis/xiaohongshu/note.js +0 -104
  1170. package/clis/xiaohongshu/note.test.js +0 -249
  1171. package/clis/xiaohongshu/notifications.js +0 -46
  1172. package/clis/xiaohongshu/publish.js +0 -1423
  1173. package/clis/xiaohongshu/publish.test.js +0 -1141
  1174. package/clis/xiaohongshu/saved.js +0 -29
  1175. package/clis/xiaohongshu/saved.test.js +0 -143
  1176. package/clis/xiaohongshu/search.js +0 -330
  1177. package/clis/xiaohongshu/search.test.js +0 -325
  1178. package/clis/xiaohongshu/unfollow.js +0 -285
  1179. package/clis/xiaohongshu/user-helpers.js +0 -78
  1180. package/clis/xiaohongshu/user-helpers.test.js +0 -160
  1181. package/clis/xiaohongshu/user.js +0 -140
  1182. package/clis/xiaohongshu/user.test.js +0 -141
  1183. package/clis/xiaoyuzhou/auth.js +0 -303
  1184. package/clis/xiaoyuzhou/auth.test.js +0 -124
  1185. package/clis/xiaoyuzhou/download.js +0 -54
  1186. package/clis/xiaoyuzhou/download.test.js +0 -135
  1187. package/clis/xiaoyuzhou/episode.js +0 -34
  1188. package/clis/xiaoyuzhou/podcast-episodes.js +0 -41
  1189. package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
  1190. package/clis/xiaoyuzhou/podcast.js +0 -33
  1191. package/clis/xiaoyuzhou/transcript.js +0 -77
  1192. package/clis/xiaoyuzhou/transcript.test.js +0 -195
  1193. package/clis/xiaoyuzhou/utils.js +0 -15
  1194. package/clis/xiaoyuzhou/utils.test.js +0 -39
  1195. package/clis/xueqiu/auth.js +0 -63
  1196. package/clis/xueqiu/comments.js +0 -355
  1197. package/clis/xueqiu/comments.test.js +0 -696
  1198. package/clis/xueqiu/danjuan-utils.js +0 -126
  1199. package/clis/xueqiu/danjuan-utils.test.js +0 -41
  1200. package/clis/xueqiu/earnings-date.js +0 -45
  1201. package/clis/xueqiu/feed.js +0 -39
  1202. package/clis/xueqiu/fund-holdings.js +0 -29
  1203. package/clis/xueqiu/fund-snapshot.js +0 -26
  1204. package/clis/xueqiu/groups.js +0 -23
  1205. package/clis/xueqiu/hot-stock.js +0 -32
  1206. package/clis/xueqiu/hot.js +0 -37
  1207. package/clis/xueqiu/kline.js +0 -44
  1208. package/clis/xueqiu/search.js +0 -37
  1209. package/clis/xueqiu/stock.js +0 -65
  1210. package/clis/xueqiu/utils.js +0 -48
  1211. package/clis/xueqiu/utils.test.js +0 -26
  1212. package/clis/xueqiu/watchlist.js +0 -37
  1213. package/clis/youdao/note.js +0 -258
  1214. package/clis/youdao/note.test.js +0 -99
  1215. package/clis/yuanbao/ask.js +0 -362
  1216. package/clis/yuanbao/ask.test.js +0 -124
  1217. package/clis/yuanbao/auth.js +0 -59
  1218. package/clis/yuanbao/detail.js +0 -65
  1219. package/clis/yuanbao/history.js +0 -51
  1220. package/clis/yuanbao/new.js +0 -72
  1221. package/clis/yuanbao/new.test.js +0 -30
  1222. package/clis/yuanbao/read.js +0 -38
  1223. package/clis/yuanbao/send.js +0 -57
  1224. package/clis/yuanbao/shared.js +0 -341
  1225. package/clis/yuanbao/shared.test.js +0 -80
  1226. package/clis/yuanbao/status.js +0 -44
  1227. package/clis/zhihu/answer-comments.js +0 -280
  1228. package/clis/zhihu/answer-comments.test.js +0 -287
  1229. package/clis/zhihu/answer-detail.js +0 -216
  1230. package/clis/zhihu/answer-detail.test.js +0 -338
  1231. package/clis/zhihu/answer.js +0 -54
  1232. package/clis/zhihu/answer.test.js +0 -54
  1233. package/clis/zhihu/auth.js +0 -59
  1234. package/clis/zhihu/collection.js +0 -199
  1235. package/clis/zhihu/collection.test.js +0 -337
  1236. package/clis/zhihu/collections.js +0 -128
  1237. package/clis/zhihu/collections.test.js +0 -182
  1238. package/clis/zhihu/comment.js +0 -55
  1239. package/clis/zhihu/comment.test.js +0 -50
  1240. package/clis/zhihu/download.js +0 -80
  1241. package/clis/zhihu/download.test.js +0 -12
  1242. package/clis/zhihu/favorite.js +0 -87
  1243. package/clis/zhihu/favorite.test.js +0 -59
  1244. package/clis/zhihu/follow.js +0 -50
  1245. package/clis/zhihu/follow.test.js +0 -42
  1246. package/clis/zhihu/followers.js +0 -40
  1247. package/clis/zhihu/followers.test.js +0 -42
  1248. package/clis/zhihu/following.js +0 -40
  1249. package/clis/zhihu/following.test.js +0 -44
  1250. package/clis/zhihu/hot.js +0 -44
  1251. package/clis/zhihu/like.js +0 -47
  1252. package/clis/zhihu/like.test.js +0 -41
  1253. package/clis/zhihu/paginate.js +0 -128
  1254. package/clis/zhihu/pins.js +0 -41
  1255. package/clis/zhihu/pins.test.js +0 -44
  1256. package/clis/zhihu/question.js +0 -113
  1257. package/clis/zhihu/question.test.js +0 -251
  1258. package/clis/zhihu/recommend.js +0 -103
  1259. package/clis/zhihu/recommend.test.js +0 -143
  1260. package/clis/zhihu/search.js +0 -206
  1261. package/clis/zhihu/search.test.js +0 -198
  1262. package/clis/zhihu/target.js +0 -91
  1263. package/clis/zhihu/target.test.js +0 -77
  1264. package/clis/zhihu/text.js +0 -29
  1265. package/clis/zhihu/text.test.js +0 -24
  1266. package/clis/zhihu/user-answers.js +0 -41
  1267. package/clis/zhihu/user-answers.test.js +0 -69
  1268. package/clis/zhihu/user-arg.js +0 -34
  1269. package/clis/zhihu/user-articles.js +0 -40
  1270. package/clis/zhihu/user-articles.test.js +0 -44
  1271. package/clis/zhihu/user.js +0 -59
  1272. package/clis/zhihu/user.test.js +0 -73
  1273. package/clis/zhihu/write-shared.js +0 -228
  1274. package/clis/zhihu/write-shared.test.js +0 -176
  1275. package/clis/zsxq/auth.js +0 -68
  1276. package/clis/zsxq/dynamics.js +0 -48
  1277. package/clis/zsxq/groups.js +0 -33
  1278. package/clis/zsxq/search.js +0 -44
  1279. package/clis/zsxq/search.test.js +0 -24
  1280. package/clis/zsxq/topic.js +0 -50
  1281. package/clis/zsxq/topic.test.js +0 -30
  1282. package/clis/zsxq/topics.js +0 -26
  1283. package/clis/zsxq/topics.test.js +0 -24
  1284. package/clis/zsxq/utils.js +0 -233
  1285. package/clis/zsxq/utils.test.js +0 -31
  1286. package/skills/webcmd-adapter-author/references/site-memory/bilibili.md +0 -70
  1287. package/skills/webcmd-adapter-author/references/site-memory/eastmoney.md +0 -70
  1288. package/skills/webcmd-adapter-author/references/site-memory/tonghuashun.md +0 -51
  1289. package/skills/webcmd-adapter-author/references/site-memory/xueqiu.md +0 -58
  1290. /package/{clis/douyin/_shared/types.js → dist/src/adapter-shadow.test.d.ts} +0 -0
@@ -1,660 +1,520 @@
1
- # Sitemap Schema Reference
1
+ # Sitemap Schema
2
2
 
3
- 详细 schema 规范。`SKILL.md` 给的是 inline 模板,本文件 spec 化字段、约束、validation 规则、跨文件引用格式。
3
+ This schema defines Webcmd site sitemaps. A sitemap is an agent-facing task graph, not an SEO crawl map.
4
4
 
5
- 进入条件:先读 `SKILL.md` 拿到 framing(task execution graph for agents)和两层存储模型。本文件展开**怎么写得对**。
5
+ The sitemap should help an agent answer:
6
6
 
7
- ## v1.1 changelog(vs v1)
7
+ - Where am I?
8
+ - What stable page state am I seeing?
9
+ - Which adapter should I prefer?
10
+ - Which browser actions are available?
11
+ - What fallback should I use when an adapter or remembered path fails?
12
+ - What memory is stale or risky?
8
13
 
9
- 12 patches,按主题分 3 组。验证基础:twitter PoC(12 files / webcmd-user)+ hackernews PoC(10 files / webcmd-质量官)双站。
14
+ ## 1. Storage And Loading
10
15
 
11
- **Group 1 Scope/boundary**(clarifications,不改 format)
12
- 1. §1.1 双语 / CJK token-per-char 比 English 高 30-50%,必要时拆 sub-file(不放宽 800)
13
- 2. §2.1 `auth_strategy` 取主体不取并集;例外靠 page-level `contract_strength` 区分
14
- 3. §2.5 `pitfalls.md` 只 task-executor 级;adapter-internal 坑回 `notes.md`
15
- 4. §2.5 pitfall id / trigger / workaround 全部 **task-executor 第一人称**视角
16
- 5. §2.4 `apis.md` entry 加 optional `notes:` 字段(GraphQL queryId path 等 meta)
17
- 6. §2.2 page `Linked APIs` 收集中可留空,**不要塞 fake id**
16
+ ### 1.1 Two-Layer Model
18
17
 
19
- **Group 2 — Reuse/compactness**(结构变化)
20
- 7. §2.2 + §4 partial 页面语义:`page_id` 以 `_` 前缀 + `url_patterns: []`,跨页通用 UI 抽到 partial
21
- 8. §3 action schema 加 Form B compact YAML(~80 token / action vs Form A markdown ~250)
22
- 9. §3 drop action-level `verified_at` / `source`,继承文件 frontmatter
18
+ Global seed:
23
19
 
24
- **Group 3 — Execution health/anchors**(action-level 语义)
25
- 10. §3.3 跨页 UI 原语 action 允许 adapter-first + DOM fallback 在单个 action 内(不强抬到 workflow 层)
26
- 11. §3.4 Recovery 加 `adapter_health_update:` directive + skill 实现 health 写回闭环
27
- 12. §2.2 `testid` 标 optional;`selector_pattern` 一等 anchor + 列 5 种合法形态 + 禁 `nth-child` / 单 class / 文案 selector
20
+ ```text
21
+ sitemaps/<site>/
22
+ ```
28
23
 
29
- 详细内容见各 section。
24
+ Local overlay:
30
25
 
31
- ---
26
+ ```text
27
+ ~/.webcmd/sites/<site>/sitemap/
28
+ ```
32
29
 
33
- ## 1. 文件层约束
30
+ Local overlay wins by stable id. If both layers define the same page, action, workflow, endpoint, or pitfall id, the local overlay version is used.
34
31
 
35
- ### 1.1 大小约束(agent token budget)
32
+ Write new discoveries locally first. Promote to global only after review.
36
33
 
37
- **每个 .md 文件 body ≤ 800 token**(不含 frontmatter)。超过必须拆。
34
+ ### 1.2 Recommended Layout
38
35
 
39
- 理由:agent 用 sitemap 是 lazy load 模式,只读"当前 page + 当前 workflow + 必要 pitfalls"。单文件大 → agent context 被沉默打爆,特别是 compaction 之后 re-load 时。
36
+ ```text
37
+ sitemap/
38
+ SITE.md
39
+ pages/<page-id>.md
40
+ pages/_<partial>.md
41
+ workflows/<task-id>.md
42
+ apis.md
43
+ pitfalls.md
44
+ draft-<topic>.md
45
+ ```
40
46
 
41
- 实操:
42
- - 一个 page 有 > 8 个 action → 拆 `pages/<page>/index.md` + `pages/<page>/actions/<group>.md`
43
- - 一个 workflow 步骤多 → 拆主线 + `workflows/<task>/sub/<step>.md`
44
- - **双语 / CJK 内容 token-per-char 比 English 高 30-50%**:CJK 单字 ~0.7-1 token,加上术语混排实测一个 1.5KB 中文 markdown 文件就 ~1000 token。**必要时拆 sub-file 而非放宽 800 限制** — 软 target 必然漂,一年后会变 3000,lazy load 失效
47
+ Drafts must live under the `sitemap/` directory. Do not put drafts at `~/.webcmd/sites/<site>/sitemap.draft.md`; that path is invisible to sitemap availability detection.
45
48
 
46
- ### 1.2 Frontmatter(每文件必填)
49
+ ### 1.3 Size Target
47
50
 
48
- ```yaml
49
- ---
50
- schema_version: 1
51
- last_verified: 2026-06-02 # YYYY-MM-DD
52
- source: local | global # 标识所在存储层
53
- ---
54
- ```
51
+ Target each lazily loaded file at about 800 tokens. This is an optimization target and audit threshold, not a reason to split cohesive tiny docs into unreadable fragments.
55
52
 
56
- 字段 `schema_version` 用于未来 schema 迁移(v2 引入新字段时旧文件能识别)。
53
+ Guidance:
57
54
 
58
- ---
55
+ | File tokens | Decision |
56
+ | --- | --- |
57
+ | < 1500 | Usually fine. |
58
+ | 1500-3000 | Keep only if cohesive; split mixed topics. |
59
+ | > 3000 | Split into page, workflow, partial, or API files. |
59
60
 
60
- ## 2. 文件类型 schema
61
+ ## 2. Common Front Matter
61
62
 
62
- ### 2.1 `SITE.md`
63
+ Every sitemap file should start with YAML front matter:
63
64
 
64
65
  ```yaml
65
66
  ---
66
- schema_version: 1
67
- site: twitter.com
68
- last_verified: 2026-06-02
69
- source: global
70
- login_required: true
71
- auth_strategy: COOKIE_API # 引用 strategy-selection.md ladder
67
+ site: github
68
+ kind: site | page | partial | workflow | apis | pitfalls | draft
69
+ id: stable-id
70
+ status: verified | draft | stale
71
+ verified_at: YYYY-MM-DD
72
+ source: webcmd browser state | trace:<path> | adapter:<site>/<command>
72
73
  ---
73
-
74
- ## Overview
75
- <1-2 句站点定位,agent 看一眼就知道这是什么站>
76
-
77
- ## Top-level routes
78
- <URL pattern → page_id 映射,只列主干>
79
- - / → pages/home.md
80
- - /<user> → pages/profile.md
81
- - /search → pages/search.md
82
-
83
- ## Common goals
84
- <主要 user task → workflow 映射>
85
- - publish a post → workflows/publish.md
86
- - find user → workflows/search-user.md
87
- - export data → workflows/export.md
88
-
89
- ## Site-wide pitfalls
90
- <跨页通用坑,详细见 pitfalls.md>
91
- - requires login for most reads
92
- - "Latest" tab is time-sorted; "For You" is personalized
93
74
  ```
94
75
 
95
- **Required**: `Overview`, `Top-level routes`, `Common goals`
96
- **Optional**: `Site-wide pitfalls` (引用即可)
97
- **Frontmatter required**: `site`, `login_required`, `auth_strategy`
76
+ Field rules:
98
77
 
99
- `auth_strategy` 取值:`PUBLIC_API | COOKIE_API | PAGE_FETCH | INTERCEPT | DOM_STATE | UI_SELECTOR`,定义见 [`../../webcmd-adapter-author/references/strategy-selection.md`](../../webcmd-adapter-author/references/strategy-selection.md)。
78
+ | Field | Required | Meaning |
79
+ | --- | --- | --- |
80
+ | `site` | yes | Site id matching `webcmd <site>`. |
81
+ | `kind` | yes | File type. |
82
+ | `id` | yes | Stable id within kind. |
83
+ | `status` | yes | `verified`, `draft`, or `stale`. |
84
+ | `verified_at` | yes for verified/stale | Last date reality was checked. |
85
+ | `source` | yes | Evidence source. |
100
86
 
101
- **取主体不取并集**:`auth_strategy` 单值,覆盖该站绝大多数请求的策略。少数例外(如 twitter 公开 profile 可裸 fetch,主体仍是 COOKIE_API)在对应 page 的 `Linked APIs` section 里逐条标 `contract_strength` 区分,不靠 frontmatter 表达。array form 加复杂度无收益。
87
+ Do not describe unverified paths as `verified`.
102
88
 
103
- ### 2.2 `pages/<page-id>.md`
89
+ ## 3. `SITE.md`
104
90
 
105
- ```yaml
106
- ---
107
- schema_version: 1
108
- page_id: home
109
- url_patterns:
110
- - https://twitter.com/home
111
- - https://twitter.com/i/timeline
112
- purpose: main feed surface
113
- last_verified: 2026-06-02
114
- source: local
115
- ---
116
-
117
- ## Visual anchors
118
- <agent 用什么 anchor 确认"我在这页">
119
- - a11y: role=main, name="Home timeline"
120
- - text: "What's happening?" (compose prompt)
121
- - pattern: feed items have role=article
122
- - testid: [data-testid="primaryColumn"] # optional - 新站常用,老站可省
123
- - selector_pattern: tr.athing + tr.subtext # optional - structural / attribute selector,无 testid 的老站常用
124
-
125
- ## Actions on this page
126
- <可执行 action,按 stable id 命名>
91
+ Purpose: site-level orientation and route index.
127
92
 
128
- ### action:open_compose
129
- (详见下面 §3 Action schema)
93
+ Recommended sections:
130
94
 
131
- ### action:scroll_for_more
132
- ...
133
-
134
- ## Linked APIs
135
- <本页面触发的 endpoint id 列表,不复制 endpoint 内容>
136
- - endpoint_id: timeline_v2
137
- triggers_on: page load + infinite scroll
138
- - endpoint_id: notifications_count
139
- triggers_on: page load (silent poll)
140
-
141
- ## Page-specific pitfalls
142
- <只列本页独有坑>
143
- - compose dialog can be obscured by toast notifications
144
- ```
145
-
146
- **Required**: `Visual anchors`, `Actions on this page`
147
- **Optional**: `Linked APIs` (建议放,引用 `apis.md` 已注册的 endpoint id), `Page-specific pitfalls`
148
- **Frontmatter required**: `page_id`, `url_patterns` (array), `purpose`
95
+ ```md
96
+ # <site> Sitemap
149
97
 
150
- `page_id` 必须 stable — 不依赖 URL params / locale / A/B variant。命名建议 `home / search / profile / compose / settings` 这类语义化。
98
+ ## Purpose
151
99
 
152
- #### Visual anchors 类型(5 种)
100
+ What this site memory helps agents do.
153
101
 
154
- | 类型 | 何时用 | 例 |
155
- |---|---|---|
156
- | `a11y` | 现代站,role + name 稳定的 | `role=button name="Post"` |
157
- | `text` | 站点文案不漂的(少见,i18n 风险)| `"What's happening?"` |
158
- | `pattern` | 多元素重复模式 | `feed items have role=article` |
159
- | `testid` | **Optional** — 新站约定 `data-testid="..."` 的(Twitter / React 系新站常见)| `[data-testid="tweetTextarea_0"]` |
160
- | `selector_pattern` | **Optional, 但旧站必填**:structural / attribute selector,无 testid 时的稳定 fallback | `tr.athing[id="<id>"] + tr` |
102
+ ## Auth Assumptions
161
103
 
162
- `testid` 不存在的老站(HackerNews / 论坛系 / 政府站)`selector_pattern` 是一等 anchor 类型,不视为降级。a11y + selector_pattern 组合通常比 text 更稳。
104
+ - logged out:
105
+ - logged in:
106
+ - required profile/session:
163
107
 
164
- `selector_pattern` 的合法形态(按稳定性降序):
108
+ ## Top-level routes
165
109
 
166
- | 形态 | 例 | 何时用 |
167
- |---|---|---|
168
- | **id-anchored** | `tr.athing[id="<id>"]` | 元素有 stable id(HN story / DOM-stable comment 行) |
169
- | **sibling traversal** | `tr.athing + tr.subtext`, `~ a.morelink` | 元素本身无 stable handle,但 sibling 关系稳定 |
170
- | **attribute boundary** | `a[href^="item?id="]`, `a[href*="/status/"]` | 元素靠 URL pattern 区分(HN comments link / Twitter status link) |
171
- | **form name** | `input[name="title"]`, `textarea[name="text"]` | 老式 form,`name` attribute 几乎不漂 |
172
- | **ARIA** | `[role="article"]`, `[aria-label*="..."]` | semantic 锚点,跟 `a11y` 重叠但当 a11y 不够时 selector form 仍可作 anchor |
110
+ - /home -> pages/home.md
111
+ - /search -> pages/search.md
112
+ - /messages -> uncovered in this sitemap; agent must explore live
113
+ - /settings -> out of sitemap scope; agent must explore live
173
114
 
174
- **Discouraged**(高危 anchor):
115
+ ## Stable Page IDs
175
116
 
176
- - ❌ `tr.athing:nth-child(<rank>)` — rank ↔ nth-child 在多 row 模式下不等价(HN athing + subtext 双 row 就破了)
177
- - ❌ 单 class 抓(`.tweet`)— 同 class 多元素时点错
178
- - ❌ 文案 selector(`a:contains("Post")`)— i18n / rebrand 漂
117
+ - home
118
+ - search
119
+ - item
179
120
 
180
- 这些会触发 "verify 通过但点错 element" silent failure,**禁止**作为 stable anchor。
121
+ ## Adapter Preference
181
122
 
182
- #### `Linked APIs` 可留空
123
+ - Prefer `webcmd <site> <command>` for <task> when healthy.
124
+ - Fall back to browser workflow <workflow id> when suspect/broken.
125
+ ```
183
126
 
184
- `Linked APIs` 引用的 `endpoint_id` 必须存在于 `apis.md`(间接也在 `endpoints.json`)。如果该站 `endpoints.json` 还在收集中(如 twitter 32+ GraphQL operation 大部分没登记),page `Linked APIs` 留空合理,**不要塞 fake id 占位**。后续 adapter-author 补 `endpoints.json` 后再回填。
127
+ Top-level routes should include known uncovered routes. This tells agents that the route exists but the sitemap does not provide a path.
185
128
 
186
- #### Partial 页面(跨页通用 UI)
129
+ ## 4. Page Files
187
130
 
188
- 跨页通用 UI(如 tweet card 在 home / profile / status / notifications / bookmarks 都出现)抽到 partial 文件:
131
+ Path:
189
132
 
190
- - `page_id` 前缀 `_`(如 `_tweet_card`)标识为 partial
191
- - `url_patterns: []`(空数组,表示无独立 URL)
192
- - 其他 page 通过 `action:<id> in pages/_tweet_card.md` reference 这里的 action
193
- - partial 文件不算独立 page,但 schema 字段结构跟正常 page 一样
133
+ ```text
134
+ pages/<page-id>.md
135
+ ```
194
136
 
195
- 避免在多 page 复制相同 action,违反 SoT;也避免 arbitrary 把跨页 UI 塞给某个具体 page "拥有"。
137
+ Purpose: state signatures, actions, linked adapters, linked endpoints, and page-specific pitfalls.
196
138
 
197
- ### 2.3 `workflows/<task-id>.md`
139
+ Front matter:
198
140
 
199
141
  ```yaml
200
142
  ---
201
- schema_version: 1
202
- workflow_id: publish-post
203
- intent: publish a public post (text only)
204
- last_verified: 2026-06-02
205
- source: global
143
+ site: github
144
+ kind: page
145
+ id: repo
146
+ status: verified
147
+ verified_at: YYYY-MM-DD
148
+ source: webcmd browser state
149
+ url_patterns:
150
+ - https://github.com/*/*
151
+ state_signature:
152
+ - selector: main
153
+ - text: Code
154
+ - url: /<owner>/<repo>
206
155
  ---
207
-
208
- ## Goal
209
- <user-facing 描述,agent 用来匹配 user intent>
210
- Create a new public post on this site with text content.
211
-
212
- ## State signature
213
- <workflow 级 checkpoint,re-entry 时用来定位"走到哪一步了">
214
- - entry: any page on the site, logged in
215
- - success: post visible on author's timeline within 5s
216
-
217
- ## Best path
218
- adapter: webcmd twitter post
219
- adapter_health: healthy # healthy | suspect | broken
220
- preconditions:
221
- - logged_in
222
- - text content ready
223
- estimated_turns: 1
224
-
225
- ## Fallback path
226
- <adapter 不可用 / unhealthy 时的 browser workflow,引用 action id>
227
- 1. From any page → navigate to /home (or use current if already on /home)
228
- 2. Use action `open_compose` (see pages/home.md)
229
- 3. Type text into compose textarea
230
- 4. Use action `submit_post` (see pages/home.md)
231
-
232
- estimated_turns: 4
233
-
234
- ## Avoid
235
- <反模式 — 哪些路径浪费 turn / 触发 modal / 用不稳定 selector>
236
- - Manual clicking when adapter is healthy
237
- - Mobile site path (/m/...) — different DOM structure
238
- - Right-click context menu paths — locale-dependent
239
-
240
- ## Re-entry checkpoints
241
- <给定 browser state,agent 知道走到 workflow 哪一步>
242
- - on /home, compose dialog NOT visible → start from step 1
243
- - on /home, compose dialog visible → start from step 3
244
- - on /<user>/status/<id>, success indicator → done
245
-
246
- ## State validation
247
- <完成后怎么验证真的成功>
248
- - timeline shows new post within 5s
249
- - post URL accessible
250
- - post text matches submitted content
251
-
252
- ## Stale markers
253
- <known drift signals — agent 看到这些应该重新探测而不是相信本 workflow>
254
- - "Post" button text changed (i18n drift)
255
- - compose dialog moved to right sidebar (UI redesign 2026-Q3 rumor)
256
156
  ```
257
157
 
258
- **Required**: `Goal`, `State signature`, `Best path`, `Fallback path`, `Avoid`
259
- **Optional but recommended**: `Re-entry checkpoints`, `State validation`, `Stale markers`
260
- **Frontmatter required**: `workflow_id`, `intent`
158
+ Recommended sections:
261
159
 
262
- `adapter_health` enum:
263
- - `healthy`:adapter 30 天内 verified working,无 unresolved fix issue
264
- - `suspect`:adapter 存在但 last_verified 老于 30 天,或最近有 fix PR 还没 merge
265
- - `broken`:adapter 已知 broken,必须走 Fallback path
160
+ ```md
161
+ # Page: repo
266
162
 
267
- `adapter_health` 应该周期性 audit 更新(Phase 2 cron)。手写时建议保守标 `suspect`,验证过才标 `healthy`。
163
+ ## State Signature
268
164
 
269
- ### 2.4 `apis.md`
165
+ - URL matches:
166
+ - Stable selectors:
167
+ - Required text:
168
+ - Auth-dependent variants:
270
169
 
271
- ```yaml
272
- ---
273
- schema_version: 1
274
- last_verified: 2026-06-02
275
- source: local
276
- ---
170
+ ## Actions
277
171
 
278
- ## Endpoint index
172
+ ### action:<stable-id>
173
+ pre: <current page / state / auth requirements>
174
+ do: <agent action, adapter command, or semantic browser command>
175
+ post: <URL / state / output that proves success>
176
+ fail: <failure signal 1> | <failure signal 2>
177
+ recover: <fallback instruction>; adapter_health_update: <adapter> -> suspect
178
+ evidence: webcmd browser <cmd> or trace:<path>
279
179
 
280
- <endpoint_id trigger 映射,DO NOT 复制 endpoint URL/method/params/response — 那些在 `endpoints.json`>
180
+ ## Linked APIs
281
181
 
282
- ### endpoint:timeline_v2
283
- - triggers_on_pages: [home]
284
- - triggered_by_actions: [page_load, scroll_for_more]
285
- - contract_strength: internal-unstable
286
- - notes: GraphQL /i/api/graphql/{queryId}/HomeTimeline # optional - meta 信息(queryId 路径 / 已知 schema 变化)
182
+ - endpoint:<id> in apis.md
287
183
 
288
- ### endpoint:search_typeahead
289
- - triggers_on_pages: [search]
290
- - triggered_by_actions: [search_input_keystroke]
291
- - contract_strength: internal-unstable
184
+ ## Pitfalls
292
185
 
293
- ### endpoint:post_create
294
- - triggers_on_pages: [home, compose]
295
- - triggered_by_actions: [submit_post]
296
- - contract_strength: internal-unstable
186
+ - pitfall:<id> in pitfalls.md
297
187
  ```
298
188
 
299
- **Required per entry**:
300
- - `endpoint_id` — 必须存在于同站 `~/.webcmd/sites/<site>/endpoints.json`
301
- - `triggers_on_pages` — array of `page_id`
302
- - `triggered_by_actions` — array of `action:<stable-id>`
303
- - `contract_strength` — `stable | visible-ui | internal-unstable`,定义见 `strategy-selection.md`
189
+ ### 4.1 State Signature Rules
304
190
 
305
- **Optional per entry**:
306
- - `notes` — meta 信息(GraphQL queryId path、已知 schema 变化、特殊 auth 头)。**不要**复制 endpoint URL / method / params / response shape — 那些只在 `endpoints.json`
191
+ State signatures must be observable and minimal:
307
192
 
308
- **Forbidden**:
309
- - Endpoint URL / method / params / response shape(这些只在 `endpoints.json` 单一来源)
310
- - Auth detail(同上)
193
+ - URL pattern
194
+ - stable semantic selector
195
+ - accessibility label
196
+ - visible text that is unlikely to localize away
197
+ - known app state marker
311
198
 
312
- 理由:sitemap 是 navigation layer,endpoints.json 是 API layer。两层各自演进,避免双 stale。
199
+ Avoid:
313
200
 
314
- ### 2.5 `pitfalls.md`
201
+ - screenshot coordinates
202
+ - transient list indices like `[17]`
203
+ - exact randomized class names
204
+ - private user values
315
205
 
316
- ```yaml
317
- ---
318
- schema_version: 1
319
- last_verified: 2026-06-02
320
- source: local
321
- ---
322
-
323
- ## Site-specific pitfalls
324
-
325
- ### pitfall:login_wall_on_search
326
- trigger: searching without logged-in session
327
- symptom: redirected to /login
328
- workaround: check session before navigating to /search
329
- verified_at: 2026-06-02
330
-
331
- ### pitfall:infinite_scroll_throttle
332
- trigger: rapid scroll triggers > 5 timeline_v2 fetches
333
- symptom: rate_limit_429 response
334
- workaround: wait 2s between scrolls; or use cursor-based pagination
335
- verified_at: 2026-05-15
336
-
337
- ### pitfall:locale_button_drift
338
- trigger: site locale is non-English
339
- symptom: hardcoded "Post" / "Submit" text selectors fail
340
- workaround: use a11y role + aria-label instead of visible text
341
- verified_at: 2026-06-01
342
- ```
343
-
344
- **Required per entry**:
345
- - `pitfall_id` — stable id, **第一人称 task-executor 视角**("agent 调命令时会撞到" 视角,不是 "实现 adapter 的人会撞到" 视角)
346
- - `trigger` — what causes this,从 task-executor 视角描述("agent 想做 X 时" 而非 "adapter 实现里有 Y bug")
347
- - `symptom` — how agent observes the failure
348
- - `workaround` — what to do instead,task-executor 可执行(不是 "修 adapter")
349
- - `verified_at` — when last seen
350
-
351
- #### Scope(避免 sitemap 变杂物间)
352
-
353
- `pitfalls.md` 只放 **task-executor 级**坑 — 跑命令 / 操作页面会撞到的坑。**adapter-internal 实现坑**(queryId 解析 / envelope unwrap / bigint id / 字段 silent rename)放在 `~/.webcmd/sites/<site>/notes.md`,不进 sitemap。
206
+ ## 5. Partial Page Files
354
207
 
355
- 判断标准:
208
+ Path:
356
209
 
357
- | 坑的修复者是谁 | 落地 |
358
- |---|---|
359
- | 跑命令的 agent(标 `adapter_health=suspect` / 切 Fallback path / 等 cooldown) | `pitfalls.md`(task-executor 级) |
360
- | 写 adapter 的 agent(改解析逻辑 / 升级 queryId / 改字段路径) | `notes.md`(adapter-internal) |
361
-
362
- 反例(**不要**写进 pitfalls.md):
363
-
364
- ```md
365
- ### pitfall:queryid_rotation_breaks_adapter # ❌ adapter-internal naming
366
- - trigger: adapter 调 cookie-API endpoint,queryId 已 rotation # ❌ adapter 视角
367
- - workaround: adapter 升级 queryId path # ❌ task-executor 做不了
210
+ ```text
211
+ pages/_<partial>.md
368
212
  ```
369
213
 
370
- 正例:
214
+ Purpose: reusable UI primitives that appear on multiple pages.
371
215
 
372
- ```md
373
- ### pitfall:adapter_returns_empty_after_api_drift # ✅ task-executor naming
374
- - trigger: Best path adapter 返回 typed error 或空 result # ✅ agent 视角
375
- - workaround: 标 workflow adapter_health=suspect 走 Fallback path # ✅ task-executor 可执行
376
- ```
216
+ Front matter:
377
217
 
218
+ ```yaml
378
219
  ---
220
+ site: twitter
221
+ kind: partial
222
+ id: post-card
223
+ status: verified
224
+ verified_at: YYYY-MM-DD
225
+ source: webcmd browser state
226
+ url_patterns: []
227
+ scope_root: article[role="article"]
228
+ ---
229
+ ```
379
230
 
380
- ## 3. Action Schema(pages 内)
381
-
382
- 每个 page 的 actions section 包含若干 action 节点。**两种合法 form**,作者按需选:
383
-
384
- #### Form A: Markdown 详尽(适合复杂 action / 第一次编写)
231
+ Partial files must state the scope root.
385
232
 
386
233
  ```md
387
- ### action:<stable-id>
388
-
389
- Preconditions:
390
- - <current page / state / auth requirements>
391
-
392
- Do:
393
- - <agent action — preferably semantic browser command or existing adapter>
234
+ ## Scope Rule
394
235
 
395
- Postconditions:
396
- - <URL / state / output that proves success>
236
+ All selectors in this partial are scoped to `article[role="article"]`.
237
+ Do not use page-level first match.
238
+ ```
397
239
 
398
- Failure signals:
399
- - <how agent detects this edge no longer works>
240
+ Bad:
400
241
 
401
- Recovery:
402
- - <fallback action / re-state / re-find instruction>
403
- - adapter_health_update: <adapter command> -> suspect # OPTIONAL — see §3.3
242
+ ```yaml
243
+ do: click [data-testid="like"]
244
+ ```
404
245
 
405
- State signature: # OPTIONAL — for multi-step internal recovery
406
- url_pattern: <regex or exact match>
407
- dom_anchor: <a11y role+name OR semantic selector>
246
+ Good:
408
247
 
409
- Evidence:
410
- - observed_with: webcmd browser <session> <command>
411
- - trace: <path to trace artifact, optional>
248
+ ```yaml
249
+ do: click [data-testid="like"] in article[role="article"] (card scope)
412
250
  ```
413
251
 
414
- #### Form B: Compact YAML(首选,~80 token / action vs Markdown ~250)
252
+ Other page files may reference:
415
253
 
416
- ```yaml
417
- ### action:<stable-id>
418
- pre: <current page / state / auth requirements>
419
- do: <agent action, adapter or semantic browser command>
420
- post: <URL / state / output that proves success>
421
- fail: <failure signal 1> | <signal 2> | <signal 3>
422
- recover: <fallback instruction>; adapter_health_update: <adapter> -> suspect
423
- evidence: webcmd browser <cmd>
254
+ ```text
255
+ action:like in pages/_post-card.md
424
256
  ```
425
257
 
426
- 字段分隔符约定(避免 ambiguity):
258
+ ## 6. Workflow Files
427
259
 
428
- | 符号 | 用途 | 例 |
429
- |---|---|---|
430
- | `\|` | 多 failure signal 平级枚举("任一发生即视为失败")| `fail: button_not_found \| /flow/login redirect` |
431
- | `\|\|` | 多 do path / recovery path **fallback priority**("前者失败试后者")| `do: webcmd twitter like <url> \|\| click [data-testid="like"]` |
432
- | `;` | 多 recovery 指令 **sequential**("逐条执行")| `recover: adapter_health_update: webcmd twitter like -> suspect; dom_click within card scope` |
260
+ Path:
433
261
 
434
- 字段语义完全等价 Form A,**推荐 Form B**,密集站避免 verbose markdown 把 page 撑爆。
262
+ ```text
263
+ workflows/<task-id>.md
264
+ ```
435
265
 
436
- #### `verified_at` 由文件级 frontmatter `last_verified` 继承
266
+ Purpose: best path and fallback path for a user-facing task.
437
267
 
438
- **Form A / B 都不写 action-level `verified_at`** — 文件 frontmatter `last_verified` 已经覆盖该文件所有 action 的最新验证日期。重复写既是冗余又是 drift 源(10 个 action 各自 `verified_at: 2026-06-02` 改时容易漏 1-2 个)。
268
+ Front matter:
439
269
 
440
- `source: local | global` 也不在 action 内重复 — 文件位置已隐含。Form A 旧 `Evidence` block 简化为 `observed_with` + optional `trace`,丢 `verified_at` / `source`。
270
+ ```yaml
271
+ ---
272
+ site: github
273
+ kind: workflow
274
+ id: read-issue
275
+ status: verified
276
+ verified_at: YYYY-MM-DD
277
+ source: trace:<path>
278
+ ---
279
+ ```
441
280
 
442
- ### 3.1 字段说明
281
+ Recommended sections:
443
282
 
444
- **Preconditions**:列出 action 可执行的前置。
445
- - 一般是 page state("on /home")+ auth state("logged_in")+ UI state("compose dialog not yet open")
283
+ ```md
284
+ # Workflow: read-issue
285
+
286
+ ## Goal
446
287
 
447
- **Do**:实际操作。优先级:
448
- 1. 已有 adapter 命令(`webcmd twitter post`)
449
- 2. semantic browser command(`webcmd browser click "Post" button`)
450
- 3. 显式 selector(最后选项,写 stable anchor 不是裸 CSS)
288
+ Read an issue and extract title, author, body, labels, and comments.
451
289
 
452
- **Postconditions**:成功观察信号。必须具体 "page changed" 不算,"URL is /compose AND textarea is focused" 才算。
290
+ ## State Signature
453
291
 
454
- **Failure signals**:哪些观察等同"action 失败 / sitemap 漂"。
455
- - `login_wall_appears`
456
- - `upgrade_modal_opens_instead`
457
- - `button_not_found`
458
- - `URL_does_not_change_within_3s`
292
+ - Start:
293
+ - Resume checkpoint:
294
+ - Success:
459
295
 
460
- **Recovery**:失败时该做什么。
461
- - 链到 fallback path("use action `mobile_compose` from pages/mobile-home.md")
462
- - 或回 探测模式("re-run `find` for 'Post' button with a11y role=button")
463
- - 可含 `adapter_health_update:` directive(见 §3.3)
296
+ ## Best Path
464
297
 
465
- **State signature**(OPTIONAL):用于 action **内部多步骤**的 mid-flight re-entry。
466
- - 简单 action(单 click)不需要
467
- - 复杂 action("submit form" 包含 type + click + wait)建议加,agent 中断恢复时知道走到哪
468
- - 跟 workflow 级 state signature 区分:workflow signature 是 "走到 workflow 第几步",action signature 是 "action 内部第几步"
298
+ 1. Prefer `webcmd github issue ...` when adapter health is `healthy`.
299
+ 2. Verify output contains expected fields.
469
300
 
470
- **Evidence**:trust gate — 没 evidence 的 action 不能 promote 到 global。
471
- - `observed_with`:当时跑的命令(用于复现)
472
- - `trace`:optional,对复杂 action 建议附 trace artifact 路径
473
- - `verified_at` 不写在 action 里 — 继承文件 frontmatter `last_verified`
474
- - `source` 不写在 action 里 — 文件位置已隐含
301
+ ## Fallback Path
475
302
 
476
- ### 3.2 Action id 命名约定
303
+ on_adapter_fail:
304
+ - adapter_health_update: webcmd github issue -> suspect
305
+ - webcmd browser state
306
+ - action:open_issue in pages/repo.md
307
+ - action:extract_comments in pages/issue.md
477
308
 
478
- - 动词 + 名词:`open_compose / submit_post / scroll_for_more / dismiss_modal`
479
- - 不要 page-prefix:action 默认作用域是它所在的 page,不要写 `home_open_compose`
480
- - stable:跨 URL params / locale / A/B variant 都应稳定
309
+ ## Avoid
481
310
 
482
- ### 3.3 Action-level adapter-first 模式(跨页 UI 原语)
311
+ - paths that open modals unnecessarily
312
+ - selectors known to drift
313
+ - workflows requiring private data not needed for the task
483
314
 
484
- 对**跨页 UI 原语 action**(一般在 partial 里,如 `_tweet_card.md` 的 `like_tweet / repost_tweet / bookmark_tweet`),允许 `Do` 字段写 adapter-first + DOM fallback 二选一,**无需借 workflow 层 Best/Fallback 抬出去**:
315
+ ## Stale Markers
485
316
 
486
- ```yaml
487
- ### action:like_tweet
488
- pre: card visible AND (tweet_url known OR card permalink anchor extractable)
489
- do: webcmd twitter like <tweet-url> || click [data-testid="like"] (within card scope)
490
- post: testid 翻转 like -> unlike,icon 红色
491
- fail: testid 不变 | 弹 login modal
492
- recover: adapter_health_update: webcmd twitter like -> suspect; dom_click within card scope
493
- evidence: webcmd twitter like + webcmd browser click
317
+ - URL changed:
318
+ - selector missing:
319
+ - endpoint changed:
494
320
  ```
495
321
 
496
- 两层 routing 不冲突:
322
+ ## 7. `apis.md`
497
323
 
498
- - **workflow 层** `Best path / Fallback path` 处理"task 级别"(发推 vs 浏览 vs 搜索)
499
- - **action 层** adapter-first 处理"UI 原语级别"(点 like 按钮)
324
+ Purpose: references to endpoint ids already known in `~/.webcmd/sites/<site>/endpoints.json` or public docs.
500
325
 
501
- 不要为了 schema 纯粹性把 `like_tweet` 这种**单原子点击但 adapter DOM 稳**的 action 强行抬到 workflow 层 — 那会让"喜欢一条推文"变成一个独立 workflow,跟实际 task 颗粒度脱节。
326
+ Do not duplicate full endpoint schemas inside sitemap files.
502
327
 
503
- ### 3.4 `adapter_health_update` directive
328
+ Recommended shape:
504
329
 
505
- action `Recovery` 字段可包含 directive:
330
+ ```md
331
+ # APIs
506
332
 
507
- ```
508
- adapter_health_update: <adapter command> -> suspect | broken
333
+ ## endpoint:search
334
+
335
+ - memory: `~/.webcmd/sites/<site>/endpoints.json#search`
336
+ - used_by:
337
+ - workflows/search.md
338
+ - pages/search.md action:submit-search
339
+ - adapter: `webcmd <site> search`
340
+ - health: healthy | suspect | broken
341
+ - notes:
509
342
  ```
510
343
 
511
- 语义:当**本 action 因为该 adapter 失败而触发 Recovery**时,consumption skill(`webcmd-browser-sitemap`)必须:
344
+ If an endpoint is stale, mark it:
512
345
 
513
- 1. 在 local overlay 找到 reference 该 adapter 的 workflow(一般是 `Best path: adapter: <adapter command>` 的那条)
514
- 2. 改写 workflow 的 `adapter_health` 为 directive 指定的等级
515
- 3. **下个 agent** 读 workflow 看到 `adapter_health=suspect` → 直接走 Fallback path,不再盲 retry adapter
346
+ ```md
347
+ ## endpoint:search
516
348
 
517
- 这是 action 失败的**写侧闭环** — agent 失败后回写健康状态,避免下个 agent 重栽。
349
+ status: stale
350
+ reason: response shape no longer contains `items`
351
+ next: rerun api discovery section 1
352
+ ```
518
353
 
519
- 不写 directive 时,Recovery 只指导当前 agent 怎么 fallback,不影响其他 agent。带 directive = "我栽了,让我把这事告诉以后的 agent"。
354
+ ## 8. `pitfalls.md`
520
355
 
521
- **实现责任**:在 `webcmd-browser-sitemap` skill consumption loop 里。Schema 这里只 spec directive 写侧格式,不 spec 实现细节。
356
+ Purpose: durable failure modes and recovery notes.
522
357
 
523
- **Recovery 回 `healthy` 不在本 schema 范围**:`adapter_health` 从 `suspect` 回 `healthy` 的路径(TTL 自动衰减 / 跑 Fallback 成功后 probe Best path / 人工 reset)留给 `webcmd-browser-sitemap` skill spec 拍。本 PR 只定写侧("failed → suspect"),不定读侧("suspect → healthy")的恢复策略。
358
+ Recommended shape:
524
359
 
525
- ---
360
+ ```md
361
+ # Pitfalls
526
362
 
527
- ## 4. 跨文件引用
363
+ ## pitfall:<stable-id>
528
364
 
529
- sitemap 内部多文件互相引用。引用格式:
365
+ - symptom:
366
+ - cause:
367
+ - recovery:
368
+ - evidence:
369
+ - last_seen: YYYY-MM-DD
370
+ ```
530
371
 
531
- | 引用 | 格式 | 示例 |
532
- |---|---|---|
533
- | 引用 page | `pages/<page-id>.md` | `see pages/home.md` |
534
- | 引用 workflow | `workflows/<task-id>.md` | `see workflows/publish-post.md` |
535
- | 引用 action | `action:<stable-id> in pages/<page>.md` | `use action open_compose in pages/home.md` |
536
- | 引用 partial action | `action:<stable-id> in pages/_<partial>.md` | `use action like_tweet in pages/_tweet_card.md` |
537
- | 引用 endpoint | `endpoint:<endpoint-id> in apis.md` | `triggers endpoint:timeline_v2` |
538
- | 引用 pitfall | `pitfall:<pitfall-id> in pitfalls.md` | `see pitfall:login_wall_on_search` |
539
- | 引用 endpoints.json | endpoint_id 直接出现,假定 `endpoints.json` 有同 id | `endpoint_id: timeline_v2` |
372
+ Examples:
540
373
 
541
- **ID 唯一性**:
542
- - `page_id` / `workflow_id` / `pitfall_id` 在站点内全 sitemap 唯一
543
- - `action:<id>` 在所在 page 内唯一(不同 page 可以重名)
544
- - `endpoint_id` `endpoints.json` 同 id
374
+ - login page returns HTTP 200
375
+ - modal steals focus
376
+ - infinite scroll requires specific container scroll
377
+ - locale changes visible labels
378
+ - old adapter endpoint returns analytics data
545
379
 
546
- ---
380
+ Do not record private account values.
547
381
 
548
- ## 5. Two-layer storage 行为 spec
382
+ ## 9. Action Schema
549
383
 
550
- | 维度 | 行为 |
551
- |---|---|
552
- | Read order | local overlay 优先 → fallback global seed |
553
- | Conflict | 同 stable id 存在两层时,local 赢(用户的现实更权威)|
554
- | Promotion | local 累积 → 显式 PR → 进 global |
555
- | Demotion | 不存在 — global 永远不删除 entry,只标 stale |
556
- | 文件 missing | 任一层 missing 该文件,自动 fallback 另一层;都 missing → 该 page/workflow 视为不存在 |
384
+ Compact action schema:
557
385
 
558
- **Stable IDs 跨层匹配**:local 文件 `page_id: home` 跟 global 文件 `page_id: home` 是同一个,local 字段覆盖 global 字段。
386
+ ```yaml
387
+ ### action:<stable-id>
388
+ pre: <current page / state / auth requirements>
389
+ do: <agent action, adapter command, or semantic browser command>
390
+ post: <URL / state / output that proves success>
391
+ fail: <failure signal 1> | <failure signal 2>
392
+ recover: <fallback instruction>; adapter_health_update: <adapter> -> suspect
393
+ evidence: webcmd browser <cmd> or trace:<path>
394
+ ```
559
395
 
560
- ### 5.1 Draft 放在 `sitemap/` 目录内
396
+ Field rules:
561
397
 
562
- agent 发现新路径 / stale 修正 / 半成品流程时写 draft。**draft 必须放在 `sitemap/` 目录内**,命名为 `sitemap/draft-<topic>.md` 或 `sitemap/pages/<page>.draft.md`。
398
+ | Field | Required | Meaning |
399
+ | --- | --- | --- |
400
+ | `pre` | yes | What must be true before the action. |
401
+ | `do` | yes | The action: adapter command, semantic browser command, or user-level step. |
402
+ | `post` | yes | Observable success condition. |
403
+ | `fail` | yes | Failure signals that should trigger recovery. |
404
+ | `recover` | yes | What to do next. |
405
+ | `evidence` | yes | Command or trace proving this action. |
563
406
 
564
- **❌ 不要**放在父目录(如 `~/.webcmd/sites/<site>/sitemap.draft.md`) — `webcmd browser open` 的 sitemap availability 检测只看 `sitemap/` 目录是否存在。draft 放父目录 → 检测不到 → agent 不会被提醒"有 sitemap" → 你的发现没人用。
407
+ Use stable semantic actions:
565
408
 
566
- 正确:
567
- ```
568
- ~/.webcmd/sites/twitter/sitemap/
569
- ├── SITE.md
570
- ├── pages/home.md
571
- └── draft-search-filter.md ← OK,会被检测到
572
- ```
409
+ - `click "New issue" button`
410
+ - `type into search input`
411
+ - `webcmd github search ...`
412
+ - `action:like in pages/_post-card.md`
573
413
 
574
- 错误:
575
- ```
576
- ~/.webcmd/sites/twitter/
577
- ├── sitemap.draft.md ← 检测不到,不会触发 availability
578
- └── sitemap/ ← 空 dir → 检测到但内容空
579
- └── (empty)
580
- ```
414
+ Avoid:
581
415
 
582
- ### 5.2 `site-alias.json`(optional, Phase 2)
416
+ - `click 17`
417
+ - "maybe click the blue button"
418
+ - unverified selectors
419
+ - private data
583
420
 
584
- `webcmd browser open` 用 adapter registry 把 hostname → site 映射(如 `news.ycombinator.com hackernews`)。如果 sitemap 先于 adapter 存在(即一个站还没人写 adapter 但有人写了 sitemap),registry 没数据,sitemap dir 检测不到。
421
+ ## 10. Adapter Health
585
422
 
586
- future fix:sitemap dir 内放 `site-alias.json` 声明它服务的 hostname:
423
+ Enum:
587
424
 
588
- ```json
589
- {
590
- "hostnames": ["news.ycombinator.com", "hn.com"]
591
- }
425
+ ```text
426
+ healthy
427
+ suspect
428
+ broken
592
429
  ```
593
430
 
594
- `resolveSitemapAvailabilityForUrl` 先看 alias → 再 fallback adapter registry → 再 fallback hostname-second-part heuristic。Phase 2 加,v1 PoC 用 adapter registry 已够。
431
+ Meanings:
595
432
 
596
- ---
433
+ | Value | Meaning | Agent behavior |
434
+ | --- | --- | --- |
435
+ | `healthy` | Adapter recently verified | Prefer adapter. |
436
+ | `suspect` | Adapter failed or disagreed with browser state | Try fallback first or verify before use. |
437
+ | `broken` | Adapter known unusable | Do not retry until repaired. |
597
438
 
598
- ## 6. Trust Reality 红线
439
+ Health updates should be written to local overlay, not global seed, unless reviewed.
599
440
 
600
- sitemap 是 hint,browser state 是 truth。当冲突时:
441
+ Example:
601
442
 
602
- 1. **绝不**强迫 agent 按 sitemap 操作
603
- 2. agent 必须现场探测(用 `browser state` / `find`)
604
- 3. sitemap 项标 stale:在 local overlay 加一条覆盖(同 stable id),把 `last_verified` 倒回 30 天前,或加 `stale: true` 字段
605
- 4. 把现实观察 dump local overlay 的 `<file>.draft.md`
443
+ ```yaml
444
+ adapter_health:
445
+ webcmd github issue: suspect
446
+ reason: selector missing on YYYY-MM-DD
447
+ evidence: trace:/path/to/summary.md
448
+ ```
606
449
 
607
- **反模式**:
608
- - ❌ "sitemap 说有 Post 按钮,找不到就再找"
609
- - ❌ 把 sitemap workflow 当 fixed plan,遇到 diverge 不回 probe
610
- - ❌ silent-ignore mismatch 继续按 sitemap 操作
450
+ ## 11. Staleness
611
451
 
612
- 正确:
613
- - ✅ "sitemap 说有 Post 按钮 → `find` 一下 → 不在 → 标 stale + 探测真实页面有没有别的发帖入口"
452
+ Mark stale when:
614
453
 
615
- ---
454
+ - current browser state contradicts sitemap
455
+ - adapter output disagrees with visible page
456
+ - endpoint response shape changed
457
+ - selector no longer exists
458
+ - route redirects unexpectedly
616
459
 
617
- ## 7. Validation rules(Phase 2 cron audit 用)
460
+ Do not delete stale evidence immediately. Mark it stale with reason and next step:
618
461
 
619
- 未来自动化 audit agent 可按这些规则检查 sitemap 健康:
462
+ ```yaml
463
+ status: stale
464
+ stale_reason: selector `[data-testid=old]` missing
465
+ next: rerun `webcmd browser analyze <url>`
466
+ ```
620
467
 
621
- ### 7.1 File-level
468
+ ## 12. Security And Privacy
622
469
 
623
- - `body ≤ 800 token`(每个 .md 单独检查)
624
- - `last_verified` 不老于 30 天 → 否则 flag `stale_age`
625
- - `schema_version` 字段存在且 ≤ current
470
+ Never store:
626
471
 
627
- ### 7.2 Cross-ref integrity
472
+ - cookies
473
+ - tokens
474
+ - authorization headers
475
+ - private ids
476
+ - private messages
477
+ - private account data
478
+ - paid content
479
+ - instructions to bypass CAPTCHA, WAF, rate limits, access control, or paid gates
628
480
 
629
- - workflow `Best path: adapter X` adapter X 必须存在于 `cli-manifest.json`
630
- - workflow `Fallback path` 引用的 `action:<id>` → 必须存在于对应 page
631
- - page `Linked APIs` 的 `endpoint_id` → 必须存在于 `apis.md`
632
- - `apis.md` 的 `endpoint_id` → 必须存在于同站 `endpoints.json`
481
+ If evidence contains private data, summarize the durable structure instead of storing raw content.
633
482
 
634
- ### 7.3 Reality check
483
+ ## 13. Promotion Rules
635
484
 
636
- - action `Postconditions` 里的 `url_pattern` / `dom_anchor` 用 `webcmd browser` 实跑一遍,验证 anchor 仍可 resolve
637
- - workflow `State signature.url_pattern` → 同上
485
+ Promote local sitemap entries to `sitemaps/<site>/` only when:
638
486
 
639
- 失败 自动倒 `last_verified` 30 天前。
487
+ - evidence is present
488
+ - content is general to the site, not account-specific
489
+ - paths are verified
490
+ - stale risks are named
491
+ - no secrets or private data are present
492
+ - file size is within budget or justified
640
493
 
641
- ### 7.4 Forbidden content
494
+ Do not promote drafts as verified.
642
495
 
643
- - `apis.md` 不能含 endpoint URL / method / params / response(grep 检测)
644
- - 任何文件不能含 secret pattern(cookie value / token string / API key — 用 regex 检测)
496
+ ## 14. Validation Checklist
645
497
 
646
- ---
498
+ Before considering a sitemap file ready:
647
499
 
648
- ## 8. Cross-link
500
+ - [ ] Front matter has `site`, `kind`, `id`, `status`, `verified_at`, and `source`.
501
+ - [ ] Current browser state was checked.
502
+ - [ ] Actions have `pre`, `do`, `post`, `fail`, `recover`, and `evidence`.
503
+ - [ ] Adapter fallback updates `adapter_health` when relevant.
504
+ - [ ] Selectors are semantic and scoped.
505
+ - [ ] Partial selectors are scoped to partial root.
506
+ - [ ] Uncovered routes are explicitly marked.
507
+ - [ ] No private data or secrets.
508
+ - [ ] Stale entries are marked instead of silently removed.
509
+ - [ ] Drafts are inside the sitemap directory.
649
510
 
650
- - [`../../webcmd-adapter-author/references/strategy-selection.md`](../../webcmd-adapter-author/references/strategy-selection.md) `contract_strength` 和 `auth_strategy` 取值定义
651
- - [`../../webcmd-adapter-author/references/api-discovery.md`](../../webcmd-adapter-author/references/api-discovery.md) — `endpoint_id` 怎么发现
652
- - `~/.webcmd/sites/<site>/endpoints.json` — endpoint 的真实 URL/method/params/response
511
+ ## 15. Consumer Rule
653
512
 
654
- ---
513
+ The consuming agent must treat sitemap memory as a hint. Current browser state is truth.
655
514
 
656
- ## 9. Open questions(v1 暂未定,v2 跟数据决)
515
+ When memory and browser disagree:
657
516
 
658
- 1. **`state_signature` 用什么 DSL**:现在写 `url_pattern: <regex>` + `dom_anchor: <semantic>`,未来可能需要更结构化(如 JSON path / xpath / a11y tree path)。等 PoC 实践后定
659
- 2. **多语言站 anchor**:现在建议 a11y role + name;不同 locale name 不同。是否一个 anchor 列表多 locale,还是一个 sitemap per locale?PoC 后决
660
- 3. **Validation cron 实现位置**:作为 Webcmd 内置命令 `webcmd sitemap audit`?还是独立 GitHub Action?Phase 2 决
517
+ 1. Trust browser state.
518
+ 2. Mark memory stale in local overlay.
519
+ 3. Use fallback path.
520
+ 4. Record evidence so the next agent does not repeat the failed path.