rivet-design 0.8.2 → 0.8.4

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 (41) hide show
  1. package/dist/config/evaluateFlags.d.ts.map +1 -1
  2. package/dist/config/evaluateFlags.js +8 -2
  3. package/dist/config/evaluateFlags.js.map +1 -1
  4. package/dist/config/flags.d.ts +6 -0
  5. package/dist/config/flags.d.ts.map +1 -1
  6. package/dist/config/flags.js +2 -0
  7. package/dist/config/flags.js.map +1 -1
  8. package/dist/prompts/commentVariationPromptSnapshot.d.ts +1 -1
  9. package/dist/prompts/commentVariationPromptSnapshot.d.ts.map +1 -1
  10. package/dist/prompts/commentVariationPromptSnapshot.js +4 -4
  11. package/dist/prompts/commentVariationPromptSnapshot.js.map +1 -1
  12. package/dist/prompts/commentVariationPrompts.d.ts +8 -2
  13. package/dist/prompts/commentVariationPrompts.d.ts.map +1 -1
  14. package/dist/prompts/commentVariationPrompts.js +13 -10
  15. package/dist/prompts/commentVariationPrompts.js.map +1 -1
  16. package/dist/routes/design.d.ts.map +1 -1
  17. package/dist/routes/design.js +5 -0
  18. package/dist/routes/design.js.map +1 -1
  19. package/dist/services/CommentVariationService.d.ts +16 -28
  20. package/dist/services/CommentVariationService.d.ts.map +1 -1
  21. package/dist/services/CommentVariationService.js +97 -69
  22. package/dist/services/CommentVariationService.js.map +1 -1
  23. package/dist/services/GatewayClient.d.ts +20 -1
  24. package/dist/services/GatewayClient.d.ts.map +1 -1
  25. package/dist/services/GatewayClient.js +40 -17
  26. package/dist/services/GatewayClient.js.map +1 -1
  27. package/dist/services/SessionService.js +1 -1
  28. package/dist/services/SessionService.js.map +1 -1
  29. package/dist/services/VariantCodeGeneratorService.d.ts +8 -1
  30. package/dist/services/VariantCodeGeneratorService.d.ts.map +1 -1
  31. package/dist/services/VariantCodeGeneratorService.js +33 -1
  32. package/dist/services/VariantCodeGeneratorService.js.map +1 -1
  33. package/dist/services/agent/AgentCore.d.ts +21 -0
  34. package/dist/services/agent/AgentCore.d.ts.map +1 -1
  35. package/dist/services/agent/AgentCore.js +36 -2
  36. package/dist/services/agent/AgentCore.js.map +1 -1
  37. package/package.json +2 -2
  38. package/src/ui/dist/assets/{main-rZJbxsq5.js → main-CFAr6Qon.js} +119 -122
  39. package/src/ui/dist/assets/main-DcbpRHzm.css +1 -0
  40. package/src/ui/dist/index.html +2 -2
  41. package/src/ui/dist/assets/main-CIwyuxY2.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateFlags.d.ts","sourceRoot":"","sources":["../../src/config/evaluateFlags.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAqB7D"}
