@zenalexa/unicli 0.213.3 → 0.215.1

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 (210) hide show
  1. package/AGENTS.md +16 -14
  2. package/README.md +206 -61
  3. package/README.zh-CN.md +166 -69
  4. package/dist/adapters/_electron/desktop-shared.d.ts +12 -0
  5. package/dist/adapters/_electron/desktop-shared.d.ts.map +1 -0
  6. package/dist/adapters/_electron/desktop-shared.js +312 -0
  7. package/dist/adapters/_electron/desktop-shared.js.map +1 -0
  8. package/dist/adapters/electron-desktop/electron-desktop.d.ts +9 -0
  9. package/dist/adapters/electron-desktop/electron-desktop.d.ts.map +1 -0
  10. package/dist/adapters/electron-desktop/electron-desktop.js +56 -0
  11. package/dist/adapters/electron-desktop/electron-desktop.js.map +1 -0
  12. package/dist/agents/backends.d.ts +42 -0
  13. package/dist/agents/backends.d.ts.map +1 -0
  14. package/dist/agents/backends.js +598 -0
  15. package/dist/agents/backends.js.map +1 -0
  16. package/dist/agents/editor-backends.d.ts +3 -0
  17. package/dist/agents/editor-backends.d.ts.map +1 -0
  18. package/dist/agents/editor-backends.js +70 -0
  19. package/dist/agents/editor-backends.js.map +1 -0
  20. package/dist/browser/adapter-authoring.d.ts +20 -0
  21. package/dist/browser/adapter-authoring.d.ts.map +1 -0
  22. package/dist/browser/adapter-authoring.js +68 -0
  23. package/dist/browser/adapter-authoring.js.map +1 -0
  24. package/dist/browser/analyze.d.ts +54 -0
  25. package/dist/browser/analyze.d.ts.map +1 -0
  26. package/dist/browser/analyze.js +205 -0
  27. package/dist/browser/analyze.js.map +1 -0
  28. package/dist/browser/bridge.d.ts +1 -1
  29. package/dist/browser/bridge.d.ts.map +1 -1
  30. package/dist/browser/bridge.js +2 -0
  31. package/dist/browser/bridge.js.map +1 -1
  32. package/dist/browser/daemon-client.d.ts.map +1 -1
  33. package/dist/browser/daemon-client.js +12 -1
  34. package/dist/browser/daemon-client.js.map +1 -1
  35. package/dist/browser/network-cache.d.ts +58 -0
  36. package/dist/browser/network-cache.d.ts.map +1 -0
  37. package/dist/browser/network-cache.js +146 -0
  38. package/dist/browser/network-cache.js.map +1 -0
  39. package/dist/browser/page.d.ts +1 -1
  40. package/dist/browser/page.d.ts.map +1 -1
  41. package/dist/browser/page.js +2 -1
  42. package/dist/browser/page.js.map +1 -1
  43. package/dist/browser/protocol.d.ts +6 -2
  44. package/dist/browser/protocol.d.ts.map +1 -1
  45. package/dist/browser/site-memory.d.ts +57 -0
  46. package/dist/browser/site-memory.d.ts.map +1 -0
  47. package/dist/browser/site-memory.js +127 -0
  48. package/dist/browser/site-memory.js.map +1 -0
  49. package/dist/browser/verify-fixture.d.ts +30 -0
  50. package/dist/browser/verify-fixture.d.ts.map +1 -0
  51. package/dist/browser/verify-fixture.js +168 -0
  52. package/dist/browser/verify-fixture.js.map +1 -0
  53. package/dist/browser/workspace.d.ts +8 -0
  54. package/dist/browser/workspace.d.ts.map +1 -0
  55. package/dist/browser/workspace.js +15 -0
  56. package/dist/browser/workspace.js.map +1 -0
  57. package/dist/commands/acp.d.ts +5 -0
  58. package/dist/commands/acp.d.ts.map +1 -1
  59. package/dist/commands/acp.js +20 -17
  60. package/dist/commands/acp.js.map +1 -1
  61. package/dist/commands/agents-backends.d.ts +6 -0
  62. package/dist/commands/agents-backends.d.ts.map +1 -0
  63. package/dist/commands/agents-backends.js +49 -0
  64. package/dist/commands/agents-backends.js.map +1 -0
  65. package/dist/commands/agents.d.ts.map +1 -1
  66. package/dist/commands/agents.js +3 -1
  67. package/dist/commands/agents.js.map +1 -1
  68. package/dist/commands/browser-adapter-authoring.d.ts +3 -0
  69. package/dist/commands/browser-adapter-authoring.d.ts.map +1 -0
  70. package/dist/commands/browser-adapter-authoring.js +206 -0
  71. package/dist/commands/browser-adapter-authoring.js.map +1 -0
  72. package/dist/commands/browser-authoring-operator.d.ts +3 -0
  73. package/dist/commands/browser-authoring-operator.d.ts.map +1 -0
  74. package/dist/commands/browser-authoring-operator.js +110 -0
  75. package/dist/commands/browser-authoring-operator.js.map +1 -0
  76. package/dist/commands/browser-operator-runtime.d.ts +38 -0
  77. package/dist/commands/browser-operator-runtime.d.ts.map +1 -0
  78. package/dist/commands/browser-operator-runtime.js +281 -0
  79. package/dist/commands/browser-operator-runtime.js.map +1 -0
  80. package/dist/commands/browser-operator.d.ts +6 -0
  81. package/dist/commands/browser-operator.d.ts.map +1 -0
  82. package/dist/commands/browser-operator.js +374 -0
  83. package/dist/commands/browser-operator.js.map +1 -0
  84. package/dist/commands/browser.d.ts.map +1 -1
  85. package/dist/commands/browser.js +72 -1
  86. package/dist/commands/browser.js.map +1 -1
  87. package/dist/commands/daemon.d.ts.map +1 -1
  88. package/dist/commands/daemon.js +40 -4
  89. package/dist/commands/daemon.js.map +1 -1
  90. package/dist/commands/explore.d.ts.map +1 -1
  91. package/dist/commands/explore.js +4 -1
  92. package/dist/commands/explore.js.map +1 -1
  93. package/dist/commands/generate.d.ts.map +1 -1
  94. package/dist/commands/generate.js +4 -1
  95. package/dist/commands/generate.js.map +1 -1
  96. package/dist/commands/mcp.d.ts.map +1 -1
  97. package/dist/commands/mcp.js +14 -14
  98. package/dist/commands/mcp.js.map +1 -1
  99. package/dist/commands/migrate-schema.d.ts.map +1 -1
  100. package/dist/commands/migrate-schema.js +10 -0
  101. package/dist/commands/migrate-schema.js.map +1 -1
  102. package/dist/commands/operate.d.ts +4 -3
  103. package/dist/commands/operate.d.ts.map +1 -1
  104. package/dist/commands/operate.js +8 -483
  105. package/dist/commands/operate.js.map +1 -1
  106. package/dist/commands/record.d.ts.map +1 -1
  107. package/dist/commands/record.js +2 -1
  108. package/dist/commands/record.js.map +1 -1
  109. package/dist/commands/search.js +1 -1
  110. package/dist/commands/search.js.map +1 -1
  111. package/dist/commands/skills.js +1 -1
  112. package/dist/commands/skills.js.map +1 -1
  113. package/dist/commands/synthesize.d.ts.map +1 -1
  114. package/dist/commands/synthesize.js +33 -3
  115. package/dist/commands/synthesize.js.map +1 -1
  116. package/dist/discovery/aliases.d.ts.map +1 -1
  117. package/dist/discovery/aliases.js +76 -1
  118. package/dist/discovery/aliases.js.map +1 -1
  119. package/dist/discovery/loader.d.ts.map +1 -1
  120. package/dist/discovery/loader.js +3 -1
  121. package/dist/discovery/loader.js.map +1 -1
  122. package/dist/electron-apps.d.ts +22 -0
  123. package/dist/electron-apps.d.ts.map +1 -1
  124. package/dist/electron-apps.js +324 -0
  125. package/dist/electron-apps.js.map +1 -1
  126. package/dist/engine/download.d.ts.map +1 -1
  127. package/dist/engine/download.js +12 -5
  128. package/dist/engine/download.js.map +1 -1
  129. package/dist/engine/repair/engine.js +2 -2
  130. package/dist/engine/repair/engine.js.map +1 -1
  131. package/dist/engine/steps/desktop-ax.d.ts +10 -0
  132. package/dist/engine/steps/desktop-ax.d.ts.map +1 -1
  133. package/dist/engine/steps/desktop-ax.js +20 -0
  134. package/dist/engine/steps/desktop-ax.js.map +1 -1
  135. package/dist/engine/steps/exec.d.ts +1 -1
  136. package/dist/engine/steps/exec.d.ts.map +1 -1
  137. package/dist/engine/steps/exec.js +20 -1
  138. package/dist/engine/steps/exec.js.map +1 -1
  139. package/dist/engine/steps/write-temp.js +1 -1
  140. package/dist/engine/steps/write-temp.js.map +1 -1
  141. package/dist/engine/template.d.ts.map +1 -1
  142. package/dist/engine/template.js +10 -2
  143. package/dist/engine/template.js.map +1 -1
  144. package/dist/main.js +12 -3
  145. package/dist/main.js.map +1 -1
  146. package/dist/manifest-compact.txt +8 -7
  147. package/dist/manifest-search.json +1 -1
  148. package/dist/manifest.json +2161 -171
  149. package/dist/mcp/http-transport.d.ts.map +1 -1
  150. package/dist/mcp/http-transport.js +3 -6
  151. package/dist/mcp/http-transport.js.map +1 -1
  152. package/dist/mcp/streamable-http/handle-post.js +1 -1
  153. package/dist/mcp/tools.d.ts +2 -1
  154. package/dist/mcp/tools.d.ts.map +1 -1
  155. package/dist/mcp/tools.js +8 -4
  156. package/dist/mcp/tools.js.map +1 -1
  157. package/dist/output/envelope.d.ts +1 -5
  158. package/dist/output/envelope.d.ts.map +1 -1
  159. package/dist/output/envelope.js +1 -5
  160. package/dist/output/envelope.js.map +1 -1
  161. package/dist/output/formatter.d.ts +2 -2
  162. package/dist/output/formatter.js +3 -3
  163. package/dist/output/formatter.js.map +1 -1
  164. package/dist/transport/adapters/cua.d.ts +9 -10
  165. package/dist/transport/adapters/cua.d.ts.map +1 -1
  166. package/dist/transport/adapters/cua.js +22 -24
  167. package/dist/transport/adapters/cua.js.map +1 -1
  168. package/dist/transport/adapters/desktop-atspi.d.ts +1 -1
  169. package/dist/transport/adapters/desktop-atspi.js +2 -2
  170. package/dist/transport/adapters/desktop-atspi.js.map +1 -1
  171. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts +11 -0
  172. package/dist/transport/adapters/desktop-ax-background-click-swift.d.ts.map +1 -0
  173. package/dist/transport/adapters/desktop-ax-background-click-swift.js +136 -0
  174. package/dist/transport/adapters/desktop-ax-background-click-swift.js.map +1 -0
  175. package/dist/transport/adapters/desktop-ax-background-click.d.ts +4 -0
  176. package/dist/transport/adapters/desktop-ax-background-click.d.ts.map +1 -0
  177. package/dist/transport/adapters/desktop-ax-background-click.js +70 -0
  178. package/dist/transport/adapters/desktop-ax-background-click.js.map +1 -0
  179. package/dist/transport/adapters/desktop-ax-swift.d.ts +56 -0
  180. package/dist/transport/adapters/desktop-ax-swift.d.ts.map +1 -0
  181. package/dist/transport/adapters/desktop-ax-swift.js +458 -0
  182. package/dist/transport/adapters/desktop-ax-swift.js.map +1 -0
  183. package/dist/transport/adapters/desktop-ax.d.ts +14 -0
  184. package/dist/transport/adapters/desktop-ax.d.ts.map +1 -1
  185. package/dist/transport/adapters/desktop-ax.js +262 -32
  186. package/dist/transport/adapters/desktop-ax.js.map +1 -1
  187. package/dist/transport/adapters/desktop-uia.d.ts +1 -1
  188. package/dist/transport/adapters/desktop-uia.js +2 -2
  189. package/dist/transport/adapters/desktop-uia.js.map +1 -1
  190. package/dist/transport/adapters/http.js +1 -1
  191. package/dist/transport/adapters/http.js.map +1 -1
  192. package/dist/transport/capability.d.ts +1 -1
  193. package/dist/transport/capability.d.ts.map +1 -1
  194. package/dist/transport/capability.js +6 -1
  195. package/dist/transport/capability.js.map +1 -1
  196. package/package.json +6 -2
  197. package/src/adapters/_electron/desktop-shared.ts +383 -0
  198. package/src/adapters/docker/build.yaml +1 -1
  199. package/src/adapters/docker/images.yaml +1 -1
  200. package/src/adapters/docker/logs.yaml +1 -1
  201. package/src/adapters/docker/networks.yaml +1 -1
  202. package/src/adapters/docker/ps.yaml +1 -1
  203. package/src/adapters/docker/run.yaml +1 -1
  204. package/src/adapters/docker/volumes.yaml +1 -1
  205. package/src/adapters/electron-desktop/electron-desktop.ts +57 -0
  206. package/src/adapters/macos/caffeinate.yaml +2 -2
  207. package/src/adapters/macos/processes.yaml +3 -3
  208. package/src/adapters/macos/screen-recording.yaml +2 -2
  209. package/src/adapters/substack/trending.yaml +2 -1
  210. package/src/hub/external-clis.yaml +175 -0
