@zenalexa/unicli 0.220.0 → 0.220.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/AGENTS.md +10 -19
- package/README.md +17 -11
- package/README.zh-CN.md +17 -11
- package/dist/adapters/anilist/web.d.ts +11 -0
- package/dist/adapters/anilist/web.d.ts.map +1 -0
- package/dist/adapters/anilist/web.js +284 -0
- package/dist/adapters/anilist/web.js.map +1 -0
- package/dist/adapters/bangumi/web.d.ts +14 -0
- package/dist/adapters/bangumi/web.d.ts.map +1 -0
- package/dist/adapters/bangumi/web.js +257 -0
- package/dist/adapters/bangumi/web.js.map +1 -0
- package/dist/adapters/dlsite/web.d.ts +31 -0
- package/dist/adapters/dlsite/web.d.ts.map +1 -0
- package/dist/adapters/dlsite/web.js +455 -0
- package/dist/adapters/dlsite/web.js.map +1 -0
- package/dist/adapters/ehentai/web.d.ts +66 -0
- package/dist/adapters/ehentai/web.d.ts.map +1 -0
- package/dist/adapters/ehentai/web.js +608 -0
- package/dist/adapters/ehentai/web.js.map +1 -0
- package/dist/adapters/jikan/web.d.ts +9 -0
- package/dist/adapters/jikan/web.d.ts.map +1 -0
- package/dist/adapters/jikan/web.js +154 -0
- package/dist/adapters/jikan/web.js.map +1 -0
- package/dist/adapters/kitsu/web.d.ts +9 -0
- package/dist/adapters/kitsu/web.d.ts.map +1 -0
- package/dist/adapters/kitsu/web.js +97 -0
- package/dist/adapters/kitsu/web.js.map +1 -0
- package/dist/adapters/mangadex/web.d.ts +10 -0
- package/dist/adapters/mangadex/web.d.ts.map +1 -0
- package/dist/adapters/mangadex/web.js +188 -0
- package/dist/adapters/mangadex/web.js.map +1 -0
- package/dist/adapters/moegirl/web.d.ts +23 -0
- package/dist/adapters/moegirl/web.d.ts.map +1 -0
- package/dist/adapters/moegirl/web.js +269 -0
- package/dist/adapters/moegirl/web.js.map +1 -0
- package/dist/adapters/safebooru/web.d.ts +10 -0
- package/dist/adapters/safebooru/web.d.ts.map +1 -0
- package/dist/adapters/safebooru/web.js +120 -0
- package/dist/adapters/safebooru/web.js.map +1 -0
- package/dist/adapters/vndb/web.d.ts +10 -0
- package/dist/adapters/vndb/web.d.ts.map +1 -0
- package/dist/adapters/vndb/web.js +321 -0
- package/dist/adapters/vndb/web.js.map +1 -0
- package/dist/agents/codex-pack.d.ts +62 -0
- package/dist/agents/codex-pack.d.ts.map +1 -0
- package/dist/agents/codex-pack.js +163 -0
- package/dist/agents/codex-pack.js.map +1 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +6 -43
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/browser/adapter.d.ts.map +1 -1
- package/dist/commands/browser/adapter.js +17 -3
- package/dist/commands/browser/adapter.js.map +1 -1
- package/dist/commands/describe.d.ts.map +1 -1
- package/dist/commands/describe.js +6 -7
- package/dist/commands/describe.js.map +1 -1
- package/dist/commands/dispatch.d.ts +1 -1
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +4 -2
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +10 -5
- package/dist/commands/mcp.js.map +1 -1
- package/dist/core/command-contract-lint.d.ts +10 -0
- package/dist/core/command-contract-lint.d.ts.map +1 -0
- package/dist/core/command-contract-lint.js +41 -0
- package/dist/core/command-contract-lint.js.map +1 -0
- package/dist/core/command-contract.d.ts +100 -0
- package/dist/core/command-contract.d.ts.map +1 -0
- package/dist/core/command-contract.js +174 -0
- package/dist/core/command-contract.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/discovery/aliases.d.ts +2 -2
- package/dist/discovery/aliases.d.ts.map +1 -1
- package/dist/discovery/aliases.js +464 -6
- package/dist/discovery/aliases.js.map +1 -1
- package/dist/discovery/search.d.ts.map +1 -1
- package/dist/discovery/search.js +147 -2
- package/dist/discovery/search.js.map +1 -1
- package/dist/engine/args.d.ts.map +1 -1
- package/dist/engine/args.js +18 -1
- package/dist/engine/args.js.map +1 -1
- package/dist/engine/artifact-validation.d.ts +29 -0
- package/dist/engine/artifact-validation.d.ts.map +1 -0
- package/dist/engine/artifact-validation.js +211 -0
- package/dist/engine/artifact-validation.js.map +1 -0
- package/dist/engine/browser/diagnostics.d.ts +38 -0
- package/dist/engine/browser/diagnostics.d.ts.map +1 -0
- package/dist/engine/browser/diagnostics.js +40 -0
- package/dist/engine/browser/diagnostics.js.map +1 -0
- package/dist/engine/invoke.d.ts +1 -0
- package/dist/engine/invoke.d.ts.map +1 -1
- package/dist/engine/invoke.js +1 -0
- package/dist/engine/invoke.js.map +1 -1
- package/dist/engine/kernel/errors.d.ts +11 -0
- package/dist/engine/kernel/errors.d.ts.map +1 -0
- package/dist/engine/kernel/errors.js +15 -0
- package/dist/engine/kernel/errors.js.map +1 -0
- package/dist/engine/kernel/execute.d.ts +7 -18
- package/dist/engine/kernel/execute.d.ts.map +1 -1
- package/dist/engine/kernel/execute.js +25 -410
- package/dist/engine/kernel/execute.js.map +1 -1
- package/dist/engine/kernel/stages.d.ts +44 -0
- package/dist/engine/kernel/stages.d.ts.map +1 -0
- package/dist/engine/kernel/stages.js +428 -0
- package/dist/engine/kernel/stages.js.map +1 -0
- package/dist/engine/kernel/types.d.ts +21 -1
- package/dist/engine/kernel/types.d.ts.map +1 -1
- package/dist/engine/steps/download.d.ts +1 -0
- package/dist/engine/steps/download.d.ts.map +1 -1
- package/dist/engine/steps/download.js +10 -6
- package/dist/engine/steps/download.js.map +1 -1
- package/dist/fast-path/render.js +1 -1
- package/dist/fast-path/render.js.map +1 -1
- package/dist/manifest-compact.txt +3 -3
- package/dist/manifest-search.json +1 -1
- package/dist/manifest.json +3074 -3
- package/dist/mcp/handler.d.ts.map +1 -1
- package/dist/mcp/handler.js +11 -1
- package/dist/mcp/handler.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +18 -10
- package/dist/mcp/tools.js.map +1 -1
- package/dist/output/error-map.d.ts.map +1 -1
- package/dist/output/error-map.js +1 -1
- package/dist/output/error-map.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -1
- package/dist/registry.js.map +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
- package/skills/unicli/SKILL.md +1 -1
- package/skills/unicli-claude-code/SKILL.md +1 -1
- package/skills/unicli-hermes/SKILL.md +1 -1
- package/src/adapters/anilist/web.test.ts +93 -0
- package/src/adapters/anilist/web.ts +341 -0
- package/src/adapters/arxiv/download.yaml +53 -0
- package/src/adapters/bangumi/web.test.ts +109 -0
- package/src/adapters/bangumi/web.ts +295 -0
- package/src/adapters/danbooru/artists.yaml +44 -0
- package/src/adapters/danbooru/comments.yaml +45 -0
- package/src/adapters/danbooru/detail.yaml +78 -0
- package/src/adapters/danbooru/download.yaml +51 -0
- package/src/adapters/danbooru/pools.yaml +56 -0
- package/src/adapters/danbooru/search.yaml +69 -0
- package/src/adapters/danbooru/tags.yaml +42 -0
- package/src/adapters/danbooru/wiki.yaml +44 -0
- package/src/adapters/dlsite/web.test.ts +132 -0
- package/src/adapters/dlsite/web.ts +557 -0
- package/src/adapters/ehentai/web.test.ts +157 -0
- package/src/adapters/ehentai/web.ts +750 -0
- package/src/adapters/jikan/web.test.ts +50 -0
- package/src/adapters/jikan/web.ts +177 -0
- package/src/adapters/kitsu/web.test.ts +29 -0
- package/src/adapters/kitsu/web.ts +109 -0
- package/src/adapters/konachan/detail.yaml +62 -0
- package/src/adapters/konachan/download.yaml +55 -0
- package/src/adapters/konachan/search.yaml +65 -0
- package/src/adapters/konachan/tags.yaml +40 -0
- package/src/adapters/mangadex/web.test.ts +46 -0
- package/src/adapters/mangadex/web.ts +210 -0
- package/src/adapters/moegirl/web.test.ts +87 -0
- package/src/adapters/moegirl/web.ts +343 -0
- package/src/adapters/pdf/read.yaml +49 -0
- package/src/adapters/pixiv/download.yaml +15 -2
- package/src/adapters/safebooru/detail.yaml +63 -0
- package/src/adapters/safebooru/download.yaml +58 -0
- package/src/adapters/safebooru/search.yaml +69 -0
- package/src/adapters/safebooru/web.test.ts +60 -0
- package/src/adapters/safebooru/web.ts +130 -0
- package/src/adapters/vndb/web.test.ts +86 -0
- package/src/adapters/vndb/web.ts +393 -0
- package/src/adapters/yandere/detail.yaml +61 -0
- package/src/adapters/yandere/download.yaml +56 -0
- package/src/adapters/yandere/search.yaml +67 -0
- package/src/adapters/yandere/tags.yaml +41 -0
package/AGENTS.md
CHANGED
|
@@ -13,7 +13,7 @@ self-repairing — agents can fix them by editing one file. See
|
|
|
13
13
|
|
|
14
14
|
<!-- BEGIN COUNTS -->
|
|
15
15
|
|
|
16
|
-
> <!-- STATS:site_count -->
|
|
16
|
+
> <!-- STATS:site_count -->282<!-- /STATS --> sites, <!-- STATS:command_count -->1680<!-- /STATS --> commands, <!-- STATS:pipeline_step_count -->101<!-- /STATS --> pipeline steps, BM25 bilingual search. `npm install -g @zenalexa/unicli`
|
|
17
17
|
|
|
18
18
|
<!-- END COUNTS -->
|
|
19
19
|
|
|
@@ -21,11 +21,11 @@ self-repairing — agents can fix them by editing one file. See
|
|
|
21
21
|
|
|
22
22
|
## What You Can Do
|
|
23
23
|
|
|
24
|
-
### Web (
|
|
24
|
+
### Web (156+ sites)
|
|
25
25
|
|
|
26
26
|
**Chinese**: zhihu (25), xiaohongshu (22), bilibili (20), douyin (13), douban (12), v2ex (12), weibo (12), linux-do (11), +31 more (`unicli list`)
|
|
27
27
|
|
|
28
|
-
**International**: twitter (44), instagram (28), reddit (24), tiktok (17), youtube (16), nowcoder (16), discord-app (15), lesswrong (15), +
|
|
28
|
+
**International**: twitter (44), instagram (28), reddit (24), tiktok (17), youtube (16), nowcoder (16), discord-app (15), lesswrong (15), +86 more (`unicli list`)
|
|
29
29
|
|
|
30
30
|
**AI / ML**: chatgpt (17), antigravity (16), chatwise (16), notebooklm (15), claude (14), doubao-app (13), deepseek (9), doubao (9), +13 more (`unicli list`)
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ self-repairing — agents can fix them by editing one file. See
|
|
|
35
35
|
|
|
36
36
|
**News**: hackernews (11), bloomberg (10), 36kr (5), bbc (5), reuters (5), ithome (3), cnn (2), infoq (2), +3 more (`unicli list`)
|
|
37
37
|
|
|
38
|
-
**Reference**: spotify (23), netease-music (17), linear (10), imdb (7), bitwarden (7), todoist (7),
|
|
38
|
+
**Reference**: spotify (23), netease-music (17), linear (10), imdb (7), bitwarden (7), todoist (7), arxiv (6), wikipedia (6), +17 more (`unicli list`)
|
|
39
39
|
|
|
40
40
|
### macOS (60 cmds)
|
|
41
41
|
|
|
@@ -61,24 +61,15 @@ Full E2E + adapter coverage: `npm run verify`. Required before any release.
|
|
|
61
61
|
|
|
62
62
|
## Project conventions
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
apply in full. The bullets below are the project-specific reinforcement
|
|
66
|
-
because Uni-CLI is adapter-heavy and patch-rot kills us faster than most
|
|
67
|
-
codebases.
|
|
64
|
+
Uni-CLI is adapter-heavy; patch-rot is the failure mode that kills us fastest.
|
|
68
65
|
|
|
69
66
|
- **Engine code lives in `src/engine/`, browser in `src/browser/`, commands in `src/commands/`, adapters in `src/adapters/`.** Map by responsibility — never by version.
|
|
70
|
-
- **Errors emit structured envelopes** to stderr with `code`, `adapter_path`, `step`, `suggestion`. Pipeline steps that fail must surface the real cause, never coerce to a generic `internal_error`.
|
|
71
|
-
- **Tests under `tests/` and `*.test.ts` exercise real owned code** — engine, registry, adapter loader. External boundaries (network fetch, subprocess, Chrome CDP) may be stubbed with one `// REASON:` line.
|
|
67
|
+
- **Errors emit structured envelopes** to stderr with `code`, `adapter_path`, `step`, `suggestion`. Pipeline steps that fail must surface the real cause, never coerce to a generic `internal_error`.
|
|
68
|
+
- **Tests under `tests/` and `*.test.ts` exercise real owned code** — engine, registry, adapter loader. External boundaries (network fetch, subprocess, Chrome CDP) may be stubbed with one `// REASON:` line.
|
|
72
69
|
- **`unicli test [site]` runs adapter E2E.** Never substitute a fixture for the YAML pipeline runner.
|
|
73
|
-
- **Multi-file change in `src/engine/`, `src/browser/`, or new adapter type → independent
|
|
70
|
+
- **Multi-file change in `src/engine/`, `src/browser/`, or new adapter type → independent code review before PR.**
|
|
74
71
|
|
|
75
|
-
##
|
|
76
|
-
|
|
77
|
-
Detailed adapter format, pipeline conventions, and error envelope shape live
|
|
78
|
-
in the project skill: `~/.claude/skills/uni-cli-style/SKILL.md`. Load on
|
|
79
|
-
demand. Never paraphrase from memory.
|
|
80
|
-
|
|
81
|
-
## Project-internal references
|
|
72
|
+
## Project references
|
|
82
73
|
|
|
83
74
|
| Topic | Where |
|
|
84
75
|
| --------------------------- | ------------------------ |
|
|
@@ -92,7 +83,7 @@ project ships at high cadence, written counts go stale fast.
|
|
|
92
83
|
|
|
93
84
|
## Version
|
|
94
85
|
|
|
95
|
-
0.220.
|
|
86
|
+
0.220.1 — Apollo · Lovell Patch
|
|
96
87
|
|
|
97
88
|
## MCP one-liner (Claude Desktop / Cursor / Continue)
|
|
98
89
|
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<sub><!-- STATS:site_count -->
|
|
31
|
+
<sub><!-- STATS:site_count -->282<!-- /STATS --> sites · <!-- STATS:command_count -->1680<!-- /STATS --> commands · <!-- STATS:pipeline_step_count -->101<!-- /STATS --> pipeline steps · <!-- STATS:test_count -->8390<!-- /STATS --> tests</sub>
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
34
|
## Start In 30 Seconds
|
|
@@ -40,13 +40,15 @@ unicli hackernews top --limit 5 -f json
|
|
|
40
40
|
npx @zenalexa/unicli mcp serve
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
| Need | Command
|
|
44
|
-
| ---------------------------- |
|
|
45
|
-
| Find a capability | `unicli search "summarize reddit thread"`
|
|
46
|
-
| Inspect installed coverage | `unicli list`, `unicli list --site macos`
|
|
47
|
-
| Run with a machine contract | `unicli <site> <command> -f json`
|
|
48
|
-
|
|
|
49
|
-
|
|
|
43
|
+
| Need | Command |
|
|
44
|
+
| ---------------------------- | ------------------------------------------------------ |
|
|
45
|
+
| Find a capability | `unicli search "summarize reddit thread"` |
|
|
46
|
+
| Inspect installed coverage | `unicli list`, `unicli list --site macos` |
|
|
47
|
+
| Run with a machine contract | `unicli <site> <command> -f json` |
|
|
48
|
+
| Download and read papers | `unicli arxiv download <id> && unicli pdf read <file>` |
|
|
49
|
+
| Find ACG/tagged media | `unicli search "Sparkle Honkai Star Rail character"` |
|
|
50
|
+
| Fix a broken adapter locally | `unicli repair <site> <command>` |
|
|
51
|
+
| Serve tools to agents | `npx @zenalexa/unicli mcp serve --expanded` |
|
|
50
52
|
|
|
51
53
|
<!-- IF YOU ARE AN AI AGENT: Start here.
|
|
52
54
|
Install: npm install -g @zenalexa/unicli
|
|
@@ -79,6 +81,10 @@ Use search first, then run the smallest matching command.
|
|
|
79
81
|
```bash
|
|
80
82
|
unicli search "connect slack messages" --limit 5
|
|
81
83
|
unicli slack search "deploy incident" -f json
|
|
84
|
+
unicli anilist characters "Sparkle" --limit 5 -f json
|
|
85
|
+
unicli danbooru tags sparkle --limit 5 -f json
|
|
86
|
+
unicli arxiv download 1706.03762 --output ./papers -f json
|
|
87
|
+
unicli pdf read ./papers/1706.03762.pdf --first_page 1 --last_page 3 -f json
|
|
82
88
|
unicli macos app-actions --app WhatsApp -f json
|
|
83
89
|
unicli macos automation-smoke -f json
|
|
84
90
|
unicli repair slack search
|
|
@@ -132,7 +138,7 @@ Start with [Compute](docs/operate/compute.md), [Electron App Control](docs/opera
|
|
|
132
138
|
|
|
133
139
|
## Coverage
|
|
134
140
|
|
|
135
|
-
The catalog is intentionally broad. Every command is discoverable, typed, and repairable.
|
|
141
|
+
The catalog is intentionally broad. Every command is discoverable, typed, and repairable. Recent coverage includes scholarly paper download/read workflows, ACG/anime/manga/wiki discovery, booru tag search, visual-novel catalogs, and Japanese/romaji-aware entity lookup.
|
|
136
142
|
|
|
137
143
|
The wall below is generated from active manifest sites with real logo support. Badge counts exclude quarantined commands. The full generated catalog stays in `unicli list` and the docs site.
|
|
138
144
|
|
|
@@ -226,7 +232,7 @@ The wall below is generated from active manifest sites with real logo support. B
|
|
|
226
232
|
<a data-site="replicate" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="replicate: 2 commands"><img alt="replicate" src="https://img.shields.io/static/v1?label=replicate&message=2+cmds&color=7c3aed&style=flat-square&logo=replicate&logoColor=white"></a>
|
|
227
233
|
</p>
|
|
228
234
|
<p><strong>reference</strong><br>
|
|
229
|
-
<a data-site="arxiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="arxiv:
|
|
235
|
+
<a data-site="arxiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="arxiv: 5 commands"><img alt="arxiv" src="https://img.shields.io/static/v1?label=arxiv&message=5+cmds&color=0f766e&style=flat-square&logo=arxiv&logoColor=white"></a>
|
|
230
236
|
<a data-site="google" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="google: 4 commands"><img alt="google" src="https://img.shields.io/static/v1?label=google&message=4+cmds&color=0f766e&style=flat-square&logo=google&logoColor=white"></a>
|
|
231
237
|
<a data-site="wikipedia" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="wikipedia: 5 commands"><img alt="wikipedia" src="https://img.shields.io/static/v1?label=wikipedia&message=5+cmds&color=0f766e&style=flat-square&logo=wikipedia&logoColor=white"></a>
|
|
232
238
|
</p>
|
|
@@ -428,5 +434,5 @@ npm run verify
|
|
|
428
434
|
[Apache-2.0](./LICENSE)
|
|
429
435
|
|
|
430
436
|
<p align="center">
|
|
431
|
-
<sub>v0.220.
|
|
437
|
+
<sub>v0.220.1 — Apollo · Lovell Patch</sub>
|
|
432
438
|
</p>
|
package/README.zh-CN.md
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<sub><!-- STATS:site_count -->
|
|
31
|
+
<sub><!-- STATS:site_count -->282<!-- /STATS --> 个站点 · <!-- STATS:command_count -->1680<!-- /STATS --> 条命令 · <!-- STATS:pipeline_step_count -->101<!-- /STATS --> 个 pipeline step · <!-- STATS:test_count -->8390<!-- /STATS --> 个测试</sub>
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
34
|
## 30 秒开始
|
|
@@ -40,13 +40,15 @@ unicli hackernews top --limit 5 -f json
|
|
|
40
40
|
npx @zenalexa/unicli mcp serve
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
| 目标 | 命令
|
|
44
|
-
| ----------------- |
|
|
45
|
-
| 按意图找能力 | `unicli search "总结 reddit 讨论"`
|
|
46
|
-
| 查看已安装覆盖 | `unicli list`, `unicli list --site macos`
|
|
47
|
-
| 用机器契约执行 | `unicli <site> <command> -f json`
|
|
48
|
-
|
|
|
49
|
-
|
|
|
43
|
+
| 目标 | 命令 |
|
|
44
|
+
| ----------------- | ------------------------------------------------------ |
|
|
45
|
+
| 按意图找能力 | `unicli search "总结 reddit 讨论"` |
|
|
46
|
+
| 查看已安装覆盖 | `unicli list`, `unicli list --site macos` |
|
|
47
|
+
| 用机器契约执行 | `unicli <site> <command> -f json` |
|
|
48
|
+
| 下载并读取论文 | `unicli arxiv download <id> && unicli pdf read <file>` |
|
|
49
|
+
| 查 ACG/tag 内容 | `unicli search "花火 星穹铁道 character"` |
|
|
50
|
+
| 本地修复 adapter | `unicli repair <site> <command>` |
|
|
51
|
+
| 给 Agent 暴露工具 | `npx @zenalexa/unicli mcp serve --expanded` |
|
|
50
52
|
|
|
51
53
|
<!-- IF YOU ARE AN AI AGENT: Start here.
|
|
52
54
|
Install: npm install -g @zenalexa/unicli
|
|
@@ -79,6 +81,10 @@ Uni-CLI 位于 Agent 应用之下,把软件表面收敛成 Agent 能发现、
|
|
|
79
81
|
```bash
|
|
80
82
|
unicli search "推特热门" --limit 5
|
|
81
83
|
unicli twitter search "coding agents" -f json
|
|
84
|
+
unicli anilist characters "Sparkle" --limit 5 -f json
|
|
85
|
+
unicli danbooru tags sparkle --limit 5 -f json
|
|
86
|
+
unicli arxiv download 1706.03762 --output ./papers -f json
|
|
87
|
+
unicli pdf read ./papers/1706.03762.pdf --first_page 1 --last_page 3 -f json
|
|
82
88
|
unicli macos app-actions --app WhatsApp -f json
|
|
83
89
|
unicli macos automation-smoke -f json
|
|
84
90
|
unicli repair twitter search
|
|
@@ -116,7 +122,7 @@ ACP 作为编辑器和桥接兼容层保留。真正跑任务时,优先 native
|
|
|
116
122
|
|
|
117
123
|
## 覆盖范围
|
|
118
124
|
|
|
119
|
-
|
|
125
|
+
每条命令都能搜索、可声明、可验证、可修。近期覆盖已经扩展到论文下载和本地 PDF 读取、ACG/动画/漫画/wiki 发现、booru tag 搜索、美少女游戏目录,以及日文和罗马音实体检索。
|
|
120
126
|
|
|
121
127
|
下面的网格由 active manifest 中带真实 logo 的站点生成,徽章命令数不包含 quarantined 命令。完整目录始终以 `unicli list` 和文档站为准。
|
|
122
128
|
|
|
@@ -210,7 +216,7 @@ ACP 作为编辑器和桥接兼容层保留。真正跑任务时,优先 native
|
|
|
210
216
|
<a data-site="replicate" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="replicate: 2 commands"><img alt="replicate" src="https://img.shields.io/static/v1?label=replicate&message=2+cmds&color=7c3aed&style=flat-square&logo=replicate&logoColor=white"></a>
|
|
211
217
|
</p>
|
|
212
218
|
<p><strong>知识</strong><br>
|
|
213
|
-
<a data-site="arxiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="arxiv:
|
|
219
|
+
<a data-site="arxiv" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="arxiv: 5 commands"><img alt="arxiv" src="https://img.shields.io/static/v1?label=arxiv&message=5+cmds&color=0f766e&style=flat-square&logo=arxiv&logoColor=white"></a>
|
|
214
220
|
<a data-site="google" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="google: 4 commands"><img alt="google" src="https://img.shields.io/static/v1?label=google&message=4+cmds&color=0f766e&style=flat-square&logo=google&logoColor=white"></a>
|
|
215
221
|
<a data-site="wikipedia" href="https://olo-dot-io.github.io/Uni-CLI/reference/sites" title="wikipedia: 5 commands"><img alt="wikipedia" src="https://img.shields.io/static/v1?label=wikipedia&message=5+cmds&color=0f766e&style=flat-square&logo=wikipedia&logoColor=white"></a>
|
|
216
222
|
</p>
|
|
@@ -408,5 +414,5 @@ npm run verify
|
|
|
408
414
|
[Apache-2.0](./LICENSE)
|
|
409
415
|
|
|
410
416
|
<p align="center">
|
|
411
|
-
<sub>v0.220.
|
|
417
|
+
<sub>v0.220.1 — Apollo · Lovell Patch</sub>
|
|
412
418
|
</p>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @owner src/adapters/anilist/web.ts
|
|
3
|
+
* @does Register AniList public GraphQL search commands for anime, manga, characters, staff, and studios.
|
|
4
|
+
* @needs AniList public GraphQL schema and rate-limited unauthenticated search.
|
|
5
|
+
* @feeds ACG entity discovery across titles, characters, creators, and studios.
|
|
6
|
+
* @breaks AniList GraphQL field or rate-limit changes can block search workflows.
|
|
7
|
+
*/
|
|
8
|
+
export declare function mapAniListMedia(rows: unknown[]): Record<string, unknown>[];
|
|
9
|
+
export declare function mapAniListNamed(rows: unknown[], kind: string): Record<string, unknown>[];
|
|
10
|
+
export declare function rerankAniListNamed(rows: unknown[], query: string): unknown[];
|
|
11
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/adapters/anilist/web.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0FH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAoB1E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EAAE,EACf,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAc3B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAU5E"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @owner src/adapters/anilist/web.ts
|
|
3
|
+
* @does Register AniList public GraphQL search commands for anime, manga, characters, staff, and studios.
|
|
4
|
+
* @needs AniList public GraphQL schema and rate-limited unauthenticated search.
|
|
5
|
+
* @feeds ACG entity discovery across titles, characters, creators, and studios.
|
|
6
|
+
* @breaks AniList GraphQL field or rate-limit changes can block search workflows.
|
|
7
|
+
*/
|
|
8
|
+
import { USER_AGENT } from "../../constants.js";
|
|
9
|
+
import { cli, Strategy } from "../../registry.js";
|
|
10
|
+
const API_URL = "https://graphql.anilist.co";
|
|
11
|
+
function text(value, label) {
|
|
12
|
+
const result = String(value ?? "").trim();
|
|
13
|
+
if (!result)
|
|
14
|
+
throw new Error(`anilist ${label} cannot be empty.`);
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
function limit(value, fallback = 10) {
|
|
18
|
+
if (value === undefined || value === null || value === "")
|
|
19
|
+
return fallback;
|
|
20
|
+
const n = Number(value);
|
|
21
|
+
if (!Number.isInteger(n) || n < 1 || n > 50) {
|
|
22
|
+
throw new Error("anilist limit must be an integer in [1, 50].");
|
|
23
|
+
}
|
|
24
|
+
return n;
|
|
25
|
+
}
|
|
26
|
+
function optionalYear(value) {
|
|
27
|
+
if (value === undefined || value === null || value === "")
|
|
28
|
+
return undefined;
|
|
29
|
+
const n = Number(value);
|
|
30
|
+
if (!Number.isInteger(n) || n < 1900 || n > 2100) {
|
|
31
|
+
throw new Error("anilist year must be an integer in [1900, 2100].");
|
|
32
|
+
}
|
|
33
|
+
return n;
|
|
34
|
+
}
|
|
35
|
+
const MEDIA_SORTS = {
|
|
36
|
+
popular: ["POPULARITY_DESC"],
|
|
37
|
+
trending: ["TRENDING_DESC"],
|
|
38
|
+
recent: ["START_DATE_DESC"],
|
|
39
|
+
score: ["SCORE_DESC"],
|
|
40
|
+
relevance: ["SEARCH_MATCH"],
|
|
41
|
+
};
|
|
42
|
+
function mediaSort(value) {
|
|
43
|
+
const key = String(value ?? "relevance").trim();
|
|
44
|
+
const sort = MEDIA_SORTS[key];
|
|
45
|
+
if (!sort) {
|
|
46
|
+
throw new Error(`anilist sort must be one of: ${Object.keys(MEDIA_SORTS).join(", ")}.`);
|
|
47
|
+
}
|
|
48
|
+
return sort;
|
|
49
|
+
}
|
|
50
|
+
function str(value) {
|
|
51
|
+
return value === undefined || value === null ? "" : String(value);
|
|
52
|
+
}
|
|
53
|
+
function title(value) {
|
|
54
|
+
const obj = value && typeof value === "object"
|
|
55
|
+
? value
|
|
56
|
+
: {};
|
|
57
|
+
return str(obj.english) || str(obj.romaji) || str(obj.native);
|
|
58
|
+
}
|
|
59
|
+
async function postGraphql(query, variables) {
|
|
60
|
+
const response = await fetch(API_URL, {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: {
|
|
63
|
+
Accept: "application/json",
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
"User-Agent": USER_AGENT,
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({ query, variables }),
|
|
68
|
+
});
|
|
69
|
+
if (!response.ok)
|
|
70
|
+
throw new Error(`anilist request failed with HTTP ${response.status}.`);
|
|
71
|
+
const data = (await response.json());
|
|
72
|
+
if (data.errors?.length) {
|
|
73
|
+
throw new Error(`anilist API error: ${data.errors.map((e) => e.message).join("; ")}`);
|
|
74
|
+
}
|
|
75
|
+
if (!data.data)
|
|
76
|
+
throw new Error("anilist response did not include data.");
|
|
77
|
+
return data.data;
|
|
78
|
+
}
|
|
79
|
+
export function mapAniListMedia(rows) {
|
|
80
|
+
return rows.map((row, index) => {
|
|
81
|
+
const item = row;
|
|
82
|
+
return {
|
|
83
|
+
rank: index + 1,
|
|
84
|
+
id: item.id,
|
|
85
|
+
title: title(item.title),
|
|
86
|
+
native: str(item.title?.native),
|
|
87
|
+
type: str(item.type),
|
|
88
|
+
format: str(item.format),
|
|
89
|
+
status: str(item.status),
|
|
90
|
+
score: item.averageScore ?? null,
|
|
91
|
+
popularity: item.popularity ?? null,
|
|
92
|
+
trending: item.trending ?? null,
|
|
93
|
+
start_date: formatDate(item.startDate),
|
|
94
|
+
episodes: item.episodes ?? null,
|
|
95
|
+
chapters: item.chapters ?? null,
|
|
96
|
+
url: str(item.siteUrl),
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
export function mapAniListNamed(rows, kind) {
|
|
101
|
+
return rows.map((row, index) => {
|
|
102
|
+
const item = row;
|
|
103
|
+
const name = item.name;
|
|
104
|
+
return {
|
|
105
|
+
rank: index + 1,
|
|
106
|
+
id: item.id,
|
|
107
|
+
kind,
|
|
108
|
+
name: str(name?.full ?? item.name),
|
|
109
|
+
native: str(name?.native),
|
|
110
|
+
favourites: item.favourites ?? null,
|
|
111
|
+
url: str(item.siteUrl),
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export function rerankAniListNamed(rows, query) {
|
|
116
|
+
const needle = query.trim().toLowerCase();
|
|
117
|
+
if (!needle)
|
|
118
|
+
return rows;
|
|
119
|
+
return [...rows].sort((left, right) => {
|
|
120
|
+
const leftScore = namedMatchScore(left, needle);
|
|
121
|
+
const rightScore = namedMatchScore(right, needle);
|
|
122
|
+
if (leftScore !== rightScore)
|
|
123
|
+
return rightScore - leftScore;
|
|
124
|
+
return 0;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function namedMatchScore(row, needle) {
|
|
128
|
+
const item = row;
|
|
129
|
+
const name = item.name && typeof item.name === "object"
|
|
130
|
+
? item.name
|
|
131
|
+
: {};
|
|
132
|
+
const candidates = [item.name, name.full, name.native].map((value) => str(value).toLowerCase());
|
|
133
|
+
if (candidates.some((value) => value === needle))
|
|
134
|
+
return 4;
|
|
135
|
+
if (candidates.some((value) => value.includes(needle)))
|
|
136
|
+
return 3;
|
|
137
|
+
if (candidates.some((value) => needle.includes(value) && value.length > 1)) {
|
|
138
|
+
return 2;
|
|
139
|
+
}
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
function formatDate(value) {
|
|
143
|
+
const obj = value && typeof value === "object"
|
|
144
|
+
? value
|
|
145
|
+
: {};
|
|
146
|
+
const year = Number(obj.year);
|
|
147
|
+
if (!Number.isInteger(year) || year <= 0)
|
|
148
|
+
return "";
|
|
149
|
+
const month = Number(obj.month);
|
|
150
|
+
const day = Number(obj.day);
|
|
151
|
+
if (!Number.isInteger(month) || month <= 0)
|
|
152
|
+
return String(year);
|
|
153
|
+
if (!Number.isInteger(day) || day <= 0) {
|
|
154
|
+
return [String(year).padStart(4, "0"), String(month).padStart(2, "0")].join("-");
|
|
155
|
+
}
|
|
156
|
+
return [
|
|
157
|
+
String(year).padStart(4, "0"),
|
|
158
|
+
String(month).padStart(2, "0"),
|
|
159
|
+
String(day).padStart(2, "0"),
|
|
160
|
+
].join("-");
|
|
161
|
+
}
|
|
162
|
+
async function searchMedia(kind, kwargs) {
|
|
163
|
+
const query = text(kwargs.query, "query");
|
|
164
|
+
const requested = limit(kwargs.limit);
|
|
165
|
+
const perPage = Math.min(50, Math.max(10, requested * 5));
|
|
166
|
+
const year = optionalYear(kwargs.year);
|
|
167
|
+
const startDateGreater = year ? year * 10000 + 101 : undefined;
|
|
168
|
+
const startDateLesser = year ? year * 10000 + 1231 : undefined;
|
|
169
|
+
const sort = mediaSort(kwargs.sort);
|
|
170
|
+
const data = await postGraphql(`query ($search: String, $perPage: Int, $type: MediaType, $startDateGreater: FuzzyDateInt, $startDateLesser: FuzzyDateInt, $sort: [MediaSort]) {
|
|
171
|
+
Page(page: 1, perPage: $perPage) {
|
|
172
|
+
media(search: $search, type: $type, startDate_greater: $startDateGreater, startDate_lesser: $startDateLesser, sort: $sort) {
|
|
173
|
+
id title { romaji english native } type format status averageScore popularity trending startDate { year month day } episodes chapters siteUrl
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}`, {
|
|
177
|
+
search: query,
|
|
178
|
+
perPage,
|
|
179
|
+
type: kind,
|
|
180
|
+
startDateGreater,
|
|
181
|
+
startDateLesser,
|
|
182
|
+
sort,
|
|
183
|
+
});
|
|
184
|
+
const rows = mapAniListMedia((data.Page?.media ?? []).slice(0, requested));
|
|
185
|
+
if (rows.length === 0)
|
|
186
|
+
throw new Error(`No AniList ${kind.toLowerCase()} found for "${query}".`);
|
|
187
|
+
return rows;
|
|
188
|
+
}
|
|
189
|
+
async function searchNamed(kind, kwargs) {
|
|
190
|
+
const query = text(kwargs.query, "query");
|
|
191
|
+
const requested = limit(kwargs.limit);
|
|
192
|
+
const perPage = Math.min(50, Math.max(10, requested * 5));
|
|
193
|
+
const field = kind === "characters"
|
|
194
|
+
? "characters"
|
|
195
|
+
: kind === "staff"
|
|
196
|
+
? "staff"
|
|
197
|
+
: "studios";
|
|
198
|
+
const fields = kind === "studios"
|
|
199
|
+
? "id name favourites siteUrl"
|
|
200
|
+
: "id name { full native } favourites siteUrl";
|
|
201
|
+
const data = await postGraphql(`query ($search: String, $perPage: Int) {
|
|
202
|
+
Page(page: 1, perPage: $perPage) {
|
|
203
|
+
${field}(search: $search) { ${fields} }
|
|
204
|
+
}
|
|
205
|
+
}`, { search: query, perPage });
|
|
206
|
+
const rows = mapAniListNamed(rerankAniListNamed(data.Page?.[field] ?? [], query).slice(0, requested), kind);
|
|
207
|
+
if (rows.length === 0)
|
|
208
|
+
throw new Error(`No AniList ${kind} found for "${query}".`);
|
|
209
|
+
return rows;
|
|
210
|
+
}
|
|
211
|
+
const MEDIA_ARGS = [
|
|
212
|
+
{ name: "query", type: "str", required: true, positional: true },
|
|
213
|
+
{ name: "limit", type: "int", default: 10 },
|
|
214
|
+
{ name: "year", type: "int" },
|
|
215
|
+
{
|
|
216
|
+
name: "sort",
|
|
217
|
+
type: "str",
|
|
218
|
+
default: "relevance",
|
|
219
|
+
choices: ["relevance", "popular", "trending", "recent", "score"],
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
const NAMED_ARGS = [
|
|
223
|
+
{ name: "query", type: "str", required: true, positional: true },
|
|
224
|
+
{ name: "limit", type: "int", default: 10 },
|
|
225
|
+
];
|
|
226
|
+
const MEDIA_COLUMNS = [
|
|
227
|
+
"rank",
|
|
228
|
+
"id",
|
|
229
|
+
"title",
|
|
230
|
+
"native",
|
|
231
|
+
"type",
|
|
232
|
+
"format",
|
|
233
|
+
"status",
|
|
234
|
+
"score",
|
|
235
|
+
"popularity",
|
|
236
|
+
"trending",
|
|
237
|
+
"start_date",
|
|
238
|
+
"url",
|
|
239
|
+
];
|
|
240
|
+
const NAMED_COLUMNS = [
|
|
241
|
+
"rank",
|
|
242
|
+
"id",
|
|
243
|
+
"kind",
|
|
244
|
+
"name",
|
|
245
|
+
"native",
|
|
246
|
+
"favourites",
|
|
247
|
+
"url",
|
|
248
|
+
];
|
|
249
|
+
cli({
|
|
250
|
+
site: "anilist",
|
|
251
|
+
name: "anime",
|
|
252
|
+
description: "Search AniList anime by Japanese title, native title, romaji, alias, or keyword",
|
|
253
|
+
domain: "anilist.co",
|
|
254
|
+
strategy: Strategy.PUBLIC,
|
|
255
|
+
browser: false,
|
|
256
|
+
args: MEDIA_ARGS,
|
|
257
|
+
columns: MEDIA_COLUMNS,
|
|
258
|
+
func: async (_page, kwargs) => searchMedia("ANIME", kwargs),
|
|
259
|
+
});
|
|
260
|
+
cli({
|
|
261
|
+
site: "anilist",
|
|
262
|
+
name: "manga",
|
|
263
|
+
description: "Search AniList manga by Japanese title, native title, romaji, alias, or keyword",
|
|
264
|
+
domain: "anilist.co",
|
|
265
|
+
strategy: Strategy.PUBLIC,
|
|
266
|
+
browser: false,
|
|
267
|
+
args: MEDIA_ARGS,
|
|
268
|
+
columns: MEDIA_COLUMNS,
|
|
269
|
+
func: async (_page, kwargs) => searchMedia("MANGA", kwargs),
|
|
270
|
+
});
|
|
271
|
+
for (const name of ["characters", "staff", "studios"]) {
|
|
272
|
+
cli({
|
|
273
|
+
site: "anilist",
|
|
274
|
+
name,
|
|
275
|
+
description: `Search AniList ${name} by Japanese name, native name, romaji, or alias`,
|
|
276
|
+
domain: "anilist.co",
|
|
277
|
+
strategy: Strategy.PUBLIC,
|
|
278
|
+
browser: false,
|
|
279
|
+
args: NAMED_ARGS,
|
|
280
|
+
columns: NAMED_COLUMNS,
|
|
281
|
+
func: async (_page, kwargs) => searchNamed(name, kwargs),
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/adapters/anilist/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @owner src/adapters/bangumi/web.ts
|
|
3
|
+
* @does Register Bangumi public search/detail commands for anime, books, games, subjects, and characters.
|
|
4
|
+
* @needs Bangumi public REST/search endpoints and user-agent policy.
|
|
5
|
+
* @feeds Chinese/Japanese ACG title, character, and visual-novel discovery.
|
|
6
|
+
* @breaks Bangumi legacy search endpoint or v0 subject/character schema changes can block lookup.
|
|
7
|
+
*/
|
|
8
|
+
declare const TYPE_CODES: Record<string, number>;
|
|
9
|
+
export declare function mapBangumiSubjects(rows: unknown[]): Record<string, unknown>[];
|
|
10
|
+
export declare function mapBangumiSubject(item: Record<string, unknown>): Record<string, unknown>;
|
|
11
|
+
export declare function mapBangumiCharacters(rows: unknown[]): Record<string, unknown>[];
|
|
12
|
+
export declare function bangumiSubjectSearchBody(kind: keyof typeof TYPE_CODES, kwargs: Record<string, unknown>): Record<string, unknown>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/adapters/bangumi/web.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmCH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtC,CAAC;AAwCF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAmB7E;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EAAE,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkB3B;AAsBD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,OAAO,UAAU,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
|