@zenalexa/unicli 0.225.0 → 0.225.2

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 (224) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +3 -3
  3. package/README.zh-CN.md +3 -3
  4. package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -1
  5. package/dist/adapters/_electron/desktop-shared.js +2 -1
  6. package/dist/adapters/_electron/desktop-shared.js.map +1 -1
  7. package/dist/adapters/_electron/shared.d.ts +6 -0
  8. package/dist/adapters/_electron/shared.d.ts.map +1 -1
  9. package/dist/adapters/_electron/shared.js +9 -0
  10. package/dist/adapters/_electron/shared.js.map +1 -1
  11. package/dist/adapters/antigravity/extra.js +4 -1
  12. package/dist/adapters/antigravity/extra.js.map +1 -1
  13. package/dist/adapters/chatwise/extra.js +4 -1
  14. package/dist/adapters/chatwise/extra.js.map +1 -1
  15. package/dist/adapters/codex/codex.js +3 -1
  16. package/dist/adapters/codex/codex.js.map +1 -1
  17. package/dist/adapters/codex/extra.js +4 -1
  18. package/dist/adapters/codex/extra.js.map +1 -1
  19. package/dist/adapters/codex/projects.d.ts.map +1 -1
  20. package/dist/adapters/codex/projects.js +3 -1
  21. package/dist/adapters/codex/projects.js.map +1 -1
  22. package/dist/adapters/cursor/cursor.js +6 -1
  23. package/dist/adapters/cursor/cursor.js.map +1 -1
  24. package/dist/adapters/discord-app/discord-app.js +10 -1
  25. package/dist/adapters/discord-app/discord-app.js.map +1 -1
  26. package/dist/adapters/notion-app/notion-app.js +11 -1
  27. package/dist/adapters/notion-app/notion-app.js.map +1 -1
  28. package/dist/adapters/spotify/api.js +36 -6
  29. package/dist/adapters/spotify/api.js.map +1 -1
  30. package/dist/adapters/xiaohongshu/browser-state.d.ts +2 -1
  31. package/dist/adapters/xiaohongshu/browser-state.d.ts.map +1 -1
  32. package/dist/adapters/xiaohongshu/browser-state.js +56 -2
  33. package/dist/adapters/xiaohongshu/browser-state.js.map +1 -1
  34. package/dist/adapters/xiaohongshu/feed.d.ts +24 -0
  35. package/dist/adapters/xiaohongshu/feed.d.ts.map +1 -0
  36. package/dist/adapters/xiaohongshu/feed.js +82 -0
  37. package/dist/adapters/xiaohongshu/feed.js.map +1 -0
  38. package/dist/browser/cdp-client.d.ts +5 -1
  39. package/dist/browser/cdp-client.d.ts.map +1 -1
  40. package/dist/browser/cdp-client.js +24 -16
  41. package/dist/browser/cdp-client.js.map +1 -1
  42. package/dist/browser/daemon.js +29 -7
  43. package/dist/browser/daemon.js.map +1 -1
  44. package/dist/browser/launcher.d.ts.map +1 -1
  45. package/dist/browser/launcher.js +22 -8
  46. package/dist/browser/launcher.js.map +1 -1
  47. package/dist/browser/local-profiles.d.ts +2 -0
  48. package/dist/browser/local-profiles.d.ts.map +1 -1
  49. package/dist/browser/local-profiles.js +42 -2
  50. package/dist/browser/local-profiles.js.map +1 -1
  51. package/dist/browser/page.d.ts +2 -2
  52. package/dist/browser/page.d.ts.map +1 -1
  53. package/dist/browser/page.js +2 -2
  54. package/dist/browser/page.js.map +1 -1
  55. package/dist/browser/protocol.d.ts +13 -1
  56. package/dist/browser/protocol.d.ts.map +1 -1
  57. package/dist/browser/protocol.js +5 -0
  58. package/dist/browser/protocol.js.map +1 -1
  59. package/dist/commands/browser/actions.d.ts.map +1 -1
  60. package/dist/commands/browser/actions.js +428 -5
  61. package/dist/commands/browser/actions.js.map +1 -1
  62. package/dist/commands/browser/index.d.ts.map +1 -1
  63. package/dist/commands/browser/index.js +26 -4
  64. package/dist/commands/browser/index.js.map +1 -1
  65. package/dist/commands/compute.js +12 -1
  66. package/dist/commands/compute.js.map +1 -1
  67. package/dist/commands/do.d.ts +15 -13
  68. package/dist/commands/do.d.ts.map +1 -1
  69. package/dist/commands/do.js +36 -21
  70. package/dist/commands/do.js.map +1 -1
  71. package/dist/commands/schema.d.ts.map +1 -1
  72. package/dist/commands/schema.js +22 -0
  73. package/dist/commands/schema.js.map +1 -1
  74. package/dist/commands/search.d.ts.map +1 -1
  75. package/dist/commands/search.js +14 -3
  76. package/dist/commands/search.js.map +1 -1
  77. package/dist/compute/contracts.d.ts +55 -0
  78. package/dist/compute/contracts.d.ts.map +1 -0
  79. package/dist/compute/contracts.js +487 -0
  80. package/dist/compute/contracts.js.map +1 -0
  81. package/dist/discovery/aliases.d.ts +8 -1
  82. package/dist/discovery/aliases.d.ts.map +1 -1
  83. package/dist/discovery/aliases.js +151 -20
  84. package/dist/discovery/aliases.js.map +1 -1
  85. package/dist/discovery/core-catalog.d.ts.map +1 -1
  86. package/dist/discovery/core-catalog.js +39 -67
  87. package/dist/discovery/core-catalog.js.map +1 -1
  88. package/dist/discovery/intents.d.ts +32 -4
  89. package/dist/discovery/intents.d.ts.map +1 -1
  90. package/dist/discovery/intents.js +192 -3
  91. package/dist/discovery/intents.js.map +1 -1
  92. package/dist/discovery/loader.d.ts.map +1 -1
  93. package/dist/discovery/loader.js +3 -0
  94. package/dist/discovery/loader.js.map +1 -1
  95. package/dist/discovery/macos-dynamic.d.ts +1 -0
  96. package/dist/discovery/macos-dynamic.d.ts.map +1 -1
  97. package/dist/discovery/macos-dynamic.js +20 -1
  98. package/dist/discovery/macos-dynamic.js.map +1 -1
  99. package/dist/discovery/search.d.ts.map +1 -1
  100. package/dist/discovery/search.js +21 -5
  101. package/dist/discovery/search.js.map +1 -1
  102. package/dist/engine/browser/evidence.d.ts +34 -1
  103. package/dist/engine/browser/evidence.d.ts.map +1 -1
  104. package/dist/engine/browser/evidence.js +141 -6
  105. package/dist/engine/browser/evidence.js.map +1 -1
  106. package/dist/engine/kernel/stages.d.ts.map +1 -1
  107. package/dist/engine/kernel/stages.js +14 -4
  108. package/dist/engine/kernel/stages.js.map +1 -1
  109. package/dist/engine/objective/catalog.d.ts +23 -0
  110. package/dist/engine/objective/catalog.d.ts.map +1 -0
  111. package/dist/engine/objective/catalog.js +42 -0
  112. package/dist/engine/objective/catalog.js.map +1 -0
  113. package/dist/engine/objective/delivery.d.ts +18 -0
  114. package/dist/engine/objective/delivery.d.ts.map +1 -0
  115. package/dist/engine/objective/delivery.js +64 -0
  116. package/dist/engine/objective/delivery.js.map +1 -0
  117. package/dist/engine/objective/index.d.ts +20 -0
  118. package/dist/engine/objective/index.d.ts.map +1 -0
  119. package/dist/engine/objective/index.js +20 -0
  120. package/dist/engine/objective/index.js.map +1 -0
  121. package/dist/engine/objective/media-playback.d.ts +17 -0
  122. package/dist/engine/objective/media-playback.d.ts.map +1 -0
  123. package/dist/engine/objective/media-playback.js +186 -0
  124. package/dist/engine/objective/media-playback.js.map +1 -0
  125. package/dist/engine/objective/output.d.ts +20 -0
  126. package/dist/engine/objective/output.d.ts.map +1 -0
  127. package/dist/engine/objective/output.js +88 -0
  128. package/dist/engine/objective/output.js.map +1 -0
  129. package/dist/engine/objective/planner.d.ts +17 -0
  130. package/dist/engine/objective/planner.d.ts.map +1 -0
  131. package/dist/engine/objective/planner.js +60 -0
  132. package/dist/engine/objective/planner.js.map +1 -0
  133. package/dist/engine/objective/types.d.ts +66 -0
  134. package/dist/engine/objective/types.d.ts.map +1 -0
  135. package/dist/engine/objective/types.js +16 -0
  136. package/dist/engine/objective/types.js.map +1 -0
  137. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  138. package/dist/engine/steps/browser-helpers.js +34 -0
  139. package/dist/engine/steps/browser-helpers.js.map +1 -1
  140. package/dist/engine/steps/fetch-text.d.ts.map +1 -1
  141. package/dist/engine/steps/fetch-text.js +2 -2
  142. package/dist/engine/steps/fetch-text.js.map +1 -1
  143. package/dist/engine/steps/fetch.d.ts +1 -0
  144. package/dist/engine/steps/fetch.d.ts.map +1 -1
  145. package/dist/engine/steps/fetch.js +24 -4
  146. package/dist/engine/steps/fetch.js.map +1 -1
  147. package/dist/fast-path/handlers/discovery.d.ts +5 -5
  148. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  149. package/dist/fast-path/handlers/discovery.js +61 -8
  150. package/dist/fast-path/handlers/discovery.js.map +1 -1
  151. package/dist/fast-path/render.d.ts +2 -0
  152. package/dist/fast-path/render.d.ts.map +1 -1
  153. package/dist/fast-path/render.js +9 -0
  154. package/dist/fast-path/render.js.map +1 -1
  155. package/dist/manifest-compact.txt +3 -2
  156. package/dist/manifest.json +215 -17
  157. package/dist/mcp/handler.d.ts +2 -16
  158. package/dist/mcp/handler.d.ts.map +1 -1
  159. package/dist/mcp/handler.js.map +1 -1
  160. package/dist/mcp/http-transport.d.ts +7 -1
  161. package/dist/mcp/http-transport.d.ts.map +1 -1
  162. package/dist/mcp/http-transport.js +20 -1
  163. package/dist/mcp/http-transport.js.map +1 -1
  164. package/dist/mcp/jsonrpc.d.ts +27 -0
  165. package/dist/mcp/jsonrpc.d.ts.map +1 -0
  166. package/dist/mcp/jsonrpc.js +12 -0
  167. package/dist/mcp/jsonrpc.js.map +1 -0
  168. package/dist/mcp/origin-guard.d.ts +26 -0
  169. package/dist/mcp/origin-guard.d.ts.map +1 -0
  170. package/dist/mcp/origin-guard.js +42 -0
  171. package/dist/mcp/origin-guard.js.map +1 -0
  172. package/dist/mcp/profiles/computer-use.d.ts.map +1 -1
  173. package/dist/mcp/profiles/computer-use.js +30 -270
  174. package/dist/mcp/profiles/computer-use.js.map +1 -1
  175. package/dist/mcp/streamable-http/session.d.ts +4 -22
  176. package/dist/mcp/streamable-http/session.d.ts.map +1 -1
  177. package/dist/mcp/streamable-http/session.js +4 -24
  178. package/dist/mcp/streamable-http/session.js.map +1 -1
  179. package/dist/mcp/tools.d.ts.map +1 -1
  180. package/dist/mcp/tools.js +74 -54
  181. package/dist/mcp/tools.js.map +1 -1
  182. package/dist/output/envelope.d.ts +2 -0
  183. package/dist/output/envelope.d.ts.map +1 -1
  184. package/dist/output/envelope.js.map +1 -1
  185. package/dist/output/error-map.d.ts +14 -0
  186. package/dist/output/error-map.d.ts.map +1 -1
  187. package/dist/output/error-map.js +20 -0
  188. package/dist/output/error-map.js.map +1 -1
  189. package/dist/transport/cascade.d.ts.map +1 -1
  190. package/dist/transport/cascade.js +77 -5
  191. package/dist/transport/cascade.js.map +1 -1
  192. package/dist/transport/refs.d.ts +33 -1
  193. package/dist/transport/refs.d.ts.map +1 -1
  194. package/dist/transport/refs.js +40 -1
  195. package/dist/transport/refs.js.map +1 -1
  196. package/package.json +3 -1
  197. package/server.json +2 -2
  198. package/skills/unicli/SKILL.md +1 -1
  199. package/skills/unicli-claude-code/SKILL.md +1 -1
  200. package/skills/unicli-hermes/SKILL.md +1 -1
  201. package/src/adapters/_electron/desktop-shared.ts +5 -1
  202. package/src/adapters/_electron/shared.ts +15 -0
  203. package/src/adapters/antigravity/extra.ts +10 -1
  204. package/src/adapters/chatwise/extra.ts +10 -1
  205. package/src/adapters/codex/codex.ts +6 -0
  206. package/src/adapters/codex/extra.ts +10 -1
  207. package/src/adapters/codex/projects.ts +9 -1
  208. package/src/adapters/cursor/cursor.ts +9 -0
  209. package/src/adapters/defuddle/read.yaml +30 -0
  210. package/src/adapters/discord-app/discord-app.ts +16 -1
  211. package/src/adapters/jina/read.yaml +30 -0
  212. package/src/adapters/macos/brightness.yaml +6 -3
  213. package/src/adapters/macos/calendar-list.yaml +9 -11
  214. package/src/adapters/macos/calendar-today.yaml +1 -1
  215. package/src/adapters/macos/safari-url.yaml +8 -4
  216. package/src/adapters/maoyan/hot.yaml +1 -1
  217. package/src/adapters/markdown-new/read.yaml +50 -0
  218. package/src/adapters/notion-app/notion-app.ts +17 -1
  219. package/src/adapters/ollama-cloud/fetch.yaml +39 -0
  220. package/src/adapters/ollama-cloud/search.yaml +43 -0
  221. package/src/adapters/spotify/api.ts +54 -8
  222. package/src/adapters/weibo/trending.yaml +2 -0
  223. package/src/adapters/xiaohongshu/browser-state.ts +59 -2
  224. package/src/adapters/xiaohongshu/feed.ts +103 -0
