pseolint 0.4.3 → 0.5.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.
package/README.md CHANGED
@@ -4,6 +4,31 @@
4
4
 
5
5
  The only tool purpose-built for **programmatic SEO compliance**. Audits page *relationships*, not just pages. Detects the exact patterns Google's SpamBrain targets.
6
6
 
7
+ ## What's new in v0.5.2 — credibility layer
8
+
9
+ - **4 new content-quality rules** addressing the blind-spot audit's tier-1 gaps: `content/title-uniqueness` (catches actually-duplicate titles — raw, not entity-masked, so catalog templates with per-record entity values still pass), `content/heading-structure` (H1 presence, single-H1, hierarchy), `content/image-alt-text` (skips decorative images marked `role="presentation"` / `aria-hidden="true"` / `alt=""`), `tech/og-completeness` (the long-promised OG-tag rule that finally ships).
10
+ - **`--authority-score N`** (0-100) — bring-your-own domain authority. `>= 80` shifts the verdict one tier lenient (established brand can absorb shapes a newer site can't). `<= 30` shifts one tier stricter. Raw `risk` number unchanged so CI gates that key off `--ci-threshold` stay stable. The engine itself remains authority-blind by design — no Moz/Ahrefs/Semrush dependency.
11
+ - **`--sample-seed N`** — deterministic stratified sampling. Same seed = same audit = same verdict, run after run. CI gates and calibration runs get reproducible results instead of bouncing across the verdict-ladder boundary.
12
+ - **`spam/doorway-pattern` cluster collapse** — entity-swap-heavy catalogs no longer produce hundreds of per-pair findings; they collapse into one cluster line per template-tied group.
13
+ - **Per-bucket info-severity cap** — info findings can't accumulate to tank a verdict on their own (capped at 50 per category bucket separately from the 100 cap on warning+).
14
+ - **Console formatter** shows `Demoted N rules (X, Y, Z) — <site type> profile; pass --strict to disable` so the engine's reasoning is visible. Markdown formatter collapses info findings under `<details>` so PR comments stay actionable.
15
+ - **Calibrated against reputable in-production pSEO sites.** The full 9-round iteration story (with trade-offs honestly documented) and the blind-spot audit (what we still don't detect) live at [pseolint.dev/methodology](https://pseolint.dev/methodology).
16
+
17
+ ## What's new in v0.5
18
+
19
+ **AI orchestrator (`pseolint orchestrate <domain>`).** Drives an LLM through 25 deterministic tools and produces a **fix manifest** with concrete copy-paste patches (rewritten H1s, JSON-LD blocks, robots.txt diffs, internal-link suggestions). Every patch passes a deterministic schema validator before reaching the manifest — the LLM can't ship a malformed JSON-LD block or unsafe HTML.
20
+
21
+ ```bash
22
+ export ANTHROPIC_API_KEY=sk-...
23
+ pseolint orchestrate https://example.com \
24
+ --max-cost 3 \
25
+ --manifest-out manifest.json
26
+ ```
27
+
28
+ Live event stream to stdout, three exit codes (0 clean / 1 didn't finish / 2 some patches dropped). See `pseolint orchestrate --help` for full options.
29
+
30
+ **Change-driven monitoring** also ships in v0.5. When prior state exists, the auditor decides which URLs to fetch *before* the network round-trip using a 7-reason matrix (new / age / ruleset / recheck / lastmod / GSC / no-signal). Sites with reliable sitemap `<lastmod>` (Next.js, WordPress/Yoast, Astro) typically see ~95% fewer fetches on steady-state monitoring runs. `--since` is an alias for `--mode=monitoring`. New: `--mode=monitoring|fresh` and `--age-floor-days=N`. State schema bumped to v2 (existing `.pseolint/state.json` files trigger one baseline re-audit). See `docs/superpowers/specs/2026-05-01-change-driven-monitoring-design.md`.
31
+
7
32
  ## What's new in v0.4
8
33
 
9
34
  v0.4 reshapes the audit output around a single **verdict** (`ready` / `caution` / `concerning` / `critical`) plus four category grades (`Integrity`, `Discoverability`, `Citation`, `Data`). The old numeric "SpamBrain Risk Score" is no longer the headline — it remains internally as `risk` for CI threshold tuning, trends, and alert gates, but operators ship on verdict, not on a number that needs a translation table.
@@ -185,24 +210,52 @@ pseolint is a polite crawler by default — it sets a distinct `User-Agent`, res
185
210
 
186
211
  If pSEO pages return CDN-cached responses for normal GET requests, the audit costs you effectively zero DB load regardless of page count.
187
212
 
188
- ### Run state + delta mode
213
+ ### Run state + change-driven monitoring (v0.5)
189
214
 
190
- Persist audit state across runs for CI/monitoring:
215
+ Persist audit state across runs and let pseolint decide which URLs to refetch:
191
216
 
192
217
  ```bash
193
218
  # First run (writes baseline state)
194
219
  pseolint https://example.com --state
195
220
 
196
- # Subsequent run: audit only changed pages
197
- pseolint https://example.com --state --since
221
+ # Subsequent runs auto-enter monitoring mode — no flag required.
222
+ # The pre-fetch decision matrix skips URLs without change signals.
223
+ pseolint https://example.com --state
224
+
225
+ # Force a full re-audit even with prior state
226
+ pseolint https://example.com --state --mode=fresh
227
+
228
+ # Tighten the age floor (default: 7 days). URLs older than this re-fetch regardless.
229
+ pseolint https://example.com --state --age-floor-days=3
198
230
 
199
- # Monitoring: fail on new rule ID regressions
231
+ # CI gate that fails when a *new* rule ID starts firing on actually-fetched URLs
200
232
  pseolint https://example.com --state --exit-on-regression
233
+
234
+ # Back-compat: --since still works (alias for --mode=monitoring)
235
+ pseolint https://example.com --state --since
236
+ ```
237
+
238
+ **Decision matrix.** For each URL in the candidate set, the first matching reason wins:
239
+
240
+ | Reason | Trigger |
241
+ |---|---|
242
+ | `new` | URL not in prior state |
243
+ | `age` | Prior fetch older than `--age-floor-days` (default 7) |
244
+ | `ruleset` | `CORE_RULESET_VERSION` changed since last run |
245
+ | `recheck` | Prior `error`/`critical`/`warning` finding (info-only carries forward) |
246
+ | `lastmod` | Sitemap `<lastmod>` newer than prior fetch |
247
+ | `gsc` | GSC delta crosses threshold (Pro / when wired) |
248
+ | `no-signal` | No sitemap-lastmod and no GSC for this URL |
249
+ | `unchanged` | None of the above — **skip the fetch**, carry findings forward |
250
+
251
+ End-of-run summary line:
252
+ ```
253
+ Monitoring: 47/4012 URLs re-scraped (recheck=23, lastmod=12, age=8, new=4), 3965 carried forward.
201
254
  ```
202
255
 
203
- State is stored at `.pseolint/state.json` by default. Commit it to share baseline across CI workers. On the first run (no prior state), `--since` and `--exit-on-regression` bootstrap gracefully they audit everything and write state without erroring.
256
+ State is stored at `.pseolint/state.json` by default. Commit it to share baseline across CI workers. State schema v2 (v0.5+); upgrading from v0.4 discards the old file with a warning and triggers one baseline re-audit. Switching between `--render` modes also invalidates prior state.
204
257
 
205
- Switching between `--render` modes invalidates prior state (different renderMode produces different hashes), triggering a full re-audit.
258
+ **Savings depend on sitemap hygiene.** Sites whose sitemaps emit `<lastmod>` (Next.js, WordPress/Yoast, Astro) get up to ~95% fetch reduction on steady-state monitoring runs. Sites without `<lastmod>` hit `no-signal` and refetch every URL — bandwidth is still saved via cache.ts conditional GETs but round-trips aren't skipped (a HEAD-fallback path is on the roadmap).
206
259
 
207
260
  ### Stratified sampling
208
261
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8GA,wBAAsB,MAAM,CAC1B,IAAI,GAAE,MAAM,EAA0B,GACrC,OAAO,CAAC,MAAM,CAAC,CA8LjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgHA,wBAAsB,MAAM,CAC1B,IAAI,GAAE,MAAM,EAA0B,GACrC,OAAO,CAAC,MAAM,CAAC,CAiRjB"}
package/dist/cli.js CHANGED
@@ -68,7 +68,9 @@ export async function runCli(args = process.argv.slice(2)) {
68
68
  .option("--strategy <random|stratified>", "Sampling strategy when --sample-size is set", "stratified")
69
69
  .option("--max-per-template <n>", "Cap samples per URL template cluster", "0")
70
70
  .option("--state [path]", "Enable state persistence (default path: .pseolint/state.json)")
71
- .option("--since", "Delta mode: audit only URLs changed since prior --state (requires --state)")
71
+ .option("--since", "v0.5+ alias for --mode=monitoring (kept for back-compat; auto-monitoring is the default when prior state exists)")
72
+ .option("--mode <monitoring|fresh>", "v0.5+ change-driven monitoring mode. 'monitoring' applies the pre-fetch decision matrix (default when prior state exists). 'fresh' forces a full re-audit even with prior state.")
73
+ .option("--age-floor-days <n>", "v0.5+ minimum days since a URL's last fetch before monitoring forces a re-fetch regardless of other signals (default: pseolint core's DEFAULT_AGE_FLOOR_DAYS, currently 7)")
72
74
  .option("--exit-on-regression", "Exit non-zero when new rule IDs fire vs prior --state")
73
75
  .option("--ai", "Enable AI triage of findings")
74
76
  .option("--ai-provider <id>", "AI provider: anthropic | openai | google | mistral | groq | xai | cohere | ollama (default: auto-detect)")
@@ -126,6 +128,61 @@ export async function runCli(args = process.argv.slice(2)) {
126
128
  const { runDiffCommand } = await import("./commands/diff.js");
127
129
  exitCode = await runDiffCommand(baselinePath, currentPath, { noColor: !opts.color });
128
130
  });
131
+ program
132
+ .command("orchestrate <domain>")
133
+ .description("Run the AI-orchestrated auditor against a domain. Produces a fix manifest, validates every patch, prints a structured diff summary.")
134
+ .option("--ai-provider <id>", "AI provider (anthropic | openai | google | ollama). Default: env-var auto-detect.")
135
+ .option("--ai-model <id>", "Model id, e.g. claude-opus-4-7. Default: provider's default.")
136
+ .option("--ai-key <key>", "API key (or use the provider's env var).")
137
+ .option("--max-cost <usd>", "Max session USD cap. Default $5.", parseFloat)
138
+ .option("--max-tool-calls <n>", "Max tool calls per session. Default 100.", (v) => parseInt(v, 10))
139
+ .option("--max-wall-seconds <n>", "Max wall-clock seconds. Default 300.", (v) => parseInt(v, 10))
140
+ .option("--watchdog <n>", "Inject convergence reminder every N tool calls (0 disables). Default 20.", (v) => parseInt(v, 10))
141
+ .option("--ndjson <path>", "Write durable session log to this NDJSON file.")
142
+ .option("--manifest-out <path>", "Write final manifest + validation + diff JSON to this path.")
143
+ .option("--quiet", "Suppress live event stream; print only the summary.")
144
+ .option("--no-color", "Disable colored output.")
145
+ .action(async (domain, o) => {
146
+ const { runOrchestrateCommand } = await import("./commands/orchestrate.js");
147
+ exitCode = await runOrchestrateCommand({
148
+ domain,
149
+ aiProvider: o.aiProvider,
150
+ aiModel: o.aiModel,
151
+ aiKey: o.aiKey,
152
+ maxCostUsd: o.maxCost,
153
+ maxToolCalls: o.maxToolCalls,
154
+ maxWallSeconds: o.maxWallSeconds,
155
+ watchdogIntervalCalls: o.watchdog,
156
+ ndjsonPath: o.ndjson,
157
+ manifestOut: o.manifestOut,
158
+ quiet: o.quiet,
159
+ noColor: o.color === false,
160
+ });
161
+ });
162
+ program
163
+ .command("orchestrate-batch")
164
+ .description("Run the AI orchestrator across a list of domains. Emits aggregate stats + per-site manifests for launch artifacts / batch audits.")
165
+ .option("--sites <path>", "Path to a text file with one URL per line (blank lines + # comments OK)", "sites.txt")
166
+ .option("--out <dir>", "Output directory for manifests + summary", ".pseolint/batch")
167
+ .option("--max-cost <usd>", "Per-site USD cap. Default $2.", parseFloat, 2)
168
+ .option("--max-tool-calls <n>", "Per-site tool-call cap. Default 60.", (v) => parseInt(v, 10), 60)
169
+ .option("--max-wall-seconds <n>", "Per-site wall-clock cap. Default 240.", (v) => parseInt(v, 10), 240)
170
+ .option("--concurrency <n>", "Sites in flight at once. Default 1 (sequential — parallelism burns money on rate-limit errors).", (v) => parseInt(v, 10), 1)
171
+ .option("--dry-run", "Print the site list and exit without auditing anything.")
172
+ .option("--no-color", "Disable colored output.")
173
+ .action(async (o) => {
174
+ const { runOrchestrateBatchCommand } = await import("./commands/orchestrate-batch.js");
175
+ exitCode = await runOrchestrateBatchCommand({
176
+ sitesPath: o.sites,
177
+ outDir: o.out,
178
+ maxCostUsd: o.maxCost,
179
+ maxToolCalls: o.maxToolCalls,
180
+ maxWallSeconds: o.maxWallSeconds,
181
+ concurrency: o.concurrency,
182
+ dryRun: o.dryRun ?? false,
183
+ noColor: o.color === false,
184
+ });
185
+ });
129
186
  program
130
187
  .command("upload <report>")
131
188
  .description("Upload an audit JSON report to the pseolint Pro ingestion endpoint")
@@ -271,15 +328,30 @@ async function runAudit(source, opts) {
271
328
  return 1;
272
329
  }
273
330
  }
274
- if ((opts.since || opts.exitOnRegression) && !opts.state) {
275
- console.error("Error: --since and --exit-on-regression require --state to be set");
331
+ if ((opts.since || opts.exitOnRegression || opts.mode) && !opts.state) {
332
+ console.error("Error: --since, --mode, and --exit-on-regression require --state to be set");
333
+ return 1;
334
+ }
335
+ if (opts.mode !== undefined && opts.mode !== "monitoring" && opts.mode !== "fresh") {
336
+ console.error(`Error: --mode must be 'monitoring' or 'fresh', got '${opts.mode}'`);
276
337
  return 1;
277
338
  }
278
- if (opts.state || opts.since || opts.exitOnRegression) {
339
+ let ageFloorDaysParsed;
340
+ if (opts.ageFloorDays !== undefined) {
341
+ const n = Number(opts.ageFloorDays);
342
+ if (!Number.isFinite(n) || n <= 0 || !Number.isInteger(n)) {
343
+ console.error(`Error: --age-floor-days must be a positive integer, got '${opts.ageFloorDays}'`);
344
+ return 1;
345
+ }
346
+ ageFloorDaysParsed = n;
347
+ }
348
+ if (opts.state || opts.since || opts.exitOnRegression || opts.mode) {
279
349
  cliFlags.state = {
280
350
  path: typeof opts.state === "string" ? opts.state : undefined,
281
351
  since: Boolean(opts.since),
282
352
  exitOnRegression: Boolean(opts.exitOnRegression),
353
+ ...(opts.mode ? { mode: opts.mode } : {}),
354
+ ...(ageFloorDaysParsed !== undefined ? { ageFloorDays: ageFloorDaysParsed } : {}),
283
355
  };
284
356
  }
285
357
  // AI flags
@@ -436,6 +508,24 @@ async function runAudit(source, opts) {
436
508
  const mb = (bytesSavedEstimate / (1024 * 1024)).toFixed(2);
437
509
  console.error(`Cache: ${hits}/${total} hits (${mb} MB saved)`);
438
510
  }
511
+ if (summary.scrapePlan) {
512
+ const sp = summary.scrapePlan;
513
+ const total = sp.intended + sp.carriedForward;
514
+ const refetchReasons = Object.entries(sp.reasonCounts)
515
+ .filter(([k]) => k !== "unchanged")
516
+ .sort(([, a], [, b]) => b - a)
517
+ .map(([k, v]) => `${k}=${v}`)
518
+ .join(", ");
519
+ const reasonSuffix = refetchReasons ? ` (${refetchReasons})` : "";
520
+ // Show "fetched / intended" when downstream filters dropped some URLs the
521
+ // matrix wanted to refetch (robots, byte budget, content-type, 4xx).
522
+ // When fetched === intended (the common case) this collapses to the
523
+ // simpler "X URLs re-scraped" form.
524
+ const fetchedDisplay = sp.fetched === sp.intended
525
+ ? `${sp.fetched}`
526
+ : `${sp.fetched}/${sp.intended} (intended)`;
527
+ console.error(`Monitoring: ${fetchedDisplay}/${total} URLs re-scraped${reasonSuffix}, ${sp.carriedForward} carried forward.`);
528
+ }
439
529
  // Format output. The console formatter accepts noColor + verbose; non-console
440
530
  // formatters accept verbose. The formatter-rewrite agent owns these signatures.
441
531
  const verbose = Boolean(opts.explain);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface BatchCliOptions {
2
+ sitesPath: string;
3
+ outDir: string;
4
+ maxCostUsd: number;
5
+ maxToolCalls: number;
6
+ maxWallSeconds: number;
7
+ concurrency: number;
8
+ dryRun: boolean;
9
+ noColor?: boolean;
10
+ }
11
+ /**
12
+ * Run `orchestrate()` against a list of domains, emit aggregate stats +
13
+ * per-site manifest JSON files. Sequential by default — concurrency > 1
14
+ * burns money fast on rate-limit errors. Failures on individual sites
15
+ * don't abort the batch; they're recorded in `summary.json` with their
16
+ * reason.
17
+ *
18
+ * Output layout (under `--out`, default `.pseolint/batch`):
19
+ * summary.json — aggregate metrics across all sites
20
+ * summary.md — markdown table for the launch thread
21
+ * <slug>/manifest.json — full {manifest, validation, diff}
22
+ * <slug>/session.ndjson — durable event log
23
+ */
24
+ export declare function runOrchestrateBatchCommand(opts: BatchCliOptions): Promise<number>;
25
+ //# sourceMappingURL=orchestrate-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate-batch.d.ts","sourceRoot":"","sources":["../../src/commands/orchestrate-batch.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmKD;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA+EvF"}
@@ -0,0 +1,195 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { orchestrate } from "@pseolint/core";
4
+ const RESET = "\x1b[0m";
5
+ const BOLD = "\x1b[1m";
6
+ const DIM = "\x1b[2m";
7
+ const RED = "\x1b[31m";
8
+ const GREEN = "\x1b[32m";
9
+ const YELLOW = "\x1b[33m";
10
+ const CYAN = "\x1b[36m";
11
+ function paint(s, color, strip) {
12
+ return strip ? s : `${color}${s}${RESET}`;
13
+ }
14
+ async function loadSites(path) {
15
+ const text = await readFile(path, "utf8");
16
+ return text
17
+ .split(/\r?\n/)
18
+ .map((line) => line.trim())
19
+ .filter((line) => line.length > 0 && !line.startsWith("#"));
20
+ }
21
+ function slugFor(url) {
22
+ try {
23
+ const u = new URL(url);
24
+ return u.hostname.replace(/^www\./, "").replace(/[^a-z0-9.-]/gi, "_");
25
+ }
26
+ catch {
27
+ return url.replace(/[^a-z0-9.-]/gi, "_").slice(0, 60);
28
+ }
29
+ }
30
+ async function runOne(domain, opts, strip) {
31
+ const slug = slugFor(domain);
32
+ const outDir = join(opts.outDir, slug);
33
+ await mkdir(outDir, { recursive: true });
34
+ const stream = process.stdout;
35
+ stream.write("\n" + paint(`▶ ${domain}`, BOLD + CYAN, strip) + paint(` (slug: ${slug})`, DIM, strip) + "\n");
36
+ const startedAt = Date.now();
37
+ try {
38
+ const result = await orchestrate({
39
+ domain,
40
+ userId: "batch",
41
+ budget: {
42
+ maxSessionUsd: opts.maxCostUsd,
43
+ maxToolCalls: opts.maxToolCalls,
44
+ maxWallSeconds: opts.maxWallSeconds,
45
+ },
46
+ ndjsonPath: join(outDir, "session.ndjson"),
47
+ onEvent: (e) => {
48
+ // Concise progress markers — one char per event family.
49
+ if (e.kind === "tool_call")
50
+ stream.write(paint(".", DIM, strip));
51
+ if (e.kind === "tool_result" && e.result?.ok === false) {
52
+ stream.write(paint("x", RED, strip));
53
+ }
54
+ if (e.kind === "session_finished") {
55
+ const reasonColor = e.reason === "completed" ? GREEN : YELLOW;
56
+ stream.write("\n " +
57
+ paint(`→ ${e.reason} · ${e.usage.toolCallCount} calls · $${e.usage.estimatedUsd.toFixed(3)} · ${(e.usage.elapsedMs / 1000).toFixed(0)}s`, reasonColor + BOLD, strip) +
58
+ "\n");
59
+ }
60
+ },
61
+ });
62
+ if (result.manifest && result.validation && result.diff) {
63
+ await writeFile(join(outDir, "manifest.json"), JSON.stringify({ manifest: result.manifest, validation: result.validation, diff: result.diff }, null, 2), "utf8");
64
+ }
65
+ return {
66
+ domain,
67
+ slug,
68
+ ok: result.session.reason === "completed",
69
+ reason: result.session.reason,
70
+ spentUsd: result.session.usage.estimatedUsd,
71
+ durationSeconds: result.session.usage.elapsedMs / 1000,
72
+ toolCallCount: result.session.usage.toolCallCount,
73
+ verdict: result.manifest?.verdict ?? null,
74
+ pagePatchCount: result.manifest?.pages.length ?? 0,
75
+ templatePatchCount: result.manifest?.templates.length ?? 0,
76
+ domainPatchCount: result.manifest?.domainLevel.length ?? 0,
77
+ validPatches: result.validation?.validPatches ?? 0,
78
+ totalPatches: result.validation?.totalPatches ?? 0,
79
+ error: result.session.error,
80
+ };
81
+ }
82
+ catch (e) {
83
+ const elapsed = (Date.now() - startedAt) / 1000;
84
+ stream.write("\n " + paint(`× failed: ${e instanceof Error ? e.message : String(e)}`, RED, strip) + "\n");
85
+ return {
86
+ domain,
87
+ slug,
88
+ ok: false,
89
+ reason: "thrown_error",
90
+ spentUsd: 0,
91
+ durationSeconds: elapsed,
92
+ toolCallCount: 0,
93
+ verdict: null,
94
+ pagePatchCount: 0,
95
+ templatePatchCount: 0,
96
+ domainPatchCount: 0,
97
+ validPatches: 0,
98
+ totalPatches: 0,
99
+ error: e instanceof Error ? e.message : String(e),
100
+ };
101
+ }
102
+ }
103
+ function buildMarkdownSummary(results, opts) {
104
+ const totalSpend = results.reduce((acc, r) => acc + r.spentUsd, 0);
105
+ const totalDuration = results.reduce((acc, r) => acc + r.durationSeconds, 0);
106
+ const completed = results.filter((r) => r.ok).length;
107
+ const totalPatches = results.reduce((acc, r) => acc + r.totalPatches, 0);
108
+ const validPatches = results.reduce((acc, r) => acc + r.validPatches, 0);
109
+ const lines = [];
110
+ lines.push("# pseolint orchestrator — batch run");
111
+ lines.push("");
112
+ lines.push(`**${results.length} sites** · **${completed} completed** · **$${totalSpend.toFixed(2)} total** · **${(totalDuration / 60).toFixed(1)} min wall** · **${validPatches}/${totalPatches} patches validated**`);
113
+ lines.push("");
114
+ lines.push(`Budget per site: $${opts.maxCostUsd} · ${opts.maxToolCalls} tool calls · ${opts.maxWallSeconds}s wall`);
115
+ lines.push("");
116
+ lines.push("| Domain | Status | Verdict | Patches (valid/total) | Cost | Tool calls | Duration |");
117
+ lines.push("|---|---|---|---|---|---|---|");
118
+ for (const r of results) {
119
+ const patches = `${r.validPatches}/${r.totalPatches}`;
120
+ lines.push(`| \`${r.domain}\` | ${r.ok ? "✅ completed" : `❌ ${r.reason}`} | ${r.verdict ?? "—"} | ${patches} | $${r.spentUsd.toFixed(3)} | ${r.toolCallCount} | ${r.durationSeconds.toFixed(0)}s |`);
121
+ }
122
+ lines.push("");
123
+ lines.push("Generated by `pseolint orchestrate-batch` · per-site manifests under each `<slug>/manifest.json`.");
124
+ return lines.join("\n");
125
+ }
126
+ /**
127
+ * Run `orchestrate()` against a list of domains, emit aggregate stats +
128
+ * per-site manifest JSON files. Sequential by default — concurrency > 1
129
+ * burns money fast on rate-limit errors. Failures on individual sites
130
+ * don't abort the batch; they're recorded in `summary.json` with their
131
+ * reason.
132
+ *
133
+ * Output layout (under `--out`, default `.pseolint/batch`):
134
+ * summary.json — aggregate metrics across all sites
135
+ * summary.md — markdown table for the launch thread
136
+ * <slug>/manifest.json — full {manifest, validation, diff}
137
+ * <slug>/session.ndjson — durable event log
138
+ */
139
+ export async function runOrchestrateBatchCommand(opts) {
140
+ const strip = opts.noColor ?? !process.stdout.isTTY;
141
+ const stream = process.stdout;
142
+ let sites;
143
+ try {
144
+ sites = await loadSites(opts.sitesPath);
145
+ }
146
+ catch (e) {
147
+ process.stderr.write(`Could not read ${opts.sitesPath}: ${e instanceof Error ? e.message : String(e)}\n`);
148
+ return 2;
149
+ }
150
+ stream.write(paint(`Loaded ${sites.length} sites from ${opts.sitesPath}`, BOLD, strip) + "\n");
151
+ stream.write(paint(`Output: ${opts.outDir}`, DIM, strip) + "\n");
152
+ stream.write(paint(`Budget: $${opts.maxCostUsd} per site · ${opts.maxToolCalls} tool calls · ${opts.maxWallSeconds}s wall · concurrency ${opts.concurrency}`, DIM, strip) + "\n");
153
+ if (opts.dryRun) {
154
+ stream.write("\n--dry-run set: would run on:\n");
155
+ for (const s of sites)
156
+ stream.write(` ${s}\n`);
157
+ return 0;
158
+ }
159
+ await mkdir(opts.outDir, { recursive: true });
160
+ const results = [];
161
+ if (opts.concurrency <= 1) {
162
+ for (const site of sites) {
163
+ results.push(await runOne(site, opts, strip));
164
+ }
165
+ }
166
+ else {
167
+ let cursor = 0;
168
+ const next = async () => {
169
+ const i = cursor++;
170
+ if (i >= sites.length)
171
+ return;
172
+ const r = await runOne(sites[i], opts, strip);
173
+ results.push(r);
174
+ await next();
175
+ };
176
+ const workers = [];
177
+ for (let i = 0; i < Math.min(opts.concurrency, sites.length); i++) {
178
+ workers.push(next());
179
+ }
180
+ await Promise.all(workers);
181
+ // Worker-pool may reorder — sort to match input order for the summary.
182
+ const order = new Map(sites.map((s, i) => [s, i]));
183
+ results.sort((a, b) => (order.get(a.domain) ?? 0) - (order.get(b.domain) ?? 0));
184
+ }
185
+ await writeFile(join(opts.outDir, "summary.json"), JSON.stringify({ opts, results }, null, 2), "utf8");
186
+ await writeFile(join(opts.outDir, "summary.md"), buildMarkdownSummary(results, opts), "utf8");
187
+ const completed = results.filter((r) => r.ok).length;
188
+ const totalSpend = results.reduce((acc, r) => acc + r.spentUsd, 0);
189
+ stream.write("\n");
190
+ stream.write(paint(`Done: ${completed}/${results.length} completed · total spend $${totalSpend.toFixed(2)}`, BOLD + (completed === results.length ? GREEN : YELLOW), strip) + "\n");
191
+ stream.write(paint(`Wrote ${join(opts.outDir, "summary.md")}`, DIM, strip) + "\n");
192
+ // Exit non-zero if any site didn't complete — useful for CI batch runs.
193
+ return completed === results.length ? 0 : 1;
194
+ }
195
+ //# sourceMappingURL=orchestrate-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate-batch.js","sourceRoot":"","sources":["../../src/commands/orchestrate-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface OrchestrateCliOptions {
2
+ domain: string;
3
+ aiProvider?: string;
4
+ aiModel?: string;
5
+ aiKey?: string;
6
+ maxCostUsd?: number;
7
+ maxToolCalls?: number;
8
+ maxWallSeconds?: number;
9
+ watchdogIntervalCalls?: number;
10
+ ndjsonPath?: string;
11
+ manifestOut?: string;
12
+ noColor?: boolean;
13
+ quiet?: boolean;
14
+ }
15
+ /**
16
+ * Run the orchestrator from the CLI. Streams events live, then prints a
17
+ * summary block (manifest stats + validation failures + diff overview) at
18
+ * the end. Exits 0 on `completed` with all patches valid; non-zero
19
+ * otherwise.
20
+ */
21
+ export declare function runOrchestrateCommand(opts: OrchestrateCliOptions): Promise<number>;
22
+ //# sourceMappingURL=orchestrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../src/commands/orchestrate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FxF"}
@@ -0,0 +1,146 @@
1
+ import { writeFile, mkdir } from "node:fs/promises";
2
+ import { dirname } from "node:path";
3
+ import { orchestrate } from "@pseolint/core";
4
+ const RESET = "\x1b[0m";
5
+ const BOLD = "\x1b[1m";
6
+ const DIM = "\x1b[2m";
7
+ const RED = "\x1b[31m";
8
+ const GREEN = "\x1b[32m";
9
+ const YELLOW = "\x1b[33m";
10
+ const CYAN = "\x1b[36m";
11
+ const MAGENTA = "\x1b[35m";
12
+ function paint(s, color, strip) {
13
+ return strip ? s : `${color}${s}${RESET}`;
14
+ }
15
+ function summarize(value, max = 80) {
16
+ if (value === null || value === undefined)
17
+ return String(value);
18
+ let s;
19
+ try {
20
+ s = typeof value === "string" ? value : JSON.stringify(value);
21
+ }
22
+ catch {
23
+ s = String(value);
24
+ }
25
+ s = s.replace(/\s+/g, " ").trim();
26
+ return s.length > max ? `${s.slice(0, max - 1)}…` : s;
27
+ }
28
+ /**
29
+ * Pretty-print a single SessionEvent to stdout. Designed for live streaming
30
+ * during a session — each event ends with a newline and uses ANSI colors
31
+ * by default (strippable via `noColor`).
32
+ */
33
+ function renderEvent(event, strip) {
34
+ switch (event.kind) {
35
+ case "session_started":
36
+ return paint(`◆ session ${event.sessionId.slice(0, 8)} — ${event.domain}`, BOLD + CYAN, strip);
37
+ case "tool_call":
38
+ return paint(`→ ${event.toolName}`, CYAN, strip) + " " +
39
+ paint(summarize(event.input, 100), DIM, strip);
40
+ case "tool_result": {
41
+ const out = event.result;
42
+ const isErr = typeof out === "object" && out !== null && out.ok === false;
43
+ if (isErr) {
44
+ const err = out.error ?? "error";
45
+ return paint(`✗ ${event.toolName}`, RED, strip) + " " +
46
+ paint(summarize(err, 100), DIM, strip);
47
+ }
48
+ return paint(`✓ ${event.toolName}`, GREEN, strip);
49
+ }
50
+ case "thought":
51
+ return paint(` ${summarize(event.text, 200)}`, DIM, strip);
52
+ case "step_usage":
53
+ return paint(` · step: ${event.inputTokens}in/${event.outputTokens}out tokens` +
54
+ ` · $${event.estimatedUsd.toFixed(4)}` +
55
+ (event.durationMs !== undefined ? ` · ${event.durationMs}ms` : ""), DIM, strip);
56
+ case "watchdog_injected":
57
+ return paint(`⏰ watchdog @ ${event.toolCallCount} tool calls`, MAGENTA, strip);
58
+ case "budget_warning":
59
+ return paint(`⚠ budget breach: ${event.reason}`, YELLOW + BOLD, strip);
60
+ case "session_finished":
61
+ return paint(`◆ finished: ${event.reason}` +
62
+ ` · ${event.usage.toolCallCount} tool calls` +
63
+ ` · $${event.usage.estimatedUsd.toFixed(4)}` +
64
+ ` · ${(event.usage.elapsedMs / 1000).toFixed(1)}s`, BOLD + (event.reason === "completed" ? GREEN : YELLOW), strip);
65
+ }
66
+ }
67
+ /**
68
+ * Run the orchestrator from the CLI. Streams events live, then prints a
69
+ * summary block (manifest stats + validation failures + diff overview) at
70
+ * the end. Exits 0 on `completed` with all patches valid; non-zero
71
+ * otherwise.
72
+ */
73
+ export async function runOrchestrateCommand(opts) {
74
+ const strip = opts.noColor ?? !process.stdout.isTTY;
75
+ const stream = process.stdout;
76
+ const onEvent = opts.quiet
77
+ ? undefined
78
+ : async (event) => {
79
+ stream.write(renderEvent(event, strip) + "\n");
80
+ };
81
+ const result = await orchestrate({
82
+ domain: opts.domain,
83
+ userId: "cli",
84
+ ai: {
85
+ provider: opts.aiProvider,
86
+ model: opts.aiModel,
87
+ apiKey: opts.aiKey,
88
+ },
89
+ budget: {
90
+ ...(opts.maxCostUsd !== undefined ? { maxSessionUsd: opts.maxCostUsd } : {}),
91
+ ...(opts.maxToolCalls !== undefined ? { maxToolCalls: opts.maxToolCalls } : {}),
92
+ ...(opts.maxWallSeconds !== undefined ? { maxWallSeconds: opts.maxWallSeconds } : {}),
93
+ ...(opts.watchdogIntervalCalls !== undefined
94
+ ? { watchdogIntervalCalls: opts.watchdogIntervalCalls }
95
+ : {}),
96
+ },
97
+ ndjsonPath: opts.ndjsonPath,
98
+ onEvent,
99
+ });
100
+ // Summary block
101
+ stream.write("\n");
102
+ if (result.manifest && result.validation && result.diff) {
103
+ stream.write(paint("── Manifest ───────────────────────────", BOLD, strip) + "\n");
104
+ stream.write(` verdict: ${result.manifest.verdict}\n`);
105
+ stream.write(` categories: integrity=${result.manifest.categories.integrity}` +
106
+ ` discoverability=${result.manifest.categories.discoverability}` +
107
+ ` citation=${result.manifest.categories.citation}` +
108
+ ` data=${result.manifest.categories.data}\n`);
109
+ stream.write(` pages: ${result.manifest.pages.length}\n`);
110
+ stream.write(` templates: ${result.manifest.templates.length}\n`);
111
+ stream.write(` domain-level: ${result.manifest.domainLevel.length}\n`);
112
+ stream.write("\n" + paint("── Validation ──────────────────────────", BOLD, strip) + "\n");
113
+ const v = result.validation;
114
+ stream.write(` ${v.validPatches}/${v.totalPatches} patches valid` +
115
+ (v.failures.length > 0 ? paint(` (${v.failures.length} dropped)`, YELLOW, strip) : "") +
116
+ "\n");
117
+ for (const f of v.failures.slice(0, 10)) {
118
+ const loc = f.location.kind === "page_patch"
119
+ ? `${f.location.pageUrl}#${f.location.patchType}`
120
+ : f.location.kind === "template_patch"
121
+ ? `${f.location.templateId}#${f.location.patchType}`
122
+ : `${f.location.patchType} (domain)`;
123
+ stream.write(paint(` × ${loc}: ${f.reason}`, RED, strip) + "\n");
124
+ }
125
+ if (v.failures.length > 10) {
126
+ stream.write(paint(` … and ${v.failures.length - 10} more`, DIM, strip) + "\n");
127
+ }
128
+ }
129
+ else {
130
+ stream.write(paint(`No manifest produced (reason: ${result.session.reason}` +
131
+ (result.session.error ? ` — ${result.session.error}` : "") +
132
+ ")", YELLOW, strip) + "\n");
133
+ }
134
+ if (opts.manifestOut && result.manifest) {
135
+ await mkdir(dirname(opts.manifestOut), { recursive: true });
136
+ await writeFile(opts.manifestOut, JSON.stringify({ manifest: result.manifest, validation: result.validation, diff: result.diff }, null, 2), "utf8");
137
+ stream.write(`\n wrote ${opts.manifestOut}\n`);
138
+ }
139
+ // Exit code: 0 on completed + all patches valid, non-zero otherwise.
140
+ if (result.session.reason !== "completed")
141
+ return 1;
142
+ if (result.validation && result.validation.failures.length > 0)
143
+ return 2;
144
+ return 0;
145
+ }
146
+ //# sourceMappingURL=orchestrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../src/commands/orchestrate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
- {
2
- "name": "pseolint",
3
- "version": "0.4.3",
4
- "description": "Programmatic SEO linter CLI — SpamBrain-proof your pSEO before you publish. v0.4 verdict ladder (ready/caution/concerning/critical) + auto site classification.",
5
- "license": "MIT",
6
- "author": "Ouranos Labs <contact@ouranos-labs.dev>",
7
- "homepage": "https://pseolint.dev",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/ouranos-labs/pseolint.git",
11
- "directory": "packages/cli"
12
- },
13
- "keywords": [
14
- "seo",
15
- "pseo",
16
- "programmatic-seo",
17
- "spambrain",
18
- "lint",
19
- "cli"
20
- ],
21
- "type": "module",
22
- "bin": {
23
- "pseolint": "dist/cli.js"
24
- },
25
- "exports": {
26
- ".": {
27
- "import": "./dist/index.js",
28
- "types": "./dist/index.d.ts"
29
- }
30
- },
31
- "main": "dist/index.js",
32
- "types": "dist/index.d.ts",
33
- "engines": {
34
- "node": ">=18"
35
- },
36
- "files": [
37
- "dist"
38
- ],
39
- "scripts": {
40
- "build": "tsc -p tsconfig.json",
41
- "lint": "tsc --noEmit -p tsconfig.json",
42
- "test": "vitest run --passWithNoTests",
43
- "typecheck": "tsc --noEmit -p tsconfig.json"
44
- },
45
- "dependencies": {
46
- "@pseolint/core": "workspace:*",
47
- "@pseolint/mcp": "workspace:*",
48
- "commander": "^14.0.3",
49
- "cosmiconfig": "^9.0.1",
50
- "jiti": "^2.6.0",
51
- "zod": "^4.3.6"
52
- }
1
+ {
2
+ "name": "pseolint",
3
+ "version": "0.5.4",
4
+ "description": "Programmatic SEO linter CLI — SpamBrain-proof your pSEO before you publish. v0.4 verdict ladder (ready/caution/concerning/critical) + auto site classification.",
5
+ "license": "MIT",
6
+ "author": "Ouranos Labs <contact@ouranos-labs.dev>",
7
+ "homepage": "https://pseolint.dev",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/ouranos-labs/pseolint.git",
11
+ "directory": "packages/cli"
12
+ },
13
+ "keywords": [
14
+ "seo",
15
+ "pseo",
16
+ "programmatic-seo",
17
+ "spambrain",
18
+ "lint",
19
+ "cli"
20
+ ],
21
+ "type": "module",
22
+ "bin": {
23
+ "pseolint": "dist/cli.js"
24
+ },
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.js",
28
+ "types": "./dist/index.d.ts"
29
+ }
30
+ },
31
+ "main": "dist/index.js",
32
+ "types": "dist/index.d.ts",
33
+ "engines": {
34
+ "node": ">=18"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "scripts": {
40
+ "build": "tsc -p tsconfig.json",
41
+ "lint": "tsc --noEmit -p tsconfig.json",
42
+ "test": "vitest run --passWithNoTests",
43
+ "typecheck": "tsc --noEmit -p tsconfig.json"
44
+ },
45
+ "dependencies": {
46
+ "@pseolint/core": "workspace:*",
47
+ "@pseolint/mcp": "workspace:*",
48
+ "commander": "^14.0.3",
49
+ "cosmiconfig": "^9.0.1",
50
+ "jiti": "^2.6.0",
51
+ "zod": "^4.3.6"
52
+ }
53
53
  }