@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
@@ -10,21 +10,7 @@
10
10
  * - Fallthrough to expanded-tool dispatch via `./dispatch.ts`
11
11
  */
12
12
  import { type McpPrompt, type McpTool } from "./tools.js";
13
- export interface JsonRpcRequest {
14
- jsonrpc: "2.0";
15
- id?: number | string | null;
16
- method: string;
17
- params?: Record<string, unknown>;
18
- }
19
- export interface JsonRpcResponse {
20
- jsonrpc: "2.0";
21
- id: number | string | null;
22
- result?: unknown;
23
- error?: {
24
- code: number;
25
- message: string;
26
- data?: unknown;
27
- };
28
- }
13
+ import type { JsonRpcRequest, JsonRpcResponse } from "./jsonrpc.js";
14
+ export type { JsonRpcRequest, JsonRpcResponse };
29
15
  export declare function buildHandler(tools: McpTool[], prompts?: McpPrompt[]): (req: JsonRpcRequest) => JsonRpcResponse | undefined | Promise<JsonRpcResponse | undefined>;
30
16
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AA0ZD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,GAAE,SAAS,EAAO,GACxB,CACD,GAAG,EAAE,cAAc,KAChB,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAsCtE"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AA0ZhD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,GAAE,SAAS,EAAO,GACxB,CACD,GAAG,EAAE,cAAc,KAChB,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAsCtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,13 @@
10
10
  * that. Most clients that "speak HTTP" to MCP only need request/response,
11
11
  * and starting with the simpler shape means zero new dependencies and a
12
12
  * tiny attack surface.
13
+ *
14
+ * Every request passes the shared `isOriginAllowed` DNS-rebinding guard
15
+ * (`./origin-guard.ts`) before routing, so a browser page on a foreign
16
+ * origin cannot reach the JSON-RPC dispatcher even though the socket binds
17
+ * to loopback.
13
18
  */
19
+ import { type Server } from "node:http";
14
20
  import type { buildHandler } from "./handler.js";
15
- export declare function startHttp(handler: ReturnType<typeof buildHandler>, port: number, authEnabled?: boolean): Promise<void>;
21
+ export declare function startHttp(handler: ReturnType<typeof buildHandler>, port: number, authEnabled?: boolean): Promise<Server>;
16
22
  //# sourceMappingURL=http-transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../src/mcp/http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,cAAc,CAAC;AAsFjE,wBAAsB,SAAS,CAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACxC,IAAI,EAAE,MAAM,EACZ,WAAW,UAAQ,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
