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.
- package/dist/mcp/agent-variants/SessionStore.d.ts +63 -2
- package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
- package/dist/mcp/agent-variants/SessionStore.js +331 -71
- package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +197 -8
- package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js +805 -46
- package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
- package/dist/mcp/agent-variants/contracts.d.ts +1101 -9
- package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
- package/dist/mcp/agent-variants/contracts.js +131 -5
- package/dist/mcp/agent-variants/contracts.js.map +1 -1
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +205 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +1 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.js +295 -0
- package/dist/mcp/agent-variants/createZeroToOneTool.js.map +1 -0
- package/dist/mcp/agent-variants/designContextStore.d.ts +160 -0
- package/dist/mcp/agent-variants/designContextStore.d.ts.map +1 -0
- package/dist/mcp/agent-variants/designContextStore.js +295 -0
- package/dist/mcp/agent-variants/designContextStore.js.map +1 -0
- package/dist/mcp/agent-variants/elementRefToTarget.d.ts +21 -0
- package/dist/mcp/agent-variants/elementRefToTarget.d.ts.map +1 -0
- package/dist/mcp/agent-variants/elementRefToTarget.js +47 -0
- package/dist/mcp/agent-variants/elementRefToTarget.js.map +1 -0
- package/dist/mcp/agent-variants/errors.d.ts +1 -1
- package/dist/mcp/agent-variants/errors.d.ts.map +1 -1
- package/dist/mcp/agent-variants/errors.js +6 -0
- package/dist/mcp/agent-variants/errors.js.map +1 -1
- package/dist/mcp/agent-variants/index.d.ts +4 -1
- package/dist/mcp/agent-variants/index.d.ts.map +1 -1
- package/dist/mcp/agent-variants/index.js +7 -1
- package/dist/mcp/agent-variants/index.js.map +1 -1
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts +430 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.d.ts.map +1 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.js +2379 -0
- package/dist/mcp/agent-variants/inspirationDesignContext.js.map +1 -0
- package/dist/mcp/agent-variants/pendingChangesAdapter.d.ts.map +1 -1
- package/dist/mcp/agent-variants/pendingChangesAdapter.js +10 -7
- package/dist/mcp/agent-variants/pendingChangesAdapter.js.map +1 -1
- package/dist/mcp/agent-variants/sourceContext.d.ts +7 -0
- package/dist/mcp/agent-variants/sourceContext.d.ts.map +1 -0
- package/dist/mcp/agent-variants/sourceContext.js +158 -0
- package/dist/mcp/agent-variants/sourceContext.js.map +1 -0
- package/dist/mcp/agent-variants/tools.d.ts +14 -0
- package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
- package/dist/mcp/agent-variants/tools.js +330 -15
- package/dist/mcp/agent-variants/tools.js.map +1 -1
- package/dist/mcp/changeBatchClassification.d.ts +30 -0
- package/dist/mcp/changeBatchClassification.d.ts.map +1 -0
- package/dist/mcp/changeBatchClassification.js +65 -0
- package/dist/mcp/changeBatchClassification.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +237 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
- package/dist/proxy-middleware/proxy-config.js +1 -15
- package/dist/proxy-middleware/proxy-config.js.map +1 -1
- package/dist/routes/agentVariants.d.ts +3 -1
- package/dist/routes/agentVariants.d.ts.map +1 -1
- package/dist/routes/agentVariants.js +131 -13
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/routes/mcp.d.ts +7 -1
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +139 -16
- package/dist/routes/mcp.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/SessionBridgeService.d.ts +22 -0
- package/dist/services/SessionBridgeService.d.ts.map +1 -1
- package/dist/services/SessionBridgeService.js +61 -0
- package/dist/services/SessionBridgeService.js.map +1 -1
- package/dist/services/TelemetryService.d.ts +121 -0
- package/dist/services/TelemetryService.d.ts.map +1 -1
- package/dist/services/TelemetryService.js +155 -0
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/services/WorktreeManager.d.ts +57 -5
- package/dist/services/WorktreeManager.d.ts.map +1 -1
- package/dist/services/WorktreeManager.js +205 -13
- package/dist/services/WorktreeManager.js.map +1 -1
- package/dist/services/templates/designCatalog.d.ts +27 -0
- package/dist/services/templates/designCatalog.d.ts.map +1 -0
- package/dist/services/templates/designCatalog.js +141 -0
- package/dist/services/templates/designCatalog.js.map +1 -0
- package/dist/services/templates/designmd/airbnb.md +545 -0
- package/dist/services/templates/designmd/airtable.md +554 -0
- package/dist/services/templates/designmd/apple.md +562 -0
- package/dist/services/templates/designmd/binance.md +634 -0
- package/dist/services/templates/designmd/bmw-m.md +503 -0
- package/dist/services/templates/designmd/bmw.md +544 -0
- package/dist/services/templates/designmd/bugatti.md +454 -0
- package/dist/services/templates/designmd/cal.md +542 -0
- package/dist/services/templates/designmd/claude.md +589 -0
- package/dist/services/templates/designmd/clay.md +541 -0
- package/dist/services/templates/designmd/cohere.md +451 -0
- package/dist/services/templates/designmd/cursor.md +537 -0
- package/dist/services/templates/designmd/expo.md +526 -0
- package/dist/services/templates/designmd/figma.md +578 -0
- package/dist/services/templates/designmd/framer.md +544 -0
- package/dist/services/templates/designmd/hp.md +670 -0
- package/dist/services/templates/designmd/linear.app.md +548 -0
- package/dist/services/templates/designmd/mintlify.md +852 -0
- package/dist/services/templates/designmd/miro.md +825 -0
- package/dist/services/templates/designmd/notion.md +821 -0
- package/dist/services/templates/designmd/raycast.md +669 -0
- package/dist/services/templates/designmd/resend.md +585 -0
- package/dist/services/templates/designmd/sentry.md +262 -0
- package/dist/services/templates/designmd/shopify.md +350 -0
- package/dist/services/templates/designmd/spotify.md +246 -0
- package/dist/services/templates/designmd/stripe.md +322 -0
- package/dist/services/templates/designmd/supabase.md +255 -0
- package/dist/services/templates/designmd/superhuman.md +252 -0
- package/dist/services/templates/designmd/uber.md +295 -0
- package/dist/services/templates/designmd/vercel.md +310 -0
- package/dist/services/templates/viteReactTs.d.ts +42 -0
- package/dist/services/templates/viteReactTs.d.ts.map +1 -0
- package/dist/services/templates/viteReactTs.js +267 -0
- package/dist/services/templates/viteReactTs.js.map +1 -0
- package/dist/types/change-request-types.d.ts +15 -3
- package/dist/types/change-request-types.d.ts.map +1 -1
- package/dist/utils/skills/claude-skill.d.ts +2 -2
- package/dist/utils/skills/claude-skill.d.ts.map +1 -1
- package/dist/utils/skills/claude-skill.js +19 -98
- package/dist/utils/skills/claude-skill.js.map +1 -1
- package/dist/utils/skills/cursor-rules.d.ts +2 -2
- package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
- package/dist/utils/skills/cursor-rules.js +15 -80
- package/dist/utils/skills/cursor-rules.js.map +1 -1
- package/dist/utils/skills/shared-variants-protocol.d.ts +23 -0
- package/dist/utils/skills/shared-variants-protocol.d.ts.map +1 -0
- package/dist/utils/skills/shared-variants-protocol.js +131 -0
- package/dist/utils/skills/shared-variants-protocol.js.map +1 -0
- package/package.json +4 -3
- package/src/ui/dist/assets/main-C9jfEp80.css +1 -0
- package/src/ui/dist/assets/main-DejhsBWR.js +382 -0
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/main-Bv0LuxKz.js +0 -382
- 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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"}
|