@zenalexa/unicli 0.213.1 → 0.213.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 (350) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +4 -4
  3. package/README.zh-CN.md +3 -3
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +11 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/describe.d.ts +26 -0
  8. package/dist/commands/describe.d.ts.map +1 -0
  9. package/dist/commands/describe.js +230 -0
  10. package/dist/commands/describe.js.map +1 -0
  11. package/dist/commands/dev.js +1 -1
  12. package/dist/commands/dev.js.map +1 -1
  13. package/dist/commands/dispatch.d.ts +14 -3
  14. package/dist/commands/dispatch.d.ts.map +1 -1
  15. package/dist/commands/dispatch.js +141 -81
  16. package/dist/commands/dispatch.js.map +1 -1
  17. package/dist/commands/health.d.ts.map +1 -1
  18. package/dist/commands/health.js +1 -1
  19. package/dist/commands/health.js.map +1 -1
  20. package/dist/commands/skills.d.ts.map +1 -1
  21. package/dist/commands/skills.js +1 -1
  22. package/dist/commands/skills.js.map +1 -1
  23. package/dist/constants.d.ts +2 -0
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +2 -0
  26. package/dist/constants.js.map +1 -1
  27. package/dist/discovery/loader.d.ts +8 -0
  28. package/dist/discovery/loader.d.ts.map +1 -1
  29. package/dist/discovery/loader.js +22 -1
  30. package/dist/discovery/loader.js.map +1 -1
  31. package/dist/engine/args.d.ts +83 -0
  32. package/dist/engine/args.d.ts.map +1 -0
  33. package/dist/engine/args.js +260 -0
  34. package/dist/engine/args.js.map +1 -0
  35. package/dist/engine/executor.d.ts +20 -1
  36. package/dist/engine/executor.d.ts.map +1 -1
  37. package/dist/engine/executor.js +11 -2
  38. package/dist/engine/executor.js.map +1 -1
  39. package/dist/engine/harden.d.ts +48 -0
  40. package/dist/engine/harden.d.ts.map +1 -0
  41. package/dist/engine/harden.js +327 -0
  42. package/dist/engine/harden.js.map +1 -0
  43. package/dist/engine/invoke.d.ts +16 -0
  44. package/dist/engine/invoke.d.ts.map +1 -0
  45. package/dist/engine/invoke.js +15 -0
  46. package/dist/engine/invoke.js.map +1 -0
  47. package/dist/engine/kernel/compile.d.ts +30 -0
  48. package/dist/engine/kernel/compile.d.ts.map +1 -0
  49. package/dist/engine/kernel/compile.js +167 -0
  50. package/dist/engine/kernel/compile.js.map +1 -0
  51. package/dist/engine/kernel/execute.d.ts +35 -0
  52. package/dist/engine/kernel/execute.d.ts.map +1 -0
  53. package/dist/engine/kernel/execute.js +221 -0
  54. package/dist/engine/kernel/execute.js.map +1 -0
  55. package/dist/engine/kernel/types.d.ts +49 -0
  56. package/dist/engine/kernel/types.d.ts.map +1 -0
  57. package/dist/engine/kernel/types.js +9 -0
  58. package/dist/engine/kernel/types.js.map +1 -0
  59. package/dist/engine/kernel/ulid.d.ts +21 -0
  60. package/dist/engine/kernel/ulid.d.ts.map +1 -0
  61. package/dist/engine/kernel/ulid.js +76 -0
  62. package/dist/engine/kernel/ulid.js.map +1 -0
  63. package/dist/engine/template.d.ts.map +1 -1
  64. package/dist/engine/template.js +11 -0
  65. package/dist/engine/template.js.map +1 -1
  66. package/dist/manifest.json +1 -1
  67. package/dist/mcp/dispatch.d.ts +46 -0
  68. package/dist/mcp/dispatch.d.ts.map +1 -0
  69. package/dist/mcp/dispatch.js +109 -0
  70. package/dist/mcp/dispatch.js.map +1 -0
  71. package/dist/mcp/handler.d.ts +30 -0
  72. package/dist/mcp/handler.d.ts.map +1 -0
  73. package/dist/mcp/handler.js +293 -0
  74. package/dist/mcp/handler.js.map +1 -0
  75. package/dist/mcp/http-transport.d.ts +16 -0
  76. package/dist/mcp/http-transport.d.ts.map +1 -0
  77. package/dist/mcp/http-transport.js +124 -0
  78. package/dist/mcp/http-transport.js.map +1 -0
  79. package/dist/mcp/server.d.ts +17 -33
  80. package/dist/mcp/server.d.ts.map +1 -1
  81. package/dist/mcp/server.js +31 -742
  82. package/dist/mcp/server.js.map +1 -1
  83. package/dist/mcp/sse-transport.js.map +1 -1
  84. package/dist/mcp/streamable-http/handle-post.d.ts +23 -0
  85. package/dist/mcp/streamable-http/handle-post.d.ts.map +1 -0
  86. package/dist/mcp/streamable-http/handle-post.js +357 -0
  87. package/dist/mcp/streamable-http/handle-post.js.map +1 -0
  88. package/dist/mcp/streamable-http/index.d.ts +45 -0
  89. package/dist/mcp/streamable-http/index.d.ts.map +1 -0
  90. package/dist/mcp/streamable-http/index.js +150 -0
  91. package/dist/mcp/streamable-http/index.js.map +1 -0
  92. package/dist/mcp/streamable-http/session.d.ts +85 -0
  93. package/dist/mcp/streamable-http/session.d.ts.map +1 -0
  94. package/dist/mcp/streamable-http/session.js +104 -0
  95. package/dist/mcp/streamable-http/session.js.map +1 -0
  96. package/dist/mcp/streamable-http.d.ts +7 -85
  97. package/dist/mcp/streamable-http.d.ts.map +1 -1
  98. package/dist/mcp/streamable-http.js +6 -568
  99. package/dist/mcp/streamable-http.js.map +1 -1
  100. package/dist/mcp/tools.d.ts +57 -0
  101. package/dist/mcp/tools.d.ts.map +1 -0
  102. package/dist/mcp/tools.js +237 -0
  103. package/dist/mcp/tools.js.map +1 -0
  104. package/dist/output/envelope.d.ts +29 -0
  105. package/dist/output/envelope.d.ts.map +1 -1
  106. package/dist/output/envelope.js +6 -0
  107. package/dist/output/envelope.js.map +1 -1
  108. package/dist/output/next-actions.d.ts +18 -0
  109. package/dist/output/next-actions.d.ts.map +1 -0
  110. package/dist/output/next-actions.js +64 -0
  111. package/dist/output/next-actions.js.map +1 -0
  112. package/dist/output/projection.d.ts +93 -0
  113. package/dist/output/projection.d.ts.map +1 -0
  114. package/dist/output/projection.js +255 -0
  115. package/dist/output/projection.js.map +1 -0
  116. package/dist/protocol/acp-helpers.d.ts +32 -0
  117. package/dist/protocol/acp-helpers.d.ts.map +1 -0
  118. package/dist/protocol/acp-helpers.js +175 -0
  119. package/dist/protocol/acp-helpers.js.map +1 -0
  120. package/dist/protocol/acp.d.ts +2 -27
  121. package/dist/protocol/acp.d.ts.map +1 -1
  122. package/dist/protocol/acp.js +7 -170
  123. package/dist/protocol/acp.js.map +1 -1
  124. package/dist/types.d.ts +32 -0
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js.map +1 -1
  127. package/package.json +13 -2
  128. package/src/adapters/1688/item.yaml +1 -0
  129. package/src/adapters/1688/store.yaml +1 -0
  130. package/src/adapters/36kr/article.yaml +1 -0
  131. package/src/adapters/amazon/bestsellers.yaml +2 -0
  132. package/src/adapters/amazon/movers-shakers.yaml +2 -0
  133. package/src/adapters/amazon/new-releases.yaml +2 -0
  134. package/src/adapters/amazon/rankings.yaml +1 -0
  135. package/src/adapters/apple-podcasts/episodes.yaml +1 -0
  136. package/src/adapters/arxiv/paper.yaml +1 -0
  137. package/src/adapters/audacity/convert.yaml +1 -0
  138. package/src/adapters/audacity/effects.yaml +1 -0
  139. package/src/adapters/audacity/info.yaml +1 -0
  140. package/src/adapters/audacity/mix.yaml +1 -0
  141. package/src/adapters/audacity/normalize.yaml +1 -0
  142. package/src/adapters/audacity/spectrogram.yaml +1 -0
  143. package/src/adapters/audacity/split-channels.yaml +1 -0
  144. package/src/adapters/audacity/trim.yaml +1 -0
  145. package/src/adapters/bilibili/favorites.yaml +1 -0
  146. package/src/adapters/blender/animation.yaml +2 -0
  147. package/src/adapters/blender/camera.yaml +1 -0
  148. package/src/adapters/blender/convert.yaml +1 -0
  149. package/src/adapters/blender/export.yaml +1 -0
  150. package/src/adapters/blender/import.yaml +1 -0
  151. package/src/adapters/blender/info.yaml +1 -0
  152. package/src/adapters/blender/lighting.yaml +1 -0
  153. package/src/adapters/blender/materials.yaml +1 -0
  154. package/src/adapters/blender/objects.yaml +1 -0
  155. package/src/adapters/blender/render.yaml +2 -0
  156. package/src/adapters/blender/scene.yaml +1 -0
  157. package/src/adapters/blender/screenshot.yaml +2 -0
  158. package/src/adapters/blender/script.yaml +1 -0
  159. package/src/adapters/boss/detail.yaml +2 -0
  160. package/src/adapters/cloudcompare/info.yaml +1 -0
  161. package/src/adapters/coupang/add-to-cart.yaml +1 -0
  162. package/src/adapters/ctrip/search.yaml +1 -0
  163. package/src/adapters/douban/download.yaml +1 -0
  164. package/src/adapters/douban/photos.yaml +1 -0
  165. package/src/adapters/douban/subject.yaml +2 -0
  166. package/src/adapters/doubao-web/detail.yaml +1 -0
  167. package/src/adapters/doubao-web/meeting-summary.yaml +1 -0
  168. package/src/adapters/doubao-web/meeting-transcript.yaml +1 -0
  169. package/src/adapters/drawio/export.yaml +2 -0
  170. package/src/adapters/facebook/join-group.yaml +2 -0
  171. package/src/adapters/ffmpeg/compress.yaml +2 -0
  172. package/src/adapters/ffmpeg/concat.yaml +1 -0
  173. package/src/adapters/ffmpeg/convert.yaml +1 -0
  174. package/src/adapters/ffmpeg/extract-audio.yaml +2 -0
  175. package/src/adapters/ffmpeg/gif.yaml +2 -0
  176. package/src/adapters/ffmpeg/normalize.yaml +2 -0
  177. package/src/adapters/ffmpeg/probe.yaml +1 -0
  178. package/src/adapters/ffmpeg/resize.yaml +2 -0
  179. package/src/adapters/ffmpeg/subtitles.yaml +2 -0
  180. package/src/adapters/ffmpeg/thumbnail.yaml +2 -0
  181. package/src/adapters/ffmpeg/trim.yaml +2 -0
  182. package/src/adapters/freecad/assembly.yaml +1 -0
  183. package/src/adapters/freecad/bom.yaml +1 -0
  184. package/src/adapters/freecad/boolean.yaml +1 -0
  185. package/src/adapters/freecad/check.yaml +1 -0
  186. package/src/adapters/freecad/convert.yaml +1 -0
  187. package/src/adapters/freecad/export-stl.yaml +1 -0
  188. package/src/adapters/freecad/import.yaml +1 -0
  189. package/src/adapters/freecad/info.yaml +1 -0
  190. package/src/adapters/freecad/macro.yaml +1 -0
  191. package/src/adapters/freecad/measure.yaml +1 -0
  192. package/src/adapters/freecad/mesh.yaml +1 -0
  193. package/src/adapters/freecad/properties.yaml +1 -0
  194. package/src/adapters/freecad/render.yaml +1 -0
  195. package/src/adapters/freecad/section.yaml +1 -0
  196. package/src/adapters/freecad/sketch.yaml +1 -0
  197. package/src/adapters/gimp/adjust.yaml +1 -0
  198. package/src/adapters/gimp/batch.yaml +1 -0
  199. package/src/adapters/gimp/convert.yaml +1 -0
  200. package/src/adapters/gimp/crop.yaml +1 -0
  201. package/src/adapters/gimp/filter.yaml +1 -0
  202. package/src/adapters/gimp/flip.yaml +1 -0
  203. package/src/adapters/gimp/info.yaml +1 -0
  204. package/src/adapters/gimp/layers.yaml +1 -0
  205. package/src/adapters/gimp/merge-layers.yaml +1 -0
  206. package/src/adapters/gimp/resize.yaml +1 -0
  207. package/src/adapters/gimp/rotate.yaml +1 -0
  208. package/src/adapters/gimp/text.yaml +1 -0
  209. package/src/adapters/godot/scene-export.yaml +1 -0
  210. package/src/adapters/hackernews/comments.yaml +1 -0
  211. package/src/adapters/hackernews/item.yaml +1 -0
  212. package/src/adapters/hf/top.yaml +1 -0
  213. package/src/adapters/imagemagick/composite.yaml +1 -0
  214. package/src/adapters/imagemagick/convert.yaml +1 -0
  215. package/src/adapters/imagemagick/identify.yaml +1 -0
  216. package/src/adapters/imagemagick/montage.yaml +1 -0
  217. package/src/adapters/imagemagick/resize.yaml +1 -0
  218. package/src/adapters/imdb/person.yaml +1 -0
  219. package/src/adapters/imdb/reviews.yaml +1 -0
  220. package/src/adapters/imdb/title.yaml +1 -0
  221. package/src/adapters/inkscape/convert.yaml +2 -0
  222. package/src/adapters/inkscape/export.yaml +2 -0
  223. package/src/adapters/inkscape/optimize.yaml +2 -0
  224. package/src/adapters/instagram/stories.yaml +1 -0
  225. package/src/adapters/jd/item.yaml +1 -0
  226. package/src/adapters/jike/post.yaml +2 -0
  227. package/src/adapters/jike/topic.yaml +2 -0
  228. package/src/adapters/kdenlive/info.yaml +1 -0
  229. package/src/adapters/kdenlive/render.yaml +1 -0
  230. package/src/adapters/krita/batch.yaml +1 -0
  231. package/src/adapters/krita/convert.yaml +1 -0
  232. package/src/adapters/krita/export.yaml +1 -0
  233. package/src/adapters/krita/info.yaml +1 -0
  234. package/src/adapters/libreoffice/convert.yaml +1 -0
  235. package/src/adapters/libreoffice/print.yaml +1 -0
  236. package/src/adapters/linear/issue-update.yaml +1 -0
  237. package/src/adapters/linux-do/category.yaml +1 -0
  238. package/src/adapters/linux-do/topic.yaml +1 -0
  239. package/src/adapters/macos/calendar-create.yaml +1 -0
  240. package/src/adapters/macos/finder-copy.yaml +1 -0
  241. package/src/adapters/macos/finder-move.yaml +1 -0
  242. package/src/adapters/macos/finder-new-folder.yaml +1 -0
  243. package/src/adapters/macos/finder-tags.yaml +1 -0
  244. package/src/adapters/macos/open.yaml +2 -0
  245. package/src/adapters/macos/screen-recording.yaml +1 -0
  246. package/src/adapters/macos/screenshot.yaml +1 -0
  247. package/src/adapters/macos/spotlight.yaml +1 -0
  248. package/src/adapters/macos/wallpaper.yaml +1 -0
  249. package/src/adapters/medium/article.yaml +1 -0
  250. package/src/adapters/mermaid/render.yaml +1 -0
  251. package/src/adapters/minimax/tts.yaml +1 -0
  252. package/src/adapters/motion-studio/component-get.yaml +1 -0
  253. package/src/adapters/musescore/convert.yaml +2 -0
  254. package/src/adapters/musescore/export.yaml +2 -0
  255. package/src/adapters/musescore/info.yaml +1 -0
  256. package/src/adapters/musescore/instruments.yaml +1 -0
  257. package/src/adapters/musescore/transpose.yaml +1 -0
  258. package/src/adapters/netease-music/playlist.yaml +1 -0
  259. package/src/adapters/netease-music/top.yaml +1 -0
  260. package/src/adapters/notebooklm/get.yaml +1 -0
  261. package/src/adapters/notebooklm/history.yaml +1 -0
  262. package/src/adapters/notebooklm/note-list.yaml +1 -0
  263. package/src/adapters/notebooklm/notes-get.yaml +1 -0
  264. package/src/adapters/notebooklm/open.yaml +1 -0
  265. package/src/adapters/notebooklm/source-fulltext.yaml +1 -0
  266. package/src/adapters/notebooklm/source-get.yaml +1 -0
  267. package/src/adapters/notebooklm/source-guide.yaml +1 -0
  268. package/src/adapters/notebooklm/source-list.yaml +1 -0
  269. package/src/adapters/notebooklm/summary.yaml +1 -0
  270. package/src/adapters/novita/status.yaml +1 -0
  271. package/src/adapters/obs/screenshot.yaml +1 -0
  272. package/src/adapters/obsidian/open.yaml +1 -0
  273. package/src/adapters/ones/login.yaml +1 -0
  274. package/src/adapters/ones/task.yaml +1 -0
  275. package/src/adapters/pandoc/convert.yaml +1 -0
  276. package/src/adapters/paperreview/feedback.yaml +2 -0
  277. package/src/adapters/paperreview/review.yaml +2 -0
  278. package/src/adapters/paperreview/submit.yaml +2 -0
  279. package/src/adapters/pixiv/detail.yaml +1 -0
  280. package/src/adapters/pixiv/download.yaml +2 -0
  281. package/src/adapters/quark/ls.yaml +1 -0
  282. package/src/adapters/reddit/comments.yaml +2 -0
  283. package/src/adapters/renderdoc/capture-list.yaml +1 -0
  284. package/src/adapters/renderdoc/frame-export.yaml +1 -0
  285. package/src/adapters/reuters/article.yaml +2 -0
  286. package/src/adapters/shotcut/info.yaml +1 -0
  287. package/src/adapters/shotcut/render.yaml +1 -0
  288. package/src/adapters/sinablog/article.yaml +1 -0
  289. package/src/adapters/sinablog/user.yaml +1 -0
  290. package/src/adapters/sketch/artboards.yaml +1 -0
  291. package/src/adapters/sketch/export.yaml +1 -0
  292. package/src/adapters/sketch/symbols.yaml +1 -0
  293. package/src/adapters/smzdm/article.yaml +1 -0
  294. package/src/adapters/stackoverflow/question.yaml +1 -0
  295. package/src/adapters/stagehand/wrap-observe.yaml +1 -0
  296. package/src/adapters/steam/wishlist.yaml +1 -0
  297. package/src/adapters/tieba/read.yaml +1 -0
  298. package/src/adapters/tiktok/comment.yaml +1 -0
  299. package/src/adapters/tiktok/like.yaml +1 -0
  300. package/src/adapters/tiktok/save.yaml +1 -0
  301. package/src/adapters/tiktok/unlike.yaml +1 -0
  302. package/src/adapters/tiktok/unsave.yaml +1 -0
  303. package/src/adapters/twitch/streams.yaml +1 -0
  304. package/src/adapters/twitter/quotes.yaml +2 -0
  305. package/src/adapters/twitter/retweets.yaml +1 -0
  306. package/src/adapters/v2ex/replies.yaml +1 -0
  307. package/src/adapters/v2ex/topic.yaml +1 -0
  308. package/src/adapters/vscode/install-ext.yaml +1 -0
  309. package/src/adapters/vscode/open.yaml +1 -0
  310. package/src/adapters/web/read.yaml +1 -0
  311. package/src/adapters/weibo/comments.yaml +1 -0
  312. package/src/adapters/weibo/post.yaml +1 -0
  313. package/src/adapters/weixin/download.yaml +1 -0
  314. package/src/adapters/wiremock/create-stub.yaml +2 -0
  315. package/src/adapters/wiremock/delete-stub.yaml +1 -0
  316. package/src/adapters/wiremock/verify.yaml +1 -0
  317. package/src/adapters/xianyu/item.yaml +1 -0
  318. package/src/adapters/xiaoe/catalog.yaml +1 -0
  319. package/src/adapters/xiaoe/content.yaml +1 -0
  320. package/src/adapters/xiaoe/detail.yaml +1 -0
  321. package/src/adapters/xiaoe/play-url.yaml +1 -0
  322. package/src/adapters/xiaoyuzhou/podcast.yaml +2 -0
  323. package/src/adapters/yollomi/edit.yaml +2 -0
  324. package/src/adapters/yollomi/remove-bg.yaml +2 -0
  325. package/src/adapters/yollomi/restore.yaml +2 -0
  326. package/src/adapters/yollomi/upload.yaml +2 -0
  327. package/src/adapters/yollomi/upscale.yaml +2 -0
  328. package/src/adapters/youtube/playlist.yaml +1 -0
  329. package/src/adapters/yt-dlp/download.yaml +2 -0
  330. package/src/adapters/yt-dlp/extract-audio.yaml +2 -0
  331. package/src/adapters/yt-dlp/info.yaml +1 -0
  332. package/src/adapters/zhihu/answer.yaml +1 -0
  333. package/src/adapters/zhihu/answers.yaml +2 -0
  334. package/src/adapters/zhihu/article.yaml +1 -0
  335. package/src/adapters/zhihu/articles.yaml +2 -0
  336. package/src/adapters/zhihu/collections.yaml +2 -0
  337. package/src/adapters/zhihu/columns.yaml +2 -0
  338. package/src/adapters/zhihu/comment.yaml +1 -0
  339. package/src/adapters/zhihu/download.yaml +1 -0
  340. package/src/adapters/zhihu/followers.yaml +2 -0
  341. package/src/adapters/zhihu/following.yaml +2 -0
  342. package/src/adapters/zhihu/pins.yaml +2 -0
  343. package/src/adapters/zhihu/question.yaml +1 -0
  344. package/src/adapters/zhihu/topic.yaml +1 -0
  345. package/src/adapters/zhihu/topics.yaml +1 -0
  346. package/src/adapters/zhihu/user.yaml +2 -0
  347. package/src/adapters/zoom/join.yaml +1 -0
  348. package/src/adapters/zsxq/search.yaml +1 -0
  349. package/src/adapters/zsxq/topic.yaml +1 -0
  350. package/src/adapters/zsxq/topics.yaml +1 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * MCP tool-definition builders.
