@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/dist/commands/agents.js
CHANGED
|
@@ -20,7 +20,14 @@ export function registerAgentsCommand(program) {
|
|
|
20
20
|
.command("generate")
|
|
21
21
|
.description("Auto-generate AGENTS.md from loaded adapters")
|
|
22
22
|
.option("--output <path>", "output file path", "AGENTS.md")
|
|
23
|
+
.option("--for <harness>", "target harness format (claude|cursor|codex|goose|generic)")
|
|
23
24
|
.action((opts) => {
|
|
25
|
+
const harness = opts.for ?? "claude";
|
|
26
|
+
if (!["claude", "cursor", "codex", "goose", "generic"].includes(harness)) {
|
|
27
|
+
console.error(chalk.red(`Unknown harness: ${harness}. Available: claude, cursor, codex, goose, generic`));
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
24
31
|
const adapters = getAllAdapters();
|
|
25
32
|
const commands = listCommands();
|
|
26
33
|
if (adapters.length === 0) {
|
|
@@ -81,11 +88,84 @@ export function registerAgentsCommand(program) {
|
|
|
81
88
|
lines.push("---");
|
|
82
89
|
lines.push(`<!-- Generated by Uni-CLI v${VERSION} on ${date} -->`);
|
|
83
90
|
lines.push("");
|
|
84
|
-
|
|
91
|
+
// Transform content based on target harness
|
|
92
|
+
let content;
|
|
93
|
+
const baseContent = lines.join("\n");
|
|
94
|
+
switch (harness) {
|
|
95
|
+
case "cursor": {
|
|
96
|
+
// Cursor Rules format — .cursorrules file
|
|
97
|
+
const cursorLines = [
|
|
98
|
+
"# Uni-CLI Integration Rules",
|
|
99
|
+
"",
|
|
100
|
+
`Uni-CLI provides ${cmdCount} commands across ${siteCount} sites.`,
|
|
101
|
+
"Use `unicli <site> <command>` to interact with websites and services.",
|
|
102
|
+
"Pipe output is always JSON — no flags needed.",
|
|
103
|
+
"",
|
|
104
|
+
"## Available Sites",
|
|
105
|
+
"",
|
|
106
|
+
];
|
|
107
|
+
for (const adapter of adapters) {
|
|
108
|
+
const cmds = Object.keys(adapter.commands).sort().join(", ");
|
|
109
|
+
cursorLines.push(`- **${adapter.name}**: ${cmds}`);
|
|
110
|
+
}
|
|
111
|
+
cursorLines.push("");
|
|
112
|
+
cursorLines.push("## Error Handling");
|
|
113
|
+
cursorLines.push("On failure, unicli outputs structured JSON to stderr with `adapter_path` and `suggestion` fields.");
|
|
114
|
+
cursorLines.push("Read the YAML adapter at that path to understand and fix the issue.");
|
|
115
|
+
content = cursorLines.join("\n");
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case "codex": {
|
|
119
|
+
// Codex-optimized format — concise, tool-use oriented
|
|
120
|
+
const codexLines = [
|
|
121
|
+
`# unicli — ${siteCount} sites, ${cmdCount} commands`,
|
|
122
|
+
"",
|
|
123
|
+
"## Usage",
|
|
124
|
+
"```",
|
|
125
|
+
"unicli <site> <command> [args] [--json]",
|
|
126
|
+
"```",
|
|
127
|
+
"",
|
|
128
|
+
"Piped output auto-switches to JSON. Exit codes follow sysexits.h.",
|
|
129
|
+
"",
|
|
130
|
+
"## Sites",
|
|
131
|
+
"",
|
|
132
|
+
];
|
|
133
|
+
for (const adapter of adapters) {
|
|
134
|
+
codexLines.push(`### ${adapter.name}`);
|
|
135
|
+
for (const [cmd, info] of Object.entries(adapter.commands)) {
|
|
136
|
+
const desc = info.description ?? "";
|
|
137
|
+
codexLines.push(`- \`unicli ${adapter.name} ${cmd}\` — ${desc}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
content = codexLines.join("\n");
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case "goose": {
|
|
144
|
+
// Goose recipe format
|
|
145
|
+
const gooseLines = [
|
|
146
|
+
"name: unicli",
|
|
147
|
+
`description: CLI interface to ${siteCount} websites and services`,
|
|
148
|
+
"version: " + VERSION,
|
|
149
|
+
"tools:",
|
|
150
|
+
];
|
|
151
|
+
for (const cmd of commands) {
|
|
152
|
+
gooseLines.push(` - name: unicli_${cmd.site}_${cmd.command}`);
|
|
153
|
+
gooseLines.push(` command: unicli ${cmd.site} ${cmd.command}`);
|
|
154
|
+
gooseLines.push(` description: ${cmd.description}`);
|
|
155
|
+
}
|
|
156
|
+
content = gooseLines.join("\n");
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case "generic":
|
|
160
|
+
content = baseContent;
|
|
161
|
+
break;
|
|
162
|
+
default:
|
|
163
|
+
content = baseContent;
|
|
164
|
+
}
|
|
85
165
|
const outPath = resolve(opts.output);
|
|
86
166
|
writeFileSync(outPath, content, "utf-8");
|
|
87
167
|
// Summary to stderr so it doesn't pollute piped output
|
|
88
|
-
console.error(chalk.green(`Generated ${outPath} (${siteCount} sites, ${cmdCount} commands)`));
|
|
168
|
+
console.error(chalk.green(`Generated ${outPath} (${siteCount} sites, ${cmdCount} commands, format: ${harness})`));
|
|
89
169
|
});
|
|
90
170
|
}
|
|
91
171
|
//# sourceMappingURL=agents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEtD,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,CAAC;SAC1D,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eval harness — declarative regression suite for adapters.
|
|
3
|
+
*
|
|
4
|
+
* unicli eval list # list available evals
|
|
5
|
+
* unicli eval run smoke/bilibili # run one eval file
|
|
6
|
+
* unicli eval run --all smoke/ # run a directory
|
|
7
|
+
* unicli eval ci --since 7d # run only adapters touched in N days
|
|
8
|
+
*
|
|
9
|
+
* Eval files are YAML, located at:
|
|
10
|
+
* - `evals/` (bundled with the npm package)
|
|
11
|
+
* - `~/.unicli/evals/` (user-local)
|
|
12
|
+
*
|
|
13
|
+
* Format:
|
|
14
|
+
* name: bilibili-smoke
|
|
15
|
+
* adapter: bilibili
|
|
16
|
+
* cases:
|
|
17
|
+
* - command: rank
|
|
18
|
+
* args: {}
|
|
19
|
+
* judges:
|
|
20
|
+
* - { type: arrayMinLength, path: data, min: 5 }
|
|
21
|
+
* - { type: contains, field: data[0].title, value: "" }
|
|
22
|
+
*
|
|
23
|
+
* Why this exists:
|
|
24
|
+
* v0.207 shipped the eval *primitive* (`src/engine/repair/eval.ts`).
|
|
25
|
+
* v0.208 ships the *content*: a starter catalog so the self-repair loop
|
|
26
|
+
* has measurable baselines. Without baselines, claimed improvements are
|
|
27
|
+
* noise. The CLI command is the on-ramp; the YAML files are the data.
|
|
28
|
+
*/
|
|
29
|
+
import type { Command } from "commander";
|
|
30
|
+
/** Bundled evals ship in the package — resolved relative to dist/src. */
|
|
31
|
+
declare const BUNDLED_EVALS_DIR: string;
|
|
32
|
+
declare const USER_EVALS_DIR: string;
|
|
33
|
+
export interface EvalCase {
|
|
34
|
+
command: string;
|
|
35
|
+
args?: Record<string, string | number | boolean>;
|
|
36
|
+
/** Optional pre-canned positional values */
|
|
37
|
+
positional?: Array<string | number>;
|
|
38
|
+
judges: Judge[];
|
|
39
|
+
}
|
|
40
|
+
export type Judge = {
|
|
41
|
+
type: "arrayMinLength";
|
|
42
|
+
path?: string;
|
|
43
|
+
min: number;
|
|
44
|
+
} | {
|
|
45
|
+
type: "contains";
|
|
46
|
+
field?: string;
|
|
47
|
+
value: string;
|
|
48
|
+
} | {
|
|
49
|
+
type: "nonEmpty";
|
|
50
|
+
} | {
|
|
51
|
+
type: "matchesPattern";
|
|
52
|
+
pattern: string;
|
|
53
|
+
} | {
|
|
54
|
+
type: "exitCode";
|
|
55
|
+
equals: number;
|
|
56
|
+
};
|
|
57
|
+
export interface EvalFile {
|
|
58
|
+
name: string;
|
|
59
|
+
adapter: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
cases: EvalCase[];
|
|
62
|
+
}
|
|
63
|
+
export interface CaseResult {
|
|
64
|
+
case: EvalCase;
|
|
65
|
+
passed: boolean;
|
|
66
|
+
output?: string;
|
|
67
|
+
exitCode?: number;
|
|
68
|
+
error?: string;
|
|
69
|
+
judgeResults: Array<{
|
|
70
|
+
judge: Judge;
|
|
71
|
+
passed: boolean;
|
|
72
|
+
reason?: string;
|
|
73
|
+
}>;
|
|
74
|
+
}
|
|
75
|
+
export interface EvalRunResult {
|
|
76
|
+
file: EvalFile;
|
|
77
|
+
passed: number;
|
|
78
|
+
total: number;
|
|
79
|
+
cases: CaseResult[];
|
|
80
|
+
}
|
|
81
|
+
/** Return every eval file path discovered across bundled + user directories. */
|
|
82
|
+
export declare function discoverEvalFiles(): Array<{
|
|
83
|
+
path: string;
|
|
84
|
+
relative: string;
|
|
85
|
+
}>;
|
|
86
|
+
/** Load + parse one eval file. Throws on YAML errors so callers can report. */
|
|
87
|
+
export declare function loadEvalFile(file: string): EvalFile;
|
|
88
|
+
/**
|
|
89
|
+
* Apply one judge to a (parsed JSON) output. The output may be an array
|
|
90
|
+
* (Uni-CLI's normal shape) or an object (less common). The judge logic
|
|
91
|
+
* intentionally treats both shapes uniformly via path resolution.
|
|
92
|
+
*/
|
|
93
|
+
export declare function applyJudge(parsedOutput: unknown, rawOutput: string, exitCode: number, judge: Judge): {
|
|
94
|
+
passed: boolean;
|
|
95
|
+
reason?: string;
|
|
96
|
+
};
|
|
97
|
+
export declare function runCase(adapter: string, c: EvalCase, options?: {
|
|
98
|
+
timeout?: number;
|
|
99
|
+
cliCommand?: string;
|
|
100
|
+
}): CaseResult;
|
|
101
|
+
export declare function runEvalFile(file: EvalFile, options?: {
|
|
102
|
+
timeout?: number;
|
|
103
|
+
cliCommand?: string;
|
|
104
|
+
}): EvalRunResult;
|
|
105
|
+
export declare function registerEvalCommand(program: Command): void;
|
|
106
|
+
export { BUNDLED_EVALS_DIR, USER_EVALS_DIR };
|
|
107
|
+
/**
|
|
108
|
+
* Helper used only by tests: ensure user evals directory exists. Not used
|
|
109
|
+
* by production code paths.
|
|
110
|
+
*/
|
|
111
|
+
export declare function ensureUserEvalsDir(): string;
|
|
112
|
+
//# sourceMappingURL=eval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
|