1
+ {"version":3,"file":"evaluateFlags.d.ts","sourceRoot":"","sources":["../../src/config/evaluateFlags.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CA2B7D"}
@@ -13,8 +13,14 @@ async function getFeatureFlags() {
13
13
  // Single network request for all flags
14
14
  const allFlags = await service.getAllFlags();
15
15
  return Object.fromEntries(keys.map((key) => {
16
- // Env-var override takes precedence
17
- const envKey = `RIVET_FLAG_${key.toUpperCase().replace(/-/g, '_')}`;
16
+ // Env-var override takes precedence. Convert camelCase + kebab-case
17
+ // flag keys to UPPER_SNAKE_CASE so `designSystemEditor` resolves to
18
+ // RIVET_FLAG_DESIGN_SYSTEM_EDITOR, as documented in flags.ts.
19
+ const snakeKey = key
20
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
21
+ .replace(/-/g, '_')
22
+ .toUpperCase();
23
+ const envKey = `RIVET_FLAG_${snakeKey}`;
18
24
  const envVal = process.env[envKey];
19
25
  if (envVal !== undefined) {
20
26
  return [key, { isEnabled: envVal !== 'false' }];
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateFlags.js","sourceRoot":"","sources":["../../src/config/evaluateFlags.ts"],"names":[],"mappings":";;AAOA,0CAqBC;AA5BD,uEAAuE;AACvE,mCAA4E;AAE5E;;;GAGG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,IAAA,0CAAqB,GAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAc,CAAC;IAExD,uCAAuC;IACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAE7C,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,oCAAoC;QACpC,MAAM,MAAM,GAAG,cAAc,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,yCAAyC;QACzC,MAAM,KAAK,GAAG,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QAChF,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CACa,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"evaluateFlags.js","sourceRoot":"","sources":["../../src/config/evaluateFlags.ts"],"names":[],"mappings":";;AAOA,0CA2BC;AAlCD,uEAAuE;AACvE,mCAA4E;AAE5E;;;GAGG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,IAAA,0CAAqB,GAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAc,CAAC;IAExD,uCAAuC;IACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAE7C,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,oEAAoE;QACpE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,GAAG;aACjB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;aACtC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,WAAW,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,cAAc,QAAQ,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,yCAAyC;QACzC,MAAM,KAAK,GAAG,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QAChF,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CACa,CAAC;AACpB,CAAC"}
@@ -19,6 +19,12 @@ export declare const FLAG_DEFINITIONS: {
19
19
  readonly variants: {
20
20
  readonly default: false;
21
21
  };
22
+ readonly designSystemEditor: {
23
+ readonly default: false;
24
+ };
25
+ readonly branchDiff: {
26
+ readonly default: false;
27
+ };
22
28
  };
23
29
  export type FlagKey = keyof typeof FLAG_DEFINITIONS;
24
30
  export type FeatureFlag = {
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB;;;;;;;CAG4B,CAAC;AAI1D,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,gBAAgB,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAExD,eAAO,MAAM,qBAAqB,EAAE,YAKnB,CAAC"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAK4B,CAAC;AAI1D,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,gBAAgB,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAExD,eAAO,MAAM,qBAAqB,EAAE,YAKnB,CAAC"}
@@ -18,6 +18,8 @@ exports.DEFAULT_FEATURE_FLAGS = exports.FLAG_DEFINITIONS = void 0;
18
18
  exports.FLAG_DEFINITIONS = {
19
19
  resize: { default: false },
20
20
  variants: { default: false },
21
+ designSystemEditor: { default: false },
22
+ branchDiff: { default: false },
21
23
  };
22
24
  exports.DEFAULT_FEATURE_FLAGS = Object.fromEntries(Object.entries(exports.FLAG_DEFINITIONS).map(([key, def]) => [
23
25
  key,
@@ -1 +1 @@
1
- {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACU,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAC1B,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CAC2B,CAAC;AAQ7C,QAAA,qBAAqB,GAAiB,MAAM,CAAC,WAAW,CACnE,MAAM,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACnD,GAAG;IACH,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE;CAC3B,CAAC,CACa,CAAC"}
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACU,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAC1B,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5B,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IACtC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACyB,CAAC;AAQ7C,QAAA,qBAAqB,GAAiB,MAAM,CAAC,WAAW,CACnE,MAAM,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACnD,GAAG;IACH,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE;CAC3B,CAAC,CACa,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const COMMENT_VARIATION_SYSTEM_PROMPT = "You are a creative design director. Talk like a senior designer speaking to a peer - direct, succinct, no filler or over-explanation. Plain language only.\n\nA designer has a request for one element in their web application. Generate exactly 3 meaningfully different visual variants that directly answer the request.\n\nOutput JSON only. Do not add markdown fences, extra text, headings, or commentary.\n\nRules:\n- Variants must be meaningfully different, not tiny tweaks\n- Use valid inline CSS properties and values\n- Keep each variant to 12 keys or fewer\n- Nearby sibling/container adjustments are allowed when needed for coherent visual direction\n\nRespond with this exact shape:\n{\"variants\":[{\"label\":\"short name\",\"summary\":\"one sentence\",\"inlineStyles\":{\"property\":\"value\"}}]}";
1
+ export declare const COMMENT_VARIATION_SYSTEM_PROMPT = "You are a creative design director. Talk like a senior designer speaking to a peer - direct, succinct, no filler or over-explanation. Plain language only.\n\nA designer has a request for one element in their web application. Generate exactly 3 meaningfully different visual variants that directly answer the request.\n\nOutput JSON only. Do not add markdown fences, extra text, headings, or commentary. Keys must be quoted. Strings must be JSON-escaped. The final assistant message must be the JSON object and nothing else.\n\nUse only Read, Glob, and Grep to inspect context. Do not call Task or spawn subagents \u2014 those calls will be rejected and waste your turn budget.\n\nRules:\n- Variants must be meaningfully different, not tiny tweaks\n- Nearby sibling/container adjustments are allowed when needed for coherent visual direction\n\nRespond with this exact shape:\n{\"variants\":[{\"label\":\"short name\",\"summary\":\"one sentence\",\"changeSpec\":\"implementation instruction\"}]}";
2
2
  export declare const COMMENT_VARIATION_REFERENCE_CONTEXT = "gstack heuristics:\n- Visual hierarchy and composition checks\n- Typography clarity and readability checks\n- Color contrast and interaction-state checks\n- Responsive behavior and motion constraints\n- Content quality and AI slop detection checks\n\nVercel interface guidelines:\n- Keyboard and focus accessibility rules\n- Form usability and error-state behavior\n- URL/state, feedback, and touch-target rules\n- Animation and layout performance constraints\n- Theming, hydration, and resilient content handling";
3
3
  //# sourceMappingURL=commentVariationPromptSnapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commentVariationPromptSnapshot.d.ts","sourceRoot":"","sources":["../../src/prompts/commentVariationPromptSnapshot.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,wyBAauD,CAAC;AAEpG,eAAO,MAAM,mCAAmC,sgBAYK,CAAC"}
1
+ {"version":3,"file":"commentVariationPromptSnapshot.d.ts","sourceRoot":"","sources":["../../src/prompts/commentVariationPromptSnapshot.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,u+BAa6D,CAAC;AAE1G,eAAO,MAAM,mCAAmC,sgBAYK,CAAC"}
@@ -5,16 +5,16 @@ exports.COMMENT_VARIATION_SYSTEM_PROMPT = `You are a creative design director. T
5
5
 
6
6
  A designer has a request for one element in their web application. Generate exactly 3 meaningfully different visual variants that directly answer the request.
7
7
 
8
- Output JSON only. Do not add markdown fences, extra text, headings, or commentary.
8
+ Output JSON only. Do not add markdown fences, extra text, headings, or commentary. Keys must be quoted. Strings must be JSON-escaped. The final assistant message must be the JSON object and nothing else.
9
+
10
+ Use only Read, Glob, and Grep to inspect context. Do not call Task or spawn subagents — those calls will be rejected and waste your turn budget.
9
11
 
10
12
  Rules:
11
13
  - Variants must be meaningfully different, not tiny tweaks
12
- - Use valid inline CSS properties and values
13
- - Keep each variant to 12 keys or fewer
14
14
  - Nearby sibling/container adjustments are allowed when needed for coherent visual direction
15
15
 
16
16
  Respond with this exact shape:
17
- {"variants":[{"label":"short name","summary":"one sentence","inlineStyles":{"property":"value"}}]}`;
17
+ {"variants":[{"label":"short name","summary":"one sentence","changeSpec":"implementation instruction"}]}`;
18
18
  exports.COMMENT_VARIATION_REFERENCE_CONTEXT = `gstack heuristics:
19
19
  - Visual hierarchy and composition checks
20
20
  - Typography clarity and readability checks
@@ -1 +1 @@
1
- {"version":3,"file":"commentVariationPromptSnapshot.js","sourceRoot":"","sources":["../../src/prompts/commentVariationPromptSnapshot.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAAG;;;;;;;;;;;;;mGAaoD,CAAC;AAEvF,QAAA,mCAAmC,GAAG;;;;;;;;;;;;qDAYE,CAAC"}
1
+ {"version":3,"file":"commentVariationPromptSnapshot.js","sourceRoot":"","sources":["../../src/prompts/commentVariationPromptSnapshot.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAAG;;;;;;;;;;;;;yGAa0D,CAAC;AAE7F,QAAA,mCAAmC,GAAG;;;;;;;;;;;;qDAYE,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import type { ElementContext } from '../types/change-types';
2
+ export type FileExcerpt = {
3
+ path: string;
4
+ content: string;
5
+ };
2
6
  /**
3
- * Builds a prompt for structured JSON output: N visual variants as inline CSS maps.
7
+ * Builds a prompt for structured tool-use output: N visual variants with
8
+ * implementation specs. When `fileExcerpts` are provided, their contents are
9
+ * embedded inline so the model has full context without needing read tools.
4
10
  */
5
- export declare const buildCommentVariationPrompt: (instruction: string, element: ElementContext, variantCount: number) => string;
11
+ export declare const buildCommentVariationPrompt: (instruction: string, element: ElementContext, variantCount: number, fileExcerpts?: FileExcerpt[]) => string;
6
12
  //# sourceMappingURL=commentVariationPrompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commentVariationPrompts.d.ts","sourceRoot":"","sources":["../../src/prompts/commentVariationPrompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,SAAS,cAAc,EACvB,cAAc,MAAM,KACnB,MAiDF,CAAC"}
1
+ {"version":3,"file":"commentVariationPrompts.d.ts","sourceRoot":"","sources":["../../src/prompts/commentVariationPrompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,SAAS,cAAc,EACvB,cAAc,MAAM,EACpB,eAAe,WAAW,EAAE,KAC3B,MAsDF,CAAC"}
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildCommentVariationPrompt = void 0;
4
4
  const commentVariationPromptConfig_1 = require("./commentVariationPromptConfig");
5
5
  /**
6
- * Builds a prompt for structured JSON output: N visual variants as inline CSS maps.
6
+ * Builds a prompt for structured tool-use output: N visual variants with
7
+ * implementation specs. When `fileExcerpts` are provided, their contents are
8
+ * embedded inline so the model has full context without needing read tools.
7
9
  */
8
- const buildCommentVariationPrompt = (instruction, element, variantCount) => {
10
+ const buildCommentVariationPrompt = (instruction, element, variantCount, fileExcerpts) => {
9
11
  const promptConfig = (0, commentVariationPromptConfig_1.loadCommentVariationPromptConfig)();
10
12
  const filePaths = element.filePaths?.map((f) => f.filePath).slice(0, 3) ?? [];
11
13
  const tag = element.tagName.toLowerCase();
@@ -20,9 +22,13 @@ const buildCommentVariationPrompt = (instruction, element, variantCount) => {
20
22
  })
21
23
  .join('\n')
22
24
  : ' (none)';
23
- const candidateFiles = filePaths.length > 0
24
- ? filePaths.map((filePath) => ` - ${filePath}`).join('\n')
25
- : ' - unknown';
25
+ const candidateFilesBlock = fileExcerpts && fileExcerpts.length > 0
26
+ ? fileExcerpts
27
+ .map((excerpt) => `=== ${excerpt.path} ===\n${excerpt.content}\n=== end ${excerpt.path} ===`)
28
+ .join('\n\n')
29
+ : filePaths.length > 0
30
+ ? filePaths.map((filePath) => ` - ${filePath}`).join('\n')
31
+ : ' - unknown';
26
32
  return `${promptConfig.systemPrompt}
27
33
 
28
34
  Reference context:
@@ -40,17 +46,14 @@ Element context:
40
46
  ${siblingLines}
41
47
 
42
48
  Candidate files:
43
- ${candidateFiles}
49
+ ${candidateFilesBlock}
44
50
 
45
51
  Direction constraints:
46
52
  - Variants should optimize for coherent UI outcomes, not selected-element-only tweaks.
47
53
  - You may include coordinated nearby sibling/container changes when needed.
48
54
  - \`changeSpec\` must be a 2-3 sentence agent implementation instruction describing exactly what code changes to make to achieve the direction. It should be specific about file locations, class names, and structural changes needed. For style-only changes it describes which CSS/Tailwind values to set; for structural changes it describes the HTML/JSX restructuring required.
49
55
 
50
- Respond with this exact JSON shape:
51
- {"variants":[{"label":"short name","summary":"one sentence","changeSpec":"implementation instruction"}]}
52
-
53
- There must be exactly ${variantCount} objects in "variants".`;
56
+ Produce exactly ${variantCount} variants by calling the submit_variants tool.`;
54
57
  };
55
58
  exports.buildCommentVariationPrompt = buildCommentVariationPrompt;
56
59
  //# sourceMappingURL=commentVariationPrompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commentVariationPrompts.js","sourceRoot":"","sources":["../../src/prompts/commentVariationPrompts.ts"],"names":[],"mappings":";;;AACA,iFAAkF;AAElF;;GAEG;AACI,MAAM,2BAA2B,GAAG,CACzC,WAAmB,EACnB,OAAuB,EACvB,YAAoB,EACZ,EAAE;IACV,MAAM,YAAY,GAAG,IAAA,+DAAgC,GAAE,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB;QAChD,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,OAAO,SAAS,OAAO,CAAC,oBAAoB,CAAC,EAAE,IAAI,QAAQ,YAAY,OAAO,CAAC,oBAAoB,CAAC,SAAS,IAAI,QAAQ,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;QACtO,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,YAAY,GAChB,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,eAAe;aACpB,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACtB,OAAO,KAAK,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,gBAAgB,MAAM,OAAO,CAAC,OAAO,SAAS,OAAO,CAAC,EAAE,IAAI,QAAQ,YAAY,OAAO,CAAC,SAAS,IAAI,QAAQ,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACxM,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,UAAU,CAAC;IACjB,MAAM,cAAc,GAClB,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,CAAC,CAAC,aAAa,CAAC;IAEpB,OAAO,GAAG,YAAY,CAAC,YAAY;;;EAGnC,YAAY,CAAC,eAAe;;;EAG5B,WAAW,CAAC,IAAI,EAAE;;;UAGV,GAAG;kBACK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;WACxD,OAAO,CAAC,KAAK;oBACJ,aAAa;;EAE/B,YAAY;;;EAGZ,cAAc;;;;;;;;;;wBAUQ,YAAY,yBAAyB,CAAC;AAC9D,CAAC,CAAC;AArDW,QAAA,2BAA2B,+BAqDtC"}
1
+ {"version":3,"file":"commentVariationPrompts.js","sourceRoot":"","sources":["../../src/prompts/commentVariationPrompts.ts"],"names":[],"mappings":";;;AACA,iFAAkF;AAIlF;;;;GAIG;AACI,MAAM,2BAA2B,GAAG,CACzC,WAAmB,EACnB,OAAuB,EACvB,YAAoB,EACpB,YAA4B,EACpB,EAAE;IACV,MAAM,YAAY,GAAG,IAAA,+DAAgC,GAAE,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB;QAChD,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,OAAO,SAAS,OAAO,CAAC,oBAAoB,CAAC,EAAE,IAAI,QAAQ,YAAY,OAAO,CAAC,oBAAoB,CAAC,SAAS,IAAI,QAAQ,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;QACtO,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,YAAY,GAChB,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,eAAe;aACpB,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACtB,OAAO,KAAK,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,gBAAgB,MAAM,OAAO,CAAC,OAAO,SAAS,OAAO,CAAC,EAAE,IAAI,QAAQ,YAAY,OAAO,CAAC,SAAS,IAAI,QAAQ,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACxM,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,UAAU,CAAC;IAEjB,MAAM,mBAAmB,GACvB,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,YAAY;aACT,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,IAAI,MAAM,CAC7E;aACA,IAAI,CAAC,MAAM,CAAC;QACjB,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,aAAa,CAAC;IAEtB,OAAO,GAAG,YAAY,CAAC,YAAY;;;EAGnC,YAAY,CAAC,eAAe;;;EAG5B,WAAW,CAAC,IAAI,EAAE;;;UAGV,GAAG;kBACK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;WACxD,OAAO,CAAC,KAAK;oBACJ,aAAa;;EAE/B,YAAY;;;EAGZ,mBAAmB;;;;;;;kBAOH,YAAY,gDAAgD,CAAC;AAC/E,CAAC,CAAC;AA3DW,QAAA,2BAA2B,+BA2DtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/routes/design.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,+CA2HrD,CAAC"}
1
+ {"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../src/routes/design.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,+CAiIrD,CAAC"}
@@ -82,6 +82,10 @@ const createDesignRouter = (projectPath) => {
82
82
  const instruction = String(body.instruction ?? '').trim();
83
83
  const element = body.element;
84
84
  const variants = body.variants;
85
+ const currentAppliedDiff = typeof body.currentAppliedDiff === 'string' &&
86
+ body.currentAppliedDiff.trim().length > 0
87
+ ? body.currentAppliedDiff
88
+ : undefined;
85
89
  if (!sessionId) {
86
90
  return res.status(400).json({ error: 'sessionId is required' });
87
91
  }
@@ -112,6 +116,7 @@ const createDesignRouter = (projectPath) => {
112
116
  instruction,
113
117
  element,
114
118
  variants,
119
+ currentAppliedDiff,
115
120
  onEvent: sendEvent,
116
121
  abortController,
117
122
  });
@@ -1 +1 @@
1
- {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/routes/design.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/routes/design.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,19 @@
1
- import { z } from 'zod';
1
+ import { z } from 'zod/v3';
2
2
  import type { ElementContext } from '../types/change-types';
3
- declare const responseSchema: z.ZodObject<{
4
- variants: z.ZodArray<z.ZodObject<{
5
- label: z.ZodString;
6
- summary: z.ZodString;
7
- changeSpec: z.ZodOptional<z.ZodString>;
8
- }, "strip", z.ZodTypeAny, {
9
- label: string;
10
- summary: string;
11
- changeSpec?: string | undefined;
12
- }, {
13
- label: string;
14
- summary: string;
15
- changeSpec?: string | undefined;
16
- }>, "many">;
3
+ declare const variantSchema: z.ZodObject<{
4
+ label: z.ZodString;
5
+ summary: z.ZodString;
6
+ changeSpec: z.ZodString;
17
7
  }, "strip", z.ZodTypeAny, {
18
- variants: {
19
- label: string;
20
- summary: string;
21
- changeSpec?: string | undefined;
22
- }[];
8
+ label: string;
9
+ summary: string;
10
+ changeSpec: string;
23
11
  }, {
24
- variants: {
25
- label: string;
26
- summary: string;
27
- changeSpec?: string | undefined;
28
- }[];
12
+ label: string;
13
+ summary: string;
14
+ changeSpec: string;
29
15
  }>;
30
- export type CommentStyleVariant = z.infer<typeof responseSchema>['variants'][number];
16
+ export type CommentStyleVariant = z.infer<typeof variantSchema>;
31
17
  type GenerateParams = {
32
18
  instruction: string;
33
19
  element: ElementContext;
@@ -35,9 +21,11 @@ type GenerateParams = {
35
21
  projectPath?: string;
36
22
  model?: string;
37
23
  };
38
- export declare const normalizeVariationJsonPayload: (raw: string) => string;
39
24
  /**
40
- * Calls agent-core in read-only mode and returns CSS-preview variants for a commented element.
25
+ * Generates style-variant directions for a commented element by calling the
26
+ * gateway directly with a forced tool-use schema. Skips the agent loop because
27
+ * direction text doesn't require codebase exploration — the relevant file
28
+ * contents are pre-loaded into the prompt.
41
29
  */
42
30
  export declare const generateCommentStyleVariants: ({ instruction, element, variantCount, projectPath, model, }: GenerateParams) => Promise<CommentStyleVariant[]>;
43
31
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"CommentVariationService.d.ts","sourceRoot":"","sources":["../../src/services/CommentVariationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA6B5D,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;EAElB,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CACvC,OAAO,cAAc,CACtB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtB,KAAK,cAAc,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,eAAO,MAAM,6BAA6B,GAAI,KAAK,MAAM,KAAG,MAU3D,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GAAU,6DAMhD,cAAc,KAAG,OAAO,CAAC,mBAAmB,EAAE,CAgDhD,CAAC"}
1
+ {"version":3,"file":"CommentVariationService.d.ts","sourceRoot":"","sources":["../../src/services/CommentVariationService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAM3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA0B5D,QAAA,MAAM,aAAa;;;;;;;;;;;;EAIjB,CAAC;AAMH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AA4BhE,KAAK,cAAc,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA8BF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAU,6DAMhD,cAAc,KAAG,OAAO,CAAC,mBAAmB,EAAE,CAmDhD,CAAC"}
@@ -1,70 +1,95 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateCommentStyleVariants = exports.normalizeVariationJsonPayload = void 0;
4
- const zod_1 = require("zod");
6
+ exports.generateCommentStyleVariants = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = require("fs");
9
+ const v3_1 = require("zod/v3");
5
10
  const logger_1 = require("../utils/logger");
6
11
  const commentVariationPrompts_1 = require("../prompts/commentVariationPrompts");
7
- const AgentCore_1 = require("./agent/AgentCore");
12
+ const GatewayClient_1 = require("./GatewayClient");
8
13
  const log = (0, logger_1.createLogger)('CommentVariationService');
9
14
  const MIN_VARIANT_COUNT = 2;
10
15
  const MAX_VARIANT_COUNT = 5;
11
- const MAX_REASONING_BLOCKS_FOR_JSON_SEARCH = 5;
12
- /** Model tuned for highest-quality structured JSON for design variants. */
13
- const DEFAULT_VARIATION_MODEL = 'claude-opus-4-6';
16
+ /**
17
+ * Sonnet 4.6 is fast enough for direction-text generation while still
18
+ * producing coherent multi-direction designs. Phase 2 (code generation) keeps
19
+ * using Opus through the agent loop where structural reasoning matters more.
20
+ */
21
+ const DEFAULT_VARIATION_MODEL = 'claude-sonnet-4-6';
14
22
  const DEFAULT_AGENT_CWD = process.cwd();
15
- const VARIATION_AGENT_SYSTEM_PROMPT = `You are a senior design systems engineer producing structured style-variation output for one selected comment target with nearby UI context.
23
+ const MAX_TOKENS = 4000;
24
+ const TEMPERATURE = 0.7;
25
+ const MAX_FILES_FOR_CONTEXT = 3;
26
+ const MAX_BYTES_PER_FILE = 6000;
27
+ const VARIATION_SYSTEM_PROMPT = `You are a senior design systems engineer producing structured style-variation output for one selected comment target with nearby UI context.
16
28
 
17
- Use provided element, sibling, and file context to propose coherent visual directions. Nearby sibling/container adjustments are allowed when necessary for a coherent result.
29
+ Use the provided element, sibling, and file context to propose coherent visual directions. Nearby sibling/container adjustments are allowed when necessary for a coherent result.
18
30
 
19
- Never modify files. Use read-only tools only to inspect context.
20
-
21
- Output JSON only. No markdown fences. No explanation text.
22
-
23
- Required shape:
24
- {"variants":[{"label":"short name","summary":"one sentence","changeSpec":"implementation instruction"}]}`;
25
- const styleVariantSchema = zod_1.z.object({
26
- label: zod_1.z.string(),
27
- summary: zod_1.z.string(),
28
- changeSpec: zod_1.z.string().optional(),
31
+ Submit your final output by calling the submit_variants tool exactly once.`;
32
+ const variantSchema = v3_1.z.object({
33
+ label: v3_1.z.string(),
34
+ summary: v3_1.z.string(),
35
+ changeSpec: v3_1.z.string(),
29
36
  });
30
- const responseSchema = zod_1.z.object({
31
- variants: zod_1.z.array(styleVariantSchema),
37
+ const responseSchema = v3_1.z.object({
38
+ variants: v3_1.z.array(variantSchema),
32
39
  });
33
- const stripCodeFences = (raw) => {
34
- let text = raw.trim();
35
- if (text.startsWith('```')) {
36
- text = text.replace(/^```(?:json)?\s*/i, '').replace(/\s*```\s*$/i, '');
37
- }
38
- return text.trim();
39
- };
40
- const normalizeVariationJsonPayload = (raw) => {
41
- const stripped = stripCodeFences(raw);
42
- const firstBrace = stripped.indexOf('{');
43
- const lastBrace = stripped.lastIndexOf('}');
44
- if (firstBrace !== -1 && lastBrace > firstBrace) {
45
- return stripped.slice(firstBrace, lastBrace + 1).trim();
46
- }
47
- return stripped;
40
+ const SUBMIT_VARIANTS_TOOL = {
41
+ name: 'submit_variants',
42
+ description: 'Submit the final list of style variants for the commented element. Call this exactly once with all variants.',
43
+ input_schema: {
44
+ type: 'object',
45
+ properties: {
46
+ variants: {
47
+ type: 'array',
48
+ items: {
49
+ type: 'object',
50
+ properties: {
51
+ label: { type: 'string' },
52
+ summary: { type: 'string' },
53
+ changeSpec: { type: 'string' },
54
+ },
55
+ required: ['label', 'summary', 'changeSpec'],
56
+ additionalProperties: false,
57
+ },
58
+ },
59
+ },
60
+ required: ['variants'],
61
+ additionalProperties: false,
62
+ },
48
63
  };
49
- exports.normalizeVariationJsonPayload = normalizeVariationJsonPayload;
50
- const extractJsonCandidateFromReasoning = (reasoning) => {
51
- const tailBlocks = reasoning
52
- .slice(-MAX_REASONING_BLOCKS_FOR_JSON_SEARCH)
53
- .map((block) => block.trim())
54
- .filter((block) => block.length > 0);
55
- for (let i = tailBlocks.length - 1; i >= 0; i--) {
56
- const block = tailBlocks[i];
57
- if (block.includes('{') && block.includes('"variants"')) {
58
- return block;
64
+ const readFileExcerpts = async (projectPath, element) => {
65
+ const filePaths = element.filePaths?.map((f) => f.filePath).slice(0, MAX_FILES_FOR_CONTEXT) ??
66
+ [];
67
+ const excerpts = [];
68
+ for (const relPath of filePaths) {
69
+ const absPath = path_1.default.isAbsolute(relPath)
70
+ ? relPath
71
+ : path_1.default.join(projectPath, relPath);
72
+ try {
73
+ const stat = await fs_1.promises.stat(absPath);
74
+ if (!stat.isFile())
75
+ continue;
76
+ const buf = await fs_1.promises.readFile(absPath, 'utf8');
77
+ const content = buf.length > MAX_BYTES_PER_FILE
78
+ ? buf.slice(0, MAX_BYTES_PER_FILE) + '\n... (truncated)'
79
+ : buf;
80
+ excerpts.push({ path: relPath, content });
81
+ }
82
+ catch (e) {
83
+ log.debug(`Skipping file excerpt for ${relPath}:`, e);
59
84
  }
60
85
  }
61
- if (tailBlocks.length > 0) {
62
- return tailBlocks[tailBlocks.length - 1];
63
- }
64
- throw new Error('Invalid variation response from model');
86
+ return excerpts;
65
87
  };
66
88
  /**
67
- * Calls agent-core in read-only mode and returns CSS-preview variants for a commented element.
89
+ * Generates style-variant directions for a commented element by calling the
90
+ * gateway directly with a forced tool-use schema. Skips the agent loop because
91
+ * direction text doesn't require codebase exploration — the relevant file
92
+ * contents are pre-loaded into the prompt.
68
93
  */
69
94
  const generateCommentStyleVariants = async ({ instruction, element, variantCount, projectPath, model, }) => {
70
95
  if (variantCount < MIN_VARIANT_COUNT ||
@@ -72,31 +97,34 @@ const generateCommentStyleVariants = async ({ instruction, element, variantCount
72
97
  !Number.isInteger(variantCount)) {
73
98
  throw new Error('variantCount must be an integer between 2 and 5');
74
99
  }
75
- const agentCore = new AgentCore_1.AgentCore();
76
- const prompt = (0, commentVariationPrompts_1.buildCommentVariationPrompt)(instruction, element, variantCount);
77
- log.info(`Comment variation prompt (to Railway):\n${prompt}`);
78
- const agentResult = await agentCore.execute({
79
- systemPrompt: VARIATION_AGENT_SYSTEM_PROMPT,
80
- userPrompt: prompt,
81
- allowedTools: ['Read', 'Glob', 'Grep'],
82
- permissionMode: 'default',
83
- cwd: projectPath || DEFAULT_AGENT_CWD,
100
+ const cwd = projectPath || DEFAULT_AGENT_CWD;
101
+ const fileExcerpts = await readFileExcerpts(cwd, element);
102
+ const prompt = (0, commentVariationPrompts_1.buildCommentVariationPrompt)(instruction, element, variantCount, fileExcerpts);
103
+ log.info(`Comment variation request model=${model ?? DEFAULT_VARIATION_MODEL} files=${fileExcerpts.length} count=${variantCount}`);
104
+ const gateway = new GatewayClient_1.GatewayClient();
105
+ const startedAt = Date.now();
106
+ const toolInput = await gateway.sendToolUse({
84
107
  model: model ?? DEFAULT_VARIATION_MODEL,
85
- executionPolicy: {
86
- disableBash: true,
87
- disableSubagents: true,
88
- maxTaskCalls: 0,
89
- },
90
- onProgress: () => { },
108
+ maxTokens: MAX_TOKENS,
109
+ temperature: TEMPERATURE,
110
+ system: VARIATION_SYSTEM_PROMPT,
111
+ prompt,
112
+ tool: SUBMIT_VARIANTS_TOOL,
91
113
  });
92
- const rawText = extractJsonCandidateFromReasoning(agentResult.reasoning);
93
- const parsedJson = JSON.parse((0, exports.normalizeVariationJsonPayload)(rawText));
94
- const parsed = responseSchema.safeParse(parsedJson);
114
+ log.info(`Comment variation completed in ${Date.now() - startedAt}ms`);
115
+ const parsed = responseSchema.safeParse(toolInput);
95
116
  if (!parsed.success) {
96
- log.warn('Variation JSON validation failed', parsed.error.flatten());
117
+ log.warn('Variation tool input failed schema validation', {
118
+ validationError: parsed.error.flatten(),
119
+ received: toolInput,
120
+ });
97
121
  throw new Error('Invalid variation response from model');
98
122
  }
99
123
  if (parsed.data.variants.length !== variantCount) {
124
+ log.warn('Variation count mismatch', {
125
+ expected: variantCount,
126
+ received: parsed.data.variants.length,
127
+ });
100
128
  throw new Error('Invalid variation response from model');
101
129
  }
102
130
  return parsed.data.variants;
@@ -1 +1 @@
1
- {"version":3,"file":"CommentVariationService.js","sourceRoot":"","sources":["../../src/services/CommentVariationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommentVariationService.js","sourceRoot":"","sources":["../../src/services/CommentVariationService.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,18 @@ type GatewayRequestOptions = {
4
4
  temperature: number;
5
5
  prompt: string;
6
6
  };
7
+ type GatewayToolUseOptions = {
8
+ model: string;
9
+ maxTokens: number;
10
+ temperature: number;
11
+ system: string;
12
+ prompt: string;
13
+ tool: {
14
+ name: string;
15
+ description: string;
16
+ input_schema: Record<string, unknown>;
17
+ };
18
+ };
7
19
  export declare const asReasonText: (value: unknown) => string;
8
20
  /**
9
21
  * Sends authenticated requests to the Rivet LLM gateway.
@@ -16,7 +28,14 @@ export declare class GatewayClient {
16
28
  constructor(gatewayUrl?: string, proxyUrl?: string);
17
29
  /** Send a message to the gateway and return the raw text response. */
18
30
  sendMessage(options: GatewayRequestOptions): Promise<string>;
19
- private makeRequest;
31
+ /**
32
+ * Send a request that forces the model to invoke a single tool, and return
33
+ * the parsed `input` of that tool call. Throws if the model didn't call the
34
+ * tool (which the API guarantees won't happen with `tool_choice: { type:
35
+ * 'tool' }`, but we check anyway).
36
+ */
37
+ sendToolUse<TInput>(options: GatewayToolUseOptions): Promise<TInput>;
38
+ private postMessages;
20
39
  /** Refresh the access token using the stored refresh token. */
21
40
  private refreshAccessToken;
22
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GatewayClient.d.ts","sourceRoot":"","sources":["../../src/services/GatewayClient.ts"],"names":[],"mappings":"AAMA,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,MAsB7C,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAKlD,sEAAsE;IAChE,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;YAIpD,WAAW;IAyEzB,+DAA+D;YACjD,kBAAkB;CAoCjC"}
1
+ {"version":3,"file":"GatewayClient.d.ts","sourceRoot":"","sources":["../../src/services/GatewayClient.ts"],"names":[],"mappings":"AAMA,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,MAsB7C,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAKlD,sEAAsE;IAChE,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBlE;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;YAsB5D,YAAY;IA6D1B,+DAA+D;YACjD,kBAAkB;CAoCjC"}