@zenalexa/unicli 0.220.0 → 0.221.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 (626) hide show
  1. package/AGENTS.md +35 -22
  2. package/README.md +23 -17
  3. package/README.zh-CN.md +23 -17
  4. package/dist/adapters/anilist/web.d.ts +11 -0
  5. package/dist/adapters/anilist/web.d.ts.map +1 -0
  6. package/dist/adapters/anilist/web.js +284 -0
  7. package/dist/adapters/anilist/web.js.map +1 -0
  8. package/dist/adapters/bangumi/web.d.ts +14 -0
  9. package/dist/adapters/bangumi/web.d.ts.map +1 -0
  10. package/dist/adapters/bangumi/web.js +257 -0
  11. package/dist/adapters/bangumi/web.js.map +1 -0
  12. package/dist/adapters/bilibili/comments.js +66 -4
  13. package/dist/adapters/bilibili/comments.js.map +1 -1
  14. package/dist/adapters/bilibili/compat.js +2 -2
  15. package/dist/adapters/bilibili/compat.js.map +1 -1
  16. package/dist/adapters/bilibili/download.js +4 -4
  17. package/dist/adapters/bilibili/download.js.map +1 -1
  18. package/dist/adapters/bilibili/wbi.d.ts.map +1 -1
  19. package/dist/adapters/bilibili/wbi.js +3 -3
  20. package/dist/adapters/bilibili/wbi.js.map +1 -1
  21. package/dist/adapters/cipo/_shared.d.ts +21 -0
  22. package/dist/adapters/cipo/_shared.d.ts.map +1 -0
  23. package/dist/adapters/cipo/_shared.js +67 -0
  24. package/dist/adapters/cipo/_shared.js.map +1 -0
  25. package/dist/adapters/cipo/get.d.ts +19 -0
  26. package/dist/adapters/cipo/get.d.ts.map +1 -0
  27. package/dist/adapters/cipo/get.js +140 -0
  28. package/dist/adapters/cipo/get.js.map +1 -0
  29. package/dist/adapters/cipo/legal-status.d.ts +19 -0
  30. package/dist/adapters/cipo/legal-status.d.ts.map +1 -0
  31. package/dist/adapters/cipo/legal-status.js +111 -0
  32. package/dist/adapters/cipo/legal-status.js.map +1 -0
  33. package/dist/adapters/cipo/search.d.ts +20 -0
  34. package/dist/adapters/cipo/search.d.ts.map +1 -0
  35. package/dist/adapters/cipo/search.js +148 -0
  36. package/dist/adapters/cipo/search.js.map +1 -0
  37. package/dist/adapters/cnipa/_shared.d.ts +47 -0
  38. package/dist/adapters/cnipa/_shared.d.ts.map +1 -0
  39. package/dist/adapters/cnipa/_shared.js +97 -0
  40. package/dist/adapters/cnipa/_shared.js.map +1 -0
  41. package/dist/adapters/cnipa/get.d.ts +19 -0
  42. package/dist/adapters/cnipa/get.d.ts.map +1 -0
  43. package/dist/adapters/cnipa/get.js +149 -0
  44. package/dist/adapters/cnipa/get.js.map +1 -0
  45. package/dist/adapters/cnipa/legal-status.d.ts +19 -0
  46. package/dist/adapters/cnipa/legal-status.d.ts.map +1 -0
  47. package/dist/adapters/cnipa/legal-status.js +119 -0
  48. package/dist/adapters/cnipa/legal-status.js.map +1 -0
  49. package/dist/adapters/cnipa/search.d.ts +21 -0
  50. package/dist/adapters/cnipa/search.d.ts.map +1 -0
  51. package/dist/adapters/cnipa/search.js +170 -0
  52. package/dist/adapters/cnipa/search.js.map +1 -0
  53. package/dist/adapters/dlsite/web.d.ts +31 -0
  54. package/dist/adapters/dlsite/web.d.ts.map +1 -0
  55. package/dist/adapters/dlsite/web.js +455 -0
  56. package/dist/adapters/dlsite/web.js.map +1 -0
  57. package/dist/adapters/ehentai/web.d.ts +66 -0
  58. package/dist/adapters/ehentai/web.d.ts.map +1 -0
  59. package/dist/adapters/ehentai/web.js +608 -0
  60. package/dist/adapters/ehentai/web.js.map +1 -0
  61. package/dist/adapters/espacenet/_shared.d.ts +21 -0
  62. package/dist/adapters/espacenet/_shared.d.ts.map +1 -0
  63. package/dist/adapters/espacenet/_shared.js +67 -0
  64. package/dist/adapters/espacenet/_shared.js.map +1 -0
  65. package/dist/adapters/espacenet/family.d.ts +19 -0
  66. package/dist/adapters/espacenet/family.d.ts.map +1 -0
  67. package/dist/adapters/espacenet/family.js +118 -0
  68. package/dist/adapters/espacenet/family.js.map +1 -0
  69. package/dist/adapters/espacenet/get.d.ts +19 -0
  70. package/dist/adapters/espacenet/get.d.ts.map +1 -0
  71. package/dist/adapters/espacenet/get.js +130 -0
  72. package/dist/adapters/espacenet/get.js.map +1 -0
  73. package/dist/adapters/espacenet/legal-status.d.ts +19 -0
  74. package/dist/adapters/espacenet/legal-status.d.ts.map +1 -0
  75. package/dist/adapters/espacenet/legal-status.js +110 -0
  76. package/dist/adapters/espacenet/legal-status.js.map +1 -0
  77. package/dist/adapters/espacenet/search.d.ts +20 -0
  78. package/dist/adapters/espacenet/search.d.ts.map +1 -0
  79. package/dist/adapters/espacenet/search.js +165 -0
  80. package/dist/adapters/espacenet/search.js.map +1 -0
  81. package/dist/adapters/facebook/subtitles.d.ts +9 -0
  82. package/dist/adapters/facebook/subtitles.d.ts.map +1 -0
  83. package/dist/adapters/facebook/subtitles.js +42 -0
  84. package/dist/adapters/facebook/subtitles.js.map +1 -0
  85. package/dist/adapters/fips/_shared.d.ts +21 -0
  86. package/dist/adapters/fips/_shared.d.ts.map +1 -0
  87. package/dist/adapters/fips/_shared.js +77 -0
  88. package/dist/adapters/fips/_shared.js.map +1 -0
  89. package/dist/adapters/fips/get.d.ts +19 -0
  90. package/dist/adapters/fips/get.d.ts.map +1 -0
  91. package/dist/adapters/fips/get.js +139 -0
  92. package/dist/adapters/fips/get.js.map +1 -0
  93. package/dist/adapters/fips/search.d.ts +20 -0
  94. package/dist/adapters/fips/search.d.ts.map +1 -0
  95. package/dist/adapters/fips/search.js +148 -0
  96. package/dist/adapters/fips/search.js.map +1 -0
  97. package/dist/adapters/freepatentsonline-web/_shared.d.ts +72 -0
  98. package/dist/adapters/freepatentsonline-web/_shared.d.ts.map +1 -0
  99. package/dist/adapters/freepatentsonline-web/_shared.js +216 -0
  100. package/dist/adapters/freepatentsonline-web/_shared.js.map +1 -0
  101. package/dist/adapters/freepatentsonline-web/get.d.ts +21 -0
  102. package/dist/adapters/freepatentsonline-web/get.d.ts.map +1 -0
  103. package/dist/adapters/freepatentsonline-web/get.js +127 -0
  104. package/dist/adapters/freepatentsonline-web/get.js.map +1 -0
  105. package/dist/adapters/freepatentsonline-web/search.d.ts +22 -0
  106. package/dist/adapters/freepatentsonline-web/search.d.ts.map +1 -0
  107. package/dist/adapters/freepatentsonline-web/search.js +149 -0
  108. package/dist/adapters/freepatentsonline-web/search.js.map +1 -0
  109. package/dist/adapters/google-patents-web/_shared.d.ts +110 -0
  110. package/dist/adapters/google-patents-web/_shared.d.ts.map +1 -0
  111. package/dist/adapters/google-patents-web/_shared.js +164 -0
  112. package/dist/adapters/google-patents-web/_shared.js.map +1 -0
  113. package/dist/adapters/google-patents-web/get.d.ts +36 -0
  114. package/dist/adapters/google-patents-web/get.d.ts.map +1 -0
  115. package/dist/adapters/google-patents-web/get.js +187 -0
  116. package/dist/adapters/google-patents-web/get.js.map +1 -0
  117. package/dist/adapters/google-patents-web/search.d.ts +23 -0
  118. package/dist/adapters/google-patents-web/search.d.ts.map +1 -0
  119. package/dist/adapters/google-patents-web/search.js +169 -0
  120. package/dist/adapters/google-patents-web/search.js.map +1 -0
  121. package/dist/adapters/inpi-br/_shared.d.ts +21 -0
  122. package/dist/adapters/inpi-br/_shared.d.ts.map +1 -0
  123. package/dist/adapters/inpi-br/_shared.js +67 -0
  124. package/dist/adapters/inpi-br/_shared.js.map +1 -0
  125. package/dist/adapters/inpi-br/get.d.ts +19 -0
  126. package/dist/adapters/inpi-br/get.d.ts.map +1 -0
  127. package/dist/adapters/inpi-br/get.js +142 -0
  128. package/dist/adapters/inpi-br/get.js.map +1 -0
  129. package/dist/adapters/inpi-br/search.d.ts +20 -0
  130. package/dist/adapters/inpi-br/search.d.ts.map +1 -0
  131. package/dist/adapters/inpi-br/search.js +154 -0
  132. package/dist/adapters/inpi-br/search.js.map +1 -0
  133. package/dist/adapters/instagram/subtitles.d.ts +9 -0
  134. package/dist/adapters/instagram/subtitles.d.ts.map +1 -0
  135. package/dist/adapters/instagram/subtitles.js +42 -0
  136. package/dist/adapters/instagram/subtitles.js.map +1 -0
  137. package/dist/adapters/jikan/web.d.ts +9 -0
  138. package/dist/adapters/jikan/web.d.ts.map +1 -0
  139. package/dist/adapters/jikan/web.js +154 -0
  140. package/dist/adapters/jikan/web.js.map +1 -0
  141. package/dist/adapters/kitsu/web.d.ts +9 -0
  142. package/dist/adapters/kitsu/web.d.ts.map +1 -0
  143. package/dist/adapters/kitsu/web.js +97 -0
  144. package/dist/adapters/kitsu/web.js.map +1 -0
  145. package/dist/adapters/mangadex/web.d.ts +10 -0
  146. package/dist/adapters/mangadex/web.d.ts.map +1 -0
  147. package/dist/adapters/mangadex/web.js +188 -0
  148. package/dist/adapters/mangadex/web.js.map +1 -0
  149. package/dist/adapters/mastodon/statuses.d.ts +40 -0
  150. package/dist/adapters/mastodon/statuses.d.ts.map +1 -0
  151. package/dist/adapters/mastodon/statuses.js +153 -0
  152. package/dist/adapters/mastodon/statuses.js.map +1 -0
  153. package/dist/adapters/moegirl/web.d.ts +23 -0
  154. package/dist/adapters/moegirl/web.d.ts.map +1 -0
  155. package/dist/adapters/moegirl/web.js +269 -0
  156. package/dist/adapters/moegirl/web.js.map +1 -0
  157. package/dist/adapters/reddit/comments.d.ts +9 -0
  158. package/dist/adapters/reddit/comments.d.ts.map +1 -0
  159. package/dist/adapters/reddit/comments.js +124 -0
  160. package/dist/adapters/reddit/comments.js.map +1 -0
  161. package/dist/adapters/safebooru/web.d.ts +10 -0
  162. package/dist/adapters/safebooru/web.d.ts.map +1 -0
  163. package/dist/adapters/safebooru/web.js +120 -0
  164. package/dist/adapters/safebooru/web.js.map +1 -0
  165. package/dist/adapters/threads/post.d.ts +32 -0
  166. package/dist/adapters/threads/post.d.ts.map +1 -0
  167. package/dist/adapters/threads/post.js +287 -0
  168. package/dist/adapters/threads/post.js.map +1 -0
  169. package/dist/adapters/tiktok/subtitles.d.ts +9 -0
  170. package/dist/adapters/tiktok/subtitles.d.ts.map +1 -0
  171. package/dist/adapters/tiktok/subtitles.js +42 -0
  172. package/dist/adapters/tiktok/subtitles.js.map +1 -0
  173. package/dist/adapters/twitter/accept.js +2 -2
  174. package/dist/adapters/twitter/accept.js.map +1 -1
  175. package/dist/adapters/twitter/browser-fallback.d.ts +26 -0
  176. package/dist/adapters/twitter/browser-fallback.d.ts.map +1 -0
  177. package/dist/adapters/twitter/browser-fallback.js +93 -0
  178. package/dist/adapters/twitter/browser-fallback.js.map +1 -0
  179. package/dist/adapters/twitter/browser-state.d.ts +11 -0
  180. package/dist/adapters/twitter/browser-state.d.ts.map +1 -0
  181. package/dist/adapters/twitter/browser-state.js +46 -0
  182. package/dist/adapters/twitter/browser-state.js.map +1 -0
  183. package/dist/adapters/twitter/client.d.ts.map +1 -1
  184. package/dist/adapters/twitter/client.js +36 -13
  185. package/dist/adapters/twitter/client.js.map +1 -1
  186. package/dist/adapters/twitter/reply-dm.js +2 -2
  187. package/dist/adapters/twitter/reply-dm.js.map +1 -1
  188. package/dist/adapters/twitter/reply.js +1 -0
  189. package/dist/adapters/twitter/reply.js.map +1 -1
  190. package/dist/adapters/twitter/search.js +11 -18
  191. package/dist/adapters/twitter/search.js.map +1 -1
  192. package/dist/adapters/twitter/thread.d.ts +14 -0
  193. package/dist/adapters/twitter/thread.d.ts.map +1 -1
  194. package/dist/adapters/twitter/thread.js +28 -2
  195. package/dist/adapters/twitter/thread.js.map +1 -1
  196. package/dist/adapters/twitter/trending.js +13 -59
  197. package/dist/adapters/twitter/trending.js.map +1 -1
  198. package/dist/adapters/vndb/web.d.ts +10 -0
  199. package/dist/adapters/vndb/web.d.ts.map +1 -0
  200. package/dist/adapters/vndb/web.js +321 -0
  201. package/dist/adapters/vndb/web.js.map +1 -0
  202. package/dist/adapters/xiaohongshu/browser-state.d.ts +19 -0
  203. package/dist/adapters/xiaohongshu/browser-state.d.ts.map +1 -0
  204. package/dist/adapters/xiaohongshu/browser-state.js +67 -0
  205. package/dist/adapters/xiaohongshu/browser-state.js.map +1 -0
  206. package/dist/adapters/xiaohongshu/comments.js +28 -5
  207. package/dist/adapters/xiaohongshu/comments.js.map +1 -1
  208. package/dist/adapters/xiaohongshu/download.js +49 -11
  209. package/dist/adapters/xiaohongshu/download.js.map +1 -1
  210. package/dist/adapters/xiaohongshu/search.d.ts.map +1 -1
  211. package/dist/adapters/xiaohongshu/search.js +11 -5
  212. package/dist/adapters/xiaohongshu/search.js.map +1 -1
  213. package/dist/adapters/xiaohongshu/trending.d.ts +9 -0
  214. package/dist/adapters/xiaohongshu/trending.d.ts.map +1 -0
  215. package/dist/adapters/xiaohongshu/trending.js +94 -0
  216. package/dist/adapters/xiaohongshu/trending.js.map +1 -0
  217. package/dist/adapters/youtube/comments.d.ts +80 -0
  218. package/dist/adapters/youtube/comments.d.ts.map +1 -1
  219. package/dist/adapters/youtube/comments.js +108 -12
  220. package/dist/adapters/youtube/comments.js.map +1 -1
  221. package/dist/adapters/youtube/subtitles.d.ts +9 -0
  222. package/dist/adapters/youtube/subtitles.d.ts.map +1 -0
  223. package/dist/adapters/youtube/subtitles.js +42 -0
  224. package/dist/adapters/youtube/subtitles.js.map +1 -0
  225. package/dist/adapters/yt-dlp/subtitles.d.ts +9 -0
  226. package/dist/adapters/yt-dlp/subtitles.d.ts.map +1 -0
  227. package/dist/adapters/yt-dlp/subtitles.js +41 -0
  228. package/dist/adapters/yt-dlp/subtitles.js.map +1 -0
  229. package/dist/adapters/zhihu/answer-detail.d.ts +39 -0
  230. package/dist/adapters/zhihu/answer-detail.d.ts.map +1 -0
  231. package/dist/adapters/zhihu/answer-detail.js +204 -0
  232. package/dist/adapters/zhihu/answer-detail.js.map +1 -0
  233. package/dist/adapters/zhihu/comment.d.ts +9 -0
  234. package/dist/adapters/zhihu/comment.d.ts.map +1 -0
  235. package/dist/adapters/zhihu/comment.js +149 -0
  236. package/dist/adapters/zhihu/comment.js.map +1 -0
  237. package/dist/adapters/zhihu/recommend.d.ts +36 -0
  238. package/dist/adapters/zhihu/recommend.d.ts.map +1 -0
  239. package/dist/adapters/zhihu/recommend.js +151 -0
  240. package/dist/adapters/zhihu/recommend.js.map +1 -0
  241. package/dist/agents/codex-pack.d.ts +62 -0
  242. package/dist/agents/codex-pack.d.ts.map +1 -0
  243. package/dist/agents/codex-pack.js +163 -0
  244. package/dist/agents/codex-pack.js.map +1 -0
  245. package/dist/browser/bridge.d.ts.map +1 -1
  246. package/dist/browser/bridge.js +14 -3
  247. package/dist/browser/bridge.js.map +1 -1
  248. package/dist/browser/daemon-client.d.ts +6 -0
  249. package/dist/browser/daemon-client.d.ts.map +1 -1
  250. package/dist/browser/daemon-client.js +75 -15
  251. package/dist/browser/daemon-client.js.map +1 -1
  252. package/dist/browser/daemon.js +39 -15
  253. package/dist/browser/daemon.js.map +1 -1
  254. package/dist/browser/protocol.d.ts +1 -0
  255. package/dist/browser/protocol.d.ts.map +1 -1
  256. package/dist/browser/protocol.js +1 -0
  257. package/dist/browser/protocol.js.map +1 -1
  258. package/dist/cli.d.ts.map +1 -1
  259. package/dist/cli.js +6 -0
  260. package/dist/cli.js.map +1 -1
  261. package/dist/commands/agents.d.ts.map +1 -1
  262. package/dist/commands/agents.js +6 -43
  263. package/dist/commands/agents.js.map +1 -1
  264. package/dist/commands/approvals.d.ts.map +1 -1
  265. package/dist/commands/approvals.js +1 -37
  266. package/dist/commands/approvals.js.map +1 -1
  267. package/dist/commands/browser/adapter.d.ts.map +1 -1
  268. package/dist/commands/browser/adapter.js +17 -3
  269. package/dist/commands/browser/adapter.js.map +1 -1
  270. package/dist/commands/browser/index.d.ts.map +1 -1
  271. package/dist/commands/browser/index.js +7 -2
  272. package/dist/commands/browser/index.js.map +1 -1
  273. package/dist/commands/daemon.d.ts.map +1 -1
  274. package/dist/commands/daemon.js +7 -3
  275. package/dist/commands/daemon.js.map +1 -1
  276. package/dist/commands/describe.d.ts.map +1 -1
  277. package/dist/commands/describe.js +6 -7
  278. package/dist/commands/describe.js.map +1 -1
  279. package/dist/commands/dispatch.d.ts +1 -1
  280. package/dist/commands/dispatch.d.ts.map +1 -1
  281. package/dist/commands/dispatch.js +31 -5
  282. package/dist/commands/dispatch.js.map +1 -1
  283. package/dist/commands/mcp.d.ts +1 -1
  284. package/dist/commands/mcp.d.ts.map +1 -1
  285. package/dist/commands/mcp.js +10 -5
  286. package/dist/commands/mcp.js.map +1 -1
  287. package/dist/commands/patent-doctor.d.ts +48 -0
  288. package/dist/commands/patent-doctor.d.ts.map +1 -0
  289. package/dist/commands/patent-doctor.js +109 -0
  290. package/dist/commands/patent-doctor.js.map +1 -0
  291. package/dist/commands/patent.d.ts +78 -0
  292. package/dist/commands/patent.d.ts.map +1 -0
  293. package/dist/commands/patent.js +919 -0
  294. package/dist/commands/patent.js.map +1 -0
  295. package/dist/commands/social.d.ts +19 -0
  296. package/dist/commands/social.d.ts.map +1 -0
  297. package/dist/commands/social.js +236 -0
  298. package/dist/commands/social.js.map +1 -0
  299. package/dist/core/command-contract-lint.d.ts +10 -0
  300. package/dist/core/command-contract-lint.d.ts.map +1 -0
  301. package/dist/core/command-contract-lint.js +41 -0
  302. package/dist/core/command-contract-lint.js.map +1 -0
  303. package/dist/core/command-contract.d.ts +100 -0
  304. package/dist/core/command-contract.d.ts.map +1 -0
  305. package/dist/core/command-contract.js +174 -0
  306. package/dist/core/command-contract.js.map +1 -0
  307. package/dist/core/index.d.ts +2 -0
  308. package/dist/core/index.d.ts.map +1 -1
  309. package/dist/core/index.js +2 -0
  310. package/dist/core/index.js.map +1 -1
  311. package/dist/core/registry.d.ts +1 -1
  312. package/dist/core/registry.d.ts.map +1 -1
  313. package/dist/core/registry.js +11 -2
  314. package/dist/core/registry.js.map +1 -1
  315. package/dist/discovery/aliases.d.ts +2 -2
  316. package/dist/discovery/aliases.d.ts.map +1 -1
  317. package/dist/discovery/aliases.js +464 -6
  318. package/dist/discovery/aliases.js.map +1 -1
  319. package/dist/discovery/loader.d.ts.map +1 -1
  320. package/dist/discovery/loader.js +4 -0
  321. package/dist/discovery/loader.js.map +1 -1
  322. package/dist/discovery/search.d.ts.map +1 -1
  323. package/dist/discovery/search.js +147 -2
  324. package/dist/discovery/search.js.map +1 -1
  325. package/dist/engine/approval-presenter.d.ts +10 -0
  326. package/dist/engine/approval-presenter.d.ts.map +1 -0
  327. package/dist/engine/approval-presenter.js +45 -0
  328. package/dist/engine/approval-presenter.js.map +1 -0
  329. package/dist/engine/approval-store.d.ts +4 -0
  330. package/dist/engine/approval-store.d.ts.map +1 -1
  331. package/dist/engine/approval-store.js +85 -11
  332. package/dist/engine/approval-store.js.map +1 -1
  333. package/dist/engine/args.d.ts.map +1 -1
  334. package/dist/engine/args.js +18 -1
  335. package/dist/engine/args.js.map +1 -1
  336. package/dist/engine/artifact-validation.d.ts +29 -0
  337. package/dist/engine/artifact-validation.d.ts.map +1 -0
  338. package/dist/engine/artifact-validation.js +211 -0
  339. package/dist/engine/artifact-validation.js.map +1 -0
  340. package/dist/engine/auth/oauth2-cc.d.ts +67 -0
  341. package/dist/engine/auth/oauth2-cc.d.ts.map +1 -0
  342. package/dist/engine/auth/oauth2-cc.js +120 -0
  343. package/dist/engine/auth/oauth2-cc.js.map +1 -0
  344. package/dist/engine/browser/diagnostics.d.ts +38 -0
  345. package/dist/engine/browser/diagnostics.d.ts.map +1 -0
  346. package/dist/engine/browser/diagnostics.js +40 -0
  347. package/dist/engine/browser/diagnostics.js.map +1 -0
  348. package/dist/engine/cookies.d.ts +10 -0
  349. package/dist/engine/cookies.d.ts.map +1 -1
  350. package/dist/engine/cookies.js +64 -0
  351. package/dist/engine/cookies.js.map +1 -1
  352. package/dist/engine/download.d.ts +5 -0
  353. package/dist/engine/download.d.ts.map +1 -1
  354. package/dist/engine/download.js +11 -4
  355. package/dist/engine/download.js.map +1 -1
  356. package/dist/engine/executor.d.ts +1 -0
  357. package/dist/engine/executor.d.ts.map +1 -1
  358. package/dist/engine/executor.js +25 -0
  359. package/dist/engine/executor.js.map +1 -1
  360. package/dist/engine/framework.d.ts +5 -5
  361. package/dist/engine/framework.js +5 -5
  362. package/dist/engine/harden.d.ts +1 -1
  363. package/dist/engine/harden.js +1 -1
  364. package/dist/engine/invoke.d.ts +1 -0
  365. package/dist/engine/invoke.d.ts.map +1 -1
  366. package/dist/engine/invoke.js +1 -0
  367. package/dist/engine/invoke.js.map +1 -1
  368. package/dist/engine/kernel/errors.d.ts +11 -0
  369. package/dist/engine/kernel/errors.d.ts.map +1 -0
  370. package/dist/engine/kernel/errors.js +15 -0
  371. package/dist/engine/kernel/errors.js.map +1 -0
  372. package/dist/engine/kernel/execute.d.ts +7 -18
  373. package/dist/engine/kernel/execute.d.ts.map +1 -1
  374. package/dist/engine/kernel/execute.js +25 -410
  375. package/dist/engine/kernel/execute.js.map +1 -1
  376. package/dist/engine/kernel/stages.d.ts +44 -0
  377. package/dist/engine/kernel/stages.d.ts.map +1 -0
  378. package/dist/engine/kernel/stages.js +429 -0
  379. package/dist/engine/kernel/stages.js.map +1 -0
  380. package/dist/engine/kernel/types.d.ts +21 -1
  381. package/dist/engine/kernel/types.d.ts.map +1 -1
  382. package/dist/engine/normalizer/patent-envelope.d.ts +61 -0
  383. package/dist/engine/normalizer/patent-envelope.d.ts.map +1 -0
  384. package/dist/engine/normalizer/patent-envelope.js +132 -0
  385. package/dist/engine/normalizer/patent-envelope.js.map +1 -0
  386. package/dist/engine/research.d.ts +5 -7
  387. package/dist/engine/research.d.ts.map +1 -1
  388. package/dist/engine/research.js +6 -9
  389. package/dist/engine/research.js.map +1 -1
  390. package/dist/engine/steps/browser-helpers.d.ts +2 -2
  391. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  392. package/dist/engine/steps/browser-helpers.js +39 -16
  393. package/dist/engine/steps/browser-helpers.js.map +1 -1
  394. package/dist/engine/steps/download.d.ts +2 -0
  395. package/dist/engine/steps/download.d.ts.map +1 -1
  396. package/dist/engine/steps/download.js +13 -7
  397. package/dist/engine/steps/download.js.map +1 -1
  398. package/dist/engine/steps/index.d.ts +2 -0
  399. package/dist/engine/steps/index.d.ts.map +1 -1
  400. package/dist/engine/steps/index.js +2 -0
  401. package/dist/engine/steps/index.js.map +1 -1
  402. package/dist/engine/steps/oauth2-token.d.ts +41 -0
  403. package/dist/engine/steps/oauth2-token.d.ts.map +1 -0
  404. package/dist/engine/steps/oauth2-token.js +115 -0
  405. package/dist/engine/steps/oauth2-token.js.map +1 -0
  406. package/dist/engine/steps/select-xml.d.ts +34 -0
  407. package/dist/engine/steps/select-xml.d.ts.map +1 -0
  408. package/dist/engine/steps/select-xml.js +222 -0
  409. package/dist/engine/steps/select-xml.js.map +1 -0
  410. package/dist/engine/template.d.ts.map +1 -1
  411. package/dist/engine/template.js +7 -0
  412. package/dist/engine/template.js.map +1 -1
  413. package/dist/engine/transport/mcp-browser.d.ts +128 -0
  414. package/dist/engine/transport/mcp-browser.d.ts.map +1 -0
  415. package/dist/engine/transport/mcp-browser.js +120 -0
  416. package/dist/engine/transport/mcp-browser.js.map +1 -0
  417. package/dist/fast-path/handlers/approvals.d.ts +11 -0
  418. package/dist/fast-path/handlers/approvals.d.ts.map +1 -0
  419. package/dist/fast-path/handlers/approvals.js +136 -0
  420. package/dist/fast-path/handlers/approvals.js.map +1 -0
  421. package/dist/fast-path/manifest.d.ts +1 -0
  422. package/dist/fast-path/manifest.d.ts.map +1 -1
  423. package/dist/fast-path/manifest.js.map +1 -1
  424. package/dist/fast-path/render.js +1 -1
  425. package/dist/fast-path/render.js.map +1 -1
  426. package/dist/fast-path.d.ts.map +1 -1
  427. package/dist/fast-path.js +3 -0
  428. package/dist/fast-path.js.map +1 -1
  429. package/dist/index.d.ts +23 -0
  430. package/dist/index.d.ts.map +1 -0
  431. package/dist/index.js +38 -0
  432. package/dist/index.js.map +1 -0
  433. package/dist/manifest-compact.txt +5 -5
  434. package/dist/manifest-search.json +1 -1
  435. package/dist/manifest.json +5189 -55
  436. package/dist/mcp/handler.d.ts.map +1 -1
  437. package/dist/mcp/handler.js +11 -1
  438. package/dist/mcp/handler.js.map +1 -1
  439. package/dist/mcp/server.d.ts +1 -1
  440. package/dist/mcp/server.js +1 -1
  441. package/dist/mcp/tools.d.ts.map +1 -1
  442. package/dist/mcp/tools.js +18 -10
  443. package/dist/mcp/tools.js.map +1 -1
  444. package/dist/output/auth-guidance.d.ts +14 -0
  445. package/dist/output/auth-guidance.d.ts.map +1 -0
  446. package/dist/output/auth-guidance.js +50 -0
  447. package/dist/output/auth-guidance.js.map +1 -0
  448. package/dist/output/error-map.d.ts +1 -1
  449. package/dist/output/error-map.d.ts.map +1 -1
  450. package/dist/output/error-map.js +29 -5
  451. package/dist/output/error-map.js.map +1 -1
  452. package/dist/output/next-actions.d.ts.map +1 -1
  453. package/dist/output/next-actions.js +19 -3
  454. package/dist/output/next-actions.js.map +1 -1
  455. package/dist/registry.d.ts +18 -1
  456. package/dist/registry.d.ts.map +1 -1
  457. package/dist/registry.js +7 -1
  458. package/dist/registry.js.map +1 -1
  459. package/dist/social/browser-errors.d.ts +13 -0
  460. package/dist/social/browser-errors.d.ts.map +1 -0
  461. package/dist/social/browser-errors.js +36 -0
  462. package/dist/social/browser-errors.js.map +1 -0
  463. package/dist/social/capabilities.d.ts +29 -0
  464. package/dist/social/capabilities.d.ts.map +1 -0
  465. package/dist/social/capabilities.js +448 -0
  466. package/dist/social/capabilities.js.map +1 -0
  467. package/dist/social/comments.d.ts +26 -0
  468. package/dist/social/comments.d.ts.map +1 -0
  469. package/dist/social/comments.js +97 -0
  470. package/dist/social/comments.js.map +1 -0
  471. package/dist/social/video-text.d.ts +27 -0
  472. package/dist/social/video-text.d.ts.map +1 -0
  473. package/dist/social/video-text.js +140 -0
  474. package/dist/social/video-text.js.map +1 -0
  475. package/dist/types/patent.d.ts +160 -0
  476. package/dist/types/patent.d.ts.map +1 -0
  477. package/dist/types/patent.js +16 -0
  478. package/dist/types/patent.js.map +1 -0
  479. package/dist/types.d.ts +12 -0
  480. package/dist/types.d.ts.map +1 -1
  481. package/dist/types.js.map +1 -1
  482. package/package.json +10 -5
  483. package/server.json +3 -3
  484. package/skills/unicli/SKILL.md +1 -1
  485. package/skills/unicli-claude-code/SKILL.md +1 -1
  486. package/skills/unicli-hermes/SKILL.md +1 -1
  487. package/src/adapters/anilist/web.test.ts +93 -0
  488. package/src/adapters/anilist/web.ts +341 -0
  489. package/src/adapters/arxiv/download.yaml +53 -0
  490. package/src/adapters/bangumi/web.test.ts +109 -0
  491. package/src/adapters/bangumi/web.ts +295 -0
  492. package/src/adapters/bilibili/comments-tree.test.ts +41 -0
  493. package/src/adapters/bilibili/comments.ts +78 -4
  494. package/src/adapters/bilibili/compat.ts +5 -2
  495. package/src/adapters/bilibili/download.ts +7 -4
  496. package/src/adapters/bilibili/wbi.ts +6 -3
  497. package/src/adapters/brave/search.yaml +53 -0
  498. package/src/adapters/cipo/_shared.ts +98 -0
  499. package/src/adapters/cipo/get.ts +188 -0
  500. package/src/adapters/cipo/legal-status.ts +148 -0
  501. package/src/adapters/cipo/search.ts +195 -0
  502. package/src/adapters/cnipa/_shared.ts +138 -0
  503. package/src/adapters/cnipa/get.ts +199 -0
  504. package/src/adapters/cnipa/legal-status.ts +162 -0
  505. package/src/adapters/cnipa/search.ts +229 -0
  506. package/src/adapters/danbooru/artists.yaml +44 -0
  507. package/src/adapters/danbooru/comments.yaml +45 -0
  508. package/src/adapters/danbooru/detail.yaml +78 -0
  509. package/src/adapters/danbooru/download.yaml +51 -0
  510. package/src/adapters/danbooru/pools.yaml +56 -0
  511. package/src/adapters/danbooru/search.yaml +69 -0
  512. package/src/adapters/danbooru/tags.yaml +42 -0
  513. package/src/adapters/danbooru/wiki.yaml +44 -0
  514. package/src/adapters/dlsite/web.test.ts +132 -0
  515. package/src/adapters/dlsite/web.ts +557 -0
  516. package/src/adapters/dpma/get.yaml +67 -0
  517. package/src/adapters/dpma/search.yaml +77 -0
  518. package/src/adapters/duckduckgo/search.yaml +54 -0
  519. package/src/adapters/duckduckgo/suggest.yaml +52 -0
  520. package/src/adapters/ehentai/web.test.ts +157 -0
  521. package/src/adapters/ehentai/web.ts +750 -0
  522. package/src/adapters/epo/family.yaml +69 -0
  523. package/src/adapters/epo/get.yaml +74 -0
  524. package/src/adapters/epo/legal-status.yaml +63 -0
  525. package/src/adapters/epo/search.yaml +84 -0
  526. package/src/adapters/espacenet/_shared.ts +98 -0
  527. package/src/adapters/espacenet/family.ts +161 -0
  528. package/src/adapters/espacenet/get.ts +185 -0
  529. package/src/adapters/espacenet/legal-status.ts +151 -0
  530. package/src/adapters/espacenet/search.ts +229 -0
  531. package/src/adapters/facebook/subtitles.ts +44 -0
  532. package/src/adapters/fips/_shared.ts +109 -0
  533. package/src/adapters/fips/get.ts +186 -0
  534. package/src/adapters/fips/search.ts +195 -0
  535. package/src/adapters/freepatentsonline-web/_shared.ts +273 -0
  536. package/src/adapters/freepatentsonline-web/get.ts +144 -0
  537. package/src/adapters/freepatentsonline-web/search.ts +170 -0
  538. package/src/adapters/google-patents-bq/prior-art.yaml +80 -0
  539. package/src/adapters/google-patents-bq/search.yaml +97 -0
  540. package/src/adapters/google-patents-web/_shared.ts +242 -0
  541. package/src/adapters/google-patents-web/get.ts +224 -0
  542. package/src/adapters/google-patents-web/search.ts +196 -0
  543. package/src/adapters/inpi-br/_shared.ts +98 -0
  544. package/src/adapters/inpi-br/get.ts +193 -0
  545. package/src/adapters/inpi-br/search.ts +206 -0
  546. package/src/adapters/inpi-fr/get.yaml +62 -0
  547. package/src/adapters/inpi-fr/search.yaml +74 -0
  548. package/src/adapters/instagram/subtitles.ts +44 -0
  549. package/src/adapters/ipaustralia/get.yaml +67 -0
  550. package/src/adapters/ipaustralia/search.yaml +74 -0
  551. package/src/adapters/jikan/web.test.ts +50 -0
  552. package/src/adapters/jikan/web.ts +177 -0
  553. package/src/adapters/jpo/get.yaml +63 -0
  554. package/src/adapters/jpo/search.yaml +76 -0
  555. package/src/adapters/kipris/get.yaml +69 -0
  556. package/src/adapters/kipris/legal-status.yaml +58 -0
  557. package/src/adapters/kipris/search.yaml +79 -0
  558. package/src/adapters/kitsu/web.test.ts +29 -0
  559. package/src/adapters/kitsu/web.ts +109 -0
  560. package/src/adapters/konachan/detail.yaml +62 -0
  561. package/src/adapters/konachan/download.yaml +55 -0
  562. package/src/adapters/konachan/search.yaml +65 -0
  563. package/src/adapters/konachan/tags.yaml +40 -0
  564. package/src/adapters/lens/get.yaml +64 -0
  565. package/src/adapters/lens/search.yaml +82 -0
  566. package/src/adapters/mangadex/web.test.ts +46 -0
  567. package/src/adapters/mangadex/web.ts +210 -0
  568. package/src/adapters/mastodon/statuses.test.ts +82 -0
  569. package/src/adapters/mastodon/statuses.ts +208 -0
  570. package/src/adapters/moegirl/web.test.ts +87 -0
  571. package/src/adapters/moegirl/web.ts +343 -0
  572. package/src/adapters/patsnap/get.yaml +65 -0
  573. package/src/adapters/patsnap/search.yaml +77 -0
  574. package/src/adapters/pdf/read.yaml +49 -0
  575. package/src/adapters/pixiv/download.yaml +15 -2
  576. package/src/adapters/pqai/prior-art.yaml +59 -0
  577. package/src/adapters/pqai/search.yaml +60 -0
  578. package/src/adapters/reddit/comments-tree.test.ts +79 -0
  579. package/src/adapters/reddit/comments.ts +159 -0
  580. package/src/adapters/safebooru/detail.yaml +63 -0
  581. package/src/adapters/safebooru/download.yaml +58 -0
  582. package/src/adapters/safebooru/search.yaml +69 -0
  583. package/src/adapters/safebooru/web.test.ts +60 -0
  584. package/src/adapters/safebooru/web.ts +130 -0
  585. package/src/adapters/threads/post.test.ts +64 -0
  586. package/src/adapters/threads/post.ts +366 -0
  587. package/src/adapters/threads/user.yaml +73 -0
  588. package/src/adapters/tiktok/subtitles.ts +44 -0
  589. package/src/adapters/twitter/accept.ts +5 -2
  590. package/src/adapters/twitter/browser-fallback.ts +138 -0
  591. package/src/adapters/twitter/browser-state.ts +74 -0
  592. package/src/adapters/twitter/client.ts +51 -21
  593. package/src/adapters/twitter/reply-dm.ts +5 -2
  594. package/src/adapters/twitter/reply.ts +1 -0
  595. package/src/adapters/twitter/search.ts +12 -38
  596. package/src/adapters/twitter/thread.test.ts +43 -0
  597. package/src/adapters/twitter/thread.ts +44 -2
  598. package/src/adapters/twitter/trending.ts +14 -95
  599. package/src/adapters/ukipo/info.yaml +43 -0
  600. package/src/adapters/uspto/get.yaml +67 -0
  601. package/src/adapters/uspto/legal-status.yaml +58 -0
  602. package/src/adapters/uspto/search.yaml +88 -0
  603. package/src/adapters/vndb/web.test.ts +86 -0
  604. package/src/adapters/vndb/web.ts +393 -0
  605. package/src/adapters/wipo-patentscope/info.yaml +43 -0
  606. package/src/adapters/xiaohongshu/browser-state.ts +95 -0
  607. package/src/adapters/xiaohongshu/comments.ts +29 -6
  608. package/src/adapters/xiaohongshu/download.ts +60 -11
  609. package/src/adapters/xiaohongshu/search.ts +18 -6
  610. package/src/adapters/xiaohongshu/trending.ts +112 -0
  611. package/src/adapters/yahoo/search.yaml +52 -0
  612. package/src/adapters/yandere/detail.yaml +61 -0
  613. package/src/adapters/yandere/download.yaml +56 -0
  614. package/src/adapters/yandere/search.yaml +67 -0
  615. package/src/adapters/yandere/tags.yaml +41 -0
  616. package/src/adapters/youtube/comments-microformat.test.ts +35 -0
  617. package/src/adapters/youtube/comments-tree.test.ts +74 -0
  618. package/src/adapters/youtube/comments.ts +166 -12
  619. package/src/adapters/youtube/subtitles.ts +44 -0
  620. package/src/adapters/yt-dlp/subtitles.ts +43 -0
  621. package/src/adapters/zhihu/answer-detail.test.ts +83 -0
  622. package/src/adapters/zhihu/answer-detail.ts +275 -0
  623. package/src/adapters/zhihu/comment-tree.test.ts +57 -0
  624. package/src/adapters/zhihu/comment.ts +186 -0
  625. package/src/adapters/zhihu/recommend.test.ts +65 -0
  626. package/src/adapters/zhihu/recommend.ts +207 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @owner src::adapters::cnipa::legal-status
