rivet-design 0.12.4 → 0.13.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 (535) hide show
  1. package/README.md +50 -26
  2. package/README.npm.md +50 -26
  3. package/bin/rivet.js +39 -24
  4. package/dist/{mcp/agent-variants → agent-variants}/SessionStore.d.ts +11 -19
  5. package/dist/agent-variants/SessionStore.d.ts.map +1 -0
  6. package/dist/{mcp/agent-variants → agent-variants}/SessionStore.js +64 -79
  7. package/dist/agent-variants/SessionStore.js.map +1 -0
  8. package/dist/{mcp/agent-variants → agent-variants}/WorktreeOrchestrator.d.ts +53 -21
  9. package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -0
  10. package/dist/{mcp/agent-variants → agent-variants}/WorktreeOrchestrator.js +291 -49
  11. package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -0
  12. package/dist/{mcp/agent-variants → agent-variants}/WorktreeOrchestrator.testHelpers.d.ts +1 -9
  13. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -0
  14. package/dist/{mcp/agent-variants → agent-variants}/WorktreeOrchestrator.testHelpers.js +3 -18
  15. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -0
  16. package/dist/agent-variants/briefContent.d.ts.map +1 -0
  17. package/dist/agent-variants/briefContent.js.map +1 -0
  18. package/dist/{mcp/agent-variants → agent-variants}/contracts.d.ts +715 -721
  19. package/dist/agent-variants/contracts.d.ts.map +1 -0
  20. package/dist/{mcp/agent-variants → agent-variants}/contracts.js +2 -3
  21. package/dist/agent-variants/contracts.js.map +1 -0
  22. package/dist/agent-variants/createProjectArtifacts.d.ts.map +1 -0
  23. package/dist/agent-variants/createProjectArtifacts.js.map +1 -0
  24. package/dist/agent-variants/diffQa.d.ts.map +1 -0
  25. package/dist/agent-variants/diffQa.js.map +1 -0
  26. package/dist/{mcp/agent-variants → agent-variants}/elementRefToTarget.d.ts +1 -1
  27. package/dist/agent-variants/elementRefToTarget.d.ts.map +1 -0
  28. package/dist/agent-variants/elementRefToTarget.js.map +1 -0
  29. package/dist/agent-variants/errors.d.ts.map +1 -0
  30. package/dist/agent-variants/errors.js.map +1 -0
  31. package/dist/agent-variants/generatedDestination.d.ts +29 -0
  32. package/dist/agent-variants/generatedDestination.d.ts.map +1 -0
  33. package/dist/agent-variants/generatedDestination.js +59 -0
  34. package/dist/agent-variants/generatedDestination.js.map +1 -0
  35. package/dist/{mcp/agent-variants → agent-variants}/index.d.ts +3 -6
  36. package/dist/agent-variants/index.d.ts.map +1 -0
  37. package/dist/{mcp/agent-variants → agent-variants}/index.js +3 -6
  38. package/dist/agent-variants/index.js.map +1 -0
  39. package/dist/agent-variants/previewQa.d.ts.map +1 -0
  40. package/dist/agent-variants/previewQa.js.map +1 -0
  41. package/dist/agent-variants/runLabel.d.ts.map +1 -0
  42. package/dist/agent-variants/runLabel.js.map +1 -0
  43. package/dist/agent-variants/runPlan.d.ts.map +1 -0
  44. package/dist/agent-variants/runPlan.js.map +1 -0
  45. package/dist/agent-variants/sourceContext.d.ts.map +1 -0
  46. package/dist/agent-variants/sourceContext.js.map +1 -0
  47. package/dist/agent-variants/variantContext.d.ts.map +1 -0
  48. package/dist/agent-variants/variantContext.js.map +1 -0
  49. package/dist/cli/client.d.ts +43 -0
  50. package/dist/cli/client.d.ts.map +1 -0
  51. package/dist/cli/client.js +109 -0
  52. package/dist/cli/client.js.map +1 -0
  53. package/dist/cli/commandNames.d.ts +9 -0
  54. package/dist/cli/commandNames.d.ts.map +1 -0
  55. package/dist/cli/commandNames.js +24 -0
  56. package/dist/cli/commandNames.js.map +1 -0
  57. package/dist/cli/commands/auth.d.ts +10 -0
  58. package/dist/cli/commands/auth.d.ts.map +1 -0
  59. package/dist/cli/commands/auth.js +81 -0
  60. package/dist/cli/commands/auth.js.map +1 -0
  61. package/dist/cli/commands/elementSelector.d.ts +10 -0
  62. package/dist/cli/commands/elementSelector.d.ts.map +1 -0
  63. package/dist/cli/commands/elementSelector.js +41 -0
  64. package/dist/cli/commands/elementSelector.js.map +1 -0
  65. package/dist/cli/commands/evidence.d.ts +9 -0
  66. package/dist/cli/commands/evidence.d.ts.map +1 -0
  67. package/dist/cli/commands/evidence.js +85 -0
  68. package/dist/cli/commands/evidence.js.map +1 -0
  69. package/dist/cli/commands/mcpServe.d.ts +40 -0
  70. package/dist/cli/commands/mcpServe.d.ts.map +1 -0
  71. package/dist/cli/commands/mcpServe.js +440 -0
  72. package/dist/cli/commands/mcpServe.js.map +1 -0
  73. package/dist/cli/commands/open.d.ts +28 -0
  74. package/dist/cli/commands/open.d.ts.map +1 -0
  75. package/dist/cli/commands/open.js +280 -0
  76. package/dist/cli/commands/open.js.map +1 -0
  77. package/dist/cli/commands/reference.d.ts +8 -0
  78. package/dist/cli/commands/reference.d.ts.map +1 -0
  79. package/dist/cli/commands/reference.js +101 -0
  80. package/dist/cli/commands/reference.js.map +1 -0
  81. package/dist/cli/commands/serve.d.ts +9 -0
  82. package/dist/cli/commands/serve.d.ts.map +1 -0
  83. package/dist/cli/commands/serve.js +182 -0
  84. package/dist/cli/commands/serve.js.map +1 -0
  85. package/dist/cli/commands/shared.d.ts +31 -0
  86. package/dist/cli/commands/shared.d.ts.map +1 -0
  87. package/dist/cli/commands/shared.js +82 -0
  88. package/dist/cli/commands/shared.js.map +1 -0
  89. package/dist/cli/commands/status.d.ts +10 -0
  90. package/dist/cli/commands/status.d.ts.map +1 -0
  91. package/dist/cli/commands/status.js +61 -0
  92. package/dist/cli/commands/status.js.map +1 -0
  93. package/dist/cli/commands/stop.d.ts +8 -0
  94. package/dist/cli/commands/stop.d.ts.map +1 -0
  95. package/dist/cli/commands/stop.js +41 -0
  96. package/dist/cli/commands/stop.js.map +1 -0
  97. package/dist/cli/commands/variants.d.ts +4 -0
  98. package/dist/cli/commands/variants.d.ts.map +1 -0
  99. package/dist/cli/commands/variants.js +374 -0
  100. package/dist/cli/commands/variants.js.map +1 -0
  101. package/dist/cli/commands/wait.d.ts +10 -0
  102. package/dist/cli/commands/wait.d.ts.map +1 -0
  103. package/dist/cli/commands/wait.js +101 -0
  104. package/dist/cli/commands/wait.js.map +1 -0
  105. package/dist/cli/entry.d.ts +12 -0
  106. package/dist/cli/entry.d.ts.map +1 -0
  107. package/dist/cli/entry.js +61 -0
  108. package/dist/cli/entry.js.map +1 -0
  109. package/dist/cli/envelope.d.ts +60 -0
  110. package/dist/cli/envelope.d.ts.map +1 -0
  111. package/dist/cli/envelope.js +57 -0
  112. package/dist/cli/envelope.js.map +1 -0
  113. package/dist/cli/flags.d.ts +20 -0
  114. package/dist/cli/flags.d.ts.map +1 -0
  115. package/dist/cli/flags.js +72 -0
  116. package/dist/cli/flags.js.map +1 -0
  117. package/dist/cli/handoff.d.ts +54 -0
  118. package/dist/cli/handoff.d.ts.map +1 -0
  119. package/dist/cli/handoff.js +106 -0
  120. package/dist/cli/handoff.js.map +1 -0
  121. package/dist/cli/handoffStore.d.ts +24 -0
  122. package/dist/cli/handoffStore.d.ts.map +1 -0
  123. package/dist/cli/handoffStore.js +49 -0
  124. package/dist/cli/handoffStore.js.map +1 -0
  125. package/dist/cli/hostWorkNextAction.d.ts +45 -0
  126. package/dist/cli/hostWorkNextAction.d.ts.map +1 -0
  127. package/dist/cli/hostWorkNextAction.js +43 -0
  128. package/dist/cli/hostWorkNextAction.js.map +1 -0
  129. package/dist/cli/io.d.ts +17 -0
  130. package/dist/cli/io.d.ts.map +1 -0
  131. package/dist/cli/io.js +19 -0
  132. package/dist/cli/io.js.map +1 -0
  133. package/dist/cli/router.d.ts +23 -0
  134. package/dist/cli/router.d.ts.map +1 -0
  135. package/dist/cli/router.js +236 -0
  136. package/dist/cli/router.js.map +1 -0
  137. package/dist/cli/runnerSelection.d.ts +60 -0
  138. package/dist/cli/runnerSelection.d.ts.map +1 -0
  139. package/dist/cli/runnerSelection.js +93 -0
  140. package/dist/cli/runnerSelection.js.map +1 -0
  141. package/dist/cli/serverHandshake.d.ts +51 -0
  142. package/dist/cli/serverHandshake.d.ts.map +1 -0
  143. package/dist/cli/serverHandshake.js +144 -0
  144. package/dist/cli/serverHandshake.js.map +1 -0
  145. package/dist/index.d.ts +2 -14
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +84 -138
  148. package/dist/index.js.map +1 -1
  149. package/dist/install/allowlists.d.ts +65 -0
  150. package/dist/install/allowlists.d.ts.map +1 -0
  151. package/dist/install/allowlists.js +333 -0
  152. package/dist/install/allowlists.js.map +1 -0
  153. package/dist/install/codexGuidance.d.ts +11 -0
  154. package/dist/install/codexGuidance.d.ts.map +1 -0
  155. package/dist/install/codexGuidance.js +90 -0
  156. package/dist/install/codexGuidance.js.map +1 -0
  157. package/dist/install/harnesses.d.ts +37 -26
  158. package/dist/install/harnesses.d.ts.map +1 -1
  159. package/dist/install/harnesses.js +312 -502
  160. package/dist/install/harnesses.js.map +1 -1
  161. package/dist/install/legacyMcp.d.ts +26 -0
  162. package/dist/install/legacyMcp.d.ts.map +1 -0
  163. package/dist/install/legacyMcp.js +160 -0
  164. package/dist/install/legacyMcp.js.map +1 -0
  165. package/dist/install/mcpRegistration.d.ts +45 -0
  166. package/dist/install/mcpRegistration.d.ts.map +1 -0
  167. package/dist/install/mcpRegistration.js +215 -0
  168. package/dist/install/mcpRegistration.js.map +1 -0
  169. package/dist/mcp/changeBatchClassification.d.ts +18 -20
  170. package/dist/mcp/changeBatchClassification.d.ts.map +1 -1
  171. package/dist/mcp/changeBatchClassification.js +41 -46
  172. package/dist/mcp/changeBatchClassification.js.map +1 -1
  173. package/dist/proxy-middleware/proxy-config.d.ts +6 -0
  174. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  175. package/dist/proxy-middleware/proxy-config.js +162 -5
  176. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  177. package/dist/routes/agentVariants.d.ts +14 -2
  178. package/dist/routes/agentVariants.d.ts.map +1 -1
  179. package/dist/routes/agentVariants.js +321 -65
  180. package/dist/routes/agentVariants.js.map +1 -1
  181. package/dist/routes/cli.d.ts +31 -0
  182. package/dist/routes/cli.d.ts.map +1 -0
  183. package/dist/routes/cli.js +95 -0
  184. package/dist/routes/cli.js.map +1 -0
  185. package/dist/routes/git.d.ts +1 -0
  186. package/dist/routes/git.d.ts.map +1 -1
  187. package/dist/routes/git.js +2 -1
  188. package/dist/routes/git.js.map +1 -1
  189. package/dist/routes/inlineStartTracker.d.ts +23 -0
  190. package/dist/routes/inlineStartTracker.d.ts.map +1 -0
  191. package/dist/routes/inlineStartTracker.js +17 -0
  192. package/dist/routes/inlineStartTracker.js.map +1 -0
  193. package/dist/routes/mcp.d.ts +2 -12
  194. package/dist/routes/mcp.d.ts.map +1 -1
  195. package/dist/routes/mcp.js +4 -785
  196. package/dist/routes/mcp.js.map +1 -1
  197. package/dist/server.d.ts +24 -9
  198. package/dist/server.d.ts.map +1 -1
  199. package/dist/server.js +169 -33
  200. package/dist/server.js.map +1 -1
  201. package/dist/services/CommitMessageGenerator.d.ts +9 -1
  202. package/dist/services/CommitMessageGenerator.d.ts.map +1 -1
  203. package/dist/services/CommitMessageGenerator.js +4 -1
  204. package/dist/services/CommitMessageGenerator.js.map +1 -1
  205. package/dist/services/ComponentSearchService.d.ts +4 -1
  206. package/dist/services/ComponentSearchService.d.ts.map +1 -1
  207. package/dist/services/ComponentSearchService.js.map +1 -1
  208. package/dist/services/ConfigManager.d.ts +8 -0
  209. package/dist/services/ConfigManager.d.ts.map +1 -1
  210. package/dist/services/ConfigManager.js +9 -0
  211. package/dist/services/ConfigManager.js.map +1 -1
  212. package/dist/services/HistoryReplayService.d.ts +20 -9
  213. package/dist/services/HistoryReplayService.d.ts.map +1 -1
  214. package/dist/services/HistoryReplayService.js +99 -43
  215. package/dist/services/HistoryReplayService.js.map +1 -1
  216. package/dist/services/MCPVariantsTelemetry.d.ts +1 -1
  217. package/dist/services/MCPVariantsTelemetry.d.ts.map +1 -1
  218. package/dist/services/MCPVariantsTelemetry.js +1 -0
  219. package/dist/services/MCPVariantsTelemetry.js.map +1 -1
  220. package/dist/services/PRTitleGenerator.d.ts +10 -2
  221. package/dist/services/PRTitleGenerator.d.ts.map +1 -1
  222. package/dist/services/PRTitleGenerator.js +8 -2
  223. package/dist/services/PRTitleGenerator.js.map +1 -1
  224. package/dist/services/ProjectDetectionService.d.ts.map +1 -1
  225. package/dist/services/ProjectDetectionService.js +14 -4
  226. package/dist/services/ProjectDetectionService.js.map +1 -1
  227. package/dist/services/ProjectMetadataStore.d.ts +115 -0
  228. package/dist/services/ProjectMetadataStore.d.ts.map +1 -0
  229. package/dist/services/ProjectMetadataStore.js +336 -0
  230. package/dist/services/ProjectMetadataStore.js.map +1 -0
  231. package/dist/services/SessionBridgeService.d.ts +52 -224
  232. package/dist/services/SessionBridgeService.d.ts.map +1 -1
  233. package/dist/services/SessionBridgeService.js +97 -649
  234. package/dist/services/SessionBridgeService.js.map +1 -1
  235. package/dist/services/SessionService.d.ts +4 -1
  236. package/dist/services/SessionService.d.ts.map +1 -1
  237. package/dist/services/SessionService.js +7 -4
  238. package/dist/services/SessionService.js.map +1 -1
  239. package/dist/services/StaticFileService.d.ts.map +1 -1
  240. package/dist/services/StaticFileService.js +6 -0
  241. package/dist/services/StaticFileService.js.map +1 -1
  242. package/dist/services/TelemetryService.d.ts +16 -80
  243. package/dist/services/TelemetryService.d.ts.map +1 -1
  244. package/dist/services/TelemetryService.js +18 -94
  245. package/dist/services/TelemetryService.js.map +1 -1
  246. package/dist/services/VariantGenerationService.d.ts +52 -0
  247. package/dist/services/VariantGenerationService.d.ts.map +1 -0
  248. package/dist/services/VariantGenerationService.js +272 -0
  249. package/dist/services/VariantGenerationService.js.map +1 -0
  250. package/dist/services/VariantHistoryService.d.ts +37 -1
  251. package/dist/services/VariantHistoryService.d.ts.map +1 -1
  252. package/dist/services/VariantHistoryService.js +122 -1
  253. package/dist/services/VariantHistoryService.js.map +1 -1
  254. package/dist/services/VariantRunService.d.ts +25 -6
  255. package/dist/services/VariantRunService.d.ts.map +1 -1
  256. package/dist/services/VariantRunService.js +98 -4
  257. package/dist/services/VariantRunService.js.map +1 -1
  258. package/dist/services/VariantsRuntime.d.ts +1 -3
  259. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  260. package/dist/services/VariantsRuntime.js +0 -1
  261. package/dist/services/VariantsRuntime.js.map +1 -1
  262. package/dist/services/WorktreeManager.d.ts +1 -1
  263. package/dist/services/WorktreeManager.d.ts.map +1 -1
  264. package/dist/services/createAgentVariantsOrchestrator.d.ts +2 -2
  265. package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
  266. package/dist/services/createAgentVariantsOrchestrator.js +2 -3
  267. package/dist/services/createAgentVariantsOrchestrator.js.map +1 -1
  268. package/dist/services/projectMetadataMigrations.d.ts +59 -0
  269. package/dist/services/projectMetadataMigrations.d.ts.map +1 -0
  270. package/dist/services/projectMetadataMigrations.js +109 -0
  271. package/dist/services/projectMetadataMigrations.js.map +1 -0
  272. package/dist/types/change-request-types.d.ts +22 -0
  273. package/dist/types/change-request-types.d.ts.map +1 -1
  274. package/dist/utils/logger.d.ts +2 -1
  275. package/dist/utils/logger.d.ts.map +1 -1
  276. package/dist/utils/logger.js +3 -7
  277. package/dist/utils/logger.js.map +1 -1
  278. package/dist/utils/loopback.d.ts +3 -0
  279. package/dist/utils/loopback.d.ts.map +1 -0
  280. package/dist/utils/loopback.js +13 -0
  281. package/dist/utils/loopback.js.map +1 -0
  282. package/dist/utils/pid.d.ts +3 -0
  283. package/dist/utils/pid.d.ts.map +1 -0
  284. package/dist/utils/pid.js +15 -0
  285. package/dist/utils/pid.js.map +1 -0
  286. package/dist/utils/queueAccess.d.ts +7 -0
  287. package/dist/utils/queueAccess.d.ts.map +1 -1
  288. package/dist/utils/queueAccess.js +8 -1
  289. package/dist/utils/queueAccess.js.map +1 -1
  290. package/dist/utils/shouldRecordHostedDemoSessionAction.d.ts +3 -3
  291. package/dist/utils/shouldRecordHostedDemoSessionAction.d.ts.map +1 -1
  292. package/dist/utils/shouldRecordHostedDemoSessionAction.js +3 -19
  293. package/dist/utils/shouldRecordHostedDemoSessionAction.js.map +1 -1
  294. package/dist/utils/skillWriter.d.ts.map +1 -1
  295. package/dist/utils/skillWriter.js +12 -11
  296. package/dist/utils/skillWriter.js.map +1 -1
  297. package/dist/utils/skills/claude-skill.d.ts +7 -2
  298. package/dist/utils/skills/claude-skill.d.ts.map +1 -1
  299. package/dist/utils/skills/claude-skill.js +10 -83
  300. package/dist/utils/skills/claude-skill.js.map +1 -1
  301. package/dist/utils/skills/cli-guidance.d.ts +12 -0
  302. package/dist/utils/skills/cli-guidance.d.ts.map +1 -0
  303. package/dist/utils/skills/cli-guidance.js +57 -0
  304. package/dist/utils/skills/cli-guidance.js.map +1 -0
  305. package/dist/utils/skills/cursor-rules.d.ts +8 -2
  306. package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
  307. package/dist/utils/skills/cursor-rules.js +11 -80
  308. package/dist/utils/skills/cursor-rules.js.map +1 -1
  309. package/dist/utils/variantSessionStart.d.ts +1 -1
  310. package/dist/utils/variantSessionStart.d.ts.map +1 -1
  311. package/dist/utils/variantSessionStart.js +1 -1
  312. package/dist/utils/variantSessionStart.js.map +1 -1
  313. package/package.json +4 -4
  314. package/src/ui/dist/assets/main-BWOvFoal.js +419 -0
  315. package/src/ui/dist/assets/main-Dyos9I29.css +1 -0
  316. package/src/ui/dist/index.html +2 -2
  317. package/dist/mcp/agent-variants/SessionStore.d.ts.map +0 -1
  318. package/dist/mcp/agent-variants/SessionStore.js.map +0 -1
  319. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +0 -1
  320. package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +0 -1
  321. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +0 -1
  322. package/dist/mcp/agent-variants/WorktreeOrchestrator.testHelpers.js.map +0 -1
  323. package/dist/mcp/agent-variants/areNaSourceContext.d.ts +0 -20
  324. package/dist/mcp/agent-variants/areNaSourceContext.d.ts.map +0 -1
  325. package/dist/mcp/agent-variants/areNaSourceContext.js +0 -118
  326. package/dist/mcp/agent-variants/areNaSourceContext.js.map +0 -1
  327. package/dist/mcp/agent-variants/briefContent.d.ts.map +0 -1
  328. package/dist/mcp/agent-variants/briefContent.js.map +0 -1
  329. package/dist/mcp/agent-variants/contracts.d.ts.map +0 -1
  330. package/dist/mcp/agent-variants/contracts.js.map +0 -1
  331. package/dist/mcp/agent-variants/createProjectArtifacts.d.ts.map +0 -1
  332. package/dist/mcp/agent-variants/createProjectArtifacts.js.map +0 -1
  333. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts +0 -63
  334. package/dist/mcp/agent-variants/createZeroToOneTool.d.ts.map +0 -1
  335. package/dist/mcp/agent-variants/createZeroToOneTool.js +0 -265
  336. package/dist/mcp/agent-variants/createZeroToOneTool.js.map +0 -1
  337. package/dist/mcp/agent-variants/diffQa.d.ts.map +0 -1
  338. package/dist/mcp/agent-variants/diffQa.js.map +0 -1
  339. package/dist/mcp/agent-variants/elementRefToTarget.d.ts.map +0 -1
  340. package/dist/mcp/agent-variants/elementRefToTarget.js.map +0 -1
  341. package/dist/mcp/agent-variants/errors.d.ts.map +0 -1
  342. package/dist/mcp/agent-variants/errors.js.map +0 -1
  343. package/dist/mcp/agent-variants/generatedDestination.d.ts +0 -75
  344. package/dist/mcp/agent-variants/generatedDestination.d.ts.map +0 -1
  345. package/dist/mcp/agent-variants/generatedDestination.js +0 -103
  346. package/dist/mcp/agent-variants/generatedDestination.js.map +0 -1
  347. package/dist/mcp/agent-variants/index.d.ts.map +0 -1
  348. package/dist/mcp/agent-variants/index.js.map +0 -1
  349. package/dist/mcp/agent-variants/pendingChangesAdapter.d.ts +0 -38
  350. package/dist/mcp/agent-variants/pendingChangesAdapter.d.ts.map +0 -1
  351. package/dist/mcp/agent-variants/pendingChangesAdapter.js +0 -93
  352. package/dist/mcp/agent-variants/pendingChangesAdapter.js.map +0 -1
  353. package/dist/mcp/agent-variants/pinterestSourceContext.d.ts +0 -23
  354. package/dist/mcp/agent-variants/pinterestSourceContext.d.ts.map +0 -1
  355. package/dist/mcp/agent-variants/pinterestSourceContext.js +0 -137
  356. package/dist/mcp/agent-variants/pinterestSourceContext.js.map +0 -1
  357. package/dist/mcp/agent-variants/previewQa.d.ts.map +0 -1
  358. package/dist/mcp/agent-variants/previewQa.js.map +0 -1
  359. package/dist/mcp/agent-variants/runLabel.d.ts.map +0 -1
  360. package/dist/mcp/agent-variants/runLabel.js.map +0 -1
  361. package/dist/mcp/agent-variants/runPlan.d.ts.map +0 -1
  362. package/dist/mcp/agent-variants/runPlan.js.map +0 -1
  363. package/dist/mcp/agent-variants/sourceContext.d.ts.map +0 -1
  364. package/dist/mcp/agent-variants/sourceContext.js.map +0 -1
  365. package/dist/mcp/agent-variants/tools.d.ts +0 -187
  366. package/dist/mcp/agent-variants/tools.d.ts.map +0 -1
  367. package/dist/mcp/agent-variants/tools.js +0 -1165
  368. package/dist/mcp/agent-variants/tools.js.map +0 -1
  369. package/dist/mcp/agent-variants/variantContext.d.ts.map +0 -1
  370. package/dist/mcp/agent-variants/variantContext.js.map +0 -1
  371. package/dist/mcp/auth/httpOAuthProvider.d.ts +0 -103
  372. package/dist/mcp/auth/httpOAuthProvider.d.ts.map +0 -1
  373. package/dist/mcp/auth/httpOAuthProvider.js +0 -735
  374. package/dist/mcp/auth/httpOAuthProvider.js.map +0 -1
  375. package/dist/mcp/auth/tools.d.ts +0 -39
  376. package/dist/mcp/auth/tools.d.ts.map +0 -1
  377. package/dist/mcp/auth/tools.js +0 -304
  378. package/dist/mcp/auth/tools.js.map +0 -1
  379. package/dist/mcp/branding.d.ts +0 -4
  380. package/dist/mcp/branding.d.ts.map +0 -1
  381. package/dist/mcp/branding.js +0 -8
  382. package/dist/mcp/branding.js.map +0 -1
  383. package/dist/mcp/hostedServer.d.ts +0 -27
  384. package/dist/mcp/hostedServer.d.ts.map +0 -1
  385. package/dist/mcp/hostedServer.js +0 -71
  386. package/dist/mcp/hostedServer.js.map +0 -1
  387. package/dist/mcp/httpServer.d.ts +0 -63
  388. package/dist/mcp/httpServer.d.ts.map +0 -1
  389. package/dist/mcp/httpServer.js +0 -602
  390. package/dist/mcp/httpServer.js.map +0 -1
  391. package/dist/mcp/instructions.d.ts +0 -25
  392. package/dist/mcp/instructions.d.ts.map +0 -1
  393. package/dist/mcp/instructions.js +0 -39
  394. package/dist/mcp/instructions.js.map +0 -1
  395. package/dist/mcp/integrations/tools.d.ts +0 -19
  396. package/dist/mcp/integrations/tools.d.ts.map +0 -1
  397. package/dist/mcp/integrations/tools.js +0 -101
  398. package/dist/mcp/integrations/tools.js.map +0 -1
  399. package/dist/mcp/server.d.ts +0 -214
  400. package/dist/mcp/server.d.ts.map +0 -1
  401. package/dist/mcp/server.js +0 -2536
  402. package/dist/mcp/server.js.map +0 -1
  403. package/dist/mcp/toolAnalytics.d.ts +0 -26
  404. package/dist/mcp/toolAnalytics.d.ts.map +0 -1
  405. package/dist/mcp/toolAnalytics.js +0 -95
  406. package/dist/mcp/toolAnalytics.js.map +0 -1
  407. package/dist/mcp/types.d.ts +0 -7
  408. package/dist/mcp/types.d.ts.map +0 -1
  409. package/dist/mcp/types.js +0 -3
  410. package/dist/mcp/types.js.map +0 -1
  411. package/dist/mcp/watchLoopResumePrompt.d.ts +0 -16
  412. package/dist/mcp/watchLoopResumePrompt.d.ts.map +0 -1
  413. package/dist/mcp/watchLoopResumePrompt.js +0 -21
  414. package/dist/mcp/watchLoopResumePrompt.js.map +0 -1
  415. package/dist/prompts/agentModPrompts.d.ts +0 -4
  416. package/dist/prompts/agentModPrompts.d.ts.map +0 -1
  417. package/dist/prompts/agentModPrompts.js +0 -34
  418. package/dist/prompts/agentModPrompts.js.map +0 -1
  419. package/dist/prompts/tokenWriterPrompts.d.ts +0 -4
  420. package/dist/prompts/tokenWriterPrompts.d.ts.map +0 -1
  421. package/dist/prompts/tokenWriterPrompts.js +0 -59
  422. package/dist/prompts/tokenWriterPrompts.js.map +0 -1
  423. package/dist/routes/comments.d.ts +0 -3
  424. package/dist/routes/comments.d.ts.map +0 -1
  425. package/dist/routes/comments.js +0 -113
  426. package/dist/routes/comments.js.map +0 -1
  427. package/dist/routes/components.d.ts +0 -7
  428. package/dist/routes/components.d.ts.map +0 -1
  429. package/dist/routes/components.js +0 -88
  430. package/dist/routes/components.js.map +0 -1
  431. package/dist/routes/controls.d.ts +0 -7
  432. package/dist/routes/controls.d.ts.map +0 -1
  433. package/dist/routes/controls.js +0 -50
  434. package/dist/routes/controls.js.map +0 -1
  435. package/dist/routes/design.d.ts +0 -2
  436. package/dist/routes/design.d.ts.map +0 -1
  437. package/dist/routes/design.js +0 -29
  438. package/dist/routes/design.js.map +0 -1
  439. package/dist/routes/modifications.d.ts +0 -10
  440. package/dist/routes/modifications.d.ts.map +0 -1
  441. package/dist/routes/modifications.js +0 -394
  442. package/dist/routes/modifications.js.map +0 -1
  443. package/dist/routes/tokens.d.ts +0 -2
  444. package/dist/routes/tokens.d.ts.map +0 -1
  445. package/dist/routes/tokens.js +0 -115
  446. package/dist/routes/tokens.js.map +0 -1
  447. package/dist/services/AgentSessionService.d.ts +0 -91
  448. package/dist/services/AgentSessionService.d.ts.map +0 -1
  449. package/dist/services/AgentSessionService.js +0 -282
  450. package/dist/services/AgentSessionService.js.map +0 -1
  451. package/dist/services/BridgeBatchPipeline.d.ts +0 -103
  452. package/dist/services/BridgeBatchPipeline.d.ts.map +0 -1
  453. package/dist/services/BridgeBatchPipeline.js +0 -295
  454. package/dist/services/BridgeBatchPipeline.js.map +0 -1
  455. package/dist/services/BridgeQueueStore.d.ts +0 -28
  456. package/dist/services/BridgeQueueStore.d.ts.map +0 -1
  457. package/dist/services/BridgeQueueStore.js +0 -88
  458. package/dist/services/BridgeQueueStore.js.map +0 -1
  459. package/dist/services/CSSTokenWriter.d.ts +0 -22
  460. package/dist/services/CSSTokenWriter.d.ts.map +0 -1
  461. package/dist/services/CSSTokenWriter.js +0 -116
  462. package/dist/services/CSSTokenWriter.js.map +0 -1
  463. package/dist/services/DesignTokenService.d.ts +0 -39
  464. package/dist/services/DesignTokenService.d.ts.map +0 -1
  465. package/dist/services/DesignTokenService.js +0 -100
  466. package/dist/services/DesignTokenService.js.map +0 -1
  467. package/dist/services/InlineVariantGenerationService.d.ts +0 -51
  468. package/dist/services/InlineVariantGenerationService.d.ts.map +0 -1
  469. package/dist/services/InlineVariantGenerationService.js +0 -475
  470. package/dist/services/InlineVariantGenerationService.js.map +0 -1
  471. package/dist/services/InterfaceGenerationService.d.ts +0 -12
  472. package/dist/services/InterfaceGenerationService.d.ts.map +0 -1
  473. package/dist/services/InterfaceGenerationService.js +0 -256
  474. package/dist/services/InterfaceGenerationService.js.map +0 -1
  475. package/dist/services/TailwindConfigWriter.d.ts +0 -24
  476. package/dist/services/TailwindConfigWriter.d.ts.map +0 -1
  477. package/dist/services/TailwindConfigWriter.js +0 -105
  478. package/dist/services/TailwindConfigWriter.js.map +0 -1
  479. package/dist/services/TerminalAgentRunner.d.ts +0 -65
  480. package/dist/services/TerminalAgentRunner.d.ts.map +0 -1
  481. package/dist/services/TerminalAgentRunner.js +0 -511
  482. package/dist/services/TerminalAgentRunner.js.map +0 -1
  483. package/dist/services/VisualVariantAgentRunner.d.ts +0 -20
  484. package/dist/services/VisualVariantAgentRunner.d.ts.map +0 -1
  485. package/dist/services/VisualVariantAgentRunner.js +0 -66
  486. package/dist/services/VisualVariantAgentRunner.js.map +0 -1
  487. package/dist/services/adapters/TailwindCSSTokenAdapter.d.ts +0 -35
  488. package/dist/services/adapters/TailwindCSSTokenAdapter.d.ts.map +0 -1
  489. package/dist/services/adapters/TailwindCSSTokenAdapter.js +0 -278
  490. package/dist/services/adapters/TailwindCSSTokenAdapter.js.map +0 -1
  491. package/dist/services/agent/AgentCore.d.ts +0 -126
  492. package/dist/services/agent/AgentCore.d.ts.map +0 -1
  493. package/dist/services/agent/AgentCore.js +0 -759
  494. package/dist/services/agent/AgentCore.js.map +0 -1
  495. package/dist/services/agent/AgentModService.d.ts +0 -98
  496. package/dist/services/agent/AgentModService.d.ts.map +0 -1
  497. package/dist/services/agent/AgentModService.js +0 -400
  498. package/dist/services/agent/AgentModService.js.map +0 -1
  499. package/dist/services/agent/index.d.ts +0 -2
  500. package/dist/services/agent/index.d.ts.map +0 -1
  501. package/dist/services/agent/index.js +0 -6
  502. package/dist/services/agent/index.js.map +0 -1
  503. package/dist/types/editor-interface-types.d.ts +0 -67
  504. package/dist/types/editor-interface-types.d.ts.map +0 -1
  505. package/dist/types/editor-interface-types.js +0 -12
  506. package/dist/types/editor-interface-types.js.map +0 -1
  507. package/dist/utils/elementRefToContext.d.ts +0 -4
  508. package/dist/utils/elementRefToContext.d.ts.map +0 -1
  509. package/dist/utils/elementRefToContext.js +0 -63
  510. package/dist/utils/elementRefToContext.js.map +0 -1
  511. package/dist/utils/skills/shared-variants-protocol.d.ts +0 -69
  512. package/dist/utils/skills/shared-variants-protocol.d.ts.map +0 -1
  513. package/dist/utils/skills/shared-variants-protocol.js +0 -292
  514. package/dist/utils/skills/shared-variants-protocol.js.map +0 -1
  515. package/src/ui/dist/assets/main-Dnah9pII.css +0 -1
  516. package/src/ui/dist/assets/main-plq7aT76.js +0 -656
  517. /package/dist/{mcp/agent-variants → agent-variants}/briefContent.d.ts +0 -0
  518. /package/dist/{mcp/agent-variants → agent-variants}/briefContent.js +0 -0
  519. /package/dist/{mcp/agent-variants → agent-variants}/createProjectArtifacts.d.ts +0 -0
  520. /package/dist/{mcp/agent-variants → agent-variants}/createProjectArtifacts.js +0 -0
  521. /package/dist/{mcp/agent-variants → agent-variants}/diffQa.d.ts +0 -0
  522. /package/dist/{mcp/agent-variants → agent-variants}/diffQa.js +0 -0
  523. /package/dist/{mcp/agent-variants → agent-variants}/elementRefToTarget.js +0 -0
  524. /package/dist/{mcp/agent-variants → agent-variants}/errors.d.ts +0 -0
  525. /package/dist/{mcp/agent-variants → agent-variants}/errors.js +0 -0
  526. /package/dist/{mcp/agent-variants → agent-variants}/previewQa.d.ts +0 -0
  527. /package/dist/{mcp/agent-variants → agent-variants}/previewQa.js +0 -0
  528. /package/dist/{mcp/agent-variants → agent-variants}/runLabel.d.ts +0 -0
  529. /package/dist/{mcp/agent-variants → agent-variants}/runLabel.js +0 -0
  530. /package/dist/{mcp/agent-variants → agent-variants}/runPlan.d.ts +0 -0
  531. /package/dist/{mcp/agent-variants → agent-variants}/runPlan.js +0 -0
  532. /package/dist/{mcp/agent-variants → agent-variants}/sourceContext.d.ts +0 -0
  533. /package/dist/{mcp/agent-variants → agent-variants}/sourceContext.js +0 -0
  534. /package/dist/{mcp/agent-variants → agent-variants}/variantContext.d.ts +0 -0
  535. /package/dist/{mcp/agent-variants → agent-variants}/variantContext.js +0 -0
