@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.
Files changed (155) hide show
  1. package/AGENTS.md +4 -4
  2. package/README.md +30 -17
  3. package/dist/browser/observe.d.ts +80 -0
  4. package/dist/browser/observe.d.ts.map +1 -0
  5. package/dist/browser/observe.js +144 -0
  6. package/dist/browser/observe.js.map +1 -0
  7. package/dist/browser/snapshot.d.ts.map +1 -1
  8. package/dist/browser/snapshot.js +29 -9
  9. package/dist/browser/snapshot.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +59 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/agents.d.ts.map +1 -1
  14. package/dist/commands/agents.js +82 -2
  15. package/dist/commands/agents.js.map +1 -1
  16. package/dist/commands/eval.d.ts +112 -0
  17. package/dist/commands/eval.d.ts.map +1 -0
  18. package/dist/commands/eval.js +485 -0
  19. package/dist/commands/eval.js.map +1 -0
  20. package/dist/commands/generate.d.ts.map +1 -1
  21. package/dist/commands/generate.js +20 -1
  22. package/dist/commands/generate.js.map +1 -1
  23. package/dist/commands/hub.d.ts +13 -0
  24. package/dist/commands/hub.d.ts.map +1 -0
  25. package/dist/commands/hub.js +232 -0
  26. package/dist/commands/hub.js.map +1 -0
  27. package/dist/commands/mcp.d.ts +16 -0
  28. package/dist/commands/mcp.d.ts.map +1 -0
  29. package/dist/commands/mcp.js +135 -0
  30. package/dist/commands/mcp.js.map +1 -0
  31. package/dist/commands/operate.d.ts.map +1 -1
  32. package/dist/commands/operate.js +66 -1
  33. package/dist/commands/operate.js.map +1 -1
  34. package/dist/commands/research.d.ts +17 -0
  35. package/dist/commands/research.d.ts.map +1 -0
  36. package/dist/commands/research.js +257 -0
  37. package/dist/commands/research.js.map +1 -0
  38. package/dist/commands/skills.d.ts +91 -0
  39. package/dist/commands/skills.d.ts.map +1 -0
  40. package/dist/commands/skills.js +266 -0
  41. package/dist/commands/skills.js.map +1 -0
  42. package/dist/commands/test-gen.d.ts +10 -0
  43. package/dist/commands/test-gen.d.ts.map +1 -0
  44. package/dist/commands/test-gen.js +124 -0
  45. package/dist/commands/test-gen.js.map +1 -0
  46. package/dist/commands/usage.d.ts +17 -0
  47. package/dist/commands/usage.d.ts.map +1 -0
  48. package/dist/commands/usage.js +87 -0
  49. package/dist/commands/usage.js.map +1 -0
  50. package/dist/discovery/loader.d.ts +8 -1
  51. package/dist/discovery/loader.d.ts.map +1 -1
  52. package/dist/discovery/loader.js +103 -6
  53. package/dist/discovery/loader.js.map +1 -1
  54. package/dist/engine/capability.d.ts +40 -0
  55. package/dist/engine/capability.d.ts.map +1 -0
  56. package/dist/engine/capability.js +191 -0
  57. package/dist/engine/capability.js.map +1 -0
  58. package/dist/engine/endpoint.d.ts +47 -0
  59. package/dist/engine/endpoint.d.ts.map +1 -0
  60. package/dist/engine/endpoint.js +295 -0
  61. package/dist/engine/endpoint.js.map +1 -0
  62. package/dist/engine/framework.d.ts +28 -0
  63. package/dist/engine/framework.d.ts.map +1 -0
  64. package/dist/engine/framework.js +66 -0
  65. package/dist/engine/framework.js.map +1 -0
  66. package/dist/engine/probe.d.ts +19 -0
  67. package/dist/engine/probe.d.ts.map +1 -0
  68. package/dist/engine/probe.js +85 -0
  69. package/dist/engine/probe.js.map +1 -0
  70. package/dist/engine/research.d.ts +38 -0
  71. package/dist/engine/research.d.ts.map +1 -0
  72. package/dist/engine/research.js +414 -0
  73. package/dist/engine/research.js.map +1 -0
  74. package/dist/engine/update-check.js +1 -1
  75. package/dist/engine/update-check.js.map +1 -1
  76. package/dist/engine/yaml-runner.d.ts.map +1 -1
  77. package/dist/engine/yaml-runner.js +115 -6
  78. package/dist/engine/yaml-runner.js.map +1 -1
  79. package/dist/main.d.ts +1 -4
  80. package/dist/main.d.ts.map +1 -1
  81. package/dist/main.js +1 -4
  82. package/dist/main.js.map +1 -1
  83. package/dist/manifest.json +519 -1
  84. package/dist/mcp/server.d.ts +19 -6
  85. package/dist/mcp/server.d.ts.map +1 -1
  86. package/dist/mcp/server.js +459 -115
  87. package/dist/mcp/server.js.map +1 -1
  88. package/dist/permissions/sensitive-paths.d.ts +92 -0
  89. package/dist/permissions/sensitive-paths.d.ts.map +1 -0
  90. package/dist/permissions/sensitive-paths.js +174 -0
  91. package/dist/permissions/sensitive-paths.js.map +1 -0
  92. package/dist/runtime/usage-ledger.d.ts +86 -0
  93. package/dist/runtime/usage-ledger.d.ts.map +1 -0
  94. package/dist/runtime/usage-ledger.js +173 -0
  95. package/dist/runtime/usage-ledger.js.map +1 -0
  96. package/package.json +8 -7
  97. package/src/adapters/autoagent/eval-run.yaml +36 -0
  98. package/src/adapters/cnn/top.yaml +21 -0
  99. package/src/adapters/cocoapods/search.yaml +16 -0
  100. package/src/adapters/crates-io/search.yaml +27 -0
  101. package/src/adapters/cua/bench-list.yaml +20 -0
  102. package/src/adapters/cua/bench-run.yaml +32 -0
  103. package/src/adapters/docker-hub/search.yaml +26 -0
  104. package/src/adapters/eastmoney/hot.yaml +23 -0
  105. package/src/adapters/eastmoney/search.yaml +25 -0
  106. package/src/adapters/exchangerate/convert.yaml +19 -0
  107. package/src/adapters/feishu/calendar.yaml +24 -0
  108. package/src/adapters/feishu/docs.yaml +17 -0
  109. package/src/adapters/feishu/send.yaml +29 -0
  110. package/src/adapters/feishu/tasks.yaml +24 -0
  111. package/src/adapters/gitee/search.yaml +25 -0
  112. package/src/adapters/gitee/trending.yaml +22 -0
  113. package/src/adapters/gitlab/search.yaml +24 -0
  114. package/src/adapters/gitlab/trending.yaml +22 -0
  115. package/src/adapters/godot/project-run.yaml +31 -0
  116. package/src/adapters/godot/scene-export.yaml +39 -0
  117. package/src/adapters/hermes/sessions-search.yaml +61 -0
  118. package/src/adapters/hermes/skills-list.yaml +30 -0
  119. package/src/adapters/hermes/skills-read.yaml +46 -0
  120. package/src/adapters/homebrew/info.yaml +15 -0
  121. package/src/adapters/huggingface-papers/daily.yaml +21 -0
  122. package/src/adapters/infoq/articles.yaml +29 -0
  123. package/src/adapters/ip-info/lookup.yaml +15 -0
  124. package/src/adapters/itch-io/popular.yaml +22 -0
  125. package/src/adapters/ithome/news.yaml +21 -0
  126. package/src/adapters/mastodon/search.yaml +29 -0
  127. package/src/adapters/mastodon/trending.yaml +27 -0
  128. package/src/adapters/meituan/search.yaml +30 -0
  129. package/src/adapters/minimax/chat.yaml +33 -0
  130. package/src/adapters/minimax/models.yaml +18 -0
  131. package/src/adapters/minimax/tts.yaml +33 -0
  132. package/src/adapters/motion-studio/component-get.yaml +35 -0
  133. package/src/adapters/netease-music/hot.yaml +24 -0
  134. package/src/adapters/netease-music/search.yaml +29 -0
  135. package/src/adapters/npm-trends/compare.yaml +19 -0
  136. package/src/adapters/nytimes/top.yaml +26 -0
  137. package/src/adapters/openharness/memory-read.yaml +51 -0
  138. package/src/adapters/openharness/skills-list.yaml +28 -0
  139. package/src/adapters/openrouter/models.yaml +22 -0
  140. package/src/adapters/pexels/search.yaml +28 -0
  141. package/src/adapters/pinduoduo/hot.yaml +20 -0
  142. package/src/adapters/pypi/info.yaml +16 -0
  143. package/src/adapters/qweather/now.yaml +16 -0
  144. package/src/adapters/renderdoc/capture-list.yaml +42 -0
  145. package/src/adapters/renderdoc/frame-export.yaml +32 -0
  146. package/src/adapters/replicate/search.yaml +25 -0
  147. package/src/adapters/replicate/trending.yaml +22 -0
  148. package/src/adapters/sspai/hot.yaml +21 -0
  149. package/src/adapters/sspai/latest.yaml +22 -0
  150. package/src/adapters/stagehand/wrap-observe.yaml +42 -0
  151. package/src/adapters/techcrunch/latest.yaml +22 -0
  152. package/src/adapters/theverge/latest.yaml +21 -0
  153. package/src/adapters/twitch/top.yaml +26 -0
  154. package/src/adapters/unsplash/search.yaml +28 -0
  155. package/src/adapters/ycombinator/launches.yaml +20 -0
@@ -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
- const content = lines.join("\n");
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":"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"}
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,yEAAyE;AACzE,QAAA,MAAM,iBAAiB,QAAuC,CAAC;AAC/D,QAAA,MAAM,cAAc,QAAsC,CAAC;AAI3D,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACjD,4CAA4C;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,KAAK,GACb;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAwBD,gFAAgF;AAChF,wBAAgB,iBAAiB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAW7E;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CASnD;AA4BD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GACX;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuDtC;AA+CD,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,QAAQ,EACX,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,UAAU,CAmDZ;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,aAAa,CAcf;AAkBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgP1D;AAGD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C"}