rivet-design 0.10.8 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/index.d.ts +47 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +277 -123
  4. package/dist/index.js.map +1 -1
  5. package/dist/mcp/agent-variants/SessionStore.d.ts +28 -4
  6. package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
  7. package/dist/mcp/agent-variants/SessionStore.js +356 -123
  8. package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
  9. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +84 -4
  10. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  11. package/dist/mcp/agent-variants/WorktreeOrchestrator.js +744 -145
  12. package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
  13. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts +8 -3
  14. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
  15. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js +8 -3
  16. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
  17. package/dist/mcp/agent-variants/contracts.d.ts +7984 -1625
  18. package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
  19. package/dist/mcp/agent-variants/contracts.js +312 -154
  20. package/dist/mcp/agent-variants/contracts.js.map +1 -1
  21. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +2 -3
  22. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +1 -1
  23. package/dist/mcp/agent-variants/createZeroToOneTool.js +49 -39
  24. package/dist/mcp/agent-variants/createZeroToOneTool.js.map +1 -1
  25. package/dist/mcp/agent-variants/designCritique.d.ts +167 -0
  26. package/dist/mcp/agent-variants/designCritique.d.ts.map +1 -0
  27. package/dist/mcp/agent-variants/designCritique.js +717 -0
  28. package/dist/mcp/agent-variants/designCritique.js.map +1 -0
  29. package/dist/mcp/agent-variants/diffQa.d.ts +7 -0
  30. package/dist/mcp/agent-variants/diffQa.d.ts.map +1 -0
  31. package/dist/mcp/agent-variants/diffQa.js +67 -0
  32. package/dist/mcp/agent-variants/diffQa.js.map +1 -0
  33. package/dist/mcp/agent-variants/index.d.ts +3 -3
  34. package/dist/mcp/agent-variants/index.d.ts.map +1 -1
  35. package/dist/mcp/agent-variants/index.js +2 -1
  36. package/dist/mcp/agent-variants/index.js.map +1 -1
  37. package/dist/mcp/agent-variants/pinterestSourceContext.d.ts +4 -2
  38. package/dist/mcp/agent-variants/pinterestSourceContext.d.ts.map +1 -1
  39. package/dist/mcp/agent-variants/pinterestSourceContext.js +7 -6
  40. package/dist/mcp/agent-variants/pinterestSourceContext.js.map +1 -1
  41. package/dist/mcp/agent-variants/previewQa.d.ts +6 -4
  42. package/dist/mcp/agent-variants/previewQa.d.ts.map +1 -1
  43. package/dist/mcp/agent-variants/previewQa.js +140 -13
  44. package/dist/mcp/agent-variants/previewQa.js.map +1 -1
  45. package/dist/mcp/agent-variants/sourceContext.d.ts +20 -5
  46. package/dist/mcp/agent-variants/sourceContext.d.ts.map +1 -1
  47. package/dist/mcp/agent-variants/sourceContext.js +99 -115
  48. package/dist/mcp/agent-variants/sourceContext.js.map +1 -1
  49. package/dist/mcp/agent-variants/tools.d.ts +7 -0
  50. package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
  51. package/dist/mcp/agent-variants/tools.js +216 -15
  52. package/dist/mcp/agent-variants/tools.js.map +1 -1
  53. package/dist/mcp/agent-variants/variantContext.d.ts +19 -0
  54. package/dist/mcp/agent-variants/variantContext.d.ts.map +1 -0
  55. package/dist/mcp/agent-variants/variantContext.js +355 -0
  56. package/dist/mcp/agent-variants/variantContext.js.map +1 -0
  57. package/dist/mcp/auth/httpOAuthProvider.d.ts +103 -0
  58. package/dist/mcp/auth/httpOAuthProvider.d.ts.map +1 -0
  59. package/dist/mcp/auth/httpOAuthProvider.js +454 -0
  60. package/dist/mcp/auth/httpOAuthProvider.js.map +1 -0
  61. package/dist/mcp/auth/tools.d.ts +2 -0
  62. package/dist/mcp/auth/tools.d.ts.map +1 -1
  63. package/dist/mcp/auth/tools.js +12 -5
  64. package/dist/mcp/auth/tools.js.map +1 -1
  65. package/dist/mcp/httpServer.d.ts +36 -0
  66. package/dist/mcp/httpServer.d.ts.map +1 -0
  67. package/dist/mcp/httpServer.js +307 -0
  68. package/dist/mcp/httpServer.js.map +1 -0
  69. package/dist/mcp/server.d.ts +17 -0
  70. package/dist/mcp/server.d.ts.map +1 -1
  71. package/dist/mcp/server.js +41 -19
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  74. package/dist/proxy-middleware/proxy-config.js +5 -2
  75. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  76. package/dist/routes/agentVariants.d.ts.map +1 -1
  77. package/dist/routes/agentVariants.js +6 -4
  78. package/dist/routes/agentVariants.js.map +1 -1
  79. package/dist/routes/mcp.d.ts.map +1 -1
  80. package/dist/routes/mcp.js +2 -1
  81. package/dist/routes/mcp.js.map +1 -1
  82. package/dist/server.d.ts +9 -0
  83. package/dist/server.d.ts.map +1 -1
  84. package/dist/server.js +13 -5
  85. package/dist/server.js.map +1 -1
  86. package/dist/services/AuthService.d.ts +1 -0
  87. package/dist/services/AuthService.d.ts.map +1 -1
  88. package/dist/services/AuthService.js +11 -1
  89. package/dist/services/AuthService.js.map +1 -1
  90. package/dist/services/BrowserAgentClient.d.ts +54 -0
  91. package/dist/services/BrowserAgentClient.d.ts.map +1 -0
  92. package/dist/services/BrowserAgentClient.js +126 -0
  93. package/dist/services/BrowserAgentClient.js.map +1 -0
  94. package/dist/services/ConfigManager.d.ts +5 -0
  95. package/dist/services/ConfigManager.d.ts.map +1 -1
  96. package/dist/services/ConfigManager.js +25 -3
  97. package/dist/services/ConfigManager.js.map +1 -1
  98. package/dist/services/DevServerRuntimeService.d.ts +119 -0
  99. package/dist/services/DevServerRuntimeService.d.ts.map +1 -0
  100. package/dist/services/DevServerRuntimeService.js +657 -0
  101. package/dist/services/DevServerRuntimeService.js.map +1 -0
  102. package/dist/services/GatewayClient.d.ts +25 -0
  103. package/dist/services/GatewayClient.d.ts.map +1 -1
  104. package/dist/services/GatewayClient.js +70 -11
  105. package/dist/services/GatewayClient.js.map +1 -1
  106. package/dist/services/InlineVariantGenerationService.d.ts +2 -0
  107. package/dist/services/InlineVariantGenerationService.d.ts.map +1 -1
  108. package/dist/services/InlineVariantGenerationService.js +70 -3
  109. package/dist/services/InlineVariantGenerationService.js.map +1 -1
  110. package/dist/services/RequestAuthContext.d.ts +7 -1
  111. package/dist/services/RequestAuthContext.d.ts.map +1 -1
  112. package/dist/services/RequestAuthContext.js +15 -2
  113. package/dist/services/RequestAuthContext.js.map +1 -1
  114. package/dist/services/SessionBridgeService.d.ts +1 -0
  115. package/dist/services/SessionBridgeService.d.ts.map +1 -1
  116. package/dist/services/SessionBridgeService.js +16 -1
  117. package/dist/services/SessionBridgeService.js.map +1 -1
  118. package/dist/services/VariantRunService.d.ts +1 -0
  119. package/dist/services/VariantRunService.d.ts.map +1 -1
  120. package/dist/services/VariantRunService.js +1 -0
  121. package/dist/services/VariantRunService.js.map +1 -1
  122. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  123. package/dist/services/VariantsRuntime.js +1 -0
  124. package/dist/services/VariantsRuntime.js.map +1 -1
  125. package/dist/services/WorktreeManager.d.ts +1 -8
  126. package/dist/services/WorktreeManager.d.ts.map +1 -1
  127. package/dist/services/WorktreeManager.js +1 -28
  128. package/dist/services/WorktreeManager.js.map +1 -1
  129. package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
  130. package/dist/services/createAgentVariantsOrchestrator.js +7 -0
  131. package/dist/services/createAgentVariantsOrchestrator.js.map +1 -1
  132. package/dist/utils/skills/describe-motion-protocol.d.ts +2 -3
  133. package/dist/utils/skills/describe-motion-protocol.d.ts.map +1 -1
  134. package/dist/utils/skills/describe-motion-protocol.js +50 -35
  135. package/dist/utils/skills/describe-motion-protocol.js.map +1 -1
  136. package/dist/utils/skills/shared-variants-protocol.d.ts +1 -1
  137. package/dist/utils/skills/shared-variants-protocol.d.ts.map +1 -1
  138. package/dist/utils/skills/shared-variants-protocol.js +21 -15
  139. package/dist/utils/skills/shared-variants-protocol.js.map +1 -1
  140. package/dist/utils/variantSessionStart.d.ts +3 -0
  141. package/dist/utils/variantSessionStart.d.ts.map +1 -0
  142. package/dist/utils/variantSessionStart.js +7 -0
  143. package/dist/utils/variantSessionStart.js.map +1 -0
  144. package/package.json +2 -1
  145. package/src/ui/dist/assets/{main-WqlDU4Ou.js → main-Cw6Pd8ye.js} +204 -204
  146. package/src/ui/dist/assets/main-DkCj7b2K.css +1 -0
  147. package/src/ui/dist/index.html +2 -2
  148. package/dist/mcp/agent-variants/designContextStore.d.ts +0 -160
  149. package/dist/mcp/agent-variants/designContextStore.d.ts.map +0 -1
  150. package/dist/mcp/agent-variants/designContextStore.js +0 -295
  151. package/dist/mcp/agent-variants/designContextStore.js.map +0 -1
  152. package/dist/mcp/agent-variants/inspirationDesignContext.d.ts +0 -440
  153. package/dist/mcp/agent-variants/inspirationDesignContext.d.ts.map +0 -1
  154. package/dist/mcp/agent-variants/inspirationDesignContext.js +0 -2467
  155. package/dist/mcp/agent-variants/inspirationDesignContext.js.map +0 -1
  156. package/src/ui/dist/assets/main-auZA25j4.css +0 -1