3
+ *
4
+ * Three build modes:
5
+ * 1. `buildDefaultTools()` — 4 meta-tools (~200 tokens handshake)
6
+ * 2. `buildExpandedTools()` — one tool per adapter command (~160K tokens)
7
+ * 3. `buildDeferredTools()` — stubs for ToolSearch/deferred clients (~8K)
8
+ *
9
+ * Extracted from `server.ts` to keep that file's responsibility limited to
10
+ * JSON-RPC transport wiring.
11
+ */
12
+ import { getAllAdapters } from "../registry.js";
13
+ import { buildInputSchema, buildOutputSchema, buildToolName, truncateDescription, } from "./schema.js";
14
+ /**
15
+ * Reverse-lookup registry for expanded-mode tool calls. Maps the normalized
16
+ * tool name to the resolved adapter + original command name.
17
+ */
18
+ export const expandedRegistry = new Map();
19
+ export const DEFAULT_TOOL_NAMES = new Set([
20
+ "unicli_run",
21
+ "unicli_list",
22
+ "unicli_search",
23
+ "unicli_explore",
24
+ "unicli_discover",
25
+ ]);
26
+ export function buildDefaultTools() {
27
+ return [
28
+ {
29
+ name: "unicli_run",
30
+ description: "Execute any Uni-CLI command. Returns JSON results.",
31
+ inputSchema: {
32
+ type: "object",
33
+ properties: {
34
+ site: {
35
+ type: "string",
36
+ description: "Site name (e.g. hackernews, github, bilibili)",
37
+ },
38
+ command: {
39
+ type: "string",
40
+ description: "Command to run (e.g. top, search, hot)",
41
+ },
42
+ args: {
43
+ type: "object",
44
+ description: 'Key-value arguments (e.g. {"query": "ai", "limit": 10})',
45
+ additionalProperties: true,
46
+ },
47
+ },
48
+ required: ["site", "command"],
49
+ },
50
+ _meta: {
51
+ "anthropic/searchHint": "Execute CLI commands on 200+ websites and desktop apps. Run adapters by site and command name.",
52
+ },
53
+ annotations: {
54
+ readOnlyHint: false,
55
+ destructiveHint: false,
56
+ idempotentHint: false,
57
+ openWorldHint: true,
58
+ },
59
+ },
60
+ {
61
+ name: "unicli_list",
62
+ description: "List available commands. Filter by site or adapter type.",
63
+ inputSchema: {
64
+ type: "object",
65
+ properties: {
66
+ site: {
67
+ type: "string",
68
+ description: "Filter by site name (partial match)",
69
+ },
70
+ type: {
71
+ type: "string",
72
+ description: "Filter by adapter type",
73
+ enum: ["web-api", "desktop", "browser", "bridge", "service"],
74
+ },
75
+ },
76
+ },
77
+ _meta: {
78
+ "anthropic/searchHint": "Browse available Uni-CLI sites and commands. Filter by site name or adapter type.",
79
+ "anthropic/alwaysLoad": true,
80
+ },
81
+ annotations: {
82
+ readOnlyHint: true,
83
+ idempotentHint: true,
84
+ openWorldHint: false,
85
+ },
86
+ },
87
+ {
88
+ name: "unicli_search",
89
+ description: "Search 200+ sites and 956 commands by intent. Bilingual (EN/ZH). Returns top matches with usage examples.",
90
+ inputSchema: {
91
+ type: "object",
92
+ properties: {
93
+ query: {
94
+ type: "string",
95
+ description: "Natural language intent (e.g. 'download video', '推特热门', 'stock price')",
96
+ },
97
+ limit: {
98
+ type: "integer",
99
+ description: "Max results (default 5)",
100
+ default: 5,
101
+ },
102
+ },
103
+ required: ["query"],
104
+ },
105
+ _meta: {
106
+ "anthropic/searchHint": "Find CLI commands by intent. Semantic search across websites, desktop apps, macOS. Bilingual Chinese/English.",
107
+ "anthropic/alwaysLoad": true,
108
+ },
109
+ annotations: {
110
+ readOnlyHint: true,
111
+ idempotentHint: true,
112
+ openWorldHint: false,
113
+ },
114
+ },
115
+ {
116
+ name: "unicli_explore",
117
+ description: "Auto-discover API endpoints for any URL. Navigates the page, captures network requests, generates YAML adapters.",
118
+ inputSchema: {
119
+ type: "object",
120
+ properties: {
121
+ url: { type: "string", description: "Website URL to explore" },
122
+ goal: {
123
+ type: "string",
124
+ description: "Capability to find (e.g. 'search', 'hot', 'feed')",
125
+ },
126
+ },
127
+ required: ["url"],
128
+ },
129
+ _meta: {
130
+ "anthropic/searchHint": "Auto-discover API endpoints for any website URL. Generate YAML adapters for new sites.",
131
+ },
132
+ annotations: {
133
+ readOnlyHint: false,
134
+ destructiveHint: false,
135
+ idempotentHint: false,
136
+ openWorldHint: true,
137
+ },
138
+ },
139
+ ];
140
+ }
141
+ /**
142
+ * Build the expanded tool set: 4 default meta-tools + one full tool per
143
+ * adapter command. Clients see the complete Uni-CLI surface area.
144
+ *
145
+ * Token cost: ~160K for 956 commands. Use only when the client can handle it.
146
+ */
147
+ export function buildExpandedTools() {
148
+ const tools = [];
149
+ tools.push(...buildDefaultTools());
150
+ expandedRegistry.clear();
151
+ const seen = new Set(DEFAULT_TOOL_NAMES);
152
+ for (const adapter of getAllAdapters()) {
153
+ for (const [cmdName, cmd] of Object.entries(adapter.commands)) {
154
+ const rawDesc = cmd.description?.trim() ||
155
+ adapter.description?.trim() ||
156
+ `${cmdName} for ${adapter.name}`;
157
+ const toolName = buildToolName(adapter.name, cmdName);
158
+ if (seen.has(toolName)) {
159
+ process.stderr.write(`unicli MCP: tool name collision: ${toolName} — shadowing ${adapter.name}/${cmdName}\n`);
160
+ continue;
161
+ }
162
+ seen.add(toolName);
163
+ expandedRegistry.set(toolName, { adapter, cmdName, cmd });
164
+ tools.push({
165
+ name: toolName,
166
+ description: truncateDescription(`[${adapter.name}] ${rawDesc}`),
167
+ inputSchema: buildInputSchema(cmd),
168
+ outputSchema: buildOutputSchema(cmd),
169
+ _meta: {
170
+ "anthropic/searchHint": `${adapter.name}: ${rawDesc}`,
171
+ },
172
+ annotations: {
173
+ readOnlyHint: true,
174
+ idempotentHint: true,
175
+ openWorldHint: true,
176
+ },
177
+ });
178
+ }
179
+ }
180
+ return tools;
181
+ }
182
+ /**
183
+ * Build deferred tool set: 4 default meta-tools with full schemas, plus
184
+ * lightweight stubs for all adapter commands (name + searchHint only,
185
+ * minimal inputSchema). Clients like Claude Code's ToolSearch can discover
186
+ * tools by searchHint and then call them — the handler resolves the full
187
+ * command at call time via the expandedRegistry.
188
+ *
189
+ * Token cost: ~8K (vs ~160K for expanded). 95% reduction.
190
+ */
191
+ export function buildDeferredTools() {
192
+ const tools = [];
193
+ tools.push(...buildDefaultTools());
194
+ expandedRegistry.clear();
195
+ const seen = new Set(DEFAULT_TOOL_NAMES);
196
+ for (const adapter of getAllAdapters()) {
197
+ for (const [cmdName, cmd] of Object.entries(adapter.commands)) {
198
+ const rawDesc = cmd.description?.trim() ||
199
+ adapter.description?.trim() ||
200
+ `${cmdName} for ${adapter.name}`;
201
+ const toolName = buildToolName(adapter.name, cmdName);
202
+ if (seen.has(toolName)) {
203
+ process.stderr.write(`unicli MCP: tool name collision: ${toolName} — shadowing ${adapter.name}/${cmdName}\n`);
204
+ continue;
205
+ }
206
+ seen.add(toolName);
207
+ // Register in the lookup table for runtime dispatch
208
+ expandedRegistry.set(toolName, { adapter, cmdName, cmd });
209
+ // Lightweight stub: name + searchHint + minimal schema.
210
+ // Full inputSchema is resolved at call time via expandedRegistry.
211
+ tools.push({
212
+ name: toolName,
213
+ description: truncateDescription(`[${adapter.name}] ${rawDesc}`),
214
+ inputSchema: {
215
+ type: "object",
216
+ properties: {
217
+ _args: {
218
+ type: "object",
219
+ description: "Command arguments (pass key-value pairs)",
220
+ additionalProperties: true,
221
+ },
222
+ },
223
+ },
224
+ _meta: {
225
+ "anthropic/searchHint": `${adapter.name}: ${rawDesc}`,
226
+ },
227
+ annotations: {
228
+ readOnlyHint: true,
229
+ idempotentHint: true,
230
+ openWorldHint: true,
231
+ },
232
+ });
233
+ }
234
+ }
235
+ return tools;
236
+ }
237
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,31 @@ export interface AgentContent {
23
23
  data?: string;
24
24
  uri?: string;
25
25
  }
