cbrowser 18.13.4 → 18.14.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.
Files changed (87) hide show
  1. package/dist/agent-personas.d.ts +55 -0
  2. package/dist/agent-personas.d.ts.map +1 -0
  3. package/dist/agent-personas.js +252 -0
  4. package/dist/agent-personas.js.map +1 -0
  5. package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
  6. package/dist/analysis/agent-ready-audit.js +584 -0
  7. package/dist/analysis/agent-ready-audit.js.map +1 -1
  8. package/dist/analysis/competitive-benchmark.d.ts +14 -0
  9. package/dist/analysis/competitive-benchmark.d.ts.map +1 -1
  10. package/dist/analysis/competitive-benchmark.js +245 -0
  11. package/dist/analysis/competitive-benchmark.js.map +1 -1
  12. package/dist/index.d.ts +3 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +5 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/llms-txt/diff.d.ts +85 -0
  17. package/dist/llms-txt/diff.d.ts.map +1 -0
  18. package/dist/llms-txt/diff.js +234 -0
  19. package/dist/llms-txt/diff.js.map +1 -0
  20. package/dist/llms-txt/index.d.ts +19 -0
  21. package/dist/llms-txt/index.d.ts.map +1 -0
  22. package/dist/llms-txt/index.js +19 -0
  23. package/dist/llms-txt/index.js.map +1 -0
  24. package/dist/llms-txt/validator.d.ts +80 -0
  25. package/dist/llms-txt/validator.d.ts.map +1 -0
  26. package/dist/llms-txt/validator.js +341 -0
  27. package/dist/llms-txt/validator.js.map +1 -0
  28. package/dist/mcp-server-remote.d.ts.map +1 -1
  29. package/dist/mcp-server-remote.js +36 -13
  30. package/dist/mcp-server-remote.js.map +1 -1
  31. package/dist/mcp-server.d.ts.map +1 -1
  32. package/dist/mcp-server.js +26 -2
  33. package/dist/mcp-server.js.map +1 -1
  34. package/dist/mcp-tools/base/analysis-tools.d.ts +1 -1
  35. package/dist/mcp-tools/base/analysis-tools.d.ts.map +1 -1
  36. package/dist/mcp-tools/base/analysis-tools.js +56 -2
  37. package/dist/mcp-tools/base/analysis-tools.js.map +1 -1
  38. package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
  39. package/dist/mcp-tools/base/cognitive-tools.js +14 -1
  40. package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
  41. package/dist/mcp-tools/base/index.d.ts +7 -3
  42. package/dist/mcp-tools/base/index.d.ts.map +1 -1
  43. package/dist/mcp-tools/base/index.js +14 -4
  44. package/dist/mcp-tools/base/index.js.map +1 -1
  45. package/dist/mcp-tools/base/llms-txt-tools.d.ts +12 -0
  46. package/dist/mcp-tools/base/llms-txt-tools.d.ts.map +1 -0
  47. package/dist/mcp-tools/base/llms-txt-tools.js +119 -0
  48. package/dist/mcp-tools/base/llms-txt-tools.js.map +1 -0
  49. package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
  50. package/dist/mcp-tools/base/persona-comparison-tools.js +12 -2
  51. package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
  52. package/dist/mcp-tools/base/remediation-tools.d.ts +12 -0
  53. package/dist/mcp-tools/base/remediation-tools.d.ts.map +1 -0
  54. package/dist/mcp-tools/base/remediation-tools.js +106 -0
  55. package/dist/mcp-tools/base/remediation-tools.js.map +1 -0
  56. package/dist/mcp-tools/index.d.ts +10 -10
  57. package/dist/mcp-tools/index.d.ts.map +1 -1
  58. package/dist/mcp-tools/index.js +11 -11
  59. package/dist/mcp-tools/index.js.map +1 -1
  60. package/dist/persona-questionnaire.d.ts +1 -1
  61. package/dist/persona-questionnaire.d.ts.map +1 -1
  62. package/dist/persona-questionnaire.js +12 -2
  63. package/dist/persona-questionnaire.js.map +1 -1
  64. package/dist/personas.d.ts +4 -2
  65. package/dist/personas.d.ts.map +1 -1
  66. package/dist/personas.js +12 -1
  67. package/dist/personas.js.map +1 -1
  68. package/dist/remediation/index.d.ts +19 -0
  69. package/dist/remediation/index.d.ts.map +1 -0
  70. package/dist/remediation/index.js +19 -0
  71. package/dist/remediation/index.js.map +1 -0
  72. package/dist/remediation/llms-txt.d.ts +65 -0
  73. package/dist/remediation/llms-txt.d.ts.map +1 -0
  74. package/dist/remediation/llms-txt.js +219 -0
  75. package/dist/remediation/llms-txt.js.map +1 -0
  76. package/dist/remediation/patch-generator.d.ts +54 -0
  77. package/dist/remediation/patch-generator.d.ts.map +1 -0
  78. package/dist/remediation/patch-generator.js +274 -0
  79. package/dist/remediation/patch-generator.js.map +1 -0
  80. package/dist/remediation/structured-data.d.ts +64 -0
  81. package/dist/remediation/structured-data.d.ts.map +1 -0
  82. package/dist/remediation/structured-data.js +352 -0
  83. package/dist/remediation/structured-data.js.map +1 -0
  84. package/dist/types.d.ts +213 -0
  85. package/dist/types.d.ts.map +1 -1
  86. package/dist/types.js.map +1 -1
  87. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,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;AAIvH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1E,cAAc,oBAAoB,CAAC;AAInC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,4BAA4B,CAAC;AAI3C,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EAEvB,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,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,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;AAIvH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1E,cAAc,oBAAoB,CAAC;AAInC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,4BAA4B,CAAC;AAI3C,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EAEvB,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;AAC9B,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -31,6 +31,10 @@ export * from "./visual/index.js";
