@zenalexa/unicli 0.207.1 → 0.209.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 +4 -4
- package/README.md +30 -17
- package/dist/browser/observe.d.ts +80 -0
- package/dist/browser/observe.d.ts.map +1 -0
- package/dist/browser/observe.js +144 -0
- package/dist/browser/observe.js.map +1 -0
- package/dist/browser/snapshot.d.ts.map +1 -1
- package/dist/browser/snapshot.js +29 -9
- package/dist/browser/snapshot.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +59 -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/eval.d.ts +112 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +485 -0
- package/dist/commands/eval.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/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +135 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/operate.d.ts.map +1 -1
- package/dist/commands/operate.js +66 -1
- package/dist/commands/operate.js.map +1 -1
- 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 +91 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +266 -0
- package/dist/commands/skills.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/commands/usage.d.ts +17 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +87 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/discovery/loader.d.ts +8 -1
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +103 -6
- 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/update-check.js +1 -1
- package/dist/engine/update-check.js.map +1 -1
- package/dist/engine/yaml-runner.d.ts.map +1 -1
- package/dist/engine/yaml-runner.js +115 -6
- package/dist/engine/yaml-runner.js.map +1 -1
- package/dist/main.d.ts +1 -4
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -4
- package/dist/main.js.map +1 -1
- package/dist/manifest.json +519 -1
- package/dist/mcp/server.d.ts +19 -6
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +459 -115
- package/dist/mcp/server.js.map +1 -1
- package/dist/permissions/sensitive-paths.d.ts +92 -0
- package/dist/permissions/sensitive-paths.d.ts.map +1 -0
- package/dist/permissions/sensitive-paths.js +174 -0
- package/dist/permissions/sensitive-paths.js.map +1 -0
- package/dist/runtime/usage-ledger.d.ts +86 -0
- package/dist/runtime/usage-ledger.d.ts.map +1 -0
- package/dist/runtime/usage-ledger.js +173 -0
- package/dist/runtime/usage-ledger.js.map +1 -0
- package/package.json +8 -7
- package/src/adapters/autoagent/eval-run.yaml +36 -0
- package/src/adapters/cnn/top.yaml +21 -0
- package/src/adapters/cocoapods/search.yaml +16 -0
- package/src/adapters/crates-io/search.yaml +27 -0
- package/src/adapters/cua/bench-list.yaml +20 -0
- package/src/adapters/cua/bench-run.yaml +32 -0
- package/src/adapters/docker-hub/search.yaml +26 -0
- package/src/adapters/eastmoney/hot.yaml +23 -0
- package/src/adapters/eastmoney/search.yaml +25 -0
- package/src/adapters/exchangerate/convert.yaml +19 -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/gitee/search.yaml +25 -0
- package/src/adapters/gitee/trending.yaml +22 -0
- package/src/adapters/gitlab/search.yaml +24 -0
- package/src/adapters/gitlab/trending.yaml +22 -0
- package/src/adapters/godot/project-run.yaml +31 -0
- package/src/adapters/godot/scene-export.yaml +39 -0
- package/src/adapters/hermes/sessions-search.yaml +61 -0
- package/src/adapters/hermes/skills-list.yaml +30 -0
- package/src/adapters/hermes/skills-read.yaml +46 -0
- package/src/adapters/homebrew/info.yaml +15 -0
- package/src/adapters/huggingface-papers/daily.yaml +21 -0
- package/src/adapters/infoq/articles.yaml +29 -0
- package/src/adapters/ip-info/lookup.yaml +15 -0
- package/src/adapters/itch-io/popular.yaml +22 -0
- package/src/adapters/ithome/news.yaml +21 -0
- package/src/adapters/mastodon/search.yaml +29 -0
- package/src/adapters/mastodon/trending.yaml +27 -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/motion-studio/component-get.yaml +35 -0
- package/src/adapters/netease-music/hot.yaml +24 -0
- package/src/adapters/netease-music/search.yaml +29 -0
- package/src/adapters/npm-trends/compare.yaml +19 -0
- package/src/adapters/nytimes/top.yaml +26 -0
- package/src/adapters/openharness/memory-read.yaml +51 -0
- package/src/adapters/openharness/skills-list.yaml +28 -0
- package/src/adapters/openrouter/models.yaml +22 -0
- package/src/adapters/pexels/search.yaml +28 -0
- package/src/adapters/pinduoduo/hot.yaml +20 -0
- package/src/adapters/pypi/info.yaml +16 -0
- package/src/adapters/qweather/now.yaml +16 -0
- package/src/adapters/renderdoc/capture-list.yaml +42 -0
- package/src/adapters/renderdoc/frame-export.yaml +32 -0
- package/src/adapters/replicate/search.yaml +25 -0
- package/src/adapters/replicate/trending.yaml +22 -0
- package/src/adapters/sspai/hot.yaml +21 -0
- package/src/adapters/sspai/latest.yaml +22 -0
- package/src/adapters/stagehand/wrap-observe.yaml +42 -0
- package/src/adapters/techcrunch/latest.yaml +22 -0
- package/src/adapters/theverge/latest.yaml +21 -0
- package/src/adapters/twitch/top.yaml +26 -0
- package/src/adapters/unsplash/search.yaml +28 -0
- package/src/adapters/ycombinator/launches.yaml +20 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenalexa/unicli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.209.0",
|
|
4
|
+
"description": "The universal interface between AI agents and the world's software",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|
|
7
7
|
"bin": {
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"lint": "oxlint src/",
|
|
30
30
|
"format": "prettier --write .",
|
|
31
31
|
"format:check": "prettier --check .",
|
|
32
|
-
"
|
|
32
|
+
"lint:context": "bash scripts/lint-context.sh",
|
|
33
|
+
"verify": "npm run format:check && npm run typecheck && npm run lint && npm run lint:context && npm run test && npm run build",
|
|
33
34
|
"docs:dev": "vitepress dev docs",
|
|
34
35
|
"docs:build": "vitepress build docs",
|
|
35
36
|
"docs:preview": "vitepress preview docs",
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
"mcp": "tsx src/mcp/server.ts",
|
|
38
39
|
"release": "npm run build && tsx scripts/release.ts",
|
|
39
40
|
"bench": "tsx scripts/bench.ts",
|
|
40
|
-
"sync:ref": "
|
|
41
|
+
"sync:ref": "bash scripts/sync-ref.sh"
|
|
41
42
|
},
|
|
42
43
|
"keywords": [
|
|
43
44
|
"cli",
|
|
@@ -55,11 +56,11 @@
|
|
|
55
56
|
"license": "Apache-2.0",
|
|
56
57
|
"repository": {
|
|
57
58
|
"type": "git",
|
|
58
|
-
"url": "git+https://github.com/
|
|
59
|
+
"url": "git+https://github.com/olo-dot-io/Uni-CLI.git"
|
|
59
60
|
},
|
|
60
|
-
"homepage": "https://github.com/
|
|
61
|
+
"homepage": "https://github.com/olo-dot-io/Uni-CLI",
|
|
61
62
|
"bugs": {
|
|
62
|
-
"url": "https://github.com/
|
|
63
|
+
"url": "https://github.com/olo-dot-io/Uni-CLI/issues"
|
|
63
64
|
},
|
|
64
65
|
"engines": {
|
|
65
66
|
"node": ">=20.0.0"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# kevinrgu/autoagent eval/run — delegate hill-climbing optimization to AutoAgent.
|
|
2
|
+
# Subprocess wrapper that streams JSON results back.
|
|
3
|
+
site: autoagent
|
|
4
|
+
name: eval/run
|
|
5
|
+
description: Run an AutoAgent evaluation (hill-climbing on agent.py)
|
|
6
|
+
type: bridge
|
|
7
|
+
strategy: public
|
|
8
|
+
binary: autoagent
|
|
9
|
+
detect: which autoagent
|
|
10
|
+
|
|
11
|
+
args:
|
|
12
|
+
task:
|
|
13
|
+
type: str
|
|
14
|
+
required: true
|
|
15
|
+
positional: true
|
|
16
|
+
description: Task name or path to a YAML task spec
|
|
17
|
+
iterations:
|
|
18
|
+
type: int
|
|
19
|
+
default: 5
|
|
20
|
+
description: Max hill-climb iterations
|
|
21
|
+
|
|
22
|
+
pipeline:
|
|
23
|
+
- exec:
|
|
24
|
+
command: autoagent
|
|
25
|
+
args:
|
|
26
|
+
- eval
|
|
27
|
+
- run
|
|
28
|
+
- --task
|
|
29
|
+
- ${{ args.task }}
|
|
30
|
+
- --iterations
|
|
31
|
+
- ${{ args.iterations }}
|
|
32
|
+
- --json
|
|
33
|
+
parse: json
|
|
34
|
+
timeout: 600000
|
|
35
|
+
|
|
36
|
+
columns: [iteration, score, change]
|
|
@@ -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,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: 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,20 @@
|
|
|
1
|
+
# trycua/cua bench/list — list available cua benchmarks.
|
|
2
|
+
site: cua
|
|
3
|
+
name: bench/list
|
|
4
|
+
description: List trycua/cua computer-use benchmarks
|
|
5
|
+
type: bridge
|
|
6
|
+
strategy: public
|
|
7
|
+
binary: cua
|
|
8
|
+
detect: which cua
|
|
9
|
+
|
|
10
|
+
pipeline:
|
|
11
|
+
- exec:
|
|
12
|
+
command: cua
|
|
13
|
+
args:
|
|
14
|
+
- bench
|
|
15
|
+
- list
|
|
16
|
+
- --json
|
|
17
|
+
parse: json
|
|
18
|
+
timeout: 30000
|
|
19
|
+
|
|
20
|
+
columns: [name, description]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# trycua/cua bench/run — run a single computer-use benchmark.
|
|
2
|
+
site: cua
|
|
3
|
+
name: bench/run
|
|
4
|
+
description: Run a trycua/cua computer-use benchmark
|
|
5
|
+
type: bridge
|
|
6
|
+
strategy: public
|
|
7
|
+
binary: cua
|
|
8
|
+
detect: which cua
|
|
9
|
+
|
|
10
|
+
args:
|
|
11
|
+
benchmark:
|
|
12
|
+
type: str
|
|
13
|
+
required: true
|
|
14
|
+
positional: true
|
|
15
|
+
description: Benchmark name from `cua bench/list`
|
|
16
|
+
agent:
|
|
17
|
+
type: str
|
|
18
|
+
required: false
|
|
19
|
+
description: Agent backend (e.g. unicli, browser-use, claude)
|
|
20
|
+
|
|
21
|
+
pipeline:
|
|
22
|
+
- exec:
|
|
23
|
+
command: cua
|
|
24
|
+
args:
|
|
25
|
+
- bench
|
|
26
|
+
- run
|
|
27
|
+
- ${{ args.benchmark }}
|
|
28
|
+
- --json
|
|
29
|
+
parse: json
|
|
30
|
+
timeout: 600000
|
|
31
|
+
|
|
32
|
+
columns: [task, score, duration, agent]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
site: docker-hub
|
|
2
|
+
name: search
|
|
3
|
+
description: Search Docker Hub images
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: hub.docker.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
query:
|
|
9
|
+
required: true
|
|
10
|
+
positional: true
|
|
11
|
+
description: Image search query
|
|
12
|
+
limit:
|
|
13
|
+
required: false
|
|
14
|
+
default: 20
|
|
15
|
+
pipeline:
|
|
16
|
+
- fetch:
|
|
17
|
+
url: "https://hub.docker.com/v2/search/repositories/?query=${{ args.query }}&page_size=${{ args.limit | default(20) }}"
|
|
18
|
+
- select: results
|
|
19
|
+
- map:
|
|
20
|
+
name: "${{ item.repo_name }}"
|
|
21
|
+
description: "${{ item.short_description }}"
|
|
22
|
+
stars: "${{ item.star_count }}"
|
|
23
|
+
pulls: "${{ item.pull_count }}"
|
|
24
|
+
official: "${{ item.is_official }}"
|
|
25
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
26
|
+
columns: [name, description, stars, pulls, official]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
site: eastmoney
|
|
2
|
+
name: hot
|
|
3
|
+
description: Eastmoney hot stocks (A-share volume leaders)
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: push2.eastmoney.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
limit:
|
|
9
|
+
required: false
|
|
10
|
+
default: 20
|
|
11
|
+
pipeline:
|
|
12
|
+
- fetch:
|
|
13
|
+
url: "https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=${{ args.limit | default(20) }}&po=1&np=1&fltt=2&invt=2&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f2,f3,f4,f5,f6,f12,f14"
|
|
14
|
+
- select: data.diff
|
|
15
|
+
- map:
|
|
16
|
+
code: "${{ item.f12 }}"
|
|
17
|
+
name: "${{ item.f14 }}"
|
|
18
|
+
price: "${{ item.f2 }}"
|
|
19
|
+
change_pct: "${{ item.f3 }}%"
|
|
20
|
+
volume: "${{ item.f5 }}"
|
|
21
|
+
amount: "${{ item.f6 }}"
|
|
22
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
23
|
+
columns: [code, name, price, change_pct, volume]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
site: eastmoney
|
|
2
|
+
name: search
|
|
3
|
+
description: Search stocks on Eastmoney
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: searchapi.eastmoney.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
query:
|
|
9
|
+
required: true
|
|
10
|
+
positional: true
|
|
11
|
+
description: Stock name or code (e.g. "贵州茅台" or "600519")
|
|
12
|
+
limit:
|
|
13
|
+
required: false
|
|
14
|
+
default: 10
|
|
15
|
+
pipeline:
|
|
16
|
+
- fetch:
|
|
17
|
+
url: "https://searchapi.eastmoney.com/api/suggest/get?input=${{ args.query }}&type=14&count=${{ args.limit | default(10) }}"
|
|
18
|
+
- select: QuotationCodeTable.Data
|
|
19
|
+
- map:
|
|
20
|
+
code: "${{ item.Code }}"
|
|
21
|
+
name: "${{ item.Name }}"
|
|
22
|
+
market: "${{ item.MktNum }}"
|
|
23
|
+
type: "${{ item.SecurityTypeName }}"
|
|
24
|
+
- limit: "${{ args.limit | default(10) }}"
|
|
25
|
+
columns: [code, name, market, type]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
site: exchangerate
|
|
2
|
+
name: convert
|
|
3
|
+
description: Get exchange rates (free API, no key needed)
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: open.er-api.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
from:
|
|
9
|
+
required: true
|
|
10
|
+
positional: true
|
|
11
|
+
description: Base currency code (e.g. USD, EUR, CNY)
|
|
12
|
+
to:
|
|
13
|
+
required: false
|
|
14
|
+
description: Target currency (if omitted, returns all rates)
|
|
15
|
+
pipeline:
|
|
16
|
+
- fetch:
|
|
17
|
+
url: "https://open.er-api.com/v6/latest/${{ args.from }}"
|
|
18
|
+
- select: rates
|
|
19
|
+
columns: [currency, rate]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
site: feishu
|
|
2
|
+
name: calendar
|
|
3
|
+
description: List upcoming Feishu/Lark calendar events
|
|
4
|
+
type: bridge
|
|
5
|
+
domain: feishu-cli.com
|
|
6
|
+
detect: which feishu
|
|
7
|
+
strategy: public
|
|
8
|
+
args:
|
|
9
|
+
days:
|
|
10
|
+
required: false
|
|
11
|
+
default: 7
|
|
12
|
+
description: Number of days to look ahead
|
|
13
|
+
pipeline:
|
|
14
|
+
- exec:
|
|
15
|
+
command: feishu
|
|
16
|
+
args:
|
|
17
|
+
[
|
|
18
|
+
"calendar",
|
|
19
|
+
"events",
|
|
20
|
+
"--days",
|
|
21
|
+
"${{ args.days | default(7) }}",
|
|
22
|
+
"--json",
|
|
23
|
+
]
|
|
24
|
+
columns: [title, start, end, location, organizer]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
site: feishu
|
|
2
|
+
name: docs
|
|
3
|
+
description: List recent Feishu/Lark documents
|
|
4
|
+
type: bridge
|
|
5
|
+
domain: feishu-cli.com
|
|
6
|
+
detect: which feishu
|
|
7
|
+
strategy: public
|
|
8
|
+
args:
|
|
9
|
+
limit:
|
|
10
|
+
required: false
|
|
11
|
+
default: 20
|
|
12
|
+
pipeline:
|
|
13
|
+
- exec:
|
|
14
|
+
command: feishu
|
|
15
|
+
args:
|
|
16
|
+
["docs", "list", "--limit", "${{ args.limit | default(20) }}", "--json"]
|
|
17
|
+
columns: [title, url, owner, updated_at]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
site: feishu
|
|
2
|
+
name: send
|
|
3
|
+
description: Send a message via Feishu/Lark CLI
|
|
4
|
+
type: bridge
|
|
5
|
+
domain: feishu-cli.com
|
|
6
|
+
detect: which feishu
|
|
7
|
+
strategy: public
|
|
8
|
+
args:
|
|
9
|
+
chat:
|
|
10
|
+
required: true
|
|
11
|
+
positional: true
|
|
12
|
+
description: Chat ID or group name
|
|
13
|
+
message:
|
|
14
|
+
required: true
|
|
15
|
+
description: Message content
|
|
16
|
+
pipeline:
|
|
17
|
+
- exec:
|
|
18
|
+
command: feishu
|
|
19
|
+
args:
|
|
20
|
+
[
|
|
21
|
+
"messenger",
|
|
22
|
+
"send",
|
|
23
|
+
"--chat",
|
|
24
|
+
"${{ args.chat }}",
|
|
25
|
+
"--text",
|
|
26
|
+
"${{ args.message }}",
|
|
27
|
+
"--json",
|
|
28
|
+
]
|
|
29
|
+
columns: [message_id, chat_id, status]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
site: feishu
|
|
2
|
+
name: tasks
|
|
3
|
+
description: List Feishu/Lark tasks
|
|
4
|
+
type: bridge
|
|
5
|
+
domain: feishu-cli.com
|
|
6
|
+
detect: which feishu
|
|
7
|
+
strategy: public
|
|
8
|
+
args:
|
|
9
|
+
status:
|
|
10
|
+
required: false
|
|
11
|
+
default: open
|
|
12
|
+
description: Task status filter (open, completed, all)
|
|
13
|
+
pipeline:
|
|
14
|
+
- exec:
|
|
15
|
+
command: feishu
|
|
16
|
+
args:
|
|
17
|
+
[
|
|
18
|
+
"tasks",
|
|
19
|
+
"list",
|
|
20
|
+
"--status",
|
|
21
|
+
"${{ args.status | default('open') }}",
|
|
22
|
+
"--json",
|
|
23
|
+
]
|
|
24
|
+
columns: [title, assignee, due_date, status]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
site: gitee
|
|
2
|
+
name: search
|
|
3
|
+
description: Search repositories on Gitee
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: gitee.com
|
|
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://gitee.com/api/v5/search/repositories?q=${{ args.query }}&page=1&per_page=${{ args.limit | default(20) }}&sort=stars_count&order=desc"
|
|
18
|
+
- map:
|
|
19
|
+
name: "${{ item.full_name }}"
|
|
20
|
+
description: "${{ item.description }}"
|
|
21
|
+
stars: "${{ item.stargazers_count }}"
|
|
22
|
+
language: "${{ item.language }}"
|
|
23
|
+
url: "${{ item.html_url }}"
|
|
24
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
25
|
+
columns: [name, description, stars, language]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
site: gitee
|
|
2
|
+
name: trending
|
|
3
|
+
description: Trending repositories on Gitee
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: gitee.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
limit:
|
|
9
|
+
required: false
|
|
10
|
+
default: 20
|
|
11
|
+
pipeline:
|
|
12
|
+
- fetch:
|
|
13
|
+
url: "https://gitee.com/api/v5/projects?sort=stars_count&direction=desc&page=1&per_page=${{ args.limit | default(20) }}"
|
|
14
|
+
- map:
|
|
15
|
+
name: "${{ item.full_name }}"
|
|
16
|
+
description: "${{ item.description }}"
|
|
17
|
+
stars: "${{ item.stargazers_count }}"
|
|
18
|
+
forks: "${{ item.forks_count }}"
|
|
19
|
+
language: "${{ item.language }}"
|
|
20
|
+
url: "${{ item.html_url }}"
|
|
21
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
22
|
+
columns: [name, description, stars, language, url]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
site: gitlab
|
|
2
|
+
name: search
|
|
3
|
+
description: Search GitLab projects
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: gitlab.com
|
|
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://gitlab.com/api/v4/search?scope=projects&search=${{ args.query }}&per_page=${{ args.limit | default(20) }}"
|
|
18
|
+
- map:
|
|
19
|
+
name: "${{ item.path_with_namespace }}"
|
|
20
|
+
description: "${{ item.description }}"
|
|
21
|
+
stars: "${{ item.star_count }}"
|
|
22
|
+
url: "${{ item.web_url }}"
|
|
23
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
24
|
+
columns: [name, description, stars, url]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
site: gitlab
|
|
2
|
+
name: trending
|
|
3
|
+
description: Trending/popular GitLab projects
|
|
4
|
+
type: web-api
|
|
5
|
+
domain: gitlab.com
|
|
6
|
+
strategy: public
|
|
7
|
+
args:
|
|
8
|
+
limit:
|
|
9
|
+
required: false
|
|
10
|
+
default: 20
|
|
11
|
+
pipeline:
|
|
12
|
+
- fetch:
|
|
13
|
+
url: "https://gitlab.com/api/v4/projects?order_by=star_count&sort=desc&per_page=${{ args.limit | default(20) }}"
|
|
14
|
+
- map:
|
|
15
|
+
name: "${{ item.path_with_namespace }}"
|
|
16
|
+
description: "${{ item.description }}"
|
|
17
|
+
stars: "${{ item.star_count }}"
|
|
18
|
+
forks: "${{ item.forks_count }}"
|
|
19
|
+
language: "${{ item.language }}"
|
|
20
|
+
url: "${{ item.web_url }}"
|
|
21
|
+
- limit: "${{ args.limit | default(20) }}"
|
|
22
|
+
columns: [name, description, stars, language, url]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Godot project/run — run a project headlessly with optional script.
|
|
2
|
+
site: godot
|
|
3
|
+
name: project/run
|
|
4
|
+
description: Run a Godot project in headless mode
|
|
5
|
+
type: desktop
|
|
6
|
+
strategy: public
|
|
7
|
+
binary: godot
|
|
8
|
+
detect: which godot
|
|
9
|
+
|
|
10
|
+
args:
|
|
11
|
+
project:
|
|
12
|
+
type: str
|
|
13
|
+
required: true
|
|
14
|
+
positional: true
|
|
15
|
+
description: Path to project directory or project.godot file
|
|
16
|
+
script:
|
|
17
|
+
type: str
|
|
18
|
+
required: false
|
|
19
|
+
description: Optional GDScript file to run as main scene
|
|
20
|
+
|
|
21
|
+
pipeline:
|
|
22
|
+
- exec:
|
|
23
|
+
command: godot
|
|
24
|
+
args:
|
|
25
|
+
- --headless
|
|
26
|
+
- --path
|
|
27
|
+
- ${{ args.project }}
|
|
28
|
+
parse: text
|
|
29
|
+
timeout: 60000
|
|
30
|
+
|
|
31
|
+
columns: [output]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Godot scene/export — export a scene to a known format via godot --headless.
|
|
2
|
+
# Closes the v0.208 coverage gap with CLI-Anything's Godot harness.
|
|
3
|
+
site: godot
|
|
4
|
+
name: scene/export
|
|
5
|
+
description: Export a Godot scene to PNG / GLTF / DAE via headless mode
|
|
6
|
+
type: desktop
|
|
7
|
+
strategy: public
|
|
8
|
+
binary: godot
|
|
9
|
+
detect: which godot
|
|
10
|
+
|
|
11
|
+
args:
|
|
12
|
+
project:
|
|
13
|
+
type: str
|
|
14
|
+
required: true
|
|
15
|
+
positional: true
|
|
16
|
+
description: Path to project directory or project.godot file
|
|
17
|
+
scene:
|
|
18
|
+
type: str
|
|
19
|
+
required: true
|
|
20
|
+
description: Scene path within the project (e.g. res://Main.tscn)
|
|
21
|
+
output:
|
|
22
|
+
type: str
|
|
23
|
+
required: true
|
|
24
|
+
description: Output file path
|
|
25
|
+
|
|
26
|
+
pipeline:
|
|
27
|
+
- exec:
|
|
28
|
+
command: godot
|
|
29
|
+
args:
|
|
30
|
+
- --headless
|
|
31
|
+
- --path
|
|
32
|
+
- ${{ args.project }}
|
|
33
|
+
- --export-pack
|
|
34
|
+
- ${{ args.scene }}
|
|
35
|
+
- ${{ args.output }}
|
|
36
|
+
parse: text
|
|
37
|
+
timeout: 120000
|
|
38
|
+
|
|
39
|
+
columns: [output]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# NousResearch/hermes-agent sessions/search — query Hermes session FTS.
|
|
2
|
+
# Hermes stores session history in a SQLite database at ~/.hermes/sessions.db.
|
|
3
|
+
#
|
|
4
|
+
# Security:
|
|
5
|
+
# - `args.query` is passed via env var UNICLI_QUERY (bash literal, no shell injection)
|
|
6
|
+
# - Single quotes in the query are doubled (`'` → `''`) via bash parameter
|
|
7
|
+
# expansion before being injected into the SQL string literal — this is
|
|
8
|
+
# the standard SQL string-literal escape. FTS5 MATCH still interprets its
|
|
9
|
+
# own query grammar (e.g. `OR`, `*`) as FTS operators, which is
|
|
10
|
+
# intentional for search.
|
|
11
|
+
# - `args.limit` is typed int in adapter args; bash strips non-digits as
|
|
12
|
+
# a belt-and-suspenders guard to keep LIMIT clause integer-only.
|
|
13
|
+
site: hermes
|
|
14
|
+
name: sessions/search
|
|
15
|
+
description: Search Hermes session history via SQLite FTS5
|
|
16
|
+
type: desktop
|
|
17
|
+
strategy: public
|
|
18
|
+
binary: sh
|
|
19
|
+
detect: test -f ~/.hermes/sessions.db
|
|
20
|
+
|
|
21
|
+
args:
|
|
22
|
+
query:
|
|
23
|
+
type: str
|
|
24
|
+
required: true
|
|
25
|
+
positional: true
|
|
26
|
+
description: FTS5 query string
|
|
27
|
+
limit:
|
|
28
|
+
type: int
|
|
29
|
+
default: 20
|
|
30
|
+
description: Max rows
|
|
31
|
+
|
|
32
|
+
pipeline:
|
|
33
|
+
- exec:
|
|
34
|
+
command: sh
|
|
35
|
+
args:
|
|
36
|
+
- -c
|
|
37
|
+
- |
|
|
38
|
+
db="$HOME/.hermes/sessions.db"
|
|
39
|
+
if [ ! -f "$db" ]; then
|
|
40
|
+
echo "[]"
|
|
41
|
+
exit 0
|
|
42
|
+
fi
|
|
43
|
+
# SQL-escape single quotes: ' -> ''
|
|
44
|
+
q=${UNICLI_QUERY//\'/\'\'}
|
|
45
|
+
# Force integer on limit (strip non-digits)
|
|
46
|
+
lim=${UNICLI_LIMIT//[^0-9]/}
|
|
47
|
+
: "${lim:=20}"
|
|
48
|
+
# Try FTS5 table first; fall back to LIKE if FTS table is missing
|
|
49
|
+
sqlite3 -json "$db" \
|
|
50
|
+
"SELECT id, ts, snippet(sessions_fts, -1, '<b>', '</b>', '...', 16) AS snippet FROM sessions_fts WHERE sessions_fts MATCH '$q' LIMIT $lim;" \
|
|
51
|
+
2>/dev/null \
|
|
52
|
+
|| sqlite3 -json "$db" \
|
|
53
|
+
"SELECT id, ts, substr(content, 1, 200) AS snippet FROM sessions WHERE content LIKE '%$q%' LIMIT $lim;" \
|
|
54
|
+
2>/dev/null \
|
|
55
|
+
|| echo "[]"
|
|
56
|
+
env:
|
|
57
|
+
UNICLI_QUERY: "${{ args.query }}"
|
|
58
|
+
UNICLI_LIMIT: "${{ args.limit }}"
|
|
59
|
+
parse: json
|
|
60
|
+
|
|
61
|
+
columns: [id, ts, snippet]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# NousResearch/hermes-agent skills/list — read on-disk skill files.
|
|
2
|
+
# Hermes stores agent skills as markdown under ~/.hermes/skills/
|
|
3
|
+
#
|
|
4
|
+
# Security note: no user input, so no injection surface. Uses `find`
|
|
5
|
+
# directly with argv (no shell interpolation).
|
|
6
|
+
site: hermes
|
|
7
|
+
name: skills/list
|
|
8
|
+
description: List skills installed in the local Hermes agent (~/.hermes/skills/)
|
|
9
|
+
type: desktop
|
|
10
|
+
strategy: public
|
|
11
|
+
binary: sh
|
|
12
|
+
detect: test -d ~/.hermes/skills
|
|
13
|
+
|
|
14
|
+
pipeline:
|
|
15
|
+
- exec:
|
|
16
|
+
command: sh
|
|
17
|
+
args:
|
|
18
|
+
- -c
|
|
19
|
+
- |
|
|
20
|
+
dir="$HOME/.hermes/skills"
|
|
21
|
+
if [ ! -d "$dir" ]; then
|
|
22
|
+
echo "[]"
|
|
23
|
+
exit 0
|
|
24
|
+
fi
|
|
25
|
+
find "$dir" -maxdepth 1 -name '*.md' -type f 2>/dev/null \
|
|
26
|
+
| sed "s|$dir/||" \
|
|
27
|
+
| jq -R -s 'split("\n") | map(select(length > 0)) | map({name: .})'
|
|
28
|
+
parse: json
|
|
29
|
+
|
|
30
|
+
columns: [name]
|