rivet-design 0.9.1 → 0.9.3

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 (138) hide show
  1. package/dist/mcp/agent-variants/SessionStore.d.ts +63 -2
  2. package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
  3. package/dist/mcp/agent-variants/SessionStore.js +331 -71
  4. package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
  5. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +197 -8
  6. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  7. package/dist/mcp/agent-variants/WorktreeOrchestrator.js +805 -46
  8. package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
  9. package/dist/mcp/agent-variants/contracts.d.ts +1101 -9
  10. package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
  11. package/dist/mcp/agent-variants/contracts.js +131 -5
  12. package/dist/mcp/agent-variants/contracts.js.map +1 -1
  13. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +205 -0
  14. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +1 -0
  15. package/dist/mcp/agent-variants/createZeroToOneTool.js +295 -0
  16. package/dist/mcp/agent-variants/createZeroToOneTool.js.map +1 -0
  17. package/dist/mcp/agent-variants/designContextStore.d.ts +160 -0
  18. package/dist/mcp/agent-variants/designContextStore.d.ts.map +1 -0
  19. package/dist/mcp/agent-variants/designContextStore.js +295 -0
  20. package/dist/mcp/agent-variants/designContextStore.js.map +1 -0
  21. package/dist/mcp/agent-variants/elementRefToTarget.d.ts +21 -0
  22. package/dist/mcp/agent-variants/elementRefToTarget.d.ts.map +1 -0
  23. package/dist/mcp/agent-variants/elementRefToTarget.js +47 -0
  24. package/dist/mcp/agent-variants/elementRefToTarget.js.map +1 -0
  25. package/dist/mcp/agent-variants/errors.d.ts +1 -1
  26. package/dist/mcp/agent-variants/errors.d.ts.map +1 -1
  27. package/dist/mcp/agent-variants/errors.js +6 -0
  28. package/dist/mcp/agent-variants/errors.js.map +1 -1
  29. package/dist/mcp/agent-variants/index.d.ts +4 -1
  30. package/dist/mcp/agent-variants/index.d.ts.map +1 -1
  31. package/dist/mcp/agent-variants/index.js +7 -1
  32. package/dist/mcp/agent-variants/index.js.map +1 -1
  33. package/dist/mcp/agent-variants/inspirationDesignContext.d.ts +430 -0
  34. package/dist/mcp/agent-variants/inspirationDesignContext.d.ts.map +1 -0
  35. package/dist/mcp/agent-variants/inspirationDesignContext.js +2379 -0
  36. package/dist/mcp/agent-variants/inspirationDesignContext.js.map +1 -0
  37. package/dist/mcp/agent-variants/pendingChangesAdapter.d.ts.map +1 -1
  38. package/dist/mcp/agent-variants/pendingChangesAdapter.js +10 -7
  39. package/dist/mcp/agent-variants/pendingChangesAdapter.js.map +1 -1
  40. package/dist/mcp/agent-variants/sourceContext.d.ts +7 -0
  41. package/dist/mcp/agent-variants/sourceContext.d.ts.map +1 -0
  42. package/dist/mcp/agent-variants/sourceContext.js +158 -0
  43. package/dist/mcp/agent-variants/sourceContext.js.map +1 -0
  44. package/dist/mcp/agent-variants/tools.d.ts +14 -0
  45. package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
  46. package/dist/mcp/agent-variants/tools.js +330 -15
  47. package/dist/mcp/agent-variants/tools.js.map +1 -1
  48. package/dist/mcp/changeBatchClassification.d.ts +30 -0
  49. package/dist/mcp/changeBatchClassification.d.ts.map +1 -0
  50. package/dist/mcp/changeBatchClassification.js +65 -0
  51. package/dist/mcp/changeBatchClassification.js.map +1 -0
  52. package/dist/mcp/server.d.ts.map +1 -1
  53. package/dist/mcp/server.js +237 -39
  54. package/dist/mcp/server.js.map +1 -1
  55. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  56. package/dist/proxy-middleware/proxy-config.js +1 -15
  57. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  58. package/dist/routes/agentVariants.d.ts +3 -1
  59. package/dist/routes/agentVariants.d.ts.map +1 -1
  60. package/dist/routes/agentVariants.js +131 -13
  61. package/dist/routes/agentVariants.js.map +1 -1
  62. package/dist/routes/mcp.d.ts +7 -1
  63. package/dist/routes/mcp.d.ts.map +1 -1
  64. package/dist/routes/mcp.js +139 -16
  65. package/dist/routes/mcp.js.map +1 -1
  66. package/dist/server.d.ts.map +1 -1
  67. package/dist/server.js +2 -2
  68. package/dist/server.js.map +1 -1
  69. package/dist/services/SessionBridgeService.d.ts +22 -0
  70. package/dist/services/SessionBridgeService.d.ts.map +1 -1
  71. package/dist/services/SessionBridgeService.js +61 -0
  72. package/dist/services/SessionBridgeService.js.map +1 -1
  73. package/dist/services/TelemetryService.d.ts +121 -0
  74. package/dist/services/TelemetryService.d.ts.map +1 -1
  75. package/dist/services/TelemetryService.js +155 -0
  76. package/dist/services/TelemetryService.js.map +1 -1
  77. package/dist/services/WorktreeManager.d.ts +57 -5
  78. package/dist/services/WorktreeManager.d.ts.map +1 -1
  79. package/dist/services/WorktreeManager.js +205 -13
  80. package/dist/services/WorktreeManager.js.map +1 -1
  81. package/dist/services/templates/designCatalog.d.ts +27 -0
  82. package/dist/services/templates/designCatalog.d.ts.map +1 -0
  83. package/dist/services/templates/designCatalog.js +141 -0
  84. package/dist/services/templates/designCatalog.js.map +1 -0
  85. package/dist/services/templates/designmd/airbnb.md +545 -0
  86. package/dist/services/templates/designmd/airtable.md +554 -0
  87. package/dist/services/templates/designmd/apple.md +562 -0
  88. package/dist/services/templates/designmd/binance.md +634 -0
  89. package/dist/services/templates/designmd/bmw-m.md +503 -0
  90. package/dist/services/templates/designmd/bmw.md +544 -0
  91. package/dist/services/templates/designmd/bugatti.md +454 -0
  92. package/dist/services/templates/designmd/cal.md +542 -0
  93. package/dist/services/templates/designmd/claude.md +589 -0
  94. package/dist/services/templates/designmd/clay.md +541 -0
  95. package/dist/services/templates/designmd/cohere.md +451 -0
  96. package/dist/services/templates/designmd/cursor.md +537 -0
  97. package/dist/services/templates/designmd/expo.md +526 -0
  98. package/dist/services/templates/designmd/figma.md +578 -0
  99. package/dist/services/templates/designmd/framer.md +544 -0
  100. package/dist/services/templates/designmd/hp.md +670 -0
  101. package/dist/services/templates/designmd/linear.app.md +548 -0
  102. package/dist/services/templates/designmd/mintlify.md +852 -0
  103. package/dist/services/templates/designmd/miro.md +825 -0
  104. package/dist/services/templates/designmd/notion.md +821 -0
  105. package/dist/services/templates/designmd/raycast.md +669 -0
  106. package/dist/services/templates/designmd/resend.md +585 -0
  107. package/dist/services/templates/designmd/sentry.md +262 -0
  108. package/dist/services/templates/designmd/shopify.md +350 -0
  109. package/dist/services/templates/designmd/spotify.md +246 -0
  110. package/dist/services/templates/designmd/stripe.md +322 -0
  111. package/dist/services/templates/designmd/supabase.md +255 -0
  112. package/dist/services/templates/designmd/superhuman.md +252 -0
  113. package/dist/services/templates/designmd/uber.md +295 -0
  114. package/dist/services/templates/designmd/vercel.md +310 -0
  115. package/dist/services/templates/viteReactTs.d.ts +42 -0
  116. package/dist/services/templates/viteReactTs.d.ts.map +1 -0
  117. package/dist/services/templates/viteReactTs.js +267 -0
  118. package/dist/services/templates/viteReactTs.js.map +1 -0
  119. package/dist/types/change-request-types.d.ts +15 -3
  120. package/dist/types/change-request-types.d.ts.map +1 -1
  121. package/dist/utils/skills/claude-skill.d.ts +2 -2
  122. package/dist/utils/skills/claude-skill.d.ts.map +1 -1
  123. package/dist/utils/skills/claude-skill.js +19 -98
  124. package/dist/utils/skills/claude-skill.js.map +1 -1
  125. package/dist/utils/skills/cursor-rules.d.ts +2 -2
  126. package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
  127. package/dist/utils/skills/cursor-rules.js +15 -80
  128. package/dist/utils/skills/cursor-rules.js.map +1 -1
  129. package/dist/utils/skills/shared-variants-protocol.d.ts +23 -0
  130. package/dist/utils/skills/shared-variants-protocol.d.ts.map +1 -0
  131. package/dist/utils/skills/shared-variants-protocol.js +131 -0
  132. package/dist/utils/skills/shared-variants-protocol.js.map +1 -0
  133. package/package.json +4 -3
  134. package/src/ui/dist/assets/main-C9jfEp80.css +1 -0
  135. package/src/ui/dist/assets/main-DejhsBWR.js +382 -0
  136. package/src/ui/dist/index.html +2 -2
  137. package/src/ui/dist/assets/main-Bv0LuxKz.js +0 -382
  138. package/src/ui/dist/assets/main-BzmseUDd.css +0 -1
