fastbrowser_cli 1.0.2 → 1.0.4

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 (57) hide show
  1. package/README.md +118 -0
  2. package/dist/fastbrowser_cli/fastbrowser_cli.d.ts +3 -0
  3. package/dist/fastbrowser_cli/fastbrowser_cli.d.ts.map +1 -0
  4. package/dist/fastbrowser_cli/fastbrowser_cli.js +288 -0
  5. package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -0
  6. package/dist/fastbrowser_cli/libs/http-client.d.ts +7 -0
  7. package/dist/fastbrowser_cli/libs/http-client.d.ts.map +1 -0
  8. package/dist/fastbrowser_cli/libs/http-client.js +51 -0
  9. package/dist/fastbrowser_cli/libs/http-client.js.map +1 -0
  10. package/dist/fastbrowser_cli/libs/server-manager.d.ts +12 -0
  11. package/dist/fastbrowser_cli/libs/server-manager.d.ts.map +1 -0
  12. package/dist/fastbrowser_cli/libs/server-manager.js +194 -0
  13. package/dist/fastbrowser_cli/libs/server-manager.js.map +1 -0
  14. package/dist/fastbrowser_httpd/fastbrowser_httpd.d.ts +3 -0
  15. package/dist/fastbrowser_httpd/fastbrowser_httpd.d.ts.map +1 -0
  16. package/dist/fastbrowser_httpd/fastbrowser_httpd.js +82 -0
  17. package/dist/fastbrowser_httpd/fastbrowser_httpd.js.map +1 -0
  18. package/dist/fastbrowser_httpd/libs/routes.d.ts +6 -0
  19. package/dist/fastbrowser_httpd/libs/routes.d.ts.map +1 -0
  20. package/dist/fastbrowser_httpd/libs/routes.js +41 -0
  21. package/dist/fastbrowser_httpd/libs/routes.js.map +1 -0
  22. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts +72 -0
  23. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts.map +1 -0
  24. package/dist/fastbrowser_httpd/libs/tool-schemas.js +65 -0
  25. package/dist/fastbrowser_httpd/libs/tool-schemas.js.map +1 -0
  26. package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts +4 -0
  27. package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts.map +1 -0
  28. package/dist/fastbrowser_mcp/fastbrowser_mcp.js +417 -0
  29. package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -0
  30. package/dist/fastbrowser_mcp/libs/mcp_client.d.ts +120 -0
  31. package/dist/fastbrowser_mcp/libs/mcp_client.d.ts.map +1 -0
  32. package/dist/fastbrowser_mcp/libs/mcp_client.js +83 -0
  33. package/dist/fastbrowser_mcp/libs/mcp_client.js.map +1 -0
  34. package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts +10 -0
  35. package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts.map +1 -0
  36. package/dist/fastbrowser_mcp/libs/mcp_proxy.js +45 -0
  37. package/dist/fastbrowser_mcp/libs/mcp_proxy.js.map +1 -0
  38. package/dist/fastbrowser_mcp/libs/schemas.d.ts +28 -0
  39. package/dist/fastbrowser_mcp/libs/schemas.d.ts.map +1 -0
  40. package/dist/fastbrowser_mcp/libs/schemas.js +38 -0
  41. package/dist/fastbrowser_mcp/libs/schemas.js.map +1 -0
  42. package/docs/brainstorm_scrap_by_ai.md +1 -1
  43. package/docs/feature_support_cli.md +27 -27
  44. package/package.json +7 -7
  45. package/{tmp/.claude/skills/fastweb → skills/fastbrowser}/SKILL.md +22 -22
  46. package/src/{fastweb_cli/fastweb_cli.ts → fastbrowser_cli/fastbrowser_cli.ts} +49 -15
  47. package/src/{fastweb_cli → fastbrowser_cli}/libs/http-client.ts +2 -2
  48. package/src/{fastweb_cli → fastbrowser_cli}/libs/server-manager.ts +8 -8
  49. package/src/{fastweb_http_server/fastweb_http_server.ts → fastbrowser_httpd/fastbrowser_httpd.ts} +10 -10
  50. package/src/{fastweb_http_server → fastbrowser_httpd}/libs/routes.ts +1 -1
  51. package/src/{fastweb_http_server → fastbrowser_httpd}/libs/tool-schemas.ts +4 -4
  52. package/src/{fastweb_mcp → fastbrowser_mcp}/libs/mcp_proxy.ts +1 -1
  53. package/src/{fastweb_mcp → fastbrowser_mcp}/libs/schemas.ts +1 -1
  54. package/tmp/.claude/.claude/settings.local.json +7 -0
  55. package/tmp/.claude/skills/fastbrowser/SKILL.md +214 -0
  56. /package/src/{fastweb_mcp/fastweb_mcp.ts → fastbrowser_mcp/fastbrowser_mcp.ts} +0 -0
  57. /package/src/{fastweb_mcp → fastbrowser_mcp}/libs/mcp_client.ts +0 -0