@@ -11,6 +11,8 @@
11
11
  import chalk from "chalk";
12
12
  import { getAllAdapters, resolveCommand } from "../registry.js";
13
13
  import { ExitCode } from "../types.js";
14
+ import { buildCoreCommandContract } from "../core/command-contract.js";
15
+ import { getCoreDiscoveryCommand, listCoreDiscoveryCommands, } from "../discovery/core-catalog.js";
14
16
  import { buildInputSchema, buildOutputSchema, } from "../mcp/schema.js";
15
17
  import { format, detectFormat } from "../output/formatter.js";
16
18
  import { makeCtx } from "../output/envelope.js";
@@ -23,6 +25,16 @@ function buildCommandSchema(site, cmdName, cmd) {
23
25
  output: buildOutputSchema(cmd, "flat"),
24
26
  };
25
27
  }
28
+ function buildCoreCommandSchema(cmd) {
29
+ const contract = buildCoreCommandContract({ command: cmd });
30
+ return {
31
+ site: cmd.site,
32
+ command: cmd.command,
33
+ description: cmd.description,
34
+ input: contract.schemas.input,
35
+ output: { type: "object", properties: {}, additionalProperties: true },
36
+ };
37
+ }
26
38
  // ── Command registration ─────────────────────────────────────────────────