26
+ /**
27
+ * HATEOAS action hint — a templated command the agent can run next, with
28
+ * typed parameter metadata (value / default / enum / description). Lets
29
+ * the response itself drive navigation without the agent having to
30
+ * reconstruct command shape from memory. Pattern from joelclaw.com
31
+ * "CLI Design for AI Agents" (2026-02).
32
+ */
33
+ export interface AgentNextActionParam {
34
+ /** Concrete value already filled in from the current response context. */
35
+ value?: string | number | boolean;
36
+ /** Default applied when the agent omits the flag entirely. */
37
+ default?: string | number | boolean;
38
+ /** Valid closed-set choices the agent must pick from. */
39
+ enum?: Array<string | number>;
40
+ /** What this parameter means. */
41
+ description?: string;
42
+ }
43
+ export interface AgentNextAction {
44
+ /** POSIX-style template (e.g. `unicli repair <site> <cmd>`) or literal command. */
45
+ command: string;
46
+ /** One-line description of when/why to run this. */
47
+ description: string;
48
+ /** Presence of `params` marks the `command` as a template to be filled. */
49
+ params?: Record<string, AgentNextActionParam>;
50
+ }
26
51
  /** Timing, pagination, and provenance metadata on every envelope. */
27
52
  export interface AgentMeta {
28
53
  duration_ms: number;
@@ -86,6 +111,8 @@ export interface AgentContext {
86
111
  pagination?: AgentMeta["pagination"];
87
112
  /** Set on the error path in format() — makeEnvelope ignores this field. */
88
113
  error?: AgentError;
114
+ /** Optional HATEOAS hints attached to the resulting envelope. */
115
+ next_actions?: AgentNextAction[];
89
116
  }
90
117
  /** Success arm of the discriminated union. */
91
118
  export interface AgentEnvelopeOk {
@@ -96,6 +123,7 @@ export interface AgentEnvelopeOk {
96
123
  data: unknown[] | Record<string, unknown>;
97
124
  error: null;
98
125
  content?: AgentContent[];
126
+ next_actions?: AgentNextAction[];
99
127
  }
100
128
  /** Error arm of the discriminated union. */
101
129
  export interface AgentEnvelopeErr {
@@ -106,6 +134,7 @@ export interface AgentEnvelopeErr {
106
134
  data: null;
107
135
  error: AgentError;
108
136
  content?: AgentContent[];
137
+ next_actions?: AgentNextAction[];
109
138
  }
110
139
  export type AgentEnvelope = AgentEnvelopeOk | AgentEnvelopeErr;
111
140
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,9 @@ export function makeEnvelope(ctx, data, content) {
67
67
  data,
68
68
  error: null,
69
69
  ...(content !== undefined && content.length > 0 ? { content } : {}),
70
+ ...(ctx.next_actions !== undefined && ctx.next_actions.length > 0
71
+ ? { next_actions: ctx.next_actions }
72
+ : {}),
70
73
  };
71
74
  }
72
75
  /** Build an error envelope. `data` is forced to null. */
@@ -85,6 +88,9 @@ export function makeError(ctx, err) {
85
88
  },
86
89
  data: null,
87
90
  error: err,
91
+ ...(ctx.next_actions !== undefined && ctx.next_actions.length > 0
92
+ ? { next_actions: ctx.next_actions }
93
+ : {}),
88
94
  };
89
95
  }
