cbrowser 19.3.7 → 19.3.9
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 +10 -1
- package/dist/analysis/accessibility-empathy.js.map +1 -1
- package/dist/analysis/agent-ready-audit.d.ts +9 -0
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +79 -6
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/analysis/bug-hunter.d.ts.map +1 -1
- package/dist/analysis/bug-hunter.js +27 -10
- package/dist/analysis/bug-hunter.js.map +1 -1
- package/dist/analysis/chaos-testing.d.ts.map +1 -1
- package/dist/analysis/chaos-testing.js +12 -3
- package/dist/analysis/chaos-testing.js.map +1 -1
- package/dist/analysis/competitive-benchmark.d.ts +50 -7
- package/dist/analysis/competitive-benchmark.d.ts.map +1 -1
- package/dist/analysis/competitive-benchmark.js +226 -106
- package/dist/analysis/competitive-benchmark.js.map +1 -1
- package/dist/analysis/page-understanding.d.ts +2 -0
- package/dist/analysis/page-understanding.d.ts.map +1 -1
- package/dist/analysis/page-understanding.js +104 -17
- package/dist/analysis/page-understanding.js.map +1 -1
- package/dist/artifact-store.d.ts +24 -2
- package/dist/artifact-store.d.ts.map +1 -1
- package/dist/artifact-store.js +34 -4
- package/dist/artifact-store.js.map +1 -1
- package/dist/browser/session-manager.d.ts.map +1 -1
- package/dist/browser/session-manager.js +3 -0
- package/dist/browser/session-manager.js.map +1 -1
- package/dist/browser/site-profile-manager.d.ts +17 -1
- package/dist/browser/site-profile-manager.d.ts.map +1 -1
- package/dist/browser/site-profile-manager.js +49 -12
- package/dist/browser/site-profile-manager.js.map +1 -1
- package/dist/browser.d.ts +58 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +377 -50
- package/dist/browser.js.map +1 -1
- package/dist/charge-scope.d.ts.map +1 -1
- package/dist/charge-scope.js +6 -4
- package/dist/charge-scope.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -2
- package/dist/config.js.map +1 -1
- package/dist/mcp-server-remote.d.ts +27 -1
- package/dist/mcp-server-remote.d.ts.map +1 -1
- package/dist/mcp-server-remote.js +160 -87
- package/dist/mcp-server-remote.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +4 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/base/analysis-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/analysis-tools.js +5 -0
- package/dist/mcp-tools/base/analysis-tools.js.map +1 -1
- package/dist/mcp-tools/base/audit-tools.d.ts +14 -0
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +17 -8
- package/dist/mcp-tools/base/audit-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-state-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/browser-state-tools.js +18 -27
- package/dist/mcp-tools/base/browser-state-tools.js.map +1 -1
- package/dist/mcp-tools/base/capture-tools.d.ts +18 -0
- package/dist/mcp-tools/base/capture-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/capture-tools.js +109 -55
- package/dist/mcp-tools/base/capture-tools.js.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.js +43 -16
- package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
- package/dist/mcp-tools/base/marketing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/marketing-tools.js +8 -4
- package/dist/mcp-tools/base/marketing-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 +14 -3
- package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
- package/dist/mcp-tools/base/remediation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/remediation-tools.js +10 -2
- package/dist/mcp-tools/base/remediation-tools.js.map +1 -1
- package/dist/mcp-tools/base/session-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/session-tools.js +2 -0
- package/dist/mcp-tools/base/session-tools.js.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.d.ts +13 -0
- package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.js +45 -16
- package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.js +59 -13
- package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
- package/dist/mcp-tools/persona-lifecycle-tools.d.ts.map +1 -1
- package/dist/mcp-tools/persona-lifecycle-tools.js +4 -2
- package/dist/mcp-tools/persona-lifecycle-tools.js.map +1 -1
- package/dist/mcp-tools/tier-gate.d.ts +4 -4
- package/dist/mcp-tools/tier-gate.d.ts.map +1 -1
- package/dist/mcp-tools/tier-gate.js +41 -19
- package/dist/mcp-tools/tier-gate.js.map +1 -1
- package/dist/mcp-tools/tool-categories.d.ts +11 -0
- package/dist/mcp-tools/tool-categories.d.ts.map +1 -1
- package/dist/mcp-tools/tool-categories.js +27 -1
- package/dist/mcp-tools/tool-categories.js.map +1 -1
- package/dist/mcp-tools/ui-resources.d.ts.map +1 -1
- package/dist/mcp-tools/ui-resources.js +32 -10
- package/dist/mcp-tools/ui-resources.js.map +1 -1
- package/dist/personas.d.ts +14 -0
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +26 -0
- package/dist/personas.js.map +1 -1
- package/dist/recording/engine.d.ts.map +1 -1
- package/dist/recording/engine.js +2 -1
- package/dist/recording/engine.js.map +1 -1
- package/dist/remediation/patch-generator.d.ts.map +1 -1
- package/dist/remediation/patch-generator.js +7 -1
- package/dist/remediation/patch-generator.js.map +1 -1
- package/dist/remediation/structured-data.d.ts +73 -1
- package/dist/remediation/structured-data.d.ts.map +1 -1
- package/dist/remediation/structured-data.js +239 -63
- package/dist/remediation/structured-data.js.map +1 -1
- package/dist/request-context.d.ts +18 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +56 -0
- package/dist/request-context.js.map +1 -0
- package/dist/site-model/manager.d.ts +14 -1
- package/dist/site-model/manager.d.ts.map +1 -1
- package/dist/site-model/manager.js +24 -1
- package/dist/site-model/manager.js.map +1 -1
- package/dist/types.d.ts +90 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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-values.d.ts +16 -0
- package/dist/values/persona-values.d.ts.map +1 -1
- package/dist/values/persona-values.js +56 -4
- package/dist/values/persona-values.js.map +1 -1
- package/dist/visual/ab-comparison.d.ts +22 -0
- package/dist/visual/ab-comparison.d.ts.map +1 -1
- package/dist/visual/ab-comparison.js +36 -9
- package/dist/visual/ab-comparison.js.map +1 -1
- package/dist/visual/cognitive-transport.d.ts +15 -1
- package/dist/visual/cognitive-transport.d.ts.map +1 -1
- package/dist/visual/cognitive-transport.js +42 -12
- package/dist/visual/cognitive-transport.js.map +1 -1
- package/dist/visual/cross-browser.d.ts +8 -0
- package/dist/visual/cross-browser.d.ts.map +1 -1
- package/dist/visual/cross-browser.js +8 -4
- package/dist/visual/cross-browser.js.map +1 -1
- package/dist/visual/distance-metrics.d.ts +11 -2
- package/dist/visual/distance-metrics.d.ts.map +1 -1
- package/dist/visual/distance-metrics.js +44 -5
- package/dist/visual/distance-metrics.js.map +1 -1
- package/dist/visual/regression.d.ts +61 -0
- package/dist/visual/regression.d.ts.map +1 -1
- package/dist/visual/regression.js +123 -50
- package/dist/visual/regression.js.map +1 -1
- package/dist/visual/responsive.d.ts +8 -0
- package/dist/visual/responsive.d.ts.map +1 -1
- package/dist/visual/responsive.js +95 -17
- package/dist/visual/responsive.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,67 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { CBrowser } from "../browser.js";
|
|
7
7
|
import { navigationError } from "../navigation-errors.js";
|
|
8
|
+
/**
|
|
9
|
+
* Below this, no type is claimed. Any score above the 0.1 floor used to win,
|
|
10
|
+
* so one weak signal produced a full schema: cbrowser.ai/pricing became an
|
|
11
|
+
* Article at 20% (meta author alone). One strong signal (<article>, the site
|
|
12
|
+
* root) still reaches it; one weak one (a date, a price, an address) does not.
|
|
13
|
+
* (2026-10-10, B34)
|
|
14
|
+
*/
|
|
15
|
+
export const MIN_TYPE_CONFIDENCE = 0.4;
|
|
16
|
+
const ORGANIZATION_TYPES = ["Organization", "Corporation", "NGO", "EducationalOrganization", "GovernmentOrganization", "OnlineBusiness"];
|
|
17
|
+
const ARTICLE_TYPES = ["Article", "BlogPosting", "NewsArticle", "TechArticle", "ScholarlyArticle", "Report", "LiveBlogPosting", "SocialMediaPosting"];
|
|
18
|
+
const PRODUCT_TYPES = ["Product", "ProductGroup", "ProductModel", "IndividualProduct"];
|
|
19
|
+
const SOFTWARE_TYPES = ["SoftwareApplication", "WebApplication", "MobileApplication"];
|
|
20
|
+
const LOCAL_BUSINESS_TYPES = ["LocalBusiness", "Store", "Restaurant", "FoodEstablishment", "ProfessionalService", "MedicalBusiness"];
|
|
21
|
+
const EVENT_TYPES = ["Event", "BusinessEvent", "EducationEvent", "Festival", "MusicEvent", "SocialEvent", "SportsEvent", "TheaterEvent"];
|
|
22
|
+
const WEBPAGE_TYPES = ["WebPage", "AboutPage", "CollectionPage", "ContactPage", "FAQPage", "ItemPage", "ProfilePage", "QAPage", "SearchResultsPage", "CheckoutPage"];
|
|
23
|
+
/** Existing types that already describe what a suggested @type would add. */
|
|
24
|
+
const ALREADY_DESCRIBED = {
|
|
25
|
+
Organization: [...ORGANIZATION_TYPES, ...LOCAL_BUSINESS_TYPES],
|
|
26
|
+
Article: ARTICLE_TYPES,
|
|
27
|
+
// A SaaS page's offering is a SoftwareApplication; a Product beside it
|
|
28
|
+
// describes the same thing twice.
|
|
29
|
+
Product: [...PRODUCT_TYPES, ...SOFTWARE_TYPES],
|
|
30
|
+
FAQPage: ["FAQPage"],
|
|
31
|
+
LocalBusiness: LOCAL_BUSINESS_TYPES,
|
|
32
|
+
WebPage: WEBPAGE_TYPES,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* A page has one main subject, so these exclude each other. SoftwareApplication
|
|
36
|
+
* is deliberately absent: cbrowser.ai declares it site-wide, on its blog posts
|
|
37
|
+
* too, where an Article is right. (Measured 2026-10-10.)
|
|
38
|
+
*/
|
|
39
|
+
const MAIN_SUBJECT = {
|
|
40
|
+
Article: ARTICLE_TYPES,
|
|
41
|
+
Product: PRODUCT_TYPES,
|
|
42
|
+
Event: EVENT_TYPES,
|
|
43
|
+
Recipe: ["Recipe"],
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Does suggesting `suggestedType` clash with what the page already declares?
|
|
47
|
+
* A duplicate (the page has it) or a conflict (the page declares a different
|
|
48
|
+
* main subject). Never suggest either. (2026-10-10, B34)
|
|
49
|
+
*/
|
|
50
|
+
export function schemaClash(suggestedType, existing) {
|
|
51
|
+
const dup = existing.find((t) => (ALREADY_DESCRIBED[suggestedType] ?? [suggestedType]).includes(t));
|
|
52
|
+
if (dup)
|
|
53
|
+
return { kind: "duplicate", existingType: dup };
|
|
54
|
+
if (MAIN_SUBJECT[suggestedType]) {
|
|
55
|
+
for (const [subject, types] of Object.entries(MAIN_SUBJECT)) {
|
|
56
|
+
if (subject === suggestedType)
|
|
57
|
+
continue;
|
|
58
|
+
const other = existing.find((t) => types.includes(t));
|
|
59
|
+
if (other)
|
|
60
|
+
return { kind: "conflict", existingType: other };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/** og:title, else the page's h1, else <title>. (2026-10-10, B34) */
|
|
66
|
+
function pageHeadline(signals) {
|
|
67
|
+
return signals.ogTitle || signals.h1 || signals.title;
|
|
68
|
+
}
|
|
8
69
|
/**
|
|
9
70
|
* Extract signals from a page for type detection
|
|
10
71
|
*/
|
|
@@ -16,14 +77,19 @@ async function extractPageSignals(page, url) {
|
|
|
16
77
|
// Check for article indicators
|
|
17
78
|
const hasArticleTag = !!document.querySelector("article");
|
|
18
79
|
const hasPublishDate = !!(document.querySelector('time[datetime], [class*="publish"], [class*="date"], meta[property="article:published_time"]'));
|
|
19
|
-
|
|
80
|
+
// Not meta[name="author"]: sites set it once in the layout, so it is on
|
|
81
|
+
// every page. It made cbrowser.ai/pricing an Article at 20% on the
|
|
82
|
+
// strength of "Has author attribution" alone. A byline is on the page.
|
|
83
|
+
// (2026-10-10, B34)
|
|
84
|
+
const hasAuthor = !!(document.querySelector('[rel="author"], [class*="author"], [class*="byline"]'));
|
|
20
85
|
// Check for product indicators
|
|
21
86
|
const hasPrice = !!(document.querySelector('[class*="price"], [itemprop="price"], .price'));
|
|
22
87
|
// Check for add-to-cart buttons using class selectors and text content matching
|
|
23
88
|
const hasAddToCart = !!(document.querySelector('[class*="add-to-cart"], [class*="addtocart"], [class*="add_to_cart"], [data-action="add-to-cart"]') ||
|
|
24
89
|
Array.from(document.querySelectorAll('button, [role="button"], input[type="submit"]')).some(el => /add to cart|buy now|purchase|add to bag/i.test(el.textContent || '')));
|
|
25
|
-
|
|
26
|
-
|
|
90
|
+
// JSON-LD Product is decided from the parsed types (parseExistingSchema):
|
|
91
|
+
// this read only the FIRST script, as a raw substring. (2026-10-10, B34)
|
|
92
|
+
const hasProductMicrodata = !!document.querySelector('[itemtype*="Product"]');
|
|
27
93
|
// Check for FAQ indicators
|
|
28
94
|
const hasFaqSection = !!(document.querySelector('[class*="faq"], details, [itemtype*="FAQPage"]') ||
|
|
29
95
|
document.querySelector("h2, h3")?.textContent?.toLowerCase().includes("faq"));
|
|
@@ -36,26 +102,10 @@ async function extractPageSignals(page, url) {
|
|
|
36
102
|
const hasPhone = !!(document.querySelector('a[href^="tel:"], [itemprop="telephone"]'));
|
|
37
103
|
// Get og:type
|
|
38
104
|
const ogType = document.querySelector('meta[property="og:type"]')?.getAttribute("content") || undefined;
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
const json = JSON.parse(script.textContent || "{}");
|
|
45
|
-
if (json["@type"]) {
|
|
46
|
-
existingSchema.push(json["@type"]);
|
|
47
|
-
}
|
|
48
|
-
else if (Array.isArray(json)) {
|
|
49
|
-
json.forEach((item) => {
|
|
50
|
-
if (item["@type"])
|
|
51
|
-
existingSchema.push(item["@type"]);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Ignore parse errors
|
|
57
|
-
}
|
|
58
|
-
});
|
|
105
|
+
// Existing schema: the raw JSON-LD blocks, parsed in Node by
|
|
106
|
+
// parseExistingSchema so the parser is testable. (2026-10-10, B34)
|
|
107
|
+
const ldTexts = Array.from(document.querySelectorAll('script[type="application/ld+json"]'))
|
|
108
|
+
.map((script) => script.textContent || "");
|
|
59
109
|
// Check if homepage
|
|
60
110
|
const isHomepage = window.location.pathname === "/" || window.location.pathname === "";
|
|
61
111
|
// ========== EXTRACT VALUES (v18.22.0) ==========
|
|
@@ -68,11 +118,12 @@ async function extractPageSignals(page, url) {
|
|
|
68
118
|
document.querySelector('[rel="author"]')?.textContent ||
|
|
69
119
|
document.querySelector('[class*="author"] a, [class*="byline"] a, .author, .byline')?.textContent ||
|
|
70
120
|
"").trim();
|
|
71
|
-
// Publish date
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const publishDate =
|
|
75
|
-
|
|
121
|
+
// Publish date. The page-level meta first: the first <time datetime> in
|
|
122
|
+
// the document can belong to a sidebar or a related-posts card.
|
|
123
|
+
// Normalised to ISO 8601 by the generator (toIsoDate). (2026-10-10, B34)
|
|
124
|
+
const publishDate = (document.querySelector('meta[property="article:published_time"]')?.getAttribute("content") ||
|
|
125
|
+
document.querySelector('time[datetime]')?.getAttribute("datetime") ||
|
|
126
|
+
"").trim();
|
|
76
127
|
// Modified date
|
|
77
128
|
const modifiedDate = (document.querySelector('meta[property="article:modified_time"]')?.getAttribute("content") ||
|
|
78
129
|
"");
|
|
@@ -106,6 +157,11 @@ async function extractPageSignals(page, url) {
|
|
|
106
157
|
// Phone number
|
|
107
158
|
const phoneEl = document.querySelector('a[href^="tel:"]');
|
|
108
159
|
const phone = phoneEl ? phoneEl.getAttribute("href")?.replace("tel:", "") || "" : (document.querySelector('[itemprop="telephone"]')?.textContent?.trim() || "");
|
|
160
|
+
// Names better than the raw <title>, which carries the site suffix
|
|
161
|
+
// ("CBrowser | Pricing | CBrowser"). (2026-10-10, B34)
|
|
162
|
+
const ogTitle = (document.querySelector('meta[property="og:title"]')?.getAttribute("content") || "").trim();
|
|
163
|
+
const ogSiteName = (document.querySelector('meta[property="og:site_name"]')?.getAttribute("content") || "").trim();
|
|
164
|
+
const h1 = (document.querySelector("h1")?.textContent || "").replace(/\s+/g, " ").trim();
|
|
109
165
|
// FAQ items extraction
|
|
110
166
|
const faqItems = [];
|
|
111
167
|
// Try <details> elements
|
|
@@ -142,7 +198,7 @@ async function extractPageSignals(page, url) {
|
|
|
142
198
|
return {
|
|
143
199
|
title,
|
|
144
200
|
hasArticleTag,
|
|
145
|
-
|
|
201
|
+
hasProductMicrodata,
|
|
146
202
|
hasPrice,
|
|
147
203
|
hasAddToCart,
|
|
148
204
|
hasPublishDate,
|
|
@@ -154,7 +210,10 @@ async function extractPageSignals(page, url) {
|
|
|
154
210
|
hasPhone,
|
|
155
211
|
isHomepage,
|
|
156
212
|
ogType,
|
|
157
|
-
|
|
213
|
+
ldTexts,
|
|
214
|
+
ogTitle,
|
|
215
|
+
ogSiteName,
|
|
216
|
+
h1,
|
|
158
217
|
// Extracted values (v18.22.0)
|
|
159
218
|
description,
|
|
160
219
|
authorName,
|
|
@@ -168,7 +227,83 @@ async function extractPageSignals(page, url) {
|
|
|
168
227
|
faqItems: faqItems.length > 0 ? faqItems : undefined,
|
|
169
228
|
};
|
|
170
229
|
});
|
|
171
|
-
|
|
230
|
+
const { ldTexts, hasProductMicrodata, ...rest } = signals;
|
|
231
|
+
const existing = parseExistingSchema(ldTexts);
|
|
232
|
+
return {
|
|
233
|
+
...rest,
|
|
234
|
+
url,
|
|
235
|
+
hasProductSchema: hasProductMicrodata || existing.types.includes("Product"),
|
|
236
|
+
existingSchema: existing.types,
|
|
237
|
+
existingOrganizationName: existing.organizationName,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* The @types a page's JSON-LD already declares, plus its Organization's name.
|
|
242
|
+
*
|
|
243
|
+
* Read top-level objects and arrays only, so cbrowser.ai, which declares
|
|
244
|
+
* Organization, SoftwareApplication, WebPage and WebSite in one @graph,
|
|
245
|
+
* reported "None detected" and was offered a fresh Article. Now @graph is
|
|
246
|
+
* read, and an array @type (["Organization", "LocalBusiness"]) gives every
|
|
247
|
+
* entry. Nested values (an Organization's founder Person) are not the page's
|
|
248
|
+
* own types and are not read. (2026-10-10, B34)
|
|
249
|
+
*/
|
|
250
|
+
export function parseExistingSchema(ldTexts) {
|
|
251
|
+
const types = [];
|
|
252
|
+
let organizationName;
|
|
253
|
+
const visit = (node) => {
|
|
254
|
+
if (Array.isArray(node)) {
|
|
255
|
+
node.forEach(visit);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (!node || typeof node !== "object")
|
|
259
|
+
return;
|
|
260
|
+
const obj = node;
|
|
261
|
+
const declared = [].concat(obj["@type"] ?? []).filter((t) => typeof t === "string");
|
|
262
|
+
for (const t of declared)
|
|
263
|
+
if (!types.includes(t))
|
|
264
|
+
types.push(t);
|
|
265
|
+
if (!organizationName && declared.some((t) => ORGANIZATION_TYPES.includes(t)) && typeof obj.name === "string" && obj.name.trim()) {
|
|
266
|
+
organizationName = obj.name.trim();
|
|
267
|
+
}
|
|
268
|
+
if (obj["@graph"])
|
|
269
|
+
visit(obj["@graph"]);
|
|
270
|
+
};
|
|
271
|
+
for (const text of ldTexts) {
|
|
272
|
+
try {
|
|
273
|
+
visit(JSON.parse(text || "{}"));
|
|
274
|
+
}
|
|
275
|
+
catch { /* invalid JSON-LD is not schema */ }
|
|
276
|
+
}
|
|
277
|
+
return { types, organizationName };
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* ISO 8601, or "" when the value is not a date. Schema.org's datePublished
|
|
281
|
+
* and dateModified are ISO 8601; this passed the page's text through, so a
|
|
282
|
+
* <time datetime="Aug 4, 2026"> shipped verbatim, and cbrowser.ai's
|
|
283
|
+
* article:published_time "2026-08-04 17:47:17" would have too.
|
|
284
|
+
*
|
|
285
|
+
* Nothing is invented: a date with no time stays a date, and a time with no
|
|
286
|
+
* zone stays a local time ("2026-08-04T17:47:17"). Converting either to UTC
|
|
287
|
+
* would read it in THIS machine's zone, which says nothing about the page's.
|
|
288
|
+
* Only a value that names its zone becomes an instant. (2026-10-10, B34)
|
|
289
|
+
*/
|
|
290
|
+
export function toIsoDate(raw) {
|
|
291
|
+
const s = (raw || "").trim();
|
|
292
|
+
if (!s)
|
|
293
|
+
return "";
|
|
294
|
+
if (/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/.test(s))
|
|
295
|
+
return s;
|
|
296
|
+
const ms = Date.parse(s);
|
|
297
|
+
if (!Number.isFinite(ms))
|
|
298
|
+
return "";
|
|
299
|
+
const d = new Date(ms);
|
|
300
|
+
const two = (n) => String(n).padStart(2, "0");
|
|
301
|
+
const ymd = `${d.getFullYear()}-${two(d.getMonth() + 1)}-${two(d.getDate())}`;
|
|
302
|
+
if (!/\d{1,2}:\d{2}/.test(s))
|
|
303
|
+
return ymd;
|
|
304
|
+
if (/(?:Z|[+-]\d{2}:?\d{2})$/.test(s) || /\b(?:GMT|UTC)\b/i.test(s))
|
|
305
|
+
return d.toISOString();
|
|
306
|
+
return `${ymd}T${two(d.getHours())}:${two(d.getMinutes())}:${two(d.getSeconds())}`;
|
|
172
307
|
}
|
|
173
308
|
/**
|
|
174
309
|
* Detect page type from signals
|
|
@@ -186,7 +321,7 @@ export function detectPageType(signals) {
|
|
|
186
321
|
howto: 0,
|
|
187
322
|
recipe: 0,
|
|
188
323
|
"local-business": 0,
|
|
189
|
-
unknown: 0
|
|
324
|
+
unknown: 0,
|
|
190
325
|
};
|
|
191
326
|
// Homepage detection
|
|
192
327
|
if (signals.isHomepage) {
|
|
@@ -223,18 +358,19 @@ export function detectPageType(signals) {
|
|
|
223
358
|
scores["local-business"] += 0.6;
|
|
224
359
|
if (signals.hasAddress && !signals.hasPhone)
|
|
225
360
|
scores["local-business"] += 0.3;
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
361
|
+
const candidates = Object.entries(scores)
|
|
362
|
+
.filter(([type, score]) => type !== "unknown" && score > 0)
|
|
363
|
+
.map(([type, score]) => ({ type, confidence: Math.round(Math.min(1, score) * 100) / 100 }))
|
|
364
|
+
.sort((a, b) => b.confidence - a.confidence);
|
|
365
|
+
// The best candidate is a claim only at MIN_TYPE_CONFIDENCE. Below it the
|
|
366
|
+
// answer is "unknown", with the candidates, and its confidence is the best
|
|
367
|
+
// candidate's, so "unknown at 20%" reads as "nearly an article, at 20%".
|
|
368
|
+
// (2026-10-10, B34)
|
|
369
|
+
const best = candidates[0];
|
|
370
|
+
if (!best || best.confidence < MIN_TYPE_CONFIDENCE) {
|
|
371
|
+
return { type: "unknown", confidence: best?.confidence ?? 0, candidates };
|
|
234
372
|
}
|
|
235
|
-
|
|
236
|
-
const confidence = Math.min(1, maxScore);
|
|
237
|
-
return { type: detectedType, confidence };
|
|
373
|
+
return { type: best.type, confidence: best.confidence, candidates };
|
|
238
374
|
}
|
|
239
375
|
/**
|
|
240
376
|
* Generate Organization schema
|
|
@@ -245,7 +381,7 @@ function generateOrganizationSchema(signals) {
|
|
|
245
381
|
return {
|
|
246
382
|
"@context": "https://schema.org",
|
|
247
383
|
"@type": "Organization",
|
|
248
|
-
name: signals.title.split("|")[0].split("-")[0].trim(),
|
|
384
|
+
name: signals.ogSiteName || signals.title.split("|")[0].split("-")[0].trim(),
|
|
249
385
|
url: baseUrl,
|
|
250
386
|
description: signals.description || "", // Extracted or to be filled
|
|
251
387
|
logo: signals.logoUrl ? new URL(signals.logoUrl, baseUrl).href : "", // Extracted or to be filled
|
|
@@ -261,17 +397,21 @@ function generateArticleSchema(signals) {
|
|
|
261
397
|
return {
|
|
262
398
|
"@context": "https://schema.org",
|
|
263
399
|
"@type": "Article",
|
|
264
|
-
|
|
400
|
+
// Was the raw <title>, site suffix and all. (2026-10-10, B34)
|
|
401
|
+
headline: pageHeadline(signals),
|
|
265
402
|
description: signals.description || "", // Extracted or to be filled
|
|
266
403
|
author: {
|
|
267
404
|
"@type": "Person",
|
|
268
405
|
name: signals.authorName || "", // Extracted or to be filled
|
|
269
406
|
},
|
|
270
|
-
|
|
271
|
-
|
|
407
|
+
// ISO 8601 or "", never the page's own wording. (2026-10-10, B34)
|
|
408
|
+
datePublished: toIsoDate(signals.publishDate), // Extracted or to be filled
|
|
409
|
+
dateModified: toIsoDate(signals.modifiedDate || signals.publishDate), // Extracted or to be filled
|
|
272
410
|
publisher: {
|
|
273
411
|
"@type": "Organization",
|
|
274
|
-
|
|
412
|
+
// Was always "". The page's own Organization, else og:site_name.
|
|
413
|
+
// (2026-10-10, B34)
|
|
414
|
+
name: signals.existingOrganizationName || signals.ogSiteName || "",
|
|
275
415
|
logo: {
|
|
276
416
|
"@type": "ImageObject",
|
|
277
417
|
url: signals.logoUrl ? new URL(signals.logoUrl, baseUrl).href : "", // Extracted or to be filled
|
|
@@ -289,7 +429,7 @@ function generateProductSchema(signals) {
|
|
|
289
429
|
return {
|
|
290
430
|
"@context": "https://schema.org",
|
|
291
431
|
"@type": "Product",
|
|
292
|
-
name: signals
|
|
432
|
+
name: pageHeadline(signals),
|
|
293
433
|
description: signals.description || "", // Extracted or to be filled
|
|
294
434
|
image: signals.imageUrl ? new URL(signals.imageUrl, baseUrl).href : "", // Extracted or to be filled
|
|
295
435
|
brand: {
|
|
@@ -379,7 +519,7 @@ export function generateStructuredData(signals, pageType) {
|
|
|
379
519
|
return {
|
|
380
520
|
"@context": "https://schema.org",
|
|
381
521
|
"@type": "WebPage",
|
|
382
|
-
name: signals
|
|
522
|
+
name: pageHeadline(signals),
|
|
383
523
|
url: signals.url,
|
|
384
524
|
description: signals.description || "", // Extracted or to be filled
|
|
385
525
|
};
|
|
@@ -389,6 +529,11 @@ export function generateStructuredData(signals, pageType) {
|
|
|
389
529
|
* Get reasoning for the suggested schema
|
|
390
530
|
*/
|
|
391
531
|
function getReasoningForType(pageType, signals, confidence) {
|
|
532
|
+
const confidenceText = confidence > 0.7 ? "High" : confidence >= MIN_TYPE_CONFIDENCE ? "Medium" : "Low";
|
|
533
|
+
return `${confidenceText} confidence. ${reasonsFor(pageType, signals).join(". ")}.`;
|
|
534
|
+
}
|
|
535
|
+
/** The signals behind a type, as short phrases. */
|
|
536
|
+
function reasonsFor(pageType, signals) {
|
|
392
537
|
const reasons = [];
|
|
393
538
|
switch (pageType) {
|
|
394
539
|
case "homepage":
|
|
@@ -420,8 +565,49 @@ function getReasoningForType(pageType, signals, confidence) {
|
|
|
420
565
|
default:
|
|
421
566
|
reasons.push("No specific page type detected");
|
|
422
567
|
}
|
|
423
|
-
|
|
424
|
-
|
|
568
|
+
return reasons;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Detect, generate, and refuse what would clash: the whole suggestion from the
|
|
572
|
+
* page's signals, with no browser, so every branch is testable.
|
|
573
|
+
*
|
|
574
|
+
* Below MIN_TYPE_CONFIDENCE the type is "unknown" and only a generic WebPage
|
|
575
|
+
* is offered (name, url, description), never a typed schema built on one weak
|
|
576
|
+
* signal. And nothing is offered that the page already declares or that
|
|
577
|
+
* conflicts with what it declares: cbrowser.ai/pricing, which declares
|
|
578
|
+
* WebPage in its @graph, now gets no schema and says why. (2026-10-10, B34)
|
|
579
|
+
*/
|
|
580
|
+
export function buildSuggestion(signals) {
|
|
581
|
+
const { type, confidence, candidates } = detectPageType(signals);
|
|
582
|
+
const generated = generateStructuredData(signals, type);
|
|
583
|
+
const suggestedType = String(generated["@type"]);
|
|
584
|
+
const clash = schemaClash(suggestedType, signals.existingSchema);
|
|
585
|
+
const pct = (n) => `${Math.round(n * 100)}%`;
|
|
586
|
+
let reasoning;
|
|
587
|
+
if (type === "unknown") {
|
|
588
|
+
const best = candidates[0];
|
|
589
|
+
reasoning = best
|
|
590
|
+
? `Low confidence. No page type reached ${pct(MIN_TYPE_CONFIDENCE)}; the best candidate is ${best.type} at ${pct(best.confidence)} (${reasonsFor(best.type, signals).join(", ").toLowerCase()}), too weak to claim, so no typed schema is suggested.`
|
|
591
|
+
: "No specific page type detected.";
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
reasoning = getReasoningForType(type, signals, confidence);
|
|
595
|
+
}
|
|
596
|
+
if (clash) {
|
|
597
|
+
reasoning += clash.kind === "duplicate"
|
|
598
|
+
? ` The page already declares ${clash.existingType}, so ${suggestedType} is not suggested again.`
|
|
599
|
+
: ` The page declares ${clash.existingType} as its subject, which a ${suggestedType} would contradict, so none is suggested.`;
|
|
600
|
+
}
|
|
601
|
+
const suggestedSchema = clash ? null : generated;
|
|
602
|
+
return {
|
|
603
|
+
pageType: type,
|
|
604
|
+
confidence,
|
|
605
|
+
existingSchema: signals.existingSchema,
|
|
606
|
+
suggestedSchema,
|
|
607
|
+
suggestedSchemaString: suggestedSchema ? JSON.stringify(suggestedSchema, null, 2) : "",
|
|
608
|
+
reasoning,
|
|
609
|
+
candidates,
|
|
610
|
+
};
|
|
425
611
|
}
|
|
426
612
|
/**
|
|
427
613
|
* Suggest structured data for a URL
|
|
@@ -436,17 +622,7 @@ export async function suggestStructuredData(options) {
|
|
|
436
622
|
const signals = await extractPageSignals(page, url);
|
|
437
623
|
await browser.close();
|
|
438
624
|
browser = null;
|
|
439
|
-
|
|
440
|
-
const suggestedSchema = generateStructuredData(signals, type);
|
|
441
|
-
const reasoning = getReasoningForType(type, signals, confidence);
|
|
442
|
-
return {
|
|
443
|
-
pageType: type,
|
|
444
|
-
confidence,
|
|
445
|
-
existingSchema: signals.existingSchema,
|
|
446
|
-
suggestedSchema,
|
|
447
|
-
suggestedSchemaString: JSON.stringify(suggestedSchema, null, 2),
|
|
448
|
-
reasoning,
|
|
449
|
-
};
|
|
625
|
+
return buildSuggestion(signals);
|
|
450
626
|
}
|
|
451
627
|
finally {
|
|
452
628
|
if (browser) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../../src/remediation/structured-data.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../../src/remediation/structured-data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAmF1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,MAAM,kBAAkB,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;AACzI,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;AACtJ,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AACvF,MAAM,cAAc,GAAG,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AACtF,MAAM,oBAAoB,GAAG,CAAC,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;AACrI,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AACzI,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAErK,6EAA6E;AAC7E,MAAM,iBAAiB,GAA6B;IAClD,YAAY,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,oBAAoB,CAAC;IAC9D,OAAO,EAAE,aAAa;IACtB,uEAAuE;IACvE,kCAAkC;IAClC,OAAO,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC;IAC9C,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,aAAa,EAAE,oBAAoB;IACnC,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAA6B;IAC7C,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,aAAqB,EACrB,QAAkB;IAElB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;IACzD,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,KAAK,aAAa;gBAAE,SAAS;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,SAAS,YAAY,CAAC,OAAoB;IACxC,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,GAAW;IACvD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACpE,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,GAAG,MAAM,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvC,MAAM,KAAK,GACT,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE7D,+BAA+B;QAC/B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,CAAC,CAAC,CACvB,QAAQ,CAAC,aAAa,CAAC,8FAA8F,CAAC,CACvH,CAAC;QACF,wEAAwE;QACxE,mEAAmE;QACnE,uEAAuE;QACvE,oBAAoB;QACpB,MAAM,SAAS,GAAG,CAAC,CAAC,CAClB,QAAQ,CAAC,aAAa,CAAC,sDAAsD,CAAC,CAC/E,CAAC;QAEF,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,QAAQ,CAAC,aAAa,CAAC,8CAA8C,CAAC,CACvE,CAAC;QACF,gFAAgF;QAChF,MAAM,YAAY,GAAG,CAAC,CAAC,CACrB,QAAQ,CAAC,aAAa,CAAC,mGAAmG,CAAC;YAC3H,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,+CAA+C,CAAC,CAAC,CAAC,IAAI,CACzF,EAAE,CAAC,EAAE,CAAC,0CAA0C,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAC5E,CACF,CAAC;QACF,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAE9E,2BAA2B;QAC3B,MAAM,aAAa,GAAG,CAAC,CAAC,CACtB,QAAQ,CAAC,aAAa,CAAC,gDAAgD,CAAC;YACxE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7E,CAAC;QAEF,yBAAyB;QACzB,MAAM,YAAY,GAAG,CAAC,CAAC,CACrB,QAAQ,CAAC,aAAa,CAAC,6CAA6C,CAAC,CACtE,CAAC;QAEF,6BAA6B;QAC7B,MAAM,YAAY,GAAG,CAAC,CAAC,CACrB,QAAQ,CAAC,aAAa,CAAC,4DAA4D,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAClH,CAAC;QAEF,sCAAsC;QACtC,MAAM,UAAU,GAAG,CAAC,CAAC,CACnB,QAAQ,CAAC,aAAa,CAAC,mDAAmD,CAAC,CAC5E,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,QAAQ,CAAC,aAAa,CAAC,yCAAyC,CAAC,CAClE,CAAC;QAEF,cAAc;QACd,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QAExG,6DAA6D;QAC7D,mEAAmE;QACnE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;aACxF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAE7C,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,EAAE,CAAC;QAEvF,kDAAkD;QAElD,kDAAkD;QAClD,MAAM,WAAW,GAAG,CAClB,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YAC3E,QAAQ,CAAC,aAAa,CAAC,iCAAiC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YAClF,EAAE,CACH,CAAC,IAAI,EAAE,CAAC;QAET,cAAc;QACd,MAAM,UAAU,GAAG,CACjB,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YACtE,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,WAAW;YACrD,QAAQ,CAAC,aAAa,CAAC,4DAA4D,CAAC,EAAE,WAAW;YACjG,EAAE,CACH,CAAC,IAAI,EAAE,CAAC;QAET,wEAAwE;QACxE,gEAAgE;QAChE,yEAAyE;QACzE,MAAM,WAAW,GAAG,CAClB,QAAQ,CAAC,aAAa,CAAC,yCAAyC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YAC1F,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC;YAClE,EAAE,CACH,CAAC,IAAI,EAAE,CAAC;QAET,gBAAgB;QAChB,MAAM,YAAY,GAAG,CACnB,QAAQ,CAAC,aAAa,CAAC,wCAAwC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YACzF,EAAE,CACH,CAAC;QAEF,mBAAmB;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,mFAAmF,CAAC,CAAC;QAC5H,MAAM,SAAS,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,qBAAqB;QACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACxE,IAAI,aAAa,GAAG,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,aAAa,GAAG,KAAK,CAAC;iBAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,aAAa,GAAG,KAAK,CAAC;iBACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,aAAa,GAAG,KAAK,CAAC;iBACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,aAAa,GAAG,KAAK,CAAC;QAC1D,CAAC;QAED,YAAY;QACZ,MAAM,QAAQ,GAAG,CACf,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YAC5E,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YACjE,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YAC1D,EAAE,CACH,CAAC;QAEF,WAAW;QACX,MAAM,OAAO,GAAG,CACd,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YAChE,QAAQ,CAAC,aAAa,CAAC,wCAAwC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YACrF,EAAE,CACH,CAAC;QAEF,eAAe;QACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAChF,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAC5E,CAAC;QAEF,mEAAmE;QACnE,uDAAuD;QACvD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnH,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzF,uBAAuB;QACvB,MAAM,QAAQ,GAAgD,EAAE,CAAC;QAEjE,yBAAyB;QACzB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnD,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACjC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;wBACjD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,gBAAgB,CAAC,gDAAgD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC;gBACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,2DAA2D,CAAC,CAAC;gBACjG,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAClD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;wBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,KAAK;YACL,aAAa;YACb,mBAAmB;YACnB,QAAQ;YACR,YAAY;YACZ,cAAc;YACd,SAAS;YACT,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,UAAU;YACV,MAAM;YACN,OAAO;YACP,OAAO;YACP,UAAU;YACV,EAAE;YACF,8BAA8B;YAC9B,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;YACZ,KAAK;YACL,aAAa;YACb,QAAQ;YACR,OAAO;YACP,KAAK;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACrD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO;QACL,GAAG,IAAI;QACP,GAAG;QACH,gBAAgB,EAAE,mBAAmB,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3E,cAAc,EAAE,QAAQ,CAAC,KAAK;QAC9B,wBAAwB,EAAE,QAAQ,CAAC,gBAAgB;KACpD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,gBAAoC,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC9C,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,MAAM,QAAQ,GAAI,EAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QAChH,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjI,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,GAAuB;IAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,IAAI,0EAA0E,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC9E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5F,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IAKjD,mCAAmC;IACnC,MAAM,MAAM,GAA6B;QACvC,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,qBAAqB;IACrB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;QACvB,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC;IAC7B,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,aAAa;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IACjD,IAAI,OAAO,CAAC,cAAc;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IAClD,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IAExD,oBAAoB;IACpB,IAAI,OAAO,CAAC,gBAAgB;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IACpD,IAAI,OAAO,CAAC,QAAQ;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IAC5C,IAAI,OAAO,CAAC,YAAY;QAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IAEhD,gBAAgB;IAChB,IAAI,OAAO,CAAC,aAAa;QAAE,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC;IAE7C,kBAAkB;IAClB,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa;QAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAExE,kBAAkB;IAClB,IAAI,OAAO,CAAC,YAAY;QAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAE9C,2BAA2B;IAC3B,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ;QAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC;IAC5E,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC;IAE7E,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAA0B;SAChE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;SAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAE/C,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,oBAAoB;IACpB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,mBAAmB,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,OAAoB;IACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;IACnD,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC5E,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B;QACpE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,4BAA4B;QACjG,MAAM,EAAE,EAAE,EAAE,2BAA2B;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAoB;IACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;IACnD,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS;QAClB,8DAA8D;QAC9D,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B;QACpE,MAAM,EAAE;YACN,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,4BAA4B;SAC7D;QACD,kEAAkE;QAClE,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,4BAA4B;QAC3E,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,4BAA4B;QAClG,SAAS,EAAE;YACT,OAAO,EAAE,cAAc;YACvB,iEAAiE;YACjE,oBAAoB;YACpB,IAAI,EAAE,OAAO,CAAC,wBAAwB,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;YAClE,IAAI,EAAE;gBACJ,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,4BAA4B;aACjG;SACF;QACD,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,4BAA4B;KACrG,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAoB;IACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;IACnD,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B;QACpE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,4BAA4B;QACpG,KAAK,EAAE;YACL,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,EAAE,EAAE,eAAe;SAC1B;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,4BAA4B;YACxD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK,EAAE,2BAA2B;YAC1E,YAAY,EAAE,4BAA4B;YAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,uCAAuC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,cAAc,EAAE;gBACd,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;aAClB;SACF,CAAC,CAAC;QACL,CAAC,CAAC;YACE;gBACE,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE,aAAa,EAAE,gCAAgC;gBACrD,cAAc,EAAE;oBACd,OAAO,EAAE,QAAQ;oBACjB,IAAI,EAAE,UAAU,EAAE,eAAe;iBAClC;aACF;YACD,qBAAqB;SACtB,CAAC;IAEN,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS;QAClB,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,OAAoB;IACvD,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACtD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B;QACpE,OAAO,EAAE;YACP,OAAO,EAAE,eAAe;YACxB,aAAa,EAAE,EAAE,EAAE,eAAe;YAClC,eAAe,EAAE,EAAE,EAAE,eAAe;YACpC,aAAa,EAAE,EAAE,EAAE,eAAe;YAClC,UAAU,EAAE,EAAE,EAAE,eAAe;YAC/B,cAAc,EAAE,EAAE,EAAE,eAAe;SACpC;QACD,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,4BAA4B;QAC5D,YAAY,EAAE,EAAE,EAAE,eAAe;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,QAAkB;IAElB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC7C,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,KAAK;YACR,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC9C;YACE,qBAAqB;YACrB,OAAO;gBACL,UAAU,EAAE,oBAAoB;gBAChC,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;gBAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,4BAA4B;aACrE,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,QAAkB,EAClB,OAAoB,EACpB,UAAkB;IAElB,MAAM,cAAc,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACxG,OAAO,GAAG,cAAc,gBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtF,CAAC;AAED,mDAAmD;AACnD,SAAS,UAAU,CAAC,QAAkB,EAAE,OAAoB;IAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,OAAO,CAAC,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC7D,IAAI,OAAO,CAAC,cAAc;gBAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,OAAO,CAAC,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC9D,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,OAAO,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACxD,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACjE,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,gBAAgB;YACnB,IAAI,OAAO,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC7D,IAAI,OAAO,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvD,MAAM;QACR;YACE,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAA4B,CAAC;IACnF,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEjE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IACrD,IAAI,SAAiB,CAAC;IACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,SAAS,GAAG,IAAI;YACd,CAAC,CAAC,wCAAwC,GAAG,CAAC,mBAAmB,CAAC,2BAA2B,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,wDAAwD;YACrP,CAAC,CAAC,iCAAiC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YACrC,CAAC,CAAC,8BAA8B,KAAK,CAAC,YAAY,QAAQ,aAAa,0BAA0B;YACjG,CAAC,CAAC,sBAAsB,KAAK,CAAC,YAAY,4BAA4B,aAAa,0CAA0C,CAAC;IAClI,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,UAAU;QACV,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe;QACf,qBAAqB,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACtF,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B;IAE9B,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,OAAO,GAAoB,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAErC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEpD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC;QAEf,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PricingTier } from "./mcp-tools/tool-categories.js";
|
|
2
|
+
export interface RequestIdentity {
|
|
3
|
+
/** SHA-256 hex of the caller's account key; null when unauthenticated or not an account key. */
|
|
4
|
+
keyHash: string | null;
|
|
5
|
+
/** Pricing tier this request is gated at. null = ungated (self-hosted). */
|
|
6
|
+
tier: PricingTier | null;
|
|
7
|
+
/** The raw key the caller presented, for account-scoped CMS reads. */
|
|
8
|
+
apiKey: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Run `fn` with `identity` as this request's caller. Everything awaited inside
|
|
12
|
+
* sees it, and nothing outside does. The object is copied, so a setter called
|
|
13
|
+
* inside changes this request's view and never the caller's argument.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withRequestIdentity<T>(identity: RequestIdentity, fn: () => T): T;
|
|
16
|
+
/** The active request's identity, or undefined outside any request (CLI, stdio, tests). */
|
|
17
|
+
export declare function currentRequestIdentity(): RequestIdentity | undefined;
|
|
18
|
+
//# sourceMappingURL=request-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2EAA2E;IAC3E,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhF;AAED,2FAA2F;AAC3F,wBAAgB,sBAAsB,IAAI,eAAe,GAAG,SAAS,CAEpE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-request caller identity for the hosted server: key hash, pricing tier and
|
|
3
|
+
* raw API key.
|
|
4
|
+
*
|
|
5
|
+
* THE DEFECT THIS REPLACES
|
|
6
|
+
*
|
|
7
|
+
* The hosted server kept all three in module variables, assigned while a
|
|
8
|
+
* request's MCP server was being built and read when its tool ran:
|
|
9
|
+
* `currentKeyHash` and `currentTier` in mcp-tools/tier-gate.ts, `_sessionApiKey`
|
|
10
|
+
* in mcp-tools/base/cognitive-tools.ts. Between the assignment and the read sit
|
|
11
|
+
* several awaits (body read, redirect resolution, the CMS credit deduct), so an
|
|
12
|
+
* overlapping request from another account overwrote them and this request read
|
|
13
|
+
* the other caller's values: the usage log, the tool-result autosave and
|
|
14
|
+
* ask_cbrowser were filed under the other key hash; every CMS call made with
|
|
15
|
+
* the raw key used the other caller's key, which is a cross-tenant read for the
|
|
16
|
+
* custom-persona fetches (list_cognitive_personas, cognitive_journey_init,
|
|
17
|
+
* attention_analysis, the comparison and audit tools) and a cross-tenant WRITE
|
|
18
|
+
* for persona_update, persona_delete, persona creation and the visual-report
|
|
19
|
+
* saves; and the gate-before-charge check and the paid model-call entitlement
|
|
20
|
+
* (capture, attention_analysis) judged one account by another's plan. Same
|
|
21
|
+
* defect class as billing identity (resolveRequestKeyHash, 2026-07-26) and
|
|
22
|
+
* persona scope (persona-scope.ts, 2026-08-01); this closes the three variables
|
|
23
|
+
* those fixes left behind. (sec-identity, 2026-10-10)
|
|
24
|
+
*
|
|
25
|
+
* HOW IT IS USED
|
|
26
|
+
*
|
|
27
|
+
* mcp-server-remote.ts enters one context per HTTP request with
|
|
28
|
+
* `withRequestIdentity` (at createServer), so building the request's MCP server
|
|
29
|
+
* and dispatching its tool call both run inside it, and the /mcp branch sets
|
|
30
|
+
* the caller there. The existing setters (setActiveKeyHash, setActiveTier, setSessionApiKey)
|
|
31
|
+
* write into the active context when there is one and into their module
|
|
32
|
+
* variable when there is not; the getters read the same way. So code that sets
|
|
33
|
+
* the tier during registration (registerAllPublicTools, the enterprise demo's
|
|
34
|
+
* registrar) changes only its own request.
|
|
35
|
+
*
|
|
36
|
+
* DEFAULT BEHAVIOUR IS UNCHANGED. With no context entered the setters and
|
|
37
|
+
* getters use the module variables exactly as before, so the CLI, the stdio
|
|
38
|
+
* server and every local install are unaffected.
|
|
39
|
+
*
|
|
40
|
+
* @since 2026-10-10
|
|
41
|
+
*/
|
|
42
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
43
|
+
const storage = new AsyncLocalStorage();
|
|
44
|
+
/**
|
|
45
|
+
* Run `fn` with `identity` as this request's caller. Everything awaited inside
|
|
46
|
+
* sees it, and nothing outside does. The object is copied, so a setter called
|
|
47
|
+
* inside changes this request's view and never the caller's argument.
|
|
48
|
+
*/
|
|
49
|
+
export function withRequestIdentity(identity, fn) {
|
|
50
|
+
return storage.run({ ...identity }, fn);
|
|
51
|
+
}
|
|
52
|
+
/** The active request's identity, or undefined outside any request (CLI, stdio, tests). */
|
|
53
|
+
export function currentRequestIdentity() {
|
|
54
|
+
return storage.getStore();
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=request-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAmB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAI,QAAyB,EAAE,EAAW;IAC3E,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -15,7 +15,20 @@ export declare class SiteModelManager {
|
|
|
15
15
|
private writeTimer;
|
|
16
16
|
/** Singleton instance for process-wide sharing */
|
|
17
17
|
private static _instance;
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* One instance per hosted account, keyed by that account's data dir.
|
|
20
|
+
*
|
|
21
|
+
* The singleton is one per process: on the hosted server its in-memory
|
|
22
|
+
* models and its site-models directory served every account, so one
|
|
23
|
+
* account's navigation history, element selectors, goal paths (action
|
|
24
|
+
* values included) and failure patterns for a domain were read through
|
|
25
|
+
* site_model_status, site_model_query and journey familiarity by any other
|
|
26
|
+
* account, and written to by all of them. Inside an account scope each
|
|
27
|
+
* account now gets its own instance under its own directory; unscoped
|
|
28
|
+
* callers (CLI, stdio, local) keep the singleton. (tenant, 2026-10-10)
|
|
29
|
+
*/
|
|
30
|
+
private static _scoped;
|
|
31
|
+
/** Get or create the instance for this call's scope */
|
|
19
32
|
static getInstance(dataDir?: string): SiteModelManager;
|
|
20
33
|
/** Maximum JSON size per domain model file */
|
|
21
34
|
private static readonly MAX_MODEL_SIZE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/site-model/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/site-model/manager.ts"],"names":[],"mappings":"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"}
|