package/README.md CHANGED
@@ -0,0 +1,118 @@
1
+ # fastbrowser_cli
2
+
3
+ Control a live Chrome browser from the command line: navigate, click, fill forms, and query the accessibility tree with CSS-like selectors.
4
+
5
+ A lighter alternative to Chrome DevTools MCP or Puppeteer, designed for AI agents and shell workflows. A persistent HTTP daemon keeps an MCP connection to the browser alive so each command incurs minimal latency.
6
+
7
+ - rely on [chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) for robust browser control
8
+ - expose a curated, efficient toolset optimized for AI agent use cases
9
+ - minimize the required round-trips and boilerplate to perform common tasks
10
+ - minimize the output size, thus reducing LLM input size and parsing complexity.
11
+ - It means faster/cheaper LLM iterations when used in an agent loop.
12
+ - It means more accurate/better quality responses from the LLM as well, since it has less irrelevant info to parse through.
13
+
14
+ ## Architecture
15
+
16
+ Three components ship together in this package:
17
+
18
+ - **`fastbrowser_cli`** — the user-facing CLI. Each subcommand maps 1-to-1 to a fastbrowser tool and prints the response on stdout.
19
+ - **`fastbrowser_httpd`** — a long-running HTTP server that fronts `fastbrowser_mcp` and holds the persistent MCP connection. The CLI auto-starts it on first use.
20
+ - **`fastbrowser_mcp`** — the MCP server that drives the actual Chrome browser via `chrome-devtools-mcp`.
21
+
22
+ ```
23
+ fastbrowser_cli ──HTTP──▶ fastbrowser_httpd ──MCP/stdio──▶ fastbrowser_mcp ──▶ chrome-devtools-mcp ──▶ Chrome
24
+ ```
25
+
26
+ ## Installation
27
+
28
+ ```bash
29
+ npm install -g fastbrowser_cli
30
+ ```
31
+
32
+ Or install just the SKILL.md into an agent folder so an AI agent can use it:
33
+
34
+ ```bash
35
+ npx fastbrowser_cli --install <skill-folder>
36
+ ```
37
+
38
+ This copies `SKILL.md` to `<skill-folder>/skills/fastbrowser/SKILL.md`.
39
+
40
+ ## Quick Start
41
+
42
+ ```bash
43
+ # Open a page (auto-starts the daemon)
44
+ npx fastbrowser_cli new_page --url https://example.com
45
+
46
+ # Find the first link and the first heading on the page
47
+ npx fastbrowser_cli query_selectors -s 'link' -s 'heading'
48
+
49
+ # Click it
50
+ npx fastbrowser_cli click -s 'link[name="More information..."]'
51
+ ```
52
+
53
+ ## Commands
54
+
55
+ | Command | Purpose | Required flags |
56
+ |---|---|---|
57
+ | `list_pages` | List open browser pages | — |
58
+ | `new_page` | Open a new page at a URL | `--url` |
59
+ | `close_page` | Close a page by id | `--page-id` |
60
+ | `navigate_page` | Navigate current page to a URL | `--url` |
61
+ | `take_snapshot` | Dump the full accessibility tree (expensive — prefer targeted queries) | — |
62
+ | `query_selectors` | Query the a11y tree, returning the first match per selector | `--selector` or `--selectors-json` |
63
+ | `query_selectors_all` | Query the a11y tree, returning every match per selector | `--selector` or `--selectors-json` |
64
+ | `click` | Click an element by accessibility selector | `-s, --selector` |
65
+ | `fill_form` | Fill a form field by accessibility selector | `-s, --selector`, `--value` |
66
+ | `press_keys` | Press a comma-separated key sequence | `--keys` |
67
+ | `server start` | Start the HTTP daemon | — |
68
+ | `server status` | Report daemon running/stopped | — |
69
+ | `server stop` | Stop the HTTP daemon | — |
70
+
71
+ ## Selector Language
72
+
73
+ The selector syntax is modelled on CSS, adapted for the accessibility tree.
74
+
75
+ - **Role:** `button`, `link`, `heading`, `searchbox`, `WebArea`, …
76
+ - **UID:** `#1_42` (fast path — bypasses the a11y-tree lookup)
77
+ - **Universal:** `*`
78
+ - **Attributes:** `[attr]`, `[attr="v"]`, `[attr^="p"]`, `[attr$="s"]`, `[attr*="x"]`. The virtual `name` attribute maps to the node's accessible name.
79
+ - **Combinators:** descendant `A B`, direct child `A > B`, union `A, B`.
80
+
81
+ Examples:
82
+
83
+ ```
84
+ link[href^="https"]
85
+ button[name="Submit"]
86
+ navigation > link
87
+ heading, button
88
+ #1_7
89
+ ```
90
+
91
+ Full selector reference is in [skills/fastbrowser/SKILL.md](skills/fastbrowser/SKILL.md).
92
+
93
+ ## Configuration
94
+
95
+ | Flag / env | Purpose | Default |
96
+ |---|---|---|
97
+ | `--server <url>` / `FASTBROWSER_SERVER` | URL of the `fastbrowser_httpd` daemon | `http://localhost:8787` |
98
+ | `--autostart` / `--no-autostart` | Auto-start the daemon if it is not already running | `--autostart` |
99
+
100
+ ## Scripts
101
+
102
+ ```bash
103
+ npm run build # tsc compile
104
+ npm run typecheck # tsc --noEmit
105
+ npm run start:cli # run the CLI from source
106
+ npm run start:http-server # run fastbrowser_httpd from source
107
+ npm run start:fastbrowser_mcp # run fastbrowser_mcp from source
108
+ npm run inspect:fastbrowser_mcp # open the MCP inspector against fastbrowser_mcp
109
+ ```
110
+
111
+ ## Output & Errors
112
+
113
+ - Tool output is written to **stdout**, one line per response content part.
114
+ - Errors are written to **stderr** as `fastbrowser-cli error: <message>` and the process exits with code `1`.
115
+
116
+ ## License
117
+
118
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=fastbrowser_cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastbrowser_cli.d.ts","sourceRoot":"","sources":["../../src/fastbrowser_cli/fastbrowser_cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,288 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ // node imports
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ // npm imports
11
+ const commander_1 = require("commander");
12
+ // local imports
13
+ const http_client_js_1 = require("./libs/http-client.js");
14
+ const server_manager_js_1 = require("./libs/server-manager.js");
15
+ function getServerFromCmd(cmd) {
16
+ const globalOpts = cmd.optsWithGlobals();
17
+ return http_client_js_1.HttpClient.getServerUrl(globalOpts.server);
18
+ }
19
+ function getAutostartFromCmd(cmd) {
20
+ const globalOpts = cmd.optsWithGlobals();
21
+ return globalOpts.autostart !== false;
22
+ }
23
+ async function runTool(cmd, routeName, body) {
24
+ const server = getServerFromCmd(cmd);
25
+ try {
26
+ if (getAutostartFromCmd(cmd) === true) {
27
+ await server_manager_js_1.ServerManager.ensureRunning(server);
28
+ }
29
+ const response = await http_client_js_1.HttpClient.postTool(server, routeName, body);
30
+ http_client_js_1.HttpClient.printResponse(response);
31
+ }
32
+ catch (err) {
33
+ const message = err instanceof Error ? err.message : String(err);
34
+ console.error(`fastbrowser-cli error: ${message}`);
35
+ process.exit(1);
36
+ }
37
+ }
38
+ ///////////////////////////////////////////////////////////////////////////////
39
+ ///////////////////////////////////////////////////////////////////////////////
40
+ //
41
+ ///////////////////////////////////////////////////////////////////////////////
42
+ ///////////////////////////////////////////////////////////////////////////////
43
+ function buildQuerySelectorsBody(opts) {
44
+ if (opts.selectorsJson !== undefined && opts.selectorsJson !== '') {
45
+ let parsed;
46
+ try {
47
+ parsed = JSON.parse(opts.selectorsJson);
48
+ }
49
+ catch (err) {
50
+ throw new Error(`--selectors-json is not valid JSON: ${err.message}`);
51
+ }
52
+ if (Array.isArray(parsed) === false) {
53
+ throw new Error('--selectors-json must be a JSON array');
54
+ }
55
+ return { selectors: parsed };
56
+ }
57
+ const selectorList = opts.selector ?? [];
58
+ if (selectorList.length === 0) {
59
+ throw new Error('At least one --selector or --selectors-json is required');
60
+ }
61
+ const limit = opts.limit === undefined ? 0 : Number.parseInt(opts.limit, 10);
62
+ if (Number.isNaN(limit) === true) {
63
+ throw new Error(`Invalid --limit: ${opts.limit}`);
64
+ }
65
+ const withAncestors = opts.withAncestors !== false;
66
+ const selectors = selectorList.map((selector) => ({
67
+ selector,
68
+ limit,
69
+ withAncestors,
70
+ }));
71
+ return { selectors };
72
+ }
73
+ function buildQuerySelectorFirstBody(opts) {
74
+ if (opts.selectorsJson !== undefined && opts.selectorsJson !== '') {
75
+ let parsed;
76
+ try {
77
+ parsed = JSON.parse(opts.selectorsJson);
78
+ }
79
+ catch (err) {
80
+ throw new Error(`--selectors-json is not valid JSON: ${err.message}`);
81
+ }
82
+ if (Array.isArray(parsed) === false) {
83
+ throw new Error('--selectors-json must be a JSON array');
84
+ }
85
+ return { selectors: parsed };
86
+ }
87
+ const selectorList = opts.selector ?? [];
88
+ if (selectorList.length === 0) {
89
+ throw new Error('At least one --selector or --selectors-json is required');
90
+ }
91
+ const withAncestors = opts.withAncestors !== false;
92
+ const selectors = selectorList.map((selector) => ({
93
+ selector,
94
+ withAncestors,
95
+ }));
96
+ return { selectors };
97
+ }
98
+ ///////////////////////////////////////////////////////////////////////////////
99
+ ///////////////////////////////////////////////////////////////////////////////
100
+ //
101
+ ///////////////////////////////////////////////////////////////////////////////
102
+ ///////////////////////////////////////////////////////////////////////////////
103
+ async function runInstall(skillFolder) {
104
+ const sourceSkillMd = node_path_1.default.resolve(__dirname, '../../skills/fastbrowser/SKILL.md');
105
+ const targetDir = node_path_1.default.resolve(skillFolder, 'skills', 'fastbrowser');
106
+ const targetSkillMd = node_path_1.default.join(targetDir, 'SKILL.md');
107
+ try {
108
+ await node_fs_1.default.promises.mkdir(targetDir, { recursive: true });
109
+ await node_fs_1.default.promises.copyFile(sourceSkillMd, targetSkillMd);
110
+ console.log(`Installed fastbrowser SKILL.md at ${targetSkillMd}`);
111
+ }
112
+ catch (err) {
113
+ const message = err instanceof Error ? err.message : String(err);
114
+ console.error(`fastbrowser-cli error: ${message}`);
115
+ process.exit(1);
116
+ }
117
+ }
118
+ ///////////////////////////////////////////////////////////////////////////////
119
+ ///////////////////////////////////////////////////////////////////////////////
120
+ //
121
+ ///////////////////////////////////////////////////////////////////////////////
122
+ ///////////////////////////////////////////////////////////////////////////////
123
+ async function main() {
124
+ const installIdx = process.argv.indexOf('--install');
125
+ if (installIdx !== -1) {
126
+ const next = process.argv[installIdx + 1];
127
+ const skillFolder = (next !== undefined && next.startsWith('-') === false) ? next : '.';
128
+ await runInstall(skillFolder);
129
+ return;
130
+ }
131
+ const program = new commander_1.Command();
132
+ program
133
+ .name('fastbrowser-cli')
134
+ .description('CLI client for fastbrowser')
135
+ .option('--server <url>', 'fastbrowser-httpd URL (default: env FASTBROWSER_SERVER or http://localhost:8787)')
136
+ .option('--autostart', 'Auto-start the server before a command if it is not running', true)
137
+ .option('--no-autostart', 'Do not auto-start the server before a command')
138
+ .option('--install [skill-folder]', 'Install SKILL.md into <skill-folder>/skills/fastbrowser (default: .)');
139
+ const serverCmd = program
140
+ .command('server')
141
+ .description('Manage the fastbrowser HTTP server');
142
+ serverCmd
143
+ .command('start')
144
+ .description('Start the fastbrowser HTTP server as a detached daemon')
145
+ .action(async (_opts, cmd) => {
146
+ const server = getServerFromCmd(cmd);
147
+ try {
148
+ await server_manager_js_1.ServerManager.start(server);
149
+ }
150
+ catch (err) {
151
+ const message = err instanceof Error ? err.message : String(err);
152
+ console.error(`fastbrowser-cli error: ${message}`);
153
+ process.exit(1);
154
+ }
155
+ });
156
+ serverCmd
157
+ .command('stop')
158
+ .description('Stop the fastbrowser HTTP server')
159
+ .action(async (_opts, cmd) => {
160
+ const server = getServerFromCmd(cmd);
161
+ try {
162
+ await server_manager_js_1.ServerManager.stop(server);
163
+ }
164
+ catch (err) {
165
+ const message = err instanceof Error ? err.message : String(err);
166
+ console.error(`fastbrowser-cli error: ${message}`);
167
+ process.exit(1);
168
+ }
169
+ });
170
+ serverCmd
171
+ .command('status')
172
+ .description('Report whether the fastbrowser HTTP server is running')
173
+ .action(async (_opts, cmd) => {
174
+ const server = getServerFromCmd(cmd);
175
+ const state = await server_manager_js_1.ServerManager.status(server);
176
+ console.log(`fastbrowser server at ${server}: ${state}`);
177
+ if (state === 'stopped')
178
+ process.exit(1);
179
+ });
180
+ program
181
+ .command('list_pages')
182
+ .description('List all open browser pages')
183
+ .action(async (_opts, cmd) => {
184
+ await runTool(cmd, 'list_pages', {});
185
+ });
186
+ program
187
+ .command('new_page')
188
+ .description('Open a new browser page')
189
+ .requiredOption('--url <url>', 'URL to open')
190
+ .action(async (opts, cmd) => {
191
+ await runTool(cmd, 'new_page', { url: opts.url });
192
+ });
193
+ program
194
+ .command('close_page')
195
+ .description('Close a page by its id')
196
+ .requiredOption('--page-id <number>', 'The page id to close')
197
+ .action(async (opts, cmd) => {
198
+ const pageId = Number.parseInt(opts.pageId, 10);
199
+ if (Number.isNaN(pageId) === true) {
200
+ console.error(`Invalid --page-id: ${opts.pageId}`);
201
+ process.exit(1);
202
+ }
203
+ await runTool(cmd, 'close_page', { pageId });
204
+ });
205
+ program
206
+ .command('navigate_page')
207
+ .description('Navigate the current page to a URL')
208
+ .requiredOption('--url <url>', 'URL to navigate to')
209
+ .action(async (opts, cmd) => {
210
+ await runTool(cmd, 'navigate_page', { url: opts.url });
211
+ });
212
+ program
213
+ .command('click')
214
+ .description('Click an element by its accessibility selector')
215
+ .requiredOption('-s, --selector <selector>', 'Accessibility selector (e.g. "#1_3" or \'button[name="Submit"]\')')
216
+ .action(async (opts, cmd) => {
217
+ await runTool(cmd, 'click', { selector: opts.selector });
218
+ });
219
+ program
220
+ .command('fill_form')
221
+ .description('Fill a form field by its accessibility selector')
222
+ .requiredOption('-s, --selector <selector>', 'Accessibility selector (e.g. "#1_3" or \'textbox[name="Email"]\')')
223
+ .requiredOption('--value <value>', 'Value to fill')
224
+ .action(async (opts, cmd) => {
225
+ await runTool(cmd, 'fill_form', {
226
+ elements: [{ selector: opts.selector, value: opts.value }],
227
+ });
228
+ });
229
+ program
230
+ .command('query_selectors_all')
231
+ .description('Query the accessibility tree with CSS-like selectors')
232
+ .option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
233
+ prev.push(value);
234
+ return prev;
235
+ })
236
+ .option('--limit <number>', 'Max nodes per selector (0 = unlimited)', '0')
237
+ .option('--with-ancestors', 'Include ancestor nodes', true)
238
+ .option('--no-with-ancestors', 'Exclude ancestor nodes')
239
+ .option('--selectors-json <json>', 'JSON array of {selector,limit,withAncestors} for per-selector control')
240
+ .action(async (opts, cmd) => {
241
+ let body;
242
+ try {
243
+ body = buildQuerySelectorsBody(opts);
244
+ }
245
+ catch (err) {
246
+ console.error(`fastbrowser-cli error: ${err.message}`);
247
+ process.exit(1);
248
+ }
249
+ await runTool(cmd, 'query_selectors_all', body);
250
+ });
251
+ program
252
+ .command('query_selectors')
253
+ .description('Query the accessibility tree with CSS-like selectors and, for each, return the first matching node')
254
+ .option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
255
+ prev.push(value);
256
+ return prev;
257
+ })
258
+ .option('--with-ancestors', 'Include ancestor nodes', true)
259
+ .option('--no-with-ancestors', 'Exclude ancestor nodes')
260
+ .option('--selectors-json <json>', 'JSON array of {selector,withAncestors} for per-selector control')
261
+ .action(async (opts, cmd) => {
262
+ let body;
263
+ try {
264
+ body = buildQuerySelectorFirstBody(opts);
265
+ }
266
+ catch (err) {
267
+ console.error(`fastbrowser-cli error: ${err.message}`);
268
+ process.exit(1);
269
+ }
270
+ await runTool(cmd, 'query_selectors', body);
271
+ });
272
+ program
273
+ .command('take_snapshot')
274
+ .description('Take an accessibility-tree snapshot of the current page')
275
+ .action(async (_opts, cmd) => {
276
+ await runTool(cmd, 'take_snapshot', {});
277
+ });
278
+ program
279
+ .command('press_keys')
280
+ .description('Press a sequence of keys')
281
+ .requiredOption('--keys <keys>', "Comma-separated keys. E.g. 'Hello, Tab, Enter'")
282
+ .action(async (opts, cmd) => {
283
+ await runTool(cmd, 'press_keys', { keys: opts.keys });
284
+ });
285
+ await program.parseAsync(process.argv);
286
+ }
287
+ void main();
288
+ //# sourceMappingURL=fastbrowser_cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastbrowser_cli.js","sourceRoot":"","sources":["../../src/fastbrowser_cli/fastbrowser_cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ToolResponse } from '../../fastbrowser_httpd/libs/tool-schemas.js';
2
+ export declare class HttpClient {
3
+ static getServerUrl(overrideUrl: string | undefined): string;
4
+ static postTool(serverUrl: string, routeName: string, body: unknown): Promise<ToolResponse>;
5
+ static printResponse(response: ToolResponse): void;
6
+ }
7
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAQrG,qBAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;WAO/C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BjG,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAKlD"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpClient = void 0;
4
+ // local imports
5
+ const tool_schemas_js_1 = require("../../fastbrowser_httpd/libs/tool-schemas.js");
6
+ ///////////////////////////////////////////////////////////////////////////////
7
+ ///////////////////////////////////////////////////////////////////////////////
8
+ //
9
+ ///////////////////////////////////////////////////////////////////////////////
10
+ ///////////////////////////////////////////////////////////////////////////////
11
+ class HttpClient {
12
+ static getServerUrl(overrideUrl) {
13
+ if (overrideUrl !== undefined && overrideUrl !== '')
14
+ return overrideUrl;
15
+ const envUrl = process.env.FASTBROWSER_SERVER;
16
+ if (envUrl !== undefined && envUrl !== '')
17
+ return envUrl;
18
+ return 'http://localhost:8787';
19
+ }
20
+ static async postTool(serverUrl, routeName, body) {
21
+ const url = `${serverUrl.replace(/\/+$/, '')}/tools/${routeName}`;
22
+ const response = await fetch(url, {
23
+ method: 'POST',
24
+ headers: { 'content-type': 'application/json' },
25
+ body: JSON.stringify(body ?? {}),
26
+ });
27
+ const responseText = await response.text();
28
+ if (response.ok === false) {
29
+ throw new Error(`HTTP ${response.status} ${response.statusText}: ${responseText}`);
30
+ }
31
+ let parsedJson;
32
+ try {
33
+ parsedJson = JSON.parse(responseText);
34
+ }
35
+ catch (err) {
36
+ throw new Error(`Invalid JSON from server: ${responseText}`);
37
+ }
38
+ const parsed = tool_schemas_js_1.ToolResponseSchema.safeParse(parsedJson);
39
+ if (parsed.success === false) {
40
+ throw new Error(`Unexpected response shape: ${JSON.stringify(parsed.error.flatten())}`);
41
+ }
42
+ return parsed.data;
43
+ }
44
+ static printResponse(response) {
45
+ for (const part of response.content) {
46
+ console.log(part.text);
47
+ }
48
+ }
49
+ }
50
+ exports.HttpClient = HttpClient;
51
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/http-client.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,kFAAqG;AAErG,+EAA+E;AAC/E,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAE/E,MAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAA+B;QAClD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC;QACzD,OAAO,uBAAuB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,IAAa;QACxE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,SAAS,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAC;YACJ,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,oCAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,QAAsB;QAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;CACD;AAxCD,gCAwCC"}
@@ -0,0 +1,12 @@
1
+ export declare class ServerManager {
2
+ static status(serverUrl: string): Promise<'running' | 'stopped'>;
3
+ static ensureRunning(serverUrl: string): Promise<void>;
4
+ static start(serverUrl: string): Promise<void>;
5
+ static stop(serverUrl: string): Promise<void>;
6
+ private static isLocalUrl;
7
+ private static parsePort;
8
+ private static isAlive;
9
+ private static readLogTail;
10
+ private static sleep;
11
+ }
12
+ //# sourceMappingURL=server-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/server-manager.ts"],"names":[],"mappings":"AA4BA,qBAAa,aAAa;WACZ,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;WAezD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAU/C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAuDvC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDnD,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,MAAM,CAAC,SAAS;IAaxB,OAAO,CAAC,MAAM,CAAC,OAAO;IAWtB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,CAAC,MAAM,CAAC,KAAK;CAGpB"}