90
96
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Default HATEOAS `next_actions` hints. Every CLI response carries a small
3
+ * set of templates so the agent always has a navigable next step without
4
+ * re-reading docs. Agents read `params.<name>.value` / `.default` / `.enum`
5
+ * to fill templates instead of guessing flag syntax.
6
+ *
7
+ * Pattern from joelclaw.com "CLI Design for AI Agents" (2026-02), refined
8
+ * for Uni-CLI's self-repair contract so failure paths also suggest
9
+ * `unicli repair` + stdin-JSON channel switch.
10
+ */
11
+ import type { AgentNextAction } from "./envelope.js";
12
+ /** Hints shown alongside a successful result for site-<cmd>. */
13
+ export declare function defaultSuccessNextActions(site: string, cmdName: string, opts?: {
14
+ supportsPagination?: boolean;
15
+ }): AgentNextAction[];
16
+ /** Hints shown on the error path — biased toward repair + channel switch. */
17
+ export declare function defaultErrorNextActions(site: string, cmdName: string, errCode: string): AgentNextAction[];
18
+ //# sourceMappingURL=next-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-actions.d.ts","sourceRoot":"","sources":["../../src/output/next-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,eAAe,EAAE,CAyBnB;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,eAAe,EAAE,CAmCnB"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Default HATEOAS `next_actions` hints. Every CLI response carries a small
3
+ * set of templates so the agent always has a navigable next step without
4
+ * re-reading docs. Agents read `params.<name>.value` / `.default` / `.enum`
5
+ * to fill templates instead of guessing flag syntax.
6
+ *
7
+ * Pattern from joelclaw.com "CLI Design for AI Agents" (2026-02), refined
8
+ * for Uni-CLI's self-repair contract so failure paths also suggest
9
+ * `unicli repair` + stdin-JSON channel switch.
10
+ */
11
+ /** Hints shown alongside a successful result for site-<cmd>. */
12
+ export function defaultSuccessNextActions(site, cmdName, opts) {
13
+ const actions = [
14
+ {
15
+ command: `unicli describe ${site} ${cmdName}`,
16
+ description: "Inspect the command's JSON schema, channels, and example payload",
17
+ },
18
+ {
19
+ command: `unicli ${site} ${cmdName} --args-file <path.json>`,
20
+ description: "Re-run with a JSON payload from file (avoids shell-quote hell)",
21
+ params: {
22
+ path: {
23
+ description: "Absolute path to a JSON object file with command args",
24
+ },
25
+ },
26
+ },
27
+ ];
28
+ if (opts?.supportsPagination) {
29
+ actions.push({
30
+ command: `unicli ${site} ${cmdName} --cursor <next_cursor>`,
31
+ description: "Fetch the next page using meta.pagination.next_cursor",
32
+ });
33
+ }
34
+ return actions;
35
+ }
36
+ /** Hints shown on the error path — biased toward repair + channel switch. */
37
+ export function defaultErrorNextActions(site, cmdName, errCode) {
38
+ const actions = [
39
+ {
40
+ command: `unicli describe ${site} ${cmdName}`,
41
+ description: "Read the exact schema the command expects (often resolves invalid_input)",
42
+ },
43
+ ];
44
+ if (errCode === "invalid_input" ||
45
+ errCode === "selector_miss" ||
46
+ errCode === "parse_error") {
47
+ actions.push({
48
+ command: `echo '{...}' | unicli ${site} ${cmdName}`,
49
+ description: "Retry using stdin-JSON channel — payloads with quotes/emoji/JSON often fail the shell-args path",
50
+ });
51
+ }
52
+ if (errCode === "auth_required" || errCode === "not_authenticated") {
53
+ actions.push({
54
+ command: `unicli auth setup ${site}`,
55
+ description: "Save cookies / token for this site",
56
+ });
57
+ }
58
+ actions.push({
59
+ command: `unicli repair ${site} ${cmdName}`,
60
+ description: "Ask an agent to repair the adapter YAML if the upstream API has drifted",
61
+ });
62
+ return actions;
63
+ }
64
+ //# sourceMappingURL=next-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-actions.js","sourceRoot":"","sources":["../../src/output/next-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,gEAAgE;AAChE,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,OAAe,EACf,IAAuC;IAEvC,MAAM,OAAO,GAAsB;QACjC;YACE,OAAO,EAAE,mBAAmB,IAAI,IAAI,OAAO,EAAE;YAC7C,WAAW,EACT,kEAAkE;SACrE;QACD;YACE,OAAO,EAAE,UAAU,IAAI,IAAI,OAAO,0BAA0B;YAC5D,WAAW,EACT,gEAAgE;YAClE,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,WAAW,EAAE,uDAAuD;iBACrE;aACF;SACF;KACF,CAAC;IACF,IAAI,IAAI,EAAE,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,UAAU,IAAI,IAAI,OAAO,yBAAyB;YAC3D,WAAW,EAAE,uDAAuD;SACrE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,OAAe,EACf,OAAe;IAEf,MAAM,OAAO,GAAsB;QACjC;YACE,OAAO,EAAE,mBAAmB,IAAI,IAAI,OAAO,EAAE;YAC7C,WAAW,EACT,0EAA0E;SAC7E;KACF,CAAC;IAEF,IACE,OAAO,KAAK,eAAe;QAC3B,OAAO,KAAK,eAAe;QAC3B,OAAO,KAAK,aAAa,EACzB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,yBAAyB,IAAI,IAAI,OAAO,EAAE;YACnD,WAAW,EACT,iGAAiG;SACpG,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,KAAK,eAAe,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,qBAAqB,IAAI,EAAE;YACpC,WAAW,EAAE,oCAAoC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;QACX,OAAO,EAAE,iBAAiB,IAAI,IAAI,OAAO,EAAE;QAC3C,WAAW,EACT,yEAAyE;KAC5E,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Output-side projection helpers — `--select` / `--fields` / `--pluck` / `--pluck0`.
3
+ *
4
+ * These flags externalize the `| jq` / `| awk` step agents used to apply to
5
+ * `unicli` output. The kernel produces a raw `results[]` array; the CLI
6
+ * surface projects it *before* `format()` so every envelope format (json /
7
+ * yaml / md / csv / compact) benefits. MCP and ACP do NOT honor these —
8
+ * they speak JSON, agents project client-side.
9
+ *
10
+ * Precedence (highest wins when multiple flags are set):
11
+ * --pluck0 > --pluck > --select > --fields
12
+ *
13
+ * When multiple are set, a single stderr warning is emitted and only the
14
+ * highest-priority flag applies.
15
+ */
16
+ export interface ProjectionOptions {
17
+ /** JSONPath expression applied to the results array. */
18
+ select?: string;
19
+ /** Comma-separated column list (used when rendering tabular output). */
20
+ fields?: string;
21
+ /** Single field name → newline-delimited stream (wins over select/fields). */
22
+ pluck?: string;
23
+ /** Single field name → NUL-delimited stream (wins over pluck). */
24
+ pluck0?: string;
25
+ }
26
+ /** Thrown when `--select` fails to parse. Distinguishes user typo from empty match. */
27
+ export declare class ProjectionError extends Error {
28
+ readonly detail: {
29
+ flag: "select";
30
+ expression: string;
31
+ cause: string;
32
+ };
33
+ constructor(message: string, detail: {
34
+ flag: "select";
35
+ expression: string;
36
+ cause: string;
37
+ });
38
+ }
39
+ export interface ProjectionResult {
40
+ /** The results array after `--select` / `--pluck` / `--pluck0` have been applied. */
41
+ results: unknown[];
42
+ /** The columns override from `--fields` (undefined when unset). */
43
+ columns: string[] | undefined;
44
+ /** When true, caller must emit a plain-text newline-delimited stream. */
45
+ pluckMode: boolean;
46
+ /** When true, caller must emit a NUL-delimited stream (for `xargs -0`). */
47
+ pluck0Mode: boolean;
48
+ }
49
+ /**
50
+ * Render a single row as the stringified value of the plucked field. Nested
51
+ * objects serialize as JSON (one line, no indent) so agents can still pipe
52
+ * the stream into `xargs -I{} jq ...` if a column happens to be structured.
53
+ *
54
+ * Newlines in string values are collapsed to a single space — a raw `\n`
55
+ * would break every `while read` / `xargs -n1` loop downstream. Callers
56
+ * that need newline-preserving output should use `--format json` instead.
57
+ * Returns both the sanitized string and a flag indicating whether any
58
+ * `\r` or `\n` was stripped, so the caller can emit one debounced warning
59
+ * per invocation.
60
+ */
61
+ export declare function pluckRow(row: unknown, field: string): {
62
+ value: string;
63
+ sanitized: boolean;
64
+ };
65
+ /**
66
+ * Apply the three projection flags in priority order. Returns the
67
+ * post-projection `results`, the column override (for `--fields`), and
68
+ * a `pluckMode` flag that directs the caller to print a newline-delimited
69
+ * stream instead of a formatted envelope.
70
+ *
71
+ * A single stderr warning is emitted when more than one flag is set so
72
+ * the agent can see that a lower-priority flag was suppressed.
73
+ */
74
+ export declare function applyProjection(results: unknown[], options: ProjectionOptions, warn?: (msg: string) => void): ProjectionResult;
75
+ /**
76
+ * Render `results` as the `--pluck` plain-text stream. One row per line,
77
+ * field value stringified via `pluckRow`. No header, no trailing newline
78
+ * (the caller adds it through `console.log`).
79
+ *
80
+ * A single stderr warning is emitted if any value had embedded newlines
81
+ * stripped — agents that need newline-preserving output should use
82
+ * `--format json` instead. Warning is debounced: one line per invocation,
83
+ * not one line per row.
84
+ */
85
+ export declare function renderPluck(results: unknown[], field: string, warn?: (msg: string) => void): string;
86
+ /**
87
+ * Render `results` as the `--pluck0` NUL-delimited stream (xargs -0).
88
+ * Each value is followed by `\0`, including the last one — matches the
89
+ * convention of `find -print0` so downstream `xargs -0` counts rows
90
+ * correctly. Same newline-sanitization as `--pluck`.
91
+ */
92
+ export declare function renderPluck0(results: unknown[], field: string, warn?: (msg: string) => void): string;
93
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/output/projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE;QACtB,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf;gBALD,OAAO,EAAE,MAAM,EACC,MAAM,EAAE;QACtB,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf;CAKJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;CACrB;AAgGD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAUvC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAgD,GACtE,gBAAgB,CA4DlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAgD,GACtE,MAAM,CAWR;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAgD,GACtE,MAAM,CAYR"}