rivet-design 0.22.0 → 0.23.1

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 (253) hide show
  1. package/bin/rivet.js +6 -0
  2. package/dist/agent-variants/SessionStore.d.ts +2 -21
  3. package/dist/agent-variants/SessionStore.d.ts.map +1 -1
  4. package/dist/agent-variants/SessionStore.js +15 -279
  5. package/dist/agent-variants/SessionStore.js.map +1 -1
  6. package/dist/agent-variants/WorktreeOrchestrator.d.ts +0 -3
  7. package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  8. package/dist/agent-variants/WorktreeOrchestrator.js +1 -62
  9. package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -1
  10. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
  11. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js +0 -12
  12. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
  13. package/dist/agent-variants/contracts.d.ts +1205 -2732
  14. package/dist/agent-variants/contracts.d.ts.map +1 -1
  15. package/dist/agent-variants/contracts.js +2 -84
  16. package/dist/agent-variants/contracts.js.map +1 -1
  17. package/dist/agent-variants/directionBriefs.d.ts +7 -0
  18. package/dist/agent-variants/directionBriefs.d.ts.map +1 -0
  19. package/dist/agent-variants/directionBriefs.js +51 -0
  20. package/dist/agent-variants/directionBriefs.js.map +1 -0
  21. package/dist/agent-variants/index.d.ts +1 -1
  22. package/dist/agent-variants/index.d.ts.map +1 -1
  23. package/dist/agent-variants/runPlan.d.ts +0 -1
  24. package/dist/agent-variants/runPlan.d.ts.map +1 -1
  25. package/dist/agent-variants/runPlan.js +0 -4
  26. package/dist/agent-variants/runPlan.js.map +1 -1
  27. package/dist/agent-variants/sourceContext.d.ts +0 -2
  28. package/dist/agent-variants/sourceContext.d.ts.map +1 -1
  29. package/dist/agent-variants/sourceContext.js +1 -35
  30. package/dist/agent-variants/sourceContext.js.map +1 -1
  31. package/dist/agent-variants/variantsTelemetry.d.ts +0 -3
  32. package/dist/agent-variants/variantsTelemetry.d.ts.map +1 -1
  33. package/dist/agent-variants/variantsTelemetry.js.map +1 -1
  34. package/dist/agent-variants/workItemInput.d.ts +662 -662
  35. package/dist/cli/commands/context.d.ts +3 -1
  36. package/dist/cli/commands/context.d.ts.map +1 -1
  37. package/dist/cli/commands/context.js +38 -1
  38. package/dist/cli/commands/context.js.map +1 -1
  39. package/dist/cli/commands/contextRequest.d.ts +1 -0
  40. package/dist/cli/commands/contextRequest.d.ts.map +1 -1
  41. package/dist/cli/commands/contextRequest.js +65 -5
  42. package/dist/cli/commands/contextRequest.js.map +1 -1
  43. package/dist/cli/commands/guidanceReferences.d.ts +1 -0
  44. package/dist/cli/commands/guidanceReferences.d.ts.map +1 -1
  45. package/dist/cli/commands/guidanceReferences.js +5 -4
  46. package/dist/cli/commands/guidanceReferences.js.map +1 -1
  47. package/dist/cli/commands/guidanceVerifierPackage.d.ts +9 -0
  48. package/dist/cli/commands/guidanceVerifierPackage.d.ts.map +1 -0
  49. package/dist/cli/commands/guidanceVerifierPackage.js +41 -0
  50. package/dist/cli/commands/guidanceVerifierPackage.js.map +1 -0
  51. package/dist/cli/commands/mcpServe.d.ts +1 -0
  52. package/dist/cli/commands/mcpServe.d.ts.map +1 -1
  53. package/dist/cli/commands/mcpServe.js +457 -326
  54. package/dist/cli/commands/mcpServe.js.map +1 -1
  55. package/dist/cli/commands/variants.js +2 -2
  56. package/dist/cli/commands/variants.js.map +1 -1
  57. package/dist/cli/handoffStore.d.ts +0 -1
  58. package/dist/cli/handoffStore.d.ts.map +1 -1
  59. package/dist/cli/handoffStore.js +1 -11
  60. package/dist/cli/handoffStore.js.map +1 -1
  61. package/dist/cli/router.d.ts +3 -1
  62. package/dist/cli/router.d.ts.map +1 -1
  63. package/dist/cli/router.js +4 -3
  64. package/dist/cli/router.js.map +1 -1
  65. package/dist/config/flags.d.ts +0 -3
  66. package/dist/config/flags.d.ts.map +1 -1
  67. package/dist/config/flags.js +0 -1
  68. package/dist/config/flags.js.map +1 -1
  69. package/dist/config/proxy.d.ts +0 -2
  70. package/dist/config/proxy.d.ts.map +1 -1
  71. package/dist/config/proxy.js +1 -10
  72. package/dist/config/proxy.js.map +1 -1
  73. package/dist/hosts/workerDefaults.d.ts +0 -1
  74. package/dist/hosts/workerDefaults.d.ts.map +1 -1
  75. package/dist/hosts/workerDefaults.js +1 -2
  76. package/dist/hosts/workerDefaults.js.map +1 -1
  77. package/dist/index-core.d.ts +1 -2
  78. package/dist/index-core.d.ts.map +1 -1
  79. package/dist/index-core.js +1 -3
  80. package/dist/index-core.js.map +1 -1
  81. package/dist/mcp/changeBatchClassification.d.ts +1 -11
  82. package/dist/mcp/changeBatchClassification.d.ts.map +1 -1
  83. package/dist/mcp/changeBatchClassification.js +0 -38
  84. package/dist/mcp/changeBatchClassification.js.map +1 -1
  85. package/dist/routes/git.d.ts +0 -1
  86. package/dist/routes/git.d.ts.map +1 -1
  87. package/dist/routes/git.js +2 -7
  88. package/dist/routes/git.js.map +1 -1
  89. package/dist/routes/library/guidance.d.ts.map +1 -1
  90. package/dist/routes/library/guidance.js +7 -0
  91. package/dist/routes/library/guidance.js.map +1 -1
  92. package/dist/server.d.ts +0 -1
  93. package/dist/server.d.ts.map +1 -1
  94. package/dist/server.js +2 -8
  95. package/dist/server.js.map +1 -1
  96. package/dist/services/AuthService.d.ts +6 -12
  97. package/dist/services/AuthService.d.ts.map +1 -1
  98. package/dist/services/AuthService.js +1 -116
  99. package/dist/services/AuthService.js.map +1 -1
  100. package/dist/services/CommitMessageGenerator.d.ts +1 -5
  101. package/dist/services/CommitMessageGenerator.d.ts.map +1 -1
  102. package/dist/services/CommitMessageGenerator.js +9 -38
  103. package/dist/services/CommitMessageGenerator.js.map +1 -1
  104. package/dist/services/GuidanceVerifierRunner.d.ts +15 -0
  105. package/dist/services/GuidanceVerifierRunner.d.ts.map +1 -0
  106. package/dist/services/GuidanceVerifierRunner.js +373 -0
  107. package/dist/services/GuidanceVerifierRunner.js.map +1 -0
  108. package/dist/services/HubDiscovery.d.ts +2 -2
  109. package/dist/services/IntegrationsClient.d.ts +6 -6
  110. package/dist/services/LocalGitService.d.ts +0 -3
  111. package/dist/services/LocalGitService.d.ts.map +1 -1
  112. package/dist/services/LocalGitService.js +0 -41
  113. package/dist/services/LocalGitService.js.map +1 -1
  114. package/dist/services/MCPOnboardingTelemetry.d.ts +0 -2
  115. package/dist/services/MCPOnboardingTelemetry.d.ts.map +1 -1
  116. package/dist/services/MCPOnboardingTelemetry.js +1 -78
  117. package/dist/services/MCPOnboardingTelemetry.js.map +1 -1
  118. package/dist/services/OperatingSystemServices.d.ts.map +1 -1
  119. package/dist/services/OperatingSystemServices.js +12 -5
  120. package/dist/services/OperatingSystemServices.js.map +1 -1
  121. package/dist/services/PRTitleGenerator.d.ts +2 -8
  122. package/dist/services/PRTitleGenerator.d.ts.map +1 -1
  123. package/dist/services/PRTitleGenerator.js +12 -74
  124. package/dist/services/PRTitleGenerator.js.map +1 -1
  125. package/dist/services/ProjectRegistry.d.ts +2 -2
  126. package/dist/services/SessionService.d.ts +1 -4
  127. package/dist/services/SessionService.d.ts.map +1 -1
  128. package/dist/services/SessionService.js +5 -16
  129. package/dist/services/SessionService.js.map +1 -1
  130. package/dist/services/TelemetryService.d.ts +1 -9
  131. package/dist/services/TelemetryService.d.ts.map +1 -1
  132. package/dist/services/TelemetryService.js +0 -28
  133. package/dist/services/TelemetryService.js.map +1 -1
  134. package/dist/services/VariantGenerationService.d.ts +1 -9
  135. package/dist/services/VariantGenerationService.d.ts.map +1 -1
  136. package/dist/services/VariantGenerationService.js +16 -140
  137. package/dist/services/VariantGenerationService.js.map +1 -1
  138. package/dist/services/VariantRunService.d.ts +0 -6
  139. package/dist/services/VariantRunService.d.ts.map +1 -1
  140. package/dist/services/VariantRunService.js +1 -28
  141. package/dist/services/VariantRunService.js.map +1 -1
  142. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  143. package/dist/services/VariantsRuntime.js +0 -1
  144. package/dist/services/VariantsRuntime.js.map +1 -1
  145. package/dist/services/accessTokenRefresh.d.ts +0 -3
  146. package/dist/services/accessTokenRefresh.d.ts.map +1 -1
  147. package/dist/services/accessTokenRefresh.js +1 -33
  148. package/dist/services/accessTokenRefresh.js.map +1 -1
  149. package/dist/services/guidanceDelivery.d.ts +0 -5
  150. package/dist/services/guidanceDelivery.d.ts.map +1 -1
  151. package/dist/services/guidanceDelivery.js +1 -20
  152. package/dist/services/guidanceDelivery.js.map +1 -1
  153. package/dist/services/guidanceReferences.d.ts.map +1 -1
  154. package/dist/services/guidanceReferences.js +2 -76
  155. package/dist/services/guidanceReferences.js.map +1 -1
  156. package/dist/services/profiles/DesignProfiles.d.ts +61 -46
  157. package/dist/services/profiles/DesignProfiles.d.ts.map +1 -1
  158. package/dist/services/profiles/DesignProfiles.js +71 -17
  159. package/dist/services/profiles/DesignProfiles.js.map +1 -1
  160. package/dist/services/profiles/ProfileImports.d.ts +1 -1
  161. package/dist/services/profiles/ProfilePlanning.d.ts +9 -9
  162. package/dist/services/profiles/ReferenceReader.d.ts +5 -5
  163. package/dist/services/profiles/profileContext.d.ts +2 -2
  164. package/dist/services/retainedTextFiles.d.ts +8 -0
  165. package/dist/services/retainedTextFiles.d.ts.map +1 -0
  166. package/dist/services/retainedTextFiles.js +95 -0
  167. package/dist/services/retainedTextFiles.js.map +1 -0
  168. package/dist/services/staticProjectTarget.d.ts +0 -1
  169. package/dist/services/staticProjectTarget.d.ts.map +1 -1
  170. package/dist/services/staticProjectTarget.js +1 -5
  171. package/dist/services/staticProjectTarget.js.map +1 -1
  172. package/dist/services/templates/designCatalog.d.ts +0 -4
  173. package/dist/services/templates/designCatalog.d.ts.map +1 -1
  174. package/dist/services/templates/designCatalog.js +1 -27
  175. package/dist/services/templates/designCatalog.js.map +1 -1
  176. package/dist/storage/profiles/ProfilePlans.d.ts +33 -33
  177. package/dist/storage/profiles/ProfileRecords.d.ts +60 -11
  178. package/dist/storage/profiles/ProfileRecords.d.ts.map +1 -1
  179. package/dist/storage/profiles/ProfileRecords.js +74 -17
  180. package/dist/storage/profiles/ProfileRecords.js.map +1 -1
  181. package/dist/storage/profiles/guidanceVerifier.d.ts +3 -0
  182. package/dist/storage/profiles/guidanceVerifier.d.ts.map +1 -0
  183. package/dist/storage/profiles/guidanceVerifier.js +30 -0
  184. package/dist/storage/profiles/guidanceVerifier.js.map +1 -0
  185. package/dist/storage/profiles/migrations.d.ts +2 -2
  186. package/dist/storage/profiles/migrations.d.ts.map +1 -1
  187. package/dist/storage/profiles/migrations.js +3 -0
  188. package/dist/storage/profiles/migrations.js.map +1 -1
  189. package/dist/storage/profiles/planSchema.d.ts +9 -9
  190. package/dist/storage/profiles/schema.d.ts +35 -8
  191. package/dist/storage/profiles/schema.d.ts.map +1 -1
  192. package/dist/storage/profiles/schema.js +1 -0
  193. package/dist/storage/profiles/schema.js.map +1 -1
  194. package/dist/types/change-types.d.ts +0 -25
  195. package/dist/types/change-types.d.ts.map +1 -1
  196. package/dist/types/cosmos-profile.d.ts +18 -18
  197. package/dist/types/cosmos.d.ts +30 -30
  198. package/dist/types/design-profile.d.ts +33 -33
  199. package/dist/types/guidance-references.d.ts +22 -6
  200. package/dist/types/guidance-references.d.ts.map +1 -1
  201. package/dist/types/guidance-references.js +44 -30
  202. package/dist/types/guidance-references.js.map +1 -1
  203. package/dist/types/guidance-verifier.d.ts +265 -0
  204. package/dist/types/guidance-verifier.d.ts.map +1 -0
  205. package/dist/types/guidance-verifier.js +71 -0
  206. package/dist/types/guidance-verifier.js.map +1 -0
  207. package/dist/types/guidance.d.ts +508 -93
  208. package/dist/types/guidance.d.ts.map +1 -1
  209. package/dist/types/guidance.js +13 -2
  210. package/dist/types/guidance.js.map +1 -1
  211. package/dist/types/reference-connectors.d.ts +30 -30
  212. package/dist/types/reference-onboarding.d.ts +111 -111
  213. package/dist/types/reference-pages.d.ts +10 -10
  214. package/dist/types/variant-reference.d.ts +8 -8
  215. package/dist/types/x-bookmarks.d.ts +10 -10
  216. package/dist/utils/skills/cli-guidance.d.ts +1 -1
  217. package/dist/utils/skills/cli-guidance.d.ts.map +1 -1
  218. package/dist/utils/skills/cli-guidance.js +19 -6
  219. package/dist/utils/skills/cli-guidance.js.map +1 -1
  220. package/dist/utils/skills/codex-skill.d.ts +1 -1
  221. package/dist/utils/skills/codex-skill.d.ts.map +1 -1
  222. package/dist/utils/skills/codex-skill.js +1 -1
  223. package/package.json +2 -2
  224. package/src/ui/dist/assets/{LibraryEntry-CjxmVfhv.js → LibraryEntry-BUwOgHmJ.js} +8 -8
  225. package/src/ui/dist/assets/main-CXP-A-qy.css +1 -0
  226. package/src/ui/dist/assets/main-DQKavyjz.js +435 -0
  227. package/src/ui/dist/index.html +2 -2
  228. package/dist/agent-variants/directionAuthoring.d.ts +0 -27
  229. package/dist/agent-variants/directionAuthoring.d.ts.map +0 -1
  230. package/dist/agent-variants/directionAuthoring.js +0 -380
  231. package/dist/agent-variants/directionAuthoring.js.map +0 -1
  232. package/dist/prompts/gitPrompts.d.ts +0 -4
  233. package/dist/prompts/gitPrompts.d.ts.map +0 -1
  234. package/dist/prompts/gitPrompts.js +0 -61
  235. package/dist/prompts/gitPrompts.js.map +0 -1
  236. package/dist/services/ComponentSearchService.d.ts +0 -13
  237. package/dist/services/ComponentSearchService.d.ts.map +0 -1
  238. package/dist/services/ComponentSearchService.js +0 -167
  239. package/dist/services/ComponentSearchService.js.map +0 -1
  240. package/dist/services/GatewayClient.d.ts +0 -44
  241. package/dist/services/GatewayClient.d.ts.map +0 -1
  242. package/dist/services/GatewayClient.js +0 -204
  243. package/dist/services/GatewayClient.js.map +0 -1
  244. package/dist/types/style-manipulation-types.d.ts +0 -63
  245. package/dist/types/style-manipulation-types.d.ts.map +0 -1
  246. package/dist/types/style-manipulation-types.js +0 -68
  247. package/dist/types/style-manipulation-types.js.map +0 -1
  248. package/dist/types/token-types.d.ts +0 -24
  249. package/dist/types/token-types.d.ts.map +0 -1
  250. package/dist/types/token-types.js +0 -3
  251. package/dist/types/token-types.js.map +0 -1
  252. package/src/ui/dist/assets/main-CdSzrhWD.js +0 -435
  253. package/src/ui/dist/assets/main-DVb3ws41.css +0 -1