@@ -0,0 +1,430 @@
1
+ import { extractPromptUrls } from './sourceContext';
2
+ import type { DesignContextEntry, SourceContextInput } from './contracts';
3
+ import { ageBucketFor, confidenceBucketFor, type DesignContextStore, type FreshnessState } from './designContextStore';
4
+ /**
5
+ * Validation, fetch, signal extraction, and markdown generation for
6
+ * inspiration-link design context. Used only by the MCP
7
+ * `create_zero_to_one_project` flow today. Standalone helpers stay
8
+ * non-exposed to product surfaces; they exist so internal debugging and
9
+ * unit tests can drive each stage in isolation.
10
+ */
11
+ export interface InspirationFetchSuccess {
12
+ ok: true;
13
+ url: string;
14
+ finalUrl: string;
15
+ html: string;
16
+ contentType: string;
17
+ byteLength: number;
18
+ }
19
+ export interface InspirationFetchFailure {
20
+ ok: false;
21
+ url: string;
22
+ reason: string;
23
+ }
24
+ export type InspirationFetchResult = InspirationFetchSuccess | InspirationFetchFailure;
25
+ export type InspirationFetcher = (url: string) => Promise<InspirationFetchResult>;
26
+ export interface LinkedCssFetchSuccess {
27
+ ok: true;
28
+ /** Originally requested stylesheet URL (post HTML resolution). */
29
+ url: string;
30
+ /** Final URL after redirects, normalized. */
31
+ finalUrl: string;
32
+ css: string;
33
+ byteLength: number;
34
+ }
35
+ export interface LinkedCssFetchFailure {
36
+ ok: false;
37
+ url: string;
38
+ reason: string;
39
+ }
40
+ export type LinkedCssFetchResult = LinkedCssFetchSuccess | LinkedCssFetchFailure;
41
+ export type LinkedCssFetcher = (url: string) => Promise<LinkedCssFetchResult>;
42
+ export type LinkIntent = 'inspiration' | 'reference' | 'unrelated';
43
+ export interface InspirationLink {
44
+ url: string;
45
+ intent: LinkIntent;
46
+ /** Optional human label sourced from sourceArtifact entries when available. */
47
+ label?: string;
48
+ }
49
+ export interface InspirationLinkClassification {
50
+ inspiration: InspirationLink[];
51
+ reference: InspirationLink[];
52
+ /**
53
+ * Whether multiple inspiration links should produce a single merged design
54
+ * context or remain as separate per-slot guidance. Set by user-intent
55
+ * heuristics on the prompt and explicit `sourceContext` roles.
56
+ */
57
+ mergeStrategy: 'merge' | 'separate';
58
+ }
59
+ /**
60
+ * Single typography token (per DESIGN.md token-group shape). All fields
61
+ * stay optional because static extraction may surface only some metrics
62
+ * (a fontFamily without an explicit lineHeight is still useful).
63
+ */
64
+ export interface TypographyToken {
65
+ fontFamily?: string;
66
+ fontSize?: string;
67
+ fontWeight?: string;
68
+ lineHeight?: string;
69
+ letterSpacing?: string;
70
+ fontVariationSettings?: string;
71
+ }
72
+ /**
73
+ * Normalized `@font-face` evidence extracted from static CSS.
74
+ * Keeps only reusable typography metadata and source hostnames,
75
+ * never raw CSS declarations.
76
+ */
77
+ export interface FontFaceEvidence {
78
+ fontFamily: string;
79
+ fontWeight?: string;
80
+ fontStyle?: string;
81
+ fontDisplay?: string;
82
+ srcHosts: string[];
83
+ }
84
+ /**
85
+ * Semantic color roles inferred from CSS rule context (body/.btn-primary/
86
+ * .card/etc.) plus palette fallback. Keys are intentionally kebab-style
87
+ * to match downstream DESIGN.md token group shape.
88
+ */
89
+ export interface ColorRoles {
90
+ primary?: string;
91
+ onPrimary?: string;
92
+ background?: string;
93
+ surface?: string;
94
+ text?: string;
95
+ muted?: string;
96
+ border?: string;
97
+ }
98
+ /**
99
+ * Bucketed dimension scale (sm/md/lg) with the full observed set kept
100
+ * for prose. Empty `observed` means no evidence was found; bucket fields
101
+ * stay undefined in that case rather than guessing.
102
+ */
103
+ export interface DimensionScale {
104
+ sm?: string;
105
+ md?: string;
106
+ lg?: string;
107
+ observed: string[];
108
+ }
109
+ /**
110
+ * Structured per-component token detail. Filled when a recognizable
111
+ * component selector (e.g., `.btn-primary`, `.card`) appears in extracted
112
+ * CSS. Values are raw token strings, not token references — the writer is
113
+ * responsible for cross-referencing back to `colors.*` / `rounded.*` once
114
+ * the rich DESIGN.md template lands.
115
+ */
116
+ export interface ComponentTokenDetail {
117
+ name: string;
118
+ backgroundColor?: string;
119
+ textColor?: string;
120
+ borderColor?: string;
121
+ borderRadius?: string;
122
+ padding?: string;
123
+ boxShadow?: string;
124
+ }
125
+ export interface InspirationDesignSignals {
126
+ brand: {
127
+ title?: string;
128
+ description?: string;
129
+ siteName?: string;
130
+ tone: string[];
131
+ };
132
+ typography: {
133
+ headingFamilies: string[];
134
+ bodyFamilies: string[];
135
+ weights: string[];
136
+ scaleSamples: string[];
137
+ /** Families parsed from Google Fonts stylesheet link tags. */
138
+ googleFontFamilies?: string[];
139
+ /** Parsed `@font-face` declarations from static CSS. */
140
+ fontFaces?: FontFaceEvidence[];
141
+ /**
142
+ * Display + body typography tokens shaped for DESIGN.md `typography`
143
+ * group. Present only when CSS rules with matching selectors surface
144
+ * concrete metrics.
145
+ */
146
+ tokens?: {
147
+ display?: TypographyToken;
148
+ body?: TypographyToken;
149
+ };
150
+ };
151
+ colors: {
152
+ palette: string[];
153
+ themeColor?: string;
154
+ accents: string[];
155
+ /** Inferred semantic role assignments for DESIGN.md `colors` group. */
156
+ roles?: ColorRoles;
157
+ };
158
+ layout: {
159
+ sections: string[];
160
+ structureNotes: string[];
161
+ };
162
+ components: string[];
163
+ motionCues: string[];
164
+ iconography: string[];
165
+ /** Spacing dimension scale evidence for DESIGN.md `spacing` group. */
166
+ spacing?: DimensionScale;
167
+ /** Border-radius dimension scale evidence for DESIGN.md `rounded` group. */
168
+ rounded?: DimensionScale;
169
+ /** Raw `box-shadow` declarations observed. */
170
+ shadows?: string[];
171
+ /** Raw `transition*` declarations observed. */
172
+ transitions?: string[];
173
+ /** Responsive breakpoint conditions parsed from `@media (...)`. */
174
+ breakpoints?: string[];
175
+ /** Structured component token detail for DESIGN.md `components` group. */
176
+ componentDetails?: ComponentTokenDetail[];
177
+ signalDensity: number;
178
+ }
179
+ export interface InspirationExtractionInput {
180
+ urls: string[];
181
+ prompt: string;
182
+ sourceContext?: SourceContextInput;
183
+ slotCount: number;
184
+ fetcher?: InspirationFetcher;
185
+ /**
186
+ * Test seam for the signal extractor — production wires the default. Keeps
187
+ * unit tests deterministic against fixture HTML without re-implementing
188
+ * the regex pipeline. The optional `extraCss` argument lets the
189
+ * orchestrator pass merged linked-stylesheet text without storing it in
190
+ * the cache.
191
+ */
192
+ signalExtractor?: (html: string, options?: {
193
+ sourceUrl?: string;
194
+ extraCss?: string;
195
+ }) => InspirationDesignSignals;
196
+ /**
197
+ * Test seam for the linked-CSS fetcher. Production wires
198
+ * `defaultLinkedCssFetcher`; tests inject a deterministic implementation
199
+ * keyed by URL so external stylesheet ingestion can be exercised without
200
+ * outbound network access. Setting this to a no-op fetcher disables
201
+ * linked-CSS ingestion entirely.
202
+ */
203
+ cssFetcher?: LinkedCssFetcher;
204
+ /**
205
+ * Persistent runtime design context cache. When provided, the extractor
206
+ * looks up each inspiration URL by normalized cache key before fetching
207
+ * and writes successful extractions back so repeat requests with the same
208
+ * link can reuse prior design context. Callers MUST scope the store to
209
+ * runtime user data — bundled catalog files (`src/services/templates/
210
+ * designmd`) are never mutated by this code path.
211
+ */
212
+ store?: DesignContextStore;
213
+ /**
214
+ * When true, the extractor bypasses any otherwise reusable cache entry
215
+ * and forces a fresh fetch + extract. Successful re-extraction still
216
+ * updates the cache so subsequent reuse picks up the regenerated entry.
217
+ * Wired from prompt phrases like "fresh", "latest", "current".
218
+ */
219
+ forceRefresh?: boolean;
220
+ /**
221
+ * Wall-clock source for freshness checks and cache timestamps. Defaults to
222
+ * `Date.now`. Tests inject a deterministic clock so the stale branch can
223
+ * be exercised without sleeping.
224
+ */
225
+ now?: () => number;
226
+ /** Freshness window in milliseconds. Falls back to the store default. */
227
+ freshnessMs?: number;
228
+ /** Extractor/schema version for cache compatibility. Tests override. */
229
+ schemaVersion?: string;
230
+ }
231
+ export interface InspirationCacheOutcomeMetadata {
232
+ /** Coarse age bucket for the most recent cache reuse this call surfaced. */
233
+ ageBucket: ReturnType<typeof ageBucketFor>;
234
+ /** Coarse confidence bucket for the cached confidence value. */
235
+ confidenceBucket: ReturnType<typeof confidenceBucketFor>;
236
+ /** Freshness state when the entry was inspected. */
237
+ freshness: FreshnessState;
238
+ }
239
+ export interface InspirationExtractionOutcome {
240
+ /** Aligned to slotCount. `undefined` slots fall back to prompt direction. */
241
+ entries: Array<DesignContextEntry | undefined>;
242
+ warnings: string[];
243
+ /**
244
+ * Outcome metadata safe for telemetry — counts only, no URLs, snippets,
245
+ * fetched HTML, or extracted strings. Callers MAY forward this to product
246
+ * analytics; full URLs and page content MUST stay out of telemetry.
247
+ */
248
+ telemetry: {
249
+ inspirationLinkCount: number;
250
+ referenceLinkCount: number;
251
+ successfulExtractions: number;
252
+ lowSignalCount: number;
253
+ fetchFailureCount: number;
254
+ blockedTargetCount: number;
255
+ mergeStrategy: 'merge' | 'separate' | 'none';
256
+ /**
257
+ * Cache outcome counts. Safe to forward to analytics — these are pure
258
+ * counts of cache hit / miss / stale / version-mismatch / regeneration
259
+ * decisions and never include URLs, fetched HTML, extracted text, or
260
+ * file paths.
261
+ */
262
+ cache: {
263
+ hitCount: number;
264
+ missCount: number;
265
+ staleCount: number;
266
+ versionMismatchCount: number;
267
+ lowConfidenceCount: number;
268
+ regenerationCount: number;
269
+ forcedRefresh: boolean;
270
+ };
271
+ };
272
+ /**
273
+ * Per-call cache reuse summary suitable for user-facing surfaces. Present
274
+ * only when at least one cached entry was reused. Contains age and
275
+ * confidence buckets, never raw URLs or extracted text.
276
+ */
277
+ cacheReuse?: InspirationCacheOutcomeMetadata;
278
+ }
279
+ /**
280
+ * Synchronous URL validator: enforces HTTP/HTTPS scheme and rejects literal
281
+ * hostnames that match local/loopback/link-local patterns. DNS-resolved
282
+ * checks live in `defaultInspirationFetcher` so the simple checks here can
283
+ * run without IO during input validation.
284
+ */
285
+ export declare const validateInspirationUrl: (rawUrl: string) => {
286
+ ok: true;
287
+ url: URL;
288
+ normalized: string;
289
+ } | {
290
+ ok: false;
291
+ reason: string;
292
+ };
293
+ /**
294
+ * Returns true for hostnames that are unambiguously local or private without
295
+ * any DNS lookup. IPv4 / IPv6 literals get the private-range check;
296
+ * hostname strings get the local-domain pattern check.
297
+ */
298
+ export declare const isLocalLiteralHostname: (hostname: string) => boolean;
299
+ /**
300
+ * Resolve hostname and check the resolved address against private/loopback/
301
+ * link-local ranges. Used inside `defaultInspirationFetcher` before issuing
302
+ * a fetch so users cannot point inspiration links at private network hosts
303
+ * via DNS rebinding-style indirection.
304
+ *
305
+ * @effect Performs a DNS lookup via dns.promises.lookup
306
+ */
307
+ export declare const isResolvedHostProtected: (hostname: string) => Promise<boolean>;
308
+ /**
309
+ * Decide whether a URL discovered in the user message is design inspiration,
310
+ * source/content reference, or unrelated context. Combines local heuristics
311
+ * on the prompt with explicit role hints from `sourceContext.artifact`.
312
+ *
313
+ * `primary` role -> `reference` (treated as content source).
314
+ * `inspiration` role -> `inspiration`.
315
+ * `competitor` role -> `inspiration` (will merge as separate per-slot).
316
+ * Otherwise prompt phrasing wins; default is `inspiration` because the user
317
+ * provided the URL in a creation flow.
318
+ */
319
+ export declare const inferLinkIntent: (input: {
320
+ url: string;
321
+ prompt: string;
322
+ sourceContext?: SourceContextInput;
323
+ }) => LinkIntent;
324
+ /**
325
+ * Classify a deduped URL list against the prompt + sourceContext. Picks an
326
+ * overall mergeStrategy: when the user's message frames the links as
327
+ * alternatives/competitors/options, return `'separate'`; otherwise `'merge'`.
328
+ * Explicit `competitor` roles also force `'separate'`.
329
+ */
330
+ export declare const classifyInspirationLinks: (input: {
331
+ urls: string[];
332
+ prompt: string;
333
+ sourceContext?: SourceContextInput;
334
+ }) => InspirationLinkClassification;
335
+ /**
336
+ * Default fetcher used by `extractInspirationDesignContext`. Performs a
337
+ * pre-fetch DNS check, applies a timeout, caps response size, validates the
338
+ * response content-type, and refuses non-HTML payloads. Treats remote page
339
+ * content as untrusted data — does not execute, evaluate, or inline its
340
+ * text as agent instructions.
341
+ *
342
+ * @effect Issues an outbound HTTPS/HTTP fetch and a DNS lookup. Aborts on
343
+ * timeout, redirect limit, or oversize payloads.
344
+ */
345
+ export declare const defaultInspirationFetcher: InspirationFetcher;
346
+ /**
347
+ * Discover absolute stylesheet URLs from `<link rel="stylesheet">` tags.
348
+ * Resolves relative `href` values against `baseUrl`, deduplicates, and
349
+ * returns at most `MAX_LINKED_STYLESHEETS` entries so the caller's fetch
350
+ * budget stays bounded. Only HTTP/HTTPS targets are returned — `data:`,
351
+ * `blob:`, and other schemes are dropped before any safety checks run.
352
+ */
353
+ export declare const discoverLinkedStylesheetUrls: (html: string, baseUrl: string) => string[];
354
+ /**
355
+ * Default linked-stylesheet fetcher. Mirrors `defaultInspirationFetcher`'s
356
+ * pre-fetch DNS check, redirect-aware re-check, timeout, and byte cap, but
357
+ * accepts `text/css` (or `text/plain`) content and uses tighter per-file
358
+ * limits. Returned `css` is treated as untrusted data — callers must not
359
+ * evaluate it or inline it as agent instructions.
360
+ *
361
+ * @effect Issues an outbound HTTPS/HTTP fetch and a DNS lookup. Aborts on
362
+ * timeout or oversize payloads.
363
+ */
364
+ export declare const defaultLinkedCssFetcher: LinkedCssFetcher;
365
+ /**
366
+ * Fetch up to `MAX_LINKED_STYLESHEETS` linked stylesheets discovered in
367
+ * the fetched HTML, honoring a cumulative byte budget. Returns the
368
+ * concatenated CSS text and a count of how many sheets contributed.
369
+ * The returned CSS is intentionally ephemeral — callers MUST NOT persist
370
+ * or forward it to telemetry; only derived signal extractions may be
371
+ * stored.
372
+ */
373
+ export declare const fetchLinkedStylesheets: (html: string, baseUrl: string, fetcher: LinkedCssFetcher) => Promise<{
374
+ css: string;
375
+ fetchedCount: number;
376
+ attemptedCount: number;
377
+ byteTotal: number;
378
+ skippedReasons: string[];
379
+ }>;
380
+ /**
381
+ * Pure HTML signal extractor. Operates on raw fetched HTML and pulls
382
+ * typography, color, layout, component, motion, brand, and tone signals
383
+ * via regex without instantiating a DOM. Returns deterministic ordered
384
+ * arrays so callers and tests can compare snapshots stably.
385
+ *
386
+ * `signalDensity` is a 0-100 fidelity-weighted score indicating how well
387
+ * the extracted evidence can populate canonical DESIGN.md token groups and
388
+ * sections. Callers can treat low scores as low-signal pages and fall back
389
+ * to prompt direction.
390
+ */
391
+ export declare const extractDesignSignals: (html: string, options?: {
392
+ sourceUrl?: string;
393
+ extraCss?: string;
394
+ }) => InspirationDesignSignals;
395
+ /**
396
+ * Produce reusable DESIGN.md markdown with token frontmatter plus canonical
397
+ * prose sections (`Overview` through `Do's and Don'ts`). The markdown avoids
398
+ * embedding raw fetched HTML, source code, DOM dumps, screenshots, or
399
+ * proprietary copied text.
400
+ */
401
+ export declare const buildInspirationDesignContextMarkdown: (input: {
402
+ signals: InspirationDesignSignals[];
403
+ sources: Array<{
404
+ url: string;
405
+ label?: string;
406
+ }>;
407
+ merged: boolean;
408
+ }) => string;
409
+ export declare const extractInspirationDesignContext: (input: InspirationExtractionInput) => Promise<InspirationExtractionOutcome>;
410
+ /**
411
+ * Re-export so callers wiring inspiration extraction can use the shared
412
+ * prompt-URL extractor without importing from `sourceContext` directly.
413
+ * Source research and SOURCE_CONTEXT.md remain owned by `sourceContext`;
414
+ * this module only consumes the URL list.
415
+ */
416
+ export { extractPromptUrls };
417
+ /**
418
+ * Internal debug helper for ad-hoc engineering verification. Not registered
419
+ * as an MCP tool, not exported from `index.ts`, and not advertised as a
420
+ * product surface. Routes through the same validation, fetch, and markdown
421
+ * generation as the MCP pipeline so debug output cannot drift from product
422
+ * output.
423
+ */
424
+ export declare const standaloneDebugExtract: (url: string, fetcher?: InspirationFetcher) => Promise<{
425
+ url: string;
426
+ ok: boolean;
427
+ warnings: string[];
428
+ markdown?: string;
429
+ }>;
430
+ //# sourceMappingURL=inspirationDesignContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspirationDesignContext.d.ts","sourceRoot":"","sources":["../../../src/mcp/agent-variants/inspirationDesignContext.ts"],"names":[],"mappings":"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"}