31
31
  export * from "./testing/index.js";
32
32
  // Analysis module
33
33
  export * from "./analysis/index.js";
34
+ // Remediation module (v17.0.0)
35
+ export * from "./remediation/index.js";
36
+ // llms.txt module (v17.0.0)
37
+ export * from "./llms-txt/index.js";
34
38
  // Performance module
35
39
  export * from "./performance/index.js";
36
40
  // Utilities module (v10.4.4)
@@ -49,7 +53,7 @@ export * from "./values/index.js";
49
53
  // Allows granular tool imports for custom server composition
50
54
  export { registerAllPublicTools, registerBaseTools, registerPersonaCreationTools, registerAskUserTool, registerEnterpriseStubs,
51
55
  // Individual tool categories for granular use
52
- registerNavigationTools, registerInteractionTools, registerExtractionTools, registerAssertionTools, registerAnalysisTools, registerSessionTools, registerHealingTools, registerVisualTestingTools, registerTestingTools, registerBugAnalysisTools, registerPersonaComparisonTools, registerCognitiveTools, registerValuesTools, registerPerformanceTools, registerAuditTools, registerBrowserManagementTools, } from "./mcp-tools/index.js";
56
+ registerNavigationTools, registerInteractionTools, registerExtractionTools, registerAssertionTools, registerAnalysisTools, registerSessionTools, registerHealingTools, registerVisualTestingTools, registerTestingTools, registerBugAnalysisTools, registerPersonaComparisonTools, registerCognitiveTools, registerValuesTools, registerPerformanceTools, registerAuditTools, registerBrowserManagementTools, registerRemediationTools, registerLlmsTxtTools, } from "./mcp-tools/index.js";
53
57
  // Security module (v18.0.0) - Request signing and audit logging
54
58
  export * from "./security/index.js";