@@ -1,8 +1,23 @@
1
- import { type SourceArtifactInput, type SourceContextArtifact, type SourceContextInput } from './contracts';
1
+ /**
2
+ * Returns true for hostnames that are unambiguously local or private without
3
+ * any DNS lookup. IPv4 / IPv6 literals get the private-range check; hostname
4
+ * strings get the local-domain pattern check.
5
+ */
6
+ export declare const isLocalLiteralHostname: (hostname: string) => boolean;
7
+ /**
8
+ * Synchronous URL validator: enforces HTTP/HTTPS scheme and rejects literal
9
+ * hostnames that match local/loopback/link-local patterns. Used as the SSRF
10
+ * guard for `Brief.visualReferenceUrl` and static-preview QA.
11
+ */
12
+ export declare const validateInspirationUrl: (rawUrl: string) => {
13
+ ok: true;
14
+ url: URL;
15
+ normalized: string;
16
+ } | {
17
+ ok: false;
18
+ reason: string;
19
+ };
2
20
  export declare const normalizeUrl: (rawUrl: string) => string | null;
3
21
  export declare const extractPromptUrls: (prompt: string) => string[];
4
- export declare const resolveSourceUrls: (prompt: string, sourceContext?: SourceContextInput) => string[];
5
- export declare const normalizeSourceArtifacts: (sourceArtifacts: SourceArtifactInput[] | undefined) => SourceArtifactInput[];
6
- export declare const normalizeSourceContextArtifact: (artifact: SourceContextArtifact) => SourceContextArtifact;
7
- export declare const buildSourceContextMarkdown: (artifact: SourceContextArtifact) => string;
22
+ export declare const resolveSourceUrls: (prompt: string, extraUrls?: string[]) => string[];
8
23
  //# sourceMappingURL=sourceContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceContext.d.ts","sourceRoot":"","sources":["../../../src/mcp/agent-variants/sourceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAkCrB,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IA4BtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAAM,EAYxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,gBAAgB,kBAAkB,KACjC,MAAM,EAYR,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,iBAAiB,mBAAmB,EAAE,GAAG,SAAS,KACjD,mBAAmB,EAOrB,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,UAAU,qBAAqB,KAC9B,qBAsCF,CAAC;AAaF,eAAO,MAAM,0BAA0B,GACrC,UAAU,qBAAqB,KAC9B,MA0CF,CAAC"}
