@zenalexa/unicli 0.225.1 → 0.225.3

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 (271) hide show
  1. package/AGENTS.md +3 -3
  2. package/README.md +3 -3
  3. package/README.zh-CN.md +3 -3
  4. package/dist/adapters/acl-anthology/papers.d.ts +16 -9
  5. package/dist/adapters/acl-anthology/papers.d.ts.map +1 -1
  6. package/dist/adapters/acl-anthology/papers.js +322 -58
  7. package/dist/adapters/acl-anthology/papers.js.map +1 -1
  8. package/dist/adapters/arxiv/papers.d.ts +22 -4
  9. package/dist/adapters/arxiv/papers.d.ts.map +1 -1
  10. package/dist/adapters/arxiv/papers.js +202 -4
  11. package/dist/adapters/arxiv/papers.js.map +1 -1
  12. package/dist/adapters/baidu-scholar/search.d.ts +15 -1
  13. package/dist/adapters/baidu-scholar/search.d.ts.map +1 -1
  14. package/dist/adapters/baidu-scholar/search.js +72 -8
  15. package/dist/adapters/baidu-scholar/search.js.map +1 -1
  16. package/dist/adapters/biorxiv/preprints.d.ts +9 -0
  17. package/dist/adapters/biorxiv/preprints.d.ts.map +1 -0
  18. package/dist/adapters/biorxiv/preprints.js +78 -0
  19. package/dist/adapters/biorxiv/preprints.js.map +1 -0
  20. package/dist/adapters/cnki/search.d.ts +82 -0
  21. package/dist/adapters/cnki/search.d.ts.map +1 -0
  22. package/dist/adapters/cnki/search.js +236 -0
  23. package/dist/adapters/cnki/search.js.map +1 -0
  24. package/dist/adapters/cvf/papers.d.ts +12 -7
  25. package/dist/adapters/cvf/papers.d.ts.map +1 -1
  26. package/dist/adapters/cvf/papers.js +210 -27
  27. package/dist/adapters/cvf/papers.js.map +1 -1
  28. package/dist/adapters/dblp/publications.d.ts +12 -5
  29. package/dist/adapters/dblp/publications.d.ts.map +1 -1
  30. package/dist/adapters/dblp/publications.js +31 -8
  31. package/dist/adapters/dblp/publications.js.map +1 -1
  32. package/dist/adapters/google-scholar/search.d.ts +22 -1
  33. package/dist/adapters/google-scholar/search.d.ts.map +1 -1
  34. package/dist/adapters/google-scholar/search.js +129 -14
  35. package/dist/adapters/google-scholar/search.js.map +1 -1
  36. package/dist/adapters/hf/paper.d.ts +12 -3
  37. package/dist/adapters/hf/paper.d.ts.map +1 -1
  38. package/dist/adapters/hf/paper.js +65 -5
  39. package/dist/adapters/hf/paper.js.map +1 -1
  40. package/dist/adapters/medrxiv/preprints.d.ts +9 -0
  41. package/dist/adapters/medrxiv/preprints.d.ts.map +1 -0
  42. package/dist/adapters/medrxiv/preprints.js +78 -0
  43. package/dist/adapters/medrxiv/preprints.js.map +1 -0
  44. package/dist/adapters/neurips/proceedings.d.ts +8 -7
  45. package/dist/adapters/neurips/proceedings.d.ts.map +1 -1
  46. package/dist/adapters/neurips/proceedings.js +209 -21
  47. package/dist/adapters/neurips/proceedings.js.map +1 -1
  48. package/dist/adapters/openalex/works.d.ts +21 -5
  49. package/dist/adapters/openalex/works.d.ts.map +1 -1
  50. package/dist/adapters/openalex/works.js +108 -8
  51. package/dist/adapters/openalex/works.js.map +1 -1
  52. package/dist/adapters/openreview/papers.d.ts +10 -4
  53. package/dist/adapters/openreview/papers.d.ts.map +1 -1
  54. package/dist/adapters/openreview/papers.js +351 -24
  55. package/dist/adapters/openreview/papers.js.map +1 -1
  56. package/dist/adapters/pmlr/proceedings.d.ts +6 -6
  57. package/dist/adapters/pmlr/proceedings.d.ts.map +1 -1
  58. package/dist/adapters/pmlr/proceedings.js +92 -12
  59. package/dist/adapters/pmlr/proceedings.js.map +1 -1
  60. package/dist/adapters/pubmed/articles.d.ts +8 -4
  61. package/dist/adapters/pubmed/articles.d.ts.map +1 -1
  62. package/dist/adapters/pubmed/articles.js +272 -39
  63. package/dist/adapters/pubmed/articles.js.map +1 -1
  64. package/dist/adapters/rxiv/preprints.d.ts +75 -0
  65. package/dist/adapters/rxiv/preprints.d.ts.map +1 -0
  66. package/dist/adapters/rxiv/preprints.js +651 -0
  67. package/dist/adapters/rxiv/preprints.js.map +1 -0
  68. package/dist/adapters/scholar-artifacts/pdf-read.d.ts +49 -0
  69. package/dist/adapters/scholar-artifacts/pdf-read.d.ts.map +1 -0
  70. package/dist/adapters/scholar-artifacts/pdf-read.js +204 -0
  71. package/dist/adapters/scholar-artifacts/pdf-read.js.map +1 -0
  72. package/dist/adapters/scholar-artifacts/pdf.d.ts +16 -0
  73. package/dist/adapters/scholar-artifacts/pdf.d.ts.map +1 -0
  74. package/dist/adapters/scholar-artifacts/pdf.js +122 -0
  75. package/dist/adapters/scholar-artifacts/pdf.js.map +1 -0
  76. package/dist/adapters/semantic-scholar/papers.d.ts +6 -6
  77. package/dist/adapters/semantic-scholar/papers.d.ts.map +1 -1
  78. package/dist/adapters/semantic-scholar/papers.js +80 -6
  79. package/dist/adapters/semantic-scholar/papers.js.map +1 -1
  80. package/dist/adapters/unpaywall/works.d.ts +7 -7
  81. package/dist/adapters/unpaywall/works.d.ts.map +1 -1
  82. package/dist/adapters/unpaywall/works.js +104 -12
  83. package/dist/adapters/unpaywall/works.js.map +1 -1
  84. package/dist/adapters/wanfang/search.d.ts +14 -0
  85. package/dist/adapters/wanfang/search.d.ts.map +1 -1
  86. package/dist/adapters/wanfang/search.js +56 -7
  87. package/dist/adapters/wanfang/search.js.map +1 -1
  88. package/dist/browser/page.d.ts +2 -0
  89. package/dist/browser/page.d.ts.map +1 -1
  90. package/dist/browser/page.js +12 -0
  91. package/dist/browser/page.js.map +1 -1
  92. package/dist/browser/protocol.d.ts +6 -1
  93. package/dist/browser/protocol.d.ts.map +1 -1
  94. package/dist/browser/protocol.js.map +1 -1
  95. package/dist/commands/browser/actions.d.ts.map +1 -1
  96. package/dist/commands/browser/actions.js +487 -8
  97. package/dist/commands/browser/actions.js.map +1 -1
  98. package/dist/commands/compute.js +12 -1
  99. package/dist/commands/compute.js.map +1 -1
  100. package/dist/commands/schema.d.ts.map +1 -1
  101. package/dist/commands/schema.js +22 -0
  102. package/dist/commands/schema.js.map +1 -1
  103. package/dist/commands/scholar.d.ts +77 -5
  104. package/dist/commands/scholar.d.ts.map +1 -1
  105. package/dist/commands/scholar.js +2945 -83
  106. package/dist/commands/scholar.js.map +1 -1
  107. package/dist/commands/search.d.ts.map +1 -1
  108. package/dist/commands/search.js +14 -3
  109. package/dist/commands/search.js.map +1 -1
  110. package/dist/compute/contracts.d.ts +55 -0
  111. package/dist/compute/contracts.d.ts.map +1 -0
  112. package/dist/compute/contracts.js +487 -0
  113. package/dist/compute/contracts.js.map +1 -0
  114. package/dist/core/command-contract.d.ts.map +1 -1
  115. package/dist/core/command-contract.js +5 -0
  116. package/dist/core/command-contract.js.map +1 -1
  117. package/dist/core/schema-v2.d.ts +1 -0
  118. package/dist/core/schema-v2.d.ts.map +1 -1
  119. package/dist/core/schema-v2.js +1 -0
  120. package/dist/core/schema-v2.js.map +1 -1
  121. package/dist/discovery/aliases.d.ts +8 -1
  122. package/dist/discovery/aliases.d.ts.map +1 -1
  123. package/dist/discovery/aliases.js +333 -20
  124. package/dist/discovery/aliases.js.map +1 -1
  125. package/dist/discovery/core-catalog.d.ts +2 -0
  126. package/dist/discovery/core-catalog.d.ts.map +1 -1
  127. package/dist/discovery/core-catalog.js +525 -66
  128. package/dist/discovery/core-catalog.js.map +1 -1
  129. package/dist/discovery/intents.d.ts +1 -0
  130. package/dist/discovery/intents.d.ts.map +1 -1
  131. package/dist/discovery/intents.js +299 -2
  132. package/dist/discovery/intents.js.map +1 -1
  133. package/dist/discovery/loader.d.ts.map +1 -1
  134. package/dist/discovery/loader.js +3 -0
  135. package/dist/discovery/loader.js.map +1 -1
  136. package/dist/discovery/macos-dynamic.d.ts +1 -0
  137. package/dist/discovery/macos-dynamic.d.ts.map +1 -1
  138. package/dist/discovery/macos-dynamic.js +20 -1
  139. package/dist/discovery/macos-dynamic.js.map +1 -1
  140. package/dist/discovery/search.d.ts.map +1 -1
  141. package/dist/discovery/search.js +12 -5
  142. package/dist/discovery/search.js.map +1 -1
  143. package/dist/engine/browser/evidence.d.ts +34 -1
  144. package/dist/engine/browser/evidence.d.ts.map +1 -1
  145. package/dist/engine/browser/evidence.js +141 -6
  146. package/dist/engine/browser/evidence.js.map +1 -1
  147. package/dist/engine/capability-policy.d.ts.map +1 -1
  148. package/dist/engine/capability-policy.js +30 -4
  149. package/dist/engine/capability-policy.js.map +1 -1
  150. package/dist/engine/kernel/stages.d.ts.map +1 -1
  151. package/dist/engine/kernel/stages.js +3 -0
  152. package/dist/engine/kernel/stages.js.map +1 -1
  153. package/dist/engine/operation-policy.d.ts +4 -1
  154. package/dist/engine/operation-policy.d.ts.map +1 -1
  155. package/dist/engine/operation-policy.js +23 -0
  156. package/dist/engine/operation-policy.js.map +1 -1
  157. package/dist/engine/steps/fetch-text.d.ts.map +1 -1
  158. package/dist/engine/steps/fetch-text.js +2 -2
  159. package/dist/engine/steps/fetch-text.js.map +1 -1
  160. package/dist/engine/steps/fetch.d.ts +1 -0
  161. package/dist/engine/steps/fetch.d.ts.map +1 -1
  162. package/dist/engine/steps/fetch.js +24 -4
  163. package/dist/engine/steps/fetch.js.map +1 -1
  164. package/dist/fast-path/handlers/discovery.d.ts +5 -5
  165. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  166. package/dist/fast-path/handlers/discovery.js +61 -8
  167. package/dist/fast-path/handlers/discovery.js.map +1 -1
  168. package/dist/fast-path/manifest.d.ts +3 -0
  169. package/dist/fast-path/manifest.d.ts.map +1 -1
  170. package/dist/fast-path/manifest.js.map +1 -1
  171. package/dist/fast-path/policy.d.ts.map +1 -1
  172. package/dist/fast-path/policy.js +3 -0
  173. package/dist/fast-path/policy.js.map +1 -1
  174. package/dist/fast-path/render.d.ts +2 -0
  175. package/dist/fast-path/render.d.ts.map +1 -1
  176. package/dist/fast-path/render.js +9 -0
  177. package/dist/fast-path/render.js.map +1 -1
  178. package/dist/manifest-compact.txt +2 -2
  179. package/dist/manifest.json +6977 -1002
  180. package/dist/mcp/handler.d.ts +2 -16
  181. package/dist/mcp/handler.d.ts.map +1 -1
  182. package/dist/mcp/handler.js.map +1 -1
  183. package/dist/mcp/http-transport.d.ts +7 -1
  184. package/dist/mcp/http-transport.d.ts.map +1 -1
  185. package/dist/mcp/http-transport.js +20 -1
  186. package/dist/mcp/http-transport.js.map +1 -1
  187. package/dist/mcp/jsonrpc.d.ts +27 -0
  188. package/dist/mcp/jsonrpc.d.ts.map +1 -0
  189. package/dist/mcp/jsonrpc.js +12 -0
  190. package/dist/mcp/jsonrpc.js.map +1 -0
  191. package/dist/mcp/origin-guard.d.ts +26 -0
  192. package/dist/mcp/origin-guard.d.ts.map +1 -0
  193. package/dist/mcp/origin-guard.js +42 -0
  194. package/dist/mcp/origin-guard.js.map +1 -0
  195. package/dist/mcp/profiles/computer-use.d.ts.map +1 -1
  196. package/dist/mcp/profiles/computer-use.js +30 -270
  197. package/dist/mcp/profiles/computer-use.js.map +1 -1
  198. package/dist/mcp/streamable-http/session.d.ts +4 -22
  199. package/dist/mcp/streamable-http/session.d.ts.map +1 -1
  200. package/dist/mcp/streamable-http/session.js +4 -24
  201. package/dist/mcp/streamable-http/session.js.map +1 -1
  202. package/dist/mcp/tools.d.ts.map +1 -1
  203. package/dist/mcp/tools.js +74 -54
  204. package/dist/mcp/tools.js.map +1 -1
  205. package/dist/output/envelope.d.ts +2 -0
  206. package/dist/output/envelope.d.ts.map +1 -1
  207. package/dist/output/envelope.js.map +1 -1
  208. package/dist/output/error-map.d.ts +14 -0
  209. package/dist/output/error-map.d.ts.map +1 -1
  210. package/dist/output/error-map.js +20 -0
  211. package/dist/output/error-map.js.map +1 -1
  212. package/dist/registry.d.ts +2 -0
  213. package/dist/registry.d.ts.map +1 -1
  214. package/dist/registry.js +1 -0
  215. package/dist/registry.js.map +1 -1
  216. package/dist/transport/cascade.d.ts.map +1 -1
  217. package/dist/transport/cascade.js +77 -5
  218. package/dist/transport/cascade.js.map +1 -1
  219. package/dist/transport/refs.d.ts +33 -1
  220. package/dist/transport/refs.d.ts.map +1 -1
  221. package/dist/transport/refs.js +40 -1
  222. package/dist/transport/refs.js.map +1 -1
  223. package/dist/types/scholarly.d.ts +19 -4
  224. package/dist/types/scholarly.d.ts.map +1 -1
  225. package/dist/types/scholarly.js +4 -4
  226. package/dist/types.d.ts +8 -0
  227. package/dist/types.d.ts.map +1 -1
  228. package/dist/types.js.map +1 -1
  229. package/package.json +1 -1
  230. package/server.json +2 -2
  231. package/skills/unicli/SKILL.md +1 -1
  232. package/skills/unicli-claude-code/SKILL.md +1 -1
  233. package/skills/unicli-hermes/SKILL.md +1 -1
  234. package/src/adapters/acl-anthology/papers.test.ts +111 -0
  235. package/src/adapters/acl-anthology/papers.ts +379 -71
  236. package/src/adapters/arxiv/papers.test.ts +46 -0
  237. package/src/adapters/arxiv/papers.ts +251 -4
  238. package/src/adapters/baidu-scholar/search.ts +74 -11
  239. package/src/adapters/biorxiv/preprints.ts +112 -0
  240. package/src/adapters/cnki/search.ts +357 -0
  241. package/src/adapters/cvf/papers.ts +260 -27
  242. package/src/adapters/dblp/publications.test.ts +9 -0
  243. package/src/adapters/dblp/publications.ts +31 -8
  244. package/src/adapters/defuddle/read.yaml +30 -0
  245. package/src/adapters/google-scholar/search.ts +165 -17
  246. package/src/adapters/hf/paper.test.ts +23 -0
  247. package/src/adapters/hf/paper.ts +89 -5
  248. package/src/adapters/hf/top.yaml +34 -2
  249. package/src/adapters/huggingface-papers/daily.yaml +37 -3
  250. package/src/adapters/huggingface-papers/search.yaml +43 -9
  251. package/src/adapters/jina/read.yaml +30 -0
  252. package/src/adapters/markdown-new/read.yaml +50 -0
  253. package/src/adapters/medrxiv/preprints.ts +112 -0
  254. package/src/adapters/neurips/proceedings.ts +266 -22
  255. package/src/adapters/ollama-cloud/fetch.yaml +39 -0
  256. package/src/adapters/ollama-cloud/search.yaml +43 -0
  257. package/src/adapters/openalex/works.test.ts +15 -4
  258. package/src/adapters/openalex/works.ts +136 -8
  259. package/src/adapters/openreview/papers.test.ts +31 -0
  260. package/src/adapters/openreview/papers.ts +407 -29
  261. package/src/adapters/pmlr/proceedings.ts +102 -12
  262. package/src/adapters/pubmed/articles.test.ts +88 -1
  263. package/src/adapters/pubmed/articles.ts +343 -44
  264. package/src/adapters/rxiv/preprints.test.ts +233 -0
  265. package/src/adapters/rxiv/preprints.ts +849 -0
  266. package/src/adapters/scholar-artifacts/pdf-read.ts +277 -0
  267. package/src/adapters/scholar-artifacts/pdf.ts +133 -0
  268. package/src/adapters/semantic-scholar/papers.ts +98 -6
  269. package/src/adapters/unpaywall/works.ts +141 -12
  270. package/src/adapters/wanfang/search.ts +57 -7
  271. package/src/adapters/cnki/search.yaml +0 -49
