@somewhere-tech/cli 0.18.2 → 0.19.0

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.
@@ -12,7 +12,9 @@ const looksLikeUrl = (s) => !!s && /^https?:\/\//i.test(s);
12
12
  * becomes `url`; otherwise --project (or a non-URL positional, then the linked
13
13
  * project) becomes `project_id`. The action flags compile to an ordered `steps`
14
14
  * array (goto → wait_for → eval → screenshot). `--snapshot` is display-only
15
- * (the DOM map is always returned) so it is NOT a step here.
15
+ * (the DOM map is always returned) so it is NOT a step here. `--store` (EYES
16
+ * mode: get a scratch signed URL instead of an inline shot) and `--include`
17
+ * (opt-in `network`/`dom` sections) forward the matching request params.
16
18
  */
17
19
  export function buildBrowserBody(target, opts, linkedProject) {
18
20
  const body = {};
@@ -35,6 +37,21 @@ export function buildBrowserBody(target, opts, linkedProject) {
35
37
  body.steps = steps;
36
38
  if (opts.viewport)
37
39
  body.viewport = opts.viewport;
40
+ if (opts.store)
41
+ body.store = true;
42
+ // Opt-in heavy sections for a no-steps inspect call. Split the CSV, trim, and
43
+ // drop empties; the worker filters to the known section names.
44
+ if (opts.include) {
45
+ const sections = opts.include.split(',').map((s) => s.trim()).filter(Boolean);
46
+ if (sections.length)
47
+ body.include = sections;
48
+ }
49
+ // Structured extraction: read the page as clean markdown (feature A).
50
+ if (opts.extract)
51
+ body.extract = 'markdown';
52
+ // Persistent session: reuse ONE live browser across calls (feature B).
53
+ if (opts.session)
54
+ body.session_id = opts.session;
38
55
  return body;
39
56
  }
40
57
  /**
@@ -95,6 +112,13 @@ export function formatBrowserReport(r, opts = {}) {
95
112
  const dom = r.dom_outline ?? [];
96
113
  const verdict = r.passed === false ? red('FAIL') : green('PASS');
97
114
  lines.push(`${verdict} ${teal(r.final_url ?? '(no url)')}`);
115
+ // Persistent session (feature B): surface the handle to reconnect + its expiry.
116
+ if (r.session_id) {
117
+ const exp = r.session_expires_at ? dim(` (expires ${r.session_expires_at})`) : '';
118
+ lines.push(`session: ${r.session_id}${exp}`);
119
+ if (r.session_note)
120
+ lines.push(`session_note: ${dim(r.session_note)}`);
121
+ }
98
122
  lines.push(`console_errors: ${ce.length}`);
99
123
  lines.push(`page_errors: ${pe.length}`);
100
124
  lines.push(`failed_requests: ${fr.length}`);
@@ -117,9 +141,36 @@ export function formatBrowserReport(r, opts = {}) {
117
141
  for (const e of fr)
118
142
  lines.push(`failed_request: ${failedRequestText(e)}`);
119
143
  for (const shot of r.screenshots ?? []) {
120
- const p = typeof shot === 'string' ? shot : shot.path ?? shot.url;
121
- if (p)
122
- lines.push(`screenshot: ${p}`);
144
+ if (typeof shot === 'string') {
145
+ lines.push(`screenshot: ${shot}`);
146
+ continue;
147
+ }
148
+ const label = shot.label ? `${shot.label} — ` : '';
149
+ if (shot.error) {
150
+ lines.push(`screenshot: ${label}${red(`error — ${shot.error}`)}`);
151
+ }
152
+ else if (shot.scratch_url) {
153
+ // EYES mode + --store: a short-TTL signed link to the full-res image.
154
+ const exp = shot.scratch_expires_at ? dim(` (expires ${shot.scratch_expires_at})`) : '';
155
+ lines.push(`screenshot: ${label}${shot.scratch_url}${exp}`);
156
+ }
157
+ else if (shot.fs_path ?? shot.path ?? shot.url) {
158
+ // VERIFY mode: a durable project file path (or a legacy path/url).
159
+ lines.push(`screenshot: ${label}${shot.fs_path ?? shot.path ?? shot.url}`);
160
+ }
161
+ else if (shot.inline_base64) {
162
+ // EYES mode default: the image came back inline. A terminal can't render
163
+ // it — say it was captured and point at the ways to actually view it.
164
+ lines.push(`screenshot: ${label}${dim('captured inline (image bytes — not shown in the terminal; re-run with --store for a viewable link, or --json for the base64)')}`);
165
+ }
166
+ }
167
+ // Structured extraction (feature A): the page as clean markdown, printed last
168
+ // so it doesn't bury the signals. Fenced so it's obvious where it starts/ends.
169
+ if (typeof r.markdown === 'string' && r.markdown.length) {
170
+ lines.push('--- markdown ---');
171
+ for (const l of r.markdown.split('\n'))
172
+ lines.push(l);
173
+ lines.push('--- end markdown ---');
123
174
  }
124
175
  // Full interactive-element map only on demand; the count above is the default.
125
176
  if (opts.snapshot) {
@@ -134,9 +185,10 @@ export function formatBrowserReport(r, opts = {}) {
134
185
  export function registerBrowser(program) {
135
186
  program
136
187
  .command('browser [target]')
137
- .description('Drive the agent-native browser against a deployed app (or any public URL) and print the ' +
138
- 'combined HEALTH SIGNAL — console errors, failed requests, JS page errors, and the ' +
139
- 'interactive-element (DOM) map — as grep-able text, not a dumped image. ' +
188
+ .description('SEE, inspect, and DRIVE any web page and print the combined HEALTH SIGNAL console ' +
189
+ 'errors, failed requests, JS page errors, and the interactive-element (DOM) map — as ' +
190
+ 'grep-able text, not a dumped image. Two modes: EYES (no --project, any public URL — look ' +
191
+ 'at / screenshot ANY page) and VERIFY (--project — drive + assert YOUR deployed app). ' +
140
192
  '`target` is a URL (https://…) or a project ref; defaults to the linked project. ' +
141
193
  'Add steps with --path / --wait / --eval / --screenshot. ' +
142
194
  'Exits non-zero when the page is unhealthy (a step failed, a request failed, or JS threw).')
@@ -148,12 +200,26 @@ export function registerBrowser(program) {
148
200
  .option('--screenshot', 'Capture a screenshot and print its stored path (requires a project).')
149
201
  .option('--snapshot', 'Print the full interactive-element / DOM map, not just the count.')
150
202
  .option('--viewport <size>', 'desktop (default) or mobile.')
203
+ .option('--store', 'EYES mode only: store the screenshot in an ephemeral, self-expiring scratch store and print a short-lived signed URL (plus its expiry) instead of an inline capture. Ignored with a project.')
204
+ .option('--include <sections>', 'Opt-in heavy sections for a no-steps inspect call: a comma list of "network", "dom", and/or "markdown" (e.g. --include network,dom). Lean by default.')
205
+ .option('--extract', 'Read the page as clean MARKDOWN (headings, links, lists, main content) in the output instead of vision-parsing a screenshot. Same as --include markdown. No-steps inspect calls.')
206
+ .option('--session <id>', 'Keep ONE live browser page alive across calls under this handle (1–64 chars: letters/digits/dot/dash/underscore). Navigate in one call, then reconnect with the same --session to wait/screenshot the SAME page (cookies, current URL, in-flight stream preserved). A reconnect skips the initial navigation — use --path to move. Idles out after ~3 min. Omit for the default fresh-per-call browser.')
151
207
  .option('--json', 'Print the raw browser response envelope as JSON.')
152
208
  .action(async (target, opts) => {
153
209
  if (opts.viewport && opts.viewport !== 'desktop' && opts.viewport !== 'mobile') {
154
210
  error(`--viewport must be "desktop" or "mobile" (got "${opts.viewport}")`);
155
211
  process.exit(1);
156
212
  }
213
+ if (opts.include) {
214
+ const bad = opts.include
215
+ .split(',')
216
+ .map((s) => s.trim())
217
+ .filter((s) => s && s !== 'network' && s !== 'dom' && s !== 'markdown');
218
+ if (bad.length) {
219
+ error(`--include only accepts "network", "dom", and/or "markdown" (got "${bad.join(', ')}")`);
220
+ process.exit(1);
221
+ }
222
+ }
157
223
  const client = new ApiClient(getToken());
158
224
  const linked = loadProjectConfig()?.project_id;
159
225
  const body = buildBrowserBody(target, opts, linked);
@@ -168,7 +234,7 @@ export function registerBrowser(program) {
168
234
  }
169
235
  let r;
170
236
  try {
171
- r = await client.call('POST', '/browser', body, undefined, {
237
+ r = await client.call('POST', '/browser/test', body, undefined, {
172
238
  timeoutMs: BROWSER_TIMEOUT_MS,
173
239
  });
174
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@somewhere-tech/cli",
3
- "version": "0.18.2",
3
+ "version": "0.19.0",
4
4
  "description": "CLI for somewhere.tech — auth, projects, deploy, pull, promote, db, logs, env, MCP bridge.",
5
5
  "keywords": [
6
6
  "somewhere",
@@ -1,106 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { dirname, join } from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- import { dim, teal } from './output.js';
6
- const PACKAGE = '@somewhere-tech/cli';
7
- const CACHE_PATH = join(homedir(), '.somewhere', 'update-check.json');
8
- const REGISTRY = `https://registry.npmjs.org/${PACKAGE.replace('/', '%2F')}/latest`;
9
- const ONE_DAY = 24 * 60 * 60 * 1000;
10
- const FETCH_TIMEOUT_MS = 1000;
11
- // `somewhere <sub>` forms that must stay quiet: the pass-throughs (their own bins
12
- // already bypass this file, but `somewhere swpx …` reaches here) and `update` itself.
13
- const SKIP_SUBCOMMANDS = new Set(['swpx', 'swpm', 'x', 'm', 'npx', 'npm', 'update']);
14
- function currentVersion() {
15
- try {
16
- const pkg = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json'), 'utf8'));
17
- return pkg.version;
18
- }
19
- catch {
20
- return '0.0.0';
21
- }
22
- }
23
- /** Numeric major.minor.patch compare, ignoring pre-release tags. Returns true when
24
- * `a` is strictly newer than `b`, and false on anything unparseable (exported for
25
- * tests — string compare would call 1.9.0 newer than 1.10.0). */
26
- export function isNewer(a, b) {
27
- const parse = (v) => v.split('-')[0].split('.').map((n) => Number(n));
28
- const pa = parse(a);
29
- const pb = parse(b);
30
- if (pa.length < 3 || pb.length < 3 || [...pa, ...pb].some((n) => Number.isNaN(n)))
31
- return false;
32
- for (let i = 0; i < 3; i++) {
33
- if (pa[i] !== pb[i])
34
- return pa[i] > pb[i];
35
- }
36
- return false;
37
- }
38
- function readCache() {
39
- try {
40
- return JSON.parse(readFileSync(CACHE_PATH, 'utf8'));
41
- }
42
- catch {
43
- return null;
44
- }
45
- }
46
- function writeCache(latest) {
47
- try {
48
- const dir = dirname(CACHE_PATH);
49
- if (!existsSync(dir))
50
- mkdirSync(dir, { recursive: true });
51
- writeFileSync(CACHE_PATH, JSON.stringify({ checkedAt: Date.now(), latest }) + '\n', { mode: 0o600 });
52
- }
53
- catch {
54
- // best-effort cache; a failed write just means we re-check next time
55
- }
56
- }
57
- async function fetchLatest() {
58
- try {
59
- const controller = new AbortController();
60
- const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
61
- const res = await fetch(REGISTRY, { signal: controller.signal, headers: { accept: 'application/json' } });
62
- clearTimeout(timer);
63
- if (!res.ok)
64
- return null;
65
- const body = (await res.json());
66
- return typeof body.version === 'string' ? body.version : null;
67
- }
68
- catch {
69
- return null;
70
- }
71
- }
72
- /** Returns a one-time "update available" notice (for stderr), or null. Throttled
73
- * to one npm check per day (cached). Silent on non-interactive output, CI, the
74
- * pass-through/update subcommands, and when SOMEWHERE_NO_UPDATE_NOTIFIER is set —
75
- * so it never pollutes agent or piped output. Fail-open: any error returns null.
76
- *
77
- * Print the result to STDERR after the command (e.g. via process.on('exit')) so
78
- * it never touches stdout and lands as a parting line. */
79
- export async function computeUpdateNotice(argv) {
80
- try {
81
- if (!process.stderr.isTTY)
82
- return null;
83
- if (process.env.CI || process.env.SOMEWHERE_NO_UPDATE_NOTIFIER)
84
- return null;
85
- const sub = argv[2];
86
- if (!sub || sub.startsWith('-') || SKIP_SUBCOMMANDS.has(sub))
87
- return null;
88
- const current = currentVersion();
89
- let cache = readCache();
90
- if (!cache || Date.now() - cache.checkedAt > ONE_DAY) {
91
- const latest = await fetchLatest();
92
- if (latest) {
93
- writeCache(latest);
94
- cache = { checkedAt: Date.now(), latest };
95
- }
96
- }
97
- if (!cache?.latest || !isNewer(cache.latest, current))
98
- return null;
99
- return (`\n ${teal('▲ Update available')} ${dim(current)} → ${teal(cache.latest)}\n` +
100
- ` Run ${teal('somewhere update')} to upgrade. ${dim('(SOMEWHERE_NO_UPDATE_NOTIFIER=1 to silence)')}\n`);
101
- }
102
- catch {
103
- return null; // never let an update check break the CLI
104
- }
105
- }
106
- //# sourceMappingURL=update-check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}