1
+ {"version":3,"file":"sourceContext.d.ts","sourceRoot":"","sources":["../../../src/mcp/agent-variants/sourceContext.ts"],"names":[],"mappings":"AAkDA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,OAOzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,KAEZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CA6B9B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IA4BtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAAM,EAYxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,YAAW,MAAM,EAAO,KACvB,MAAM,EAYR,CAAC"}
@@ -1,34 +1,105 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSourceContextMarkdown = exports.normalizeSourceContextArtifact = exports.normalizeSourceArtifacts = exports.resolveSourceUrls = exports.extractPromptUrls = exports.normalizeUrl = void 0;
4
- const errors_1 = require("./errors");
5
- // NOTE: This creates an ES module cycle with inspirationDesignContext (which
6
- // imports `extractPromptUrls` from here). The cycle is safe because
7
- // `isLocalLiteralHostname` is only invoked from inside `normalizeUrl`'s
8
- // function body, not at module-eval time. Without this guard,
9
- // `resolveSourceUrls` would happily pass `http://169.254.169.254/...` or
10
- // `http://localhost:.../` URLs from prompts / `sourceContext.sourceUrls`
11
- // straight into the `source_plan` work item, where the agent's browser
12
- // extraction step would dial them — bypassing the SSRF guard that already
13
- // covers the server-side inspiration fetcher.
14
- const inspirationDesignContext_1 = require("./inspirationDesignContext");
3
+ exports.resolveSourceUrls = exports.extractPromptUrls = exports.normalizeUrl = exports.validateInspirationUrl = exports.isLocalLiteralHostname = void 0;
15
4
  const MAX_PROMPT_URLS = 6;