@@ -0,0 +1,206 @@
1
+ import { existsSync } from "node:fs";
2
+ import { createAdapterSkeleton, missingStrictMemoryFiles, parseAdapterTarget, } from "../browser/adapter-authoring.js";
3
+ import { deriveFixture, expandFixtureArgs, fixturePath, loadFixture, validateRows, writeFixture, } from "../browser/verify-fixture.js";
4
+ import { resolveArgs } from "../engine/args.js";
5
+ import { buildInvocation, execute } from "../engine/kernel/execute.js";
6
+ import { makeCtx, } from "../output/envelope.js";
7
+ import { detectFormat, format } from "../output/formatter.js";
8
+ function parseFixtureCliArgs(tokens, schema) {
9
+ const boolArgs = new Set(schema.filter((arg) => arg.type === "bool").map((arg) => arg.name));
10
+ const opts = {};
11
+ const positionals = [];
12
+ for (let i = 0; i < tokens.length; i += 1) {
13
+ const token = tokens[i] ?? "";
14
+ if (token === "--") {
15
+ positionals.push(...tokens.slice(i + 1));
16
+ break;
17
+ }
18
+ if (!token.startsWith("--")) {
19
+ positionals.push(token);
20
+ continue;
21
+ }
22
+ const raw = token.slice(2);
23
+ if (raw.startsWith("no-")) {
24
+ opts[raw.slice(3)] = false;
25
+ continue;
26
+ }
27
+ const eq = raw.indexOf("=");
28
+ if (eq >= 0) {
29
+ opts[raw.slice(0, eq)] = raw.slice(eq + 1);
30
+ continue;
31
+ }
32
+ const next = tokens[i + 1];
33
+ if (next === undefined || next.startsWith("--")) {
34
+ opts[raw] = boolArgs.has(raw) ? "true" : true;
35
+ continue;
36
+ }
37
+ opts[raw] = next;
38
+ i += 1;
39
+ }
40
+ return { opts, positionals };
41
+ }
42
+ function resolveBrowserVerifyArgs(args, schema) {
43
+ if (args === undefined)
44
+ return { args: {}, source: "internal" };
45
+ const parsed = Array.isArray(args)
46
+ ? parseFixtureCliArgs(expandFixtureArgs(args), schema)
47
+ : { opts: args, positionals: [] };
48
+ const resolved = resolveArgs({
49
+ opts: parsed.opts,
50
+ positionals: parsed.positionals,
51
+ schema,
52
+ stdinIsTTY: true,
53
+ });
54
+ return { ...resolved, source: "internal" };
55
+ }
56
+ function emitError(ctx, startedAt, fmt, error, exitCode, data = null) {
57
+ ctx.error = error;
58
+ ctx.duration_ms = Date.now() - startedAt;
59
+ console.error(format(data, undefined, fmt, ctx));
60
+ process.exitCode = exitCode;
61
+ }
62
+ function strictMemoryError(missing) {
63
+ return {
64
+ code: "not_found",
65
+ message: `Missing site memory files: ${missing.join(", ")}`,
66
+ suggestion: "Run browser analyze/explore, write notes, and seed a fixture with --write-fixture.",
67
+ retryable: false,
68
+ };
69
+ }
70
+ function adapterNotFoundError(site, command) {
71
+ return {
72
+ code: "not_found",
73
+ message: `Adapter not found: ${site}/${command}`,
74
+ suggestion: `Create one with: unicli browser init ${site}/${command}`,
75
+ retryable: false,
76
+ };
77
+ }
78
+ function fixtureValidationError(count) {
79
+ return {
80
+ code: "invalid_input",
81
+ message: `${String(count)} fixture validation failure(s)`,
82
+ retryable: false,
83
+ };
84
+ }
85
+ function internalError(err) {
86
+ return {
87
+ code: "internal_error",
88
+ message: err instanceof Error ? err.message : String(err),
89
+ retryable: false,
90
+ };
91
+ }
92
+ function buildVerifyInvocation(site, command, currentFixture) {
93
+ const inv = buildInvocation("cli", site, command, {
94
+ args: {},
95
+ source: "internal",
96
+ });
97
+ if (!inv)
98
+ return null;
99
+ return {
100
+ ...inv,
101
+ bag: resolveBrowserVerifyArgs(currentFixture?.args, inv.command.adapterArgs ?? []),
102
+ };
103
+ }
104
+ function collectObjectRows(rows) {
105
+ return rows.filter((row) => row != null && typeof row === "object" && !Array.isArray(row));
106
+ }
107
+ async function executeVerifyInvocation(inv) {
108
+ const result = await execute(inv);
109
+ return {
110
+ result,
111
+ rows: collectObjectRows(result.results),
112
+ argSource: inv.bag.source,
113
+ };
114
+ }
115
+ function resolveVerifyFixture(site, command, rows, currentFixture, opts) {
116
+ const shouldWrite = opts.updateFixture === true ||
117
+ (opts.writeFixture === true && !existsSync(fixturePath(site, command)));
118
+ if (!shouldWrite) {
119
+ return { fixture: currentFixture, writtenFixture: null };
120
+ }
121
+ const writtenFixture = writeFixture(site, command, deriveFixture(rows, currentFixture?.args));
122
+ return { fixture: loadFixture(site, command), writtenFixture };
123
+ }
124
+ function buildVerifyData(target, site, command, execution, writtenFixture, fixtureFailures, missing) {
125
+ return {
126
+ target,
127
+ argSource: execution.argSource,
128
+ rowCount: execution.rows.length,
129
+ exitCode: execution.result.exitCode,
130
+ fixturePath: fixturePath(site, command),
131
+ writtenFixture,
132
+ fixtureFailures,
133
+ memory: { missing },
134
+ };
135
+ }
136
+ function runBrowserInit(program, target, opts) {
137
+ const startedAt = Date.now();
138
+ const ctx = makeCtx("browser.init", startedAt);
139
+ const fmt = detectFormat(program.opts().format);
140
+ try {
141
+ const data = createAdapterSkeleton(target, { force: opts.force });
142
+ ctx.duration_ms = Date.now() - startedAt;
143
+ console.log(format({ ...data }, undefined, fmt, ctx));
144
+ }
145
+ catch (err) {
146
+ emitError(ctx, startedAt, fmt, {
147
+ code: "invalid_input",
148
+ message: err instanceof Error ? err.message : String(err),
149
+ retryable: false,
150
+ }, 78);
151
+ }
152
+ }
153
+ async function runBrowserVerify(program, target, opts) {
154
+ const startedAt = Date.now();
155
+ const ctx = makeCtx("browser.verify", startedAt);
156
+ const fmt = detectFormat(program.opts().format);
157
+ try {
158
+ const { site, command } = parseAdapterTarget(target);
159
+ const missing = missingStrictMemoryFiles(site, command);
160
+ if (opts.strictMemory && missing.length > 0) {
161
+ emitError(ctx, startedAt, fmt, strictMemoryError(missing), 1);
162
+ return;
163
+ }
164
+ const currentFixture = loadFixture(site, command);
165
+ const inv = buildVerifyInvocation(site, command, currentFixture);
166
+ if (!inv) {
167
+ emitError(ctx, startedAt, fmt, adapterNotFoundError(site, command), 1);
168
+ return;
169
+ }
170
+ const execution = await executeVerifyInvocation(inv);
171
+ const { fixture, writtenFixture } = resolveVerifyFixture(site, command, execution.rows, currentFixture, opts);
172
+ const fixtureFailures = fixture
173
+ ? validateRows(execution.rows, fixture)
174
+ : [];
175
+ const data = buildVerifyData(target, site, command, execution, writtenFixture, fixtureFailures, missing);
176
+ if (execution.result.error) {
177
+ emitError(ctx, startedAt, fmt, execution.result.error, execution.result.exitCode, data);
178
+ return;
179
+ }
180
+ if (fixtureFailures.length > 0) {
181
+ emitError(ctx, startedAt, fmt, fixtureValidationError(fixtureFailures.length), 1, data);
182
+ return;
183
+ }
184
+ ctx.duration_ms = Date.now() - startedAt;
185
+ console.log(format(data, undefined, fmt, ctx));
186
+ process.exitCode = execution.result.exitCode;
187
+ }
188
+ catch (err) {
189
+ emitError(ctx, startedAt, fmt, internalError(err), 1);
190
+ }
191
+ }
192
+ export function registerBrowserAdapterAuthoringSubcommands(browser, program) {
193
+ browser
194
+ .command("init <target>")
195
+ .description("Create a user YAML adapter skeleton at ~/.unicli/adapters")
196
+ .option("--force", "overwrite an existing skeleton")
197
+ .action((target, opts) => runBrowserInit(program, target, opts));
198
+ browser
199
+ .command("verify <target>")
200
+ .description("Run an adapter and validate its site-memory fixture")
201
+ .option("--write-fixture", "write a starter fixture when none exists")
202
+ .option("--update-fixture", "overwrite fixture with current output")
203
+ .option("--strict-memory", "fail when endpoints, notes, or verify fixture memory is missing")
204
+ .action((target, opts) => runBrowserVerify(program, target, opts));
205
+ }
206
+ //# sourceMappingURL=browser-adapter-authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-adapter-authoring.js","sourceRoot":"","sources":["../../src/commands/browser-adapter-authoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerBrowserAuthoringSubcommands(root: Command, program: Command, namespace: "browser" | "operate"): void;
3
+ //# sourceMappingURL=browser-authoring-operator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-authoring-operator.d.ts","sourceRoot":"","sources":["../../src/commands/browser-authoring-operator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,IAAI,CAsJN"}
@@ -0,0 +1,110 @@
1
+ import { analyzeSite } from "../browser/analyze.js";
2
+ import { DEFAULT_NETWORK_CACHE_TTL_MS, bodyMatchesNetworkFilter, findNetworkCacheEntry, loadNetworkCache, parseNetworkFilter, saveNetworkCache, toCachedNetworkEntries, truncateNetworkBody, } from "../browser/network-cache.js";
3
+ import { getAllAdapters } from "../registry.js";
4
+ import { ensureNetworkCapture, getOperatorPage, operatorAction, readNetworkEntries, resolveWorkspace, } from "./browser-operator-runtime.js";
5
+ function commandError(code, message, suggestion) {
6
+ const err = new Error(message);
7
+ err.code = code;
8
+ if (suggestion)
9
+ err.suggestion = suggestion;
10
+ return err;
11
+ }
12
+ function bodyPreview(body) {
13
+ if (body === undefined)
14
+ return null;
15
+ const raw = typeof body === "string" ? body : JSON.stringify(body);
16
+ return raw.slice(0, 2000);
17
+ }
18
+ export function registerBrowserAuthoringSubcommands(root, program, namespace) {
19
+ root
20
+ .command("analyze <url>")
21
+ .description("Classify a site for adapter authoring")
22
+ .action((url) => operatorAction(program, root, namespace, "analyze", async () => {
23
+ const page = await getOperatorPage(root, namespace);
24
+ await ensureNetworkCapture(page);
25
+ await page.goto(url, { settleMs: 2000 });
26
+ await page.wait(2);
27
+ const { normalized } = await readNetworkEntries(page);
28
+ const cookieNames = (await page.evaluate("(document.cookie || '').split(';').map((c) => c.trim().split('=')[0]).filter(Boolean)"));
29
+ const initialState = (await page.evaluate(`({
30
+ __INITIAL_STATE__: !!window.__INITIAL_STATE__,
31
+ __NUXT__: !!window.__NUXT__,
32
+ __NEXT_DATA__: !!window.__NEXT_DATA__,
33
+ __APOLLO_STATE__: !!window.__APOLLO_STATE__
34
+ })`));
35
+ const signals = {
36
+ requestedUrl: url,
37
+ finalUrl: await page.url(),
38
+ title: await page.title(),
39
+ cookieNames,
40
+ initialState,
41
+ networkEntries: normalized.map((entry) => ({
42
+ url: entry.url,
43
+ status: entry.status,
44
+ contentType: entry.contentType,
45
+ bodyPreview: bodyPreview(entry.body),
46
+ })),
47
+ };
48
+ return analyzeSite(signals, getAllAdapters());
49
+ }));
50
+ root
51
+ .command("network [pattern]")
52
+ .description("Show captured network requests")
53
+ .option("--all", "show all requests (no filter)")
54
+ .option("--raw", "include response bodies when available")
55
+ .option("--detail <key>", "read full body for a cached network entry")
56
+ .option("--filter <fields>", "comma-separated body field names; keep entries containing all fields")
57
+ .option("--max-body <chars>", "with --detail, cap emitted body chars (0 = unlimited)", "0")
58
+ .option("--ttl <ms>", "cache TTL for --detail", String(DEFAULT_NETWORK_CACHE_TTL_MS))
59
+ .action((pattern, opts) => operatorAction(program, root, namespace, "network", async () => {
60
+ const workspace = resolveWorkspace(root, namespace);
61
+ if (opts.detail) {
62
+ if (opts.filter) {
63
+ throw commandError("invalid_input", "--filter and --detail cannot be used together");
64
+ }
65
+ const loaded = loadNetworkCache(workspace, {
66
+ ttlMs: parseInt(opts.ttl, 10) || DEFAULT_NETWORK_CACHE_TTL_MS,
67
+ });
68
+ if (loaded.status === "missing") {
69
+ throw commandError("not_found", `No network cache for workspace "${workspace}"`, "Run `unicli browser network` first.");
70
+ }
71
+ if (loaded.status === "corrupt") {
72
+ throw commandError("internal_error", "Network cache file is malformed", "Re-run `unicli browser network` to regenerate it.");
73
+ }
74
+ if (loaded.status === "expired") {
75
+ throw commandError("stale_ref", `Network cache expired after ${String(loaded.ageMs)}ms`, "Re-run `unicli browser network` to refresh it.");
76
+ }
77
+ if (loaded.status !== "ok") {
78
+ throw commandError("internal_error", "Unexpected network cache state");
79
+ }
80
+ const entry = findNetworkCacheEntry(loaded.file, opts.detail);
81
+ if (!entry) {
82
+ throw commandError("not_found", `Network cache entry not found: ${opts.detail}`);
83
+ }
84
+ return truncateNetworkBody(entry, parseInt(opts.maxBody, 10) || 0);
85
+ }
86
+ let filterFields = null;
87
+ if (opts.filter) {
88
+ const parsed = parseNetworkFilter(opts.filter);
89
+ if (!parsed.ok) {
90
+ throw commandError("invalid_input", parsed.reason);
91
+ }
92
+ filterFields = parsed.fields;
93
+ }
94
+ const page = await getOperatorPage(root, namespace);
95
+ const { normalized } = await readNetworkEntries(page);
96
+ const cached = toCachedNetworkEntries(normalized);
97
+ saveNetworkCache(workspace, cached);
98
+ const filtered = pattern && !opts.all
99
+ ? cached.filter((entry) => entry.url.includes(pattern))
100
+ : cached;
101
+ const visible = filterFields
102
+ ? filtered.filter((entry) => bodyMatchesNetworkFilter(entry.body, filterFields))
103
+ : filtered;
104
+ if (!opts.raw) {
105
+ return visible.map(({ body: _body, ...entry }) => entry);
106
+ }
107
+ return visible;
108
+ }));
109
+ }
110
+ //# sourceMappingURL=browser-authoring-operator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-authoring-operator.js","sourceRoot":"","sources":["../../src/commands/browser-authoring-operator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Command } from "commander";
2
+ import { type DaemonPage } from "../browser/bridge.js";
3
+ export interface BrowserOperatorRootOptions {
4
+ workspace?: string;
5
+ isolated?: boolean;
6
+ sharedSession?: boolean;
7
+ daemonPort?: string;
8
+ focus?: boolean;
9
+ background?: boolean;
10
+ }
11
+ export interface NormalizedNetworkEntry {
12
+ url: string;
13
+ method: string;
14
+ status: number;
15
+ contentType: string;
16
+ bodySize: number;
17
+ body?: unknown;
18
+ }
19
+ export declare function validateRef(ref: string): string;
20
+ export declare function resolveWorkspace(root: Command, namespace: string): string;
21
+ export declare function withBrowserOperatorEnv<T>(root: Command, fn: () => Promise<T>): Promise<T>;
22
+ export declare function getOperatorPage(root: Command, namespace: string): Promise<DaemonPage>;
23
+ export declare function operatorAction(program: Command, root: Command, namespace: string, name: string, fn: () => Promise<unknown>): Promise<void>;
24
+ export declare function ensureNetworkCapture(page: DaemonPage): Promise<void>;
25
+ export declare function readNetworkEntries(page: DaemonPage): Promise<{
26
+ raw: unknown[];
27
+ normalized: NormalizedNetworkEntry[];
28
+ }>;
29
+ export declare function readFrames(page: DaemonPage): Promise<Array<{
30
+ index: number;
31
+ frameId: string;
32
+ parentFrameId?: string;
33
+ url: string;
34
+ }>>;
35
+ export declare function buildFindJs(selector: string, limit: number, textMax: number): string;
36
+ export declare function buildExtractJs(selector?: string): string;
37
+ export declare function resolveAllowedUploadPath(filePath: string): string;
38
+ //# sourceMappingURL=browser-operator-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-operator-runtime.d.ts","sourceRoot":"","sources":["../../src/commands/browser-operator-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAetE,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1E;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,UAAU,EAAE,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAwEnE;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,GACf,OAAO,CACR,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAC/E,CA4CA;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAsCR;AAED,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BxD;AAOD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6BjE"}