cbrowser 18.79.0 → 18.81.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.
- package/dist/analysis/accessibility-empathy.d.ts.map +1 -1
- package/dist/analysis/accessibility-empathy.js +395 -66
- package/dist/analysis/accessibility-empathy.js.map +1 -1
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +78 -0
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/analysis/page-understanding.d.ts +139 -1
- package/dist/analysis/page-understanding.d.ts.map +1 -1
- package/dist/analysis/page-understanding.js +179 -12
- package/dist/analysis/page-understanding.js.map +1 -1
- package/dist/artifact-store.d.ts +19 -5
- package/dist/artifact-store.d.ts.map +1 -1
- package/dist/artifact-store.js +41 -11
- package/dist/artifact-store.js.map +1 -1
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +81 -5
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +55 -10
- package/dist/cli.js.map +1 -1
- package/dist/cognitive/index.d.ts.map +1 -1
- package/dist/cognitive/index.js +3 -2
- package/dist/cognitive/index.js.map +1 -1
- package/dist/config.d.ts +57 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +234 -7
- package/dist/config.js.map +1 -1
- package/dist/content-integrity.d.ts +65 -0
- package/dist/content-integrity.d.ts.map +1 -0
- package/dist/content-integrity.js +127 -0
- package/dist/content-integrity.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server-remote.d.ts.map +1 -1
- package/dist/mcp-server-remote.js +148 -6
- package/dist/mcp-server-remote.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +62 -938
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/account-personas.d.ts +41 -0
- package/dist/mcp-tools/account-personas.d.ts.map +1 -0
- package/dist/mcp-tools/account-personas.js +98 -0
- package/dist/mcp-tools/account-personas.js.map +1 -0
- package/dist/mcp-tools/base/analysis-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/analysis-tools.js +12 -2
- package/dist/mcp-tools/base/analysis-tools.js.map +1 -1
- package/dist/mcp-tools/base/artifact-tools.d.ts +3 -0
- package/dist/mcp-tools/base/artifact-tools.d.ts.map +1 -0
- package/dist/mcp-tools/base/artifact-tools.js +78 -0
- package/dist/mcp-tools/base/artifact-tools.js.map +1 -0
- package/dist/mcp-tools/base/audit-tools.d.ts +11 -0
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +624 -342
- package/dist/mcp-tools/base/audit-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.js +18 -0
- package/dist/mcp-tools/base/browser-management-tools.js.map +1 -1
- package/dist/mcp-tools/base/bug-analysis-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/bug-analysis-tools.js +59 -3
- package/dist/mcp-tools/base/bug-analysis-tools.js.map +1 -1
- package/dist/mcp-tools/base/capture-tools.d.ts +37 -0
- package/dist/mcp-tools/base/capture-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/capture-tools.js +267 -6
- package/dist/mcp-tools/base/capture-tools.js.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.d.ts +12 -0
- package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.js +63 -15
- package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.js +33 -2
- package/dist/mcp-tools/base/extraction-tools.js.map +1 -1
- package/dist/mcp-tools/base/index.d.ts +2 -0
- package/dist/mcp-tools/base/index.d.ts.map +1 -1
- package/dist/mcp-tools/base/index.js +9 -0
- package/dist/mcp-tools/base/index.js.map +1 -1
- package/dist/mcp-tools/base/marketing-tools.js +3 -3
- package/dist/mcp-tools/base/marketing-tools.js.map +1 -1
- package/dist/mcp-tools/base/navigation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/navigation-tools.js +21 -1
- package/dist/mcp-tools/base/navigation-tools.js.map +1 -1
- package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/persona-comparison-tools.js +529 -40
- package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.js +36 -3
- package/dist/mcp-tools/base/site-knowledge-tools.js.map +1 -1
- package/dist/mcp-tools/base/values-tools.d.ts +113 -0
- package/dist/mcp-tools/base/values-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/values-tools.js +868 -78
- package/dist/mcp-tools/base/values-tools.js.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.js +130 -10
- package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
- package/dist/mcp-tools/index.d.ts +3 -1
- package/dist/mcp-tools/index.d.ts.map +1 -1
- package/dist/mcp-tools/index.js +3 -28
- package/dist/mcp-tools/index.js.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.js +363 -20
- package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
- package/dist/mcp-tools/persona-lifecycle-tools.d.ts +3 -0
- package/dist/mcp-tools/persona-lifecycle-tools.d.ts.map +1 -0
- package/dist/mcp-tools/persona-lifecycle-tools.js +406 -0
- package/dist/mcp-tools/persona-lifecycle-tools.js.map +1 -0
- package/dist/mcp-tools/screenshot-utils.d.ts.map +1 -1
- package/dist/mcp-tools/screenshot-utils.js +56 -10
- package/dist/mcp-tools/screenshot-utils.js.map +1 -1
- package/dist/mcp-tools/tier-gate.js +2 -2
- package/dist/mcp-tools/tier-gate.js.map +1 -1
- package/dist/mcp-tools/tool-categories.d.ts.map +1 -1
- package/dist/mcp-tools/tool-categories.js +4 -1
- package/dist/mcp-tools/tool-categories.js.map +1 -1
- package/dist/mcp-tools/ui-resources.d.ts +167 -0
- package/dist/mcp-tools/ui-resources.d.ts.map +1 -0
- package/dist/mcp-tools/ui-resources.js +707 -0
- package/dist/mcp-tools/ui-resources.js.map +1 -0
- package/dist/mcp-tools/widget-kit.d.ts +299 -0
- package/dist/mcp-tools/widget-kit.d.ts.map +1 -0
- package/dist/mcp-tools/widget-kit.js +2034 -0
- package/dist/mcp-tools/widget-kit.js.map +1 -0
- package/dist/mcp-ui-resources.d.ts.map +1 -1
- package/dist/mcp-ui-resources.js +14 -4
- package/dist/mcp-ui-resources.js.map +1 -1
- package/dist/persona-questionnaire.d.ts +69 -1
- package/dist/persona-questionnaire.d.ts.map +1 -1
- package/dist/persona-questionnaire.js +177 -76
- package/dist/persona-questionnaire.js.map +1 -1
- package/dist/persona-scope.d.ts +20 -0
- package/dist/persona-scope.d.ts.map +1 -0
- package/dist/persona-scope.js +59 -0
- package/dist/persona-scope.js.map +1 -0
- package/dist/personas.d.ts +51 -17
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +947 -286
- package/dist/personas.js.map +1 -1
- package/dist/recording/capture-player.d.ts +68 -0
- package/dist/recording/capture-player.d.ts.map +1 -0
- package/dist/recording/capture-player.js +298 -0
- package/dist/recording/capture-player.js.map +1 -0
- package/dist/recording/engine.d.ts +52 -0
- package/dist/recording/engine.d.ts.map +1 -1
- package/dist/recording/engine.js +241 -3
- package/dist/recording/engine.js.map +1 -1
- package/dist/recording/inline-player.d.ts +39 -0
- package/dist/recording/inline-player.d.ts.map +1 -0
- package/dist/recording/inline-player.js +272 -0
- package/dist/recording/inline-player.js.map +1 -0
- package/dist/recording/saliency-overlay.d.ts +133 -0
- package/dist/recording/saliency-overlay.d.ts.map +1 -0
- package/dist/recording/saliency-overlay.js +360 -0
- package/dist/recording/saliency-overlay.js.map +1 -0
- package/dist/recording/types.d.ts +32 -0
- package/dist/recording/types.d.ts.map +1 -1
- package/dist/recording/types.js +46 -0
- package/dist/recording/types.js.map +1 -1
- package/dist/site-model/manager.d.ts +20 -0
- package/dist/site-model/manager.d.ts.map +1 -1
- package/dist/site-model/manager.js +52 -0
- package/dist/site-model/manager.js.map +1 -1
- package/dist/trait-reference.d.ts +26 -2
- package/dist/trait-reference.d.ts.map +1 -1
- package/dist/trait-reference.js +129 -19
- package/dist/trait-reference.js.map +1 -1
- package/dist/types.d.ts +105 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/url-resolution.d.ts +58 -0
- package/dist/url-resolution.d.ts.map +1 -0
- package/dist/url-resolution.js +143 -0
- package/dist/url-resolution.js.map +1 -0
- package/dist/values/big-five-inference.d.ts +121 -0
- package/dist/values/big-five-inference.d.ts.map +1 -0
- package/dist/values/big-five-inference.js +241 -0
- package/dist/values/big-five-inference.js.map +1 -0
- package/dist/values/big-five-values.d.ts +76 -0
- package/dist/values/big-five-values.d.ts.map +1 -0
- package/dist/values/big-five-values.js +152 -0
- package/dist/values/big-five-values.js.map +1 -0
- package/dist/values/index.d.ts +1 -1
- package/dist/values/index.d.ts.map +1 -1
- package/dist/values/index.js +1 -1
- package/dist/values/index.js.map +1 -1
- package/dist/values/persona-completeness.d.ts +91 -0
- package/dist/values/persona-completeness.d.ts.map +1 -0
- package/dist/values/persona-completeness.js +114 -0
- package/dist/values/persona-completeness.js.map +1 -0
- package/dist/values/persona-diff.d.ts +50 -0
- package/dist/values/persona-diff.d.ts.map +1 -0
- package/dist/values/persona-diff.js +126 -0
- package/dist/values/persona-diff.js.map +1 -0
- package/dist/values/persona-values.d.ts +16 -0
- package/dist/values/persona-values.d.ts.map +1 -1
- package/dist/values/persona-values.js +33 -0
- package/dist/values/persona-values.js.map +1 -1
- package/dist/values/schwartz-values.d.ts +9 -1
- package/dist/values/schwartz-values.d.ts.map +1 -1
- package/dist/values/schwartz-values.js +10 -2
- package/dist/values/schwartz-values.js.map +1 -1
- package/dist/values/value-mappings.d.ts +41 -2
- package/dist/values/value-mappings.d.ts.map +1 -1
- package/dist/values/value-mappings.js +65 -8
- package/dist/values/value-mappings.js.map +1 -1
- package/dist/visual/attention-quality.d.ts +27 -0
- package/dist/visual/attention-quality.d.ts.map +1 -1
- package/dist/visual/attention-quality.js +164 -2
- package/dist/visual/attention-quality.js.map +1 -1
- package/dist/visual/attention-transport.d.ts +41 -2
- package/dist/visual/attention-transport.d.ts.map +1 -1
- package/dist/visual/attention-transport.js +98 -26
- package/dist/visual/attention-transport.js.map +1 -1
- package/dist/visual/barrier-overlay-html.d.ts +10 -0
- package/dist/visual/barrier-overlay-html.d.ts.map +1 -1
- package/dist/visual/barrier-overlay-html.js.map +1 -1
- package/dist/visual/cognitive-models.d.ts +109 -13
- package/dist/visual/cognitive-models.d.ts.map +1 -1
- package/dist/visual/cognitive-models.js +166 -3
- package/dist/visual/cognitive-models.js.map +1 -1
- package/dist/visual/cognitive-transport-chain.d.ts +165 -5
- package/dist/visual/cognitive-transport-chain.d.ts.map +1 -1
- package/dist/visual/cognitive-transport-chain.js +567 -31
- package/dist/visual/cognitive-transport-chain.js.map +1 -1
- package/dist/visual/cognitive-transport.d.ts +45 -3
- package/dist/visual/cognitive-transport.d.ts.map +1 -1
- package/dist/visual/cognitive-transport.js +126 -12
- package/dist/visual/cognitive-transport.js.map +1 -1
- package/dist/visual/llm-relevance.d.ts +193 -0
- package/dist/visual/llm-relevance.d.ts.map +1 -0
- package/dist/visual/llm-relevance.js +480 -0
- package/dist/visual/llm-relevance.js.map +1 -0
- package/dist/visual/perceptual-transport.d.ts +60 -0
- package/dist/visual/perceptual-transport.d.ts.map +1 -1
- package/dist/visual/perceptual-transport.js +228 -19
- package/dist/visual/perceptual-transport.js.map +1 -1
- package/dist/visual/persona-context.d.ts +23 -0
- package/dist/visual/persona-context.d.ts.map +1 -0
- package/dist/visual/persona-context.js +44 -0
- package/dist/visual/persona-context.js.map +1 -0
- package/package.json +2 -1
package/dist/config.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* All paths are configurable via environment variables or constructor options.
|
|
10
10
|
* Default: ~/.cbrowser/
|
|
11
11
|
*/
|
|
12
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, statSync, rmdirSync } from "fs";
|
|
12
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, statSync, rmdirSync, rmSync } from "fs";
|
|
13
13
|
import { homedir } from "os";
|
|
14
14
|
import { join } from "path";
|
|
15
15
|
import { randomUUID } from "crypto";
|
|
@@ -197,6 +197,9 @@ export function ensureDirectories(paths) {
|
|
|
197
197
|
// Automatic cleanup of OLD screenshot sessions on startup
|
|
198
198
|
// This is safe for multi-user: only deletes sessions older than retention period
|
|
199
199
|
cleanupOldScreenshotSessions(p);
|
|
200
|
+
// Both no-ops unless their env var is set; see getVideoRetention.
|
|
201
|
+
cleanupOldVideos(p);
|
|
202
|
+
cleanupOldBrowserState(p);
|
|
200
203
|
return p;
|
|
201
204
|
}
|
|
202
205
|
/**
|
|
@@ -265,6 +268,198 @@ function formatRetention(ms) {
|
|
|
265
268
|
* Called automatically on CBrowser startup.
|
|
266
269
|
* Returns the number of session directories deleted.
|
|
267
270
|
*/
|
|
271
|
+
/**
|
|
272
|
+
* What the sweepers would remove, without removing anything.
|
|
273
|
+
*
|
|
274
|
+
* Retention ships disabled, so the honest way to decide whether to enable it
|
|
275
|
+
* is to see the cost first. Reports against the given windows regardless of
|
|
276
|
+
* whether the env vars are set.
|
|
277
|
+
*/
|
|
278
|
+
export function previewRetention(videoHours = 24, browserStateDays = 30, paths) {
|
|
279
|
+
const p = paths || getPaths();
|
|
280
|
+
const now = Date.now();
|
|
281
|
+
const out = { videos: { directories: 0, files: 0 }, browserState: { profiles: 0 } };
|
|
282
|
+
const scan = (base, cutoff, onHit) => {
|
|
283
|
+
if (!existsSync(base))
|
|
284
|
+
return;
|
|
285
|
+
try {
|
|
286
|
+
for (const entry of readdirSync(base)) {
|
|
287
|
+
if (entry.startsWith(".") || entry === p.sessionId)
|
|
288
|
+
continue;
|
|
289
|
+
const dir = join(base, entry);
|
|
290
|
+
try {
|
|
291
|
+
if (!statSync(dir).isDirectory())
|
|
292
|
+
continue;
|
|
293
|
+
if (newestMtime(dir) > cutoff)
|
|
294
|
+
continue;
|
|
295
|
+
onHit(dir);
|
|
296
|
+
}
|
|
297
|
+
catch { /* skip */ }
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
catch { /* skip */ }
|
|
301
|
+
};
|
|
302
|
+
scan(p.videosDir, now - videoHours * 3600_000, (dir) => {
|
|
303
|
+
out.videos.directories += 1;
|
|
304
|
+
out.videos.files += countFiles(dir);
|
|
305
|
+
});
|
|
306
|
+
scan(p.browserStateDir, now - browserStateDays * 86400_000, () => {
|
|
307
|
+
out.browserState.profiles += 1;
|
|
308
|
+
});
|
|
309
|
+
return out;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Retention for capture output, in milliseconds. 0 disables cleanup.
|
|
313
|
+
*
|
|
314
|
+
* Capture artifacts are regenerable: frames, GIFs and manifests can be
|
|
315
|
+
* produced again by re-running the capture. Measured on this box before any
|
|
316
|
+
* retention existed: 10,169 files and 344MB, growing with every capture and
|
|
317
|
+
* never shrinking. A default of 24 hours keeps recent work reviewable while
|
|
318
|
+
* bounding the directory.
|
|
319
|
+
*/
|
|
320
|
+
export function getVideoRetention() {
|
|
321
|
+
const raw = process.env.CBROWSER_VIDEO_RETENTION;
|
|
322
|
+
// Off unless asked for. Turning this on deletes existing captures on the
|
|
323
|
+
// next start -- 344MB of them on this box at the time it was written -- and
|
|
324
|
+
// that is a decision for whoever owns the data, not a default to inherit.
|
|
325
|
+
// Set CBROWSER_VIDEO_RETENTION to a number of hours to enable.
|
|
326
|
+
if (!raw || raw === "0" || raw === "off")
|
|
327
|
+
return 0;
|
|
328
|
+
const hours = parseFloat(raw);
|
|
329
|
+
return Number.isFinite(hours) && hours > 0 ? hours * 3600_000 : 0;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Retention for browser profiles, in milliseconds. 0 disables cleanup.
|
|
333
|
+
*
|
|
334
|
+
* Deliberately far longer than the others and measured from last use, because
|
|
335
|
+
* unlike a screenshot or a capture frame this data is NOT regenerable: a
|
|
336
|
+
* browser-state directory holds cookies and saved logins, and deleting one
|
|
337
|
+
* signs the user out of whatever they had authenticated. 110MB across 1,659
|
|
338
|
+
* files is worth bounding, but not at the cost of silently destroying a
|
|
339
|
+
* session someone still relies on -- so the default is 30 days of disuse, and
|
|
340
|
+
* the active profile is never touched.
|
|
341
|
+
*/
|
|
342
|
+
export function getBrowserStateRetention() {
|
|
343
|
+
const raw = process.env.CBROWSER_BROWSER_STATE_RETENTION;
|
|
344
|
+
// Off unless asked for, and doubly so here: these profiles hold cookies and
|
|
345
|
+
// saved logins, so a sweep signs people out of whatever they had
|
|
346
|
+
// authenticated. Set CBROWSER_BROWSER_STATE_RETENTION to a number of days.
|
|
347
|
+
if (!raw || raw === "0" || raw === "off")
|
|
348
|
+
return 0;
|
|
349
|
+
const days = parseFloat(raw);
|
|
350
|
+
return Number.isFinite(days) && days > 0 ? days * 86400_000 : 0;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Delete capture directories older than the video retention period.
|
|
354
|
+
*
|
|
355
|
+
* Whole directories only, and only when every entry inside is older than the
|
|
356
|
+
* cutoff -- the same rule the screenshot sweeper uses, so a capture still
|
|
357
|
+
* being written is never half-removed.
|
|
358
|
+
*
|
|
359
|
+
* Returns the number of directories deleted.
|
|
360
|
+
*/
|
|
361
|
+
export function cleanupOldVideos(paths) {
|
|
362
|
+
const p = paths || getPaths();
|
|
363
|
+
const retention = getVideoRetention();
|
|
364
|
+
if (retention === 0)
|
|
365
|
+
return 0;
|
|
366
|
+
if (!existsSync(p.videosDir))
|
|
367
|
+
return 0;
|
|
368
|
+
const now = Date.now();
|
|
369
|
+
let deleted = 0;
|
|
370
|
+
try {
|
|
371
|
+
for (const entry of readdirSync(p.videosDir)) {
|
|
372
|
+
if (entry.startsWith("."))
|
|
373
|
+
continue;
|
|
374
|
+
const dir = join(p.videosDir, entry);
|
|
375
|
+
try {
|
|
376
|
+
const stats = statSync(dir);
|
|
377
|
+
if (!stats.isDirectory()) {
|
|
378
|
+
if (now - stats.mtimeMs > retention) {
|
|
379
|
+
unlinkSync(dir);
|
|
380
|
+
deleted += 1;
|
|
381
|
+
}
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
if (entry === p.sessionId)
|
|
385
|
+
continue;
|
|
386
|
+
if (newestMtime(dir) > now - retention)
|
|
387
|
+
continue;
|
|
388
|
+
rmSync(dir, { recursive: true, force: true });
|
|
389
|
+
deleted += 1;
|
|
390
|
+
}
|
|
391
|
+
catch { /* a directory that vanished mid-sweep needs no action */ }
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch { /* an unreadable videos dir is not worth failing startup over */ }
|
|
395
|
+
return deleted;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Delete browser profiles untouched for longer than the retention period.
|
|
399
|
+
*
|
|
400
|
+
* Never removes the profile in use. Keyed on the newest mtime anywhere inside
|
|
401
|
+
* the profile, so a directory whose top-level entry is old but whose cookies
|
|
402
|
+
* were written this morning counts as active.
|
|
403
|
+
*/
|
|
404
|
+
export function cleanupOldBrowserState(paths) {
|
|
405
|
+
const p = paths || getPaths();
|
|
406
|
+
const retention = getBrowserStateRetention();
|
|
407
|
+
if (retention === 0)
|
|
408
|
+
return 0;
|
|
409
|
+
const base = p.browserStateDir;
|
|
410
|
+
if (!existsSync(base))
|
|
411
|
+
return 0;
|
|
412
|
+
const now = Date.now();
|
|
413
|
+
let deleted = 0;
|
|
414
|
+
try {
|
|
415
|
+
for (const entry of readdirSync(base)) {
|
|
416
|
+
if (entry.startsWith("."))
|
|
417
|
+
continue;
|
|
418
|
+
const dir = join(base, entry);
|
|
419
|
+
try {
|
|
420
|
+
const stats = statSync(dir);
|
|
421
|
+
if (!stats.isDirectory())
|
|
422
|
+
continue;
|
|
423
|
+
if (entry === p.sessionId)
|
|
424
|
+
continue;
|
|
425
|
+
if (newestMtime(dir) > now - retention)
|
|
426
|
+
continue;
|
|
427
|
+
rmSync(dir, { recursive: true, force: true });
|
|
428
|
+
deleted += 1;
|
|
429
|
+
}
|
|
430
|
+
catch { /* skip */ }
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
catch { /* skip */ }
|
|
434
|
+
return deleted;
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Newest mtime anywhere under a directory, depth-limited.
|
|
438
|
+
*
|
|
439
|
+
* A directory's own mtime only reflects its immediate entries, so a capture
|
|
440
|
+
* whose frames were written minutes ago can present an hours-old timestamp at
|
|
441
|
+
* the top level. Deleting on that reading would remove live work.
|
|
442
|
+
*/
|
|
443
|
+
function newestMtime(dir, depth = 3) {
|
|
444
|
+
let newest = 0;
|
|
445
|
+
try {
|
|
446
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
447
|
+
const full = join(dir, entry.name);
|
|
448
|
+
try {
|
|
449
|
+
if (entry.isDirectory()) {
|
|
450
|
+
if (depth > 0)
|
|
451
|
+
newest = Math.max(newest, newestMtime(full, depth - 1));
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
newest = Math.max(newest, statSync(full).mtimeMs);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
catch { /* skip */ }
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
catch { /* skip */ }
|
|
461
|
+
return newest;
|
|
462
|
+
}
|
|
268
463
|
export function cleanupOldScreenshotSessions(paths) {
|
|
269
464
|
const p = paths || getPaths();
|
|
270
465
|
const retention = getScreenshotRetention();
|
|
@@ -357,14 +552,38 @@ export function cleanupCurrentSessionScreenshots(paths) {
|
|
|
357
552
|
}
|
|
358
553
|
return deleted;
|
|
359
554
|
}
|
|
360
|
-
|
|
555
|
+
/**
|
|
556
|
+
* Count files in a directory, including nested ones.
|
|
557
|
+
*
|
|
558
|
+
* Recursive because these directories are session-scoped: screenshots live in
|
|
559
|
+
* per-session subdirectories, and visual baselines under a nested store. A
|
|
560
|
+
* top-level readdir therefore reported 0 screenshots while 12 sat one level
|
|
561
|
+
* down, and 1 visual baseline against 34 on disk -- an extension filter also
|
|
562
|
+
* excludes the subdirectory entries themselves, so the count collapsed to
|
|
563
|
+
* zero rather than merely being low.
|
|
564
|
+
*
|
|
565
|
+
* Depth-limited because a runaway tree should not turn a status call into a
|
|
566
|
+
* filesystem walk; three levels covers every layout in use.
|
|
567
|
+
*/
|
|
568
|
+
function countFiles(dir, ext, depth = 3) {
|
|
361
569
|
if (!existsSync(dir))
|
|
362
570
|
return 0;
|
|
363
571
|
try {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
572
|
+
let total = 0;
|
|
573
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
574
|
+
if (entry.name.startsWith("."))
|
|
575
|
+
continue;
|
|
576
|
+
if (entry.isDirectory()) {
|
|
577
|
+
if (depth > 0)
|
|
578
|
+
total += countFiles(join(dir, entry.name), ext, depth - 1);
|
|
579
|
+
}
|
|
580
|
+
else if (!ext || (Array.isArray(ext)
|
|
581
|
+
? ext.some((e) => entry.name.endsWith(e))
|
|
582
|
+
: entry.name.endsWith(ext))) {
|
|
583
|
+
total += 1;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
return total;
|
|
368
587
|
}
|
|
369
588
|
catch {
|
|
370
589
|
return 0;
|
|
@@ -471,7 +690,10 @@ export async function getStatusInfo(version, toolCount) {
|
|
|
471
690
|
const screenshotStats = countScreenshotSessions(paths.screenshotsBaseDir);
|
|
472
691
|
// Directory status
|
|
473
692
|
const dirEntries = [
|
|
474
|
-
|
|
693
|
+
// Every extension screenshots are actually written in. It filtered on
|
|
694
|
+
// .png alone while remote-mode compression writes .jpg, so a directory
|
|
695
|
+
// holding twelve screenshots reported zero.
|
|
696
|
+
["screenshots", paths.screenshotsBaseDir, [".png", ".jpg", ".jpeg", ".webp"]],
|
|
475
697
|
["sessions", paths.sessionsDir, ".json"],
|
|
476
698
|
["baselines", paths.baselinesDir, ".json"],
|
|
477
699
|
["visual-baselines", paths.visualBaselinesDir],
|
|
@@ -482,6 +704,11 @@ export async function getStatusInfo(version, toolCount) {
|
|
|
482
704
|
["videos", paths.videosDir],
|
|
483
705
|
["audit", paths.auditDir],
|
|
484
706
|
];
|
|
707
|
+
// Directory counts read the filesystem; the summary counts below read
|
|
708
|
+
// registries -- baselines.json for visualBaselines, the session store for
|
|
709
|
+
// screenshotSessions, the built-in table plus custom files for personas.
|
|
710
|
+
// They are different populations, not two views of one, and reporting both
|
|
711
|
+
// without saying so left a reader to guess which was authoritative.
|
|
485
712
|
const directories = dirEntries.map(([name, dirPath, ext]) => ({
|
|
486
713
|
name,
|
|
487
714
|
path: dirPath,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Did we land on the content, or on something standing in front of it?
|
|
3
|
+
*
|
|
4
|
+
* `navigate` answered a narrower question than callers assumed. It reported whether
|
|
5
|
+
* the request completed, and every cognitive tool downstream read that as "the page
|
|
6
|
+
* is here". Two failures in one external session, neither surfaced:
|
|
7
|
+
*
|
|
8
|
+
* claude.ai/code/artifact/<uuid> reported success, 200, zero console errors
|
|
9
|
+
* -- rendered the SPA not-found branch
|
|
10
|
+
* <uuid>.frame.claudeusercontent.com reported success
|
|
11
|
+
* -- rendered a Cloudflare Turnstile challenge
|
|
12
|
+
*
|
|
13
|
+
* The second is the instructive one, because the browser layer had ALREADY decided it
|
|
14
|
+
* was a failure: it compared hosts, set `success: false` and `desyncDetected`, and
|
|
15
|
+
* emitted "Expected domain: X, Actual domain: Y". The tool layer forwarded the warning
|
|
16
|
+
* and dropped the verdict. The signal existed, was computed, and was discarded one
|
|
17
|
+
* function above where it was produced.
|
|
18
|
+
*
|
|
19
|
+
* That matters more than a wrong status. `cognitive_effort` would have scored the
|
|
20
|
+
* Turnstile interstitial as a page and called it comfortable, because an interstitial
|
|
21
|
+
* genuinely IS low-effort: one button, no text, no choices. Every layer would have
|
|
22
|
+
* been correct about the DOM it was given and wrong about the page it claimed to
|
|
23
|
+
* describe. A wrong page analysed silently beats a refusal only in the sense that it
|
|
24
|
+
* produces numbers.
|
|
25
|
+
*
|
|
26
|
+
* Deliberately NOT a bot-detection module. It answers one question -- "is there reason
|
|
27
|
+
* to think this is not the requested content?" -- from signals navigation already has
|
|
28
|
+
* in hand: requested URL vs landed URL, the title, the DOM size, and the browser's own
|
|
29
|
+
* desync verdict. No new instrumentation, no network calls, no heuristics that need
|
|
30
|
+
* tuning against a corpus. A caller that gets `ok: false` should decide for itself;
|
|
31
|
+
* this never blocks a navigation.
|
|
32
|
+
*
|
|
33
|
+
* @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
|
|
34
|
+
* @license MIT
|
|
35
|
+
*/
|
|
36
|
+
/** What `navigate` needs to expose for this to be decidable. */
|
|
37
|
+
export interface IntegrityInput {
|
|
38
|
+
/** Where the browser actually ended up. */
|
|
39
|
+
url: string;
|
|
40
|
+
/** Document title as rendered. */
|
|
41
|
+
title?: string;
|
|
42
|
+
/** The browser layer's own verdict, when it reached one. */
|
|
43
|
+
success?: boolean;
|
|
44
|
+
/** Set by the browser layer when the landed host differs from the requested host. */
|
|
45
|
+
desyncDetected?: boolean;
|
|
46
|
+
/** Rendered HTML length, when the caller has it. Optional: absence is not evidence. */
|
|
47
|
+
contentLength?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ContentIntegrity {
|
|
50
|
+
/** False when there is positive reason to doubt this is the requested content. */
|
|
51
|
+
ok: boolean;
|
|
52
|
+
/** Machine-readable reasons. Empty iff ok. */
|
|
53
|
+
reasons: string[];
|
|
54
|
+
/** One sentence a caller can show a human. Absent when ok. */
|
|
55
|
+
note?: string;
|
|
56
|
+
/** Where the caller asked to go, when it differs from where it arrived. */
|
|
57
|
+
requestedUrl?: string;
|
|
58
|
+
landedUrl?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Judge a completed navigation. Never throws: an integrity check that can fail is a
|
|
62
|
+
* new way for navigate to fail, which is not a trade worth making for a caveat field.
|
|
63
|
+
*/
|
|
64
|
+
export declare function describeContentIntegrity(requestedUrl: string, result: IntegrityInput): ContentIntegrity;
|
|
65
|
+
//# sourceMappingURL=content-integrity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-integrity.d.ts","sourceRoot":"","sources":["../src/content-integrity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,gBAAgB,CA2ClB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Did we land on the content, or on something standing in front of it?
|
|
3
|
+
*
|
|
4
|
+
* `navigate` answered a narrower question than callers assumed. It reported whether
|
|
5
|
+
* the request completed, and every cognitive tool downstream read that as "the page
|
|
6
|
+
* is here". Two failures in one external session, neither surfaced:
|
|
7
|
+
*
|
|
8
|
+
* claude.ai/code/artifact/<uuid> reported success, 200, zero console errors
|
|
9
|
+
* -- rendered the SPA not-found branch
|
|
10
|
+
* <uuid>.frame.claudeusercontent.com reported success
|
|
11
|
+
* -- rendered a Cloudflare Turnstile challenge
|
|
12
|
+
*
|
|
13
|
+
* The second is the instructive one, because the browser layer had ALREADY decided it
|
|
14
|
+
* was a failure: it compared hosts, set `success: false` and `desyncDetected`, and
|
|
15
|
+
* emitted "Expected domain: X, Actual domain: Y". The tool layer forwarded the warning
|
|
16
|
+
* and dropped the verdict. The signal existed, was computed, and was discarded one
|
|
17
|
+
* function above where it was produced.
|
|
18
|
+
*
|
|
19
|
+
* That matters more than a wrong status. `cognitive_effort` would have scored the
|
|
20
|
+
* Turnstile interstitial as a page and called it comfortable, because an interstitial
|
|
21
|
+
* genuinely IS low-effort: one button, no text, no choices. Every layer would have
|
|
22
|
+
* been correct about the DOM it was given and wrong about the page it claimed to
|
|
23
|
+
* describe. A wrong page analysed silently beats a refusal only in the sense that it
|
|
24
|
+
* produces numbers.
|
|
25
|
+
*
|
|
26
|
+
* Deliberately NOT a bot-detection module. It answers one question -- "is there reason
|
|
27
|
+
* to think this is not the requested content?" -- from signals navigation already has
|
|
28
|
+
* in hand: requested URL vs landed URL, the title, the DOM size, and the browser's own
|
|
29
|
+
* desync verdict. No new instrumentation, no network calls, no heuristics that need
|
|
30
|
+
* tuning against a corpus. A caller that gets `ok: false` should decide for itself;
|
|
31
|
+
* this never blocks a navigation.
|
|
32
|
+
*
|
|
33
|
+
* @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
|
|
34
|
+
* @license MIT
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Titles interstitials use. Matched case-insensitively against the whole title, and
|
|
38
|
+
* kept short on purpose: a list long enough to catch everything is long enough to
|
|
39
|
+
* catch real pages, and a false "this is a challenge page" on a legitimate site is a
|
|
40
|
+
* worse failure than a missed challenge. Cloudflare's own wording is the anchor.
|
|
41
|
+
*/
|
|
42
|
+
const CHALLENGE_TITLES = [
|
|
43
|
+
"just a moment",
|
|
44
|
+
"attention required",
|
|
45
|
+
"checking your browser",
|
|
46
|
+
"please wait...",
|
|
47
|
+
"access denied",
|
|
48
|
+
"verifying you are human",
|
|
49
|
+
"one more step",
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Below this many characters of rendered HTML, a 200 is not plausibly a content page.
|
|
53
|
+
* A challenge or an error stub is typically a few hundred bytes of shell; the smallest
|
|
54
|
+
* real pages this tool is pointed at run to several thousand. Set where a miss is more
|
|
55
|
+
* likely than a false positive, because this only ever ADDS a caveat -- it never
|
|
56
|
+
* refuses a navigation, so the cost of the two errors is not symmetric.
|
|
57
|
+
*/
|
|
58
|
+
const IMPLAUSIBLY_SMALL_DOM = 500;
|
|
59
|
+
function hostOf(u) {
|
|
60
|
+
try {
|
|
61
|
+
return new URL(u).hostname.toLowerCase();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return u.toLowerCase();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** True when two hosts are the same site, treating sub/parent domains as the same. */
|
|
68
|
+
function sameSite(a, b) {
|
|
69
|
+
return a === b || a.endsWith(`.${b}`) || b.endsWith(`.${a}`);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Judge a completed navigation. Never throws: an integrity check that can fail is a
|
|
73
|
+
* new way for navigate to fail, which is not a trade worth making for a caveat field.
|
|
74
|
+
*/
|
|
75
|
+
export function describeContentIntegrity(requestedUrl, result) {
|
|
76
|
+
const reasons = [];
|
|
77
|
+
try {
|
|
78
|
+
const wanted = hostOf(requestedUrl);
|
|
79
|
+
const landed = hostOf(result.url);
|
|
80
|
+
// The browser layer's verdict is authoritative where it has one. Recomputing the
|
|
81
|
+
// host comparison here instead of reading it would let the two disagree, and two
|
|
82
|
+
// sources of truth for one fact is how the original defect became invisible.
|
|
83
|
+
if (result.desyncDetected || (wanted && landed && !sameSite(wanted, landed))) {
|
|
84
|
+
reasons.push("cross-origin-landing");
|
|
85
|
+
}
|
|
86
|
+
const title = (result.title ?? "").trim().toLowerCase();
|
|
87
|
+
if (title && CHALLENGE_TITLES.some((t) => title.includes(t))) {
|
|
88
|
+
reasons.push("challenge-page-title");
|
|
89
|
+
}
|
|
90
|
+
// Absent length is UNKNOWN, not small. A check that treats missing data as a
|
|
91
|
+
// finding manufactures findings on every caller that does not measure.
|
|
92
|
+
if (typeof result.contentLength === "number" && result.contentLength < IMPLAUSIBLY_SMALL_DOM) {
|
|
93
|
+
reasons.push("implausibly-small-dom");
|
|
94
|
+
}
|
|
95
|
+
if (result.success === false && reasons.length === 0) {
|
|
96
|
+
reasons.push("navigation-reported-failure");
|
|
97
|
+
}
|
|
98
|
+
if (reasons.length === 0)
|
|
99
|
+
return { ok: true, reasons: [] };
|
|
100
|
+
return {
|
|
101
|
+
ok: false,
|
|
102
|
+
reasons,
|
|
103
|
+
note: noteFor(reasons, requestedUrl, result.url),
|
|
104
|
+
requestedUrl,
|
|
105
|
+
landedUrl: result.url,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Undecidable is not a finding. Saying "ok" here is the correct failure
|
|
110
|
+
// direction only because this field exists to RAISE doubt, never to certify:
|
|
111
|
+
// no caller should read `ok: true` as "verified content".
|
|
112
|
+
return { ok: true, reasons: [] };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function noteFor(reasons, requested, landed) {
|
|
116
|
+
if (reasons.includes("challenge-page-title")) {
|
|
117
|
+
return `This looks like an interstitial or challenge page, not ${requested}. Anything measured from it describes the interstitial.`;
|
|
118
|
+
}
|
|
119
|
+
if (reasons.includes("cross-origin-landing")) {
|
|
120
|
+
return `Requested ${requested} but landed on ${landed}. The content is from a different origin than was asked for.`;
|
|
121
|
+
}
|
|
122
|
+
if (reasons.includes("implausibly-small-dom")) {
|
|
123
|
+
return `The response rendered almost no content. A 200 with an near-empty DOM is usually an error or challenge stub.`;
|
|
124
|
+
}
|
|
125
|
+
return `The browser reported this navigation as failed.`;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=content-integrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-integrity.js","sourceRoot":"","sources":["../src/content-integrity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AA4BH;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG;IACvB,eAAe;IACf,oBAAoB;IACpB,uBAAuB;IACvB,gBAAgB;IAChB,eAAe;IACf,yBAAyB;IACzB,eAAe;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,SAAS,MAAM,CAAC,CAAS;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,MAAsB;IAEtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElC,iFAAiF;QACjF,iFAAiF;QACjF,6EAA6E;QAC7E,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvC,CAAC;QAED,6EAA6E;QAC7E,uEAAuE;QACvE,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,GAAG,qBAAqB,EAAE,CAAC;YAC7F,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAE3D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC;YAChD,YAAY;YACZ,SAAS,EAAE,MAAM,CAAC,GAAG;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,6EAA6E;QAC7E,0DAA0D;QAC1D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,OAAiB,EAAE,SAAiB,EAAE,MAAc;IACnE,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7C,OAAO,0DAA0D,SAAS,yDAAyD,CAAC;IACtI,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7C,OAAO,aAAa,SAAS,kBAAkB,MAAM,8DAA8D,CAAC;IACtH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC9C,OAAO,8GAA8G,CAAC;IACxH,CAAC;IACD,OAAO,iDAAiD,CAAC;AAC3D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -48,7 +48,7 @@ export * from "./stealth/index.js";
|
|
|
48
48
|
// Persona Questionnaire (v16.5.0) - Research-based persona generation
|
|
49
49
|
export * from "./persona-questionnaire.js";
|
|
50
50
|
// Values System (v16.7.0) - Research-backed psychological values framework
|
|
51
|
-
// Based on Schwartz's Theory of Basic Human Values, SDT, and Maslow
|
|
51
|
+
// Based on Shalom Schwartz's Theory of Basic Human Values, SDT, and Maslow
|
|
52
52
|
export * from "./values/index.js";
|
|
53
53
|
// MCP Tools (v17.5.0) - Modular MCP tool registration
|
|
54
54
|
// Allows granular tool imports for custom server composition
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACzJ,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACnF,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,yEAAyE;AACzE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvH,2BAA2B;AAC3B,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAElC,iBAAiB;AACjB,cAAc,oBAAoB,CAAC;AAEnC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,+BAA+B;AAC/B,cAAc,wBAAwB,CAAC;AAEvC,4BAA4B;AAC5B,cAAc,qBAAqB,CAAC;AAEpC,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE1E,2BAA2B;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,6CAA6C;AAC7C,uDAAuD;AACvD,cAAc,oBAAoB,CAAC;AAEnC,sEAAsE;AACtE,cAAc,4BAA4B,CAAC;AAE3C,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACzJ,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACnF,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,yEAAyE;AACzE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvH,2BAA2B;AAC3B,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAElC,iBAAiB;AACjB,cAAc,oBAAoB,CAAC;AAEnC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,+BAA+B;AAC/B,cAAc,wBAAwB,CAAC;AAEvC,4BAA4B;AAC5B,cAAc,qBAAqB,CAAC;AAEpC,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE1E,2BAA2B;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,6CAA6C;AAC7C,uDAAuD;AACvD,cAAc,oBAAoB,CAAC;AAEnC,sEAAsE;AACtE,cAAc,4BAA4B,CAAC;AAE3C,2EAA2E;AAC3E,2EAA2E;AAC3E,cAAc,mBAAmB,CAAC;AAElC,sDAAsD;AACtD,6DAA6D;AAC7D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB;AACvB,8CAA8C;AAC9C,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,gEAAgE;AAChE,cAAc,qBAAqB,CAAC;AAEpC,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server-remote.d.ts","sourceRoot":"","sources":["../src/mcp-server-remote.ts"],"names":[],"mappings":";AACA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"mcp-server-remote.d.ts","sourceRoot":"","sources":["../src/mcp-server-remote.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAoCH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA4CxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAuBpE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,6EAA6E;AAC7E,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM;CAI1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCrG;AAmhBD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;CAAE,CAAC;AA2C3F;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAWD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,UAAU,CAAC,CAuDrB;AA2JD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAS5C;AAghBD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAy8B1F"}
|