3
+ * @does Browser-driven CNIPA legal-status lookup — scrapes the prosecution timeline + grant status from the 公众查询 detail page; emits structured envelopes for captcha / not-found / MCP-bus gaps.
4
+ * @needs src/engine/transport/mcp-browser.ts, src/engine/normalizer/patent-envelope.ts, src/adapters/cnipa/_shared.ts, src/registry.ts
5
+ * @feeds src/commands/patent.ts (capability tag patent.legal-status)
6
+ * @breaks emits PATENT_INVALID_NUMBER, PATENT_BROWSER_CAPTCHA, PATENT_API_DEPRECATED (with MCP_BUS_MISSING context); never synthesizes a status
7
+ * @invariants output row carries `legal_status` exactly as scraped; no normalization beyond trim
8
+ * @side-effects controls Chrome via MCP
9
+ * @perf single navigate + evaluate
10
+ * @concurrency safe
11
+ * @test tests/unit/adapters/cnipa/search.test.ts (shared transport-error path)
12
+ * @stability experimental
13
+ * @since 2026-05-18
14
+ * @verification browser-only
15
+ */
16
+ export declare function runCnipaLegalStatus(kwargs: {
17
+ publication_number: string;
18
+ }): Promise<unknown[]>;
19
+ //# sourceMappingURL=legal-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-status.d.ts","sourceRoot":"","sources":["../../../src/adapters/cnipa/legal-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsCH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAgFrB"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @owner src::adapters::cnipa::legal-status
3
+ * @does Browser-driven CNIPA legal-status lookup — scrapes the prosecution timeline + grant status from the 公众查询 detail page; emits structured envelopes for captcha / not-found / MCP-bus gaps.
4
+ * @needs src/engine/transport/mcp-browser.ts, src/engine/normalizer/patent-envelope.ts, src/adapters/cnipa/_shared.ts, src/registry.ts
5
+ * @feeds src/commands/patent.ts (capability tag patent.legal-status)
6
+ * @breaks emits PATENT_INVALID_NUMBER, PATENT_BROWSER_CAPTCHA, PATENT_API_DEPRECATED (with MCP_BUS_MISSING context); never synthesizes a status
7
+ * @invariants output row carries `legal_status` exactly as scraped; no normalization beyond trim
8
+ * @side-effects controls Chrome via MCP
9
+ * @perf single navigate + evaluate
10
+ * @concurrency safe
11
+ * @test tests/unit/adapters/cnipa/search.test.ts (shared transport-error path)
12
+ * @stability experimental
13
+ * @since 2026-05-18
14
+ * @verification browser-only
15
+ */
16
+ import { cli, Strategy } from "../../registry.js";
17
+ import { TransportError } from "../../engine/transport/mcp-browser.js";
18
+ import { cnipaEnvelope, looksLikeCaptcha, navigateAndExtract, transportErrorToEnvelope, } from "./_shared.js";
19
+ const ADAPTER_PATH = "src/adapters/cnipa/legal-status.ts";
20
+ const CNIPA_LEGAL_URL = "https://pss-system.cponline.cnipa.gov.cn/legalStatus";
21
+ const EXTRACTOR = `(() => {
22
+ const text = (sel) => {
23
+ const node = document.querySelector(sel);
24
+ return node ? (node.textContent || '').trim() : '';
25
+ };
26
+ return {
27
+ publication_number: text('[data-field="pubNo"], .publication-number'),
28
+ legal_status: text('[data-field="legalStatus"], .legal-status'),
29
+ status_date: text('[data-field="statusDate"], .status-date'),
30
+ source_url: location.href,
31
+ html_marker: document.body && document.body.innerText
32
+ ? document.body.innerText.slice(0, 200)
33
+ : '',
34
+ };
35
+ })()`;
36
+ export async function runCnipaLegalStatus(kwargs) {
37
+ const pubNo = String(kwargs.publication_number ?? "").trim();
38
+ if (pubNo.length === 0) {
39
+ return [
40
+ {
41
+ envelope: cnipaEnvelope("PATENT_INVALID_NUMBER", ADAPTER_PATH, "validate", "cnipa legal-status requires a non-empty publication_number"),
42
+ },
43
+ ];
44
+ }
45
+ const url = `${CNIPA_LEGAL_URL}?pubNo=${encodeURIComponent(pubNo)}`;
46
+ let detail;
47
+ try {
48
+ const result = await navigateAndExtract(url, EXTRACTOR);
49
+ if (!result.data) {
50
+ return [
51
+ {
52
+ envelope: cnipaEnvelope("PATENT_SCHEMA_DRIFT", ADAPTER_PATH, "evaluate", "mcp-browser evaluate returned no data"),
53
+ },
54
+ ];
55
+ }
56
+ detail = result.data;
57
+ }
58
+ catch (err) {
59
+ if (err instanceof TransportError) {
60
+ return [
61
+ {
62
+ envelope: transportErrorToEnvelope(err, ADAPTER_PATH, "navigate"),
63
+ },
64
+ ];
65
+ }
66
+ throw err;
67
+ }
68
+ const fieldCount = [detail.publication_number, detail.legal_status].filter(Boolean).length;
69
+ if (looksLikeCaptcha(fieldCount, detail.html_marker)) {
70
+ return [
71
+ {
72
+ envelope: cnipaEnvelope("PATENT_BROWSER_CAPTCHA", ADAPTER_PATH, "evaluate", "CNIPA legal-status page returned no fields; solve the 验证码 and re-run", ["espacenet"]),
73
+ },
74
+ ];
75
+ }
76
+ if (!detail.legal_status) {
77
+ return [
78
+ {
79
+ envelope: cnipaEnvelope("PATENT_NOT_FOUND", ADAPTER_PATH, "normalize", `cnipa returned no legal_status for "${pubNo}"`, ["espacenet"]),
80
+ },
81
+ ];
82
+ }
83
+ return [
84
+ {
85
+ publication_number: detail.publication_number || pubNo,
86
+ legal_status: detail.legal_status,
87
+ status_date: detail.status_date,
88
+ source_adapter: "cnipa",
89
+ source_url: detail.source_url || url,
90
+ retrieved_at: new Date().toISOString(),
91
+ },
92
+ ];
93
+ }
94
+ cli({
95
+ site: "cnipa",
96
+ name: "legal-status",
97
+ description: "CNIPA legal-status / prosecution timeline lookup (browser)",
98
+ domain: "pss-system.cponline.cnipa.gov.cn",
99
+ strategy: Strategy.PUBLIC,
100
+ adapter_path: ADAPTER_PATH,
101
+ args: [
102
+ {
103
+ name: "publication_number",
104
+ type: "str",
105
+ required: true,
106
+ positional: true,
107
+ description: "ST.16 publication number",
108
+ },
109
+ ],
110
+ columns: ["publication_number", "legal_status", "status_date", "source_url"],
111
+ capabilities: [
112
+ "mcp-browser.navigate",
113
+ "mcp-browser.evaluate",
114
+ "patent.legal-status",
115
+ ],
116
+ minimum_capability: "mcp-browser.evaluate",
117
+ func: async (_page, kwargs) => runCnipaLegalStatus(kwargs),
118
+ });
119
+ //# sourceMappingURL=legal-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-status.js","sourceRoot":"","sources":["../../../src/adapters/cnipa/legal-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @owner src::adapters::cnipa::search
3
+ * @does Browser-driven search of CNIPA 公众查询 system at pss-system.cponline.cnipa.gov.cn — the only programmatic route for CN patents (CNIPA has no open API today). Drives a real Chrome session via the mcp-browser transport, extracts result rows, normalizes through assemblePatentRecord.
4
+ * @needs src/engine/transport/mcp-browser.ts, src/engine/normalizer/patent-envelope.ts, src/types/patent.ts, src/adapters/cnipa/_shared.ts, src/registry.ts
5
+ * @feeds src/commands/patent.ts (meta-command discovers via patent.search capability tag)
6
+ * @breaks emits PATENT_BROWSER_CAPTCHA envelope when zero rows return from a navigation that did not error (CNIPA almost always shows a captcha gate); emits PATENT_API_DEPRECATED with MCP_BUS_MISSING context when no outbound MCP transport is registered
7
+ * @invariants result rows always include source_adapter='cnipa'; publication_number canonicalized via assemblePatentRecord; never returns a synthetic row when extraction fails
8
+ * @side-effects controls the user's Chrome browser via MCP; reads no env vars
9
+ * @perf single navigation + one evaluate; ~2-5 s wall-clock when active
10
+ * @concurrency safe — every call opens a fresh tab via mcpBrowserNavigate
11
+ * @test tests/unit/adapters/cnipa/search.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-18
14
+ * @verification browser-only — no upstream API; gated on a live mcp-browser transport
15
+ */
16
+ export declare function runCnipaSearch(kwargs: {
17
+ query: string;
18
+ limit?: number;
19
+ offset?: number;
20
+ }): Promise<unknown[]>;
21
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/adapters/cnipa/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsEH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAkGrB"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * @owner src::adapters::cnipa::search
3
+ * @does Browser-driven search of CNIPA 公众查询 system at pss-system.cponline.cnipa.gov.cn — the only programmatic route for CN patents (CNIPA has no open API today). Drives a real Chrome session via the mcp-browser transport, extracts result rows, normalizes through assemblePatentRecord.
4
+ * @needs src/engine/transport/mcp-browser.ts, src/engine/normalizer/patent-envelope.ts, src/types/patent.ts, src/adapters/cnipa/_shared.ts, src/registry.ts
5
+ * @feeds src/commands/patent.ts (meta-command discovers via patent.search capability tag)
6
+ * @breaks emits PATENT_BROWSER_CAPTCHA envelope when zero rows return from a navigation that did not error (CNIPA almost always shows a captcha gate); emits PATENT_API_DEPRECATED with MCP_BUS_MISSING context when no outbound MCP transport is registered
7
+ * @invariants result rows always include source_adapter='cnipa'; publication_number canonicalized via assemblePatentRecord; never returns a synthetic row when extraction fails
8
+ * @side-effects controls the user's Chrome browser via MCP; reads no env vars
9
+ * @perf single navigation + one evaluate; ~2-5 s wall-clock when active
10
+ * @concurrency safe — every call opens a fresh tab via mcpBrowserNavigate
11
+ * @test tests/unit/adapters/cnipa/search.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-18
14
+ * @verification browser-only — no upstream API; gated on a live mcp-browser transport
15
+ */
16
+ import { cli, Strategy } from "../../registry.js";
17
+ import { TransportError } from "../../engine/transport/mcp-browser.js";
18
+ import { assemblePatentRecord } from "../../engine/normalizer/patent-envelope.js";
19
+ import { cnipaEnvelope, looksLikeCaptcha, navigateAndExtract, transportErrorToEnvelope, } from "./_shared.js";
20
+ const ADAPTER_PATH = "src/adapters/cnipa/search.ts";
21
+ const CNIPA_SEARCH_URL = "https://pss-system.cponline.cnipa.gov.cn/conventionalSearch";
22
+ /**
23
+ * DOM extractor executed inside the page via mcp-browser. The selectors are
24
+ * the documented ones for the CNIPA 公众查询 result table; when CNIPA
25
+ * changes the markup an agent reads the failure envelope and updates the
26
+ * selector here (rule 02 self-repair).
27
+ */
28
+ const EXTRACTOR = `(() => {
29
+ const rows = Array.from(
30
+ document.querySelectorAll('table.result-table tbody tr, .result-list .result-item')
31
+ ).map((el) => {
32
+ const text = (sel) => {
33
+ const node = el.querySelector(sel);
34
+ return node ? (node.textContent || '').trim() : '';
35
+ };
36
+ return {
37
+ publication_number: text('.publication-number, [data-field="pubNo"]'),
38
+ application_number: text('.application-number, [data-field="appNo"]'),
39
+ title: text('.title, [data-field="title"]'),
40
+ applicant: text('.applicant, [data-field="applicant"]'),
41
+ publication_date: text('.publication-date, [data-field="pubDate"]'),
42
+ filing_date: text('.filing-date, [data-field="appDate"]'),
43
+ source_url: (el.querySelector('a[href]') || {}).href || '',
44
+ };
45
+ });
46
+ const html_marker = (document.body && document.body.innerText
47
+ ? document.body.innerText.slice(0, 200)
48
+ : '');
49
+ return { rows, html_marker };
50
+ })()`;
51
+ function buildSearchUrl(query, limit, offset) {
52
+ const params = new URLSearchParams({
53
+ q: query,
54
+ pageSize: String(limit),
55
+ pageNo: String(Math.floor(offset / Math.max(1, limit)) + 1),
56
+ });
57
+ return `${CNIPA_SEARCH_URL}?${params.toString()}`;
58
+ }
59
+ export async function runCnipaSearch(kwargs) {
60
+ const limit = typeof kwargs.limit === "number" && Number.isFinite(kwargs.limit)
61
+ ? Math.max(1, Math.min(100, Math.floor(kwargs.limit)))
62
+ : 25;
63
+ const offset = typeof kwargs.offset === "number" && Number.isFinite(kwargs.offset)
64
+ ? Math.max(0, Math.floor(kwargs.offset))
65
+ : 0;
66
+ const query = String(kwargs.query ?? "").trim();
67
+ if (query.length === 0) {
68
+ return [
69
+ {
70
+ envelope: cnipaEnvelope("PATENT_UNSUPPORTED_QUERY", ADAPTER_PATH, "validate", "cnipa search requires a non-empty query string"),
71
+ },
72
+ ];
73
+ }
74
+ const url = buildSearchUrl(query, limit, offset);
75
+ let extract;
76
+ try {
77
+ const result = await navigateAndExtract(url, EXTRACTOR);
78
+ if (!result.data) {
79
+ return [
80
+ {
81
+ envelope: cnipaEnvelope("PATENT_SCHEMA_DRIFT", ADAPTER_PATH, "evaluate", "mcp-browser evaluate returned no data; check selector schema in src/adapters/cnipa/search.ts"),
82
+ },
83
+ ];
84
+ }
85
+ extract = result.data;
86
+ }
87
+ catch (err) {
88
+ if (err instanceof TransportError) {
89
+ return [
90
+ {
91
+ envelope: transportErrorToEnvelope(err, ADAPTER_PATH, "navigate"),
92
+ },
93
+ ];
94
+ }
95
+ throw err;
96
+ }
97
+ if (looksLikeCaptcha(extract.rows.length, extract.html_marker)) {
98
+ return [
99
+ {
100
+ envelope: cnipaEnvelope("PATENT_BROWSER_CAPTCHA", ADAPTER_PATH, "evaluate", "CNIPA returned no rows for a non-empty query; solve the 验证码 in the open browser tab and re-run", ["espacenet", "lens"]),
101
+ },
102
+ ];
103
+ }
104
+ const out = [];
105
+ for (const row of extract.rows.slice(0, limit)) {
106
+ if (!row.publication_number)
107
+ continue;
108
+ try {
109
+ out.push(assemblePatentRecord({
110
+ publication_number: row.publication_number,
111
+ application_number: row.application_number || undefined,
112
+ title: row.title || undefined,
113
+ assignees: row.applicant
114
+ ? [{ name: row.applicant, country: "CN" }]
115
+ : undefined,
116
+ publication_date: row.publication_date || undefined,
117
+ filing_date: row.filing_date || undefined,
118
+ source_adapter: "cnipa",
119
+ source_url: row.source_url || url,
120
+ }));
121
+ }
122
+ catch {
123
+ // Skip malformed row rather than synthesize — rule 02.
124
+ }
125
+ }
126
+ if (out.length === 0) {
127
+ out.push({
128
+ envelope: cnipaEnvelope("PATENT_NOT_FOUND", ADAPTER_PATH, "normalize", "cnipa returned rows but none carried a publication_number; report as schema drift", ["espacenet"]),
129
+ });
130
+ }
131
+ return out;
132
+ }
133
+ cli({
134
+ site: "cnipa",
135
+ name: "search",
136
+ description: "Search CNIPA via the public 公众查询 browser interface (no API)",
137
+ domain: "pss-system.cponline.cnipa.gov.cn",
138
+ strategy: Strategy.PUBLIC,
139
+ adapter_path: ADAPTER_PATH,
140
+ args: [
141
+ {
142
+ name: "query",
143
+ type: "str",
144
+ required: true,
145
+ positional: true,
146
+ description: "Free-text query — matched against title/abstract/claims",
147
+ },
148
+ {
149
+ name: "limit",
150
+ type: "int",
151
+ default: 25,
152
+ description: "Maximum results to return (1-100)",
153
+ },
154
+ {
155
+ name: "offset",
156
+ type: "int",
157
+ default: 0,
158
+ description: "Result offset for pagination",
159
+ },
160
+ ],
161
+ columns: ["publication_number", "title", "publication_date", "source_url"],
162
+ capabilities: [
163
+ "mcp-browser.navigate",
164
+ "mcp-browser.evaluate",
165
+ "patent.search",
166
+ ],
167
+ minimum_capability: "mcp-browser.evaluate",
168
+ func: async (_page, kwargs) => runCnipaSearch(kwargs),
169
+ });
170
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/adapters/cnipa/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @owner src/adapters/dlsite/web.ts
3
+ * @does Register DLsite public search and work detail commands for doujin games, manga, CG, voice, and video.
4
+ * @needs DLsite public search/detail HTML structure and stable product_id URLs.
5
+ * @feeds ACG market research, tag/type search, time/hot/rating sorted discovery.
6
+ * @breaks DLsite search-result card markup drift can hide works.
7
+ */
8
+ interface DlsiteSearchRow {
9
+ rank: number;
10
+ product_id: string;
11
+ title: string;
12
+ maker: string;
13
+ maker_id: string;
14
+ work_type: string;
15
+ age: string;
16
+ price_jpy: string;
17
+ sales: string;
18
+ rating: string;
19
+ reviews: string;
20
+ thumb: string;
21
+ url: string;
22
+ }
23
+ export declare function decodeDlsiteHtml(value: unknown): string;
24
+ export declare function dlsiteSearchUrl(kwargs: Record<string, unknown>): string;
25
+ export declare function dlsiteMakerUrl(kwargs: Record<string, unknown>): string;
26
+ export declare function dlsiteCreatorUrl(kwargs: Record<string, unknown>): string;
27
+ export declare function dlsiteGenreUrl(kwargs: Record<string, unknown>): string;
28
+ export declare function parseDlsiteSearchHtml(html: string, limit: number): DlsiteSearchRow[];
29
+ export declare function parseDlsiteDetailHtml(html: string, productId: string, service?: string): Record<string, unknown>;
30
+ export {};
31
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/adapters/dlsite/web.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWvD;AAuGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAUvE;AAcD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEtE;AAgCD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,eAAe,EAAE,CAkEnB;AAOD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,SAAiB,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB"}