Files
jackwener__opencli/docs/adapters/index.md
Gaurav Saxena 150551be8c feat(reddit): add reply command for replying to comments (#1428)
* feat(reddit): add reply command for replying to comments

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(reddit/reply): replace silent-sentinel rows with typed errors

reply.js originally mirror-copied comment.js's failure pattern: returning
[{ status: 'failed', message: 'HTTP 403' }] on auth/HTTP/Reddit errors and
relying on the caller to inspect the row instead of throwing. That's the
'silent-sentinel' anti-pattern from typed-errors.md — failures should
surface as typed errors so an agent can actually branch on them.

Round 21 lesson (f) — "grandfathered-not-exempt + helper-refactor boundary
is new" — applies: comment.js / upvote.js / save.js can stay grandfathered,
but a brand-new file does not inherit that exemption.

Changes:
- Throw AuthRequiredError when /api/me.json or /api/comment returns 401/403,
  or when /api/me.json returns 200 but data.name is missing (stale anon
  session — empty modhash alone isn't a strong enough signal).
- Throw CommandExecutionError for non-2xx HTTP and for non-empty
  data.json.errors (e.g. RATELIMIT, NO_TEXT, TOO_OLD).
- Drop the over-defensive `if (!page) throw ...` — registry guarantees a
  page object when browser:true.
- Intermediate result object uses `kind` discriminator + `detail` /
  `httpStatus` / `where` keys that don't overlap with columns
  ['status','message'], so the silent-column-drop audit stays quiet
  (per PR #1329 sediment).

Verified:
- npx tsc --noEmit clean
- node scripts/check-typed-error-lint.mjs → 189/189, 0 new
- node scripts/check-silent-column-drop.mjs → 103/103, 0 new
- npx vitest run clis/reddit src/convention-audit → 11/11 pass
- node ./dist/src/main.js validate → 0 errors

Success path is unchanged: still returns
[{ status: 'success', message: 'Reply posted on t1_<id>' }].

* fix(reddit): harden reply command contract

* fix(reddit): reject suffixed reply urls

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: jackwener <jakevingoo@gmail.com>
2026-05-12 02:33:09 +08:00

40 KiB

All Adapters

Run opencli list for the live registry.

Browser Adapters

Site Commands Mode
twitter trending bookmarks profile search timeline thread following followers notifications post reply delete like likes lists article follow unfollow bookmark unbookmark download accept reply-dm block unblock hide-reply 🔐 Browser
reddit hot frontpage popular search subreddit read user user-posts user-comments upvote save comment reply subscribe saved upvoted 🔐 Browser
tieba hot posts search read 🔐 Browser
hupu hot search detail mentions reply like unlike 🌐 / 🔐
bilibili hot search me favorite history feed feed-detail subtitle video dynamic ranking following user-videos download 🔐 Browser
zhihu hot search question download follow like favorite comment answer 🔐 Browser
xiaohongshu search notifications feed user note comments download publish creator-notes creator-note-detail creator-notes-summary creator-profile creator-stats 🔐 Browser
rednote search note comments user download feed notifications 🔐 Browser
xiaoe courses detail catalog play-url content 🔐 Browser
xueqiu feed hot-stock hot search stock comments watchlist earnings-date fund-holdings fund-snapshot 🔐 Browser
youtube search video transcript comments channel playlist feed history watch-later subscriptions like unlike subscribe unsubscribe 🔐 Browser
zlibrary search info 🔐 Browser
v2ex hot latest topic node user member replies nodes daily me notifications 🌐 / 🔐
bloomberg main markets economics industries tech politics businessweek opinions feeds news 🌐 / 🔐
weibo hot search feed user me post comments 🔐 Browser
toutiao articles hot 🌐 / 🔐
linkedin search timeline 🔐 Browser
coupang search product add-to-cart 🔐 Browser
boss search detail recommend joblist greet batchgreet send chatlist chatmsg invite mark exchange resume stats 🔐 Browser
51job search hot detail company 🔐 Browser
powerchina search 🔐 Browser
ctrip search hotel-suggest 🌐 Public
reuters search article-detail 🔐 Browser
smzdm search 🔐 Browser
jike feed search post topic user create comment like repost notifications 🔐 Browser
ke ershoufang zufang xiaoqu chengjiao 🔐 Browser
jimeng generate history 🔐 Browser
yollomi generate video edit upload models remove-bg upscale face-swap restore try-on background object-remover 🔐 Browser
linux-do feed search categories tags topic topic-content user-posts user-topics 🔐 Browser
chaoxing assignments exams 🔐 Browser
grok ask send read history detail new status image 🔐 Browser
chatgpt ask send read history detail new status image 🔐 Browser
gemini new ask image deep-research deep-research-result 🔐 Browser
claude ask send new status read history detail 🔐 Browser
maimai search-talents 🔐 Browser
yuanbao ask send new status read history detail 🔐 Browser
notebooklm status list open current get source-list source-get source-fulltext source-guide history note-list notes-get summary 🔐 Browser
doubao status new send read ask history detail meeting-summary meeting-transcript 🔐 Browser
weread shelf search book ranking notebooks highlights notes 🔐 Browser
douban search top250 subject photos download marks reviews movie-hot book-hot 🔐 Browser
facebook feed profile search friends groups events notifications memories add-friend join-group 🔐 Browser
imdb search title top trending person reviews 🌐 / 🔐
indeed search job 🍪 Browser
instagram explore profile search user followers following follow unfollow like unlike comment save unsave saved 🔐 Browser
medium feed search user 🔐 Browser
mubu doc docs notes recent search 🔐 Browser
sinablog hot search article user 🔐 Browser
substack feed search publication 🔐 Browser
pixiv ranking search user illusts detail download 🔐 Browser
tiktok explore search profile user following follow unfollow like unlike comment save unsave live notifications friends 🔐 Browser
google news search suggest trends 🌐 / 🔐
jd item 🔐 Browser
amazon bestsellers search product offer discussion movers-shakers new-releases 🔐 Browser
1688 search item assets download store 🔐 Browser
gitee trending search user 🌐 / 🔐
web read 🔐 Browser
weixin search download drafts create-draft 🌐 / 🔐
36kr news hot search article 🌐 / 🔐
uisdc news 🌐 Public
aibase news 🌐 Public
producthunt posts today hot browse 🌐 / 🔐
ones login me token-info tasks my-tasks task worklog logout 🔐 Browser Bridge + ONES_BASE_URL
band bands posts post mentions 🔐 Browser
baidu-scholar search 🌐 Public
zsxq groups dynamics topics topic search 🔐 Browser
bluesky search profile user feeds followers following thread trending starter-packs 🌐 Public
douyin profile videos user-videos activities collections hashtag location stats publish draft drafts delete update 🔐 Browser
google-scholar search cite profile 🌐 Public
gov-law search recent 🌐 Public
gov-policy search recent 🌐 Public
xianyu search item chat publish 🔐 Browser
quark ls mkdir mv rename rm save share-tree 🔐 Browser
uiverse code preview 🔐 Browser
nowcoder hot trending topics recommend creators companies jobs search suggest experience referral salary papers practice notifications detail 🌐 / 🔐
wanfang search 🌐 Public
eastmoney hot-rank 🔐 Browser
tdx hot-rank 🔐 Browser
ths hot-rank 🔐 Browser
dianping search shop 🔐 Browser

Public API Adapters

Site Commands Mode
hackernews top new best ask show jobs search user 🌐 Public
bbc news 🌐 Public
devto top tag user 🌐 Public
dictionary search synonyms examples 🌐 Public
apple-podcasts search episodes top 🌐 Public
xiaoyuzhou podcast podcast-episodes episode download transcript (local credentials required) 🔑 Local API
yahoo-finance quote 🌐 Public
arxiv search paper 🌐 Public
dblp search author paper venue 🌐 Public
pubmed search article author citations related 🌐 Public
openreview search venue author paper reviews 🌐 Public
paperreview submit review feedback 🌐 Public
barchart quote options greeks flow 🌐 Public
binance price prices ticker pairs trades depth asks klines top gainers losers 🌐 Public
hf top paper models datasets spaces 🌐 Public
sinafinance news rolling-news stock stock-rank 🌐 / 🔐
spotify auth status play pause next prev volume search queue shuffle repeat 🔑 OAuth API
stackoverflow hot search bounties unanswered tag user read related 🌐 Public
wikipedia search summary random trending 🌐 Public
lesswrong curated frontpage new top top-week top-month top-year read comments user user-posts tag tags sequences shortform 🌐 Public
lobsters hot newest active tag read 🌐 Public
steam top-sellers 🌐 Public
coingecko top coin trending exchanges categories derivatives global 🌐 Public
npm search package downloads 🌐 Public
pypi package downloads 🌐 Public
crates search crate 🌐 Public
mdn search 🌐 Public
nvd cve 🌐 Public
dockerhub search image 🌐 Public
rubygems search gem 🌐 Public
homebrew formula cask popular 🌐 Public
packagist search package 🌐 Public
maven search artifact 🌐 Public
openalex search work 🌐 Public
defillama protocols protocol 🌐 Public
endoflife product 🌐 Public
osv vulnerability query 🌐 Public
goproxy module versions 🌐 Public
tvmaze search show 🌐 Public
rfc rfc 🌐 Public
wikidata search entity 🌐 Public
lichess user top 🌐 Public
rest-countries country region 🌐 Public
nuget search package 🌐 Public
flathub search app 🌐 Public
oeis search sequence 🌐 Public
wttr current forecast 🌐 Public
openfda drug-label food-recall 🌐 Public

Desktop Adapters

App Description Commands
Cursor Control Cursor IDE status send read new dump composer model extract-code ask screenshot history export
Codex Drive OpenAI Codex CLI agent status send read new extract-diff model ask screenshot history export
Antigravity Control Antigravity Ultra status send read new dump extract-code model watch
ChatGPT App Automate ChatGPT macOS app status new send read ask model
ChatWise Multi-LLM client status new send read ask model history export screenshot
Notion Search, read, write pages status search read new write sidebar favorites export
Discord Desktop messages & channels status send read channels servers search members
Doubao App Doubao AI desktop app via CDP status new send read ask screenshot dump