16
5
  const MAX_SOURCE_URLS = 24;
17
- const MAX_ARTIFACTS = 24;
18
- const MAX_ARTIFACT_CONTENT_LENGTH = 8_000;
19
- const MAX_FIELD_LENGTH = 400;
20
- const MAX_TOTAL_MARKDOWN_LENGTH = 60_000;
21
6
  const TRAILING_URL_PUNCTUATION = /[),.;:!?]+$/;
22
- const EMAIL_PATTERN = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi;
23
- const PHONE_PATTERN = /\b(?:\+?\d{1,3}[ -]?)?(?:\(?\d{2,4}\)?[ -]?)?\d{3,4}[ -]?\d{4}\b/g;
24
- const TOKEN_PATTERN = /\b(?:api[_-]?key|token|secret|password)\s*[:=]\s*[^\s,;]+/gi;
25
- const sanitizeText = (value, maxLength) => {
26
- const redacted = value
27
- .replace(EMAIL_PATTERN, '[redacted-email]')
28
- .replace(PHONE_PATTERN, '[redacted-phone]')
29
- .replace(TOKEN_PATTERN, '[redacted-secret]');
30
- return redacted.replace(/\s+/g, ' ').trim().slice(0, maxLength);
7
+ // --- SSRF guards ------------------------------------------------------------
8
+ // Synchronous literal-host checks for user-supplied URLs (inspiration
9
+ // references, `userContext` url sources, prompt-extracted links). They run
10
+ // before a URL reaches the `source_plan` work item / the agent's browser step,
11
+ // so prompt-injected `http://169.254.169.254/...` or `http://localhost/...`
12
+ // targets are rejected without IO. DNS-resolved checks are intentionally not
13
+ // done here so these stay synchronous.
14
+ const PRIVATE_IPV4_PATTERNS = [
15
+ /^10\./,
16
+ /^127\./,
17
+ /^192\.168\./,
18
+ /^169\.254\./,
19
+ /^172\.(1[6-9]|2\d|3[0-1])\./,
20
+ /^0\./,
21
+ // RFC6598 shared address space (CGNAT): 100.64.0.0/10 -> 100.64..100.127.
22
+ /^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./,
23
+ ];
24
+ // IPv6 private/reserved ranges: ::1 loopback, fe80::/10 link-local,
25
+ // fc00::/7 unique-local (first byte fc OR fd). IPv4-mapped IPv6
26
+ // (`::ffff:x.x.x.x`) is handled separately so the embedded v4 gets the full
27
+ // v4 private-range check.
28
+ const PRIVATE_IPV6_PATTERNS = [/^::1$/i, /^fe80:/i, /^f[cd][0-9a-f]{2}:/i];
29
+ /**
30
+ * Detect an IPv4-mapped IPv6 address (`::ffff:x.x.x.x`) whose embedded IPv4
31
+ * portion falls in the v4 private/reserved ranges.
32
+ */
33
+ const isIpv4MappedPrivateIpv6 = (address) => {
34
+ const match = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i.exec(address);
35
+ if (!match)
36
+ return false;
37
+ return PRIVATE_IPV4_PATTERNS.some((pattern) => pattern.test(match[1]));
31
38
  };
39
+ const LOCAL_HOSTNAME_PATTERNS = [
40
+ /^localhost$/i,
41
+ /\.localhost$/i,
42
+ /^localhost\./i,
43
+ /\.local$/i,
44
+ /\.internal$/i,
45
+ /\.lan$/i,
46
+ /\.intranet$/i,
47
+ ];
48
+ /**
49
+ * Returns true for hostnames that are unambiguously local or private without
50
+ * any DNS lookup. IPv4 / IPv6 literals get the private-range check; hostname
51
+ * strings get the local-domain pattern check.
52
+ */
53
+ const isLocalLiteralHostname = (hostname) => {
54
+ const trimmed = hostname.replace(/^\[|\]$/g, '');
55
+ if (PRIVATE_IPV4_PATTERNS.some((pattern) => pattern.test(trimmed)))
56
+ return true;
57
+ if (PRIVATE_IPV6_PATTERNS.some((pattern) => pattern.test(trimmed)))
58
+ return true;
59
+ if (isIpv4MappedPrivateIpv6(trimmed))
60
+ return true;
61
+ if (LOCAL_HOSTNAME_PATTERNS.some((pattern) => pattern.test(trimmed)))
62
+ return true;
63
+ return false;
64
+ };
65
+ exports.isLocalLiteralHostname = isLocalLiteralHostname;
66
+ /**
67
+ * Synchronous URL validator: enforces HTTP/HTTPS scheme and rejects literal
68
+ * hostnames that match local/loopback/link-local patterns. Used as the SSRF
69
+ * guard for `Brief.visualReferenceUrl` and static-preview QA.
70
+ */
71
+ const validateInspirationUrl = (rawUrl) => {
72
+ const trimmed = rawUrl.trim();
73
+ if (!trimmed) {
74
+ return { ok: false, reason: 'URL is empty.' };
75
+ }
76
+ let parsed;
77
+ try {
78
+ parsed = new URL(trimmed);
79
+ }
80
+ catch {
81
+ return { ok: false, reason: `URL is not valid: ${trimmed}` };
82
+ }
83
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
84
+ return {
85
+ ok: false,
86
+ reason: `Only HTTP and HTTPS inspiration links are supported (got '${parsed.protocol.replace(/:$/, '')}').`,
87
+ };
88
+ }
89
+ const hostname = parsed.hostname.toLowerCase();
90
+ if (!hostname) {
91
+ return { ok: false, reason: 'URL is missing a hostname.' };
92
+ }
93
+ if ((0, exports.isLocalLiteralHostname)(hostname)) {
94
+ return {
95
+ ok: false,
96
+ reason: `URL hostname '${hostname}' resolves to a local or private-network target.`,
97
+ };
98
+ }
99
+ parsed.hash = '';
100
+ return { ok: true, url: parsed, normalized: parsed.toString() };
101
+ };
102
+ exports.validateInspirationUrl = validateInspirationUrl;
32
103
  const normalizeUrl = (rawUrl) => {
33
104
  const trimmed = rawUrl.trim().replace(TRAILING_URL_PUNCTUATION, '');
34
105
  if (!trimmed)
@@ -54,7 +125,7 @@ const normalizeUrl = (rawUrl) => {
54
125
  // because `normalizeUrl` must stay sync; the literal check covers
55
126
  // every cheap-to-stuff target without needing IO.
56
127
  const hostname = parsed.hostname.toLowerCase();
57
- if (!hostname || (0, inspirationDesignContext_1.isLocalLiteralHostname)(hostname)) {
128
+ if (!hostname || (0, exports.isLocalLiteralHostname)(hostname)) {
58
129
  return null;
59
130
  }
60
131
  parsed.hash = '';
@@ -77,8 +148,8 @@ const extractPromptUrls = (prompt) => {
77
148
  return deduped;
78
149
  };
79
150
  exports.extractPromptUrls = extractPromptUrls;
80
- const resolveSourceUrls = (prompt, sourceContext) => {
81
- const merged = [...(0, exports.extractPromptUrls)(prompt), ...(sourceContext?.sourceUrls ?? [])];
151
+ const resolveSourceUrls = (prompt, extraUrls = []) => {
152
+ const merged = [...(0, exports.extractPromptUrls)(prompt), ...extraUrls];
82
153
  const deduped = [];
83
154
  const seen = new Set();
84
155
  for (const candidate of merged) {
@@ -93,91 +164,4 @@ const resolveSourceUrls = (prompt, sourceContext) => {
93
164
  return deduped;
94
165
  };
95
166
  exports.resolveSourceUrls = resolveSourceUrls;
96
- const normalizeSourceArtifacts = (sourceArtifacts) => {
97
- if (!sourceArtifacts || sourceArtifacts.length === 0)
98
- return [];
99
- return sourceArtifacts.slice(0, MAX_ARTIFACTS).map((artifact) => ({
100
- kind: artifact.kind,
101
- label: sanitizeText(artifact.label, 80),
102
- content: sanitizeText(artifact.content, MAX_ARTIFACT_CONTENT_LENGTH),
103
- }));
104
- };
105
- exports.normalizeSourceArtifacts = normalizeSourceArtifacts;
106
- const normalizeSourceContextArtifact = (artifact) => {
107
- const normalizeList = (items) => items.map((item) => sanitizeText(item, MAX_FIELD_LENGTH)).filter(Boolean);
108
- const normalized = {
109
- sourceFindings: normalizeList(artifact.sourceFindings),
110
- sectionInventory: normalizeList(artifact.sectionInventory),
111
- visualObservations: normalizeList(artifact.visualObservations),
112
- sourceRoles: artifact.sourceRoles.map((entry) => ({
113
- url: sanitizeText(entry.url, 2_048),
114
- role: entry.role,
115
- ...(entry.rationale
116
- ? { rationale: sanitizeText(entry.rationale, MAX_FIELD_LENGTH) }
117
- : {}),
118
- })),
119
- qualityBar: normalizeList(artifact.qualityBar),
120
- ...(artifact.screenshotReferences
121
- ? {
122
- screenshotReferences: normalizeList(artifact.screenshotReferences).slice(0, 16),
123
- }
124
- : {}),
125
- ...(artifact.risks
126
- ? { risks: normalizeList(artifact.risks).slice(0, 24) }
127
- : {}),
128
- };
129
- const estimatedSize = JSON.stringify(normalized).length;
130
- if (estimatedSize > MAX_TOTAL_MARKDOWN_LENGTH) {
131
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_TOO_LARGE', `Source context exceeds size limit (${estimatedSize} > ${MAX_TOTAL_MARKDOWN_LENGTH})`);
132
- }
133
- return normalized;
134
- };
135
- exports.normalizeSourceContextArtifact = normalizeSourceContextArtifact;
136
- const redactUrlForDisplay = (url) => {
137
- try {
138
- const parsed = new URL(url);
139
- parsed.search = '';
140
- parsed.hash = '';
141
- return parsed.toString();
142
- }
143
- catch {
144
- return url;
145
- }
146
- };
147
- const buildSourceContextMarkdown = (artifact) => {
148
- const lines = [
149
- '# SOURCE_CONTEXT',
150
- '',
151
- '## Source Findings',
152
- ...artifact.sourceFindings.map((item) => `- ${item}`),
153
- '',
154
- '## Section Inventory',
155
- ...artifact.sectionInventory.map((item) => `- ${item}`),
156
- '',
157
- '## Visual Observations',
158
- ...artifact.visualObservations.map((item) => `- ${item}`),
159
- '',
160
- '## Source Roles',
161
- ...artifact.sourceRoles.map((entry) => entry.rationale
162
- ? `- ${entry.role}: ${redactUrlForDisplay(entry.url)} (${entry.rationale})`
163
- : `- ${entry.role}: ${redactUrlForDisplay(entry.url)}`),
164
- '',
165
- '## Quality Bar',
166
- ...artifact.qualityBar.map((item) => `- ${item}`),
167
- ];
168
- if (artifact.screenshotReferences && artifact.screenshotReferences.length > 0) {
169
- lines.push('', '## Screenshot References');
170
- lines.push(...artifact.screenshotReferences.map((item) => `- ${item}`));
171
- }
172
- if (artifact.risks && artifact.risks.length > 0) {
173
- lines.push('', '## Risks');
174
- lines.push(...artifact.risks.map((item) => `- ${item}`));
175
- }
176
- const markdown = lines.join('\n').trim();
177
- if (markdown.length > MAX_TOTAL_MARKDOWN_LENGTH) {
178
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_TOO_LARGE', `SOURCE_CONTEXT.md exceeds size limit (${markdown.length} > ${MAX_TOTAL_MARKDOWN_LENGTH})`);
179
- }
180
- return `${markdown}\n`;
181
- };
182
- exports.buildSourceContextMarkdown = buildSourceContextMarkdown;
183
167
  //# sourceMappingURL=sourceContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceContext.js","sourceRoot":"","sources":["../../../src/mcp/agent-variants/sourceContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceContext.js","sourceRoot":"","sources":["../../../src/mcp/agent-variants/sourceContext.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { slugifyPrompt } from './generatedDestination';
5
5
  export { slugifyPrompt };
6
6
  import type { AgentVariantsOrchestrator } from './WorktreeOrchestrator';
7
7
  import type { IntegrationsClient } from '../../services/IntegrationsClient';
8
+ import { BrowserAgentClient } from '../../services/BrowserAgentClient';
8
9
  /**
9
10
  * Coerce `output` to a structured value when an agent (incorrectly) sends a
10
11
  * stringified JSON. The MCP schema accepts `z.unknown()` so the call doesn't
@@ -51,6 +52,12 @@ export interface ToolDeps {
51
52
  homedir?: () => string;
52
53
  /** Optional authenticated integration client for source-context enrichment. */
53
54
  integrationsClient?: Pick<IntegrationsClient, 'fetchPinterest'>;
55
+ /**
56
+ * Browser-agent client for `capture_design_evidence`. Calls the proxy to
57
+ * render reference URLs server-side (provider keys never reach the CLI).
58
+ * Defaults to a fresh `BrowserAgentClient`; injectable for tests.
59
+ */
60
+ browserAgentClient?: Pick<BrowserAgentClient, 'captureDesignEvidence'>;
54
61
  }
55
62
  /**
56
63
  * Telemetry surface used by the variants tools. All methods optional so unit
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/agent-variants/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/agent-variants/tools.ts"],"names":[],"mappings":"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"}