@@ -5,6 +5,7 @@
5
5
  * @feeds src/discovery/search.ts, src/fast-path/handlers/discovery.ts, src/mcp/handler.ts, src/cli.ts
6
6
  * @breaks Missing core rows make built-in capabilities executable but undiscoverable through search/list/MCP.
7
7
  */
8
+ import { getComputeCommandContract, } from "../compute/contracts.js";
8
9
  const CORE_COMMAND_SOURCE_PATHS = {
9
10
  agents: "src/commands/agents.ts",
10
11
  architecture: "src/commands/architecture.ts",
@@ -14,53 +15,495 @@ const CORE_COMMAND_SOURCE_PATHS = {
14
15
  mcp: "src/commands/mcp.ts",
15
16
  operate: "src/commands/operate.ts",
16
17
  runs: "src/commands/runs.ts",
18
+ scholar: "src/commands/scholar.ts",
17
19
  };
18
- const COMPUTE_CAPTURE_ARGS = [
19
- {
20
- name: "app",
21
- type: "str",
22
- description: "Application name to scope snapshot and screenshot capture",
23
- },
24
- {
25
- name: "format",
26
- type: "str",
27
- default: "compact",
28
- choices: ["compact", "json", "tree"],
29
- description: "Snapshot encoding for accessibility refs",
30
- },
31
- {
32
- name: "include",
33
- type: "str",
34
- default: "snapshot,screenshot",
35
- description: "Comma-separated capture parts: snapshot,screenshot",
36
- },
37
- {
38
- name: "maxDepth",
39
- type: "int",
40
- description: "Maximum accessibility tree depth",
41
- },
42
- {
43
- name: "screenshotPath",
44
- type: "str",
45
- description: "Optional screenshot output path",
46
- },
47
- {
48
- name: "saveReference",
49
- type: "bool",
50
- description: "Persist app-shot handoff artifacts",
51
- },
52
- {
53
- name: "copyReference",
54
- type: "bool",
55
- description: "Persist and copy app-shot handoff markup",
56
- },
20
+ const CORE_DISCOVERY_COMMANDS = [
57
21
  {
58
- name: "referenceRoot",
59
- type: "str",
60
- description: "Directory for saved app-shot artifacts",
22
+ site: "scholar",
23
+ command: "availability",
24
+ category: "scholarly",
25
+ type: "web-api",
26
+ target_surface: "web",
27
+ source_path: "src/commands/scholar.ts",
28
+ description: "Audit one academic paper from DOI, arXiv id, PMID, OpenReview id, source-local id, or title, then report source-backed metadata, PDF, full-text, code, dataset/model, citation, reference, and review availability plus next commands without downloading artifacts.",
29
+ capabilities: [
30
+ "http.fetch",
31
+ "scholar.get",
32
+ "scholar.pdf",
33
+ "scholar.fulltext",
34
+ "scholar.code",
35
+ "scholar.datasets",
36
+ "scholar.citations",
37
+ "scholar.references",
38
+ "scholar.review",
39
+ ],
40
+ minimum_capability: "http.fetch",
41
+ args: [
42
+ {
43
+ name: "ref",
44
+ type: "str",
45
+ required: true,
46
+ positional: true,
47
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
48
+ },
49
+ { name: "source", type: "str", description: "Force one source" },
50
+ {
51
+ name: "sources",
52
+ type: "str",
53
+ description: "Comma-separated sources, or all",
54
+ },
55
+ {
56
+ name: "unpaywall-email",
57
+ type: "str",
58
+ description: "Requester email for Unpaywall DOI lookup",
59
+ },
60
+ {
61
+ name: "detailed",
62
+ type: "bool",
63
+ description: "Include evidence URLs, errors, and next commands",
64
+ },
65
+ ],
66
+ },
67
+ {
68
+ site: "scholar",
69
+ command: "evidence",
70
+ category: "scholarly",
71
+ type: "web-api",
72
+ target_surface: "web",
73
+ source_path: "src/commands/scholar.ts",
74
+ description: "Classify one academic paper's source-backed evidence from DOI, arXiv id, PMID, OpenReview id, source-local id, or title into citation safety, reading readiness, missing evidence, primary anchors, and next commands without downloading artifacts.",
75
+ capabilities: [
76
+ "http.fetch",
77
+ "scholar.get",
78
+ "scholar.pdf",
79
+ "scholar.fulltext",
80
+ "scholar.code",
81
+ "scholar.datasets",
82
+ "scholar.citations",
83
+ "scholar.references",
84
+ "scholar.review",
85
+ ],
86
+ minimum_capability: "http.fetch",
87
+ args: [
88
+ {
89
+ name: "ref",
90
+ type: "str",
91
+ required: true,
92
+ positional: true,
93
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
94
+ },
95
+ { name: "source", type: "str", description: "Force one source" },
96
+ {
97
+ name: "sources",
98
+ type: "str",
99
+ description: "Comma-separated sources, or all",
100
+ },
101
+ {
102
+ name: "unpaywall-email",
103
+ type: "str",
104
+ description: "Requester email for Unpaywall DOI lookup",
105
+ },
106
+ {
107
+ name: "detailed",
108
+ type: "bool",
109
+ description: "Include source errors and command timestamp",
110
+ },
111
+ ],
112
+ },
113
+ {
114
+ site: "scholar",
115
+ command: "sources",
116
+ category: "scholarly",
117
+ type: "web-api",
118
+ target_surface: "web",
119
+ source_path: "src/commands/scholar.ts",
120
+ description: "Show a per-source provenance matrix for one academic paper from DOI, arXiv id, PMID, OpenReview id, source-local id, or title, including source status, evidence types, candidate capabilities, next commands, and source errors without downloading artifacts.",
121
+ capabilities: [
122
+ "http.fetch",
123
+ "scholar.get",
124
+ "scholar.pdf",
125
+ "scholar.fulltext",
126
+ "scholar.code",
127
+ "scholar.datasets",
128
+ "scholar.citations",
129
+ "scholar.references",
130
+ "scholar.review",
131
+ ],
132
+ minimum_capability: "http.fetch",
133
+ args: [
134
+ {
135
+ name: "ref",
136
+ type: "str",
137
+ required: true,
138
+ positional: true,
139
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
140
+ },
141
+ { name: "source", type: "str", description: "Force one source" },
142
+ {
143
+ name: "sources",
144
+ type: "str",
145
+ description: "Comma-separated sources, or all",
146
+ },
147
+ {
148
+ name: "unpaywall-email",
149
+ type: "str",
150
+ description: "Requester email for Unpaywall DOI lookup",
151
+ },
152
+ {
153
+ name: "detailed",
154
+ type: "bool",
155
+ description: "Include source capabilities, errors, and next commands",
156
+ },
157
+ ],
158
+ },
159
+ {
160
+ site: "scholar",
161
+ command: "workflow",
162
+ category: "scholarly",
163
+ type: "web-api",
164
+ target_surface: "web",
165
+ source_path: "src/commands/scholar.ts",
166
+ description: "Build a source-backed agent runbook for one academic paper from DOI, arXiv id, PMID, OpenReview id, source-local id, or title, ordering evidence classification, source reading, artifact download, citation/reference graph audit, peer-review audit, and reproducibility planning without downloading, cloning, installing, executing, or summarizing claims.",
167
+ capabilities: [
168
+ "http.fetch",
169
+ "scholar.get",
170
+ "scholar.pdf",
171
+ "scholar.fulltext",
172
+ "scholar.code",
173
+ "scholar.datasets",
174
+ "scholar.citations",
175
+ "scholar.references",
176
+ "scholar.review",
177
+ ],
178
+ minimum_capability: "http.fetch",
179
+ args: [
180
+ {
181
+ name: "ref",
182
+ type: "str",
183
+ required: true,
184
+ positional: true,
185
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
186
+ },
187
+ { name: "source", type: "str", description: "Force one source" },
188
+ {
189
+ name: "sources",
190
+ type: "str",
191
+ description: "Comma-separated sources, or all",
192
+ },
193
+ {
194
+ name: "unpaywall-email",
195
+ type: "str",
196
+ description: "Requester email for Unpaywall DOI lookup",
197
+ },
198
+ {
199
+ name: "detailed",
200
+ type: "bool",
201
+ description: "Include runbook steps, source errors, and timestamp",
202
+ },
203
+ ],
204
+ },
205
+ {
206
+ site: "scholar",
207
+ command: "reproduce",
208
+ category: "scholarly",
209
+ type: "web-api",
210
+ target_surface: "web",
211
+ source_path: "src/commands/scholar.ts",
212
+ description: "Plan one academic paper's source-backed code, data, model, and Space reproducibility path from DOI, arXiv id, OpenReview id, source-local id, or title, including installation readiness and safety boundaries without cloning, installing, or executing remote code.",
213
+ capabilities: [
214
+ "http.fetch",
215
+ "scholar.get",
216
+ "scholar.pdf",
217
+ "scholar.fulltext",
218
+ "scholar.code",
219
+ "scholar.datasets",
220
+ ],
221
+ minimum_capability: "http.fetch",
222
+ args: [
223
+ {
224
+ name: "ref",
225
+ type: "str",
226
+ required: true,
227
+ positional: true,
228
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
229
+ },
230
+ { name: "source", type: "str", description: "Force one source" },
231
+ {
232
+ name: "sources",
233
+ type: "str",
234
+ description: "Comma-separated sources, or all",
235
+ },
236
+ {
237
+ name: "unpaywall-email",
238
+ type: "str",
239
+ description: "Requester email for Unpaywall DOI lookup",
240
+ },
241
+ {
242
+ name: "detailed",
243
+ type: "bool",
244
+ description: "Include source errors, download command, and timestamp",
245
+ },
246
+ ],
247
+ },
248
+ {
249
+ site: "scholar",
250
+ command: "coverage",
251
+ category: "scholarly",
252
+ type: "web-api",
253
+ target_surface: "web",
254
+ source_path: "src/commands/scholar.ts",
255
+ description: "Compare registered academic and scholarly sources by discovery, metadata, PDF, full-text, code, dataset/model, citation, reference, and review coverage, then report missing closed-loop capabilities and next commands for agent routing without network I/O.",
256
+ capabilities: [
257
+ "scholar.search",
258
+ "scholar.get",
259
+ "scholar.pdf",
260
+ "scholar.fulltext",
261
+ "scholar.code",
262
+ "scholar.datasets",
263
+ "scholar.citations",
264
+ "scholar.references",
265
+ "scholar.review",
266
+ "scholar.venue",
267
+ "scholar.author",
268
+ ],
269
+ args: [
270
+ {
271
+ name: "sources",
272
+ type: "str",
273
+ description: "Comma-separated sources, or all",
274
+ },
275
+ {
276
+ name: "gaps",
277
+ type: "bool",
278
+ description: "Show only sources with missing closed-loop capabilities",
279
+ },
280
+ {
281
+ name: "detailed",
282
+ type: "bool",
283
+ description: "Include source command names and next commands",
284
+ },
285
+ ],
286
+ },
287
+ {
288
+ site: "scholar",
289
+ command: "reviews",
290
+ category: "scholarly",
291
+ type: "web-api",
292
+ target_surface: "web",
293
+ source_path: "src/commands/scholar.ts",
294
+ description: "Fetch source-backed peer-review, decision, rebuttal, and comment rows for a scholarly paper review thread such as an OpenReview forum, with note ids, source URLs, ratings, confidence, text truncation, and agent-auditable anchors.",
295
+ capabilities: ["http.fetch", "scholar.review"],
296
+ minimum_capability: "http.fetch",
297
+ args: [
298
+ {
299
+ name: "ref",
300
+ type: "str",
301
+ required: true,
302
+ positional: true,
303
+ description: "OpenReview forum id, forum URL, or review-thread id",
304
+ },
305
+ {
306
+ name: "source",
307
+ type: "str",
308
+ description: "Force one review-capable source",
309
+ },
310
+ {
311
+ name: "sources",
312
+ type: "str",
313
+ description: "Comma-separated review-capable sources, or all",
314
+ },
315
+ {
316
+ name: "max-length",
317
+ type: "int",
318
+ default: 4000,
319
+ description: "Per-row review text truncation length",
320
+ },
321
+ {
322
+ name: "detailed",
323
+ type: "bool",
324
+ description: "Include reviewer/signature and text size fields",
325
+ },
326
+ ],
327
+ },
328
+ {
329
+ site: "scholar",
330
+ command: "code",
331
+ category: "scholarly",
332
+ type: "web-api",
333
+ target_surface: "web",
334
+ source_path: "src/commands/scholar.ts",
335
+ description: "Resolve an academic paper from DOI, arXiv id, OpenReview id, source-local id, or title across scholarly resource-capable adapters, then return linked code repositories and project pages.",
336
+ capabilities: ["http.fetch", "scholar.code"],
337
+ minimum_capability: "http.fetch",
338
+ args: [
339
+ {
340
+ name: "ref",
341
+ type: "str",
342
+ required: true,
343
+ positional: true,
344
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
345
+ },
346
+ { name: "source", type: "str", description: "Force one source" },
347
+ {
348
+ name: "sources",
349
+ type: "str",
350
+ description: "Comma-separated sources, or all",
351
+ },
352
+ {
353
+ name: "detailed",
354
+ type: "bool",
355
+ description: "Include richer resource metadata columns",
356
+ },
357
+ ],
358
+ },
359
+ {
360
+ site: "scholar",
361
+ command: "datasets",
362
+ category: "scholarly",
363
+ type: "web-api",
364
+ target_surface: "web",
365
+ source_path: "src/commands/scholar.ts",
366
+ description: "Resolve an academic paper from DOI, arXiv id, OpenReview id, source-local id, or title across scholarly resource-capable adapters, then return linked datasets, models, and Spaces.",
367
+ capabilities: ["http.fetch", "scholar.datasets"],
368
+ minimum_capability: "http.fetch",
369
+ args: [
370
+ {
371
+ name: "ref",
372
+ type: "str",
373
+ required: true,
374
+ positional: true,
375
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
376
+ },
377
+ { name: "source", type: "str", description: "Force one source" },
378
+ {
379
+ name: "sources",
380
+ type: "str",
381
+ description: "Comma-separated sources, or all",
382
+ },
383
+ {
384
+ name: "detailed",
385
+ type: "bool",
386
+ description: "Include richer resource metadata columns",
387
+ },
388
+ ],
389
+ },
390
+ {
391
+ site: "scholar",
392
+ command: "read",
393
+ category: "scholarly",
394
+ type: "web-api",
395
+ target_surface: "web",
396
+ source_path: "src/commands/scholar.ts",
397
+ description: "Resolve an academic paper from DOI, arXiv id, OpenReview id, PubMed id, source-local id, or title across scholarly sources, prefer source-direct full text, then download the open PDF and extract capped text for agent reading.",
398
+ capabilities: [
399
+ "http.fetch",
400
+ "http.download",
401
+ "subprocess.exec",
402
+ "scholar.fulltext",
403
+ "scholar.pdf",
404
+ ],
405
+ minimum_capability: "subprocess.exec",
406
+ args: [
407
+ {
408
+ name: "ref",
409
+ type: "str",
410
+ required: true,
411
+ positional: true,
412
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
413
+ },
414
+ { name: "source", type: "str", description: "Force one source" },
415
+ {
416
+ name: "sources",
417
+ type: "str",
418
+ description: "Comma-separated sources, or all",
419
+ },
420
+ {
421
+ name: "venue",
422
+ type: "str",
423
+ description: "Source-local venue scope, e.g. CVPR or ICCV",
424
+ },
425
+ {
426
+ name: "year",
427
+ type: "str",
428
+ description: "Source-local proceedings year",
429
+ },
430
+ {
431
+ name: "volume",
432
+ type: "str",
433
+ description: "Source-local proceedings volume, e.g. PMLR v235",
434
+ },
435
+ {
436
+ name: "output",
437
+ type: "str",
438
+ default: "./scholar-downloads",
439
+ description: "Output directory",
440
+ },
441
+ { name: "first-page", type: "int", default: 1 },
442
+ { name: "last-page", type: "int", default: 20 },
443
+ {
444
+ name: "max-chars",
445
+ type: "int",
446
+ description: "Maximum extracted/read text characters",
447
+ },
448
+ {
449
+ name: "unpaywall-email",
450
+ type: "str",
451
+ description: "Requester email for Unpaywall DOI lookup",
452
+ },
453
+ ],
454
+ },
455
+ {
456
+ site: "scholar",
457
+ command: "download",
458
+ category: "scholarly",
459
+ type: "web-api",
460
+ target_surface: "web",
461
+ source_path: "src/commands/scholar.ts",
462
+ description: "Resolve an academic paper from DOI, arXiv id, OpenReview id, source-local id, or title across scholarly sources, download the open PDF, and return artifact metadata.",
463
+ capabilities: ["http.download", "scholar.pdf"],
464
+ minimum_capability: "http.download",
465
+ args: [
466
+ {
467
+ name: "ref",
468
+ type: "str",
469
+ required: true,
470
+ positional: true,
471
+ description: "DOI, arXiv id, OpenReview id, source-local id, or title",
472
+ },
473
+ { name: "source", type: "str", description: "Force one source" },
474
+ {
475
+ name: "sources",
476
+ type: "str",
477
+ description: "Comma-separated sources, or all",
478
+ },
479
+ {
480
+ name: "venue",
481
+ type: "str",
482
+ description: "Source-local venue scope, e.g. CVPR or ICCV",
483
+ },
484
+ {
485
+ name: "year",
486
+ type: "str",
487
+ description: "Source-local proceedings year",
488
+ },
489
+ {
490
+ name: "volume",
491
+ type: "str",
492
+ description: "Source-local proceedings volume, e.g. PMLR v235",
493
+ },
494
+ {
495
+ name: "output",
496
+ type: "str",
497
+ default: "./scholar-downloads",
498
+ description: "Output directory",
499
+ },
500
+ {
501
+ name: "unpaywall-email",
502
+ type: "str",
503
+ description: "Requester email for Unpaywall DOI lookup",
504
+ },
505
+ ],
61
506
  },
62
- ];
63
- const CORE_DISCOVERY_COMMANDS = [
64
507
  {
65
508
  site: "browser",
66
509
  command: "evidence",
@@ -214,7 +657,7 @@ const CORE_DISCOVERY_COMMANDS = [
214
657
  category: "desktop",
215
658
  type: "desktop",
216
659
  target_surface: "desktop",
217
- description: "List installed and visible desktop applications for local computer-use workflows.",
660
+ ...computeCommandFields("apps"),
218
661
  },
219
662
  {
220
663
  site: "compute",
@@ -222,7 +665,7 @@ const CORE_DISCOVERY_COMMANDS = [
222
665
  category: "desktop",
223
666
  type: "desktop",
224
667
  target_surface: "desktop",
225
- description: "List visible desktop windows for local computer-use workflows.",
668
+ ...computeCommandFields("windows"),
226
669
  },
227
670
  {
228
671
  site: "compute",
@@ -230,7 +673,7 @@ const CORE_DISCOVERY_COMMANDS = [
230
673
  category: "desktop",
231
674
  type: "desktop",
232
675
  target_surface: "desktop",
233
- description: "Capture compact accessibility snapshots, refs, app state, and native UI structure for local computer-use agents.",
676
+ ...computeCommandFields("snapshot"),
234
677
  },
235
678
  {
236
679
  site: "compute",
@@ -238,13 +681,7 @@ const CORE_DISCOVERY_COMMANDS = [
238
681
  category: "desktop",
239
682
  type: "desktop",
240
683
  target_surface: "desktop",
241
- args: COMPUTE_CAPTURE_ARGS,
242
- channels: {
243
- shell: "unicli compute capture [--app <name>] [--include snapshot,screenshot] [--format compact] [--copy-reference]",
244
- args_file: "unicli compute capture --args-file <path.json>",
245
- stdin: "echo '{...}' | unicli compute capture",
246
- },
247
- description: "Capture local computer-use context by combining accessibility refs, app state, screenshot evidence, image metadata, app-shot reference artifacts, clipboard handoff markup, and replayable capture trajectory.",
684
+ ...computeCommandFields("capture"),
248
685
  },
249
686
  {
250
687
  site: "compute",
@@ -252,7 +689,7 @@ const CORE_DISCOVERY_COMMANDS = [
252
689
  category: "desktop",
253
690
  type: "desktop",
254
691
  target_surface: "desktop",
255
- description: "Find a desktop UI element by query and return stable refs for local computer-use actions.",
692
+ ...computeCommandFields("find"),
256
693
  },
257
694
  {
258
695
  site: "compute",
@@ -260,7 +697,7 @@ const CORE_DISCOVERY_COMMANDS = [
260
697
  category: "desktop",
261
698
  type: "desktop",
262
699
  target_surface: "desktop",
263
- description: "Click a desktop UI ref through the local computer-use cascade with action evidence.",
700
+ ...computeCommandFields("click"),
264
701
  },
265
702
  {
266
703
  site: "compute",
@@ -268,7 +705,7 @@ const CORE_DISCOVERY_COMMANDS = [
268
705
  category: "desktop",
269
706
  type: "desktop",
270
707
  target_surface: "desktop",
271
- description: "Type text into a desktop UI ref through native, browser, or visual computer-use transports.",
708
+ ...computeCommandFields("type"),
272
709
  },
273
710
  {
274
711
  site: "compute",
@@ -276,7 +713,7 @@ const CORE_DISCOVERY_COMMANDS = [
276
713
  category: "desktop",
277
714
  type: "desktop",
278
715
  target_surface: "desktop",
279
- description: "Press a keyboard shortcut through local computer-use transports.",
716
+ ...computeCommandFields("press"),
280
717
  },
281
718
  {
282
719
  site: "compute",
@@ -284,7 +721,7 @@ const CORE_DISCOVERY_COMMANDS = [
284
721
  category: "desktop",
285
722
  type: "desktop",
286
723
  target_surface: "desktop",
287
- description: "Scroll a desktop UI ref through local computer-use transports.",
724
+ ...computeCommandFields("scroll"),
288
725
  },
289
726
  {
290
727
  site: "compute",
@@ -292,7 +729,7 @@ const CORE_DISCOVERY_COMMANDS = [
292
729
  category: "desktop",
293
730
  type: "desktop",
294
731
  target_surface: "desktop",
295
- description: "Launch a desktop app before local computer-use control.",
732
+ ...computeCommandFields("launch"),
296
733
  },
297
734
  {
298
735
  site: "compute",
@@ -300,7 +737,7 @@ const CORE_DISCOVERY_COMMANDS = [
300
737
  category: "desktop",
301
738
  type: "desktop",
302
739
  target_surface: "desktop",
303
- description: "Capture a desktop screenshot for local computer-use observation and visual fallback.",
740
+ ...computeCommandFields("screenshot"),
304
741
  },
305
742
  {
306
743
  site: "compute",
@@ -308,7 +745,7 @@ const CORE_DISCOVERY_COMMANDS = [
308
745
  category: "desktop",
309
746
  type: "desktop",
310
747
  target_surface: "desktop",
311
- description: "Attach to a desktop app or browser-backed local runtime for computer-use actions.",
748
+ ...computeCommandFields("attach"),
312
749
  },
313
750
  {
314
751
  site: "compute",
@@ -316,7 +753,7 @@ const CORE_DISCOVERY_COMMANDS = [
316
753
  category: "desktop",
317
754
  type: "desktop",
318
755
  target_surface: "desktop",
319
- description: "Evaluate JavaScript in an attached browser-backed local runtime.",
756
+ ...computeCommandFields("eval"),
320
757
  },
321
758
  {
322
759
  site: "compute",
@@ -324,7 +761,7 @@ const CORE_DISCOVERY_COMMANDS = [
324
761
  category: "desktop",
325
762
  type: "desktop",
326
763
  target_surface: "desktop",
327
- description: "Wait for a local computer-use target to reach a stable or expected state.",
764
+ ...computeCommandFields("wait"),
328
765
  },
329
766
  {
330
767
  site: "compute",
@@ -332,7 +769,7 @@ const CORE_DISCOVERY_COMMANDS = [
332
769
  category: "desktop",
333
770
  type: "desktop",
334
771
  target_surface: "desktop",
335
- description: "Observe desktop state against a natural-language goal using local computer-use transports.",
772
+ ...computeCommandFields("observe"),
336
773
  },
337
774
  {
338
775
  site: "compute",
@@ -340,7 +777,7 @@ const CORE_DISCOVERY_COMMANDS = [
340
777
  category: "desktop",
341
778
  type: "desktop",
342
779
  target_surface: "desktop",
343
- description: "Assert desktop state for a local computer-use workflow and return structured evidence.",
780
+ ...computeCommandFields("assert"),
344
781
  },
345
782
  ];
346
783
  export function listCoreDiscoveryCommands() {
@@ -380,4 +817,26 @@ function withCoreSourcePath(command) {
380
817
  source_path: command.source_path ?? CORE_COMMAND_SOURCE_PATHS[command.site],
381
818
  };
382
819
  }
820
+ function computeCommandFields(command) {
821
+ const contract = getComputeCommandContract(command);
822
+ if (!contract) {
823
+ throw new Error(`missing compute command contract for ${command}`);
824
+ }
825
+ return {
826
+ description: contract.description,
827
+ args: contract.args.map(toCoreDiscoveryArg),
828
+ ...(contract.channels ? { channels: contract.channels } : {}),
829
+ };
830
+ }
831
+ function toCoreDiscoveryArg(arg) {
832
+ return {
833
+ name: arg.name,
834
+ ...(arg.type === undefined ? {} : { type: arg.type }),
835
+ ...(arg.default === undefined ? {} : { default: arg.default }),
836
+ ...(arg.required === undefined ? {} : { required: arg.required }),
837
+ ...(arg.positional === undefined ? {} : { positional: arg.positional }),
838
+ ...(arg.choices === undefined ? {} : { choices: [...arg.choices] }),
839
+ ...(arg.description === undefined ? {} : { description: arg.description }),
840
+ };
841
+ }
383
842
  //# sourceMappingURL=core-catalog.js.map