@agent-native/creative-context 0.5.12 → 0.6.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.
@@ -35,7 +35,7 @@ export default defineAction({
35
35
  autoSelectedConnectionId: connections.length === 1 ? connections[0].connectionId : null,
36
36
  needsPicker: connections.length > 1,
37
37
  needsSetup: connections.length === 0,
38
- connectionsPath: "/settings#integrations",
38
+ connectionsPath: "/settings/integrations",
39
39
  connectPath: creativeContextConnectionPath({ provider, appId }),
40
40
  };
41
41
  },
@@ -284,7 +284,7 @@ function ContextPreviewSheet({ manifest, onOpenChange, }) {
284
284
  function ContextRail({ contexts, selectedContextId, disabled, canCreate, onSelect, onCreate, }) {
285
285
  return (_jsxs("aside", { className: "border-b border-border/70 pb-5", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-sm font-semibold", children: "Contexts" }), _jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: "Choose the reusable context that should guide this work." })] }), _jsx(Badge, { variant: "outline", children: contexts.length })] }), _jsxs("div", { className: "mt-3 flex gap-2 overflow-x-auto pb-1", children: [contexts.map((context) => (_jsxs("button", { type: "button", disabled: disabled, "aria-pressed": selectedContextId === context.id, onClick: () => onSelect(context.id), className: `min-w-40 rounded-md border px-3 py-2 text-start transition-colors disabled:opacity-60 ${selectedContextId === context.id ? "border-foreground/25 bg-accent text-foreground" : "border-border text-muted-foreground hover:bg-accent/50 hover:text-foreground"}`, children: [_jsx("span", { className: "block truncate text-sm font-medium", children: context.name }), _jsx("span", { className: "mt-0.5 block truncate text-xs", children: context.description || `${context.memberCount} resources` })] }, context.id))), _jsxs(Button, { type: "button", variant: "outline", className: "min-w-40 justify-start", disabled: disabled || !canCreate, onClick: onCreate, children: [_jsx(IconPlus, {}), " New context"] }), !contexts.length ? (_jsx("p", { className: "py-2 text-sm text-muted-foreground", children: "Create a context from a resource\u2019s Share tab to start organizing the Library." })) : null] })] }));
286
286
  }
287
- export function CreativeContextPanel({ scope = "user", canManageOrg = false, scopeControl, connectionsHref = "/settings#integrations", }) {
287
+ export function CreativeContextPanel({ scope = "user", canManageOrg = false, scopeControl, connectionsHref = "/settings/integrations", }) {
288
288
  const t = useT();
289
289
  const { formatNumber } = useFormatters();
290
290
  const { data: org } = useOrg();
@@ -12,6 +12,7 @@ export { NotionContextConnector, notionRecommendedRootPageIds, } from "./notion.
12
12
  export { parseUploadedDocument, type ParseDocumentInput, type ParsedDocument, } from "./document-parser.js";
13
13
  export { ContextImportConnectorRegistry } from "./registry.js";
14
14
  export { LayeredRenderedPageProvider, type LayeredRenderedPageProviderOptions, type RenderedPageMethod, type RenderedPageProvider, type RenderedPageRequest, type RenderedPageResult, } from "./rendered-page.js";
15
+ export { brandKitDataFromExtraction, buildDesignMarkdown, extractRenderedDesignSystemFromUrl, styleBriefFromRenderedDesign, type ExtractRenderedDesignOptions, type RenderedDesignExtraction, type RenderedDesignExtractionStatus, } from "./rendered-design.js";
15
16
  export { recommendContextRoots, type ContextRootRecommendation, type ContextRootRecommendationProvider, } from "./recommendations.js";
16
17
  export { smartDefaultExternalIds } from "./smart-defaults.js";
17
18
  export { UploadContextConnector } from "./upload.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAgB/D,wBAAgB,wCAAwC,CACtD,QAAQ,iCAA0C,GACjD,8BAA8B,CAKhC;AAED,wBAAgB,mCAAmC,IAAI,8BAA8B,CAEpF;AAED,wBAAgB,2CAA2C,IAAI,8BAA8B,CAI5F;AAED,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,KAAK,6CAA6C,GACnD,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,gCAAgC,EAChC,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EAChC,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAgB/D,wBAAgB,wCAAwC,CACtD,QAAQ,iCAA0C,GACjD,8BAA8B,CAKhC;AAED,wBAAgB,mCAAmC,IAAI,8BAA8B,CAEpF;AAED,wBAAgB,2CAA2C,IAAI,8BAA8B,CAI5F;AAED,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,KAAK,6CAA6C,GACnD,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,gCAAgC,EAChC,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EAChC,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
@@ -37,6 +37,7 @@ export { NotionContextConnector, notionRecommendedRootPageIds, } from "./notion.
37
37
  export { parseUploadedDocument, } from "./document-parser.js";
38
38
  export { ContextImportConnectorRegistry } from "./registry.js";
39
39
  export { LayeredRenderedPageProvider, } from "./rendered-page.js";
40
+ export { brandKitDataFromExtraction, buildDesignMarkdown, extractRenderedDesignSystemFromUrl, styleBriefFromRenderedDesign, } from "./rendered-design.js";
40
41
  export { recommendContextRoots, } from "./recommendations.js";
41
42
  export { smartDefaultExternalIds } from "./smart-defaults.js";
42
43
  export { UploadContextConnector } from "./upload.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,kBAAkB,GAAG;IACzB,IAAI,sBAAsB,EAAE;IAC5B,IAAI,sBAAsB,EAAE;IAC5B,IAAI,4BAA4B,EAAE;IAClC,IAAI,qBAAqB,EAAE;IAC3B,IAAI,sBAAsB,EAAE;IAC5B,IAAI,uBAAuB,EAAE;CACrB,CAAC;AAEX,MAAM,uCAAuC,GAC3C,IAAI,8BAA8B,EAAE,CAAC;AAEvC,MAAM,UAAU,wCAAwC,CACtD,QAAQ,GAAG,uCAAuC;IAElD,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO,wCAAwC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,2CAA2C;IACzD,OAAO,wCAAwC,CAC7C,IAAI,8BAA8B,EAAE,CACrC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,GAElC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,GAOhC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,2BAA2B,GAM5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,kBAAkB,GAAG;IACzB,IAAI,sBAAsB,EAAE;IAC5B,IAAI,sBAAsB,EAAE;IAC5B,IAAI,4BAA4B,EAAE;IAClC,IAAI,qBAAqB,EAAE;IAC3B,IAAI,sBAAsB,EAAE;IAC5B,IAAI,uBAAuB,EAAE;CACrB,CAAC;AAEX,MAAM,uCAAuC,GAC3C,IAAI,8BAA8B,EAAE,CAAC;AAEvC,MAAM,UAAU,wCAAwC,CACtD,QAAQ,GAAG,uCAAuC;IAElD,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO,wCAAwC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,2CAA2C;IACzD,OAAO,wCAAwC,CAC7C,IAAI,8BAA8B,EAAE,CACrC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,GAElC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,GAOhC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,2BAA2B,GAM5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,GAI7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { BrandKitData } from "@agent-native/core/brand-kit";
2
+ import type { WebsiteDesignTokens } from "@agent-native/core/ingestion";
3
+ import { type RenderedPageProvider, type RenderedPageRequest, type RenderedPageResult } from "./rendered-page.js";
4
+ export type RenderedDesignExtractionStatus = "complete" | "partial" | "failed";
5
+ export interface RenderedDesignExtraction {
6
+ status: RenderedDesignExtractionStatus;
7
+ url: string;
8
+ finalUrl?: string;
9
+ title?: string;
10
+ rendered: boolean;
11
+ method?: RenderedPageResult["method"];
12
+ confidence?: number;
13
+ designTokens?: WebsiteDesignTokens;
14
+ designMd?: string;
15
+ brandKit?: BrandKitData;
16
+ /** Back-compat projections for callers that consumed the old URL action. */
17
+ pageTitle?: string;
18
+ cssCustomProperties?: Record<string, string>;
19
+ colors?: string[];
20
+ fonts?: string[];
21
+ fontFaces?: Array<{
22
+ family: string;
23
+ weight?: string;
24
+ }>;
25
+ googleFonts?: string[];
26
+ stylesheetUrls?: string[];
27
+ assets?: RenderedPageResult["extraction"]["assets"];
28
+ screenshotEvidence?: Array<{
29
+ viewport: "desktop" | "mobile";
30
+ width: number;
31
+ height: number;
32
+ bytes: number;
33
+ }>;
34
+ warnings: string[];
35
+ diagnostics: string[];
36
+ error?: string;
37
+ }
38
+ export interface ExtractRenderedDesignOptions extends Pick<RenderedPageRequest, "timeoutMs" | "preferHosted"> {
39
+ provider?: RenderedPageProvider;
40
+ }
41
+ /**
42
+ * Extract a bounded visual language from a public website. Browser rendering
43
+ * is deliberately delegated to the layered provider so this works with
44
+ * Builder Browser, local Playwright, an approved attached browser, or the
45
+ * existing SSRF-safe static fallback without changing app code.
46
+ */
47
+ export declare function extractRenderedDesignSystemFromUrl(websiteUrl: string, options?: ExtractRenderedDesignOptions): Promise<RenderedDesignExtraction>;
48
+ /** Convert the shared browser result into the Assets style-brief vocabulary. */
49
+ export declare function styleBriefFromRenderedDesign(extraction: RenderedDesignExtraction): Record<string, unknown>;
50
+ export declare function brandKitDataFromExtraction(input: {
51
+ url: string;
52
+ finalUrl?: string;
53
+ title?: string;
54
+ designTokens: WebsiteDesignTokens;
55
+ designMd: string;
56
+ assets?: RenderedPageResult["extraction"]["assets"];
57
+ }): BrandKitData;
58
+ export declare function buildDesignMarkdown(input: {
59
+ url: string;
60
+ finalUrl: string;
61
+ title: string;
62
+ rendered: boolean;
63
+ method: RenderedPageResult["method"];
64
+ confidence: number;
65
+ designTokens: WebsiteDesignTokens;
66
+ warnings: string[];
67
+ }): string;
68
+ //# sourceMappingURL=rendered-design.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendered-design.d.ts","sourceRoot":"","sources":["../../src/connectors/rendered-design.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ import { classifyBrandKitToken, friendlyTokenName, normalizeBrandWebsiteUrl, } from "@agent-native/core/brand-kit";
2
+ import { LayeredRenderedPageProvider, } from "./rendered-page.js";
3
+ const MAX_DESIGN_MD_CHARS = 20_000;
4
+ const MAX_TOKENS = 500;
5
+ const FALLBACK_COLORS = {
6
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
7
+ primary: "#111827",
8
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
9
+ secondary: "#374151",
10
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
11
+ accent: "#2563EB",
12
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
13
+ background: "#FFFFFF",
14
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
15
+ surface: "#F9FAFB",
16
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
17
+ text: "#111827",
18
+ // guard:allow-raw-color - fallback design-token data, not rendered UI color
19
+ textMuted: "#6B7280",
20
+ };
21
+ /**
22
+ * Extract a bounded visual language from a public website. Browser rendering
23
+ * is deliberately delegated to the layered provider so this works with
24
+ * Builder Browser, local Playwright, an approved attached browser, or the
25
+ * existing SSRF-safe static fallback without changing app code.
26
+ */
27
+ export async function extractRenderedDesignSystemFromUrl(websiteUrl, options = {}) {
28
+ let url;
29
+ try {
30
+ url = normalizeBrandWebsiteUrl(websiteUrl);
31
+ }
32
+ catch (error) {
33
+ return failedExtraction(websiteUrl, error);
34
+ }
35
+ const provider = options.provider ?? new LayeredRenderedPageProvider();
36
+ let page;
37
+ try {
38
+ page = await provider.render({
39
+ url,
40
+ timeoutMs: options.timeoutMs,
41
+ preferHosted: options.preferHosted,
42
+ waitUntil: "load",
43
+ });
44
+ }
45
+ catch (error) {
46
+ return failedExtraction(url, error);
47
+ }
48
+ const designTokens = page.extraction.designTokens;
49
+ const designMd = buildDesignMarkdown({
50
+ url,
51
+ finalUrl: page.finalUrl,
52
+ title: page.title,
53
+ rendered: page.rendered,
54
+ method: page.method,
55
+ confidence: page.confidence,
56
+ designTokens,
57
+ warnings: page.warnings,
58
+ });
59
+ const status = page.rendered
60
+ ? page.warnings.length > 0 || page.screenshots.length < 2
61
+ ? "partial"
62
+ : "complete"
63
+ : "partial";
64
+ return {
65
+ status,
66
+ url,
67
+ finalUrl: page.finalUrl,
68
+ title: page.title,
69
+ rendered: page.rendered,
70
+ method: page.method,
71
+ confidence: page.confidence,
72
+ designTokens,
73
+ designMd,
74
+ brandKit: brandKitDataFromExtraction({
75
+ url,
76
+ finalUrl: page.finalUrl,
77
+ title: page.title,
78
+ designTokens,
79
+ designMd,
80
+ assets: page.extraction.assets,
81
+ }),
82
+ pageTitle: page.title,
83
+ cssCustomProperties: designTokens.cssVariables,
84
+ colors: designTokens.colors,
85
+ fonts: uniqueStrings(designTokens.typography.map((style) => firstFontFamily(style.family))),
86
+ fontFaces: designTokens.typography.slice(0, 24).map((style) => ({
87
+ family: firstFontFamily(style.family),
88
+ weight: style.weight,
89
+ })),
90
+ googleFonts: uniqueStrings(designTokens.typography.map((style) => firstFontFamily(style.family))),
91
+ stylesheetUrls: page.extraction.assets
92
+ .filter((asset) => asset.kind === "stylesheet")
93
+ .map((asset) => asset.url)
94
+ .slice(0, 64),
95
+ assets: page.extraction.assets,
96
+ screenshotEvidence: page.screenshots.map((screenshot) => ({
97
+ viewport: screenshot.viewport,
98
+ width: screenshot.width,
99
+ height: screenshot.height,
100
+ bytes: screenshot.data.byteLength,
101
+ })),
102
+ warnings: page.warnings,
103
+ diagnostics: page.diagnostics,
104
+ };
105
+ }
106
+ /** Convert the shared browser result into the Assets style-brief vocabulary. */
107
+ export function styleBriefFromRenderedDesign(extraction) {
108
+ const tokens = extraction.designTokens;
109
+ const typography = tokens?.typography ?? [];
110
+ const componentStyles = tokens?.components ?? [];
111
+ const semanticColors = tokens?.semanticColors ?? {};
112
+ const bodyTypography = componentStyles.find((style) => style.role === "body");
113
+ const headingTypography = componentStyles.find((style) => style.role === "heading");
114
+ return {
115
+ description: extraction.finalUrl
116
+ ? `Rendered visual language extracted from ${extraction.finalUrl}.`
117
+ : "Rendered visual language extracted from a website.",
118
+ palette: tokens?.colors?.slice(0, 12) ?? [],
119
+ fontFamilies: uniqueStrings(typography.map((style) => firstFontFamily(style.family))),
120
+ fontWeights: uniqueStrings(typography
121
+ .map((style) => style.weight)
122
+ .concat(componentStyles.map((style) => style.fontWeight ?? ""))),
123
+ typographyPolicy: typographyPolicy(headingTypography, bodyTypography),
124
+ composition: tokens?.layout
125
+ ? `Content width ${tokens.layout.contentWidth ?? "fluid"}; page padding ${tokens.layout.pagePadding ?? "not observed"}; section gap ${tokens.layout.sectionGap ?? "not observed"}.`
126
+ : undefined,
127
+ sourceUrl: extraction.finalUrl ?? extraction.url,
128
+ rendered: extraction.rendered,
129
+ designMd: extraction.designMd,
130
+ semanticColors,
131
+ spacing: tokens?.spacing?.slice(0, 24),
132
+ radii: tokens?.radii?.slice(0, 16),
133
+ shadows: tokens?.shadows?.slice(0, 12),
134
+ backgrounds: tokens?.backgrounds?.slice(0, 12),
135
+ componentStyles: componentStyles.slice(0, 12),
136
+ cssVariables: tokens?.cssVariables,
137
+ warnings: extraction.warnings,
138
+ };
139
+ }
140
+ export function brandKitDataFromExtraction(input) {
141
+ const tokens = input.designTokens;
142
+ const semantic = tokens.semanticColors ?? {};
143
+ const colors = {
144
+ primary: semantic.primary ?? tokens.colors[0] ?? FALLBACK_COLORS.primary,
145
+ secondary: semantic.secondary ?? tokens.colors[1] ?? FALLBACK_COLORS.secondary,
146
+ accent: semantic.accent ?? tokens.colors[0] ?? FALLBACK_COLORS.accent,
147
+ background: semantic.background ?? tokens.colors[2] ?? FALLBACK_COLORS.background,
148
+ surface: semantic.surface ?? tokens.colors[3] ?? FALLBACK_COLORS.surface,
149
+ text: semantic.text ?? tokens.colors[4] ?? FALLBACK_COLORS.text,
150
+ textMuted: semantic.textMuted ?? tokens.colors[5] ?? FALLBACK_COLORS.textMuted,
151
+ };
152
+ const heading = tokens.components?.find((component) => component.role === "heading");
153
+ const body = tokens.components?.find((component) => component.role === "body");
154
+ const typography = tokens.typography;
155
+ const headingTypography = typography[0];
156
+ const bodyTypography = typography[1] ?? typography[0];
157
+ const source = input.finalUrl ?? input.url;
158
+ return {
159
+ colors,
160
+ typography: {
161
+ headingFont: firstFontFamily(heading?.fontFamily ?? headingTypography?.family) ||
162
+ "system-ui",
163
+ bodyFont: firstFontFamily(body?.fontFamily ?? bodyTypography?.family) ||
164
+ "system-ui",
165
+ headingWeight: heading?.fontWeight ?? headingTypography?.weight ?? "700",
166
+ bodyWeight: body?.fontWeight ?? bodyTypography?.weight ?? "400",
167
+ headingSizes: {
168
+ h1: componentFontSize(tokens, "heading", "h1") ?? "48px",
169
+ h2: componentFontSize(tokens, "heading", "h2") ?? "36px",
170
+ h3: componentFontSize(tokens, "heading", "h3") ?? "24px",
171
+ },
172
+ },
173
+ spacing: {
174
+ pagePadding: tokens.layout?.pagePadding ?? tokens.spacing[0] ?? "24px",
175
+ elementGap: tokens.layout?.sectionGap ?? tokens.spacing[1] ?? "16px",
176
+ },
177
+ borders: {
178
+ radius: tokens.radii[0] ?? "8px",
179
+ accentWidth: "0px",
180
+ },
181
+ logos: (input.assets ?? [])
182
+ .filter((asset) => asset.role === "logo")
183
+ .slice(0, 12)
184
+ .map((asset, index) => ({
185
+ url: asset.url,
186
+ name: `Logo ${index + 1}`,
187
+ variant: "auto",
188
+ })),
189
+ tokens: tokensToBrandKitTokens(tokens, source),
190
+ notes: [
191
+ `Source: ${source}`,
192
+ input.title ? `Page title: ${input.title}` : "",
193
+ "The values above were inferred from the live computed browser cascade.",
194
+ input.designMd,
195
+ ]
196
+ .filter(Boolean)
197
+ .join("\n\n"),
198
+ };
199
+ }
200
+ export function buildDesignMarkdown(input) {
201
+ const tokens = input.designTokens;
202
+ const semantic = tokens.semanticColors ?? {};
203
+ const lines = [
204
+ `# ${safeHeading(input.title || new URL(input.finalUrl).hostname)} design system`,
205
+ "",
206
+ `Source: ${input.finalUrl}`,
207
+ `Extraction: ${input.rendered ? "real browser computed styles" : "SSRF-safe static HTML fallback"} (${input.method}; confidence ${Math.round(input.confidence * 100)}%)`,
208
+ "",
209
+ "## Colors",
210
+ ...roleLines(semantic),
211
+ ...(tokens.colors.length > 0
212
+ ? ["", `Observed palette: ${tokens.colors.slice(0, 16).join(", ")}`]
213
+ : ["", "No visible color samples were available."]),
214
+ "",
215
+ "## Typography",
216
+ ...tokens.typography
217
+ .slice(0, 12)
218
+ .map((style) => `- ${style.family}; ${style.size}; weight ${style.weight}; line-height ${style.lineHeight}; tracking ${style.letterSpacing}`),
219
+ ...(tokens.typography.length === 0
220
+ ? ["- No visible typography samples were available."]
221
+ : []),
222
+ "",
223
+ "## Spacing, shape, and depth",
224
+ `- Spacing: ${tokens.spacing.slice(0, 20).join(", ") || "not observed"}`,
225
+ `- Radii: ${tokens.radii.slice(0, 12).join(", ") || "not observed"}`,
226
+ `- Shadows: ${(tokens.shadows ?? []).slice(0, 8).join("; ") || "not observed"}`,
227
+ `- Background treatments: ${(tokens.backgrounds ?? []).slice(0, 8).join("; ") || "not observed"}`,
228
+ ...(tokens.layout
229
+ ? [
230
+ `- Layout: content width ${tokens.layout.contentWidth ?? "fluid"}; page padding ${tokens.layout.pagePadding ?? "not observed"}; section gap ${tokens.layout.sectionGap ?? "not observed"}`,
231
+ ]
232
+ : []),
233
+ "",
234
+ "## Component language",
235
+ ...(tokens.components ?? [])
236
+ .slice(0, 12)
237
+ .map((component) => [
238
+ `- ${component.role}:`,
239
+ component.fontFamily,
240
+ component.fontSize ? `size ${component.fontSize}` : undefined,
241
+ component.fontWeight ? `weight ${component.fontWeight}` : undefined,
242
+ component.color ? `color ${component.color}` : undefined,
243
+ component.backgroundColor
244
+ ? `background ${component.backgroundColor}`
245
+ : undefined,
246
+ component.backgroundImage
247
+ ? `background image ${component.backgroundImage}`
248
+ : undefined,
249
+ component.borderRadius
250
+ ? `radius ${component.borderRadius}`
251
+ : undefined,
252
+ component.boxShadow ? `shadow ${component.boxShadow}` : undefined,
253
+ component.padding ? `padding ${component.padding}` : undefined,
254
+ component.textTransform
255
+ ? `case ${component.textTransform}`
256
+ : undefined,
257
+ ]
258
+ .filter(Boolean)
259
+ .join("; ")),
260
+ ...((tokens.components ?? []).length === 0
261
+ ? ["- No representative visible component styles were available."]
262
+ : []),
263
+ "",
264
+ "## CSS variables",
265
+ ...Object.entries(tokens.cssVariables)
266
+ .slice(0, 64)
267
+ .map(([name, value]) => `- ${name}: ${value}`),
268
+ ...(Object.keys(tokens.cssVariables).length === 0
269
+ ? ["- No root CSS custom properties were available."]
270
+ : []),
271
+ ...(input.warnings.length > 0
272
+ ? [
273
+ "",
274
+ "## Extraction notes",
275
+ ...input.warnings.map((warning) => `- ${warning}`),
276
+ ]
277
+ : []),
278
+ ];
279
+ return lines.join("\n").slice(0, MAX_DESIGN_MD_CHARS);
280
+ }
281
+ function failedExtraction(url, error) {
282
+ const message = error instanceof Error ? error.message : String(error);
283
+ return {
284
+ status: "failed",
285
+ url,
286
+ rendered: false,
287
+ warnings: [],
288
+ diagnostics: [],
289
+ error: message,
290
+ };
291
+ }
292
+ function roleLines(colors) {
293
+ const roles = [
294
+ "primary",
295
+ "secondary",
296
+ "accent",
297
+ "background",
298
+ "surface",
299
+ "text",
300
+ "textMuted",
301
+ ];
302
+ return roles.map((role) => `- ${role}: ${colors[role] ?? "not observed"}`);
303
+ }
304
+ function firstFontFamily(value) {
305
+ return (value
306
+ ?.split(",")[0]
307
+ ?.trim()
308
+ .replace(/^['"]|['"]$/g, "") ?? "");
309
+ }
310
+ function uniqueStrings(values) {
311
+ return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
312
+ }
313
+ function typographyPolicy(heading, body) {
314
+ if (!heading && !body)
315
+ return undefined;
316
+ return [
317
+ heading
318
+ ? `Headings use ${firstFontFamily(heading.fontFamily)} at ${heading.fontWeight ?? "default"} weight.`
319
+ : "",
320
+ body
321
+ ? `Body copy uses ${firstFontFamily(body.fontFamily)} at ${body.fontWeight ?? "default"} weight.`
322
+ : "",
323
+ ]
324
+ .filter(Boolean)
325
+ .join(" ");
326
+ }
327
+ function componentFontSize(tokens, role, level) {
328
+ const heading = tokens.components?.find((component) => component.role === role);
329
+ if (!heading?.fontSize)
330
+ return undefined;
331
+ if (level === "h1")
332
+ return heading.fontSize;
333
+ const numeric = Number.parseFloat(heading.fontSize);
334
+ if (!Number.isFinite(numeric))
335
+ return heading.fontSize;
336
+ return `${Math.max(level === "h2" ? 24 : 18, Math.round(numeric * (level === "h2" ? 0.75 : 0.58)))}px`;
337
+ }
338
+ function tokensToBrandKitTokens(tokens, source) {
339
+ const entries = Object.entries(tokens.cssVariables).slice(0, MAX_TOKENS);
340
+ const cssTokens = entries.map(([cssVar, value]) => ({
341
+ name: friendlyTokenName(cssVar),
342
+ cssVar,
343
+ value,
344
+ type: classifyBrandKitToken(cssVar, value),
345
+ source,
346
+ }));
347
+ const observedColors = tokens.colors.slice(0, 32).map((value, index) => ({
348
+ name: `Observed Color ${index + 1}`,
349
+ cssVar: `--observed-color-${index + 1}`,
350
+ value,
351
+ type: "color",
352
+ source,
353
+ }));
354
+ return [...cssTokens, ...observedColors].slice(0, MAX_TOKENS);
355
+ }
356
+ function safeHeading(value) {
357
+ return (value
358
+ .replace(/[\r\n#]/g, " ")
359
+ .trim()
360
+ .slice(0, 160) || "Website");
361
+ }
362
+ //# sourceMappingURL=rendered-design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendered-design.js","sourceRoot":"","sources":["../../src/connectors/rendered-design.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,9 @@ interface PlaywrightPageLike {
46
46
  timeout: number;
47
47
  waitUntil: string;
48
48
  }): Promise<unknown>;
49
+ waitForLoadState?(state: "load" | "domcontentloaded" | "networkidle", options?: {
50
+ timeout: number;
51
+ }): Promise<void>;
49
52
  title(): Promise<string>;
50
53
  url(): string;
51
54
  locator(selector: string): {
@@ -64,10 +67,11 @@ interface PlaywrightPageLike {
64
67
  interface PlaywrightContextLike {
65
68
  pages(): PlaywrightPageLike[];
66
69
  newPage(): Promise<PlaywrightPageLike>;
70
+ close?(): Promise<void>;
67
71
  }
68
72
  interface PlaywrightBrowserLike {
69
73
  contexts(): PlaywrightContextLike[];
70
- newContext(): Promise<PlaywrightContextLike>;
74
+ newContext?(): Promise<PlaywrightContextLike>;
71
75
  close(): Promise<void>;
72
76
  }
73
77
  interface PlaywrightLike {
@@ -75,14 +79,22 @@ interface PlaywrightLike {
75
79
  connectOverCDP(endpoint: string): Promise<PlaywrightBrowserLike>;
76
80
  launch(options: {
77
81
  headless: boolean;
82
+ args?: string[];
83
+ executablePath?: string;
78
84
  }): Promise<PlaywrightBrowserLike>;
79
85
  };
80
86
  }
81
87
  export interface LayeredRenderedPageProviderOptions {
88
+ /**
89
+ * Retained for compatibility with the previous browser renderer. Arbitrary
90
+ * Chromium navigation is disabled until a connect-time SSRF guard exists.
91
+ */
82
92
  requestBuilderBrowserConnection?: (input: {
83
93
  sessionId: string;
84
94
  }) => Promise<Record<string, unknown>>;
95
+ /** @deprecated Browser navigation is disabled until it is connect-time guarded. */
85
96
  loadPlaywright?: () => Promise<PlaywrightLike | null>;
97
+ /** @deprecated Browser navigation is disabled until it is connect-time guarded. */
86
98
  requestAttachedBrowserConnection?: (input: {
87
99
  sessionId: string;
88
100
  url: string;
@@ -96,6 +108,12 @@ export declare class LayeredRenderedPageProvider implements RenderedPageProvider
96
108
  constructor(options?: LayeredRenderedPageProviderOptions);
97
109
  render(request: RenderedPageRequest): Promise<RenderedPageResult>;
98
110
  }
111
+ /**
112
+ * Internal browser renderer retained for a future connect-time-guarded
113
+ * adapter. `LayeredRenderedPageProvider` must not call this for arbitrary
114
+ * caller URLs until Chromium's socket connection is guarded as well.
115
+ */
116
+ export declare function renderWithPlaywright(playwright: PlaywrightLike, request: RenderedPageRequest, warnings: string[], method: "builder-browser" | "local-playwright" | "attached-chrome", wsUrl?: string): Promise<RenderedPageResult>;
99
117
  export declare function boundWebsiteExtraction(extraction: WebsiteExtraction): WebsiteExtraction;
100
118
  export {};
101
119
  //# sourceMappingURL=rendered-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rendered-page.d.ts","sourceRoot":"","sources":["../../src/connectors/rendered-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rendered-page.d.ts","sourceRoot":"","sources":["../../src/connectors/rendered-page.ts"],"names":[],"mappings":"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"}