1
+ {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../src/mcp/http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,WAAW,CAAC;AAMnB,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,cAAc,CAAC;AAsFjE,wBAAsB,SAAS,CAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACxC,IAAI,EAAE,MAAM,EACZ,WAAW,UAAQ,GAClB,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
@@ -10,9 +10,15 @@
10
10
  * that. Most clients that "speak HTTP" to MCP only need request/response,
11
11
  * and starting with the simpler shape means zero new dependencies and a
12
12
  * tiny attack surface.
13
+ *
14
+ * Every request passes the shared `isOriginAllowed` DNS-rebinding guard
15
+ * (`./origin-guard.ts`) before routing, so a browser page on a foreign
16
+ * origin cannot reach the JSON-RPC dispatcher even though the socket binds
17
+ * to loopback.
13
18
  */
14
19
  import { createServer, } from "node:http";
15
20
  import { getAllAdapters, listCommands } from "../registry.js";
21
+ import { isOriginAllowed } from "./origin-guard.js";
16
22
  import { handleOAuthRoute, createOAuthMiddleware } from "./oauth.js";
17
23
  import { VERSION } from "../constants.js";
18
24
  import { buildDefaultTools } from "./tools.js";
@@ -94,6 +100,16 @@ async function dispatchPost(req, res, handler) {
94
100
  export async function startHttp(handler, port, authEnabled = false) {
95
101
  const oauthMiddleware = authEnabled ? createOAuthMiddleware() : null;
96
102
  const server = createServer((req, res) => {
103
+ // DNS-rebinding guard: reject browser pages on a non-loopback origin
104
+ // before any routing, so a malicious site cannot drive tools/call.
105
+ if (!isOriginAllowed(req)) {
106
+ writeJson(res, 403, {
107
+ jsonrpc: "2.0",
108
+ id: null,
109
+ error: { code: -32600, message: "Forbidden: invalid Origin" },
110
+ });
111
+ return;
112
+ }
97
113
  if (authEnabled && handleOAuthRoute(req, res))
98
114
  return;
99
115
  if (req.method === "GET" &&
@@ -116,6 +132,9 @@ export async function startHttp(handler, port, authEnabled = false) {
116
132
  resolve();
117
133
  });
118
134
  });
119
- process.stderr.write(`unicli MCP server v${VERSION} — HTTP transport on http://127.0.0.1:${port}/mcp\n`);
135
+ const addr = server.address();
136
+ const boundPort = addr && typeof addr === "object" ? addr.port : port;
137
+ process.stderr.write(`unicli MCP server v${VERSION} — HTTP transport on http://127.0.0.1:${boundPort}/mcp\n`);
138
+ return server;
120
139
  }
121
140
  //# sourceMappingURL=http-transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../../src/mcp/http-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../../src/mcp/http-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * JSON-RPC 2.0 wire types — single source of truth for the MCP surface.
3
+ *
4
+ * The request/response envelope is shared by the dispatcher (`handler.ts`)
5
+ * and every transport (stdio, legacy HTTP, Streamable HTTP). Defining it
6
+ * once here keeps the transports from re-declaring drifting copies, the same
7
+ * class of divergence that left the legacy HTTP transport without an origin
8
+ * guard. Both `handler.ts` and `streamable-http/session.ts` re-export these
9
+ * so existing import paths stay stable.
10
+ */
11
+ export interface JsonRpcRequest {
12
+ jsonrpc: "2.0";
13
+ id?: number | string | null;
14
+ method: string;
15
+ params?: Record<string, unknown>;
16
+ }
17
+ export interface JsonRpcResponse {
18
+ jsonrpc: "2.0";
19
+ id: number | string | null;
20
+ result?: unknown;
21
+ error?: {
22
+ code: number;
23
+ message: string;
24
+ data?: unknown;
25
+ };
26
+ }
27
+ //# sourceMappingURL=jsonrpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../src/mcp/jsonrpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * JSON-RPC 2.0 wire types — single source of truth for the MCP surface.
3
+ *
4
+ * The request/response envelope is shared by the dispatcher (`handler.ts`)
5
+ * and every transport (stdio, legacy HTTP, Streamable HTTP). Defining it
6
+ * once here keeps the transports from re-declaring drifting copies, the same
7
+ * class of divergence that left the legacy HTTP transport without an origin
8
+ * guard. Both `handler.ts` and `streamable-http/session.ts` re-export these
9
+ * so existing import paths stay stable.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=jsonrpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../src/mcp/jsonrpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * MCP origin guard — DNS-rebinding protection shared by every HTTP transport.
3
+ *
4
+ * A local MCP server bound to loopback is unreachable from the network but
5
+ * still reachable from a browser the user is running: a malicious page can
6
+ * issue a CORS "simple request" to http://127.0.0.1:<port>/mcp. The browser
7
+ * attaches the page's `Origin` and the page's script cannot forge or suppress
8
+ * it, so validating `Origin` is the spec-mandated defense against that pivot.
9
+ *
10
+ * This is the single source of truth for the policy. Both the legacy
11
+ * `http-transport.ts` and the Streamable HTTP transport import it so the two
12
+ * paths can never drift apart again.
13
+ */
14
+ import type { IncomingMessage } from "node:http";
15
+ /** Origins explicitly trusted regardless of the loopback-hostname check. */
16
+ export declare const ALLOWED_ORIGINS: Set<string>;
17
+ /**
18
+ * Validate the `Origin` header for DNS-rebinding protection.
19
+ *
20
+ * Requests with no `Origin` are non-browser clients (CLI, MCP host, curl) and
21
+ * are allowed — a browser cannot omit `Origin` on a cross-origin request, so
22
+ * this does not weaken the browser-threat defense. Any loopback origin is
23
+ * allowed regardless of port; everything else is rejected.
24
+ */
25
+ export declare function isOriginAllowed(req: IncomingMessage): boolean;
26
+ //# sourceMappingURL=origin-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-guard.d.ts","sourceRoot":"","sources":["../../src/mcp/origin-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,aAG1B,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAY7D"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * MCP origin guard — DNS-rebinding protection shared by every HTTP transport.
3
+ *
4
+ * A local MCP server bound to loopback is unreachable from the network but
5
+ * still reachable from a browser the user is running: a malicious page can
6
+ * issue a CORS "simple request" to http://127.0.0.1:<port>/mcp. The browser
7
+ * attaches the page's `Origin` and the page's script cannot forge or suppress
8
+ * it, so validating `Origin` is the spec-mandated defense against that pivot.
9
+ *
10
+ * This is the single source of truth for the policy. Both the legacy
11
+ * `http-transport.ts` and the Streamable HTTP transport import it so the two
12
+ * paths can never drift apart again.
13
+ */
14
+ /** Origins explicitly trusted regardless of the loopback-hostname check. */
15
+ export const ALLOWED_ORIGINS = new Set([
16
+ "http://localhost",
17
+ "http://127.0.0.1",
18
+ ]);
19
+ /**
20
+ * Validate the `Origin` header for DNS-rebinding protection.
21
+ *
22
+ * Requests with no `Origin` are non-browser clients (CLI, MCP host, curl) and
23
+ * are allowed — a browser cannot omit `Origin` on a cross-origin request, so
24
+ * this does not weaken the browser-threat defense. Any loopback origin is
25
+ * allowed regardless of port; everything else is rejected.
26
+ */
27
+ export function isOriginAllowed(req) {
28
+ const origin = req.headers.origin;
29
+ if (!origin)
30
+ return true; // Non-browser clients omit Origin
31
+ try {
32
+ const url = new URL(origin);
33
+ if (url.hostname === "localhost" || url.hostname === "127.0.0.1") {
34
+ return true;
35
+ }
36
+ }
37
+ catch {
38
+ // Malformed origin — reject
39
+ }
40
+ return ALLOWED_ORIGINS.has(origin);
41
+ }
42
+ //# sourceMappingURL=origin-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-guard.js","sourceRoot":"","sources":["../../src/mcp/origin-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,kBAAkB;IAClB,kBAAkB;CACnB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAoB;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"computer-use.d.ts","sourceRoot":"","sources":["../../../src/mcp/profiles/computer-use.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA+XtD,eAAO,MAAM,oBAAoB,EAAE,SAAS,EAc3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAsCrC,CAAC"}
1
+ {"version":3,"file":"computer-use.d.ts","sourceRoot":"","sources":["../../../src/mcp/profiles/computer-use.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAuHtD,eAAO,MAAM,oBAAoB,EAAE,SAAS,EAc3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAsCrC,CAAC"}
@@ -4,57 +4,13 @@ import { captureComputeContext } from "../../compute/capture.js";
4
4
  import { copyReferenceMarkupToClipboard, saveComputeCaptureReference, } from "../../compute/capture-reference.js";
5
5
  import { createPlatformComputeOverlayProvider } from "../../compute/platform-overlays.js";
6
6
  import { buildComputeActionVisualEvidence } from "../../compute/visual-timeline.js";
7
+ import { buildComputeInputSchema, getComputeCommandContract, } from "../../compute/contracts.js";
7
8
  import { err, exitCodeFor } from "../../core/envelope.js";
8
- const REF = {
9
- type: "string",
10
- description: 'Element ref returned by computer-use.snapshot or computer-use.find, e.g. "@e7"',
11
- };
12
- const APP = {
13
- type: "string",
14
- description: 'App name, bundle id, or process name, e.g. "Slack"',
15
- };
16
- const FOCUS = { type: "boolean", default: false };
17
- const OVERLAY = {
18
- type: "boolean",
19
- default: false,
20
- description: "Render the system-level virtual cursor HUD for this action.",
21
- };
22
9
  const DEFINITIONS = [
10
+ computeToolDef("apps"),
11
+ computeToolDef("windows"),
23
12
  {
24
- suffix: "apps",
25
- description: "List currently running applications visible to the native computer-control layer.",
26
- kind: "compute_apps",
27
- inputSchema: { type: "object", properties: {} },
28
- readOnly: true,
29
- },
30
- {
31
- suffix: "windows",
32
- description: "List top-level windows, optionally scoped to an app.",
33
- kind: "compute_windows",
34
- inputSchema: { type: "object", properties: { app: APP } },
35
- readOnly: true,
36
- },
37
- {
38
- suffix: "capture",
39
- description: "Capture a reusable app context packet with snapshot refs and/or screenshot evidence.",
40
- kind: "compute_capture",
41
- inputSchema: {
42
- type: "object",
43
- properties: {
44
- app: APP,
45
- include: { type: "string", default: "snapshot,screenshot" },
46
- format: {
47
- type: "string",
48
- enum: ["compact", "tree", "json"],
49
- default: "compact",
50
- },
51
- maxDepth: { type: "integer", default: 64 },
52
- screenshotPath: { type: "string" },
53
- saveReference: { type: "boolean", default: false },
54
- copyReference: { type: "boolean", default: false },
55
- referenceRoot: { type: "string" },
56
- },
57
- },
13
+ ...computeToolDef("capture"),
58
14
  handler: async (input, def) => {
59
15
  const format = readCaptureFormat(input.format);
60
16
  if (!format.ok) {
@@ -119,234 +75,25 @@ const DEFINITIONS = [
119
75
  }, def);
120
76
  },
121
77
  },
78
+ computeToolDef("snapshot"),
79
+ computeToolDef("find"),
80
+ computeToolDef("click"),
81
+ computeToolDef("type"),
82
+ computeToolDef("press"),
83
+ computeToolDef("scroll"),
84
+ computeToolDef("launch"),
85
+ computeToolDef("screenshot"),
86
+ computeToolDef("attach"),
122
87
  {
123
- suffix: "snapshot",
124
- description: "Capture a compact accessibility snapshot. Use returned @e refs for later actions.",
125
- kind: "compute_snapshot",
126
- inputSchema: {
127
- type: "object",
128
- properties: {
129
- app: APP,
130
- format: {
131
- type: "string",
132
- enum: ["compact", "tree", "json"],
133
- default: "compact",
134
- },
135
- interactiveOnly: { type: "boolean", default: false },
136
- maxDepth: { type: "integer", default: 64 },
137
- },
138
- },
139
- readOnly: true,
140
- },
141
- {
142
- suffix: "find",
143
- description: "Find elements from the latest snapshot by role, name, or visible/current text value.",
144
- kind: "compute_find",
145
- inputSchema: {
146
- type: "object",
147
- properties: {
148
- role: {
149
- type: "string",
150
- enum: [
151
- "button",
152
- "input",
153
- "textarea",
154
- "text",
155
- "menuitem",
156
- "checkbox",
157
- "radio",
158
- "link",
159
- "image",
160
- "window",
161
- "group",
162
- "list",
163
- "listitem",
164
- "tab",
165
- "tree",
166
- "treeitem",
167
- "slider",
168
- "combobox",
169
- "spinbutton",
170
- ],
171
- },
172
- name: { type: "string" },
173
- text: { type: "string" },
174
- app: APP,
175
- first: { type: "boolean", default: false },
176
- },
177
- required: ["role"],
178
- },
179
- readOnly: true,
180
- },
181
- {
182
- suffix: "click",
183
- description: "Click an element by ref.",
184
- kind: "compute_click",
185
- inputSchema: {
186
- type: "object",
187
- properties: {
188
- ref: REF,
189
- button: { type: "string", enum: ["left", "right", "middle"] },
190
- double: { type: "boolean", default: false },
191
- focus: FOCUS,
192
- overlay: OVERLAY,
193
- },
194
- required: ["ref"],
195
- },
196
- },
197
- {
198
- suffix: "type",
199
- description: "Type text into an element ref.",
200
- kind: "compute_type",
201
- inputSchema: {
202
- type: "object",
203
- properties: {
204
- ref: REF,
205
- text: { type: "string" },
206
- clear: { type: "boolean", default: false },
207
- focus: FOCUS,
208
- overlay: OVERLAY,
209
- },
210
- required: ["ref", "text"],
211
- },
212
- },
213
- {
214
- suffix: "press",
215
- description: 'Press a keyboard combo, e.g. "cmd+s" or "ctrl+shift+p".',
216
- kind: "compute_press",
217
- inputSchema: {
218
- type: "object",
219
- properties: {
220
- combo: { type: "string" },
221
- app: APP,
222
- focus: FOCUS,
223
- },
224
- required: ["combo"],
225
- },
226
- },
227
- {
228
- suffix: "scroll",
229
- description: "Scroll an element or the active view.",
230
- kind: "compute_scroll",
231
- inputSchema: {
232
- type: "object",
233
- properties: {
234
- ref: REF,
235
- direction: {
236
- type: "string",
237
- enum: ["up", "down", "left", "right"],
238
- default: "down",
239
- },
240
- amount: { type: "integer", default: 300 },
241
- focus: FOCUS,
242
- overlay: OVERLAY,
243
- },
244
- },
245
- },
246
- {
247
- suffix: "launch",
248
- description: "Launch an app by name, bundle id, process name, or path.",
249
- kind: "compute_launch",
250
- inputSchema: {
251
- type: "object",
252
- properties: {
253
- app: APP,
254
- debugPort: { type: "integer" },
255
- },
256
- required: ["app"],
257
- },
258
- },
259
- {
260
- suffix: "screenshot",
261
- description: "Capture a pixel screenshot. Prefer snapshot unless accessibility data is unavailable.",
262
- kind: "compute_screenshot",
263
- inputSchema: {
264
- type: "object",
265
- properties: {
266
- app: APP,
267
- path: { type: "string", description: "Optional output path" },
268
- },
269
- },
270
- readOnly: true,
271
- },
272
- {
273
- suffix: "attach",
274
- description: "Attach to an Electron app or explicit CDP port.",
275
- kind: "compute_cdp_attach",
276
- inputSchema: {
277
- type: "object",
278
- properties: {
279
- app: APP,
280
- port: { type: "integer" },
281
- confirmRelaunch: { type: "boolean", default: false },
282
- },
283
- },
284
- },
285
- {
286
- suffix: "evaluate",
287
- description: "Run JavaScript in the attached CDP renderer.",
288
- kind: "compute_evaluate",
289
- inputSchema: {
290
- type: "object",
291
- properties: {
292
- js: { type: "string" },
293
- targetId: { type: "string" },
294
- },
295
- required: ["js"],
296
- },
88
+ ...computeToolDef("eval"),
297
89
  transform: (input) => ({
298
90
  ...input,
299
91
  ...(typeof input.js === "string" ? { script: input.js } : {}),
300
92
  }),
301
93
  },
302
- {
303
- suffix: "wait",
304
- description: "Wait for a ref, text, or state condition.",
305
- kind: "compute_wait",
306
- inputSchema: {
307
- type: "object",
308
- properties: {
309
- ref: REF,
310
- text: { type: "string" },
311
- app: APP,
312
- state: { type: "string", enum: ["appear", "disappear", "focused"] },
313
- timeoutMs: { type: "integer", default: 10_000 },
314
- },
315
- },
316
- readOnly: true,
317
- },
318
- {
319
- suffix: "observe",
320
- description: "Rank candidate refs for a natural-language goal from the latest snapshot.",
321
- kind: "compute_observe",
322
- inputSchema: {
323
- type: "object",
324
- properties: {
325
- goal: { type: "string" },
326
- app: APP,
327
- topK: { type: "integer", default: 5 },
328
- },
329
- required: ["goal"],
330
- },
331
- readOnly: true,
332
- },
333
- {
334
- suffix: "assert",
335
- description: "Assert a UI condition by ref, text, or state.",
336
- kind: "compute_assert",
337
- inputSchema: {
338
- type: "object",
339
- properties: {
340
- ref: REF,
341
- text: { type: "string" },
342
- state: {
343
- type: "string",
344
- enum: ["enabled", "focused", "checked", "visible"],
345
- },
346
- },
347
- },
348
- readOnly: true,
349
- },
94
+ computeToolDef("wait"),
95
+ computeToolDef("observe"),
96
+ computeToolDef("assert"),
350
97
  ];
351
98
  export const COMPUTER_USE_PROMPTS = [
352
99
  {
@@ -394,6 +141,19 @@ export const COMPUTER_USE_TOOLS = DEFINITIONS.map((def) => ({
394
141
  }
395
142
  },
396
143
  }));
144
+ function computeToolDef(command) {
145
+ const contract = getComputeCommandContract(command);
146
+ if (!contract) {
147
+ throw new Error(`missing compute command contract for ${command}`);
148
+ }
149
+ return {
150
+ suffix: contract.mcpSuffix,
151
+ description: contract.description,
152
+ kind: contract.kind,
153
+ inputSchema: buildComputeInputSchema(contract.args),
154
+ readOnly: contract.readOnly,
155
+ };
156
+ }
397
157
  function actionResultToMcp(result, def, params = {}, evidence) {
398
158
  const data = result.ok ? result.data : result.error;
399
159
  const transport = result.ok