27
39
  export function registerSchemaCommand(program) {
28
40
  program
@@ -42,6 +54,9 @@ export function registerSchemaCommand(program) {
42
54
  schemas.push(buildCommandSchema(adapter.name, cmdName, cmd));
43
55
  }
44
56
  }
57
+ for (const coreCommand of listCoreDiscoveryCommands()) {
58
+ schemas.push(buildCoreCommandSchema(coreCommand));
59
+ }
45
60
  if (schemas.length === 0) {
46
61
  ctx.error = {
47
62
  code: "not_found",
@@ -69,6 +84,13 @@ export function registerSchemaCommand(program) {
69
84
  console.error(format(null, undefined, fmt, ctx));
70
85
  process.exit(ExitCode.USAGE_ERROR);
71
86
  }
87
+ const coreCommand = getCoreDiscoveryCommand(site, command);
88
+ if (coreCommand) {
89
+ const schema = buildCoreCommandSchema(coreCommand);
90
+ ctx.duration_ms = Date.now() - startedAt;
91
+ console.log(format(schema, undefined, fmt, ctx));
92
+ return;
93
+ }
72
94
  const resolved = resolveCommand(site, command);
73
95
  if (!resolved) {
74
96
  // Try to suggest similar commands
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D5D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmE5D"}
@@ -10,6 +10,8 @@
10
10
  import chalk from "chalk";
11
11
  import { search } from "../discovery/search.js";
12
12
  import { format, detectFormat } from "../output/formatter.js";
13
+ import { printErrorEnvelope } from "../output/error-writer.js";
14
+ import { emptySearchResultError } from "../output/error-map.js";
13
15
  export function registerSearchCommand(program) {
14
16
  program
15
17
  .command("search [query...]")
@@ -26,12 +28,21 @@ export function registerSearchCommand(program) {
26
28
  return;
27
29
  }
28
30
  const results = search(query, limit, { category: opts.category });
31
+ const fmt = detectFormat(program.opts().format);
29
32
  if (results.length === 0) {
30
- console.error(chalk.yellow(`No commands found for: ${[opts.category, query].filter(Boolean).join(" ")}`));
31
- process.exitCode = 66; // EX_EMPTY
33
+ const queryLabel = [opts.category, query].filter(Boolean).join(" ");
34
+ printErrorEnvelope({
35
+ fmt,
36
+ exitCode: 66, // EX_EMPTY
37
+ ctx: {
38
+ command: "core.search",
39
+ duration_ms: Date.now() - searchStarted,
40
+ surface: "web",
41
+ error: emptySearchResultError(queryLabel, query.replace(/"/g, "").trim()),
42
+ },
43
+ });
32
44
  return;
33
45
  }
34
- const fmt = detectFormat(program.opts().format);
35
46
  const rows = results.map((r) => ({
36
47
  command: `${r.site} ${r.command}`,
37
48
  description: r.description || `${r.command} for ${r.site}`,
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,oEAAoE,CACrE;SACA,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC;SAC7C,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CACL,CAAC,UAAoB,EAAE,IAA0C,EAAE,EAAE;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,kEAAkE,CACnE,CACF,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,MAAM,CACV,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7E,CACF,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,WAAW;YAClC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CACtB,OAAO,CAAC,IAAI,EAAE,CAAC,MAAkC,CAClD,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;YACjC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE;YAC1D,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAiB;YACxB,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;YACvC,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CACrE,CAAC;IACJ,CAAC,CACF,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @owner src/compute/contracts.ts
3
+ * @does Define the shared compute command and ref-provenance contract projected into CLI discovery, schema, and MCP.
4
+ * @needs none
5
+ * @feeds src/discovery/core-catalog.ts, src/mcp/profiles/computer-use.ts, src/transport/cascade.ts
6
+ * @breaks Drift here makes agents compile invalid computer-use calls or route refs to the wrong provider.
7
+ * @invariants Ref-consuming commands declare accepted namespaces in the same description used by describe/schema/MCP.
8
+ * @side-effects none
9
+ * @perf Static data and O(argument count) schema projection.
10
+ * @concurrency immutable constants.
11
+ * @test tests/unit/command-contract.test.ts, tests/unit/mcp/tools.test.ts, tests/unit/compute-cascade.test.ts
12
+ * @stability provisional
13
+ * @since 0.225.1
14
+ */
15
+ export type ComputeArgType = "str" | "int" | "float" | "bool";
16
+ export interface ComputeCommandArg {
17
+ readonly name: string;
18
+ readonly type?: ComputeArgType;
19
+ readonly default?: unknown;
20
+ readonly required?: boolean;
21
+ readonly positional?: boolean;
22
+ readonly choices?: readonly string[];
23
+ readonly description?: string;
24
+ }
25
+ export interface ComputeCommandContract {
26
+ readonly command: string;
27
+ readonly mcpSuffix: string;
28
+ readonly kind: string;
29
+ readonly description: string;
30
+ readonly args: readonly ComputeCommandArg[];
31
+ readonly readOnly?: boolean;
32
+ readonly channels?: Record<string, string>;
33
+ }
34
+ export interface ComputeJsonSchemaProperty {
35
+ type: string;
36
+ description?: string;
37
+ default?: unknown;
38
+ enum?: string[];
39
+ }
40
+ export interface ComputeJsonSchemaObject {
41
+ type: "object";
42
+ properties: Record<string, ComputeJsonSchemaProperty>;
43
+ required?: string[];
44
+ additionalProperties?: false;
45
+ }
46
+ export declare const COMPUTE_REF_ACCEPTED_NAMESPACES: readonly ["@e* aliases allocated by the latest Uni-CLI compute snapshot, find, observe, or capture result", "desktop-ax:* stable refs from the Uni-CLI macOS AX transport", "desktop-uia:* stable refs from the Uni-CLI Windows UIA transport", "desktop-atspi:* stable refs from the Uni-CLI Linux AT-SPI transport", "cdp-browser:* or cdp:* stable refs allocated by Uni-CLI compute CDP snapshots"];
47
+ export declare const COMPUTE_FOREIGN_REF_NAMESPACES: readonly ["olo:accessibility:* refs are OLo-owned and must be executed by OLo's accessibility provider", "browser-scoped DOM refs must be executed by the browser provider that created them"];
48
+ export declare const COMPUTE_REF_DESCRIPTION: string;
49
+ export declare const COMPUTE_COMMAND_CONTRACTS: readonly ComputeCommandContract[];
50
+ export declare function getComputeCommandContract(command: string): ComputeCommandContract | undefined;
51
+ export declare function getComputeCommandContractByMcpSuffix(suffix: string): ComputeCommandContract | undefined;
52
+ export declare function buildComputeInputSchema(args: readonly ComputeCommandArg[]): ComputeJsonSchemaObject;
53
+ export declare function isComputeStableRefNamespace(ref: string): boolean;
54
+ export declare function readForeignComputeRefOwner(ref: string): string | undefined;
55
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/compute/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,KAAK,CAAC;CAC9B;AAED,eAAO,MAAM,+BAA+B,yYAMlC,CAAC;AAEX,eAAO,MAAM,8BAA8B,gMAGjC,CAAC;AAEX,eAAO,MAAM,uBAAuB,QAIzB,CAAC;AAmEZ,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EA4V7D,CAAC;AAEX,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GACd,sBAAsB,GAAG,SAAS,CAIpC;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,MAAM,GACb,sBAAsB,GAAG,SAAS,CAIpC;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,iBAAiB,EAAE,GACjC,uBAAuB,CAqBzB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQhE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO1E"}
@@ -0,0 +1,487 @@
1
+ /**
2
+ * @owner src/compute/contracts.ts
3
+ * @does Define the shared compute command and ref-provenance contract projected into CLI discovery, schema, and MCP.
4
+ * @needs none
5
+ * @feeds src/discovery/core-catalog.ts, src/mcp/profiles/computer-use.ts, src/transport/cascade.ts
6
+ * @breaks Drift here makes agents compile invalid computer-use calls or route refs to the wrong provider.
7
+ * @invariants Ref-consuming commands declare accepted namespaces in the same description used by describe/schema/MCP.
8
+ * @side-effects none
9
+ * @perf Static data and O(argument count) schema projection.
10
+ * @concurrency immutable constants.
11
+ * @test tests/unit/command-contract.test.ts, tests/unit/mcp/tools.test.ts, tests/unit/compute-cascade.test.ts
12
+ * @stability provisional
13
+ * @since 0.225.1
14
+ */
15
+ export const COMPUTE_REF_ACCEPTED_NAMESPACES = [
16
+ "@e* aliases allocated by the latest Uni-CLI compute snapshot, find, observe, or capture result",
17
+ "desktop-ax:* stable refs from the Uni-CLI macOS AX transport",
18
+ "desktop-uia:* stable refs from the Uni-CLI Windows UIA transport",
19
+ "desktop-atspi:* stable refs from the Uni-CLI Linux AT-SPI transport",
20
+ "cdp-browser:* or cdp:* stable refs allocated by Uni-CLI compute CDP snapshots",
21
+ ];
22
+ export const COMPUTE_FOREIGN_REF_NAMESPACES = [
23
+ "olo:accessibility:* refs are OLo-owned and must be executed by OLo's accessibility provider",
24
+ "browser-scoped DOM refs must be executed by the browser provider that created them",
25
+ ];
26
+ export const COMPUTE_REF_DESCRIPTION = [
27
+ "Uni-CLI compute element ref.",
28
+ `Accepts ${COMPUTE_REF_ACCEPTED_NAMESPACES.join("; ")}.`,
29
+ `Does not accept ${COMPUTE_FOREIGN_REF_NAMESPACES.join("; ")}.`,
30
+ ].join(" ");
31
+ const APP_ARG = {
32
+ name: "app",
33
+ type: "str",
34
+ description: 'App name, bundle id, or process name, e.g. "Slack"',
35
+ };
36
+ const FOCUS_ARG = {
37
+ name: "focus",
38
+ type: "bool",
39
+ default: false,
40
+ description: "Focus the target app before the action.",
41
+ };
42
+ const OVERLAY_ARG = {
43
+ name: "overlay",
44
+ type: "bool",
45
+ default: false,
46
+ description: "Render the system-level virtual cursor HUD for this action.",
47
+ };
48
+ const REF_ARG = {
49
+ name: "ref",
50
+ type: "str",
51
+ required: true,
52
+ positional: true,
53
+ description: COMPUTE_REF_DESCRIPTION,
54
+ };
55
+ const SNAPSHOT_FORMAT_ARG = {
56
+ name: "format",
57
+ type: "str",
58
+ default: "compact",
59
+ choices: ["compact", "tree", "json"],
60
+ description: "Snapshot encoding for accessibility refs",
61
+ };
62
+ const MAX_DEPTH_ARG = {
63
+ name: "maxDepth",
64
+ type: "int",
65
+ default: 64,
66
+ description: "Maximum accessibility tree depth",
67
+ };
68
+ const ROLE_CHOICES = [
69
+ "button",
70
+ "input",
71
+ "textarea",
72
+ "text",
73
+ "menuitem",
74
+ "checkbox",
75
+ "radio",
76
+ "link",
77
+ "image",
78
+ "window",
79
+ "group",
80
+ "list",
81
+ "listitem",
82
+ "tab",
83
+ "tree",
84
+ "treeitem",
85
+ "slider",
86
+ "combobox",
87
+ "spinbutton",
88
+ ];
89
+ export const COMPUTE_COMMAND_CONTRACTS = [
90
+ {
91
+ command: "apps",
92
+ mcpSuffix: "apps",
93
+ kind: "compute_apps",
94
+ readOnly: true,
95
+ args: [],
96
+ description: "List currently running applications visible to the native computer-control layer.",
97
+ },
98
+ {
99
+ command: "windows",
100
+ mcpSuffix: "windows",
101
+ kind: "compute_windows",
102
+ readOnly: true,
103
+ args: [APP_ARG],
104
+ description: "List top-level windows, optionally scoped to an app.",
105
+ },
106
+ {
107
+ command: "snapshot",
108
+ mcpSuffix: "snapshot",
109
+ kind: "compute_snapshot",
110
+ readOnly: true,
111
+ args: [
112
+ APP_ARG,
113
+ SNAPSHOT_FORMAT_ARG,
114
+ {
115
+ name: "interactiveOnly",
116
+ type: "bool",
117
+ default: false,
118
+ description: "Only include interactive elements",
119
+ },
120
+ MAX_DEPTH_ARG,
121
+ ],
122
+ description: "Capture a compact accessibility snapshot with Uni-CLI-owned refs for later compute actions.",
123
+ },
124
+ {
125
+ command: "capture",
126
+ mcpSuffix: "capture",
127
+ kind: "compute_capture",
128
+ args: [
129
+ APP_ARG,
130
+ SNAPSHOT_FORMAT_ARG,
131
+ {
132
+ name: "include",
133
+ type: "str",
134
+ default: "snapshot,screenshot",
135
+ description: "Comma-separated capture parts: snapshot,screenshot",
136
+ },
137
+ MAX_DEPTH_ARG,
138
+ {
139
+ name: "screenshotPath",
140
+ type: "str",
141
+ description: "Optional screenshot output path",
142
+ },
143
+ {
144
+ name: "saveReference",
145
+ type: "bool",
146
+ default: false,
147
+ description: "Persist app-shot handoff artifacts",
148
+ },
149
+ {
150
+ name: "copyReference",
151
+ type: "bool",
152
+ default: false,
153
+ description: "Persist and copy app-shot handoff markup",
154
+ },
155
+ {
156
+ name: "referenceRoot",
157
+ type: "str",
158
+ description: "Directory for saved app-shot artifacts",
159
+ },
160
+ ],
161
+ channels: {
162
+ shell: "unicli compute capture [--app <name>] [--include snapshot,screenshot] [--format compact] [--copy-reference]",
163
+ args_file: "unicli compute capture --args-file <path.json>",
164
+ stdin: "echo '{...}' | unicli compute capture",
165
+ },
166
+ 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.",
167
+ },
168
+ {
169
+ command: "find",
170
+ mcpSuffix: "find",
171
+ kind: "compute_find",
172
+ readOnly: true,
173
+ args: [
174
+ {
175
+ name: "role",
176
+ type: "str",
177
+ required: true,
178
+ choices: ROLE_CHOICES,
179
+ description: "Element role to match from the latest Uni-CLI compute ref store",
180
+ },
181
+ {
182
+ name: "name",
183
+ type: "str",
184
+ description: "Substring match against the accessible name",
185
+ },
186
+ {
187
+ name: "text",
188
+ type: "str",
189
+ description: "Match visible or current text value",
190
+ },
191
+ APP_ARG,
192
+ {
193
+ name: "first",
194
+ type: "bool",
195
+ default: false,
196
+ description: "Return the first unambiguous match",
197
+ },
198
+ ],
199
+ description: "Find elements from the latest Uni-CLI compute snapshot by role, name, or visible/current text value.",
200
+ },
201
+ {
202
+ command: "click",
203
+ mcpSuffix: "click",
204
+ kind: "compute_click",
205
+ args: [REF_ARG, FOCUS_ARG, OVERLAY_ARG],
206
+ description: "Click a Uni-CLI compute element by ref.",
207
+ },
208
+ {
209
+ command: "type",
210
+ mcpSuffix: "type",
211
+ kind: "compute_type",
212
+ args: [
213
+ REF_ARG,
214
+ {
215
+ name: "text",
216
+ type: "str",
217
+ required: true,
218
+ positional: true,
219
+ description: "Text to type or set into the target element",
220
+ },
221
+ {
222
+ name: "clear",
223
+ type: "bool",
224
+ default: false,
225
+ description: "Clear the field before entering text when supported",
226
+ },
227
+ FOCUS_ARG,
228
+ OVERLAY_ARG,
229
+ ],
230
+ description: "Type text into a Uni-CLI compute element ref.",
231
+ },
232
+ {
233
+ command: "press",
234
+ mcpSuffix: "press",
235
+ kind: "compute_press",
236
+ args: [
237
+ {
238
+ name: "combo",
239
+ type: "str",
240
+ required: true,
241
+ positional: true,
242
+ description: 'Keyboard combo, e.g. "cmd+s" or "ctrl+shift+p"',
243
+ },
244
+ APP_ARG,
245
+ FOCUS_ARG,
246
+ ],
247
+ description: 'Press a keyboard combo, e.g. "cmd+s" or "ctrl+shift+p".',
248
+ },
249
+ {
250
+ command: "scroll",
251
+ mcpSuffix: "scroll",
252
+ kind: "compute_scroll",
253
+ args: [
254
+ REF_ARG,
255
+ {
256
+ name: "direction",
257
+ type: "str",
258
+ choices: ["up", "down", "left", "right"],
259
+ default: "down",
260
+ description: "Scroll direction",
261
+ },
262
+ {
263
+ name: "amount",
264
+ type: "int",
265
+ default: 300,
266
+ description: "Pixels or transport-native scroll amount",
267
+ },
268
+ FOCUS_ARG,
269
+ OVERLAY_ARG,
270
+ ],
271
+ description: "Scroll a Uni-CLI compute element or active view.",
272
+ },
273
+ {
274
+ command: "launch",
275
+ mcpSuffix: "launch",
276
+ kind: "compute_launch",
277
+ args: [
278
+ {
279
+ name: "app",
280
+ type: "str",
281
+ required: true,
282
+ positional: true,
283
+ description: "App name, bundle id, process name, or path",
284
+ },
285
+ {
286
+ name: "debugPort",
287
+ type: "int",
288
+ description: "Electron CDP debug port",
289
+ },
290
+ ],
291
+ description: "Launch an app by name, bundle id, process name, or path.",
292
+ },
293
+ {
294
+ command: "screenshot",
295
+ mcpSuffix: "screenshot",
296
+ kind: "compute_screenshot",
297
+ readOnly: true,
298
+ args: [
299
+ {
300
+ name: "path",
301
+ type: "str",
302
+ positional: true,
303
+ description: "Optional output path",
304
+ },
305
+ APP_ARG,
306
+ ],
307
+ description: "Capture a pixel screenshot. Prefer snapshot unless accessibility data is unavailable.",
308
+ },
309
+ {
310
+ command: "attach",
311
+ mcpSuffix: "attach",
312
+ kind: "compute_cdp_attach",
313
+ args: [
314
+ APP_ARG,
315
+ {
316
+ name: "port",
317
+ type: "int",
318
+ description: "CDP port",
319
+ },
320
+ {
321
+ name: "confirmRelaunch",
322
+ type: "bool",
323
+ default: false,
324
+ description: "Allow relaunching apps that may lose session state",
325
+ },
326
+ ],
327
+ description: "Attach to an Electron app or explicit CDP port.",
328
+ },
329
+ {
330
+ command: "eval",
331
+ mcpSuffix: "evaluate",
332
+ kind: "compute_evaluate",
333
+ args: [
334
+ {
335
+ name: "js",
336
+ type: "str",
337
+ required: true,
338
+ positional: true,
339
+ description: "JavaScript to evaluate in the attached CDP renderer",
340
+ },
341
+ {
342
+ name: "targetId",
343
+ type: "str",
344
+ description: "Optional CDP target id",
345
+ },
346
+ ],
347
+ description: "Run JavaScript in the attached CDP renderer.",
348
+ },
349
+ {
350
+ command: "wait",
351
+ mcpSuffix: "wait",
352
+ kind: "compute_wait",
353
+ readOnly: true,
354
+ args: [
355
+ {
356
+ ...REF_ARG,
357
+ required: false,
358
+ positional: false,
359
+ },
360
+ {
361
+ name: "text",
362
+ type: "str",
363
+ description: "Text to wait for",
364
+ },
365
+ APP_ARG,
366
+ {
367
+ name: "state",
368
+ type: "str",
369
+ choices: ["appear", "disappear", "focused"],
370
+ description: "State condition to wait for",
371
+ },
372
+ {
373
+ name: "timeoutMs",
374
+ type: "int",
375
+ default: 10_000,
376
+ description: "Timeout in milliseconds",
377
+ },
378
+ ],
379
+ description: "Wait for a ref, text, or state condition.",
380
+ },
381
+ {
382
+ command: "observe",
383
+ mcpSuffix: "observe",
384
+ kind: "compute_observe",
385
+ readOnly: true,
386
+ args: [
387
+ {
388
+ name: "goal",
389
+ type: "str",
390
+ required: true,
391
+ positional: true,
392
+ description: "Natural-language goal used to rank candidate refs",
393
+ },
394
+ APP_ARG,
395
+ {
396
+ name: "topK",
397
+ type: "int",
398
+ default: 5,
399
+ description: "Maximum candidate refs to return",
400
+ },
401
+ ],
402
+ description: "Rank candidate refs for a natural-language goal from the latest Uni-CLI compute snapshot.",
403
+ },
404
+ {
405
+ command: "assert",
406
+ mcpSuffix: "assert",
407
+ kind: "compute_assert",
408
+ readOnly: true,
409
+ args: [
410
+ {
411
+ ...REF_ARG,
412
+ required: false,
413
+ positional: false,
414
+ },
415
+ {
416
+ name: "text",
417
+ type: "str",
418
+ description: "Expected text",
419
+ },
420
+ {
421
+ name: "state",
422
+ type: "str",
423
+ choices: ["enabled", "focused", "checked", "visible"],
424
+ description: "State to assert",
425
+ },
426
+ ],
427
+ description: "Assert a UI condition by ref, text, or state.",
428
+ },
429
+ ];
430
+ export function getComputeCommandContract(command) {
431
+ return COMPUTE_COMMAND_CONTRACTS.find((candidate) => candidate.command === command);
432
+ }
433
+ export function getComputeCommandContractByMcpSuffix(suffix) {
434
+ return COMPUTE_COMMAND_CONTRACTS.find((candidate) => candidate.mcpSuffix === suffix);
435
+ }
436
+ export function buildComputeInputSchema(args) {
437
+ const properties = {};
438
+ const required = [];
439
+ for (const arg of args) {
440
+ const property = {
441
+ type: jsonTypeForComputeArg(arg.type),
442
+ };
443
+ if (arg.description !== undefined)
444
+ property.description = arg.description;
445
+ if (arg.default !== undefined)
446
+ property.default = arg.default;
447
+ if (arg.choices !== undefined && arg.choices.length > 0) {
448
+ property.enum = [...arg.choices];
449
+ }
450
+ properties[arg.name] = property;
451
+ if (arg.required === true)
452
+ required.push(arg.name);
453
+ }
454
+ return {
455
+ type: "object",
456
+ properties,
457
+ ...(required.length > 0 ? { required } : {}),
458
+ additionalProperties: false,
459
+ };
460
+ }
461
+ export function isComputeStableRefNamespace(ref) {
462
+ return (ref.startsWith("desktop-ax:") ||
463
+ ref.startsWith("desktop-uia:") ||
464
+ ref.startsWith("desktop-atspi:") ||
465
+ ref.startsWith("cdp-browser:") ||
466
+ ref.startsWith("cdp:"));
467
+ }
468
+ export function readForeignComputeRefOwner(ref) {
469
+ if (ref.startsWith("olo:accessibility:"))
470
+ return "olo.accessibility";
471
+ if (ref.startsWith("browser:") || ref.startsWith("dom:")) {
472
+ return "browser";
473
+ }
474
+ if (ref.includes(":") && !isComputeStableRefNamespace(ref))
475
+ return "unknown";
476
+ return undefined;
477
+ }
478
+ function jsonTypeForComputeArg(type) {
479
+ if (type === "int")
480
+ return "integer";
481
+ if (type === "float")
482
+ return "number";
483
+ if (type === "bool")
484
+ return "boolean";
485
+ return "string";
486
+ }
487
+ //# sourceMappingURL=contracts.js.map