@zenalexa/unicli 0.208.0 → 0.210.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.
- package/AGENTS.md +56 -15
- package/README.md +228 -278
- package/dist/adapters/cursor/cursor.d.ts +2 -1
- package/dist/adapters/cursor/cursor.d.ts.map +1 -1
- package/dist/adapters/cursor/cursor.js +87 -1
- package/dist/adapters/cursor/cursor.js.map +1 -1
- package/dist/adapters/discord-app/discord-app.d.ts +1 -1
- package/dist/adapters/discord-app/discord-app.js +94 -1
- package/dist/adapters/discord-app/discord-app.js.map +1 -1
- package/dist/browser/bridge.d.ts +45 -0
- package/dist/browser/bridge.d.ts.map +1 -1
- package/dist/browser/bridge.js +94 -1
- package/dist/browser/bridge.js.map +1 -1
- package/dist/browser/cdp-client.d.ts +24 -1
- package/dist/browser/cdp-client.d.ts.map +1 -1
- package/dist/browser/cdp-client.js +56 -2
- package/dist/browser/cdp-client.js.map +1 -1
- package/dist/browser/launcher.d.ts +5 -0
- package/dist/browser/launcher.d.ts.map +1 -1
- package/dist/browser/launcher.js +7 -0
- package/dist/browser/launcher.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +73 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +82 -2
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/browser.d.ts.map +1 -1
- package/dist/commands/browser.js +79 -1
- package/dist/commands/browser.js.map +1 -1
- package/dist/commands/ext.d.ts +11 -0
- package/dist/commands/ext.d.ts.map +1 -0
- package/dist/commands/ext.js +122 -0
- package/dist/commands/ext.js.map +1 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +20 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/hub.d.ts +13 -0
- package/dist/commands/hub.d.ts.map +1 -0
- package/dist/commands/hub.js +232 -0
- package/dist/commands/hub.js.map +1 -0
- package/dist/commands/research.d.ts +17 -0
- package/dist/commands/research.d.ts.map +1 -0
- package/dist/commands/research.js +257 -0
- package/dist/commands/research.js.map +1 -0
- package/dist/commands/skills.d.ts +2 -3
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +2 -3
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +12 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +137 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/test-gen.d.ts +10 -0
- package/dist/commands/test-gen.d.ts.map +1 -0
- package/dist/commands/test-gen.js +124 -0
- package/dist/commands/test-gen.js.map +1 -0
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +3 -0
- package/dist/discovery/loader.js.map +1 -1
- package/dist/engine/capability.d.ts +40 -0
- package/dist/engine/capability.d.ts.map +1 -0
- package/dist/engine/capability.js +191 -0
- package/dist/engine/capability.js.map +1 -0
- package/dist/engine/endpoint.d.ts +47 -0
- package/dist/engine/endpoint.d.ts.map +1 -0
- package/dist/engine/endpoint.js +295 -0
- package/dist/engine/endpoint.js.map +1 -0
- package/dist/engine/framework.d.ts +28 -0
- package/dist/engine/framework.d.ts.map +1 -0
- package/dist/engine/framework.js +66 -0
- package/dist/engine/framework.js.map +1 -0
- package/dist/engine/probe.d.ts +19 -0
- package/dist/engine/probe.d.ts.map +1 -0
- package/dist/engine/probe.js +85 -0
- package/dist/engine/probe.js.map +1 -0
- package/dist/engine/research.d.ts +38 -0
- package/dist/engine/research.d.ts.map +1 -0
- package/dist/engine/research.js +414 -0
- package/dist/engine/research.js.map +1 -0
- package/dist/engine/yaml-runner.d.ts +10 -0
- package/dist/engine/yaml-runner.d.ts.map +1 -1
- package/dist/engine/yaml-runner.js +131 -8
- package/dist/engine/yaml-runner.js.map +1 -1
- package/dist/hub/index.d.ts +37 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +98 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/passthrough.d.ts +21 -0
- package/dist/hub/passthrough.d.ts.map +1 -0
- package/dist/hub/passthrough.js +71 -0
- package/dist/hub/passthrough.js.map +1 -0
- package/dist/manifest.json +2242 -134
- package/dist/mcp/server.js +59 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/src/adapters/36kr/latest.yaml +36 -0
- package/src/adapters/arxiv/trending.yaml +37 -0
- package/src/adapters/baidu/hot.yaml +37 -0
- package/src/adapters/baidu/search.yaml +41 -0
- package/src/adapters/bbc/technology.yaml +26 -0
- package/src/adapters/bbc/top.yaml +26 -0
- package/src/adapters/bbc/world.yaml +26 -0
- package/src/adapters/bilibili/coin.yaml +33 -0
- package/src/adapters/bilibili/later.yaml +31 -0
- package/src/adapters/bilibili/live.yaml +41 -0
- package/src/adapters/bilibili/trending.yaml +29 -0
- package/src/adapters/binance/hot.yaml +39 -0
- package/src/adapters/binance/kline.yaml +35 -0
- package/src/adapters/binance/ticker.yaml +33 -0
- package/src/adapters/bluesky/likes.yaml +35 -0
- package/src/adapters/bluesky/notifications.yaml +30 -0
- package/src/adapters/bluesky/post.yaml +25 -0
- package/src/adapters/chrome/bookmarks.yaml +26 -0
- package/src/adapters/chrome/tabs.yaml +25 -0
- package/src/adapters/cnki/search.yaml +40 -0
- package/src/adapters/cnn/technology.yaml +26 -0
- package/src/adapters/cnn/top.yaml +21 -0
- package/src/adapters/cocoapods/info.yaml +33 -0
- package/src/adapters/cocoapods/search.yaml +16 -0
- package/src/adapters/coinbase/prices.yaml +27 -0
- package/src/adapters/coinbase/rates.yaml +24 -0
- package/src/adapters/coupang/hot.yaml +29 -0
- package/src/adapters/crates-io/info.yaml +29 -0
- package/src/adapters/crates-io/search.yaml +27 -0
- package/src/adapters/crates-io/versions.yaml +33 -0
- package/src/adapters/ctrip/hot.yaml +28 -0
- package/src/adapters/cursor/cursor.ts +91 -1
- package/src/adapters/dangdang/hot.yaml +38 -0
- package/src/adapters/dangdang/search.yaml +43 -0
- package/src/adapters/deepseek/chat.yaml +33 -0
- package/src/adapters/deepseek/models.yaml +18 -0
- package/src/adapters/devto/latest.yaml +29 -0
- package/src/adapters/devto/search.yaml +34 -0
- package/src/adapters/dianping/hot.yaml +43 -0
- package/src/adapters/dianping/search.yaml +48 -0
- package/src/adapters/discord-app/discord-app.ts +99 -1
- package/src/adapters/docker/networks.yaml +20 -0
- package/src/adapters/docker/volumes.yaml +19 -0
- package/src/adapters/docker-hub/info.yaml +26 -0
- package/src/adapters/docker-hub/search.yaml +26 -0
- package/src/adapters/docker-hub/tags.yaml +34 -0
- package/src/adapters/douban/group-hot.yaml +29 -0
- package/src/adapters/douban/new-movies.yaml +32 -0
- package/src/adapters/douban/tv-hot.yaml +32 -0
- package/src/adapters/doubao/ask.yaml +64 -0
- package/src/adapters/doubao/new.yaml +18 -0
- package/src/adapters/doubao/status.yaml +21 -0
- package/src/adapters/douyu/hot.yaml +34 -0
- package/src/adapters/douyu/search.yaml +42 -0
- package/src/adapters/eastmoney/fund.yaml +36 -0
- package/src/adapters/eastmoney/hot.yaml +23 -0
- package/src/adapters/eastmoney/market.yaml +26 -0
- package/src/adapters/eastmoney/search.yaml +25 -0
- package/src/adapters/ele/hot.yaml +40 -0
- package/src/adapters/ele/search.yaml +47 -0
- package/src/adapters/exchangerate/convert.yaml +19 -0
- package/src/adapters/exchangerate/list.yaml +25 -0
- package/src/adapters/facebook/marketplace.yaml +43 -0
- package/src/adapters/facebook/post.yaml +29 -0
- package/src/adapters/feishu/calendar.yaml +24 -0
- package/src/adapters/feishu/docs.yaml +17 -0
- package/src/adapters/feishu/send.yaml +29 -0
- package/src/adapters/feishu/tasks.yaml +24 -0
- package/src/adapters/futu/hot.yaml +49 -0
- package/src/adapters/futu/quote.yaml +46 -0
- package/src/adapters/gitee/repos.yaml +34 -0
- package/src/adapters/gitee/search.yaml +25 -0
- package/src/adapters/gitee/trending.yaml +22 -0
- package/src/adapters/github-trending/developers.yaml +33 -0
- package/src/adapters/github-trending/weekly.yaml +34 -0
- package/src/adapters/gitlab/projects.yaml +34 -0
- package/src/adapters/gitlab/search.yaml +24 -0
- package/src/adapters/gitlab/trending.yaml +22 -0
- package/src/adapters/godot/scene-export.yaml +1 -1
- package/src/adapters/hackernews/comments.yaml +36 -0
- package/src/adapters/hackernews/item.yaml +28 -0
- package/src/adapters/hf/datasets.yaml +34 -0
- package/src/adapters/hf/spaces.yaml +34 -0
- package/src/adapters/homebrew/info.yaml +15 -0
- package/src/adapters/homebrew/search.yaml +27 -0
- package/src/adapters/huggingface-papers/daily.yaml +21 -0
- package/src/adapters/huggingface-papers/search.yaml +33 -0
- package/src/adapters/imdb/box-office.yaml +28 -0
- package/src/adapters/infoq/articles.yaml +29 -0
- package/src/adapters/infoq/latest.yaml +26 -0
- package/src/adapters/instagram/activity.yaml +45 -0
- package/src/adapters/instagram/highlights.yaml +48 -0
- package/src/adapters/instagram/reels-trending.yaml +51 -0
- package/src/adapters/instagram/reels.yaml +34 -0
- package/src/adapters/instagram/stories.yaml +29 -0
- package/src/adapters/instagram/suggested.yaml +40 -0
- package/src/adapters/instagram/tags.yaml +52 -0
- package/src/adapters/ip-info/lookup.yaml +15 -0
- package/src/adapters/itch-io/popular.yaml +22 -0
- package/src/adapters/itch-io/search.yaml +35 -0
- package/src/adapters/itch-io/top.yaml +31 -0
- package/src/adapters/ithome/hot.yaml +27 -0
- package/src/adapters/ithome/latest.yaml +26 -0
- package/src/adapters/ithome/news.yaml +21 -0
- package/src/adapters/jianyu/search.yaml +42 -0
- package/src/adapters/ke/ershoufang.yaml +75 -0
- package/src/adapters/ke/xiaoqu.yaml +73 -0
- package/src/adapters/kuaishou/hot.yaml +39 -0
- package/src/adapters/kuaishou/search.yaml +44 -0
- package/src/adapters/linkedin/jobs.yaml +47 -0
- package/src/adapters/lobsters/search.yaml +35 -0
- package/src/adapters/macos/active-app.yaml +16 -0
- package/src/adapters/macos/apps-list.yaml +14 -0
- package/src/adapters/macos/apps.yaml +31 -0
- package/src/adapters/macos/battery.yaml +26 -0
- package/src/adapters/macos/bluetooth.yaml +14 -0
- package/src/adapters/macos/brightness.yaml +22 -0
- package/src/adapters/macos/caffeinate.yaml +25 -0
- package/src/adapters/macos/calendar-create.yaml +81 -0
- package/src/adapters/macos/calendar-list.yaml +53 -0
- package/src/adapters/macos/calendar-today.yaml +30 -0
- package/src/adapters/macos/clipboard.yaml +23 -0
- package/src/adapters/macos/contacts-search.yaml +59 -0
- package/src/adapters/macos/dark-mode.yaml +19 -0
- package/src/adapters/macos/disk-info.yaml +31 -0
- package/src/adapters/macos/disk-usage.yaml +14 -0
- package/src/adapters/macos/do-not-disturb.yaml +21 -0
- package/src/adapters/macos/empty-trash.yaml +16 -0
- package/src/adapters/macos/finder-recent.yaml +24 -0
- package/src/adapters/macos/finder-selection.yaml +22 -0
- package/src/adapters/macos/finder-tags.yaml +40 -0
- package/src/adapters/macos/lock-screen.yaml +16 -0
- package/src/adapters/macos/mail-send.yaml +54 -0
- package/src/adapters/macos/mail-status.yaml +38 -0
- package/src/adapters/macos/messages-send.yaml +42 -0
- package/src/adapters/macos/music-control.yaml +43 -0
- package/src/adapters/macos/music-now.yaml +34 -0
- package/src/adapters/macos/notes-list.yaml +30 -0
- package/src/adapters/macos/notes-search.yaml +45 -0
- package/src/adapters/macos/notification.yaml +27 -0
- package/src/adapters/macos/notify.yaml +46 -0
- package/src/adapters/macos/open-app.yaml +21 -0
- package/src/adapters/macos/open.yaml +24 -0
- package/src/adapters/macos/photos-search.yaml +44 -0
- package/src/adapters/macos/processes.yaml +14 -0
- package/src/adapters/macos/reminder-create.yaml +75 -0
- package/src/adapters/macos/reminders-complete.yaml +33 -0
- package/src/adapters/macos/reminders-list.yaml +28 -0
- package/src/adapters/macos/safari-tabs.yaml +26 -0
- package/src/adapters/macos/say.yaml +36 -0
- package/src/adapters/macos/screen-lock.yaml +16 -0
- package/src/adapters/macos/screenshot.yaml +34 -0
- package/src/adapters/macos/shortcuts-list.yaml +14 -0
- package/src/adapters/macos/shortcuts-run.yaml +28 -0
- package/src/adapters/macos/sleep.yaml +14 -0
- package/src/adapters/macos/spotlight.yaml +43 -0
- package/src/adapters/macos/system-info.yaml +32 -0
- package/src/adapters/macos/trash.yaml +32 -0
- package/src/adapters/macos/uptime.yaml +14 -0
- package/src/adapters/macos/volume.yaml +19 -0
- package/src/adapters/macos/wifi-info.yaml +14 -0
- package/src/adapters/macos/wifi.yaml +63 -0
- package/src/adapters/maimai/search.yaml +62 -0
- package/src/adapters/maoyan/hot.yaml +33 -0
- package/src/adapters/maoyan/search.yaml +40 -0
- package/src/adapters/mastodon/search.yaml +29 -0
- package/src/adapters/mastodon/timeline.yaml +33 -0
- package/src/adapters/mastodon/trending.yaml +27 -0
- package/src/adapters/mastodon/user.yaml +32 -0
- package/src/adapters/medium/article.yaml +22 -0
- package/src/adapters/medium/trending.yaml +30 -0
- package/src/adapters/meituan/hot.yaml +26 -0
- package/src/adapters/meituan/search.yaml +30 -0
- package/src/adapters/minimax/chat.yaml +33 -0
- package/src/adapters/minimax/models.yaml +18 -0
- package/src/adapters/minimax/tts.yaml +33 -0
- package/src/adapters/mubu/list.yaml +36 -0
- package/src/adapters/mubu/search.yaml +54 -0
- package/src/adapters/netease-music/hot.yaml +24 -0
- package/src/adapters/netease-music/playlist.yaml +34 -0
- package/src/adapters/netease-music/search.yaml +29 -0
- package/src/adapters/netease-music/top.yaml +33 -0
- package/src/adapters/notion/databases.yaml +41 -0
- package/src/adapters/notion/pages.yaml +44 -0
- package/src/adapters/notion/search.yaml +41 -0
- package/src/adapters/npm/downloads.yaml +28 -0
- package/src/adapters/npm/info.yaml +25 -0
- package/src/adapters/npm/search.yaml +35 -0
- package/src/adapters/npm/versions.yaml +33 -0
- package/src/adapters/npm-trends/compare.yaml +19 -0
- package/src/adapters/npm-trends/trending.yaml +17 -0
- package/src/adapters/nytimes/search.yaml +35 -0
- package/src/adapters/nytimes/top.yaml +26 -0
- package/src/adapters/obsidian/daily.yaml +23 -0
- package/src/adapters/obsidian/open.yaml +26 -0
- package/src/adapters/obsidian/search.yaml +28 -0
- package/src/adapters/ollama/generate.yaml +33 -0
- package/src/adapters/ollama/models.yaml +29 -0
- package/src/adapters/ollama/ps.yaml +20 -0
- package/src/adapters/openrouter/models.yaml +22 -0
- package/src/adapters/openrouter/search.yaml +31 -0
- package/src/adapters/perplexity/ask.yaml +33 -0
- package/src/adapters/pexels/curated.yaml +31 -0
- package/src/adapters/pexels/search.yaml +28 -0
- package/src/adapters/pinduoduo/hot.yaml +20 -0
- package/src/adapters/pinduoduo/search.yaml +36 -0
- package/src/adapters/producthunt/search.yaml +41 -0
- package/src/adapters/pypi/info.yaml +16 -0
- package/src/adapters/pypi/search.yaml +37 -0
- package/src/adapters/pypi/versions.yaml +31 -0
- package/src/adapters/quark/ls.yaml +39 -0
- package/src/adapters/quark/search.yaml +39 -0
- package/src/adapters/qweather/forecast.yaml +37 -0
- package/src/adapters/qweather/now.yaml +16 -0
- package/src/adapters/reddit/new.yaml +34 -0
- package/src/adapters/reddit/rising.yaml +33 -0
- package/src/adapters/reddit/top.yaml +40 -0
- package/src/adapters/reddit/trending.yaml +25 -0
- package/src/adapters/replicate/run.yaml +39 -0
- package/src/adapters/replicate/search.yaml +25 -0
- package/src/adapters/replicate/trending.yaml +22 -0
- package/src/adapters/reuters/latest.yaml +26 -0
- package/src/adapters/sinafinance/market.yaml +21 -0
- package/src/adapters/slack/messages.yaml +41 -0
- package/src/adapters/slack/post.yaml +32 -0
- package/src/adapters/slack/search.yaml +28 -0
- package/src/adapters/slack/send.yaml +35 -0
- package/src/adapters/slack/status.yaml +19 -0
- package/src/adapters/slack/users.yaml +37 -0
- package/src/adapters/slock/servers.yaml +32 -0
- package/src/adapters/spotify/now-playing.yaml +28 -0
- package/src/adapters/spotify/playlists.yaml +37 -0
- package/src/adapters/spotify/top-tracks.yaml +42 -0
- package/src/adapters/sspai/hot.yaml +21 -0
- package/src/adapters/sspai/latest.yaml +22 -0
- package/src/adapters/stackoverflow/question.yaml +34 -0
- package/src/adapters/stackoverflow/tags.yaml +30 -0
- package/src/adapters/steam/app-details.yaml +32 -0
- package/src/adapters/steam/new-releases.yaml +28 -0
- package/src/adapters/steam/search.yaml +36 -0
- package/src/adapters/steam/specials.yaml +29 -0
- package/src/adapters/steam/wishlist.yaml +36 -0
- package/src/adapters/substack/trending.yaml +28 -0
- package/src/adapters/taobao/hot.yaml +31 -0
- package/src/adapters/taobao/search.yaml +44 -0
- package/src/adapters/techcrunch/latest.yaml +22 -0
- package/src/adapters/techcrunch/search.yaml +33 -0
- package/src/adapters/theverge/latest.yaml +21 -0
- package/src/adapters/theverge/search.yaml +33 -0
- package/src/adapters/threads/hot.yaml +44 -0
- package/src/adapters/threads/search.yaml +47 -0
- package/src/adapters/tiktok/trending.yaml +28 -0
- package/src/adapters/toutiao/hot.yaml +31 -0
- package/src/adapters/toutiao/search.yaml +47 -0
- package/src/adapters/twitch/games.yaml +31 -0
- package/src/adapters/twitch/search.yaml +39 -0
- package/src/adapters/twitch/streams.yaml +38 -0
- package/src/adapters/twitch/top.yaml +26 -0
- package/src/adapters/twitter/lists.yaml +49 -0
- package/src/adapters/twitter/media.yaml +48 -0
- package/src/adapters/twitter/mentions.yaml +38 -0
- package/src/adapters/twitter/mute.yaml +42 -0
- package/src/adapters/twitter/pin.yaml +43 -0
- package/src/adapters/twitter/quotes.yaml +43 -0
- package/src/adapters/twitter/retweets.yaml +44 -0
- package/src/adapters/twitter/spaces.yaml +43 -0
- package/src/adapters/twitter/unmute.yaml +42 -0
- package/src/adapters/unsplash/random.yaml +27 -0
- package/src/adapters/unsplash/search.yaml +28 -0
- package/src/adapters/v2ex/search.yaml +36 -0
- package/src/adapters/vscode/extensions.yaml +23 -0
- package/src/adapters/vscode/install-ext.yaml +26 -0
- package/src/adapters/vscode/open.yaml +25 -0
- package/src/adapters/wechat-channels/hot.yaml +39 -0
- package/src/adapters/wechat-channels/search.yaml +57 -0
- package/src/adapters/weibo/trending.yaml +28 -0
- package/src/adapters/weixin/hot.yaml +22 -0
- package/src/adapters/wikipedia/today.yaml +25 -0
- package/src/adapters/xiaohongshu/follow.yaml +35 -0
- package/src/adapters/xiaohongshu/hashtag.yaml +44 -0
- package/src/adapters/xiaohongshu/hot.yaml +34 -0
- package/src/adapters/xiaohongshu/like.yaml +27 -0
- package/src/adapters/xiaohongshu/profile.yaml +39 -0
- package/src/adapters/xiaohongshu/save.yaml +27 -0
- package/src/adapters/xiaohongshu/suggest.yaml +34 -0
- package/src/adapters/xiaohongshu/trending.yaml +35 -0
- package/src/adapters/xiaohongshu/unfollow.yaml +40 -0
- package/src/adapters/xueqiu/market.yaml +25 -0
- package/src/adapters/yahoo-finance/quote.yaml +35 -0
- package/src/adapters/yahoo-finance/search.yaml +42 -0
- package/src/adapters/yahoo-finance/trending.yaml +30 -0
- package/src/adapters/ycombinator/launches.yaml +20 -0
- package/src/adapters/youtube/playlist.yaml +43 -0
- package/src/adapters/youtube/shorts.yaml +42 -0
- package/src/adapters/youtube/trending.yaml +41 -0
- package/src/adapters/zhihu/answer.yaml +29 -0
- package/src/adapters/zhihu/answers.yaml +38 -0
- package/src/adapters/zhihu/article.yaml +27 -0
- package/src/adapters/zhihu/articles.yaml +38 -0
- package/src/adapters/zhihu/collections.yaml +37 -0
- package/src/adapters/zhihu/columns.yaml +38 -0
- package/src/adapters/zhihu/comment.yaml +42 -0
- package/src/adapters/zhihu/followers.yaml +37 -0
- package/src/adapters/zhihu/following.yaml +37 -0
- package/src/adapters/zhihu/pins.yaml +37 -0
- package/src/adapters/zhihu/topic.yaml +35 -0
- package/src/adapters/zhihu/topics.yaml +37 -0
- package/src/adapters/zhihu/trending.yaml +36 -0
- package/src/adapters/zhihu/user.yaml +30 -0
- package/src/adapters/zoom/join.yaml +24 -0
- package/src/adapters/zoom/start.yaml +17 -0
- package/src/hub/external-clis.yaml +343 -0
- package/src/hub/index.ts +128 -0
- package/src/hub/passthrough.ts +85 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
site: binance
|
|
2
|
+
name: kline
|
|
3
|
+
description: Candlestick (kline) data for a trading pair
|
|
4
|
+
domain: data-api.binance.vision
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
browser: false
|
|
8
|
+
|
|
9
|
+
args:
|
|
10
|
+
symbol:
|
|
11
|
+
type: str
|
|
12
|
+
required: true
|
|
13
|
+
positional: true
|
|
14
|
+
description: "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)"
|
|
15
|
+
interval:
|
|
16
|
+
type: str
|
|
17
|
+
default: 1d
|
|
18
|
+
description: "Kline interval (1m, 5m, 15m, 1h, 4h, 1d, 1w, 1M)"
|
|
19
|
+
|
|
20
|
+
pipeline:
|
|
21
|
+
- fetch:
|
|
22
|
+
url: https://data-api.binance.vision/api/v3/klines
|
|
23
|
+
params:
|
|
24
|
+
symbol: ${{ args.symbol }}
|
|
25
|
+
interval: ${{ args.interval }}
|
|
26
|
+
limit: "20"
|
|
27
|
+
- map:
|
|
28
|
+
time: ${{ new Date(item[0]).toISOString().slice(0, 10) }}
|
|
29
|
+
open: ${{ item[1] }}
|
|
30
|
+
high: ${{ item[2] }}
|
|
31
|
+
low: ${{ item[3] }}
|
|
32
|
+
close: ${{ item[4] }}
|
|
33
|
+
volume: ${{ item[5] }}
|
|
34
|
+
|
|
35
|
+
columns: [time, open, high, low, close, volume]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
site: binance
|
|
2
|
+
name: ticker
|
|
3
|
+
description: Price ticker for a trading pair
|
|
4
|
+
domain: data-api.binance.vision
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
browser: false
|
|
8
|
+
|
|
9
|
+
args:
|
|
10
|
+
symbol:
|
|
11
|
+
type: str
|
|
12
|
+
required: true
|
|
13
|
+
positional: true
|
|
14
|
+
description: "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)"
|
|
15
|
+
|
|
16
|
+
pipeline:
|
|
17
|
+
- fetch:
|
|
18
|
+
url: https://data-api.binance.vision/api/v3/ticker/24hr
|
|
19
|
+
- filter: "${{ item.symbol === args.symbol.toUpperCase() }}"
|
|
20
|
+
- map:
|
|
21
|
+
symbol: ${{ item.symbol }}
|
|
22
|
+
price: ${{ item.lastPrice }}
|
|
23
|
+
change: ${{ item.priceChange }}
|
|
24
|
+
change_pct: ${{ item.priceChangePercent }}%
|
|
25
|
+
high: ${{ item.highPrice }}
|
|
26
|
+
low: ${{ item.lowPrice }}
|
|
27
|
+
open: ${{ item.openPrice }}
|
|
28
|
+
volume: ${{ item.volume }}
|
|
29
|
+
quote_volume: ${{ item.quoteVolume }}
|
|
30
|
+
trades: ${{ item.count }}
|
|
31
|
+
- limit: 1
|
|
32
|
+
|
|
33
|
+
columns: [symbol, price, change, change_pct, high, low, open, volume, trades]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
site: bluesky
|
|
2
|
+
name: likes
|
|
3
|
+
description: Get Bluesky liked posts for a user
|
|
4
|
+
domain: bsky.social
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: cookie
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
actor:
|
|
10
|
+
required: true
|
|
11
|
+
positional: true
|
|
12
|
+
description: User handle or DID
|
|
13
|
+
limit:
|
|
14
|
+
type: int
|
|
15
|
+
default: 20
|
|
16
|
+
|
|
17
|
+
pipeline:
|
|
18
|
+
- fetch:
|
|
19
|
+
url: https://bsky.social/xrpc/app.bsky.feed.getActorLikes
|
|
20
|
+
params:
|
|
21
|
+
actor: "${{ args.actor }}"
|
|
22
|
+
limit: "${{ args.limit }}"
|
|
23
|
+
|
|
24
|
+
- select: feed
|
|
25
|
+
|
|
26
|
+
- map:
|
|
27
|
+
author: "${{ item.post?.author?.handle || '' }}"
|
|
28
|
+
text: "${{ item.post?.record?.text ? (item.post.record.text) | truncate(100) : '' }}"
|
|
29
|
+
likes: "${{ item.post?.likeCount || 0 }}"
|
|
30
|
+
reposts: "${{ item.post?.repostCount || 0 }}"
|
|
31
|
+
date: "${{ item.post?.indexedAt || '' }}"
|
|
32
|
+
|
|
33
|
+
- limit: ${{ args.limit }}
|
|
34
|
+
|
|
35
|
+
columns: [author, text, likes, reposts, date]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
site: bluesky
|
|
2
|
+
name: notifications
|
|
3
|
+
description: Get Bluesky notifications
|
|
4
|
+
domain: bsky.social
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: cookie
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
limit:
|
|
10
|
+
type: int
|
|
11
|
+
default: 20
|
|
12
|
+
|
|
13
|
+
pipeline:
|
|
14
|
+
- fetch:
|
|
15
|
+
url: https://bsky.social/xrpc/app.bsky.notification.listNotifications
|
|
16
|
+
params:
|
|
17
|
+
limit: "${{ args.limit }}"
|
|
18
|
+
|
|
19
|
+
- select: notifications
|
|
20
|
+
|
|
21
|
+
- map:
|
|
22
|
+
reason: ${{ item.reason }}
|
|
23
|
+
author: "${{ item.author ? item.author.handle : '' }}"
|
|
24
|
+
text: "${{ item.record?.text ? (item.record.text) | truncate(100) : '' }}"
|
|
25
|
+
indexed_at: ${{ item.indexedAt }}
|
|
26
|
+
is_read: ${{ item.isRead }}
|
|
27
|
+
|
|
28
|
+
- limit: ${{ args.limit }}
|
|
29
|
+
|
|
30
|
+
columns: [reason, author, text, indexed_at, is_read]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
site: bluesky
|
|
2
|
+
name: post
|
|
3
|
+
description: Create a Bluesky post
|
|
4
|
+
domain: bsky.social
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: cookie
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
text:
|
|
10
|
+
type: str
|
|
11
|
+
required: true
|
|
12
|
+
positional: true
|
|
13
|
+
description: Post text content
|
|
14
|
+
|
|
15
|
+
pipeline:
|
|
16
|
+
- fetch:
|
|
17
|
+
url: https://bsky.social/xrpc/com.atproto.repo.createRecord
|
|
18
|
+
method: POST
|
|
19
|
+
body:
|
|
20
|
+
collection: app.bsky.feed.post
|
|
21
|
+
record:
|
|
22
|
+
text: "${{ args.text }}"
|
|
23
|
+
createdAt: "${{ new Date().toISOString() }}"
|
|
24
|
+
|
|
25
|
+
columns: [uri, cid]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Desktop adapter — export Chrome bookmarks bar entries
|
|
2
|
+
site: chrome
|
|
3
|
+
name: bookmarks
|
|
4
|
+
description: List bookmarks from Chrome's bookmark bar (macOS)
|
|
5
|
+
type: desktop
|
|
6
|
+
detect: Darwin
|
|
7
|
+
strategy: public
|
|
8
|
+
|
|
9
|
+
pipeline:
|
|
10
|
+
- exec:
|
|
11
|
+
command: cat
|
|
12
|
+
args:
|
|
13
|
+
- "${{ env.HOME }}/Library/Application Support/Google/Chrome/Default/Bookmarks"
|
|
14
|
+
parse: json
|
|
15
|
+
timeout: 5000
|
|
16
|
+
|
|
17
|
+
- select: "roots.bookmark_bar.children"
|
|
18
|
+
|
|
19
|
+
- map:
|
|
20
|
+
name: "${{ item.name }}"
|
|
21
|
+
url: "${{ item.url || '' }}"
|
|
22
|
+
type: "${{ item.type }}"
|
|
23
|
+
|
|
24
|
+
- limit: 50
|
|
25
|
+
|
|
26
|
+
columns: [name, url, type]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Desktop adapter — list open Chrome tabs via JXA (macOS)
|
|
2
|
+
site: chrome
|
|
3
|
+
name: tabs
|
|
4
|
+
description: List all open tabs in Google Chrome (macOS)
|
|
5
|
+
type: desktop
|
|
6
|
+
detect: Darwin
|
|
7
|
+
strategy: public
|
|
8
|
+
|
|
9
|
+
pipeline:
|
|
10
|
+
- exec:
|
|
11
|
+
command: osascript
|
|
12
|
+
args:
|
|
13
|
+
- "-l"
|
|
14
|
+
- "JavaScript"
|
|
15
|
+
- "-e"
|
|
16
|
+
- "var chrome = Application('Google Chrome'); var tabs = []; chrome.windows().forEach(function(w, wi) { w.tabs().forEach(function(t) { tabs.push({window: wi, title: t.title(), url: t.url()}); }); }); JSON.stringify(tabs);"
|
|
17
|
+
parse: json
|
|
18
|
+
timeout: 10000
|
|
19
|
+
|
|
20
|
+
- map:
|
|
21
|
+
window: "${{ item.window }}"
|
|
22
|
+
title: "${{ item.title }}"
|
|
23
|
+
url: "${{ item.url }}"
|
|
24
|
+
|
|
25
|
+
columns: [window, title, url]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
site: cnki
|
|
2
|
+
name: search
|
|
3
|
+
description: Search CNKI academic papers
|
|
4
|
+
domain: scholar.cnki.net
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
query:
|
|
10
|
+
type: str
|
|
11
|
+
required: true
|
|
12
|
+
positional: true
|
|
13
|
+
description: Search query
|
|
14
|
+
limit:
|
|
15
|
+
type: int
|
|
16
|
+
default: 20
|
|
17
|
+
description: Maximum results
|
|
18
|
+
|
|
19
|
+
pipeline:
|
|
20
|
+
- fetch:
|
|
21
|
+
url: https://scholar.cnki.net/api/search
|
|
22
|
+
params:
|
|
23
|
+
q: "${{ args.query }}"
|
|
24
|
+
page: "1"
|
|
25
|
+
size: "${{ args.limit }}"
|
|
26
|
+
sort: relevant
|
|
27
|
+
|
|
28
|
+
- select: data.items
|
|
29
|
+
|
|
30
|
+
- map:
|
|
31
|
+
rank: ${{ index + 1 }}
|
|
32
|
+
title: "${{ (item.title || '') | strip_html }}"
|
|
33
|
+
authors: "${{ (item.authors || []).map(a => a.name).join(', ') }}"
|
|
34
|
+
source: "${{ item.publicationName || '' }}"
|
|
35
|
+
year: "${{ item.year || '' }}"
|
|
36
|
+
citations: ${{ item.citedCount || 0 }}
|
|
37
|
+
|
|
38
|
+
- limit: ${{ args.limit }}
|
|
39
|
+
|
|
40
|
+
columns: [rank, title, authors, source, year, citations]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
site: cnn
|
|
2
|
+
name: technology
|
|
3
|
+
description: CNN technology news
|
|
4
|
+
domain: edition.cnn.com
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
limit:
|
|
10
|
+
type: int
|
|
11
|
+
default: 20
|
|
12
|
+
|
|
13
|
+
pipeline:
|
|
14
|
+
- fetch_text:
|
|
15
|
+
url: http://rss.cnn.com/rss/edition_technology.rss
|
|
16
|
+
|
|
17
|
+
- parse_rss:
|
|
18
|
+
fields:
|
|
19
|
+
title: title
|
|
20
|
+
description: description
|
|
21
|
+
link: link
|
|
22
|
+
pubDate: pubDate
|
|
23
|
+
|
|
24
|
+
- limit: "${{ args.limit }}"
|
|
25
|
+
|
|
26
|
+
columns: [title, description, pubDate]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
site: cnn
|
|
2
|
+
name: top
|
|
3
|
+
description: CNN top stories via RSS
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: rss.cnn.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
limit:
|
|
9
|
+
required: false
|
|
10
|
+
default: 20
|
|
11
|
+
pipeline:
|
|
12
|
+
- fetch_text:
|
|
13
|
+
url: "http://rss.cnn.com/rss/edition.rss"
|
|
14
|
+
- parse_rss: ~
|
|
15
|
+
- map:
|
|
16
|
+
title: "${{ item.title }}"
|
|
17
|
+
url: "${{ item.link }}"
|
|
18
|
+
date: "${{ item.pubDate }}"
|
|
19
|
+
description: "${{ item.contentSnippet }}"
|
|
20
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
21
|
+
columns: [title, url, date]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
site: cocoapods
|
|
2
|
+
name: info
|
|
3
|
+
description: Get CocoaPods pod details
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: cocoapods.org
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
pod:
|
|
10
|
+
required: true
|
|
11
|
+
positional: true
|
|
12
|
+
description: Pod name (e.g. "Alamofire", "SnapKit")
|
|
13
|
+
|
|
14
|
+
pipeline:
|
|
15
|
+
- fetch:
|
|
16
|
+
url: "https://trunk.cocoapods.org/api/v1/pods/${{ args.pod }}"
|
|
17
|
+
|
|
18
|
+
- map:
|
|
19
|
+
name: ${{ item.name || '' }}
|
|
20
|
+
versions: "${{ item.versions ? item.versions.length : 0 }}"
|
|
21
|
+
|
|
22
|
+
- fetch:
|
|
23
|
+
url: "https://trunk.cocoapods.org/api/v1/pods/${{ args.pod }}/specs/latest"
|
|
24
|
+
|
|
25
|
+
- map:
|
|
26
|
+
name: ${{ item.name }}
|
|
27
|
+
version: ${{ item.version }}
|
|
28
|
+
summary: "${{ item.summary || '' }}"
|
|
29
|
+
homepage: "${{ item.homepage || '' }}"
|
|
30
|
+
license: "${{ item.license ? (item.license.type || item.license) : '' }}"
|
|
31
|
+
source: "${{ item.source ? item.source.git || '' : '' }}"
|
|
32
|
+
|
|
33
|
+
columns: [name, version, summary, homepage, license]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
site: cocoapods
|
|
2
|
+
name: search
|
|
3
|
+
description: Search CocoaPods iOS/macOS libraries
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: cocoapods.org
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
query:
|
|
9
|
+
required: true
|
|
10
|
+
positional: true
|
|
11
|
+
description: Pod search query
|
|
12
|
+
pipeline:
|
|
13
|
+
- fetch:
|
|
14
|
+
url: "https://search.cocoapods.org/api/v1/pods.picky.hash.json?query=${{ args.query }}&amount=20"
|
|
15
|
+
- select: allocations
|
|
16
|
+
columns: [name, version, summary, source]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
site: coinbase
|
|
2
|
+
name: prices
|
|
3
|
+
description: Get cryptocurrency spot prices from Coinbase
|
|
4
|
+
domain: api.coinbase.com
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
browser: false
|
|
8
|
+
|
|
9
|
+
args:
|
|
10
|
+
pair:
|
|
11
|
+
type: str
|
|
12
|
+
default: BTC-USD
|
|
13
|
+
positional: true
|
|
14
|
+
description: Trading pair (e.g. BTC-USD, ETH-USD)
|
|
15
|
+
|
|
16
|
+
pipeline:
|
|
17
|
+
- fetch:
|
|
18
|
+
url: https://api.coinbase.com/v2/prices/${{ args.pair }}/spot
|
|
19
|
+
|
|
20
|
+
- select: data
|
|
21
|
+
|
|
22
|
+
- map:
|
|
23
|
+
pair: ${{ args.pair }}
|
|
24
|
+
price: ${{ item.amount }}
|
|
25
|
+
currency: ${{ item.currency }}
|
|
26
|
+
|
|
27
|
+
columns: [pair, price, currency]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
site: coinbase
|
|
2
|
+
name: rates
|
|
3
|
+
description: Get cryptocurrency exchange rates from Coinbase
|
|
4
|
+
domain: api.coinbase.com
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
browser: false
|
|
8
|
+
|
|
9
|
+
args:
|
|
10
|
+
currency:
|
|
11
|
+
type: str
|
|
12
|
+
default: USD
|
|
13
|
+
positional: true
|
|
14
|
+
description: Base currency for rates (e.g. USD, EUR, BTC)
|
|
15
|
+
|
|
16
|
+
pipeline:
|
|
17
|
+
- fetch:
|
|
18
|
+
url: https://api.coinbase.com/v2/exchange-rates
|
|
19
|
+
params:
|
|
20
|
+
currency: ${{ args.currency }}
|
|
21
|
+
|
|
22
|
+
- select: data
|
|
23
|
+
|
|
24
|
+
columns: [currency, rates]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
site: coupang
|
|
2
|
+
name: hot
|
|
3
|
+
description: Coupang trending/popular products
|
|
4
|
+
domain: www.coupang.com
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
limit:
|
|
10
|
+
type: int
|
|
11
|
+
default: 20
|
|
12
|
+
|
|
13
|
+
pipeline:
|
|
14
|
+
- fetch:
|
|
15
|
+
url: https://www.coupang.com/np/goldbox
|
|
16
|
+
headers:
|
|
17
|
+
Accept: application/json
|
|
18
|
+
|
|
19
|
+
- select: data.products
|
|
20
|
+
|
|
21
|
+
- map:
|
|
22
|
+
rank: ${{ index + 1 }}
|
|
23
|
+
title: "${{ (item.name || item.title || '') | truncate(80) }}"
|
|
24
|
+
price: "${{ item.price || item.salePrice || '' }}"
|
|
25
|
+
discount: "${{ item.discountRate || '' }}"
|
|
26
|
+
|
|
27
|
+
- limit: ${{ args.limit }}
|
|
28
|
+
|
|
29
|
+
columns: [rank, title, price, discount]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
site: crates-io
|
|
2
|
+
name: info
|
|
3
|
+
description: Get Rust crate details from crates.io
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: crates.io
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
crate:
|
|
10
|
+
required: true
|
|
11
|
+
positional: true
|
|
12
|
+
description: Crate name
|
|
13
|
+
|
|
14
|
+
pipeline:
|
|
15
|
+
- fetch:
|
|
16
|
+
url: "https://crates.io/api/v1/crates/${{ args.crate }}"
|
|
17
|
+
headers:
|
|
18
|
+
User-Agent: "unicli (github.com/olo-dot-io/uni-cli)"
|
|
19
|
+
|
|
20
|
+
- select: crate
|
|
21
|
+
|
|
22
|
+
- map:
|
|
23
|
+
name: ${{ item.name }}
|
|
24
|
+
version: ${{ item.max_version }}
|
|
25
|
+
downloads: ${{ item.downloads }}
|
|
26
|
+
description: ${{ item.description }}
|
|
27
|
+
repository: ${{ item.repository }}
|
|
28
|
+
|
|
29
|
+
columns: [name, version, downloads, description, repository]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
site: crates-io
|
|
2
|
+
name: search
|
|
3
|
+
description: Search Rust crates on crates.io
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: crates.io
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
query:
|
|
9
|
+
required: true
|
|
10
|
+
positional: true
|
|
11
|
+
description: Search keyword
|
|
12
|
+
limit:
|
|
13
|
+
required: false
|
|
14
|
+
default: 20
|
|
15
|
+
pipeline:
|
|
16
|
+
- fetch:
|
|
17
|
+
url: "https://crates.io/api/v1/crates?q=${{ args.query }}&per_page=${{ args.limit | default(20) }}&sort=downloads"
|
|
18
|
+
headers:
|
|
19
|
+
User-Agent: "unicli/0.209.0 (https://github.com/olo-dot-io/Uni-CLI)"
|
|
20
|
+
- select: crates
|
|
21
|
+
- map:
|
|
22
|
+
name: "${{ item.name }}"
|
|
23
|
+
version: "${{ item.newest_version }}"
|
|
24
|
+
description: "${{ item.description }}"
|
|
25
|
+
downloads: "${{ item.downloads }}"
|
|
26
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
27
|
+
columns: [name, version, description, downloads]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
site: crates-io
|
|
2
|
+
name: versions
|
|
3
|
+
description: List versions of a Rust crate
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: crates.io
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
crate:
|
|
10
|
+
required: true
|
|
11
|
+
positional: true
|
|
12
|
+
description: Crate name
|
|
13
|
+
limit:
|
|
14
|
+
type: int
|
|
15
|
+
default: 20
|
|
16
|
+
|
|
17
|
+
pipeline:
|
|
18
|
+
- fetch:
|
|
19
|
+
url: "https://crates.io/api/v1/crates/${{ args.crate }}/versions"
|
|
20
|
+
headers:
|
|
21
|
+
User-Agent: "unicli (github.com/olo-dot-io/uni-cli)"
|
|
22
|
+
|
|
23
|
+
- select: versions
|
|
24
|
+
|
|
25
|
+
- map:
|
|
26
|
+
version: ${{ item.num }}
|
|
27
|
+
downloads: ${{ item.downloads }}
|
|
28
|
+
created: "${{ item.created_at }}"
|
|
29
|
+
yanked: ${{ item.yanked }}
|
|
30
|
+
|
|
31
|
+
- limit: ${{ args.limit }}
|
|
32
|
+
|
|
33
|
+
columns: [version, downloads, created, yanked]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
site: ctrip
|
|
2
|
+
name: hot
|
|
3
|
+
description: Ctrip popular travel destinations
|
|
4
|
+
domain: m.ctrip.com
|
|
5
|
+
type: web-api
|
|
6
|
+
strategy: public
|
|
7
|
+
|
|
8
|
+
args:
|
|
9
|
+
limit:
|
|
10
|
+
type: int
|
|
11
|
+
default: 20
|
|
12
|
+
|
|
13
|
+
pipeline:
|
|
14
|
+
- fetch:
|
|
15
|
+
url: https://m.ctrip.com/restapi/h5api/searchapp/search
|
|
16
|
+
params:
|
|
17
|
+
action: hotcity
|
|
18
|
+
|
|
19
|
+
- select: data
|
|
20
|
+
|
|
21
|
+
- map:
|
|
22
|
+
rank: ${{ index + 1 }}
|
|
23
|
+
name: "${{ item.word || item.name || '' }}"
|
|
24
|
+
type: "${{ item.type || '' }}"
|
|
25
|
+
|
|
26
|
+
- limit: ${{ args.limit }}
|
|
27
|
+
|
|
28
|
+
columns: [rank, name, type]
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cursor IDE adapter -- AI chat + composer + code extraction.
|
|
3
3
|
*
|
|
4
|
-
* Commands: ask, send, read, model, status, new, screenshot, dump,
|
|
4
|
+
* Commands: ask, send, read, model, status, new, screenshot, dump,
|
|
5
|
+
* composer, extract-code, export, history
|
|
5
6
|
*/
|
|
6
7
|
|
|
8
|
+
import { writeFileSync } from "node:fs";
|
|
7
9
|
import {
|
|
8
10
|
registerAIChatCommands,
|
|
9
11
|
connectElectronApp,
|
|
@@ -66,3 +68,91 @@ cli({
|
|
|
66
68
|
return code as unknown[];
|
|
67
69
|
},
|
|
68
70
|
});
|
|
71
|
+
|
|
72
|
+
// export -- Export current conversation to Markdown file
|
|
73
|
+
cli({
|
|
74
|
+
site: "cursor",
|
|
75
|
+
name: "export",
|
|
76
|
+
description: "Export the current Cursor conversation to a Markdown file",
|
|
77
|
+
strategy: Strategy.PUBLIC,
|
|
78
|
+
args: [
|
|
79
|
+
{
|
|
80
|
+
name: "output",
|
|
81
|
+
required: false,
|
|
82
|
+
positional: true,
|
|
83
|
+
default: "/tmp/cursor-export.md",
|
|
84
|
+
description: "Output file path",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
func: async (_page: unknown, kwargs: Record<string, unknown>) => {
|
|
88
|
+
const outputPath = String(kwargs.output ?? "/tmp/cursor-export.md");
|
|
89
|
+
const p = await connectElectronApp("cursor");
|
|
90
|
+
const md = (await p.evaluate(`
|
|
91
|
+
(() => {
|
|
92
|
+
const selectors = '[data-message-role]';
|
|
93
|
+
const messages = Array.from(document.querySelectorAll(selectors));
|
|
94
|
+
if (messages.length === 0) {
|
|
95
|
+
const main = document.querySelector('main, [role="main"], .messages-list');
|
|
96
|
+
if (main) return [main.innerText || main.textContent];
|
|
97
|
+
return [document.body.innerText];
|
|
98
|
+
}
|
|
99
|
+
return messages.map((m, i) => {
|
|
100
|
+
const role = m.getAttribute('data-message-role');
|
|
101
|
+
const root = m.querySelector('.markdown-root');
|
|
102
|
+
const text = root ? root.innerText : m.innerText;
|
|
103
|
+
return '## ' + (role === 'human' ? 'User' : 'Assistant') + '\\n\\n' + (text || '').trim();
|
|
104
|
+
}).join('\\n\\n---\\n\\n');
|
|
105
|
+
})()
|
|
106
|
+
`)) as string;
|
|
107
|
+
|
|
108
|
+
writeFileSync(outputPath, `# Cursor Conversation Export\n\n${md}`);
|
|
109
|
+
const messageCount = (md.match(/^## /gm) || []).length;
|
|
110
|
+
return [{ status: "exported", file: outputPath, messages: messageCount }];
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// history -- List recent chat sessions from Cursor sidebar
|
|
115
|
+
cli({
|
|
116
|
+
site: "cursor",
|
|
117
|
+
name: "history",
|
|
118
|
+
description: "List recent chat sessions from the Cursor sidebar",
|
|
119
|
+
strategy: Strategy.PUBLIC,
|
|
120
|
+
func: async () => {
|
|
121
|
+
const p = await connectElectronApp("cursor");
|
|
122
|
+
const items = (await p.evaluate(`
|
|
123
|
+
(() => {
|
|
124
|
+
const results = [];
|
|
125
|
+
const entries = document.querySelectorAll(
|
|
126
|
+
'.agent-sidebar-list-item, [data-testid="chat-history-item"], .chat-history-item, .tree-item'
|
|
127
|
+
);
|
|
128
|
+
entries.forEach((item, i) => {
|
|
129
|
+
const title = (item.textContent || item.innerText || '').trim().substring(0, 100);
|
|
130
|
+
if (title) results.push({ index: i + 1, title });
|
|
131
|
+
});
|
|
132
|
+
if (results.length === 0) {
|
|
133
|
+
const sidebar = document.querySelector(
|
|
134
|
+
'.sidebar, [class*="sidebar"], .agent-sidebar, .side-bar-container'
|
|
135
|
+
);
|
|
136
|
+
if (sidebar) {
|
|
137
|
+
const links = sidebar.querySelectorAll('a, [role="treeitem"], [role="option"]');
|
|
138
|
+
links.forEach((link, i) => {
|
|
139
|
+
const text = (link.textContent || '').trim().substring(0, 100);
|
|
140
|
+
if (text) results.push({ index: i + 1, title: text });
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return results;
|
|
145
|
+
})()
|
|
146
|
+
`)) as unknown[];
|
|
147
|
+
|
|
148
|
+
if (!items || (items as Array<unknown>).length === 0) {
|
|
149
|
+
return [
|
|
150
|
+
{
|
|
151
|
+
index: 0,
|
|
152
|
+
title: "No chat history found. Open the AI sidebar first.",
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
return items;
|
|
157
|
+
},
|
|
158
|
+
});
|