@@ -1,797 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.createMCPRouter = void 0;
37
- const crypto_1 = require("crypto");
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
4
  const express_1 = require("express");
41
- const v3_1 = require("zod/v3");
42
5
  const index_core_1 = require("../index-core");
43
- const createAgentVariantsOrchestrator_1 = require("../services/createAgentVariantsOrchestrator");
44
- const MCPOnboardingTelemetry_1 = require("../services/MCPOnboardingTelemetry");
45
- const elementFileHintSignals_1 = require("../utils/elementFileHintSignals");
46
- const contracts_1 = require("../mcp/agent-variants/contracts");
47
- const changeBatchClassification_1 = require("../mcp/changeBatchClassification");
48
- const queueAccess_1 = require("../utils/queueAccess");
49
- const variantSessionStart_1 = require("../utils/variantSessionStart");
50
6
  const portUtils_1 = require("../utils/portUtils");
51
7
  const log = (0, index_core_1.createLogger)('MCPRoutes');
52
- const MAX_FILE_MATCHES_PER_ELEMENT = 6;
53
- const elementRefSchema = v3_1.z.object({
54
- xpath: v3_1.z.string(),
55
- tagName: v3_1.z.string(),
56
- className: v3_1.z.string(),
57
- id: v3_1.z.string(),
58
- filePaths: v3_1.z.array(v3_1.z.string()),
59
- rivetId: v3_1.z.string().optional(),
60
- textContent: v3_1.z.string().optional(),
61
- attributes: v3_1.z.record(v3_1.z.string()).optional(),
62
- componentTree: v3_1.z
63
- .array(v3_1.z.object({
64
- name: v3_1.z.string(),
65
- type: v3_1.z.string().optional(),
66
- depth: v3_1.z.number().optional(),
67
- }))
68
- .optional(),
69
- parentElementSummary: v3_1.z
70
- .object({
71
- tagName: v3_1.z.string(),
72
- className: v3_1.z.string(),
73
- textSnippet: v3_1.z.string(),
74
- })
75
- .optional(),
76
- });
77
- const variantRequestSchema = v3_1.z.object({
78
- count: v3_1.z.number().int().min(contracts_1.VARIANT_COUNT_MIN).max(contracts_1.VARIANT_COUNT_MAX),
79
- });
80
- const styleChangeItemSchema = v3_1.z.object({
81
- kind: v3_1.z.literal('style'),
82
- element: elementRefSchema,
83
- property: v3_1.z.string(),
84
- from: v3_1.z.string(),
85
- to: v3_1.z.string(),
86
- });
87
- const textChangeItemSchema = v3_1.z.object({
88
- kind: v3_1.z.literal('text'),
89
- element: elementRefSchema,
90
- from: v3_1.z.string(),
91
- to: v3_1.z.string(),
92
- });
93
- const commentReferenceItemSchema = v3_1.z.object({
94
- sessionId: v3_1.z.string().min(1),
95
- variantId: v3_1.z.string().min(1),
96
- label: v3_1.z.string().min(1),
97
- origin: v3_1.z.enum(['live', 'history']),
98
- });
99
- const changeRequestTargetSchema = v3_1.z
100
- .object({
101
- kind: v3_1.z.literal('variant'),
102
- sessionId: v3_1.z.string().min(1),
103
- variantId: v3_1.z.string().min(1),
104
- })
105
- .optional();
106
- const staticPreviewTargetSchema = v3_1.z
107
- .object({
108
- kind: v3_1.z.literal('static_preview'),
109
- sessionId: v3_1.z.string().min(1),
110
- variantId: v3_1.z.string().min(1),
111
- })
112
- .optional();
113
- // Per-item payload caps for attached reference images (base64 data URLs).
114
- // Bounds a single request's memory footprint so the unauthenticated queue
115
- // endpoint can't be used to push arbitrarily large bodies through to the
116
- // in-memory queue. ~6MB decoded per image (base64 ≈ 4/3 of bytes) × 8.
117
- const MAX_COMMENT_IMAGES = 8;
118
- const MAX_IMAGE_DATA_URL_CHARS = 8_000_000;
119
- const imagesSchema = v3_1.z
120
- .array(v3_1.z.string().max(MAX_IMAGE_DATA_URL_CHARS))
121
- .max(MAX_COMMENT_IMAGES)
122
- .optional();
123
- const commentChangeItemSchema = v3_1.z.object({
124
- kind: v3_1.z.literal('comment'),
125
- element: elementRefSchema,
126
- elements: v3_1.z.array(elementRefSchema).optional(),
127
- target: changeRequestTargetSchema,
128
- staticPreviewTarget: staticPreviewTargetSchema,
129
- instruction: v3_1.z.string(),
130
- images: imagesSchema,
131
- references: v3_1.z.array(commentReferenceItemSchema).max(8).optional(),
132
- variantRequest: variantRequestSchema.optional(),
133
- });
134
- const chatChangeItemSchema = v3_1.z.object({
135
- kind: v3_1.z.literal('chat'),
136
- instruction: v3_1.z.string(),
137
- images: imagesSchema,
138
- });
139
- const variantChangeItemSchema = v3_1.z
140
- .object({ kind: v3_1.z.literal('variant') })
141
- .passthrough();
142
- const changeItemSchema = v3_1.z.discriminatedUnion('kind', [
143
- styleChangeItemSchema,
144
- textChangeItemSchema,
145
- commentChangeItemSchema,
146
- chatChangeItemSchema,
147
- variantChangeItemSchema,
148
- ]);
149
- const telemetryContextSchema = v3_1.z
150
- .object({
151
- browserSessionId: v3_1.z.string().optional(),
152
- browserDistinctId: v3_1.z.string().optional(),
153
- })
154
- .optional();
155
- const changeRequestSchema = v3_1.z.object({
156
- changes: v3_1.z.array(changeItemSchema).min(1),
157
- sourceFiles: v3_1.z.array(v3_1.z.string()).optional(),
158
- target: changeRequestTargetSchema,
159
- telemetryContext: telemetryContextSchema,
160
- traceId: v3_1.z.string().optional(),
161
- agentRunId: v3_1.z.string().optional(),
162
- });
163
- const variantRequestModeFor = (args) => {
164
- if (args.hasTarget)
165
- return 'vary';
166
- if (args.hasStaticPreviewRefine)
167
- return 'comment_refine';
168
- return 'initial_generation';
169
- };
170
- const variantRequestTelemetryFor = (args) => {
171
- const comments = args.changes.filter((item) => item.kind === 'comment');
172
- const imageCount = comments.reduce((sum, item) => sum + (item.images?.length ?? 0), 0);
173
- const instructionLength = args.changes.reduce((sum, item) => {
174
- if ('instruction' in item && typeof item.instruction === 'string') {
175
- return sum + item.instruction.length;
176
- }
177
- return sum;
178
- }, 0);
179
- return {
180
- sessionId: args.sessionId,
181
- requestId: args.agentRunId ?? args.traceId,
182
- traceId: args.traceId,
183
- agentRunId: args.agentRunId,
184
- entryPoint: 'visual_editor_comment',
185
- mode: variantRequestModeFor(args),
186
- targetVariantId: args.targetVariantId,
187
- sourceVariantId: args.hasTarget ? args.targetVariantId : undefined,
188
- requestedCount: args.requestedCount,
189
- commentCount: comments.length,
190
- imageCount,
191
- instructionLength,
192
- sourceFileCount: args.sourceFileCount,
193
- };
194
- };
195
- /**
196
- * Enrich elements that have empty filePaths by running a server-side
197
- * component search against the project source files.
198
- * Mutates the ChangeRequest in place: updates per-element filePaths
199
- * and rebuilds the top-level sourceFiles list.
200
- */
201
- async function enrichChangeRequest(request, projectPath) {
202
- // Collect unique ElementRefs that need enrichment
203
- const refsToEnrich = [];
204
- for (const item of request.changes) {
205
- if ('element' in item && item.element.filePaths.length === 0) {
206
- if ((0, elementFileHintSignals_1.shouldSearchElementFileHints)(item.element)) {
207
- refsToEnrich.push(item.element);
208
- }
209
- }
210
- if ('elements' in item && item.elements) {
211
- for (const el of item.elements) {
212
- if (el.filePaths.length === 0 && (0, elementFileHintSignals_1.shouldSearchElementFileHints)(el)) {
213
- refsToEnrich.push(el);
214
- }
215
- }
216
- }
217
- }
218
- if (refsToEnrich.length === 0)
219
- return;
220
- log.info(`Enriching ${refsToEnrich.length} element(s) with missing filePaths`);
221
- const searchService = new index_core_1.ComponentSearchService();
222
- await Promise.all(refsToEnrich.map(async (ref) => {
223
- try {
224
- const matches = await searchService.findMatchingComponents(projectPath, ref);
225
- if (matches.length > 0) {
226
- ref.filePaths = matches
227
- .slice(0, MAX_FILE_MATCHES_PER_ELEMENT)
228
- .map((m) => m.filePath);
229
- }
230
- }
231
- catch (err) {
232
- log.warn(`Component search failed for <${ref.tagName}>: ${err instanceof Error ? err.message : err}`);
233
- }
234
- }));
235
- // Rebuild sourceFiles from all elements
236
- const sourceFileSet = new Set(request.sourceFiles);
237
- for (const item of request.changes) {
238
- if ('element' in item) {
239
- for (const fp of item.element.filePaths) {
240
- sourceFileSet.add(fp);
241
- }
242
- }
243
- }
244
- request.sourceFiles = Array.from(sourceFileSet);
245
- log.info(`Enrichment complete: sourceFiles now has ${request.sourceFiles.length} entries`);
246
- }
247
- /**
248
- * Resolve one attached variant reference into a readable directory the agent
249
- * can point its Read/Grep tools at. Returns `null` when the reference can't
250
- * be served (no orchestrator, no worktree, no persisted history snapshot) —
251
- * the intake drops null entries instead of failing the whole batch so a stale
252
- * reference left over from a prior session never breaks an unrelated comment.
253
- *
254
- * The "brief" is read opportunistically from the persisted manifest under
255
- * `.rivet/variants/<sid>/<vid>/manifest.json`. Live variants without history
256
- * yet just carry their label.
257
- */
258
- function resolveCommentReference(ref, orchestrator, projectPath) {
259
- const readBriefFromManifest = (manifestDir) => {
260
- try {
261
- const manifestPath = path.join(manifestDir, 'manifest.json');
262
- if (!fs.existsSync(manifestPath))
263
- return undefined;
264
- const raw = fs.readFileSync(manifestPath, 'utf8');
265
- const parsed = JSON.parse(raw);
266
- return typeof parsed.brief === 'string' ? parsed.brief : undefined;
267
- }
268
- catch {
269
- return undefined;
270
- }
271
- };
272
- // Try the in-memory context first; fall back to the current bridge project
273
- // for existing-project sessions and for live sessions whose context already
274
- // drained from memory.
275
- const candidateRoots = [];
276
- try {
277
- const ctx = orchestrator?.getProjectContext(ref.sessionId);
278
- if (ctx?.kind === 'fresh') {
279
- candidateRoots.push(ctx.workspacePath);
280
- candidateRoots.push(ctx.workspaceRoot);
281
- }
282
- }
283
- catch {
284
- // Unknown session — orchestrator doesn't carry it any more. The bridge
285
- // project root is the only viable fallback below.
286
- }
287
- if (projectPath)
288
- candidateRoots.push(projectPath);
289
- if (ref.origin === 'live') {
290
- const worktreePath = orchestrator?.getWorktreePath(ref.sessionId, ref.variantId);
291
- if (worktreePath) {
292
- const brief = candidateRoots
293
- .map((root) => readBriefFromManifest(path.join(root, '.rivet', 'variants', ref.sessionId, ref.variantId)))
294
- .find((b) => Boolean(b));
295
- return {
296
- sessionId: ref.sessionId,
297
- variantId: ref.variantId,
298
- label: ref.label,
299
- brief,
300
- path: worktreePath,
301
- origin: 'live',
302
- };
303
- }
304
- // Live worktree torn down — fall through and try history as a last resort.
305
- }
306
- for (const root of candidateRoots) {
307
- const variantDir = path.join(root, '.rivet', 'variants', ref.sessionId, ref.variantId);
308
- const filesDir = path.join(variantDir, 'files');
309
- if (!fs.existsSync(filesDir))
310
- continue;
311
- return {
312
- sessionId: ref.sessionId,
313
- variantId: ref.variantId,
314
- label: ref.label,
315
- brief: readBriefFromManifest(variantDir),
316
- path: filesDir,
317
- origin: ref.origin,
318
- };
319
- }
320
- return null;
321
- }
322
8
  /**
323
- * Creates Express routes for MCP session bridge communication.
324
- * The UI POSTs a ChangeRequest here; the MCP server reads it via SessionBridgeService.
325
- *
326
- * `agentVariantsOrchestrator` is optional so existing callers (tests, hosted
327
- * demos) can mount the router without wiring the variants flow. When it IS
328
- * provided, the intake rejects new variant-request batches while a variants
329
- * session is already active for the current project.
9
+ * Creates the remaining MCP-status routes used by the passive viewer.
330
10
  */