55
59
  //# sourceMappingURL=index.js.map
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,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,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,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,oEAAoE;AACpE,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,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,gEAAgE;AAChE,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,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,oEAAoE;AACpE,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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * CBrowser - Cognitive Browser Automation
3
+ * Copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com
4
+ * Learn more at https://cbrowser.ai - MIT License
5
+ */
6
+ /**
7
+ * A page entry from llms.txt or site
8
+ */
9
+ export interface LlmsTxtPage {
10
+ /** Page title */
11
+ title: string;
12
+ /** Page URL */
13
+ url: string;
14
+ /** Optional description */
15
+ description?: string;
16
+ /** Section this page belongs to */
17
+ section?: string;
18
+ }
19
+ /**
20
+ * A difference found between llms.txt and site
21
+ */
22
+ export interface LlmsTxtDiffEntry {
23
+ /** Type of change */
24
+ type: "added" | "removed" | "changed";
25
+ /** Page title */
26
+ title: string;
27
+ /** Page URL */
28
+ url: string;
29
+ /** For 'changed' type: what changed */
30
+ changes?: string[];
31
+ /** The section affected */
32
+ section?: string;
33
+ /** Suggested action */
34
+ action: string;
35
+ }
36
+ /**
37
+ * Result of llms.txt diff
38
+ */
39
+ export interface LlmsTxtDiffResult {
40
+ /** Base URL that was analyzed */
41
+ url: string;
42
+ /** When diff was run */
43
+ timestamp: string;
44
+ /** Whether llms.txt is up to date */
45
+ upToDate: boolean;
46
+ /** Pages in site but not in llms.txt */
47
+ additions: LlmsTxtDiffEntry[];
48
+ /** Pages in llms.txt but not in site */
49
+ removals: LlmsTxtDiffEntry[];
50
+ /** Pages with changed content */
51
+ changes: LlmsTxtDiffEntry[];
52
+ /** Summary statistics */
53
+ summary: {
54
+ totalDifferences: number;
55
+ additions: number;
56
+ removals: number;
57
+ changes: number;
58
+ };
59
+ /** Suggested updated llms.txt content */
60
+ suggestedUpdate?: string;
61
+ }
62
+ /**
63
+ * Options for llms.txt diff
64
+ */
65
+ export interface LlmsTxtDiffOptions {
66
+ /** Existing llms.txt content */
67
+ existingContent: string;
68
+ /** Run headless browser */
69
+ headless?: boolean;
70
+ /** Whether to crawl linked pages */
71
+ crawl?: boolean;
72
+ /** Max pages to crawl */
73
+ maxPages?: number;
74
+ }
75
+ /**
76
+ * Compare llms.txt against current site structure
77
+ */
78
+ export declare function diffLlmsTxt(url: string, options: LlmsTxtDiffOptions): Promise<LlmsTxtDiffResult>;
79
+ /**
80
+ * Fetch existing llms.txt from URL and compare against site
81
+ */
82
+ export declare function diffLlmsTxtFromUrl(siteUrl: string, options?: Omit<LlmsTxtDiffOptions, "existingContent"> & {
83
+ llmsTxtUrl?: string;
84
+ }): Promise<LlmsTxtDiffResult>;
85
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/llms-txt/diff.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACtC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,iCAAiC;IACjC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,yBAAyB;IACzB,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0ED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA+G5B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAClF,OAAO,CAAC,iBAAiB,CAAC,CAwD5B"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * CBrowser - Cognitive Browser Automation
3
+ * Copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com
4
+ * Learn more at https://cbrowser.ai - MIT License
5
+ */
6
+ /**
7
+ * llms.txt Diff
8
+ *
9
+ * Compare current site structure against existing llms.txt to detect drift.
10
+ * Helps maintain llms.txt files as sites evolve.
11
+ *
12
+ * @since 17.0.0
13
+ */
14
+ import { generateLlmsTxt } from "../remediation/llms-txt.js";
15
+ /**
16
+ * Parse llms.txt content into structured pages
17
+ */
18
+ function parseLlmsTxtPages(content) {
19
+ const pages = [];
20
+ const lines = content.split("\n");
21
+ let currentSection;
22
+ for (const line of lines) {
23
+ // Section header
24
+ if (line.startsWith("## ")) {
25
+ currentSection = line.slice(3).trim();
26
+ continue;
27
+ }
28
+ // Link: - [title](url) or - [title](url): description
29
+ const linkMatch = line.match(/\[([^\]]+)\]\(([^)]+)\)(?::\s*(.+))?/);
30
+ if (linkMatch) {
31
+ pages.push({
32
+ title: linkMatch[1],
33
+ url: linkMatch[2],
34
+ description: linkMatch[3]?.trim(),
35
+ section: currentSection,
36
+ });
37
+ }
38
+ }
39
+ return pages;
40
+ }
41
+ /**
42
+ * Extract pages from generated llms.txt result
43
+ */
44
+ function extractPagesFromResult(result) {
45
+ const pages = [];
46
+ for (const section of result.sections) {
47
+ for (const link of section.links) {
48
+ pages.push({
49
+ title: link.title,
50
+ url: link.url,
51
+ description: link.description,
52
+ section: section.title,
53
+ });
54
+ }
55
+ }
56
+ return pages;
57
+ }
58
+ /**
59
+ * Normalize URL for comparison (remove trailing slashes, protocol variations)
60
+ */
61
+ function normalizeUrl(url, baseUrl) {
62
+ try {
63
+ // Handle relative URLs
64
+ const fullUrl = baseUrl && !url.startsWith("http")
65
+ ? new URL(url, baseUrl).toString()
66
+ : url;
67
+ const parsed = new URL(fullUrl);
68
+ // Remove trailing slash, lowercase, remove www
69
+ return parsed.toString()
70
+ .replace(/\/$/, "")
71
+ .toLowerCase()
72
+ .replace(/^https?:\/\/www\./, "https://");
73
+ }
74
+ catch {
75
+ return url.toLowerCase().replace(/\/$/, "");
76
+ }
77
+ }
78
+ /**
79
+ * Compare llms.txt against current site structure
80
+ */
81
+ export async function diffLlmsTxt(url, options) {
82
+ const { existingContent, headless = true, crawl = false, maxPages = 10, } = options;
83
+ // Parse existing llms.txt
84
+ const existingPages = parseLlmsTxtPages(existingContent);
85
+ // Generate fresh llms.txt from site
86
+ const freshResult = await generateLlmsTxt({
87
+ url,
88
+ crawl,
89
+ maxPages,
90
+ headless,
91
+ });
92
+ const freshPages = extractPagesFromResult(freshResult);
93
+ // Create maps for comparison
94
+ const existingByUrl = new Map();
95
+ for (const page of existingPages) {
96
+ existingByUrl.set(normalizeUrl(page.url, url), page);
97
+ }
98
+ const freshByUrl = new Map();
99
+ for (const page of freshPages) {
100
+ freshByUrl.set(normalizeUrl(page.url, url), page);
101
+ }
102
+ const additions = [];
103
+ const removals = [];
104
+ const changes = [];
105
+ // Find additions (in site but not in llms.txt)
106
+ for (const [normalizedUrl, freshPage] of freshByUrl) {
107
+ if (!existingByUrl.has(normalizedUrl)) {
108
+ additions.push({
109
+ type: "added",
110
+ title: freshPage.title,
111
+ url: freshPage.url,
112
+ section: freshPage.section,
113
+ action: `Add to llms.txt: - [${freshPage.title}](${freshPage.url})`,
114
+ });
115
+ }
116
+ }
117
+ // Find removals (in llms.txt but not in site)
118
+ for (const [normalizedUrl, existingPage] of existingByUrl) {
119
+ if (!freshByUrl.has(normalizedUrl)) {
120
+ removals.push({
121
+ type: "removed",
122
+ title: existingPage.title,
123
+ url: existingPage.url,
124
+ section: existingPage.section,
125
+ action: `Remove from llms.txt or verify page still exists: ${existingPage.url}`,
126
+ });
127
+ }
128
+ }
129
+ // Find changes (same URL but different title/description)
130
+ for (const [normalizedUrl, freshPage] of freshByUrl) {
131
+ const existingPage = existingByUrl.get(normalizedUrl);
132
+ if (existingPage) {
133
+ const changesList = [];
134
+ if (existingPage.title !== freshPage.title) {
135
+ changesList.push(`Title changed: "${existingPage.title}" → "${freshPage.title}"`);
136
+ }
137
+ if (existingPage.description !== freshPage.description) {
138
+ if (freshPage.description && !existingPage.description) {
139
+ changesList.push(`Description added: "${freshPage.description}"`);
140
+ }
141
+ else if (!freshPage.description && existingPage.description) {
142
+ changesList.push(`Description removed`);
143
+ }
144
+ else if (freshPage.description && existingPage.description) {
145
+ changesList.push(`Description changed`);
146
+ }
147
+ }
148
+ if (changesList.length > 0) {
149
+ changes.push({
150
+ type: "changed",
151
+ title: freshPage.title,
152
+ url: freshPage.url,
153
+ changes: changesList,
154
+ section: freshPage.section || existingPage.section,
155
+ action: `Update entry: - [${freshPage.title}](${freshPage.url})${freshPage.description ? `: ${freshPage.description}` : ""}`,
156
+ });
157
+ }
158
+ }
159
+ }
160
+ const totalDifferences = additions.length + removals.length + changes.length;
161
+ return {
162
+ url,
163
+ timestamp: new Date().toISOString(),
164
+ upToDate: totalDifferences === 0,
165
+ additions,
166
+ removals,
167
+ changes,
168
+ summary: {
169
+ totalDifferences,
170
+ additions: additions.length,
171
+ removals: removals.length,
172
+ changes: changes.length,
173
+ },
174
+ suggestedUpdate: totalDifferences > 0 ? freshResult.markdown : undefined,
175
+ };
176
+ }
177
+ /**
178
+ * Fetch existing llms.txt from URL and compare against site
179
+ */
180
+ export async function diffLlmsTxtFromUrl(siteUrl, options = {}) {
181
+ const { llmsTxtUrl, headless = true, crawl = false, maxPages = 10 } = options;
182
+ // Determine llms.txt URL
183
+ let fetchUrl = llmsTxtUrl;
184
+ if (!fetchUrl) {
185
+ const baseUrl = siteUrl.endsWith("/") ? siteUrl : siteUrl + "/";
186
+ fetchUrl = baseUrl + "llms.txt";
187
+ }
188
+ // Fetch existing llms.txt
189
+ try {
190
+ const response = await fetch(fetchUrl);
191
+ if (!response.ok) {
192
+ // No existing llms.txt - treat everything as additions
193
+ const freshResult = await generateLlmsTxt({
194
+ url: siteUrl,
195
+ crawl,
196
+ maxPages,
197
+ headless,
198
+ });
199
+ const freshPages = extractPagesFromResult(freshResult);
200
+ return {
201
+ url: siteUrl,
202
+ timestamp: new Date().toISOString(),
203
+ upToDate: false,
204
+ additions: freshPages.map((p) => ({
205
+ type: "added",
206
+ title: p.title,
207
+ url: p.url,
208
+ section: p.section,
209
+ action: `Add to llms.txt: - [${p.title}](${p.url})`,
210
+ })),
211
+ removals: [],
212
+ changes: [],
213
+ summary: {
214
+ totalDifferences: freshPages.length,
215
+ additions: freshPages.length,
216
+ removals: 0,
217
+ changes: 0,
218
+ },
219
+ suggestedUpdate: freshResult.markdown,
220
+ };
221
+ }
222
+ const existingContent = await response.text();
223
+ return diffLlmsTxt(siteUrl, {
224
+ existingContent,
225
+ headless,
226
+ crawl,
227
+ maxPages,
228
+ });
229
+ }
230
+ catch (error) {
231
+ throw new Error(`Failed to fetch llms.txt: ${error.message}`);
232
+ }
233
+ }
234
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/llms-txt/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * CBrowser - Cognitive Browser Automation
3
+ * Copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com
4
+ * Learn more at https://cbrowser.ai - MIT License
5
+ */
6
+ /**
7
+ * llms.txt Module
8
+ *
9
+ * Complete llms.txt lifecycle management:
10
+ * - Validation: Check format and link validity
11
+ * - Diff: Compare site changes against existing llms.txt
12
+ *
13
+ * Generation is in remediation/llms-txt.ts (Phase 3)
14
+ *
15
+ * @since 17.0.0
16
+ */
17
+ export * from "./validator.js";
18
+ export * from "./diff.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llms-txt/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * CBrowser - Cognitive Browser Automation
3
+ * Copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com
4
+ * Learn more at https://cbrowser.ai - MIT License
5
+ */
6
+ /**
7
+ * llms.txt Module
8
+ *
9
+ * Complete llms.txt lifecycle management:
10
+ * - Validation: Check format and link validity
11
+ * - Diff: Compare site changes against existing llms.txt
12
+ *
13
+ * Generation is in remediation/llms-txt.ts (Phase 3)
14
+ *
15
+ * @since 17.0.0
16
+ */
17
+ export * from "./validator.js";
18
+ export * from "./diff.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llms-txt/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * CBrowser - Cognitive Browser Automation
3
+ * Copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com
4
+ * Learn more at https://cbrowser.ai - MIT License
5
+ */
6
+ /**
7
+ * llms.txt Validator
8
+ *
9
+ * Validates llms.txt files for format compliance and link validity.
10
+ * Based on the llms.txt specification: https://llmstxt.org/
11
+ *
12
+ * @since 17.0.0
13
+ */
14
+ /**
15
+ * Validation error with severity
16
+ */
17
+ export interface ValidationIssue {
18
+ /** Line number (1-indexed) where issue was found */
19
+ line: number;
20
+ /** Severity: error (must fix) or warning (should fix) */
21
+ severity: "error" | "warning";
22
+ /** Type of issue */
23
+ type: "format" | "link" | "structure";
24
+ /** Human-readable message */
25
+ message: string;
26
+ /** The problematic content */
27
+ content?: string;
28
+ }
29
+ /**
30
+ * Result of llms.txt validation
31
+ */
32
+ export interface LlmsTxtValidationResult {
33
+ /** Whether the file is valid (no errors) */
34
+ valid: boolean;
35
+ /** Title extracted from the file */
36
+ title?: string;
37
+ /** Number of sections found */
38
+ sectionCount: number;
39
+ /** Number of links found */
40
+ linkCount: number;
41
+ /** Number of links that were validated as reachable */
42
+ linksValidated: number;
43
+ /** Number of broken links found */
44
+ brokenLinks: number;
45
+ /** All issues found */
46
+ issues: ValidationIssue[];
47
+ /** Summary statistics */
48
+ summary: {
49
+ errors: number;
50
+ warnings: number;
51
+ };
52
+ }
53
+ /**
54
+ * Options for llms.txt validation
55
+ */
56
+ export interface LlmsTxtValidationOptions {
57
+ /** Whether to validate that links are reachable */
58
+ validateLinks?: boolean;
59
+ /** Timeout for link validation in ms */
60
+ linkTimeout?: number;
61
+ /** Maximum number of links to validate (for performance) */
62
+ maxLinksToValidate?: number;
63
+ }
64
+ /**
65
+ * Validate llms.txt format (structure and syntax)
66
+ */
67
+ export declare function validateLlmsTxtFormat(content: string): ValidationIssue[];
68
+ /**
69
+ * Validate that links in llms.txt are reachable
70
+ */
71
+ export declare function validateLlmsTxtLinks(content: string, options?: LlmsTxtValidationOptions): Promise<ValidationIssue[]>;
72
+ /**
73
+ * Fully validate an llms.txt file
74
+ */
75
+ export declare function validateLlmsTxt(content: string, options?: LlmsTxtValidationOptions): Promise<LlmsTxtValidationResult>;
76
+ /**
77
+ * Fetch llms.txt from a URL and validate it
78
+ */
79
+ export declare function validateLlmsTxtFromUrl(url: string, options?: LlmsTxtValidationOptions): Promise<LlmsTxtValidationResult>;
80
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/llms-txt/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,oBAAoB;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,yBAAyB;IACzB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAsED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAkJxE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,eAAe,EAAE,CAAC,CAyD5B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAyClC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAmDlC"}