@@ -7,8 +7,8 @@
7
7
  <link rel="icon" type="image/x-icon" href="/favicon.ico" />
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
9
  <title>Rivet - The visual editor for design</title>
10
- <script type="module" crossorigin src="/assets/main-CdSzrhWD.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/main-DVb3ws41.css">
10
+ <script type="module" crossorigin src="/assets/main-DQKavyjz.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/main-CXP-A-qy.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
@@ -1,27 +0,0 @@
1
- import type { GatewayClient, GatewayImageContent } from '../services/GatewayClient';
2
- import type { VariantDirectionBrief } from '../types/change-request-types';
3
- import type { GuidanceDocument } from '../types/guidance';
4
- export type DirectionAuthoringInput = {
5
- guidance?: GuidanceDocument[];
6
- prompt: string;
7
- count: number;
8
- displayLocale: string;
9
- images?: GatewayImageContent[];
10
- referenceNotes?: string[];
11
- };
12
- export type AuthoredDirections = {
13
- briefs: VariantDirectionBrief[];
14
- runLabel: string;
15
- source: 'gateway' | 'claude_runtime' | 'fallback';
16
- durationMs: number;
17
- };
18
- export declare const fallbackRunLabel: (prompt: string) => string;
19
- export declare const fallbackDirections: (prompt: string, count: number) => {
20
- briefs: VariantDirectionBrief[];
21
- runLabel: string;
22
- };
23
- export declare const authorDirections: (gateway: Pick<GatewayClient, "sendToolUse">, request: DirectionAuthoringInput, options?: {
24
- timeoutMs?: number;
25
- claudeCommand?: string;
26
- }) => Promise<AuthoredDirections>;
27
- //# sourceMappingURL=directionAuthoring.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directionAuthoring.d.ts","sourceRoot":"","sources":["../../src/agent-variants/directionAuthoring.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA8B1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA6BF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAOjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ;IAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAcpD,CAAC;AA+QH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAC3C,SAAS,uBAAuB,EAChC,UAAU;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,KACvD,OAAO,CAAC,kBAAkB,CA+E5B,CAAC"}
@@ -1,380 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authorDirections = exports.fallbackDirections = exports.fallbackRunLabel = void 0;
4
- const generationCapacity_1 = require("./generationCapacity");
5
- const workerRuntime_1 = require("./workerRuntime");
6
- const child_process_1 = require("child_process");
7
- const logger_1 = require("../utils/logger");
8
- const guidancePrompt_1 = require("./guidancePrompt");
9
- const guidanceDelivery_1 = require("../services/guidanceDelivery");
10
- const errorMessage_1 = require("../utils/errorMessage");
11
- class DirectionInputDeliveryError extends Error {
12
- constructor(error) {
13
- super(`Direction planner input delivery failed: ${error.message}`);
14
- this.name = 'DirectionInputDeliveryError';
15
- }
16
- }
17
- const log = (0, logger_1.createLogger)('DirectionAuthoring');
18
- const DIRECTION_AUTHOR_MODEL = 'claude-haiku-4-5-20251001';
19
- const DIRECTION_AUTHOR_MAX_TOKENS = 1200;
20
- const DIRECTION_AUTHOR_TIMEOUT_MS = 25_000;
21
- const LABEL_MAX_LENGTH = 48;
22
- const BODY_MAX_LENGTH = 200;
23
- const NOTES_MAX_LENGTH = 1200;
24
- const RUN_LABEL_MAX_LENGTH = 40;
25
- const FALLBACK_ARCHETYPES = [
26
- {
27
- label: 'Faithful',
28
- body: 'Faithful recreation of the reference design language',
29
- },
30
- {
31
- label: 'Expressive',
32
- body: 'Amplify the boldest visual ideas in the request',
33
- },
34
- {
35
- label: 'Structural Remix',
36
- body: 'Same design system, different layout architecture',
37
- },
38
- { label: 'Editorial', body: 'Typography-led, editorial interpretation' },
39
- { label: 'Minimal', body: 'Pared-back, spacious, minimal interpretation' },
40
- ];
41
- const FALLBACK_NOTES = 'Derive every design decision directly from the visual references and the ' +
42
- 'request: match palette, typography, spacing, shapes, and energy. Ship every ' +
43
- 'section and interaction the request names — never a stripped-down subset. ' +
44
- 'When the request names motion, design and IMPLEMENT a concrete motion spec ' +
45
- '(trigger, timing, easing, choreography) grounded in what the references show.';
46
- const clip = (value, max) => value.length <= max ? value : `${value.slice(0, max - 1).trimEnd()}…`;
47
- const fallbackRunLabel = (prompt) => {
48
- const words = prompt
49
- .split(/\s+/)
50
- .map((word) => word.replace(/[^\p{L}\p{N}-]/gu, ''))
51
- .filter((word) => word.length > 2);
52
- const label = words.slice(0, 3).join(' ');
53
- return clip(label || 'Design directions', RUN_LABEL_MAX_LENGTH);
54
- };
55
- exports.fallbackRunLabel = fallbackRunLabel;
56
- const fallbackDirections = (prompt, count) => ({
57
- briefs: Array.from({ length: count }, (_, index) => {
58
- const archetype = FALLBACK_ARCHETYPES[index % FALLBACK_ARCHETYPES.length];
59
- const suffix = index >= FALLBACK_ARCHETYPES.length
60
- ? ` ${Math.floor(index / FALLBACK_ARCHETYPES.length) + 1}`
61
- : '';
62
- return {
63
- label: `${archetype.label}${suffix}`,
64
- body: archetype.body,
65
- notes: FALLBACK_NOTES,
66
- };
67
- }),
68
- runLabel: (0, exports.fallbackRunLabel)(prompt),
69
- });
70
- exports.fallbackDirections = fallbackDirections;
71
- const AUTHOR_DIRECTIONS_TOOL = {
72
- name: 'author_directions',
73
- description: 'Record the design directions for this variants run. Every direction ' +
74
- 'must name a materially different layout or interaction architecture — ' +
75
- 'never a recolor or a near-duplicate of another direction.',
76
- strict: true,
77
- input_schema: {
78
- type: 'object',
79
- additionalProperties: false,
80
- required: ['runLabel', 'directions'],
81
- properties: {
82
- runLabel: {
83
- type: 'string',
84
- description: '1–3 word summary of the whole batch',
85
- },
86
- directions: {
87
- type: 'array',
88
- items: {
89
- type: 'object',
90
- additionalProperties: false,
91
- required: ['label', 'body', 'notes'],
92
- properties: {
93
- label: {
94
- type: 'string',
95
- description: 'Distinct 1–4 word direction title',
96
- },
97
- body: {
98
- type: 'string',
99
- description: 'At most 12 words naming the layout/interaction direction',
100
- },
101
- notes: {
102
- type: 'string',
103
- description: 'Steering notes for the implementer. START with "Sections: ' +
104
- '<5-7 concrete sections this direction ships>." Then concrete ' +
105
- 'observations from the references (palette hexes, type, ' +
106
- 'spacing, shapes, energy). When the request involves motion ' +
107
- 'or interaction, the notes MUST include a concrete motion ' +
108
- 'spec — trigger (scroll, hover, click), timing, easing, ' +
109
- 'choreography — that the page implements visibly. For ' +
110
- 'navigation/header motion, scroll-linked state change ' +
111
- '(condense, invert, hide-reveal) is the default expectation ' +
112
- 'unless the request names another trigger. The implementer ' +
113
- 'views the references natively — steer interpretation, do ' +
114
- 'not replace looking.',
115
- },
116
- },
117
- },
118
- },
119
- },
120
- },
121
- };
122
- const buildAuthorPrompt = (input) => {
123
- const lines = [
124
- `Design request:`,
125
- input.prompt.trim(),
126
- '',
127
- `Author exactly ${input.count} genuinely distinct, comparison-ready design directions for this request.`,
128
- `Write runLabel, label, and body naturally in ${input.displayLocale}.`,
129
- 'Keep notes in the language that most clearly guides the implementer, and preserve code identifiers verbatim.',
130
- ];
131
- if (input.guidance?.length)
132
- lines.push('', (0, guidancePrompt_1.renderGuidance)(input.guidance));
133
- if (input.images?.length) {
134
- lines.push('', 'The attached images are the primary design signal (uploaded references, rendered page screenshots, or video keyframes in order). Ground every direction in what they actually show.');
135
- }
136
- if (input.referenceNotes?.length) {
137
- lines.push('', 'Reference evidence:', ...input.referenceNotes.map((note) => `- ${note}`));
138
- }
139
- lines.push('', 'Each direction must preserve the full user deliverable (for a landing page: complete page scope, not just a hero). Call the author_directions tool once.');
140
- return lines.join('\n');
141
- };
142
- const sanitizeDirections = (raw, input) => {
143
- if (!Array.isArray(raw.directions))
144
- return undefined;
145
- const seenLabels = new Set();
146
- const briefs = [];
147
- for (const entry of raw.directions) {
148
- if (!entry || typeof entry !== 'object')
149
- continue;
150
- const candidate = entry;
151
- const label = typeof candidate.label === 'string' ? candidate.label.trim() : '';
152
- const body = typeof candidate.body === 'string' ? candidate.body.trim() : '';
153
- const notes = typeof candidate.notes === 'string' ? candidate.notes.trim() : '';
154
- if (!label || !body)
155
- continue;
156
- const key = label.toLowerCase();
157
- if (seenLabels.has(key))
158
- continue;
159
- seenLabels.add(key);
160
- briefs.push({
161
- label: clip(label, LABEL_MAX_LENGTH),
162
- body: clip(body, BODY_MAX_LENGTH),
163
- ...(notes ? { notes: clip(notes, NOTES_MAX_LENGTH) } : {}),
164
- });
165
- if (briefs.length === input.count)
166
- break;
167
- }
168
- if (briefs.length === 0)
169
- return undefined;
170
- const fallback = (0, exports.fallbackDirections)(input.prompt, input.count);
171
- for (const spare of fallback.briefs) {
172
- if (briefs.length === input.count)
173
- break;
174
- if (seenLabels.has(spare.label.toLowerCase()))
175
- continue;
176
- briefs.push(spare);
177
- }
178
- const runLabel = typeof raw.runLabel === 'string' && raw.runLabel.trim()
179
- ? clip(raw.runLabel.trim(), RUN_LABEL_MAX_LENGTH)
180
- : fallback.runLabel;
181
- return { briefs: briefs.slice(0, input.count), runLabel };
182
- };
183
- const CLAUDE_AUTHOR_MODEL = 'claude-sonnet-5';
184
- const CLAUDE_AUTHOR_TIMEOUT_MS = 25_000;
185
- const extractJsonObject = (text) => {
186
- const start = text.indexOf('{');
187
- if (start === -1)
188
- return undefined;
189
- for (let end = text.length; end > start; end -= 1) {
190
- const candidate = text.slice(start, end);
191
- if (!candidate.trimEnd().endsWith('}'))
192
- continue;
193
- try {
194
- return JSON.parse(candidate);
195
- }
196
- catch { }
197
- }
198
- return undefined;
199
- };
200
- const authorViaClaudeRuntime = async (input, options) => {
201
- const command = options?.command ?? process.env.RIVET_EXECUTOR_COMMAND ?? 'claude';
202
- const prompt = [
203
- input.images?.length
204
- ? 'The attached images are the primary design signal (uploaded references, rendered page screenshots, or video keyframes in order).\n'
205
- : '',
206
- buildAuthorPrompt(input),
207
- '',
208
- 'Respond with ONLY a compact single-line JSON object of the shape',
209
- '{"runLabel": "1-3 word batch summary", "directions": [{"label": "1-4 word title", "body": "<=12 word direction", "notes": "<=350 chars. START with: Sections: <5-7 concrete sections this direction ships>. Then concrete steering (palette hexes, type, spacing, energy). When the request names motion or interaction, notes MUST carry a terse motion spec — trigger (scroll/hover/click), timing, easing — the page implements visibly; for nav/header motion default to scroll-linked state change (condense/invert/hide-reveal)."}]}',
210
- `with exactly ${input.count} directions. Speed matters: no deliberation, no tool use, no prose, no markdown fences.`,
211
- ]
212
- .filter(Boolean)
213
- .join('\n');
214
- const userMessage = JSON.stringify({
215
- type: 'user',
216
- message: {
217
- role: 'user',
218
- content: [
219
- ...(input.images ?? []).map((image) => ({
220
- type: 'image',
221
- source: {
222
- type: 'base64',
223
- media_type: image.mediaType,
224
- data: image.data,
225
- },
226
- })),
227
- { type: 'text', text: prompt },
228
- ],
229
- },
230
- });
231
- const startedAt = Date.now();
232
- const { stdout, stderr, error, inputError } = await new Promise((resolve) => {
233
- let inputError;
234
- const child = (0, child_process_1.execFile)(command, [
235
- '--print',
236
- '--input-format',
237
- 'stream-json',
238
- '--output-format',
239
- 'stream-json',
240
- '--verbose',
241
- '--model',
242
- CLAUDE_AUTHOR_MODEL,
243
- '--effort',
244
- 'low',
245
- '--dangerously-skip-permissions',
246
- '--exclude-dynamic-system-prompt-sections',
247
- ], {
248
- timeout: options?.timeoutMs ?? CLAUDE_AUTHOR_TIMEOUT_MS,
249
- maxBuffer: 16 * 1024 * 1024,
250
- }, (error, stdout, stderr) => resolve({ error, stdout, stderr, inputError }));
251
- child.stdin?.on('error', (error) => {
252
- inputError = error;
253
- });
254
- child.stdin?.write(`${userMessage}\n`);
255
- child.stdin?.end();
256
- });
257
- let resultText = '';
258
- let childDurationMs;
259
- for (const line of stdout.split('\n')) {
260
- const trimmed = line.trim();
261
- if (!trimmed.startsWith('{'))
262
- continue;
263
- const result = (0, workerRuntime_1.parseClaudeWorkerResult)(trimmed);
264
- if (result.isFailed) {
265
- const failure = Object.assign(new Error(result.resultText ?? 'Direction authoring failed'), {
266
- status: result.apiErrorStatus,
267
- error: result.error,
268
- });
269
- const capacityError = (0, generationCapacity_1.getGenerationCapacityError)(failure);
270
- if (capacityError)
271
- throw capacityError;
272
- if (inputError)
273
- throw new DirectionInputDeliveryError(inputError);
274
- throw failure;
275
- }
276
- try {
277
- const event = JSON.parse(trimmed);
278
- if (event.type === 'result') {
279
- resultText = typeof event.result === 'string' ? event.result : '';
280
- childDurationMs = event.duration_ms;
281
- }
282
- }
283
- catch { }
284
- }
285
- if (error) {
286
- const capacityError = (0, generationCapacity_1.getGenerationCapacityError)(error) ?? (0, generationCapacity_1.getGenerationCapacityError)(stderr);
287
- if (capacityError)
288
- throw capacityError;
289
- }
290
- if (inputError) {
291
- throw new DirectionInputDeliveryError(inputError);
292
- }
293
- if (error) {
294
- throw new Error(`${error.message}${stderr ? ` — stderr: ${stderr.slice(-400)}` : ''}`);
295
- }
296
- log.info(`claude runtime authored directions in ${Date.now() - startedAt}ms (child duration_ms=${String(childDurationMs)})`);
297
- const parsed = extractJsonObject(resultText || stdout);
298
- if (parsed && typeof parsed === 'object') {
299
- return parsed;
300
- }
301
- return undefined;
302
- };
303
- const authorDirections = async (gateway, request, options) => {
304
- const input = {
305
- ...request,
306
- images: await (0, guidanceDelivery_1.guidancePlannerImages)({
307
- guidance: request.guidance ?? [],
308
- images: request.images,
309
- }),
310
- };
311
- const startedAt = Date.now();
312
- let gatewayFailure;
313
- let runtimeFailure;
314
- try {
315
- const raw = await gateway.sendToolUse({
316
- model: DIRECTION_AUTHOR_MODEL,
317
- maxTokens: DIRECTION_AUTHOR_MAX_TOKENS,
318
- temperature: 1,
319
- system: 'You are the direction planner for Rivet, which builds N parallel ' +
320
- 'design variants of a web page. You author short, materially ' +
321
- 'different direction briefs; separate implementers build each one ' +
322
- 'with the same reference media you see.',
323
- prompt: buildAuthorPrompt(input),
324
- tool: AUTHOR_DIRECTIONS_TOOL,
325
- ...(input.images?.length ? { images: input.images } : {}),
326
- timeoutMs: options?.timeoutMs ?? DIRECTION_AUTHOR_TIMEOUT_MS,
327
- });
328
- const sanitized = sanitizeDirections(raw, input);
329
- if (sanitized) {
330
- return {
331
- ...sanitized,
332
- source: 'gateway',
333
- durationMs: Date.now() - startedAt,
334
- };
335
- }
336
- gatewayFailure = 'returned no usable directions';
337
- log.warn('gateway direction author returned no usable directions');
338
- }
339
- catch (error) {
340
- const capacityError = (0, generationCapacity_1.getGenerationCapacityError)(error);
341
- if (capacityError)
342
- throw capacityError;
343
- gatewayFailure = (0, errorMessage_1.errorMessage)(error);
344
- log.warn('gateway direction authoring failed — trying claude runtime', error);
345
- }
346
- try {
347
- const raw = await authorViaClaudeRuntime(input, {
348
- ...(options?.claudeCommand ? { command: options.claudeCommand } : {}),
349
- });
350
- const sanitized = raw ? sanitizeDirections(raw, input) : undefined;
351
- if (sanitized) {
352
- return {
353
- ...sanitized,
354
- source: 'claude_runtime',
355
- durationMs: Date.now() - startedAt,
356
- };
357
- }
358
- runtimeFailure = 'returned no usable directions';
359
- log.warn('claude runtime direction author returned no usable directions');
360
- }
361
- catch (error) {
362
- if (error instanceof DirectionInputDeliveryError)
363
- throw error;
364
- const capacityError = (0, generationCapacity_1.getGenerationCapacityError)(error);
365
- if (capacityError)
366
- throw capacityError;
367
- runtimeFailure = (0, errorMessage_1.errorMessage)(error);
368
- log.warn('claude runtime direction authoring failed — using archetype fallback', error);
369
- }
370
- log.error('direction authoring degraded to generic archetypes — ' +
371
- `gateway: ${gatewayFailure ?? 'unknown failure'}; ` +
372
- `claude runtime: ${runtimeFailure ?? 'unknown failure'}`);
373
- return {
374
- ...(0, exports.fallbackDirections)(input.prompt, input.count),
375
- source: 'fallback',
376
- durationMs: Date.now() - startedAt,
377
- };
378
- };
379
- exports.authorDirections = authorDirections;
380
- //# sourceMappingURL=directionAuthoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directionAuthoring.js","sourceRoot":"","sources":["../../src/agent-variants/directionAuthoring.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare const buildCommitMessagePrompt: (instruction: string, filesChanged: string[], truncatedDiff: string) => string;
2
- export declare const buildPRTitlePrompt: (truncatedLog: string, filesChanged: string[]) => string;
3
- export declare const buildPRDescriptionPrompt: (truncatedLog: string, filesChanged: string[], truncatedDiff: string) => string;
4
- //# sourceMappingURL=gitPrompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitPrompts.d.ts","sourceRoot":"","sources":["../../src/prompts/gitPrompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,EACnB,cAAc,MAAM,EAAE,EACtB,eAAe,MAAM,KACpB,MAgBa,CAAC;AAEjB,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,cAAc,MAAM,EAAE,KACrB,MAeO,CAAC;AAEX,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,EACpB,cAAc,MAAM,EAAE,EACtB,eAAe,MAAM,KACpB,MAoBa,CAAC"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildPRDescriptionPrompt = exports.buildPRTitlePrompt = exports.buildCommitMessagePrompt = void 0;
4
- const buildCommitMessagePrompt = (instruction, filesChanged, truncatedDiff) => `You are writing a git commit message. Given the user's instruction and the git diff, write a concise commit message.
5
-
6
- Rules:
7
- - Single line only, max 50 characters
8
- - Imperative mood (e.g. "Add", "Fix", "Update")
9
- - No quotes around the message
10
- - No conventional commit prefixes (no "feat:", "fix:", etc.)
11
- - If the diff is large, focus on the most important change
12
-
13
- User instruction: ${instruction}
14
-
15
- Files changed: ${filesChanged.join(', ')}
16
-
17
- Diff:
18
- ${truncatedDiff}
19
-
20
- Commit message:`;
21
- exports.buildCommitMessagePrompt = buildCommitMessagePrompt;
22
- const buildPRTitlePrompt = (truncatedLog, filesChanged) => `You are writing a GitHub pull request title. Given the commit messages and files changed, write a concise PR title.
23
-
24
- Rules:
25
- - Max 72 characters
26
- - No quotes around the title
27
- - No conventional commit prefixes (no "feat:", "fix:", etc.)
28
- - Summarize the overall change, not individual commits
29
- - Use imperative mood (e.g. "Add", "Fix", "Update")
30
- - Return ONLY the title, nothing else
31
-
32
- Commit messages:
33
- ${truncatedLog}
34
-
35
- Files changed: ${filesChanged.join(', ')}
36
-
37
- PR title:`;
38
- exports.buildPRTitlePrompt = buildPRTitlePrompt;
39
- const buildPRDescriptionPrompt = (truncatedLog, filesChanged, truncatedDiff) => `You are writing a GitHub pull request description. Given the commit messages, files changed, and diff, write a clear and useful PR description.
40
-
41
- Rules:
42
- - Use markdown formatting
43
- - Start with a brief summary paragraph of what the PR does (2-3 sentences max)
44
- - Then add a "## Changes" section with bullet points for key changes
45
- - If there are notable implementation details, add a brief "## Notes" section
46
- - Keep it concise — no filler, no boilerplate sections that aren't relevant
47
- - Do NOT include a title (that's generated separately)
48
- - End with: "Made with [Rivet](https://rivet.design)"
49
- - Return ONLY the description, nothing else
50
-
51
- Commit messages:
52
- ${truncatedLog}
53
-
54
- Files changed: ${filesChanged.join(', ')}
55
-
56
- Diff:
57
- ${truncatedDiff}
58
-
59
- PR description:`;
60
- exports.buildPRDescriptionPrompt = buildPRDescriptionPrompt;
61
- //# sourceMappingURL=gitPrompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitPrompts.js","sourceRoot":"","sources":["../../src/prompts/gitPrompts.ts"],"names":[],"mappings":";;;AAAO,MAAM,wBAAwB,GAAG,CACtC,WAAmB,EACnB,YAAsB,EACtB,aAAqB,EACb,EAAE,CAAC;;;;;;;;;oBASO,WAAW;;iBAEd,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGtC,aAAa;;gBAEC,CAAC;AApBJ,QAAA,wBAAwB,4BAoBpB;AAEV,MAAM,kBAAkB,GAAG,CAChC,YAAoB,EACpB,YAAsB,EACd,EAAE,CAAC;;;;;;;;;;;EAWX,YAAY;;iBAEG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;UAE9B,CAAC;AAlBE,QAAA,kBAAkB,sBAkBpB;AAEJ,MAAM,wBAAwB,GAAG,CACtC,YAAoB,EACpB,YAAsB,EACtB,aAAqB,EACb,EAAE,CAAC;;;;;;;;;;;;;EAaX,YAAY;;iBAEG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGtC,aAAa;;gBAEC,CAAC;AAxBJ,QAAA,wBAAwB,4BAwBpB"}
@@ -1,13 +0,0 @@
1
- import { ComponentNode, ElementContext } from '../types/change-types';
2
- export type ComponentMatch = {
3
- filePath: string;
4
- depth?: number;
5
- };
6
- export declare class ComponentSearchService {
7
- private log;
8
- private extractMeaningfulClassNames;
9
- private capitalize;
10
- findComponentsByName(projectPath: string, componentTree: ComponentNode[]): Promise<ComponentMatch[]>;
11
- findMatchingComponents(projectPath: string, element: Pick<ElementContext, 'componentTree' | 'className' | 'id' | 'textContent' | 'tagName'>): Promise<ComponentMatch[]>;
12
- }
13
- //# sourceMappingURL=ComponentSearchService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComponentSearchService.d.ts","sourceRoot":"","sources":["../../src/services/ComponentSearchService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAItE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAgBF,qBAAa,sBAAsB;IACjC,OAAO,CAAC,GAAG,CAA0C;IAErD,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,UAAU;IAIZ,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,EAAE,GAC7B,OAAO,CAAC,cAAc,EAAE,CAAC;IAqFtB,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,CACX,cAAc,EACd,eAAe,GAAG,WAAW,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CACjE,GACA,OAAO,CAAC,cAAc,EAAE,CAAC;CA2G7B"}