@agentrhq/webcmd 0.1.2 → 0.2.1
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.
- package/README.md +196 -219
- package/cli-manifest.json +16205 -34869
- package/clis/_atlassian/shared.js +1 -1
- package/clis/booking/search.js +4 -4
- package/clis/chatgpt/ask.js +2 -2
- package/clis/chatgpt/utils.js +41 -42
- package/clis/chatgpt/utils.test.js +23 -23
- package/clis/chatgpt-app/ax.js +5 -5
- package/clis/chatgpt-app/ax.test.js +8 -8
- package/clis/chatgpt-app/new.js +2 -2
- package/clis/codex/sidebar.js +1 -1
- package/clis/codex/sidebar.test.js +12 -12
- package/clis/coingecko/top.js +3 -3
- package/clis/dblp/dblp.test.js +1 -1
- package/clis/discord-app/search.js +1 -1
- package/clis/discord-app/utils.js +6 -6
- package/clis/facebook/__fixtures__/notifications-page.html +6 -6
- package/clis/facebook/add-friend.js +2 -2
- package/clis/facebook/feed.js +18 -18
- package/clis/facebook/friends.js +4 -4
- package/clis/facebook/groups.js +3 -3
- package/clis/facebook/join-group.js +2 -2
- package/clis/facebook/marketplace-inbox.js +3 -3
- package/clis/facebook/marketplace-listings.js +1 -1
- package/clis/facebook/notifications.js +14 -15
- package/clis/facebook/notifications.test.js +28 -29
- package/clis/gemini/ask.test.js +12 -12
- package/clis/gemini/deep-research-result.js +2 -2
- package/clis/gemini/deep-research-result.test.js +2 -2
- package/clis/gemini/deep-research.js +2 -2
- package/clis/gemini/deep-research.test.js +1 -1
- package/clis/gemini/models.js +11 -11
- package/clis/gemini/models.test.js +1 -1
- package/clis/gemini/reply-state.test.js +89 -89
- package/clis/gemini/utils.js +41 -41
- package/clis/gemini/utils.test.js +30 -30
- package/clis/geogebra/utils.js +1 -1
- package/clis/google-scholar/search.js +3 -3
- package/clis/grok/delete.js +1 -1
- package/clis/grok/export-all.js +2 -2
- package/clis/grok/export.js +2 -2
- package/clis/grok/pin.js +3 -3
- package/clis/grok/utils.js +12 -12
- package/clis/grok/utils.test.js +2 -2
- package/clis/indeed/indeed.test.js +3 -3
- package/clis/indeed/utils.js +1 -1
- package/clis/instagram/post.js +19 -19
- package/clis/instagram/post.test.js +2 -2
- package/clis/instagram/reel.js +6 -6
- package/clis/linkedin/connect.js +3 -3
- package/clis/linkedin/people-search.js +4 -4
- package/clis/linkedin/profile-experience.js +6 -6
- package/clis/linkedin/profile-experience.test.js +10 -10
- package/clis/linkedin/profile-read.js +1 -1
- package/clis/linkedin/safe-send.js +1 -1
- package/clis/linkedin/search.js +1 -1
- package/clis/linkedin/shared.js +2 -2
- package/clis/linkedin/timeline.js +5 -5
- package/clis/manus/manus.test.js +2 -2
- package/clis/medium/feed.js +3 -3
- package/clis/medium/search.js +3 -3
- package/clis/medium/user.js +3 -3
- package/clis/notebooklm/auth.js +2 -2
- package/clis/notebooklm/note-list.test.js +4 -4
- package/clis/notebooklm/notes-get.test.js +8 -8
- package/clis/notebooklm/source-fulltext.test.js +11 -11
- package/clis/notebooklm/utils.js +28 -28
- package/clis/notebooklm/utils.test.js +10 -10
- package/clis/pixiv/search.test.js +3 -3
- package/clis/qoder/quest.js +2 -2
- package/clis/reddit/home.js +2 -2
- package/clis/reddit/hot.js +1 -1
- package/clis/reddit/read.js +2 -2
- package/clis/reddit/read.test.js +1 -1
- package/clis/reddit/reply.js +2 -2
- package/clis/reddit/whoami.js +2 -2
- package/clis/reuters/article-detail.js +1 -1
- package/clis/reuters/search.js +1 -1
- package/clis/slock/attachment-upload.test.js +1 -1
- package/clis/slock/task-convert.js +1 -1
- package/clis/substack/feed.js +3 -3
- package/clis/substack/publication.js +3 -3
- package/clis/substack/search.js +4 -4
- package/clis/tiktok/comment.js +2 -2
- package/clis/tiktok/follow.js +4 -4
- package/clis/tiktok/like.js +1 -1
- package/clis/tiktok/save.js +1 -1
- package/clis/tiktok/unfollow.js +4 -4
- package/clis/tiktok/unlike.js +1 -1
- package/clis/tiktok/unsave.js +2 -2
- package/clis/tiktok/write-refactor.test.js +5 -5
- package/clis/twitter/accept.js +3 -3
- package/clis/twitter/delete.js +14 -6
- package/clis/twitter/delete.test.js +74 -1
- package/clis/twitter/followers.js +1 -1
- package/clis/twitter/list-remove-core.js +2 -2
- package/clis/twitter/list-tweets.test.js +3 -3
- package/clis/twitter/lists.js +6 -6
- package/clis/twitter/lists.test.js +2 -2
- package/clis/twitter/reply-dm.js +1 -1
- package/clis/twitter/shared.test.js +4 -5
- package/clis/twitter/timeline.js +3 -1
- package/clis/twitter/timeline.test.js +4 -0
- package/clis/twitter/trending.js +1 -1
- package/clis/twitter/utils.js +1 -1
- package/clis/web/read.js +1 -1
- package/clis/web/read.test.js +2 -2
- package/clis/yahoo-finance/quote.js +1 -1
- package/clis/youtube/history.js +4 -4
- package/clis/youtube/transcript-group.js +1 -1
- package/clis/youtube/transcript-group.test.js +5 -5
- package/clis/youtube/transcript.js +5 -5
- package/clis/youtube/video.js +4 -4
- package/clis/youtube/video.test.js +6 -6
- package/dist/src/browser/analyze.test.js +13 -13
- package/dist/src/browser/bridge-readiness.d.ts +1 -1
- package/dist/src/browser/bridge-readiness.test.js +1 -1
- package/dist/src/browser/bridge.d.ts +1 -0
- package/dist/src/browser/bridge.js +6 -4
- package/dist/src/browser/cdp.d.ts +1 -0
- package/dist/src/browser/daemon-client.d.ts +2 -0
- package/dist/src/browser/daemon-client.js +108 -51
- package/dist/src/browser/daemon-client.test.js +135 -47
- package/dist/src/browser/daemon-transport.js +3 -19
- package/dist/src/browser/errors.js +11 -0
- package/dist/src/browser/page.d.ts +2 -1
- package/dist/src/browser/page.js +5 -1
- package/dist/src/browser/profile.d.ts +9 -0
- package/dist/src/browser/profile.js +18 -7
- package/dist/src/browser/profile.test.js +44 -0
- package/dist/src/browser/protocol.d.ts +3 -0
- package/dist/src/browser/runtime/local-cloak/actions.js +24 -10
- package/dist/src/browser/runtime/local-cloak/session-manager.d.ts +1 -0
- package/dist/src/browser/runtime/local-cloak/session-manager.js +3 -0
- package/dist/src/browser/runtime/local-cloak/session-manager.test.js +87 -0
- package/dist/src/browser.test.js +2 -2
- package/dist/src/cli-argv-preprocess.d.ts +2 -2
- package/dist/src/cli-argv-preprocess.js +2 -2
- package/dist/src/cli-argv-preprocess.test.js +35 -35
- package/dist/src/cli.js +24 -19
- package/dist/src/cli.test.js +59 -59
- package/dist/src/commanderAdapter.test.js +19 -19
- package/dist/src/commands/daemon.test.js +13 -13
- package/dist/src/constants.d.ts +2 -3
- package/dist/src/constants.js +3 -10
- package/dist/src/convention-audit.js +1 -1
- package/dist/src/daemon/server.js +28 -23
- package/dist/src/daemon/server.test.js +52 -0
- package/dist/src/daemon-utils.d.ts +1 -0
- package/dist/src/daemon-utils.js +9 -0
- package/dist/src/daemon.js +1 -5
- package/dist/src/daemon.test.js +10 -1
- package/dist/src/doctor.js +19 -1
- package/dist/src/doctor.test.js +38 -4
- package/dist/src/download/article-download.d.ts +3 -3
- package/dist/src/download/article-download.js +7 -7
- package/dist/src/download/article-download.test.js +6 -6
- package/dist/src/download/index.js +1 -1
- package/dist/src/download/index.test.js +1 -2
- package/dist/src/download/media-download.d.ts +1 -1
- package/dist/src/download/media-download.js +1 -1
- package/dist/src/electron-apps.js +0 -8
- package/dist/src/electron-apps.test.js +2 -11
- package/dist/src/errors.test.js +9 -9
- package/dist/src/execution.js +7 -3
- package/dist/src/execution.test.js +12 -0
- package/dist/src/external-clis.yaml +0 -37
- package/dist/src/external.d.ts +1 -1
- package/dist/src/external.js +19 -1
- package/dist/src/external.test.js +39 -18
- package/dist/src/generate-release-notes-cli.test.js +140 -0
- package/dist/src/help.d.ts +3 -3
- package/dist/src/help.test.js +8 -8
- package/dist/src/main.js +1 -6
- package/dist/src/manifest-types.d.ts +1 -1
- package/dist/src/node-network.test.js +5 -5
- package/dist/src/output.js +1 -1
- package/dist/src/pipeline/steps/download.test.js +3 -3
- package/dist/src/registry.test.js +2 -2
- package/dist/src/release-notes.d.ts +38 -0
- package/dist/src/release-notes.js +99 -0
- package/dist/src/release-notes.test.d.ts +1 -0
- package/dist/src/release-notes.test.js +61 -0
- package/dist/src/runtime-identity.test.js +0 -8
- package/dist/src/runtime.d.ts +2 -0
- package/dist/src/runtime.js +1 -0
- package/dist/src/serialization.test.js +7 -7
- package/dist/src/snapshotFormatter.js +3 -5
- package/dist/src/snapshotFormatter.test.d.ts +1 -1
- package/dist/src/snapshotFormatter.test.js +50 -50
- package/dist/src/tui.js +1 -1
- package/package.json +5 -2
- package/scripts/generate-release-notes.ts +234 -0
- package/scripts/postinstall.js +1 -1
- package/scripts/silent-column-drop-baseline.json +0 -498
- package/scripts/typed-error-lint-baseline.json +0 -464
- package/skills/webcmd-adapter-author/SKILL.md +216 -213
- package/skills/webcmd-adapter-author/references/adapter-template.md +206 -399
- package/skills/webcmd-adapter-author/references/api-discovery.md +111 -220
- package/skills/webcmd-adapter-author/references/coverage-matrix.md +34 -68
- package/skills/webcmd-adapter-author/references/field-conventions.md +84 -167
- package/skills/webcmd-adapter-author/references/field-decode-playbook.md +60 -146
- package/skills/webcmd-adapter-author/references/jsdom-fixture-pattern.md +111 -178
- package/skills/webcmd-adapter-author/references/output-design.md +47 -125
- package/skills/webcmd-adapter-author/references/site-memory.md +116 -166
- package/skills/webcmd-adapter-author/references/site-recon.md +74 -78
- package/skills/webcmd-adapter-author/references/strategy-selection.md +80 -124
- package/skills/webcmd-adapter-author/references/success-rate-pitfalls.md +80 -105
- package/skills/webcmd-adapter-author/references/typed-errors.md +87 -178
- package/skills/webcmd-autofix/SKILL.md +136 -143
- package/skills/webcmd-sitemap-author/SKILL.md +58 -67
- package/skills/webcmd-sitemap-author/references/sitemap-schema.md +354 -494
- package/skills/webcmd-usage/SKILL.md +106 -97
- package/clis/12306/auth.js +0 -59
- package/clis/12306/me.js +0 -73
- package/clis/12306/orders.js +0 -96
- package/clis/12306/passengers.js +0 -90
- package/clis/12306/price.js +0 -166
- package/clis/12306/stations.js +0 -66
- package/clis/12306/train.js +0 -91
- package/clis/12306/trains.js +0 -166
- package/clis/12306/utils.js +0 -272
- package/clis/12306/utils.test.js +0 -424
- package/clis/1688/assets.js +0 -205
- package/clis/1688/assets.test.js +0 -39
- package/clis/1688/auth.js +0 -46
- package/clis/1688/download.js +0 -77
- package/clis/1688/download.test.js +0 -31
- package/clis/1688/item.js +0 -188
- package/clis/1688/item.test.js +0 -67
- package/clis/1688/search.js +0 -310
- package/clis/1688/search.test.js +0 -75
- package/clis/1688/shared.js +0 -557
- package/clis/1688/shared.test.js +0 -57
- package/clis/1688/store.js +0 -227
- package/clis/1688/store.test.js +0 -62
- package/clis/1point3acres/auth.js +0 -52
- package/clis/1point3acres/digest.js +0 -35
- package/clis/1point3acres/forum.js +0 -51
- package/clis/1point3acres/forums.js +0 -44
- package/clis/1point3acres/hot.js +0 -35
- package/clis/1point3acres/latest.js +0 -35
- package/clis/1point3acres/notifications.js +0 -64
- package/clis/1point3acres/search.js +0 -71
- package/clis/1point3acres/thread.js +0 -117
- package/clis/1point3acres/user.js +0 -77
- package/clis/1point3acres/utils.js +0 -247
- package/clis/36kr/article.js +0 -66
- package/clis/36kr/article.test.js +0 -46
- package/clis/36kr/hot.js +0 -87
- package/clis/36kr/hot.test.js +0 -15
- package/clis/36kr/news.js +0 -52
- package/clis/36kr/news.test.js +0 -85
- package/clis/36kr/search.js +0 -79
- package/clis/51job/company.js +0 -126
- package/clis/51job/detail.js +0 -109
- package/clis/51job/hot.js +0 -56
- package/clis/51job/search.js +0 -80
- package/clis/51job/utils.js +0 -302
- package/clis/51job/utils.test.js +0 -69
- package/clis/aibase/news.js +0 -110
- package/clis/aibase/news.test.js +0 -59
- package/clis/autohome/__fixtures__/catalog.html +0 -11
- package/clis/autohome/__fixtures__/koubei.json +0 -116
- package/clis/autohome/autohome.test.js +0 -115
- package/clis/autohome/brand.js +0 -108
- package/clis/autohome/score.js +0 -103
- package/clis/autohome/utils.js +0 -157
- package/clis/baidu-scholar/search.js +0 -87
- package/clis/baidu-scholar/search.test.js +0 -23
- package/clis/bilibili/auth.js +0 -36
- package/clis/bilibili/comment.js +0 -107
- package/clis/bilibili/comment.test.js +0 -153
- package/clis/bilibili/comments.js +0 -136
- package/clis/bilibili/comments.test.js +0 -142
- package/clis/bilibili/download.js +0 -178
- package/clis/bilibili/download.test.js +0 -173
- package/clis/bilibili/dynamic.js +0 -34
- package/clis/bilibili/dynamic.test.js +0 -68
- package/clis/bilibili/favorite.js +0 -47
- package/clis/bilibili/feed.js +0 -220
- package/clis/bilibili/follow.js +0 -140
- package/clis/bilibili/follow.test.js +0 -203
- package/clis/bilibili/following.js +0 -44
- package/clis/bilibili/history.js +0 -45
- package/clis/bilibili/hot.js +0 -40
- package/clis/bilibili/hot.test.js +0 -17
- package/clis/bilibili/me.js +0 -13
- package/clis/bilibili/ranking.js +0 -25
- package/clis/bilibili/search.js +0 -24
- package/clis/bilibili/subtitle.js +0 -141
- package/clis/bilibili/subtitle.test.js +0 -240
- package/clis/bilibili/summary.js +0 -167
- package/clis/bilibili/summary.test.js +0 -210
- package/clis/bilibili/unfollow.js +0 -121
- package/clis/bilibili/user-videos.js +0 -39
- package/clis/bilibili/utils.js +0 -273
- package/clis/bilibili/utils.test.js +0 -97
- package/clis/bilibili/video.js +0 -155
- package/clis/bilibili/video.test.js +0 -308
- package/clis/boss/auth.js +0 -47
- package/clis/boss/batchgreet.js +0 -61
- package/clis/boss/chatlist.js +0 -116
- package/clis/boss/chatlist.test.js +0 -211
- package/clis/boss/chatmsg.js +0 -117
- package/clis/boss/chatmsg.test.js +0 -230
- package/clis/boss/detail.js +0 -63
- package/clis/boss/exchange.js +0 -46
- package/clis/boss/greet.js +0 -49
- package/clis/boss/invite.js +0 -64
- package/clis/boss/joblist.js +0 -31
- package/clis/boss/mark.js +0 -70
- package/clis/boss/recommend.js +0 -45
- package/clis/boss/resume.js +0 -150
- package/clis/boss/search.js +0 -197
- package/clis/boss/search.test.js +0 -78
- package/clis/boss/send.js +0 -44
- package/clis/boss/stats.js +0 -66
- package/clis/boss/utils.js +0 -468
- package/clis/boss/utils.test.js +0 -34
- package/clis/chaoxing/assignments.js +0 -76
- package/clis/chaoxing/auth.js +0 -54
- package/clis/chaoxing/exams.js +0 -75
- package/clis/chaoxing/utils.js +0 -223
- package/clis/chaoxing/utils.test.js +0 -45
- package/clis/cnki/search.js +0 -61
- package/clis/cnki/search.test.js +0 -18
- package/clis/ctrip/auth.js +0 -50
- package/clis/ctrip/ctrip.test.js +0 -719
- package/clis/ctrip/flight.js +0 -136
- package/clis/ctrip/hotel-search.js +0 -132
- package/clis/ctrip/hotel-suggest.js +0 -45
- package/clis/ctrip/search.js +0 -41
- package/clis/ctrip/utils.js +0 -473
- package/clis/deepseek/ask.js +0 -158
- package/clis/deepseek/ask.test.js +0 -399
- package/clis/deepseek/auth.js +0 -54
- package/clis/deepseek/detail.js +0 -46
- package/clis/deepseek/detail.test.js +0 -81
- package/clis/deepseek/history.js +0 -27
- package/clis/deepseek/new.js +0 -33
- package/clis/deepseek/read.js +0 -25
- package/clis/deepseek/send.js +0 -140
- package/clis/deepseek/send.test.js +0 -107
- package/clis/deepseek/status.js +0 -26
- package/clis/deepseek/utils.js +0 -487
- package/clis/deepseek/utils.test.js +0 -370
- package/clis/dianping/__fixtures__/search.html +0 -168
- package/clis/dianping/__fixtures__/shop.html +0 -6
- package/clis/dianping/auth.js +0 -49
- package/clis/dianping/cityResolver.js +0 -185
- package/clis/dianping/dianping.test.js +0 -578
- package/clis/dianping/search.js +0 -157
- package/clis/dianping/shop.js +0 -173
- package/clis/dianping/utils.js +0 -157
- package/clis/dongchedi/__fixtures__/search.json +0 -60
- package/clis/dongchedi/__fixtures__/series-detail.json +0 -911
- package/clis/dongchedi/__fixtures__/series-score.json +0 -1396
- package/clis/dongchedi/dongchedi.test.js +0 -191
- package/clis/dongchedi/koubei.js +0 -85
- package/clis/dongchedi/models.js +0 -91
- package/clis/dongchedi/score.js +0 -83
- package/clis/dongchedi/search.js +0 -83
- package/clis/dongchedi/series.js +0 -87
- package/clis/dongchedi/specs.js +0 -115
- package/clis/dongchedi/utils.js +0 -180
- package/clis/douban/auth.js +0 -50
- package/clis/douban/book-hot.js +0 -15
- package/clis/douban/download.js +0 -68
- package/clis/douban/download.test.js +0 -170
- package/clis/douban/marks.js +0 -116
- package/clis/douban/movie-hot.js +0 -15
- package/clis/douban/movie-hot.test.js +0 -14
- package/clis/douban/photos.js +0 -35
- package/clis/douban/reviews.js +0 -107
- package/clis/douban/search.js +0 -18
- package/clis/douban/search.test.js +0 -11
- package/clis/douban/subject.js +0 -46
- package/clis/douban/subject.test.js +0 -11
- package/clis/douban/top250.js +0 -68
- package/clis/douban/utils.js +0 -657
- package/clis/douban/utils.test.js +0 -488
- package/clis/doubao/ask.js +0 -40
- package/clis/doubao/auth.js +0 -66
- package/clis/doubao/detail.js +0 -35
- package/clis/doubao/detail.test.js +0 -42
- package/clis/doubao/history.js +0 -30
- package/clis/doubao/history.test.js +0 -37
- package/clis/doubao/meeting-summary.js +0 -41
- package/clis/doubao/meeting-transcript.js +0 -38
- package/clis/doubao/new.js +0 -22
- package/clis/doubao/read.js +0 -21
- package/clis/doubao/send.js +0 -24
- package/clis/doubao/status.js +0 -26
- package/clis/doubao/utils.js +0 -1156
- package/clis/doubao/utils.test.js +0 -396
- package/clis/doubao-app/ask.js +0 -54
- package/clis/doubao-app/dump.js +0 -25
- package/clis/doubao-app/new.js +0 -21
- package/clis/doubao-app/read.js +0 -19
- package/clis/doubao-app/screenshot.js +0 -19
- package/clis/doubao-app/send.js +0 -28
- package/clis/doubao-app/status.js +0 -17
- package/clis/doubao-app/utils.js +0 -110
- package/clis/douyin/_shared/browser-fetch.js +0 -66
- package/clis/douyin/_shared/browser-fetch.test.js +0 -64
- package/clis/douyin/_shared/creation-id.js +0 -5
- package/clis/douyin/_shared/creation-id.test.js +0 -22
- package/clis/douyin/_shared/evaluate-result.js +0 -16
- package/clis/douyin/_shared/imagex-upload.js +0 -53
- package/clis/douyin/_shared/imagex-upload.test.js +0 -87
- package/clis/douyin/_shared/public-api.js +0 -29
- package/clis/douyin/_shared/sts2.js +0 -21
- package/clis/douyin/_shared/sts2.test.js +0 -27
- package/clis/douyin/_shared/text-extra.js +0 -15
- package/clis/douyin/_shared/text-extra.test.js +0 -37
- package/clis/douyin/_shared/timing.js +0 -22
- package/clis/douyin/_shared/timing.test.js +0 -28
- package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
- package/clis/douyin/_shared/tos-upload.js +0 -331
- package/clis/douyin/_shared/tos-upload.test.js +0 -229
- package/clis/douyin/_shared/transcode.js +0 -45
- package/clis/douyin/_shared/transcode.test.js +0 -91
- package/clis/douyin/_shared/vod-upload.js +0 -212
- package/clis/douyin/_shared/vod-upload.test.js +0 -38
- package/clis/douyin/activities.js +0 -23
- package/clis/douyin/activities.test.js +0 -55
- package/clis/douyin/auth.js +0 -39
- package/clis/douyin/collections.js +0 -23
- package/clis/douyin/collections.test.js +0 -45
- package/clis/douyin/delete.js +0 -152
- package/clis/douyin/delete.test.js +0 -100
- package/clis/douyin/draft.js +0 -355
- package/clis/douyin/draft.test.js +0 -335
- package/clis/douyin/drafts.js +0 -24
- package/clis/douyin/drafts.test.js +0 -11
- package/clis/douyin/hashtag.js +0 -114
- package/clis/douyin/hashtag.test.js +0 -171
- package/clis/douyin/location.js +0 -25
- package/clis/douyin/location.test.js +0 -23
- package/clis/douyin/profile.js +0 -29
- package/clis/douyin/profile.test.js +0 -46
- package/clis/douyin/publish-upload-id.test.js +0 -206
- package/clis/douyin/publish.js +0 -341
- package/clis/douyin/publish.test.js +0 -38
- package/clis/douyin/search.js +0 -308
- package/clis/douyin/search.test.js +0 -307
- package/clis/douyin/stats.js +0 -28
- package/clis/douyin/stats.test.js +0 -22
- package/clis/douyin/update.js +0 -32
- package/clis/douyin/update.test.js +0 -11
- package/clis/douyin/user-videos.js +0 -82
- package/clis/douyin/user-videos.test.js +0 -151
- package/clis/douyin/videos.js +0 -52
- package/clis/douyin/videos.test.js +0 -54
- package/clis/eastmoney/_secid.js +0 -78
- package/clis/eastmoney/announcement.js +0 -53
- package/clis/eastmoney/convertible.js +0 -74
- package/clis/eastmoney/etf.js +0 -66
- package/clis/eastmoney/holders.js +0 -79
- package/clis/eastmoney/hot-rank.js +0 -51
- package/clis/eastmoney/hot-rank.test.js +0 -59
- package/clis/eastmoney/index-board.js +0 -97
- package/clis/eastmoney/kline.js +0 -88
- package/clis/eastmoney/kuaixun.js +0 -55
- package/clis/eastmoney/longhu.js +0 -68
- package/clis/eastmoney/money-flow.js +0 -79
- package/clis/eastmoney/northbound.js +0 -58
- package/clis/eastmoney/quote.js +0 -108
- package/clis/eastmoney/rank.js +0 -95
- package/clis/eastmoney/sectors.js +0 -77
- package/clis/flomo/auth.js +0 -55
- package/clis/flomo/memos.js +0 -228
- package/clis/flomo/memos.test.js +0 -144
- package/clis/gitee/auth.js +0 -41
- package/clis/gitee/index.js +0 -3
- package/clis/gitee/search.js +0 -137
- package/clis/gitee/search.test.js +0 -65
- package/clis/gitee/trending.js +0 -568
- package/clis/gitee/user.js +0 -200
- package/clis/gitee/user.test.js +0 -63
- package/clis/gov-law/commands.test.js +0 -39
- package/clis/gov-law/recent.js +0 -22
- package/clis/gov-law/search.js +0 -41
- package/clis/gov-law/shared.js +0 -51
- package/clis/gov-policy/__fixtures__/recent.html +0 -16
- package/clis/gov-policy/__fixtures__/search.html +0 -41
- package/clis/gov-policy/gov-policy.test.js +0 -224
- package/clis/gov-policy/recent.js +0 -90
- package/clis/gov-policy/search.js +0 -91
- package/clis/gov-policy/utils.js +0 -54
- package/clis/guazi/__fixtures__/detail.html +0 -7
- package/clis/guazi/__fixtures__/list.html +0 -5
- package/clis/guazi/browse.js +0 -95
- package/clis/guazi/car.js +0 -110
- package/clis/guazi/guazi.test.js +0 -126
- package/clis/guazi/utils.js +0 -133
- package/clis/huodongxing/events.js +0 -322
- package/clis/huodongxing/events.test.js +0 -296
- package/clis/hupu/__fixtures__/hot-home.html +0 -64
- package/clis/hupu/auth.js +0 -47
- package/clis/hupu/detail.js +0 -72
- package/clis/hupu/hot.js +0 -163
- package/clis/hupu/hot.test.js +0 -224
- package/clis/hupu/like.js +0 -76
- package/clis/hupu/mentions.js +0 -160
- package/clis/hupu/reply.js +0 -72
- package/clis/hupu/search.js +0 -60
- package/clis/hupu/unlike.js +0 -76
- package/clis/hupu/utils.js +0 -319
- package/clis/jd/add-cart.js +0 -72
- package/clis/jd/auth.js +0 -46
- package/clis/jd/cart.js +0 -80
- package/clis/jd/commands.test.js +0 -41
- package/clis/jd/detail.js +0 -63
- package/clis/jd/item.js +0 -730
- package/clis/jd/item.test.js +0 -354
- package/clis/jd/item.test.ts +0 -517
- package/clis/jd/reviews.js +0 -55
- package/clis/jd/search.js +0 -66
- package/clis/jianyu/auth.js +0 -62
- package/clis/jianyu/detail.js +0 -21
- package/clis/jianyu/search.js +0 -634
- package/clis/jianyu/search.test.js +0 -153
- package/clis/jianyu/shared/china-bid-search.js +0 -165
- package/clis/jianyu/shared/procurement-contract.js +0 -324
- package/clis/jianyu/shared/procurement-contract.test.js +0 -72
- package/clis/jianyu/shared/procurement-detail.js +0 -107
- package/clis/jianyu/shared/procurement-detail.test.js +0 -84
- package/clis/jike/auth.js +0 -48
- package/clis/jike/comment.js +0 -107
- package/clis/jike/create.js +0 -106
- package/clis/jike/feed.js +0 -68
- package/clis/jike/like.js +0 -61
- package/clis/jike/notifications.js +0 -169
- package/clis/jike/post.js +0 -72
- package/clis/jike/read.test.js +0 -86
- package/clis/jike/repost.js +0 -103
- package/clis/jike/search.js +0 -68
- package/clis/jike/topic.js +0 -65
- package/clis/jike/user.js +0 -65
- package/clis/jike/utils.js +0 -25
- package/clis/jimeng/auth.js +0 -46
- package/clis/jimeng/generate.js +0 -84
- package/clis/jimeng/history.js +0 -48
- package/clis/jimeng/new.js +0 -44
- package/clis/jimeng/workspaces.js +0 -42
- package/clis/juejin/hot.js +0 -37
- package/clis/juejin/juejin.test.js +0 -241
- package/clis/juejin/recommend.js +0 -61
- package/clis/juejin/utils.js +0 -199
- package/clis/ke/auth.js +0 -46
- package/clis/ke/chengjiao.js +0 -78
- package/clis/ke/ershoufang.js +0 -101
- package/clis/ke/utils.js +0 -104
- package/clis/ke/xiaoqu.js +0 -78
- package/clis/ke/zufang.js +0 -95
- package/clis/kimi/_utils.js +0 -110
- package/clis/kimi/audit-extras.js +0 -268
- package/clis/kimi/auth.js +0 -57
- package/clis/kimi/chat.js +0 -470
- package/clis/kimi/kimi.test.js +0 -187
- package/clis/kimi/storage.js +0 -169
- package/clis/kimi/ui.js +0 -314
- package/clis/kimi/usage.js +0 -144
- package/clis/linux-do/auth.js +0 -55
- package/clis/linux-do/categories.js +0 -50
- package/clis/linux-do/feed.js +0 -395
- package/clis/linux-do/feed.test.js +0 -153
- package/clis/linux-do/search.js +0 -29
- package/clis/linux-do/tags.js +0 -28
- package/clis/linux-do/topic-content.js +0 -155
- package/clis/linux-do/topic-content.test.js +0 -59
- package/clis/linux-do/topic.js +0 -53
- package/clis/linux-do/user-posts.js +0 -57
- package/clis/linux-do/user-topics.js +0 -37
- package/clis/maimai/auth.js +0 -47
- package/clis/maimai/search-talents.js +0 -192
- package/clis/maimai/search-talents.test.js +0 -29
- package/clis/mubu/doc.js +0 -41
- package/clis/mubu/docs.js +0 -44
- package/clis/mubu/notes.js +0 -245
- package/clis/mubu/recent.js +0 -28
- package/clis/mubu/search.js +0 -63
- package/clis/mubu/utils.js +0 -304
- package/clis/nowcoder/auth.js +0 -65
- package/clis/nowcoder/companies.js +0 -24
- package/clis/nowcoder/creators.js +0 -28
- package/clis/nowcoder/detail.js +0 -62
- package/clis/nowcoder/experience.js +0 -37
- package/clis/nowcoder/hot.js +0 -25
- package/clis/nowcoder/jobs.js +0 -22
- package/clis/nowcoder/notifications.js +0 -30
- package/clis/nowcoder/papers.js +0 -41
- package/clis/nowcoder/practice.js +0 -38
- package/clis/nowcoder/recommend.js +0 -31
- package/clis/nowcoder/referral.js +0 -40
- package/clis/nowcoder/salary.js +0 -41
- package/clis/nowcoder/search.js +0 -50
- package/clis/nowcoder/suggest.js +0 -34
- package/clis/nowcoder/topics.js +0 -28
- package/clis/nowcoder/trending.js +0 -26
- package/clis/ones/common.js +0 -144
- package/clis/ones/enrich-tasks.js +0 -37
- package/clis/ones/login.js +0 -81
- package/clis/ones/logout.js +0 -18
- package/clis/ones/me.js +0 -31
- package/clis/ones/my-tasks.js +0 -121
- package/clis/ones/resolve-labels.js +0 -64
- package/clis/ones/task-helpers.js +0 -212
- package/clis/ones/task-helpers.test.js +0 -12
- package/clis/ones/task.js +0 -67
- package/clis/ones/tasks.js +0 -80
- package/clis/ones/token-info.js +0 -43
- package/clis/ones/worklog.js +0 -268
- package/clis/ones/worklog.test.js +0 -20
- package/clis/powerchina/auth.js +0 -52
- package/clis/powerchina/search.js +0 -251
- package/clis/powerchina/search.test.js +0 -93
- package/clis/quark/auth.js +0 -47
- package/clis/quark/ls.js +0 -64
- package/clis/quark/mkdir.js +0 -37
- package/clis/quark/mv.js +0 -54
- package/clis/quark/rename.js +0 -27
- package/clis/quark/rm.js +0 -25
- package/clis/quark/save.js +0 -81
- package/clis/quark/share-tree.js +0 -46
- package/clis/quark/utils.js +0 -146
- package/clis/quark/utils.test.js +0 -58
- package/clis/qwen/ask.js +0 -104
- package/clis/qwen/ask.test.js +0 -36
- package/clis/qwen/auth.js +0 -56
- package/clis/qwen/detail.js +0 -62
- package/clis/qwen/history.js +0 -61
- package/clis/qwen/image.js +0 -179
- package/clis/qwen/new.js +0 -23
- package/clis/qwen/read.js +0 -41
- package/clis/qwen/send.js +0 -55
- package/clis/qwen/status.js +0 -37
- package/clis/qwen/utils.js +0 -461
- package/clis/qwen/utils.test.js +0 -128
- package/clis/rednote/auth.js +0 -52
- package/clis/rednote/comments.js +0 -85
- package/clis/rednote/download.js +0 -59
- package/clis/rednote/feed.js +0 -27
- package/clis/rednote/navigation.test.js +0 -26
- package/clis/rednote/note.js +0 -68
- package/clis/rednote/notifications.js +0 -139
- package/clis/rednote/rednote.test.js +0 -240
- package/clis/rednote/search.js +0 -107
- package/clis/rednote/user.js +0 -55
- package/clis/sinablog/article.js +0 -15
- package/clis/sinablog/hot.js +0 -15
- package/clis/sinablog/search.js +0 -52
- package/clis/sinablog/user.js +0 -16
- package/clis/sinablog/utils.js +0 -186
- package/clis/sinafinance/news.js +0 -62
- package/clis/sinafinance/rolling-news.js +0 -41
- package/clis/sinafinance/stock-rank.js +0 -66
- package/clis/sinafinance/stock.js +0 -121
- package/clis/sinafinance/stock.test.js +0 -59
- package/clis/smzdm/search.js +0 -149
- package/clis/smzdm/search.test.js +0 -114
- package/clis/taobao/add-cart.js +0 -150
- package/clis/taobao/auth.js +0 -58
- package/clis/taobao/cart.js +0 -96
- package/clis/taobao/commands.test.js +0 -41
- package/clis/taobao/detail.js +0 -71
- package/clis/taobao/reviews.js +0 -77
- package/clis/taobao/search.js +0 -97
- package/clis/tdx/hot-rank.js +0 -48
- package/clis/tdx/hot-rank.test.js +0 -59
- package/clis/ths/hot-rank.js +0 -50
- package/clis/ths/hot-rank.test.js +0 -64
- package/clis/tieba/commands.test.js +0 -79
- package/clis/tieba/hot.js +0 -48
- package/clis/tieba/posts.js +0 -86
- package/clis/tieba/read.js +0 -141
- package/clis/tieba/search.js +0 -109
- package/clis/tieba/utils.js +0 -240
- package/clis/tieba/utils.test.js +0 -290
- package/clis/toutiao/articles.js +0 -55
- package/clis/toutiao/auth.js +0 -70
- package/clis/toutiao/hot.js +0 -63
- package/clis/toutiao/toutiao.test.js +0 -378
- package/clis/toutiao/utils.js +0 -161
- package/clis/trae-cn/activity.js +0 -22
- package/clis/trae-cn/approve.js +0 -52
- package/clis/trae-cn/ask.js +0 -99
- package/clis/trae-cn/dump.js +0 -5
- package/clis/trae-cn/export.js +0 -40
- package/clis/trae-cn/model.js +0 -22
- package/clis/trae-cn/new.js +0 -63
- package/clis/trae-cn/read.js +0 -23
- package/clis/trae-cn/screenshot.js +0 -5
- package/clis/trae-cn/select-model.js +0 -25
- package/clis/trae-cn/send.js +0 -23
- package/clis/trae-cn/setup.js +0 -75
- package/clis/trae-cn/status.js +0 -27
- package/clis/trae-cn/targets.js +0 -96
- package/clis/trae-cn/trae-cn.test.js +0 -412
- package/clis/trae-cn/utils.js +0 -750
- package/clis/trae-cn/watch.js +0 -119
- package/clis/uisdc/news.js +0 -105
- package/clis/uisdc/news.test.js +0 -66
- package/clis/v2ex/auth.js +0 -44
- package/clis/v2ex/daily.js +0 -99
- package/clis/v2ex/hot.js +0 -26
- package/clis/v2ex/latest.js +0 -26
- package/clis/v2ex/me.js +0 -100
- package/clis/v2ex/member.js +0 -28
- package/clis/v2ex/node.js +0 -39
- package/clis/v2ex/nodes.js +0 -26
- package/clis/v2ex/notifications.js +0 -72
- package/clis/v2ex/replies.js +0 -27
- package/clis/v2ex/topic.js +0 -31
- package/clis/v2ex/user.js +0 -34
- package/clis/wanfang/search.js +0 -66
- package/clis/wanfang/search.test.js +0 -23
- package/clis/wechat-channels/auth.js +0 -62
- package/clis/wechat-channels/publish.js +0 -732
- package/clis/wechat-channels/publish.test.js +0 -144
- package/clis/weibo/auth.js +0 -53
- package/clis/weibo/comments.js +0 -53
- package/clis/weibo/delete.js +0 -172
- package/clis/weibo/delete.test.js +0 -94
- package/clis/weibo/envelope.test.js +0 -85
- package/clis/weibo/favorites.js +0 -170
- package/clis/weibo/favorites.test.js +0 -114
- package/clis/weibo/feed.js +0 -69
- package/clis/weibo/hot.js +0 -39
- package/clis/weibo/me.js +0 -75
- package/clis/weibo/post.js +0 -75
- package/clis/weibo/publish.js +0 -306
- package/clis/weibo/publish.test.js +0 -192
- package/clis/weibo/search.js +0 -80
- package/clis/weibo/user-posts.js +0 -234
- package/clis/weibo/user-posts.test.js +0 -92
- package/clis/weibo/user.js +0 -63
- package/clis/weibo/utils.js +0 -59
- package/clis/weibo/utils.test.js +0 -36
- package/clis/weixin/create-draft.js +0 -226
- package/clis/weixin/download.js +0 -371
- package/clis/weixin/download.test.js +0 -106
- package/clis/weixin/drafts.js +0 -66
- package/clis/weixin/drafts.test.js +0 -69
- package/clis/weixin/search.js +0 -157
- package/clis/weixin/search.test.js +0 -227
- package/clis/weread/ai-outline.js +0 -171
- package/clis/weread/ai-outline.test.js +0 -83
- package/clis/weread/auth.js +0 -59
- package/clis/weread/book-search.js +0 -438
- package/clis/weread/book-search.test.js +0 -242
- package/clis/weread/book.js +0 -233
- package/clis/weread/commands.test.js +0 -398
- package/clis/weread/highlights.js +0 -24
- package/clis/weread/notebooks.js +0 -22
- package/clis/weread/notes.js +0 -30
- package/clis/weread/private-api-regression.test.js +0 -369
- package/clis/weread/ranking.js +0 -29
- package/clis/weread/search-regression.test.js +0 -494
- package/clis/weread/search.js +0 -186
- package/clis/weread/shelf.js +0 -66
- package/clis/weread/utils.js +0 -321
- package/clis/weread/utils.test.js +0 -128
- package/clis/weread-official/book.js +0 -135
- package/clis/weread-official/commands.test.js +0 -385
- package/clis/weread-official/discover.js +0 -107
- package/clis/weread-official/list-apis.js +0 -95
- package/clis/weread-official/notes.js +0 -171
- package/clis/weread-official/readdata.js +0 -158
- package/clis/weread-official/review.js +0 -93
- package/clis/weread-official/search.js +0 -106
- package/clis/weread-official/shelf.js +0 -97
- package/clis/weread-official/utils.js +0 -293
- package/clis/weread-official/utils.test.js +0 -242
- package/clis/xianyu/auth.js +0 -68
- package/clis/xianyu/chat.js +0 -74
- package/clis/xianyu/chat.test.js +0 -84
- package/clis/xianyu/im.js +0 -322
- package/clis/xianyu/im.test.js +0 -253
- package/clis/xianyu/inbox.js +0 -96
- package/clis/xianyu/item.js +0 -153
- package/clis/xianyu/item.test.js +0 -56
- package/clis/xianyu/messages.js +0 -91
- package/clis/xianyu/publish.js +0 -485
- package/clis/xianyu/publish.test.js +0 -220
- package/clis/xianyu/reply.js +0 -82
- package/clis/xianyu/search.js +0 -262
- package/clis/xianyu/search.test.js +0 -104
- package/clis/xianyu/utils.js +0 -8
- package/clis/xiaoe/auth.js +0 -55
- package/clis/xiaoe/catalog.js +0 -227
- package/clis/xiaoe/content.js +0 -175
- package/clis/xiaoe/courses.js +0 -127
- package/clis/xiaoe/detail.js +0 -36
- package/clis/xiaoe/play-url.js +0 -121
- package/clis/xiaoe/xiaoe.test.js +0 -486
- package/clis/xiaohongshu/ask.js +0 -426
- package/clis/xiaohongshu/ask.test.js +0 -271
- package/clis/xiaohongshu/auth.js +0 -53
- package/clis/xiaohongshu/collection-helpers.js +0 -283
- package/clis/xiaohongshu/collection-helpers.test.js +0 -125
- package/clis/xiaohongshu/comments.js +0 -228
- package/clis/xiaohongshu/comments.test.js +0 -320
- package/clis/xiaohongshu/creator-note-detail.js +0 -482
- package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
- package/clis/xiaohongshu/creator-notes-summary.js +0 -98
- package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
- package/clis/xiaohongshu/creator-notes.js +0 -479
- package/clis/xiaohongshu/creator-notes.test.js +0 -281
- package/clis/xiaohongshu/creator-profile.js +0 -55
- package/clis/xiaohongshu/creator-stats.js +0 -76
- package/clis/xiaohongshu/creator-stats.test.js +0 -24
- package/clis/xiaohongshu/delete-note.js +0 -260
- package/clis/xiaohongshu/delete-note.test.js +0 -172
- package/clis/xiaohongshu/download.js +0 -249
- package/clis/xiaohongshu/download.test.js +0 -339
- package/clis/xiaohongshu/draft-clear.js +0 -91
- package/clis/xiaohongshu/draft-delete.js +0 -103
- package/clis/xiaohongshu/draft-open.js +0 -43
- package/clis/xiaohongshu/draft-utils.js +0 -142
- package/clis/xiaohongshu/drafts.js +0 -28
- package/clis/xiaohongshu/drafts.test.js +0 -172
- package/clis/xiaohongshu/feed.js +0 -163
- package/clis/xiaohongshu/feed.test.js +0 -126
- package/clis/xiaohongshu/follow.js +0 -226
- package/clis/xiaohongshu/follow.test.js +0 -211
- package/clis/xiaohongshu/liked.js +0 -29
- package/clis/xiaohongshu/liked.test.js +0 -82
- package/clis/xiaohongshu/navigation.test.js +0 -38
- package/clis/xiaohongshu/note-helpers.js +0 -69
- package/clis/xiaohongshu/note.js +0 -104
- package/clis/xiaohongshu/note.test.js +0 -249
- package/clis/xiaohongshu/notifications.js +0 -46
- package/clis/xiaohongshu/publish.js +0 -1423
- package/clis/xiaohongshu/publish.test.js +0 -1141
- package/clis/xiaohongshu/saved.js +0 -29
- package/clis/xiaohongshu/saved.test.js +0 -143
- package/clis/xiaohongshu/search.js +0 -330
- package/clis/xiaohongshu/search.test.js +0 -325
- package/clis/xiaohongshu/unfollow.js +0 -285
- package/clis/xiaohongshu/user-helpers.js +0 -78
- package/clis/xiaohongshu/user-helpers.test.js +0 -160
- package/clis/xiaohongshu/user.js +0 -140
- package/clis/xiaohongshu/user.test.js +0 -141
- package/clis/xiaoyuzhou/auth.js +0 -303
- package/clis/xiaoyuzhou/auth.test.js +0 -124
- package/clis/xiaoyuzhou/download.js +0 -54
- package/clis/xiaoyuzhou/download.test.js +0 -135
- package/clis/xiaoyuzhou/episode.js +0 -34
- package/clis/xiaoyuzhou/podcast-episodes.js +0 -41
- package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
- package/clis/xiaoyuzhou/podcast.js +0 -33
- package/clis/xiaoyuzhou/transcript.js +0 -77
- package/clis/xiaoyuzhou/transcript.test.js +0 -195
- package/clis/xiaoyuzhou/utils.js +0 -15
- package/clis/xiaoyuzhou/utils.test.js +0 -39
- package/clis/xueqiu/auth.js +0 -63
- package/clis/xueqiu/comments.js +0 -355
- package/clis/xueqiu/comments.test.js +0 -696
- package/clis/xueqiu/danjuan-utils.js +0 -126
- package/clis/xueqiu/danjuan-utils.test.js +0 -41
- package/clis/xueqiu/earnings-date.js +0 -45
- package/clis/xueqiu/feed.js +0 -39
- package/clis/xueqiu/fund-holdings.js +0 -29
- package/clis/xueqiu/fund-snapshot.js +0 -26
- package/clis/xueqiu/groups.js +0 -23
- package/clis/xueqiu/hot-stock.js +0 -32
- package/clis/xueqiu/hot.js +0 -37
- package/clis/xueqiu/kline.js +0 -44
- package/clis/xueqiu/search.js +0 -37
- package/clis/xueqiu/stock.js +0 -65
- package/clis/xueqiu/utils.js +0 -48
- package/clis/xueqiu/utils.test.js +0 -26
- package/clis/xueqiu/watchlist.js +0 -37
- package/clis/youdao/note.js +0 -258
- package/clis/youdao/note.test.js +0 -99
- package/clis/yuanbao/ask.js +0 -362
- package/clis/yuanbao/ask.test.js +0 -124
- package/clis/yuanbao/auth.js +0 -59
- package/clis/yuanbao/detail.js +0 -65
- package/clis/yuanbao/history.js +0 -51
- package/clis/yuanbao/new.js +0 -72
- package/clis/yuanbao/new.test.js +0 -30
- package/clis/yuanbao/read.js +0 -38
- package/clis/yuanbao/send.js +0 -57
- package/clis/yuanbao/shared.js +0 -341
- package/clis/yuanbao/shared.test.js +0 -80
- package/clis/yuanbao/status.js +0 -44
- package/clis/zhihu/answer-comments.js +0 -280
- package/clis/zhihu/answer-comments.test.js +0 -287
- package/clis/zhihu/answer-detail.js +0 -216
- package/clis/zhihu/answer-detail.test.js +0 -338
- package/clis/zhihu/answer.js +0 -54
- package/clis/zhihu/answer.test.js +0 -54
- package/clis/zhihu/auth.js +0 -59
- package/clis/zhihu/collection.js +0 -199
- package/clis/zhihu/collection.test.js +0 -337
- package/clis/zhihu/collections.js +0 -128
- package/clis/zhihu/collections.test.js +0 -182
- package/clis/zhihu/comment.js +0 -55
- package/clis/zhihu/comment.test.js +0 -50
- package/clis/zhihu/download.js +0 -80
- package/clis/zhihu/download.test.js +0 -12
- package/clis/zhihu/favorite.js +0 -87
- package/clis/zhihu/favorite.test.js +0 -59
- package/clis/zhihu/follow.js +0 -50
- package/clis/zhihu/follow.test.js +0 -42
- package/clis/zhihu/followers.js +0 -40
- package/clis/zhihu/followers.test.js +0 -42
- package/clis/zhihu/following.js +0 -40
- package/clis/zhihu/following.test.js +0 -44
- package/clis/zhihu/hot.js +0 -44
- package/clis/zhihu/like.js +0 -47
- package/clis/zhihu/like.test.js +0 -41
- package/clis/zhihu/paginate.js +0 -128
- package/clis/zhihu/pins.js +0 -41
- package/clis/zhihu/pins.test.js +0 -44
- package/clis/zhihu/question.js +0 -113
- package/clis/zhihu/question.test.js +0 -251
- package/clis/zhihu/recommend.js +0 -103
- package/clis/zhihu/recommend.test.js +0 -143
- package/clis/zhihu/search.js +0 -206
- package/clis/zhihu/search.test.js +0 -198
- package/clis/zhihu/target.js +0 -91
- package/clis/zhihu/target.test.js +0 -77
- package/clis/zhihu/text.js +0 -29
- package/clis/zhihu/text.test.js +0 -24
- package/clis/zhihu/user-answers.js +0 -41
- package/clis/zhihu/user-answers.test.js +0 -69
- package/clis/zhihu/user-arg.js +0 -34
- package/clis/zhihu/user-articles.js +0 -40
- package/clis/zhihu/user-articles.test.js +0 -44
- package/clis/zhihu/user.js +0 -59
- package/clis/zhihu/user.test.js +0 -73
- package/clis/zhihu/write-shared.js +0 -228
- package/clis/zhihu/write-shared.test.js +0 -176
- package/clis/zsxq/auth.js +0 -68
- package/clis/zsxq/dynamics.js +0 -48
- package/clis/zsxq/groups.js +0 -33
- package/clis/zsxq/search.js +0 -44
- package/clis/zsxq/search.test.js +0 -24
- package/clis/zsxq/topic.js +0 -50
- package/clis/zsxq/topic.test.js +0 -30
- package/clis/zsxq/topics.js +0 -26
- package/clis/zsxq/topics.test.js +0 -24
- package/clis/zsxq/utils.js +0 -233
- package/clis/zsxq/utils.test.js +0 -31
- package/dist/src/weixin-download.test.js +0 -45
- package/skills/webcmd-adapter-author/references/site-memory/bilibili.md +0 -70
- package/skills/webcmd-adapter-author/references/site-memory/eastmoney.md +0 -70
- package/skills/webcmd-adapter-author/references/site-memory/tonghuashun.md +0 -51
- package/skills/webcmd-adapter-author/references/site-memory/xueqiu.md +0 -58
- /package/{clis/douyin/_shared/types.js → dist/src/browser/profile.test.d.ts} +0 -0
- /package/dist/src/{weixin-download.test.d.ts → generate-release-notes-cli.test.d.ts} +0 -0
|
@@ -134,7 +134,7 @@ function summarizeApiError(parsed, fallback) {
|
|
|
134
134
|
messages.push(`${key}: ${String(value)}`);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
if (messages.length) return messages.join('
|
|
137
|
+
if (messages.length) return messages.join(' \u00b7 ');
|
|
138
138
|
}
|
|
139
139
|
if (typeof parsed === 'string' && parsed.trim()) return parsed.trim().slice(0, 300);
|
|
140
140
|
return fallback;
|
package/clis/booking/search.js
CHANGED
|
@@ -144,19 +144,19 @@ const EXTRACTOR = `
|
|
|
144
144
|
|
|
145
145
|
const reviewTextRaw = trim(card.querySelector('[data-testid=review-score]')?.textContent);
|
|
146
146
|
// Booking renders the score twice (a11y + visual), text reads like "Scored 8.6 8.6 Very Good 6,151 reviews"
|
|
147
|
-
// or "
|
|
147
|
+
// or "rating8.68.6great 6,151guest reviews". Take only the first numeric occurrence.
|
|
148
148
|
const scoreMatch = reviewTextRaw.match(/(\\d{1,2})\\.(\\d)/);
|
|
149
149
|
const reviewScore = scoreMatch ? Number(scoreMatch[1] + '.' + scoreMatch[2]) : null;
|
|
150
150
|
|
|
151
|
-
const countMatch = reviewTextRaw.match(/([0-9][0-9,]*)\\s*(?:reviews|reseñas|avis|recensioni
|
|
151
|
+
const countMatch = reviewTextRaw.match(/([0-9][0-9,]*)\\s*(?:reviews|reseñas|avis|recensioni|guest reviews|comments|レビュー|리뷰)/i);
|
|
152
152
|
const reviewCount = countMatch ? Number(countMatch[1].replace(/,/g, '')) : null;
|
|
153
153
|
|
|
154
|
-
// Star rating: aria-label often "5 out of 5" / "4
|
|
154
|
+
// Star rating: aria-label often "5 out of 5" / "4 localized text (full score 5 localized text)" / "Hôtel 4 étoiles"
|
|
155
155
|
let starRating = null;
|
|
156
156
|
const starEl = card.querySelector('[data-testid=rating-stars], [data-testid=quality-rating]');
|
|
157
157
|
if (starEl) {
|
|
158
158
|
const aria = starEl.getAttribute('aria-label') || starEl.textContent || '';
|
|
159
|
-
const m = aria.match(/(\\d)(?:\\s*(?:out of
|
|
159
|
+
const m = aria.match(/(\\d)(?:\\s*(?:out of|\\/|localized text|stars|stars?|étoiles?)|\\s*$)/i);
|
|
160
160
|
if (m) starRating = Number(m[1]);
|
|
161
161
|
if (starRating == null) {
|
|
162
162
|
const count = starEl.querySelectorAll('svg, [aria-hidden=true]').length;
|
package/clis/chatgpt/ask.js
CHANGED
|
@@ -52,8 +52,8 @@ export const askCommand = cli({
|
|
|
52
52
|
{ name: 'conversation', valueRequired: true, help: 'Continue an existing ChatGPT conversation ID or /c/<id> URL' },
|
|
53
53
|
{ name: 'project', valueRequired: true, help: 'Start a new chat inside a ChatGPT project ID or /g/g-p-<id> URL' },
|
|
54
54
|
{ name: 'wait', type: 'boolean', default: true, help: 'Wait for the assistant response after sending' },
|
|
55
|
-
{ name: 'deep-research', type: 'boolean', default: false, help: 'Enable ChatGPT
|
|
56
|
-
{ name: 'web-search', type: 'boolean', default: false, help: 'Enable ChatGPT
|
|
55
|
+
{ name: 'deep-research', type: 'boolean', default: false, help: 'Enable ChatGPT Deep Research (Deep Research)' },
|
|
56
|
+
{ name: 'web-search', type: 'boolean', default: false, help: 'Enable ChatGPT Web Search (Web Search)' },
|
|
57
57
|
],
|
|
58
58
|
columns: ['conversationId', 'conversationUrl', 'tool', 'response'],
|
|
59
59
|
func: async (page, kwargs) => {
|
package/clis/chatgpt/utils.js
CHANGED
|
@@ -12,44 +12,44 @@ export const CHATGPT_URL = 'https://chatgpt.com';
|
|
|
12
12
|
const CHATGPT_MODEL_TARGETS = {
|
|
13
13
|
fast: {
|
|
14
14
|
label: 'Fast',
|
|
15
|
-
labels: ['Fast', 'Speed', 'Instant', '
|
|
16
|
-
optionLabels: ['Fast', 'Speed', 'Instant', '
|
|
15
|
+
labels: ['Fast', 'Speed', 'Instant', 'fast', 'localized text'],
|
|
16
|
+
optionLabels: ['Fast', 'Speed', 'Instant', 'fast', 'localized text'],
|
|
17
17
|
testIds: ['model-switcher-gpt-5-5'],
|
|
18
18
|
intelligenceOrder: 0,
|
|
19
|
-
aliases: ['speed', 'instant', '
|
|
19
|
+
aliases: ['speed', 'instant', 'fast'],
|
|
20
20
|
},
|
|
21
21
|
balanced: {
|
|
22
22
|
label: 'Balanced',
|
|
23
|
-
labels: ['Balanced', 'Balance', 'Medium', '
|
|
24
|
-
optionLabels: ['Balanced', 'Balance', 'Medium', '
|
|
23
|
+
labels: ['Balanced', 'Balance', 'Medium', 'balanced'],
|
|
24
|
+
optionLabels: ['Balanced', 'Balance', 'Medium', 'balanced'],
|
|
25
25
|
testIds: [],
|
|
26
26
|
intelligenceOrder: 1,
|
|
27
|
-
aliases: ['balance', 'medium', '
|
|
27
|
+
aliases: ['balance', 'medium', 'balanced'],
|
|
28
28
|
},
|
|
29
29
|
advanced: {
|
|
30
30
|
label: 'Advanced',
|
|
31
|
-
labels: ['Advanced', 'High', 'Thinking', '
|
|
32
|
-
optionLabels: ['Advanced', 'High', 'Thinking', '
|
|
31
|
+
labels: ['Advanced', 'High', 'Thinking', 'advanced', 'thinking'],
|
|
32
|
+
optionLabels: ['Advanced', 'High', 'Thinking', 'advanced', 'thinking'],
|
|
33
33
|
testIds: ['model-switcher-gpt-5-5-thinking'],
|
|
34
34
|
intelligenceOrder: 2,
|
|
35
|
-
aliases: ['high', 'thinking', '
|
|
35
|
+
aliases: ['high', 'thinking', 'advanced'],
|
|
36
36
|
modelConfig: { modelSlug: 'gpt-5-5-thinking', effort: 'extended' },
|
|
37
37
|
},
|
|
38
38
|
'very-high': {
|
|
39
39
|
label: 'Very High',
|
|
40
|
-
labels: ['Very High', 'Extra High', 'Ultra', 'XHigh', 'X-High', '
|
|
41
|
-
optionLabels: ['Very High', 'Extra High', 'Ultra', 'XHigh', 'X-High', '
|
|
40
|
+
labels: ['Very High', 'Extra High', 'Ultra', 'XHigh', 'X-High', 'very high'],
|
|
41
|
+
optionLabels: ['Very High', 'Extra High', 'Ultra', 'XHigh', 'X-High', 'very high'],
|
|
42
42
|
testIds: [],
|
|
43
43
|
intelligenceOrder: 3,
|
|
44
|
-
aliases: ['ultra', 'xhigh', 'x-high', 'extra-high', '
|
|
44
|
+
aliases: ['ultra', 'xhigh', 'x-high', 'extra-high', 'very high'],
|
|
45
45
|
},
|
|
46
46
|
pro: {
|
|
47
47
|
label: 'Pro',
|
|
48
|
-
labels: ['Pro', 'Professional', '
|
|
49
|
-
optionLabels: ['
|
|
48
|
+
labels: ['Pro', 'Professional', 'professional', 'professional'],
|
|
49
|
+
optionLabels: ['professional', 'Pro', 'Professional', 'professional'],
|
|
50
50
|
testIds: ['model-switcher-gpt-5-5-pro'],
|
|
51
51
|
intelligenceOrder: 4,
|
|
52
|
-
aliases: ['professional', '
|
|
52
|
+
aliases: ['professional', 'professional'],
|
|
53
53
|
modelConfig: { modelSlug: 'gpt-5-5-pro', effort: 'standard' },
|
|
54
54
|
},
|
|
55
55
|
};
|
|
@@ -66,8 +66,8 @@ function debugChatGPTModel(message) {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const CHATGPT_TOOL_OPTIONS = {
|
|
69
|
-
'deep-research': { label: 'Deep Research', labels: ['
|
|
70
|
-
'web-search': { label: 'Web Search', labels: ['
|
|
69
|
+
'deep-research': { label: 'Deep Research', labels: ['Deep Research', 'Deep Research'] },
|
|
70
|
+
'web-search': { label: 'Web Search', labels: ['Web Search', 'Search', 'Web Search', 'Search'] },
|
|
71
71
|
};
|
|
72
72
|
export const CHATGPT_TOOL_CHOICES = Object.keys(CHATGPT_TOOL_OPTIONS);
|
|
73
73
|
|
|
@@ -76,9 +76,9 @@ const COMPOSER_SELECTORS = [
|
|
|
76
76
|
'[contenteditable="true"][role="textbox"]',
|
|
77
77
|
'#prompt-textarea[contenteditable="true"]',
|
|
78
78
|
'[aria-label="Chat with ChatGPT"]',
|
|
79
|
-
'[aria-label="
|
|
79
|
+
'[aria-label="localized text ChatGPT chat"]',
|
|
80
80
|
'[placeholder="Ask anything"]',
|
|
81
|
-
'[placeholder="
|
|
81
|
+
'[placeholder="Ask anything,ask away"]',
|
|
82
82
|
'#prompt-textarea',
|
|
83
83
|
'[data-testid="prompt-textarea"]',
|
|
84
84
|
];
|
|
@@ -90,13 +90,13 @@ const SEND_BUTTON_LABELS = [
|
|
|
90
90
|
'Send prompt',
|
|
91
91
|
'Send message',
|
|
92
92
|
'Send',
|
|
93
|
-
'
|
|
94
|
-
'
|
|
95
|
-
'
|
|
93
|
+
'Send',
|
|
94
|
+
'Send message',
|
|
95
|
+
'Send prompt',
|
|
96
96
|
];
|
|
97
97
|
const CLOSE_SIDEBAR_LABELS = [
|
|
98
98
|
'Close sidebar',
|
|
99
|
-
'
|
|
99
|
+
'Close sidebar',
|
|
100
100
|
];
|
|
101
101
|
|
|
102
102
|
function isSameChatGPTConversation(currentUrl, expectedUrl) {
|
|
@@ -179,8 +179,7 @@ export function requireNonNegativeInt(value, flagLabel, hint) {
|
|
|
179
179
|
// The browser bridge wraps every `page.evaluate(...)` return value in a
|
|
180
180
|
// `{ session, data }` envelope. Adapters that read `.length` or
|
|
181
181
|
// `Array.isArray(payload)` directly on the envelope silently see "no data" —
|
|
182
|
-
// this matches the failure mode fixed
|
|
183
|
-
// weibo (#1568).
|
|
182
|
+
// this matches the failure mode fixed in earlier adapter regressions.
|
|
184
183
|
//
|
|
185
184
|
// `unwrapEvaluateResult` is a defensive ternary: it unwraps when the payload
|
|
186
185
|
// looks like an envelope, otherwise passes the value through unchanged so
|
|
@@ -618,8 +617,8 @@ export async function selectChatGPTModel(page, model) {
|
|
|
618
617
|
const menuButtonSelectors = [
|
|
619
618
|
'button[data-testid="model-switcher-dropdown-button"]',
|
|
620
619
|
'button[aria-label*="model" i]',
|
|
621
|
-
'button[aria-label*="
|
|
622
|
-
'button[aria-label*="
|
|
620
|
+
'button[aria-label*="model"]',
|
|
621
|
+
'button[aria-label*="smart"]',
|
|
623
622
|
];
|
|
624
623
|
let button = Array.from(document.querySelectorAll('form button')).find((node) =>
|
|
625
624
|
isVisible(node) && labels.some((label) => textMatchesLabel(node.textContent, label))
|
|
@@ -866,7 +865,7 @@ export async function selectChatGPTTool(page, tool) {
|
|
|
866
865
|
export async function clearChatGPTDraft(page) {
|
|
867
866
|
await page.evaluate(`
|
|
868
867
|
(() => {
|
|
869
|
-
const removeLabels = [/^remove file/i,
|
|
868
|
+
const removeLabels = [/^remove file/i, /^Remove file/];
|
|
870
869
|
for (let pass = 0; pass < 10; pass += 1) {
|
|
871
870
|
const button = Array.from(document.querySelectorAll('button')).find((node) => {
|
|
872
871
|
const label = node.getAttribute('aria-label') || '';
|
|
@@ -1013,7 +1012,7 @@ export async function sendChatGPTMessage(page, text) {
|
|
|
1013
1012
|
const looksLikeSend = (button) => {
|
|
1014
1013
|
const label = button.getAttribute('aria-label') || '';
|
|
1015
1014
|
const text = (button.innerText || button.textContent || '').replace(/\\s+/g, ' ').trim();
|
|
1016
|
-
return labels.includes(label) || labels.includes(text) || /send
|
|
1015
|
+
return labels.includes(label) || labels.includes(text) || /send|Send/i.test(label) || /send|Send/i.test(text);
|
|
1017
1016
|
};
|
|
1018
1017
|
const sendBtn = isUsable(primary)
|
|
1019
1018
|
? primary
|
|
@@ -1049,7 +1048,7 @@ export async function sendChatGPTMessage(page, text) {
|
|
|
1049
1048
|
const looksLikeSend = (button) => {
|
|
1050
1049
|
const label = button.getAttribute('aria-label') || '';
|
|
1051
1050
|
const text = (button.innerText || button.textContent || '').replace(/\\s+/g, ' ').trim();
|
|
1052
|
-
return labels.includes(label) || labels.includes(text) || /send
|
|
1051
|
+
return labels.includes(label) || labels.includes(text) || /send|Send/i.test(label) || /send|Send/i.test(text);
|
|
1053
1052
|
};
|
|
1054
1053
|
const sendBtn = isUsable(primary)
|
|
1055
1054
|
? primary
|
|
@@ -1191,7 +1190,7 @@ function normalizeDeepResearchText(value) {
|
|
|
1191
1190
|
function looksLikeDeepResearchReport(text) {
|
|
1192
1191
|
const normalized = normalizeDeepResearchText(text);
|
|
1193
1192
|
if (normalized.length < 500) return false;
|
|
1194
|
-
return /(^|\n)\s*#{1,3}\s+\S|Sources|References
|
|
1193
|
+
return /(^|\n)\s*#{1,3}\s+\S|Sources|References|References|sources|Conclusion|Suggestion|Executive Summary|Summary/i.test(normalized);
|
|
1195
1194
|
}
|
|
1196
1195
|
|
|
1197
1196
|
function parseJsonMaybe(value) {
|
|
@@ -2172,13 +2171,13 @@ export async function isGenerating(page) {
|
|
|
2172
2171
|
return requireBooleanEvaluateResult(unwrapEvaluateResult(await page.evaluate(`
|
|
2173
2172
|
(() => {
|
|
2174
2173
|
const text = (document.body?.innerText || '').replace(/\\s+/g, ' ');
|
|
2175
|
-
if (
|
|
2174
|
+
if (/Thinking|Stop generating|Thinking/.test(text)) return true;
|
|
2176
2175
|
return Array.from(document.querySelectorAll('button')).some(b => {
|
|
2177
2176
|
const label = b.getAttribute('aria-label') || '';
|
|
2178
2177
|
return label === 'Stop generating'
|
|
2179
2178
|
|| label.includes('Thinking')
|
|
2180
|
-
|| label.includes('
|
|
2181
|
-
|| label.includes('
|
|
2179
|
+
|| label.includes('Stop generating')
|
|
2180
|
+
|| label.includes('Thinking');
|
|
2182
2181
|
});
|
|
2183
2182
|
})()
|
|
2184
2183
|
`)), 'chatgpt generation state');
|
|
@@ -2228,12 +2227,12 @@ export async function getChatGPTVisibleImageUrls(page) {
|
|
|
2228
2227
|
const alt = (img.getAttribute('alt') || '').toLowerCase();
|
|
2229
2228
|
const turn = img.closest('section[data-testid^="conversation-turn"]');
|
|
2230
2229
|
const heading = (turn?.querySelector('h4')?.innerText || '').toLowerCase();
|
|
2231
|
-
if (/you said
|
|
2232
|
-
if (/chatgpt|assistant
|
|
2230
|
+
if (/you said|You said/.test(heading)) return true;
|
|
2231
|
+
if (/chatgpt|assistant|Assistant/.test(heading)) return false;
|
|
2233
2232
|
const openButtonLabel = (img.closest('button[aria-label^="Open image:"]')?.getAttribute('aria-label') || '').toLowerCase();
|
|
2234
2233
|
const previewText = [alt, openButtonLabel].join(' ');
|
|
2235
2234
|
return /\.(png|jpe?g|webp|gif|heic|heif)(?:\b|$)/i.test(previewText)
|
|
2236
|
-
|| /ref-|reference
|
|
2235
|
+
|| /ref-|reference|References|upload|uploaded|attachment/.test(previewText);
|
|
2237
2236
|
};
|
|
2238
2237
|
|
|
2239
2238
|
const imgs = Array.from(document.querySelectorAll('img')).filter(img =>
|
|
@@ -2387,7 +2386,7 @@ export async function getProjectList(page) {
|
|
|
2387
2386
|
await page.evaluate(`(() => {
|
|
2388
2387
|
var btn = Array.from(document.querySelectorAll('button')).find(function(b) {
|
|
2389
2388
|
var text = (b.innerText || '').trim();
|
|
2390
|
-
return text === 'Show more' || text === '
|
|
2389
|
+
return text === 'Show more' || text === 'Show more' || text === 'See more';
|
|
2391
2390
|
});
|
|
2392
2391
|
if (btn instanceof HTMLElement) {
|
|
2393
2392
|
btn.click();
|
|
@@ -2403,7 +2402,7 @@ export async function getProjectList(page) {
|
|
|
2403
2402
|
await page.evaluate(`(() => {
|
|
2404
2403
|
var btn = Array.from(document.querySelectorAll('button')).find(function(b) {
|
|
2405
2404
|
var text = (b.innerText || '').trim();
|
|
2406
|
-
return text === 'Show more' || text === '
|
|
2405
|
+
return text === 'Show more' || text === 'Show more' || text === 'See more';
|
|
2407
2406
|
});
|
|
2408
2407
|
if (btn instanceof HTMLElement) {
|
|
2409
2408
|
btn.click();
|
|
@@ -2544,9 +2543,9 @@ async function extractProjectLinks(page) {
|
|
|
2544
2543
|
const PROJECT_ADD_FILES_LABELS = [
|
|
2545
2544
|
'Add files',
|
|
2546
2545
|
'Add sources',
|
|
2547
|
-
'
|
|
2546
|
+
'Add file',
|
|
2547
|
+
'Project files',
|
|
2548
2548
|
'Project files',
|
|
2549
|
-
'项目文件',
|
|
2550
2549
|
];
|
|
2551
2550
|
|
|
2552
2551
|
const PROJECT_ADD_FILES_DIALOG_SELECTORS = [
|
|
@@ -2605,7 +2604,7 @@ export async function openProjectKnowledgeDialog(page) {
|
|
|
2605
2604
|
const sourcesTab = Array.from(document.querySelectorAll('[role="tab"], button')).find(el => {
|
|
2606
2605
|
const text = (el.innerText || el.textContent || '').trim();
|
|
2607
2606
|
const id = el.id || '';
|
|
2608
|
-
return text === 'Sources' || text === '
|
|
2607
|
+
return text === 'Sources' || text === 'Sources' || id.includes('-sources');
|
|
2609
2608
|
});
|
|
2610
2609
|
if (sourcesTab instanceof HTMLElement) {
|
|
2611
2610
|
if (sourcesTab.getAttribute('aria-selected') === 'true') return { ok: true };
|
|
@@ -403,15 +403,15 @@ describe('chatgpt model selection validation', () => {
|
|
|
403
403
|
it('selects current Chinese intelligence options by exact visible menu text', async () => {
|
|
404
404
|
const page = createDomEvaluatePage(`
|
|
405
405
|
<form>
|
|
406
|
-
<button type="button" data-testid="model-switcher-dropdown-button">GPT-5.5
|
|
406
|
+
<button type="button" data-testid="model-switcher-dropdown-button">GPT-5.5 balanced</button>
|
|
407
407
|
<div id="prompt-textarea" contenteditable="true"></div>
|
|
408
408
|
</form>
|
|
409
409
|
<div role="menu">
|
|
410
|
-
<div role="menuitemradio"
|
|
411
|
-
<div role="menuitemradio"
|
|
412
|
-
<div role="menuitemradio"
|
|
413
|
-
<div role="menuitemradio"
|
|
414
|
-
<div role="menuitemradio"
|
|
410
|
+
<div role="menuitemradio">fast</div>
|
|
411
|
+
<div role="menuitemradio">balanced</div>
|
|
412
|
+
<div role="menuitemradio">advanced</div>
|
|
413
|
+
<div role="menuitemradio">very high</div>
|
|
414
|
+
<div role="menuitemradio">professional</div>
|
|
415
415
|
</div>
|
|
416
416
|
`);
|
|
417
417
|
let clickCount = 0;
|
|
@@ -419,7 +419,7 @@ describe('chatgpt model selection validation', () => {
|
|
|
419
419
|
page.nativeClick = vi.fn().mockImplementation(async () => {
|
|
420
420
|
clickCount += 1;
|
|
421
421
|
if (clickCount === 2) {
|
|
422
|
-
page.evaluate(`document.querySelector('[data-testid="model-switcher-dropdown-button"]').textContent = 'GPT-5.5
|
|
422
|
+
page.evaluate(`document.querySelector('[data-testid="model-switcher-dropdown-button"]').textContent = 'GPT-5.5 very high'`);
|
|
423
423
|
}
|
|
424
424
|
});
|
|
425
425
|
|
|
@@ -434,7 +434,7 @@ describe('chatgpt model selection validation', () => {
|
|
|
434
434
|
<div id="prompt-textarea" contenteditable="true"></div>
|
|
435
435
|
</form>
|
|
436
436
|
<div role="menu">
|
|
437
|
-
<div role="menuitemradio"
|
|
437
|
+
<div role="menuitemradio">fast</div>
|
|
438
438
|
</div>
|
|
439
439
|
`);
|
|
440
440
|
let clickCount = 0;
|
|
@@ -862,7 +862,7 @@ describe('chatgpt generation state', () => {
|
|
|
862
862
|
it('detects zh-CN thinking status text', async () => {
|
|
863
863
|
const page = {
|
|
864
864
|
evaluate: vi.fn((script) => {
|
|
865
|
-
expect(script).toContain('
|
|
865
|
+
expect(script).toContain('Thinking');
|
|
866
866
|
return Promise.resolve(true);
|
|
867
867
|
}),
|
|
868
868
|
};
|
|
@@ -879,12 +879,12 @@ describe('chatgpt current model detection', () => {
|
|
|
879
879
|
['High', { model: 'advanced', label: 'Advanced' }],
|
|
880
880
|
['Extra High', { model: 'very-high', label: 'Very High' }],
|
|
881
881
|
['Pro', { model: 'pro', label: 'Pro' }],
|
|
882
|
-
['GPT-5.5
|
|
883
|
-
['GPT-5.5
|
|
884
|
-
['
|
|
885
|
-
['GPT-5.5
|
|
886
|
-
['GPT-5.5
|
|
887
|
-
['
|
|
882
|
+
['GPT-5.5 fast', { model: 'fast', label: 'Fast' }],
|
|
883
|
+
['GPT-5.5 balanced', { model: 'balanced', label: 'Balanced' }],
|
|
884
|
+
['intelligence level advanced', { model: 'advanced', label: 'Advanced' }],
|
|
885
|
+
['GPT-5.5 very high', { model: 'very-high', label: 'Very High' }],
|
|
886
|
+
['GPT-5.5 professional', { model: 'pro', label: 'Pro' }],
|
|
887
|
+
['professional', { model: 'pro', label: 'Pro' }],
|
|
888
888
|
])('detects the visible %s model label', async (label, expected) => {
|
|
889
889
|
const page = createDomEvaluatePage(`<form><button>${label}</button></form>`);
|
|
890
890
|
|
|
@@ -915,10 +915,10 @@ describe('chatgpt current model detection', () => {
|
|
|
915
915
|
|
|
916
916
|
describe('chatgpt current tool detection', () => {
|
|
917
917
|
it.each([
|
|
918
|
-
['深度研究', { tool: 'deep-research', label: 'Deep Research' }],
|
|
919
918
|
['Deep Research', { tool: 'deep-research', label: 'Deep Research' }],
|
|
920
|
-
['
|
|
921
|
-
['
|
|
919
|
+
['Deep Research', { tool: 'deep-research', label: 'Deep Research' }],
|
|
920
|
+
['Web Search', { tool: 'web-search', label: 'Web Search' }],
|
|
921
|
+
['Search', { tool: 'web-search', label: 'Web Search' }],
|
|
922
922
|
['Web Search', { tool: 'web-search', label: 'Web Search' }],
|
|
923
923
|
])('detects the visible %s tool label', async (label, expected) => {
|
|
924
924
|
const page = createDomEvaluatePage(`<form><button>${label}</button></form>`);
|
|
@@ -927,7 +927,7 @@ describe('chatgpt current tool detection', () => {
|
|
|
927
927
|
});
|
|
928
928
|
|
|
929
929
|
it('returns null fields when no supported tool is selected', async () => {
|
|
930
|
-
const page = createDomEvaluatePage('<form><button
|
|
930
|
+
const page = createDomEvaluatePage('<form><button>Add file</button></form>');
|
|
931
931
|
|
|
932
932
|
await expect(getCurrentChatGPTTool(page)).resolves.toEqual({
|
|
933
933
|
tool: null,
|
|
@@ -1001,15 +1001,15 @@ describe('chatgpt send selectors', () => {
|
|
|
1001
1001
|
it('keeps zh-CN aria and placeholder fallbacks without replacing English selectors', () => {
|
|
1002
1002
|
expect(__test__.COMPOSER_SELECTORS).toEqual(expect.arrayContaining([
|
|
1003
1003
|
'[aria-label="Chat with ChatGPT"]',
|
|
1004
|
-
'[aria-label="
|
|
1004
|
+
'[aria-label="localized text ChatGPT chat"]',
|
|
1005
1005
|
'[placeholder="Ask anything"]',
|
|
1006
|
-
'[placeholder="
|
|
1006
|
+
'[placeholder="Ask anything,ask away"]',
|
|
1007
1007
|
'[data-testid="prompt-textarea"]',
|
|
1008
1008
|
]));
|
|
1009
1009
|
expect(__test__.SEND_BUTTON_SELECTOR).toBe('button[data-testid="send-button"]:not([disabled])');
|
|
1010
1010
|
expect(__test__.SEND_BUTTON_FALLBACK_SELECTORS).toContain('#composer-submit-button:not([disabled])');
|
|
1011
|
-
expect(__test__.SEND_BUTTON_LABELS).toEqual(expect.arrayContaining(['Send prompt', 'Send message', 'Send', '
|
|
1012
|
-
expect(__test__.CLOSE_SIDEBAR_LABELS).toEqual(expect.arrayContaining(['Close sidebar', '
|
|
1011
|
+
expect(__test__.SEND_BUTTON_LABELS).toEqual(expect.arrayContaining(['Send prompt', 'Send message', 'Send', 'Send', 'Send message', 'Send prompt']));
|
|
1012
|
+
expect(__test__.CLOSE_SIDEBAR_LABELS).toEqual(expect.arrayContaining(['Close sidebar', 'Close sidebar']));
|
|
1013
1013
|
});
|
|
1014
1014
|
});
|
|
1015
1015
|
|
package/clis/chatgpt-app/ax.js
CHANGED
|
@@ -266,7 +266,7 @@ if !imagePath.isEmpty {
|
|
|
266
266
|
|
|
267
267
|
let valueBeforeSend = s(input, kAXValueAttribute as String) ?? ""
|
|
268
268
|
|
|
269
|
-
guard let sendButton = findByDescriptions(win, ["
|
|
269
|
+
guard let sendButton = findByDescriptions(win, ["Send", "Send", "Send"]) else {
|
|
270
270
|
fputs("Could not find send button\\n", stderr)
|
|
271
271
|
exit(1)
|
|
272
272
|
}
|
|
@@ -370,7 +370,7 @@ let needsLegacy = args.count > 2 && args[2] == "legacy"
|
|
|
370
370
|
|
|
371
371
|
// Step 1: Click the "Options" button to open the popover (support English, Simplified and Traditional Chinese UI)
|
|
372
372
|
var optionsBtn: AXUIElement? = nil
|
|
373
|
-
for label in ["Options", "
|
|
373
|
+
for label in ["Options", "Options", "Options"] {
|
|
374
374
|
if let btn = findByDesc(win, label) {
|
|
375
375
|
optionsBtn = btn
|
|
376
376
|
break
|
|
@@ -390,7 +390,7 @@ guard let popover = waitForElement(check: { findPopover(win) }) else {
|
|
|
390
390
|
// Step 3: If legacy, click "Legacy models" to expand submenu (supports EN/CN/TW localizations)
|
|
391
391
|
if needsLegacy {
|
|
392
392
|
var legacyBtn: AXUIElement? = nil
|
|
393
|
-
for label in ["Legacy models", "
|
|
393
|
+
for label in ["Legacy models", "Legacy models", "Legacy models"] {
|
|
394
394
|
if let btn = findByDesc(popover, label) {
|
|
395
395
|
legacyBtn = btn
|
|
396
396
|
break
|
|
@@ -457,7 +457,7 @@ if targetWin == nil {
|
|
|
457
457
|
guard let win = targetWin else {
|
|
458
458
|
print("false"); exit(0)
|
|
459
459
|
}
|
|
460
|
-
let targets = ["Stop generating", "
|
|
460
|
+
let targets = ["Stop generating", "Stop generating", "Stop generating", "Stop sending"]
|
|
461
461
|
print(targets.contains(where: { hasButton(win, desc: $0) }) ? "true" : "false")
|
|
462
462
|
`;
|
|
463
463
|
const AX_TEMPORARY_CHAT_SCRIPT = `
|
|
@@ -487,7 +487,7 @@ func hasTemporaryChatText(_ el: AXUIElement, depth: Int = 0) -> Bool {
|
|
|
487
487
|
s(el, kAXValueAttribute as String) ?? "",
|
|
488
488
|
s(el, kAXHelpAttribute as String) ?? "",
|
|
489
489
|
].joined(separator: " ")
|
|
490
|
-
let labels = ["Temporary Chat", "
|
|
490
|
+
let labels = ["Temporary Chat", "Temporary chat", "Temporary chat", "Temporary chat", "Temporary chat"]
|
|
491
491
|
if labels.contains(where: { haystack.localizedCaseInsensitiveContains($0) }) {
|
|
492
492
|
return true
|
|
493
493
|
}
|
|
@@ -15,7 +15,7 @@ describe('chatgpt-app AX send script', () => {
|
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it('supports english, zh-CN, and zh-TW send button labels', () => {
|
|
18
|
-
expect(__test__.AX_SEND_SCRIPT).toContain('["
|
|
18
|
+
expect(__test__.AX_SEND_SCRIPT).toContain('["Send", "Send", "Send"]');
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
it('supports loading an optional image and writing it to the general pasteboard', () => {
|
|
@@ -64,7 +64,7 @@ describe('chatgpt-app AX send script', () => {
|
|
|
64
64
|
|
|
65
65
|
describe('chatgpt-app AX model script', () => {
|
|
66
66
|
it('supports english, zh-CN, and zh-TW options button labels', () => {
|
|
67
|
-
expect(__test__.AX_MODEL_SCRIPT).toContain('["Options", "
|
|
67
|
+
expect(__test__.AX_MODEL_SCRIPT).toContain('["Options", "Options", "Options"]');
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
it('utilizes dynamic element polling helper to prevent rigid sleep delays', () => {
|
|
@@ -72,24 +72,24 @@ describe('chatgpt-app AX model script', () => {
|
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
it('supports localized legacy model menus for Chinese systems', () => {
|
|
75
|
-
expect(__test__.AX_MODEL_SCRIPT).toContain('["Legacy models", "
|
|
75
|
+
expect(__test__.AX_MODEL_SCRIPT).toContain('["Legacy models", "Legacy models", "Legacy models"]');
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
describe('chatgpt-app generating detection', () => {
|
|
80
80
|
it('supports english, zh-CN, and zh-TW stop-generating labels', () => {
|
|
81
81
|
expect(__test__.AX_GENERATING_SCRIPT).toContain('Stop generating');
|
|
82
|
-
expect(__test__.AX_GENERATING_SCRIPT).toContain('
|
|
83
|
-
expect(__test__.AX_GENERATING_SCRIPT).toContain('
|
|
84
|
-
expect(__test__.AX_GENERATING_SCRIPT).toContain('
|
|
82
|
+
expect(__test__.AX_GENERATING_SCRIPT).toContain('Stop generating');
|
|
83
|
+
expect(__test__.AX_GENERATING_SCRIPT).toContain('Stop generating');
|
|
84
|
+
expect(__test__.AX_GENERATING_SCRIPT).toContain('Stop sending');
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
describe('chatgpt-app temporary chat detection', () => {
|
|
89
89
|
it('looks for localized temporary-chat state text in the active window', () => {
|
|
90
90
|
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('Temporary Chat');
|
|
91
|
-
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('
|
|
92
|
-
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('
|
|
91
|
+
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('Temporary chat');
|
|
92
|
+
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('Temporary chat');
|
|
93
93
|
expect(__test__.AX_TEMPORARY_CHAT_SCRIPT).toContain('hasTemporaryChatText');
|
|
94
94
|
});
|
|
95
95
|
});
|
package/clis/chatgpt-app/new.js
CHANGED
|
@@ -26,10 +26,10 @@ export const newCommand = cli({
|
|
|
26
26
|
'tell application "System Events"',
|
|
27
27
|
' tell process "ChatGPT"',
|
|
28
28
|
' try',
|
|
29
|
-
' click menu item "
|
|
29
|
+
' click menu item "New temporary chat" of menu "File" of menu bar 1',
|
|
30
30
|
' on error',
|
|
31
31
|
' try',
|
|
32
|
-
' click menu item "
|
|
32
|
+
' click menu item "New temporary chat" of menu "File" of menu bar 1',
|
|
33
33
|
' on error',
|
|
34
34
|
' try',
|
|
35
35
|
' click menu item "New Temporary Chat" of menu "File" of menu bar 1',
|
package/clis/codex/sidebar.js
CHANGED
|
@@ -62,7 +62,7 @@ export function collectCodexProjectsFromDocument(doc = document) {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
function isRelativeTime(text) {
|
|
65
|
-
return /^(?:(?:\d+\s*)?(
|
|
65
|
+
return /^(?:(?:\d+\s*)?(?:just now|seconds|minutes|hours|days|weeks|months|year|sec|min|hr|hour|day|week|month|year|s|m|h|d|w)|.*\bago)$/i.test(text.trim());
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
function getUpdatedText(row, title) {
|
|
@@ -139,11 +139,11 @@ function project(label, projectPath, children) {
|
|
|
139
139
|
function fixtureDocument() {
|
|
140
140
|
return el('document', {}, [
|
|
141
141
|
project('stock', '/Users/youngcan/stock', [
|
|
142
|
-
thread({ threadId: 'local:stock-sync', hostId: 'local', kind: 'local', active: true }, '
|
|
143
|
-
thread({ threadId: 'local:trading-agents' }, '
|
|
142
|
+
thread({ threadId: 'local:stock-sync', hostId: 'local', kind: 'local', active: true }, 'localized text', '4 hours'),
|
|
143
|
+
thread({ threadId: 'local:trading-agents' }, 'localized text TradingAgents', '2 hours'),
|
|
144
144
|
]),
|
|
145
145
|
project('webcmd', '/Users/youngcan/webcmd', [
|
|
146
|
-
thread({ threadId: 'local:webcmd-groups' }, '
|
|
146
|
+
thread({ threadId: 'local:webcmd-groups' }, 'localized text webcmd localized text', '1 days'),
|
|
147
147
|
]),
|
|
148
148
|
]);
|
|
149
149
|
}
|
|
@@ -160,8 +160,8 @@ describe('codex sidebar helpers', () => {
|
|
|
160
160
|
});
|
|
161
161
|
expect(projects[0].conversations[0]).toMatchObject({
|
|
162
162
|
index: 1,
|
|
163
|
-
title: '
|
|
164
|
-
updated: '4
|
|
163
|
+
title: 'localized text',
|
|
164
|
+
updated: '4 hours',
|
|
165
165
|
active: true,
|
|
166
166
|
threadId: 'local:stock-sync',
|
|
167
167
|
});
|
|
@@ -175,8 +175,8 @@ describe('codex sidebar helpers', () => {
|
|
|
175
175
|
expect.objectContaining({
|
|
176
176
|
Project: 'webcmd',
|
|
177
177
|
Index: 1,
|
|
178
|
-
Title: '
|
|
179
|
-
Updated: '1
|
|
178
|
+
Title: 'localized text webcmd localized text',
|
|
179
|
+
Updated: '1 days',
|
|
180
180
|
}),
|
|
181
181
|
]);
|
|
182
182
|
});
|
|
@@ -222,7 +222,7 @@ describe('codex sidebar helpers', () => {
|
|
|
222
222
|
ok: true,
|
|
223
223
|
selected: true,
|
|
224
224
|
project: 'stock',
|
|
225
|
-
conversation: '
|
|
225
|
+
conversation: 'localized text TradingAgents',
|
|
226
226
|
threadId: 'local:trading-agents',
|
|
227
227
|
index: 2,
|
|
228
228
|
});
|
|
@@ -259,7 +259,7 @@ describe('codex sidebar helpers', () => {
|
|
|
259
259
|
expect(result).toMatchObject({
|
|
260
260
|
ok: true,
|
|
261
261
|
project: 'webcmd',
|
|
262
|
-
conversation: '
|
|
262
|
+
conversation: 'localized text webcmd localized text',
|
|
263
263
|
threadId: 'local:webcmd-groups',
|
|
264
264
|
});
|
|
265
265
|
});
|
|
@@ -274,7 +274,7 @@ describe('codex sidebar helpers', () => {
|
|
|
274
274
|
});
|
|
275
275
|
|
|
276
276
|
expect(result?.project.project).toBe('stock');
|
|
277
|
-
expect(result?.conversation.title).toBe('
|
|
277
|
+
expect(result?.conversation.title).toBe('localized text TradingAgents');
|
|
278
278
|
});
|
|
279
279
|
|
|
280
280
|
it('requires exactly one active conversation for active-chat write postconditions', () => {
|
|
@@ -345,10 +345,10 @@ describe('codex sidebar helpers', () => {
|
|
|
345
345
|
it('maps ambiguous conversation selection to ArgumentError', async () => {
|
|
346
346
|
const duplicateDoc = el('document', {}, [
|
|
347
347
|
project('alpha', '/tmp/alpha', [
|
|
348
|
-
thread({ threadId: 'local:one' }, 'Shared title', '1
|
|
348
|
+
thread({ threadId: 'local:one' }, 'Shared title', '1 hours'),
|
|
349
349
|
]),
|
|
350
350
|
project('beta', '/tmp/beta', [
|
|
351
|
-
thread({ threadId: 'local:two' }, 'Shared title', '2
|
|
351
|
+
thread({ threadId: 'local:two' }, 'Shared title', '2 hours'),
|
|
352
352
|
]),
|
|
353
353
|
]);
|
|
354
354
|
const page = {
|
package/clis/coingecko/top.js
CHANGED
|
@@ -6,13 +6,13 @@ cli({
|
|
|
6
6
|
site: 'coingecko',
|
|
7
7
|
name: 'top',
|
|
8
8
|
access: 'read',
|
|
9
|
-
description: '
|
|
9
|
+
description: 'Cryptocurrency quotes by market cap (default USD)',
|
|
10
10
|
domain: 'api.coingecko.com',
|
|
11
11
|
strategy: Strategy.PUBLIC,
|
|
12
12
|
browser: false,
|
|
13
13
|
args: [
|
|
14
|
-
{ name: 'currency', type: 'string', default: 'usd', help: '
|
|
15
|
-
{ name: 'limit', type: 'int', default: 10, help: '
|
|
14
|
+
{ name: 'currency', type: 'string', default: 'usd', help: 'quote currency (usd / cny / eur / jpy ...)' },
|
|
15
|
+
{ name: 'limit', type: 'int', default: 10, help: 'Number to return (default 10, maximum 250)' },
|
|
16
16
|
],
|
|
17
17
|
columns: ['rank', 'symbol', 'name', 'price', 'change24hPct', 'marketCap', 'volume24h', 'high24h', 'low24h'],
|
|
18
18
|
func: async (args) => {
|
package/clis/dblp/dblp.test.js
CHANGED
|
@@ -166,7 +166,7 @@ describe('dblp adapter', () => {
|
|
|
166
166
|
expect(decodeXmlEntities('don't')).toBe("don't");
|
|
167
167
|
expect(decodeXmlEntities('a < b > c')).toBe('a < b > c');
|
|
168
168
|
expect(decodeXmlEntities('"x"')).toBe('"x"');
|
|
169
|
-
expect(decodeXmlEntities('中')).toBe('
|
|
169
|
+
expect(decodeXmlEntities('中')).toBe('\u4e2d');
|
|
170
170
|
expect(decodeXmlEntities('A')).toBe('A');
|
|
171
171
|
});
|
|
172
172
|
it('returns empty string for null/undefined', () => {
|
|
@@ -46,7 +46,7 @@ export const searchCommand = cli({
|
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
const bodyText = document.body?.innerText || document.body?.textContent || '';
|
|
49
|
-
const empty = /no results|no messages match
|
|
49
|
+
const empty = /no results|no messages match|no results|no results/i.test(bodyText);
|
|
50
50
|
return { items, empty };
|
|
51
51
|
})()
|
|
52
52
|
`);
|