331
- const createMCPRouter = (bridge, telemetry, agentVariantsOrchestrator, options = {}) => {
11
+ const createMCPRouter = (bridge, ..._unused) => {
332
12
  const router = (0, express_1.Router)();
333
- // `agent_variants.*` events emitted from these routes must carry the browser's
334
- // PostHog $session_id to link to a session replay. The bridge already holds it
335
- // (reported via change-request telemetryContext); this wrapper injects it.
336
- const variantsTelemetry = telemetry
337
- ? (0, createAgentVariantsOrchestrator_1.withVariantsSessionReplayLinking)(telemetry, bridge)
338
- : undefined;
339
- /**
340
- * Queue a ChangeRequest from the Rivet UI for retrieval by the MCP client.
341
- * Called when the user clicks "Send to Claude Code" in MCP mode.
342
- */
343
- router.post('/queue-changes', async (req, res) => {
344
- if (!bridge.isActive()) {
345
- res.status(400).json({ error: 'No active MCP session' });
346
- return;
347
- }
348
- if (!(0, queueAccess_1.isQueueAccessAuthorized)({
349
- queueAccessToken: options.queueAccessToken,
350
- getHeader: (name) => req.header(name),
351
- })) {
352
- res.status(403).json({
353
- error: 'Queue access denied',
354
- reason: 'queue_token_required',
355
- });
356
- return;
357
- }
358
- const parsed = changeRequestSchema.safeParse(req.body);
359
- if (!parsed.success) {
360
- res.status(400).json({
361
- error: 'Invalid change request payload',
362
- details: parsed.error.flatten(),
363
- });
364
- return;
365
- }
366
- const body = parsed.data;
367
- const batchForClassification = {
368
- changes: body.changes,
369
- sourceFiles: body.sourceFiles || [],
370
- };
371
- const isMixedVariantRequestBatch = (0, changeBatchClassification_1.isMixedVariantBatch)(batchForClassification);
372
- const isVariantRequestBatch = (0, changeBatchClassification_1.isSingleVariantRequestBatch)(batchForClassification);
373
- const requestedVariantCount = isVariantRequestBatch &&
374
- batchForClassification.changes[0]?.kind === 'comment'
375
- ? batchForClassification.changes[0].variantRequest?.count
376
- : undefined;
377
- let variantRequestTelemetry;
378
- if (isMixedVariantRequestBatch) {
379
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
380
- sessionId: bridge.getSessionId() ?? undefined,
381
- requestId: body.agentRunId ?? body.traceId,
382
- traceId: body.traceId,
383
- agentRunId: body.agentRunId,
384
- entryPoint: 'visual_editor_comment',
385
- mode: 'unknown',
386
- commentCount: body.changes.filter((item) => item.kind === 'comment')
387
- .length,
388
- failureReason: 'schema_validation_failed',
389
- });
390
- res.status(400).json({
391
- error: 'Mixed batch rejected',
392
- details: 'A comment with `variantRequest` must be submitted as a single-item batch.',
393
- reason: 'mixed_batch',
394
- });
395
- return;
396
- }
397
- if (isVariantRequestBatch) {
398
- const activeVariantsSession = agentVariantsOrchestrator?.buildActiveSnapshot();
399
- // A targeted variant request can carry its target at the batch level
400
- // (body.target) OR only on the comment item — treat either as "targeted"
401
- // so a comment-only target isn't mistaken for a brand-new run.
402
- const commentItem = body.changes.find((c) => c.kind === 'comment');
403
- const effectiveTarget = body.target ??
404
- (commentItem && 'target' in commentItem
405
- ? commentItem.target
406
- : undefined);
407
- variantRequestTelemetry = variantRequestTelemetryFor({
408
- sessionId: bridge.getSessionId() ?? undefined,
409
- changes: batchForClassification.changes,
410
- sourceFileCount: body.sourceFiles?.length ?? 0,
411
- traceId: body.traceId,
412
- agentRunId: body.agentRunId,
413
- requestedCount: requestedVariantCount,
414
- hasTarget: Boolean(effectiveTarget),
415
- hasStaticPreviewRefine: false,
416
- targetVariantId: effectiveTarget?.kind === 'variant'
417
- ? effectiveTarget.variantId
418
- : undefined,
419
- });
420
- variantsTelemetry?.trackAgentVariantsRequestStarted?.(variantRequestTelemetry);
421
- // A variant request that targets an existing variant ATTACHES to the
422
- // active session as a new concurrent run (it fans out fresh siblings into
423
- // the same session), so it is always allowed — this is what lets several
424
- // "Vary" runs generate side by side.
425
- //
426
- // But the target must point at the CURRENTLY active session: a stale or
427
- // mismatched target would otherwise apply work (e.g. via
428
- // beginStaticPreviewRefinements) against a different session than the one
429
- // the UI treats as active.
430
- if (effectiveTarget &&
431
- activeVariantsSession?.active === true &&
432
- effectiveTarget.sessionId !== activeVariantsSession.sessionId) {
433
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
434
- ...variantRequestTelemetry,
435
- failureReason: 'target_not_editable',
436
- });
437
- res.status(400).json({
438
- error: 'Stale variant target',
439
- details: 'The targeted variants session is not the active one. Refresh the editor and retry.',
440
- reason: 'stale_target',
441
- });
442
- return;
443
- }
444
- // Only a brand-new, targetless variant run is blocked while a session is
445
- // still mid-flight, since that would overwrite the single active session.
446
- if (!effectiveTarget &&
447
- (0, variantSessionStart_1.isVariantSessionStartBlocked)(activeVariantsSession)) {
448
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
449
- ...variantRequestTelemetry,
450
- failureReason: 'active_session',
451
- });
452
- res.status(400).json({
453
- error: 'Variants session already active',
454
- details: 'Finish or cancel the running variants session before submitting another variant request.',
455
- reason: 'active_session',
456
- });
457
- return;
458
- }
459
- }
460
- const changes = body.changes;
461
- // Resolve a variant-targeted batch to either an editable worktree or an
462
- // HTML-only static preview refinement target.
463
- let resolvedWorktreePath;
464
- let staticPreviewTarget;
465
- if (body.target) {
466
- const target = body.target;
467
- const worktreePath = agentVariantsOrchestrator?.getWorktreePath(target.sessionId, target.variantId);
468
- if (worktreePath) {
469
- resolvedWorktreePath = worktreePath;
470
- }
471
- else if (agentVariantsOrchestrator?.getStaticPreviewHtml(target.sessionId, target.variantId)) {
472
- const variantPick = agentVariantsOrchestrator?.getVariantPick?.(target.sessionId);
473
- if (variantPick) {
474
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
475
- ...variantRequestTelemetry,
476
- sessionId: target.sessionId,
477
- targetVariantId: target.variantId,
478
- failureReason: 'pending_change_conflict',
479
- });
480
- res.status(409).json({
481
- error: 'Static preview variant already sent',
482
- details: 'This static preview has already been sent. Start a new variants session before sending another comment.',
483
- reason: 'variant_already_sent',
484
- });
485
- return;
486
- }
487
- const hasOnlyComments = changes.every((change) => change.kind === 'comment');
488
- if (!hasOnlyComments) {
489
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
490
- ...variantRequestTelemetry,
491
- sessionId: target.sessionId,
492
- targetVariantId: target.variantId,
493
- failureReason: 'schema_validation_failed',
494
- });
495
- res.status(400).json({
496
- error: 'Static preview edits require comments',
497
- details: 'Static preview refinements must be sent as comment instructions.',
498
- reason: 'static_preview_comment_required',
499
- });
500
- return;
501
- }
502
- staticPreviewTarget = {
503
- kind: 'static_preview',
504
- sessionId: target.sessionId,
505
- variantId: target.variantId,
506
- };
507
- }
508
- else {
509
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
510
- ...variantRequestTelemetry,
511
- sessionId: target.sessionId,
512
- targetVariantId: target.variantId,
513
- failureReason: 'target_not_editable',
514
- });
515
- res.status(400).json({
516
- error: 'Variant is not editable',
517
- details: 'The targeted variant has no settled worktree or static preview (it may still be generating, or its session ended). Edits can only be applied to a ready variant.',
518
- reason: 'variant_not_editable',
519
- });
520
- return;
521
- }
522
- }
523
- for (const item of changes) {
524
- if (item.kind !== 'comment')
525
- continue;
526
- const itemTarget = item.target;
527
- if (!itemTarget) {
528
- // Never trust a client-supplied static-preview target: it's only valid
529
- // when resolved from a variant `target` we can verify still has HTML.
530
- // Without a target there's nothing to verify, so drop it — otherwise a
531
- // forged `staticPreviewTarget` could route the batch into static
532
- // refinement for a variant that was never confirmed to have a preview.
533
- item.staticPreviewTarget = undefined;
534
- continue;
535
- }
536
- const itemMatchesBatchTarget = body.target &&
537
- itemTarget.sessionId === body.target.sessionId &&
538
- itemTarget.variantId === body.target.variantId;
539
- const worktreePath = agentVariantsOrchestrator?.getWorktreePath(itemTarget.sessionId, itemTarget.variantId);
540
- if (worktreePath) {
541
- if (itemMatchesBatchTarget) {
542
- item.staticPreviewTarget = undefined;
543
- continue;
544
- }
545
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
546
- ...variantRequestTelemetry,
547
- sessionId: itemTarget.sessionId,
548
- targetVariantId: itemTarget.variantId,
549
- failureReason: 'schema_validation_failed',
550
- });
551
- res.status(400).json({
552
- error: 'Variant target must be sent as a batch target',
553
- details: 'Per-comment targets are only supported for static preview variants. Worktree-backed variants must be sent as a single-target batch.',
554
- reason: 'mixed_target',
555
- });
556
- return;
557
- }
558
- if (agentVariantsOrchestrator?.getStaticPreviewHtml(itemTarget.sessionId, itemTarget.variantId)) {
559
- const variantPick = agentVariantsOrchestrator?.getVariantPick?.(itemTarget.sessionId);
560
- if (variantPick) {
561
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
562
- ...variantRequestTelemetry,
563
- sessionId: itemTarget.sessionId,
564
- targetVariantId: itemTarget.variantId,
565
- failureReason: 'pending_change_conflict',
566
- });
567
- res.status(409).json({
568
- error: 'Static preview variant already sent',
569
- details: 'This static preview has already been sent. Start a new variants session before sending another comment.',
570
- reason: 'variant_already_sent',
571
- });
572
- return;
573
- }
574
- item.staticPreviewTarget = {
575
- kind: 'static_preview',
576
- sessionId: itemTarget.sessionId,
577
- variantId: itemTarget.variantId,
578
- };
579
- continue;
580
- }
581
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
582
- ...variantRequestTelemetry,
583
- sessionId: itemTarget.sessionId,
584
- targetVariantId: itemTarget.variantId,
585
- failureReason: 'target_not_editable',
586
- });
587
- res.status(400).json({
588
- error: 'Variant is not editable',
589
- details: 'The targeted variant has no settled worktree or static preview (it may still be generating, or its session ended). Edits can only be applied to a ready variant.',
590
- reason: 'variant_not_editable',
591
- });
592
- return;
593
- }
594
- const request = {
595
- changes,
596
- sourceFiles: body.sourceFiles || [],
597
- target: body.target,
598
- worktreePath: resolvedWorktreePath,
599
- staticPreviewTarget,
600
- telemetryContext: body.telemetryContext,
601
- traceId: body.traceId || (0, crypto_1.randomUUID)(),
602
- agentRunId: body.agentRunId || (0, crypto_1.randomUUID)(),
603
- };
604
- // Enrich elements missing filePaths before queueing. For a variant batch,
605
- // search the variant's worktree (its sources may diverge from the base
606
- // project); otherwise search the base project.
607
- const hasStaticPreviewItems = request.changes.some((item) => item.kind === 'comment' && Boolean(item.staticPreviewTarget));
608
- const enrichRoot = staticPreviewTarget || hasStaticPreviewItems
609
- ? undefined
610
- : (resolvedWorktreePath ?? bridge.getProjectPath());
611
- if (enrichRoot) {
612
- try {
613
- await enrichChangeRequest(request, enrichRoot);
614
- }
615
- catch (err) {
616
- log.warn(`Element enrichment failed, queueing without enrichment: ${err instanceof Error ? err.message : err}`);
617
- }
618
- }
619
- // Resolve attached variant references on every comment item. Each
620
- // reference becomes a `{ label, brief, path }` pointer the agent will
621
- // read with its existing file tools — we do NOT inline file content here
622
- // so the prompt stays small and the agent decides what to read. Drop
623
- // unresolvable references and log them rather than failing the batch.
624
- const bridgeProjectPath = bridge.getProjectPath();
625
- for (const item of request.changes) {
626
- if (item.kind !== 'comment' || !item.references?.length)
627
- continue;
628
- const resolved = [];
629
- for (const ref of item.references) {
630
- const r = resolveCommentReference(ref, agentVariantsOrchestrator, bridgeProjectPath);
631
- if (r) {
632
- resolved.push(r);
633
- }
634
- else {
635
- log.warn(`Dropping unresolvable variant reference ${ref.sessionId}:${ref.variantId} (${ref.origin}) on comment`);
636
- }
637
- }
638
- item.resolvedReferences = resolved.length > 0 ? resolved : undefined;
639
- }
640
- const queueResult = bridge.queueChangeRequest(request);
641
- if (!queueResult.accepted) {
642
- if (queueResult.reason === 'variant_request_too_large') {
643
- variantsTelemetry?.trackAgentVariantsRequestRejected?.({
644
- ...variantRequestTelemetry,
645
- requestId: request.agentRunId ?? request.traceId,
646
- traceId: request.traceId,
647
- agentRunId: request.agentRunId,
648
- failureReason: 'runtime_validation_failed',
649
- });
650
- res.status(413).json({
651
- error: 'Variant request too large',
652
- details: 'This change batch exceeds the per-request size limit. ' +
653
- 'Trim the instruction or attachments and retry.',
654
- reason: queueResult.reason,
655
- });
656
- return;
657
- }
658
- if (queueResult.reason === 'apply_batch_too_large') {
659
- res.status(413).json({
660
- error: 'Apply batch too large',
661
- details: 'This change batch exceeds the per-request size limit. ' +
662
- 'Trim the instruction or attachments and retry.',
663
- reason: queueResult.reason,
664
- });
665
- return;
666
- }
667
- if (queueResult.reason === 'apply_queue_full') {
668
- if (telemetry && bridge.getSessionId()) {
669
- telemetry.trackMCPBatchQueueFull({
670
- channel: 'apply',
671
- queuedDepth: bridge.getChannelDepth('apply').queued,
672
- sessionId: bridge.getSessionId(),
673
- });
674
- }
675
- res.status(429).json({
676
- error: 'Apply queue is full',
677
- details: 'Too many apply batches are already queued for this session. ' +
678
- 'Wait for the agent to finish in-flight work before sending more.',
679
- reason: queueResult.reason,
680
- });
681
- return;
682
- }
683
- if (queueResult.reason === 'variant_queue_full' &&
684
- telemetry &&
685
- bridge.getSessionId()) {
686
- telemetry.trackMCPBatchQueueFull({
687
- channel: 'variant',
688
- queuedDepth: bridge.getChannelDepth('variant').queued,
689
- sessionId: bridge.getSessionId(),
690
- });
691
- telemetry.trackAgentVariantsRequestRejected?.({
692
- ...variantRequestTelemetry,
693
- requestId: request.agentRunId ?? request.traceId,
694
- traceId: request.traceId,
695
- agentRunId: request.agentRunId,
696
- failureReason: 'queue_full',
697
- });
698
- }
699
- res.status(429).json({
700
- error: 'Variant request queue is full',
701
- details: 'Too many variant requests are already queued for this session. ' +
702
- 'Wait for in-flight generations to complete before sending more.',
703
- reason: queueResult.reason,
704
- });
705
- return;
706
- }
707
- const styleCt = request.changes.filter((c) => c.kind === 'style').length;
708
- const textCt = request.changes.filter((c) => c.kind === 'text').length;
709
- const commentCt = request.changes.filter((c) => c.kind === 'comment').length;
710
- const chatCt = request.changes.filter((c) => c.kind === 'chat').length;
711
- const nextRound = bridge.getRoundsCompleted() + 1;
712
- log.info(`Change request queued: ${styleCt} style, ${textCt} text, ${commentCt} comment, ${chatCt} chat` +
713
- (request.target
714
- ? ` → variant ${request.target.variantId} (${resolvedWorktreePath})`
715
- : ''));
716
- if (telemetry) {
717
- const sessionId = bridge.getSessionId();
718
- if (sessionId) {
719
- telemetry.trackMCPConversationTurnSent((0, MCPOnboardingTelemetry_1.summarizeMCPConversationTurn)(request, nextRound, sessionId));
720
- if (isVariantRequestBatch &&
721
- typeof requestedVariantCount === 'number') {
722
- // Variant-request batches never start an apply run, so the standard
723
- // `mcp_changes_sent` / `changes_queued` / `agent_run_started` chain
724
- // would be misleading. Emit a dedicated event instead.
725
- telemetry.trackCommentVariantRequestReceived({
726
- sessionId,
727
- requestedCount: requestedVariantCount,
728
- traceId: request.traceId,
729
- agentRunId: request.agentRunId,
730
- browserSessionId: request.telemetryContext?.browserSessionId,
731
- browserDistinctId: request.telemetryContext?.browserDistinctId,
732
- });
733
- const acceptedTelemetry = {
734
- ...variantRequestTelemetryFor({
735
- sessionId,
736
- changes: request.changes,
737
- sourceFileCount: request.sourceFiles.length,
738
- traceId: request.traceId,
739
- agentRunId: request.agentRunId,
740
- requestedCount: requestedVariantCount,
741
- hasTarget: Boolean(request.target),
742
- hasStaticPreviewRefine: Boolean(request.staticPreviewTarget),
743
- targetVariantId: request.target?.variantId ??
744
- request.staticPreviewTarget?.variantId,
745
- }),
746
- acceptedCount: requestedVariantCount,
747
- };
748
- telemetry.trackAgentVariantsRequestAccepted?.(acceptedTelemetry);
749
- if (request.target || request.staticPreviewTarget) {
750
- const target = request.target ??
751
- (request.staticPreviewTarget
752
- ? {
753
- sessionId: request.staticPreviewTarget.sessionId,
754
- variantId: request.staticPreviewTarget.variantId,
755
- }
756
- : undefined);
757
- telemetry.trackAgentVariantsRefinementRequested?.({
758
- ...acceptedTelemetry,
759
- sessionId: target?.sessionId ?? sessionId,
760
- targetVariantId: target?.variantId,
761
- });
762
- }
763
- }
764
- else {
765
- telemetry.trackMCPChangesSent({
766
- sessionId,
767
- styleChangeCount: styleCt,
768
- textChangeCount: textCt,
769
- commentCount: commentCt,
770
- chatCount: chatCt,
771
- round: nextRound,
772
- traceId: request.traceId,
773
- agentRunId: request.agentRunId,
774
- browserSessionId: request.telemetryContext?.browserSessionId,
775
- browserDistinctId: request.telemetryContext?.browserDistinctId,
776
- });
777
- }
778
- telemetry.flush().catch((err) => {
779
- log.warn('Telemetry flush after mcp_changes_sent failed:', err);
780
- });
781
- }
782
- else {
783
- log.warn('MCP telemetry skipped: no sessionId on bridge');
784
- }
785
- }
786
- res.json({
787
- queued: true,
788
- traceId: request.traceId,
789
- agentRunId: request.agentRunId,
790
- ...(isVariantRequestBatch ? { kind: 'variant_request' } : {}),
791
- });
792
- });
793
- /** Check whether changes is pending (for UI status indicators) */
794
- router.get('/status', async (req, res) => {
13
+ router.get('/status', async (_req, res) => {
795
14
  const devServerHealth = bridge.getDevServerHealth();
796
15
  const shouldProbeUpstream = bridge.isActive() &&
797
16
  devServerHealth.host !== null &&
@@ -831,7 +50,7 @@ const createMCPRouter = (bridge, telemetry, agentVariantsOrchestrator, options =
831
50
  roundsCompleted: bridge.getRoundsCompleted(),
832
51
  apply: bridge.getChannelDepth('apply'),
833
52
  variant: bridge.getChannelDepth('variant'),
834
- feedback: feedback,
53
+ feedback,
835
54
  status: bridge.getStatus(),
836
55
  devServerHealth: bridge.getDevServerHealth(),
837
56
  });