site-agent-pro 1.0.6 → 1.0.7
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.
- package/README.md +18 -50
- package/dist/cli/run.js +21 -15
- package/dist/core/runner.js +5 -3
- package/dist/dashboard/server.js +39 -1
- package/dist/utils/browser.js +48 -0
- package/docs/01-installation.md +23 -95
- package/docs/02-running-your-first-audit.md +6 -3
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -62,66 +62,34 @@ User submits URL + tasks
|
|
|
62
62
|
|
|
63
63
|
## Quick Start
|
|
64
64
|
|
|
65
|
-
> **
|
|
66
|
-
> ```bash
|
|
67
|
-
> npm install --save-dev site-agent-pro
|
|
68
|
-
>
|
|
69
|
-
> # Run a quick audit
|
|
70
|
-
> site-agent-pro --url http://localhost:3000 --task "Check the homepage"
|
|
71
|
-
>
|
|
72
|
-
> # OR launch the web UI to enter tasks visually
|
|
73
|
-
> site-agent-pro ui
|
|
74
|
-
> ```
|
|
75
|
-
> See [Programmatic API](#programmatic-api) for scripted and CI usage.
|
|
76
|
-
|
|
77
|
-
### 1. Install (self-hosted / contributor setup)
|
|
65
|
+
> **Site Agent Pro** is a zero-config AI visitor. Install it, initialize your identity, and run your first audit in seconds.
|
|
78
66
|
|
|
79
|
-
|
|
80
|
-
npm install
|
|
81
|
-
npm run browser:install
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 2. Configure
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
cp .env.example .env
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Set your LLM provider in `.env`:
|
|
67
|
+
### 1. Install & Initialize
|
|
91
68
|
|
|
92
69
|
```bash
|
|
93
|
-
#
|
|
94
|
-
|
|
95
|
-
OPENAI_API_KEY=your_key_here
|
|
70
|
+
# Install globally
|
|
71
|
+
npm install -g site-agent-pro
|
|
96
72
|
|
|
97
|
-
|
|
98
|
-
|
|
73
|
+
# Set up your identity (OpenAI Key, Wallet, etc.)
|
|
74
|
+
site-agent-pro init
|
|
99
75
|
```
|
|
100
76
|
|
|
101
|
-
|
|
102
|
-
If you prefer not to save sensitive credentials in your `.env` file, you can pass them directly via the CLI:
|
|
77
|
+
### 2. Run an Audit
|
|
103
78
|
|
|
104
|
-
|
|
105
|
-
npx site-agent-pro --url https://example.com \
|
|
106
|
-
--openai-api-key "sk-..." \
|
|
107
|
-
--imap-password "your-app-password" \
|
|
108
|
-
--auth-password "test-user-password" \
|
|
109
|
-
--private-key "0x..."
|
|
110
|
-
```
|
|
111
|
-
CLI flags always take precedence over values in `.env`.
|
|
112
|
-
|
|
113
|
-
### 3. Run
|
|
79
|
+
The agent handles everything else, including **automatically installing its own browser** on the first run.
|
|
114
80
|
|
|
115
81
|
```bash
|
|
116
|
-
# Run
|
|
117
|
-
|
|
118
|
-
--task "Open pricing and compare the visible plans before signup"
|
|
82
|
+
# Run a quick audit
|
|
83
|
+
site-agent-pro --url https://google.com --task "Check the homepage"
|
|
119
84
|
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
-
# → http://localhost:4173
|
|
85
|
+
# OR launch the web UI to enter tasks visually
|
|
86
|
+
site-agent-pro ui
|
|
123
87
|
```
|
|
124
88
|
|
|
89
|
+
### 3. View Results
|
|
90
|
+
|
|
91
|
+
Artifacts are saved to `data/runs/<run-id>/` (or your current directory if using the local `.env`):
|
|
92
|
+
|
|
125
93
|
### 4. View Results
|
|
126
94
|
|
|
127
95
|
Artifacts are saved to `runs/<run-id>/`:
|
|
@@ -264,7 +232,7 @@ For full control, import the lower-level API directly:
|
|
|
264
232
|
import { runAuditJob, buildCustomTaskSuite, normalizeCustomTasks } from "site-agent-pro";
|
|
265
233
|
```
|
|
266
234
|
|
|
267
|
-
> **Note:** site-agent-pro requires Playwright's Chromium browser. Run
|
|
235
|
+
> **Note:** site-agent-pro requires Playwright's Chromium browser. Run `` once after installing the package.
|
|
268
236
|
|
|
269
237
|
---
|
|
270
238
|
|
|
@@ -608,7 +576,7 @@ This repo now targets a standard Render web service deployment:
|
|
|
608
576
|
The repo root includes a Render Blueprint with:
|
|
609
577
|
|
|
610
578
|
- `runtime: node`
|
|
611
|
-
- `buildCommand: npm ci && npm run build &&
|
|
579
|
+
- `buildCommand: npm ci && npm run build && `
|
|
612
580
|
- `startCommand: npm run render:start`
|
|
613
581
|
- `healthCheckPath: /health`
|
|
614
582
|
- a persistent disk mounted at `/opt/render/project/src/data`
|
package/dist/cli/run.js
CHANGED
|
@@ -15,6 +15,25 @@ import { resolveRunDir } from "../utils/files.js";
|
|
|
15
15
|
import { info, warn } from "../utils/log.js";
|
|
16
16
|
import { startDashboard } from "../dashboard/server.js";
|
|
17
17
|
import { updateWalletSettings } from "../wallet/wallet.js";
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import { fileURLToPath } from "node:url";
|
|
20
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname = path.dirname(__filename);
|
|
22
|
+
let pkgVersion = "1.0.0";
|
|
23
|
+
try {
|
|
24
|
+
let pkgDir = __dirname;
|
|
25
|
+
for (let i = 0; i < 5; i++) {
|
|
26
|
+
const pkgPath = path.join(pkgDir, "package.json");
|
|
27
|
+
if (fs.existsSync(pkgPath)) {
|
|
28
|
+
pkgVersion = JSON.parse(fs.readFileSync(pkgPath, "utf8")).version;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
pkgDir = path.dirname(pkgDir);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
// Ignored fallback
|
|
36
|
+
}
|
|
18
37
|
const program = new Command();
|
|
19
38
|
function summarizeCliPath(filePath) {
|
|
20
39
|
const relativePath = path.relative(process.cwd(), filePath);
|
|
@@ -62,21 +81,8 @@ function openUrl(url) {
|
|
|
62
81
|
}
|
|
63
82
|
program
|
|
64
83
|
.name("site-agent-pro")
|
|
65
|
-
.description("AI-powered browser agent for website auditing and side-by-side development")
|
|
66
|
-
|
|
67
|
-
.command("install-browsers")
|
|
68
|
-
.description("Download the necessary browser binaries (Playwright Chromium)")
|
|
69
|
-
.action(async () => {
|
|
70
|
-
const { execSync } = await import("node:child_process");
|
|
71
|
-
console.log("Downloading browsers... this may take a minute.");
|
|
72
|
-
try {
|
|
73
|
-
execSync("npx playwright install chromium", { stdio: "inherit" });
|
|
74
|
-
console.log("✅ Browsers installed successfully!");
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
console.error(`❌ Failed to install browsers: ${err.message}`);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
84
|
+
.description("AI-powered browser agent for website auditing and side-by-side development")
|
|
85
|
+
.version(pkgVersion);
|
|
80
86
|
program
|
|
81
87
|
.command("init")
|
|
82
88
|
.description("Initialize global configuration at ~/.site-agent-pro/.env")
|
package/dist/core/runner.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { devices } from "playwright";
|
|
4
4
|
import { captureInboxCheckpoint, waitForVerificationEmail } from "../auth/inbox.js";
|
|
5
5
|
import { getMailboxConfig, getPreferredAccessIdentity, isAuthBootstrapConfigured } from "../auth/profile.js";
|
|
6
6
|
import { detectAuthWall, runAuthFlowInContext } from "../auth/runner.js";
|
|
@@ -1695,14 +1695,16 @@ export async function runTaskSuite(options) {
|
|
|
1695
1695
|
? `Launching MetaMask with persistent Chromium user data from '${summarizeLocalPath(userDataDir)}'.`
|
|
1696
1696
|
: `Launching MetaMask with the default persistent Chromium user data at '${summarizeLocalPath(userDataDir)}'. Set WALLET_METAMASK_USER_DATA_DIR to reuse a specific unlocked MetaMask profile.`
|
|
1697
1697
|
});
|
|
1698
|
-
|
|
1698
|
+
const { launchPersistentWithSelfHealing } = await import("../utils/browser.js");
|
|
1699
|
+
context = await launchPersistentWithSelfHealing(userDataDir, {
|
|
1699
1700
|
...(await resolveLaunchOptions({ headed: options.headed })),
|
|
1700
1701
|
...contextOptions
|
|
1701
1702
|
});
|
|
1702
1703
|
browser = context.browser();
|
|
1703
1704
|
}
|
|
1704
1705
|
else {
|
|
1705
|
-
|
|
1706
|
+
const { launchWithSelfHealing } = await import("../utils/browser.js");
|
|
1707
|
+
browser = await launchWithSelfHealing(await resolveLaunchOptions({ headed: options.headed }));
|
|
1706
1708
|
context = await browser.newContext(contextOptions);
|
|
1707
1709
|
}
|
|
1708
1710
|
await installPlaywrightPageCompat(context);
|
package/dist/dashboard/server.js
CHANGED
|
@@ -34,6 +34,28 @@ function resolveDashboardHost() {
|
|
|
34
34
|
}
|
|
35
35
|
return process.env.RENDER === "true" ? RENDER_HOST : DEFAULT_HOST;
|
|
36
36
|
}
|
|
37
|
+
function resolveDashboardDistDir() {
|
|
38
|
+
// __dirname may point to src/dashboard (tsx dev) or dist/dashboard (node prod).
|
|
39
|
+
// Walk up until we find the project root (contains package.json), then use dist/dashboard.
|
|
40
|
+
let dir = __dirname;
|
|
41
|
+
for (let i = 0; i < 5; i++) {
|
|
42
|
+
if (fs.existsSync(path.join(dir, "package.json"))) {
|
|
43
|
+
return path.join(dir, "dist", "dashboard");
|
|
44
|
+
}
|
|
45
|
+
dir = path.dirname(dir);
|
|
46
|
+
}
|
|
47
|
+
// Fallback: assume __dirname IS dist/dashboard already
|
|
48
|
+
return __dirname;
|
|
49
|
+
}
|
|
50
|
+
const DASHBOARD_DIST_DIR = resolveDashboardDistDir();
|
|
51
|
+
function readDashboardScript(fileName) {
|
|
52
|
+
const filePath = path.join(DASHBOARD_DIST_DIR, fileName);
|
|
53
|
+
if (fs.existsSync(filePath)) {
|
|
54
|
+
return fs.readFileSync(filePath, "utf8");
|
|
55
|
+
}
|
|
56
|
+
warn(`Dashboard script not found: ${filePath} — run 'npm run build' first.`);
|
|
57
|
+
return "";
|
|
58
|
+
}
|
|
37
59
|
function renderDashboardHtml() {
|
|
38
60
|
return `<!doctype html>
|
|
39
61
|
<html lang="en">
|
|
@@ -198,7 +220,7 @@ async function handleRequest(req, res, args) {
|
|
|
198
220
|
if (dashboardScripts.includes(pathParts[0] || "")) {
|
|
199
221
|
const requestedName = pathParts[0];
|
|
200
222
|
const diskName = requestedName === "app.js" ? "client.js" : requestedName;
|
|
201
|
-
const distPath = path.join(
|
|
223
|
+
const distPath = path.join(DASHBOARD_DIST_DIR, diskName);
|
|
202
224
|
if (fs.existsSync(distPath)) {
|
|
203
225
|
sendText(res, 200, fs.readFileSync(distPath, "utf8"), "application/javascript");
|
|
204
226
|
return;
|
|
@@ -436,6 +458,22 @@ export async function startDashboard(options = {}) {
|
|
|
436
458
|
// Patch appBaseUrl into the request handler closure via a shared ref
|
|
437
459
|
server.__appBaseUrl = appBaseUrl;
|
|
438
460
|
info(`Dashboard ready at ${url}`);
|
|
461
|
+
// Auto-open browser in non-CI environments
|
|
462
|
+
if (process.env.NODE_ENV !== "test" && process.env.CI !== "true" && options.open !== false) {
|
|
463
|
+
import("node:child_process").then(({ exec }) => {
|
|
464
|
+
const command = process.platform === "win32" ? "start" : process.platform === "darwin" ? "open" : "xdg-open";
|
|
465
|
+
exec(`${command} ${url}`);
|
|
466
|
+
}).catch(() => {
|
|
467
|
+
// Ignore if opening fails
|
|
468
|
+
});
|
|
469
|
+
}
|
|
439
470
|
submissionService.resumePendingSubmissions();
|
|
440
471
|
return { server, port: boundPort, host, url };
|
|
441
472
|
}
|
|
473
|
+
// Support standalone execution via 'tsx src/dashboard/server.ts' or 'node dist/dashboard/server.js'
|
|
474
|
+
if (import.meta.url === `file://${process.argv[1]}` || process.argv[1]?.endsWith("server.ts") || process.argv[1]?.endsWith("server.js")) {
|
|
475
|
+
startDashboard().catch((error) => {
|
|
476
|
+
console.error(`\n[ERROR] Dashboard failed to start: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
477
|
+
process.exit(1);
|
|
478
|
+
});
|
|
479
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { chromium } from "playwright";
|
|
3
|
+
import { info } from "./log.js";
|
|
4
|
+
/**
|
|
5
|
+
* Professional self-healing browser launcher.
|
|
6
|
+
* If the Playwright browser is missing, it automatically installs it.
|
|
7
|
+
*/
|
|
8
|
+
export async function launchWithSelfHealing(launchOptions) {
|
|
9
|
+
try {
|
|
10
|
+
return await chromium.launch(launchOptions);
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
if (err.message.includes("Executable doesn't exist") || err.message.includes("playwright install")) {
|
|
14
|
+
info("🚀 Playwright browser missing. Automatically installing Chromium...");
|
|
15
|
+
try {
|
|
16
|
+
execSync("npx playwright install chromium", { stdio: "inherit" });
|
|
17
|
+
info("✅ Browser installed successfully! Retrying launch...");
|
|
18
|
+
return await chromium.launch(launchOptions);
|
|
19
|
+
}
|
|
20
|
+
catch (installErr) {
|
|
21
|
+
throw new Error(`Failed to auto-install Playwright browser: ${installErr.message}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Self-healing launcher for persistent context (e.g. for MetaMask/Web3 flows).
|
|
29
|
+
*/
|
|
30
|
+
export async function launchPersistentWithSelfHealing(userDataDir, options) {
|
|
31
|
+
try {
|
|
32
|
+
return await chromium.launchPersistentContext(userDataDir, options);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (err.message.includes("Executable doesn't exist") || err.message.includes("playwright install")) {
|
|
36
|
+
info("🚀 Playwright browser missing. Automatically installing Chromium...");
|
|
37
|
+
try {
|
|
38
|
+
execSync("npx playwright install chromium", { stdio: "inherit" });
|
|
39
|
+
info("✅ Browser installed successfully! Retrying launch...");
|
|
40
|
+
return await chromium.launchPersistentContext(userDataDir, options);
|
|
41
|
+
}
|
|
42
|
+
catch (installErr) {
|
|
43
|
+
throw new Error(`Failed to auto-install Playwright browser: ${installErr.message}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
}
|
package/docs/01-installation.md
CHANGED
|
@@ -1,134 +1,62 @@
|
|
|
1
1
|
# 01 - Installation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Site Agent Pro** is designed to be a zero-config experience. Choose the path that fits your workflow.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Track A —
|
|
7
|
+
## Track A — Global CLI (Recommended for most users)
|
|
8
8
|
|
|
9
|
-
This is the
|
|
9
|
+
This is the fastest way to get started. Run it from any folder on your machine.
|
|
10
10
|
|
|
11
|
-
### 1.
|
|
12
|
-
|
|
13
|
-
- Node.js 20.10 or newer
|
|
14
|
-
- npm 10 or newer
|
|
11
|
+
### 1. Install Globally
|
|
15
12
|
|
|
16
13
|
```bash
|
|
17
|
-
|
|
18
|
-
npm -v
|
|
14
|
+
npm install -g site-agent-pro
|
|
19
15
|
```
|
|
20
16
|
|
|
21
|
-
### 2.
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm install --save-dev site-agent-pro
|
|
25
|
-
```
|
|
17
|
+
### 2. Initialize Your Identity
|
|
26
18
|
|
|
27
|
-
|
|
19
|
+
Run the `init` command to set up your global configuration (~/.site-agent-pro/.env). This includes your OpenAI API Key and optionally your Paystack and Wallet details.
|
|
28
20
|
|
|
29
21
|
```bash
|
|
30
|
-
|
|
22
|
+
site-agent-pro init
|
|
31
23
|
```
|
|
32
24
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
### 4. Set your API key
|
|
36
|
-
|
|
37
|
-
Create a `.env` file (or set environment variables) in your project root:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
OPENAI_API_KEY=your_real_key_here
|
|
41
|
-
```
|
|
25
|
+
### 3. Run Your First Audit
|
|
42
26
|
|
|
43
|
-
|
|
27
|
+
The agent handles everything else, including **automatically installing the required browser binaries** on the first run.
|
|
44
28
|
|
|
45
29
|
```bash
|
|
46
|
-
|
|
47
|
-
OLLAMA_MODEL=llama3.1:8b
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 5. Run your first audit
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Against your running dev server
|
|
54
|
-
site-agent-pro --url http://localhost:3000 --task "Check the homepage CTA"
|
|
55
|
-
|
|
56
|
-
# Or add it to your package.json scripts
|
|
57
|
-
# "audit": "site-agent-pro --url http://localhost:3000 --task 'Check the homepage'"
|
|
58
|
-
# npm run audit
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 6. Or use it programmatically
|
|
62
|
-
|
|
63
|
-
```ts
|
|
64
|
-
import { runAudit } from "site-agent-pro";
|
|
65
|
-
|
|
66
|
-
const result = await runAudit({
|
|
67
|
-
url: "http://localhost:3000",
|
|
68
|
-
tasks: ["Check the homepage CTA", "Try the signup flow"],
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
console.log(`Score: ${result.report.overall_score}/10`);
|
|
72
|
-
|
|
73
|
-
if (result.report.overall_score < 7) {
|
|
74
|
-
process.exit(1); // Fail CI
|
|
75
|
-
}
|
|
30
|
+
site-agent-pro --url https://google.com --task "Verify the page loads correctly"
|
|
76
31
|
```
|
|
77
32
|
|
|
78
33
|
---
|
|
79
34
|
|
|
80
|
-
## Track B —
|
|
81
|
-
|
|
82
|
-
Use this if you want to run the full web dashboard, modify the source, or self-host the submission server.
|
|
83
|
-
|
|
84
|
-
### 1. Prerequisites
|
|
85
|
-
|
|
86
|
-
- Node.js 20.10 or newer
|
|
87
|
-
- npm 10 or newer
|
|
88
|
-
- Git
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
node -v
|
|
92
|
-
npm -v
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### 2. Clone the repository
|
|
35
|
+
## Track B — devDependency (For CI/CD and scripted usage)
|
|
96
36
|
|
|
97
|
-
|
|
98
|
-
git clone https://github.com/your-org/site-agent-pro.git
|
|
99
|
-
cd site-agent-pro
|
|
100
|
-
```
|
|
37
|
+
Ideal for auditing your own products during development or as part of a build pipeline.
|
|
101
38
|
|
|
102
|
-
###
|
|
39
|
+
### 1. Install in your project
|
|
103
40
|
|
|
104
41
|
```bash
|
|
105
|
-
npm install
|
|
42
|
+
npm install --save-dev site-agent-pro
|
|
106
43
|
```
|
|
107
44
|
|
|
108
|
-
###
|
|
45
|
+
### 2. Run with npx
|
|
109
46
|
|
|
110
|
-
|
|
111
|
-
npm run browser:install
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 5. Create your environment file
|
|
47
|
+
Since it's a local dependency, use `npx` to run it. It will still use your global identity if found, or a local `.env`.
|
|
115
48
|
|
|
116
49
|
```bash
|
|
117
|
-
|
|
50
|
+
npx site-agent-pro --url http://localhost:3000 --task "Check homepage"
|
|
118
51
|
```
|
|
119
52
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
Open `.env` and set:
|
|
53
|
+
---
|
|
123
54
|
|
|
124
|
-
|
|
125
|
-
OPENAI_API_KEY=your_real_key_here
|
|
126
|
-
```
|
|
55
|
+
## Troubleshooting
|
|
127
56
|
|
|
128
|
-
###
|
|
57
|
+
### "Executable doesn't exist"
|
|
58
|
+
If for any reason the automatic installation fails (e.g., restricted network), you can force a browser install manually:
|
|
129
59
|
|
|
130
60
|
```bash
|
|
131
|
-
|
|
61
|
+
npx playwright install chromium
|
|
132
62
|
```
|
|
133
|
-
|
|
134
|
-
If this fails, do not keep going and pretend everything is fine. Fix the error first.
|
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
| Setup | Command |
|
|
6
6
|
|---|---|
|
|
7
|
-
| Installed
|
|
8
|
-
|
|
|
7
|
+
| Global CLI (Installed via -g) | `site-agent-pro --url ... --task "..."` |
|
|
8
|
+
| devDependency (npx) | `npx site-agent-pro --url ... --task "..."` |
|
|
9
|
+
| Contributor (npm run dev) | `npm run dev -- --url ... --task "..."` |
|
|
9
10
|
|
|
10
|
-
All examples below use the `site-agent-pro` command.
|
|
11
|
+
All examples below use the `site-agent-pro` command.
|
|
12
|
+
|
|
13
|
+
> **Important**: Before running your first audit, make sure you've run `site-agent-pro init` to set up your API keys globally.
|
|
11
14
|
|
|
12
15
|
---
|
|
13
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "site-agent-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI-powered browser agent that tests websites like a real user and produces evidence-based, scored reports.",
|
|
6
6
|
"bin": {
|
|
@@ -23,12 +23,13 @@
|
|
|
23
23
|
"dev": "tsx src/cli/run.ts",
|
|
24
24
|
"trade:run": "tsx src/cli/trade.ts",
|
|
25
25
|
"backfill:site-checks": "tsx src/cli/backfillSiteChecks.ts",
|
|
26
|
-
"dashboard": "tsx src/
|
|
27
|
-
"dashboard:start": "node dist/
|
|
28
|
-
"render:start": "node dist/
|
|
26
|
+
"dashboard": "tsx src/cli/run.ts ui",
|
|
27
|
+
"dashboard:start": "node dist/cli/run.js ui",
|
|
28
|
+
"render:start": "node dist/cli/run.js ui",
|
|
29
29
|
"format": "prettier --write .",
|
|
30
30
|
"lint": "eslint .",
|
|
31
31
|
"browser:install": "playwright install chromium",
|
|
32
|
+
"postinstall": "playwright install chromium",
|
|
32
33
|
"paystack:test": "tsx src/paystack/test-paystack.ts"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|