rivet-design 0.21.10 → 0.23.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 (351) hide show
  1. package/README.md +5 -1
  2. package/README.npm.md +5 -1
  3. package/bin/rivet.js +10 -0
  4. package/dist/agent-variants/PreviewRuntime.d.ts.map +1 -1
  5. package/dist/agent-variants/PreviewRuntime.js +3 -5
  6. package/dist/agent-variants/PreviewRuntime.js.map +1 -1
  7. package/dist/agent-variants/SessionStore.d.ts +14 -23
  8. package/dist/agent-variants/SessionStore.d.ts.map +1 -1
  9. package/dist/agent-variants/SessionStore.js +84 -356
  10. package/dist/agent-variants/SessionStore.js.map +1 -1
  11. package/dist/agent-variants/VariantWorkspaceManager.d.ts.map +1 -1
  12. package/dist/agent-variants/VariantWorkspaceManager.js +8 -14
  13. package/dist/agent-variants/VariantWorkspaceManager.js.map +1 -1
  14. package/dist/agent-variants/WorkspaceProvisioning.d.ts.map +1 -1
  15. package/dist/agent-variants/WorkspaceProvisioning.js +20 -18
  16. package/dist/agent-variants/WorkspaceProvisioning.js.map +1 -1
  17. package/dist/agent-variants/WorktreeOrchestrator.d.ts +2 -4
  18. package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  19. package/dist/agent-variants/WorktreeOrchestrator.js +54 -88
  20. package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -1
  21. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.d.ts.map +1 -1
  22. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js +0 -12
  23. package/dist/agent-variants/WorktreeOrchestrator.testHelpers.js.map +1 -1
  24. package/dist/agent-variants/contextAssets.d.ts.map +1 -1
  25. package/dist/agent-variants/contextAssets.js +2 -8
  26. package/dist/agent-variants/contextAssets.js.map +1 -1
  27. package/dist/agent-variants/contracts.d.ts +946 -2463
  28. package/dist/agent-variants/contracts.d.ts.map +1 -1
  29. package/dist/agent-variants/contracts.js +2 -84
  30. package/dist/agent-variants/contracts.js.map +1 -1
  31. package/dist/agent-variants/directionBriefs.d.ts +7 -0
  32. package/dist/agent-variants/directionBriefs.d.ts.map +1 -0
  33. package/dist/agent-variants/directionBriefs.js +51 -0
  34. package/dist/agent-variants/directionBriefs.js.map +1 -0
  35. package/dist/agent-variants/index.d.ts +1 -1
  36. package/dist/agent-variants/index.d.ts.map +1 -1
  37. package/dist/agent-variants/runPlan.d.ts +0 -1
  38. package/dist/agent-variants/runPlan.d.ts.map +1 -1
  39. package/dist/agent-variants/runPlan.js +0 -4
  40. package/dist/agent-variants/runPlan.js.map +1 -1
  41. package/dist/agent-variants/sourceContext.d.ts +0 -2
  42. package/dist/agent-variants/sourceContext.d.ts.map +1 -1
  43. package/dist/agent-variants/sourceContext.js +1 -35
  44. package/dist/agent-variants/sourceContext.js.map +1 -1
  45. package/dist/agent-variants/staticPreviewFiles.d.ts.map +1 -1
  46. package/dist/agent-variants/staticPreviewFiles.js +7 -6
  47. package/dist/agent-variants/staticPreviewFiles.js.map +1 -1
  48. package/dist/agent-variants/staticPreviewRefinements.d.ts.map +1 -1
  49. package/dist/agent-variants/staticPreviewRefinements.js +3 -3
  50. package/dist/agent-variants/staticPreviewRefinements.js.map +1 -1
  51. package/dist/agent-variants/variantContext.d.ts.map +1 -1
  52. package/dist/agent-variants/variantContext.js +2 -8
  53. package/dist/agent-variants/variantContext.js.map +1 -1
  54. package/dist/agent-variants/variantWorkspaceFiles.d.ts +0 -1
  55. package/dist/agent-variants/variantWorkspaceFiles.d.ts.map +1 -1
  56. package/dist/agent-variants/variantWorkspaceFiles.js +5 -10
  57. package/dist/agent-variants/variantWorkspaceFiles.js.map +1 -1
  58. package/dist/agent-variants/variantsTelemetry.d.ts +0 -3
  59. package/dist/agent-variants/variantsTelemetry.d.ts.map +1 -1
  60. package/dist/agent-variants/variantsTelemetry.js.map +1 -1
  61. package/dist/agent-variants/workItemInput.d.ts +5950 -0
  62. package/dist/agent-variants/workItemInput.d.ts.map +1 -0
  63. package/dist/agent-variants/workItemInput.js +76 -0
  64. package/dist/agent-variants/workItemInput.js.map +1 -0
  65. package/dist/agent-variants/workItemPreviewRoutes.js +2 -2
  66. package/dist/agent-variants/workItemPreviewRoutes.js.map +1 -1
  67. package/dist/cli/commands/context.d.ts +3 -1
  68. package/dist/cli/commands/context.d.ts.map +1 -1
  69. package/dist/cli/commands/context.js +38 -1
  70. package/dist/cli/commands/context.js.map +1 -1
  71. package/dist/cli/commands/contextRequest.d.ts +1 -0
  72. package/dist/cli/commands/contextRequest.d.ts.map +1 -1
  73. package/dist/cli/commands/contextRequest.js +65 -5
  74. package/dist/cli/commands/contextRequest.js.map +1 -1
  75. package/dist/cli/commands/guidanceReferences.d.ts +1 -0
  76. package/dist/cli/commands/guidanceReferences.d.ts.map +1 -1
  77. package/dist/cli/commands/guidanceReferences.js +5 -4
  78. package/dist/cli/commands/guidanceReferences.js.map +1 -1
  79. package/dist/cli/commands/guidanceVerifierPackage.d.ts +9 -0
  80. package/dist/cli/commands/guidanceVerifierPackage.d.ts.map +1 -0
  81. package/dist/cli/commands/guidanceVerifierPackage.js +41 -0
  82. package/dist/cli/commands/guidanceVerifierPackage.js.map +1 -0
  83. package/dist/cli/commands/mcpServe.d.ts +1 -0
  84. package/dist/cli/commands/mcpServe.d.ts.map +1 -1
  85. package/dist/cli/commands/mcpServe.js +457 -326
  86. package/dist/cli/commands/mcpServe.js.map +1 -1
  87. package/dist/cli/commands/variants.js +2 -2
  88. package/dist/cli/commands/variants.js.map +1 -1
  89. package/dist/cli/handoff.d.ts +5 -0
  90. package/dist/cli/handoff.d.ts.map +1 -1
  91. package/dist/cli/handoff.js +13 -10
  92. package/dist/cli/handoff.js.map +1 -1
  93. package/dist/cli/handoffStore.d.ts +0 -1
  94. package/dist/cli/handoffStore.d.ts.map +1 -1
  95. package/dist/cli/handoffStore.js +1 -11
  96. package/dist/cli/handoffStore.js.map +1 -1
  97. package/dist/cli/router.d.ts +3 -1
  98. package/dist/cli/router.d.ts.map +1 -1
  99. package/dist/cli/router.js +4 -3
  100. package/dist/cli/router.js.map +1 -1
  101. package/dist/config/flags.d.ts +0 -3
  102. package/dist/config/flags.d.ts.map +1 -1
  103. package/dist/config/flags.js +0 -1
  104. package/dist/config/flags.js.map +1 -1
  105. package/dist/config/proxy.d.ts +3 -0
  106. package/dist/config/proxy.d.ts.map +1 -1
  107. package/dist/config/proxy.js +7 -5
  108. package/dist/config/proxy.js.map +1 -1
  109. package/dist/hosts/workerDefaults.d.ts +0 -1
  110. package/dist/hosts/workerDefaults.d.ts.map +1 -1
  111. package/dist/hosts/workerDefaults.js +1 -2
  112. package/dist/hosts/workerDefaults.js.map +1 -1
  113. package/dist/index-core.d.ts +1 -2
  114. package/dist/index-core.d.ts.map +1 -1
  115. package/dist/index-core.js +1 -3
  116. package/dist/index-core.js.map +1 -1
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +46 -7
  119. package/dist/index.js.map +1 -1
  120. package/dist/install/agentSkill.d.ts +16 -0
  121. package/dist/install/agentSkill.d.ts.map +1 -0
  122. package/dist/install/agentSkill.js +54 -0
  123. package/dist/install/agentSkill.js.map +1 -0
  124. package/dist/install/allowlists.d.ts +3 -1
  125. package/dist/install/allowlists.d.ts.map +1 -1
  126. package/dist/install/allowlists.js +89 -27
  127. package/dist/install/allowlists.js.map +1 -1
  128. package/dist/install/automaticCliUpdate.d.ts.map +1 -1
  129. package/dist/install/automaticCliUpdate.js +6 -11
  130. package/dist/install/automaticCliUpdate.js.map +1 -1
  131. package/dist/install/channelCli.d.ts.map +1 -1
  132. package/dist/install/channelCli.js +2 -37
  133. package/dist/install/channelCli.js.map +1 -1
  134. package/dist/install/channelManager.d.ts +2 -1
  135. package/dist/install/channelManager.d.ts.map +1 -1
  136. package/dist/install/channelManager.js +23 -20
  137. package/dist/install/channelManager.js.map +1 -1
  138. package/dist/install/codexSkill.d.ts +1 -8
  139. package/dist/install/codexSkill.d.ts.map +1 -1
  140. package/dist/install/codexSkill.js +9 -50
  141. package/dist/install/codexSkill.js.map +1 -1
  142. package/dist/install/cursorSkill.d.ts +6 -0
  143. package/dist/install/cursorSkill.d.ts.map +1 -0
  144. package/dist/install/cursorSkill.js +36 -0
  145. package/dist/install/cursorSkill.js.map +1 -0
  146. package/dist/install/globalBootstrap.d.ts +3 -2
  147. package/dist/install/globalBootstrap.d.ts.map +1 -1
  148. package/dist/install/globalBootstrap.js +9 -41
  149. package/dist/install/globalBootstrap.js.map +1 -1
  150. package/dist/install/harnesses.d.ts +27 -0
  151. package/dist/install/harnesses.d.ts.map +1 -1
  152. package/dist/install/harnesses.js +174 -76
  153. package/dist/install/harnesses.js.map +1 -1
  154. package/dist/library/importFiles.d.ts.map +1 -1
  155. package/dist/library/importFiles.js +3 -3
  156. package/dist/library/importFiles.js.map +1 -1
  157. package/dist/mcp/changeBatchClassification.d.ts +1 -11
  158. package/dist/mcp/changeBatchClassification.d.ts.map +1 -1
  159. package/dist/mcp/changeBatchClassification.js +0 -38
  160. package/dist/mcp/changeBatchClassification.js.map +1 -1
  161. package/dist/prototype-host.js +2 -1
  162. package/dist/prototype-host.js.map +1 -1
  163. package/dist/routes/agentVariants.d.ts.map +1 -1
  164. package/dist/routes/agentVariants.js +5 -11
  165. package/dist/routes/agentVariants.js.map +1 -1
  166. package/dist/routes/library/guidance.d.ts.map +1 -1
  167. package/dist/routes/library/guidance.js +7 -0
  168. package/dist/routes/library/guidance.js.map +1 -1
  169. package/dist/routes/library/staticPreview.d.ts.map +1 -1
  170. package/dist/routes/library/staticPreview.js +9 -7
  171. package/dist/routes/library/staticPreview.js.map +1 -1
  172. package/dist/routes/prototypeHost.d.ts.map +1 -1
  173. package/dist/routes/prototypeHost.js +3 -3
  174. package/dist/routes/prototypeHost.js.map +1 -1
  175. package/dist/routes/staticPreviewPolicy.d.ts.map +1 -1
  176. package/dist/routes/staticPreviewPolicy.js +2 -10
  177. package/dist/routes/staticPreviewPolicy.js.map +1 -1
  178. package/dist/routes/variantRequestSchema.d.ts +4 -4
  179. package/dist/server.d.ts +0 -1
  180. package/dist/server.d.ts.map +1 -1
  181. package/dist/server.js +1 -3
  182. package/dist/server.js.map +1 -1
  183. package/dist/services/AuthService.d.ts +4 -10
  184. package/dist/services/AuthService.d.ts.map +1 -1
  185. package/dist/services/AuthService.js +3 -118
  186. package/dist/services/AuthService.js.map +1 -1
  187. package/dist/services/BundleStore.d.ts.map +1 -1
  188. package/dist/services/BundleStore.js +4 -8
  189. package/dist/services/BundleStore.js.map +1 -1
  190. package/dist/services/DependencyPreparationService.d.ts.map +1 -1
  191. package/dist/services/DependencyPreparationService.js +4 -3
  192. package/dist/services/DependencyPreparationService.js.map +1 -1
  193. package/dist/services/GuidanceVerifierRunner.d.ts +15 -0
  194. package/dist/services/GuidanceVerifierRunner.d.ts.map +1 -0
  195. package/dist/services/GuidanceVerifierRunner.js +373 -0
  196. package/dist/services/GuidanceVerifierRunner.js.map +1 -0
  197. package/dist/services/HubDiscovery.d.ts +2 -2
  198. package/dist/services/IntegrationsClient.d.ts +3 -3
  199. package/dist/services/MCPOnboardingTelemetry.d.ts +0 -2
  200. package/dist/services/MCPOnboardingTelemetry.d.ts.map +1 -1
  201. package/dist/services/MCPOnboardingTelemetry.js +1 -78
  202. package/dist/services/MCPOnboardingTelemetry.js.map +1 -1
  203. package/dist/services/OperatingSystemServices.d.ts +5 -0
  204. package/dist/services/OperatingSystemServices.d.ts.map +1 -1
  205. package/dist/services/OperatingSystemServices.js +20 -7
  206. package/dist/services/OperatingSystemServices.js.map +1 -1
  207. package/dist/services/ProjectImport.d.ts.map +1 -1
  208. package/dist/services/ProjectImport.js +2 -1
  209. package/dist/services/ProjectImport.js.map +1 -1
  210. package/dist/services/ProjectPackageManager.d.ts +0 -1
  211. package/dist/services/ProjectPackageManager.d.ts.map +1 -1
  212. package/dist/services/ProjectPackageManager.js +5 -12
  213. package/dist/services/ProjectPackageManager.js.map +1 -1
  214. package/dist/services/ProjectRegistry.d.ts +2 -2
  215. package/dist/services/PrototypeBuildService.d.ts.map +1 -1
  216. package/dist/services/PrototypeBuildService.js +10 -6
  217. package/dist/services/PrototypeBuildService.js.map +1 -1
  218. package/dist/services/TelemetryService.d.ts +1 -9
  219. package/dist/services/TelemetryService.d.ts.map +1 -1
  220. package/dist/services/TelemetryService.js +0 -28
  221. package/dist/services/TelemetryService.js.map +1 -1
  222. package/dist/services/VariantGenerationService.d.ts +1 -9
  223. package/dist/services/VariantGenerationService.d.ts.map +1 -1
  224. package/dist/services/VariantGenerationService.js +16 -140
  225. package/dist/services/VariantGenerationService.js.map +1 -1
  226. package/dist/services/VariantHistoryService.js +5 -8
  227. package/dist/services/VariantHistoryService.js.map +1 -1
  228. package/dist/services/VariantRunService.d.ts +0 -6
  229. package/dist/services/VariantRunService.d.ts.map +1 -1
  230. package/dist/services/VariantRunService.js +1 -28
  231. package/dist/services/VariantRunService.js.map +1 -1
  232. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  233. package/dist/services/VariantsRuntime.js +0 -1
  234. package/dist/services/VariantsRuntime.js.map +1 -1
  235. package/dist/services/WorktreeManager.d.ts.map +1 -1
  236. package/dist/services/WorktreeManager.js +4 -4
  237. package/dist/services/WorktreeManager.js.map +1 -1
  238. package/dist/services/accessTokenRefresh.d.ts +0 -3
  239. package/dist/services/accessTokenRefresh.d.ts.map +1 -1
  240. package/dist/services/accessTokenRefresh.js +1 -33
  241. package/dist/services/accessTokenRefresh.js.map +1 -1
  242. package/dist/services/guidanceDelivery.d.ts +0 -5
  243. package/dist/services/guidanceDelivery.d.ts.map +1 -1
  244. package/dist/services/guidanceDelivery.js +1 -20
  245. package/dist/services/guidanceDelivery.js.map +1 -1
  246. package/dist/services/guidanceReferences.d.ts.map +1 -1
  247. package/dist/services/guidanceReferences.js +2 -76
  248. package/dist/services/guidanceReferences.js.map +1 -1
  249. package/dist/services/packageManagerProcess.d.ts +20 -0
  250. package/dist/services/packageManagerProcess.d.ts.map +1 -0
  251. package/dist/services/packageManagerProcess.js +55 -0
  252. package/dist/services/packageManagerProcess.js.map +1 -0
  253. package/dist/services/profiles/DesignProfiles.d.ts +31 -16
  254. package/dist/services/profiles/DesignProfiles.d.ts.map +1 -1
  255. package/dist/services/profiles/DesignProfiles.js +71 -17
  256. package/dist/services/profiles/DesignProfiles.js.map +1 -1
  257. package/dist/services/profiles/ProfilePlanning.d.ts +5 -5
  258. package/dist/services/profiles/ReferenceReader.d.ts +2 -2
  259. package/dist/services/profiles/profileContext.d.ts +1 -1
  260. package/dist/services/referenceImages.d.ts.map +1 -1
  261. package/dist/services/referenceImages.js +4 -4
  262. package/dist/services/referenceImages.js.map +1 -1
  263. package/dist/services/retainedTextFiles.d.ts +8 -0
  264. package/dist/services/retainedTextFiles.d.ts.map +1 -0
  265. package/dist/services/retainedTextFiles.js +95 -0
  266. package/dist/services/retainedTextFiles.js.map +1 -0
  267. package/dist/services/staticProjectTarget.d.ts +0 -1
  268. package/dist/services/staticProjectTarget.d.ts.map +1 -1
  269. package/dist/services/staticProjectTarget.js +4 -10
  270. package/dist/services/staticProjectTarget.js.map +1 -1
  271. package/dist/services/templates/designCatalog.d.ts +0 -4
  272. package/dist/services/templates/designCatalog.d.ts.map +1 -1
  273. package/dist/services/templates/designCatalog.js +1 -27
  274. package/dist/services/templates/designCatalog.js.map +1 -1
  275. package/dist/storage/library/ProjectPreviewCache.d.ts +2 -2
  276. package/dist/storage/profiles/ProfilePlans.d.ts +18 -18
  277. package/dist/storage/profiles/ProfileRecords.d.ts +52 -3
  278. package/dist/storage/profiles/ProfileRecords.d.ts.map +1 -1
  279. package/dist/storage/profiles/ProfileRecords.js +74 -17
  280. package/dist/storage/profiles/ProfileRecords.js.map +1 -1
  281. package/dist/storage/profiles/guidanceVerifier.d.ts +3 -0
  282. package/dist/storage/profiles/guidanceVerifier.d.ts.map +1 -0
  283. package/dist/storage/profiles/guidanceVerifier.js +30 -0
  284. package/dist/storage/profiles/guidanceVerifier.js.map +1 -0
  285. package/dist/storage/profiles/migrations.d.ts +2 -2
  286. package/dist/storage/profiles/migrations.d.ts.map +1 -1
  287. package/dist/storage/profiles/migrations.js +3 -0
  288. package/dist/storage/profiles/migrations.js.map +1 -1
  289. package/dist/storage/profiles/planSchema.d.ts +5 -5
  290. package/dist/storage/profiles/schema.d.ts +28 -1
  291. package/dist/storage/profiles/schema.d.ts.map +1 -1
  292. package/dist/storage/profiles/schema.js +1 -0
  293. package/dist/storage/profiles/schema.js.map +1 -1
  294. package/dist/types/change-types.d.ts +0 -25
  295. package/dist/types/change-types.d.ts.map +1 -1
  296. package/dist/types/cosmos-profile.d.ts +12 -12
  297. package/dist/types/cosmos.d.ts +20 -20
  298. package/dist/types/design-profile.d.ts +16 -16
  299. package/dist/types/guidance-references.d.ts +16 -0
  300. package/dist/types/guidance-references.d.ts.map +1 -1
  301. package/dist/types/guidance-references.js +44 -30
  302. package/dist/types/guidance-references.js.map +1 -1
  303. package/dist/types/guidance-verifier.d.ts +265 -0
  304. package/dist/types/guidance-verifier.d.ts.map +1 -0
  305. package/dist/types/guidance-verifier.js +71 -0
  306. package/dist/types/guidance-verifier.js.map +1 -0
  307. package/dist/types/guidance.d.ts +436 -21
  308. package/dist/types/guidance.d.ts.map +1 -1
  309. package/dist/types/guidance.js +13 -2
  310. package/dist/types/guidance.js.map +1 -1
  311. package/dist/types/reference-connectors.d.ts +20 -20
  312. package/dist/types/reference-onboarding.d.ts +48 -48
  313. package/dist/types/variant-reference.d.ts +4 -4
  314. package/dist/types/x-bookmarks.d.ts +10 -10
  315. package/dist/utils/pathContainment.d.ts +15 -0
  316. package/dist/utils/pathContainment.d.ts.map +1 -0
  317. package/dist/utils/pathContainment.js +46 -0
  318. package/dist/utils/pathContainment.js.map +1 -0
  319. package/dist/utils/skillWriter.d.ts +5 -2
  320. package/dist/utils/skillWriter.d.ts.map +1 -1
  321. package/dist/utils/skillWriter.js +93 -34
  322. package/dist/utils/skillWriter.js.map +1 -1
  323. package/dist/utils/skills/cli-guidance.d.ts +1 -1
  324. package/dist/utils/skills/cli-guidance.d.ts.map +1 -1
  325. package/dist/utils/skills/cli-guidance.js +19 -6
  326. package/dist/utils/skills/cli-guidance.js.map +1 -1
  327. package/dist/utils/skills/codex-skill.d.ts +1 -1
  328. package/dist/utils/skills/codex-skill.d.ts.map +1 -1
  329. package/dist/utils/skills/codex-skill.js +1 -1
  330. package/package.json +2 -3
  331. package/src/ui/dist/assets/{LibraryEntry-CnaaBqt0.js → LibraryEntry-B9ZkJUtN.js} +8 -8
  332. package/src/ui/dist/assets/main-CXP-A-qy.css +1 -0
  333. package/src/ui/dist/assets/{main-CPmhttJP.js → main-Dls3YqrM.js} +143 -143
  334. package/src/ui/dist/index.html +2 -2
  335. package/dist/agent-variants/directionAuthoring.d.ts +0 -27
  336. package/dist/agent-variants/directionAuthoring.d.ts.map +0 -1
  337. package/dist/agent-variants/directionAuthoring.js +0 -380
  338. package/dist/agent-variants/directionAuthoring.js.map +0 -1
  339. package/dist/services/ComponentSearchService.d.ts +0 -13
  340. package/dist/services/ComponentSearchService.d.ts.map +0 -1
  341. package/dist/services/ComponentSearchService.js +0 -167
  342. package/dist/services/ComponentSearchService.js.map +0 -1
  343. package/dist/types/style-manipulation-types.d.ts +0 -63
  344. package/dist/types/style-manipulation-types.d.ts.map +0 -1
  345. package/dist/types/style-manipulation-types.js +0 -68
  346. package/dist/types/style-manipulation-types.js.map +0 -1
  347. package/dist/types/token-types.d.ts +0 -24
  348. package/dist/types/token-types.d.ts.map +0 -1
  349. package/dist/types/token-types.js +0 -3
  350. package/dist/types/token-types.js.map +0 -1
  351. package/src/ui/dist/assets/main-vcYlLdli.css +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionStore = exports.buildImageRefs = exports.SOURCE_PLAN_ACTION_OPTIONS = exports.SOURCE_PLAN_OUTPUT_SCHEMA = exports.SCAFFOLD_LEASE_TTL_MS = exports.DEFAULT_LEASE_TTL_MS = void 0;
3
+ exports.SessionStore = exports.buildImageRefs = exports.SCAFFOLD_LEASE_TTL_MS = exports.DEFAULT_LEASE_TTL_MS = void 0;
4
4
  const preview_routes_1 = require("../types/preview-routes");
5
5
  const variant_reference_1 = require("../types/variant-reference");
6
6
  const crypto_1 = require("crypto");
@@ -9,6 +9,7 @@ const contracts_1 = require("./contracts");
9
9
  const briefContent_1 = require("./briefContent");
10
10
  const runLabel_1 = require("./runLabel");
11
11
  const runPlan_1 = require("./runPlan");
12
+ const workItemInput_1 = require("./workItemInput");
12
13
  const MAX_SUBTITLE_WORDS = 10;
13
14
  const MAX_RELEVANT_FILES = 12;
14
15
  const capSubtitleWords = (text) => {
@@ -22,11 +23,10 @@ exports.DEFAULT_LEASE_TTL_MS = 20 * 60 * 1000;
22
23
  exports.SCAFFOLD_LEASE_TTL_MS = 30 * 60 * 1000;
23
24
  const SYSTEM_CLOCK = { now: () => Date.now() };
24
25
  function isAdoptedVariant(item) {
25
- return Boolean(item.input.adoptedFrom);
26
+ return (0, workItemInput_1.isVariantWorkItem)(item) && Boolean(item.input.adoptedFrom);
26
27
  }
27
28
  function isForkedStaticPreviewVariant(item) {
28
- return (item.kind === 'static_preview' &&
29
- Boolean(item.input.sourceVariantId));
29
+ return item.kind === 'static_preview' && Boolean(item.input.sourceVariantId);
30
30
  }
31
31
  function fingerprint(parts) {
32
32
  return parts.map((p) => (p === undefined ? '∅' : String(p))).join('|');
@@ -46,32 +46,8 @@ function descriptorFor(item) {
46
46
  output_schema: outputSchemaFor(item.kind),
47
47
  };
48
48
  }
49
- exports.SOURCE_PLAN_OUTPUT_SCHEMA = {
50
- actions: "Required Array<{ id, kind: 'extract_design_system'|'describe_motion', sourceIds, reason }> — actions selected after inspecting raw input.userContext and the prompt. Use only kinds listed in input.availableActions. May be empty when no source warrants enrichment.",
51
- metadata: "Required Array<{ id, kind: 'design_system'|'motion_guidance', sourceIds, actionId?, producedBy, data }> — additive metadata produced from the reported actions. Every action MUST produce its matching metadata kind (extract_design_system -> design_system, describe_motion -> motion_guidance). For URL-backed design_system, call capture_design_evidence({ sessionId, url }) before report_source_plan and set data.evidenceStatus. For design_system, data may include designMarkdown; otherwise Rivet synthesizes DESIGN.md from the structured observations. For motion_guidance, data may include motionMarkdown plus notes/timings. Raw userContext remains authoritative; metadata is additive shared guidance.",
52
- bindings: "Optional Array<{ kind:'global', sourceIds, actionIds, metadataIds? } | { kind:'slot', slotIndex, sourceIds, actionIds, metadataIds? }> — omit for the default global context behavior.",
53
- executionPlan: "{ mode: 'static_preview' | 'vite_app', confidence: low|medium|high, reason, assetPlan?: Array<{source, destination, referenceAs}>, runtimeRequirements?, userQuestion? } — choose vite_app for large local assets, model-viewer, Three.js, route structure, package deps, files under public/, or when a full app scaffold materially improves the requested result; assetPlan.source must live under the approved asset root. Choose static_preview only when a single HTML/CSS/JS file can preserve the full requested scope and visual fidelity.",
54
- };
55
- exports.SOURCE_PLAN_ACTION_OPTIONS = [
56
- {
57
- kind: 'extract_design_system',
58
- sourceTransports: ['url', 'file', 'text'],
59
- capability: 'extract_inspiration_context',
60
- produces: 'design_system',
61
- instructions: 'Inspect visual references natively and use the existing inspiration/design-context extraction path to produce reusable design_system metadata.',
62
- },
63
- {
64
- kind: 'describe_motion',
65
- sourceTransports: ['url', 'file'],
66
- capability: 'rivet_describe_motion',
67
- produces: 'motion_guidance',
68
- instructions: 'Inspect interaction references natively and use the Rivet Describe Motion protocol to produce motion_guidance metadata.',
69
- },
70
- ];
71
49
  function outputSchemaFor(kind) {
72
50
  switch (kind) {
73
- case 'source_plan':
74
- return exports.SOURCE_PLAN_OUTPUT_SCHEMA;
75
51
  case 'brief':
76
52
  return { briefs: 'Array<{briefId, label, body, visualReferenceUrl?}>' };
77
53
  case 'scaffold_base':
@@ -148,126 +124,6 @@ const buildImageRefs = (artifacts) => {
148
124
  return refs;
149
125
  };
150
126
  exports.buildImageRefs = buildImageRefs;
151
- const requiresSourcePlan = (projectContext) => projectContext.kind === 'fresh' && Boolean(projectContext.variantContext);
152
- const listSection = (title, items) => {
153
- if (items.length === 0)
154
- return [];
155
- return [`## ${title}`, '', ...items.map((item) => `- ${item}`), ''];
156
- };
157
- const hasSharedSource = (sourceIds, candidateSourceIds) => candidateSourceIds.some((sourceId) => sourceIds.includes(sourceId));
158
- const buildMotionGuidanceMarkdown = (sourceIds, metadata) => {
159
- const matchingMotion = metadata.filter((entry) => entry.kind === 'motion_guidance' &&
160
- hasSharedSource(sourceIds, entry.sourceIds));
161
- if (matchingMotion.length === 0)
162
- return [];
163
- const lines = ['## Motion Guidance', ''];
164
- for (const entry of matchingMotion) {
165
- if (entry.data.motionMarkdown) {
166
- lines.push(entry.data.motionMarkdown.trim(), '');
167
- continue;
168
- }
169
- lines.push(...entry.data.notes.map((item) => `- ${item}`));
170
- if (entry.data.timings && entry.data.timings.length > 0) {
171
- lines.push('', '### Timings', '');
172
- lines.push(...entry.data.timings.map((item) => `- ${item}`));
173
- }
174
- lines.push('');
175
- }
176
- return lines;
177
- };
178
- const buildDesignMarkdownFromMetadata = (entry, metadata) => {
179
- if (entry.data.designMarkdown) {
180
- return entry.data.designMarkdown;
181
- }
182
- const sourceRoleLines = entry.data.sourceRoles.map((role) => role.rationale
183
- ? `${role.role}: ${role.sourceId} (${role.rationale})`
184
- : `${role.role}: ${role.sourceId}`);
185
- const lines = [
186
- '# Design System',
187
- '',
188
- ...listSection('Source Findings', entry.data.sourceFindings),
189
- ...listSection('Section Inventory', entry.data.sectionInventory),
190
- ...listSection('Visual Observations', entry.data.visualObservations),
191
- ...listSection('Source Roles', sourceRoleLines),
192
- ...buildMotionGuidanceMarkdown(entry.sourceIds, metadata),
193
- ...listSection('Quality Bar', entry.data.qualityBar),
194
- ...(entry.data.risks ? listSection('Risks', entry.data.risks) : []),
195
- ];
196
- return `${lines.join('\n').trim()}\n`;
197
- };
198
- const designContextsFromActionMetadata = (metadata) => {
199
- if (!metadata)
200
- return [];
201
- return metadata
202
- .filter((entry) => entry.kind === 'design_system')
203
- .map((entry, index) => ({
204
- label: index === 0 ? 'Design system' : `Design system ${index + 1}`,
205
- markdown: buildDesignMarkdownFromMetadata(entry, metadata),
206
- }));
207
- };
208
- const mergeVariantContext = (args) => {
209
- if (!args.bundle)
210
- return undefined;
211
- const metadata = args.sourcePlan.metadata;
212
- const metadataByActionId = new Map();
213
- for (const entry of metadata) {
214
- if (!entry.actionId)
215
- continue;
216
- const ids = metadataByActionId.get(entry.actionId) ?? [];
217
- ids.push(entry.id);
218
- metadataByActionId.set(entry.actionId, ids);
219
- }
220
- const actions = args.sourcePlan.actions.map((action) => ({
221
- ...action,
222
- outputMetadataIds: action.outputMetadataIds ?? metadataByActionId.get(action.id),
223
- }));
224
- return {
225
- ...args.bundle,
226
- sessionId: args.sessionId,
227
- rivetActions: actions,
228
- rivetMetadata: metadata,
229
- ...(args.sourcePlan.bindings ? { bindings: args.sourcePlan.bindings } : {}),
230
- executionPlan: args.sourcePlan.executionPlan,
231
- };
232
- };
233
- const METADATA_KIND_BY_ACTION_KIND = {
234
- extract_design_system: 'design_system',
235
- describe_motion: 'motion_guidance',
236
- };
237
- const validateActionMetadataOutputs = (args) => {
238
- const actions = args.sourcePlan.actions;
239
- const metadata = args.sourcePlan.metadata;
240
- if (actions.length === 0 && metadata.length > 0) {
241
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', 'source_plan reported metadata without any actions; metadata must be produced by a reported action');
242
- }
243
- const sourceIds = new Set(args.bundle?.userContext.map((source) => source.id) ?? []);
244
- for (const entry of metadata) {
245
- const unknownSourceIds = entry.sourceIds.filter((sourceId) => sourceIds.size > 0 && !sourceIds.has(sourceId));
246
- if (unknownSourceIds.length > 0) {
247
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan metadata ${entry.id} references unknown sourceIds: ${unknownSourceIds.join(', ')}`);
248
- }
249
- }
250
- if (actions.length === 0)
251
- return;
252
- const metadataById = new Map(metadata.map((entry) => [entry.id, entry]));
253
- for (const action of actions) {
254
- const unknownSourceIds = action.sourceIds.filter((sourceId) => sourceIds.size > 0 && !sourceIds.has(sourceId));
255
- if (unknownSourceIds.length > 0) {
256
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan action ${action.id} references unknown sourceIds: ${unknownSourceIds.join(', ')}`);
257
- }
258
- const expectedMetadataKind = METADATA_KIND_BY_ACTION_KIND[action.kind];
259
- const linkedMetadata = [
260
- ...metadata.filter((entry) => entry.actionId === action.id),
261
- ...(action.outputMetadataIds ?? [])
262
- .map((id) => metadataById.get(id))
263
- .filter((entry) => Boolean(entry)),
264
- ];
265
- const hasExpectedMetadata = linkedMetadata.some((entry) => entry.kind === expectedMetadataKind);
266
- if (!hasExpectedMetadata) {
267
- throw new errors_1.AgentVariantsError('SOURCE_CONTEXT_INVALID', `source_plan action ${action.id} (${action.kind}) must produce ${expectedMetadataKind} metadata`);
268
- }
269
- }
270
- };
271
127
  const collectSlotBoundIds = (bindings) => {
272
128
  const sourceIds = new Set();
273
129
  const actionIds = new Set();
@@ -341,44 +197,16 @@ class SessionStore {
341
197
  kind: 'existing',
342
198
  };
343
199
  const count = clampCount(args.count);
344
- const bundle = projectContext.kind === 'fresh'
345
- ? projectContext.variantContext
346
- : undefined;
347
- const needsSourcePlan = requiresSourcePlan(projectContext) && !args.hasPreparedBriefs;
348
- const initialItem = needsSourcePlan
349
- ? {
350
- id: (0, crypto_1.randomUUID)(),
351
- kind: 'source_plan',
352
- status: 'pending',
353
- attempt: 0,
354
- dependsOn: [],
355
- input: {
356
- prompt: args.prompt,
357
- guidance: args.guidance ?? [],
358
- count,
359
- target: args.target,
360
- ...(bundle
361
- ? {
362
- contextBundlePath: bundle.contextBundlePath,
363
- userContext: bundle.userContext,
364
- availableActions: exports.SOURCE_PLAN_ACTION_OPTIONS,
365
- variantSlotCount: count,
366
- }
367
- : {}),
368
- projectContext,
369
- },
370
- acceptedReports: [],
371
- }
372
- : createBriefWorkItem({
373
- prompt: args.prompt,
374
- guidance: args.guidance ?? [],
375
- count,
376
- target: args.target,
377
- projectContext,
378
- });
200
+ const initialItem = createBriefWorkItem({
201
+ prompt: args.prompt,
202
+ guidance: args.guidance ?? [],
203
+ count,
204
+ target: args.target,
205
+ projectContext,
206
+ });
379
207
  const record = {
380
208
  sessionId,
381
- stage: needsSourcePlan ? 'awaiting_source_plan' : 'awaiting_briefs',
209
+ stage: 'awaiting_briefs',
382
210
  prompt: args.prompt,
383
211
  guidance: args.guidance ?? [],
384
212
  runLabel: args.runLabel?.trim() || undefined,
@@ -395,17 +223,11 @@ class SessionStore {
395
223
  createdAt: this.clock.now(),
396
224
  };
397
225
  this.sessions.set(sessionId, record);
398
- return needsSourcePlan
399
- ? {
400
- sessionId,
401
- stage: 'awaiting_source_plan',
402
- sourcePlanWorkItem: initialItem,
403
- }
404
- : {
405
- sessionId,
406
- stage: 'awaiting_briefs',
407
- briefWorkItem: initialItem,
408
- };
226
+ return {
227
+ sessionId,
228
+ stage: 'awaiting_briefs',
229
+ briefWorkItem: initialItem,
230
+ };
409
231
  }
410
232
  reportBriefs(args) {
411
233
  const session = this.requireSession(args.sessionId);
@@ -452,83 +274,6 @@ class SessionStore {
452
274
  session.acceptedFingerprints.set(fp, result);
453
275
  return result;
454
276
  }
455
- reportSourcePlan(args) {
456
- const session = this.requireSession(args.sessionId);
457
- const fp = fingerprint([
458
- 'reportSourcePlan',
459
- args.sessionId,
460
- args.workItemId,
461
- args.leaseId,
462
- args.attempt,
463
- 'succeeded',
464
- ]);
465
- const cached = session.acceptedFingerprints.get(fp);
466
- if (cached)
467
- return cached;
468
- this.assertStage(session, ['awaiting_source_plan']);
469
- const item = this.requireWorkItem(session, args.workItemId);
470
- if (item.kind !== 'source_plan') {
471
- throw new errors_1.AgentVariantsError('INVALID_STAGE_ACTION', `Work item ${args.workItemId} is not a source_plan item`);
472
- }
473
- this.validatePlanningReport(item, args.leaseId, args.attempt);
474
- const { executionPlan, actions, metadata, bindings } = args.sourcePlan;
475
- validateActionMetadataOutputs({
476
- bundle: session.projectContext.kind === 'fresh'
477
- ? session.projectContext.variantContext
478
- : undefined,
479
- sourcePlan: args.sourcePlan,
480
- });
481
- if (session.projectContext.kind === 'fresh') {
482
- const projectDesignContexts = designContextsFromActionMetadata(metadata);
483
- session.projectContext = {
484
- ...session.projectContext,
485
- ...(projectDesignContexts.length > 0
486
- ? {
487
- designContext: projectDesignContexts.map((entry) => ({
488
- kind: 'markdown',
489
- label: entry.label,
490
- content: entry.markdown,
491
- })),
492
- }
493
- : {}),
494
- executionPlan,
495
- };
496
- }
497
- const updatedContext = mergeVariantContext({
498
- bundle: session.projectContext.kind === 'fresh'
499
- ? session.projectContext.variantContext
500
- : undefined,
501
- sessionId: session.sessionId,
502
- sourcePlan: args.sourcePlan,
503
- });
504
- if (updatedContext && session.projectContext.kind === 'fresh') {
505
- session.projectContext = {
506
- ...session.projectContext,
507
- variantContext: updatedContext,
508
- };
509
- }
510
- item.status = 'succeeded';
511
- item.output = {
512
- actions,
513
- metadata,
514
- ...(bindings ? { bindings } : {}),
515
- executionPlan,
516
- };
517
- item.lease = undefined;
518
- const briefItem = createBriefWorkItem({
519
- prompt: session.prompt,
520
- guidance: session.guidance,
521
- count: session.count,
522
- target: session.target,
523
- projectContext: session.projectContext,
524
- });
525
- session.workItems.set(briefItem.id, briefItem);
526
- session.workItemOrder.push(briefItem.id);
527
- session.stage = 'awaiting_briefs';
528
- const result = { briefWorkItem: briefItem };
529
- session.acceptedFingerprints.set(fp, result);
530
- return result;
531
- }
532
277
  approve(args) {
533
278
  const session = this.requireSession(args.sessionId);
534
279
  this.assertStage(session, ['awaiting_approval']);
@@ -657,7 +402,6 @@ class SessionStore {
657
402
  requestWork(args) {
658
403
  const session = this.requireSession(args.sessionId);
659
404
  this.assertStage(session, [
660
- 'awaiting_source_plan',
661
405
  'work_items_ready',
662
406
  'waiting_for_results',
663
407
  ]);
@@ -698,10 +442,7 @@ class SessionStore {
698
442
  };
699
443
  item.status = 'running';
700
444
  }
701
- session.stage =
702
- session.stage === 'awaiting_source_plan'
703
- ? 'awaiting_source_plan'
704
- : 'waiting_for_results';
445
+ session.stage = 'waiting_for_results';
705
446
  return {
706
447
  leaseId,
707
448
  leaseTtlMs: Math.max(...issued.map((i) => leaseTtlForKind(i.kind))),
@@ -762,12 +503,13 @@ class SessionStore {
762
503
  item.error = args.error;
763
504
  if (args.runtime)
764
505
  item.runtime = args.runtime;
765
- if (args.status === 'succeeded' && (args.title || args.description)) {
766
- const input = item.input;
506
+ if (args.status === 'succeeded' &&
507
+ (args.title || args.description) &&
508
+ (0, workItemInput_1.isVariantWorkItem)(item)) {
767
509
  if (args.title)
768
- input.briefLabel = args.title.trim().slice(0, 80);
510
+ item.input.briefLabel = args.title.trim().slice(0, 80);
769
511
  if (args.description)
770
- input.briefBody = args.description.trim();
512
+ item.input.briefBody = args.description.trim();
771
513
  }
772
514
  item.acceptedReports.push(fp);
773
515
  item.lease = undefined;
@@ -797,8 +539,8 @@ class SessionStore {
797
539
  item.lease = undefined;
798
540
  item.output = undefined;
799
541
  item.error = undefined;
800
- const input = (item.input ?? {});
801
- item.input = { ...input, qaRetry: args.qaRetry };
542
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
543
+ item.input = { ...item.input, qaRetry: args.qaRetry };
802
544
  const result = {
803
545
  stage: session.stage,
804
546
  progress: this.progressOf(session),
@@ -818,8 +560,7 @@ class SessionStore {
818
560
  const activeRefinement = [...session.workItems.values()].find((item) => {
819
561
  if (item.kind !== 'refine_variant')
820
562
  return false;
821
- const input = item.input;
822
- return input.variantId === args.variantId && item.status === 'pending';
563
+ return (item.input.variantId === args.variantId && item.status === 'pending');
823
564
  });
824
565
  if (activeRefinement) {
825
566
  throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'A refinement is already queued for this variant');
@@ -847,7 +588,7 @@ class SessionStore {
847
588
  ...(args.currentHtml ? { currentHtml: args.currentHtml } : {}),
848
589
  ...(args.targetElement ? { targetElement: args.targetElement } : {}),
849
590
  ...(args.requestId ? { requestId: args.requestId } : {}),
850
- projectContext: targetInput.projectContext ?? session.projectContext,
591
+ projectContext: targetInput.projectContext,
851
592
  ...(targetInput.context ? { context: targetInput.context } : {}),
852
593
  ...(relevantFiles.length > 0 ? { relevantFiles } : {}),
853
594
  },
@@ -870,8 +611,7 @@ class SessionStore {
870
611
  const activeRefinement = [...session.workItems.values()].find((item) => {
871
612
  if (item.kind !== 'refine_variant')
872
613
  return false;
873
- const input = item.input;
874
- return (input.variantId === args.sourceVariantId &&
614
+ return (item.input.variantId === args.sourceVariantId &&
875
615
  (item.status === 'pending' || item.status === 'running'));
876
616
  });
877
617
  if (activeRefinement) {
@@ -946,7 +686,7 @@ class SessionStore {
946
686
  ...(args.targetElement ? { targetElement: args.targetElement } : {}),
947
687
  ...(args.requestId ? { requestId: args.requestId } : {}),
948
688
  ...(args.fidelity ? { fidelity: args.fidelity } : {}),
949
- projectContext: sourceInput.projectContext ?? session.projectContext,
689
+ projectContext: sourceInput.projectContext,
950
690
  ...(context ? { context } : {}),
951
691
  ...(relevantFiles.length > 0 ? { relevantFiles } : {}),
952
692
  },
@@ -984,16 +724,15 @@ class SessionStore {
984
724
  const activeRefinement = [...session.workItems.values()].find((item) => {
985
725
  if (item.kind !== 'refine_variant')
986
726
  return false;
987
- const input = item.input;
988
- return (input.variantId === args.sourceVariantId &&
727
+ return (item.input.variantId === args.sourceVariantId &&
989
728
  (item.status === 'pending' || item.status === 'running'));
990
729
  });
991
730
  if (activeRefinement) {
992
731
  throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'Cannot vary a variant while an in-place refinement is pending or running');
993
732
  }
994
733
  }
995
- const sourceInput = (source?.input ?? {});
996
- const relevantFiles = mergeRelevantFiles(sourceInput.relevantFiles, args.relevantFiles);
734
+ const sourceInput = source && (0, workItemInput_1.isVariantWorkItem)(source) ? source.input : undefined;
735
+ const relevantFiles = mergeRelevantFiles(sourceInput?.relevantFiles, args.relevantFiles);
997
736
  const createdWorkItemIds = [];
998
737
  for (const [batchSlotIndex, brief] of args.briefs.entries()) {
999
738
  const context = resolveVariantWorkItemContext({
@@ -1015,7 +754,7 @@ class SessionStore {
1015
754
  briefId: brief.briefId,
1016
755
  briefLabel: brief.label,
1017
756
  briefBody: brief.body,
1018
- references: (0, variant_reference_1.mergeVariantReferences)(sourceInput.references, context?.references),
757
+ references: (0, variant_reference_1.mergeVariantReferences)(sourceInput?.references, context?.references),
1019
758
  instruction: args.instruction,
1020
759
  guidance: args.guidance ?? [],
1021
760
  ...(brief.notes ? { briefNotes: brief.notes } : {}),
@@ -1024,10 +763,10 @@ class SessionStore {
1024
763
  ...(args.sourceVariantId
1025
764
  ? { sourceVariantId: args.sourceVariantId }
1026
765
  : {}),
1027
- ...(source && sourceInput.briefLabel
766
+ ...(sourceInput?.briefLabel
1028
767
  ? { sourceLabel: sourceInput.briefLabel }
1029
768
  : {}),
1030
- ...(source && sourceInput.briefBody
769
+ ...(sourceInput?.briefBody
1031
770
  ? { sourceBody: sourceInput.briefBody }
1032
771
  : {}),
1033
772
  target: session.target,
@@ -1053,10 +792,9 @@ class SessionStore {
1053
792
  }
1054
793
  const existing = this.findAdoptedVariant(session, args.source);
1055
794
  if (existing) {
1056
- const input = existing.input;
1057
795
  return {
1058
796
  workItemId: existing.id,
1059
- briefId: input.briefId ?? '',
797
+ briefId: existing.input.briefId ?? '',
1060
798
  created: false,
1061
799
  };
1062
800
  }
@@ -1121,10 +859,9 @@ class SessionStore {
1121
859
  }
1122
860
  findAdoptedVariant(session, source) {
1123
861
  for (const item of session.workItems.values()) {
1124
- if (item.removed)
862
+ if (item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
1125
863
  continue;
1126
- const adoptedFrom = item.input
1127
- .adoptedFrom;
864
+ const { adoptedFrom } = item.input;
1128
865
  if (adoptedFrom &&
1129
866
  adoptedFrom.sessionId === source.sessionId &&
1130
867
  adoptedFrom.variantId === source.variantId) {
@@ -1136,43 +873,38 @@ class SessionStore {
1136
873
  assignVariantPreviewRoutes(args) {
1137
874
  const session = this.requireSession(args.sessionId);
1138
875
  const source = args.sourceVariantId
1139
- ? this.requireWorkItem(session, args.sourceVariantId).input
876
+ ? this.requireWorkItem(session, args.sourceVariantId)
1140
877
  : undefined;
1141
- const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source?.previewRoutes);
878
+ const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source && (0, workItemInput_1.isVariantWorkItem)(source)
879
+ ? source.input.previewRoutes
880
+ : undefined);
1142
881
  if (!merged.length)
1143
882
  return;
1144
883
  const previewRoutes = preview_routes_1.previewRoutesSchema.parse(merged);
1145
884
  for (const workItemId of args.workItemIds) {
1146
885
  const item = this.requireWorkItem(session, workItemId);
1147
- item.input = {
1148
- ...item.input,
1149
- previewRoutes: [...previewRoutes],
1150
- };
886
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
887
+ item.input = { ...item.input, previewRoutes: [...previewRoutes] };
1151
888
  }
1152
889
  }
1153
890
  assignVariantRequestId(sessionId, workItemIds, requestId) {
1154
891
  const session = this.requireSession(sessionId);
1155
892
  for (const id of workItemIds) {
1156
893
  const item = session.workItems.get(id);
1157
- if (!item)
1158
- continue;
1159
- const input = (item.input ?? {});
1160
- item.input = { ...input, requestId };
894
+ if (item && (0, workItemInput_1.isVariantWorkItem)(item))
895
+ item.input = { ...item.input, requestId };
1161
896
  }
1162
897
  }
1163
898
  getPendingRefinement(sessionId, variantId) {
1164
- return [...this.requireSession(sessionId).workItems.values()].find((item) => {
1165
- if (item.kind !== 'refine_variant')
1166
- return false;
1167
- const input = item.input;
1168
- return input.variantId === variantId && item.status === 'pending';
1169
- });
899
+ return [...this.requireSession(sessionId).workItems.values()].find((item) => item.kind === 'refine_variant' &&
900
+ item.input.variantId === variantId &&
901
+ item.status === 'pending');
1170
902
  }
1171
903
  appendPendingRefineVariantInstruction(args) {
1172
904
  const refineItem = this.getPendingRefinement(args.sessionId, args.variantId);
1173
905
  if (!refineItem)
1174
906
  return false;
1175
- const input = refineItem.input;
907
+ const { input } = refineItem;
1176
908
  input.guidance = args.guidance ?? [];
1177
909
  input.requestId = args.requestId;
1178
910
  input.instruction =
@@ -1192,7 +924,7 @@ class SessionStore {
1192
924
  const runningRefinement = [...session.workItems.values()].find((item) => {
1193
925
  if (item.kind !== 'refine_variant')
1194
926
  return false;
1195
- const input = item.input;
927
+ const { input } = item;
1196
928
  return input.variantId === args.variantId && item.status === 'running';
1197
929
  });
1198
930
  if (runningRefinement) {
@@ -1201,7 +933,7 @@ class SessionStore {
1201
933
  const refineItem = [...session.workItems.values()].find((item) => {
1202
934
  if (item.kind !== 'refine_variant')
1203
935
  return false;
1204
- const input = item.input;
936
+ const { input } = item;
1205
937
  return input.variantId === args.variantId && item.status === 'pending';
1206
938
  });
1207
939
  if (!refineItem) {
@@ -1299,7 +1031,7 @@ class SessionStore {
1299
1031
  for (const other of session.workItems.values()) {
1300
1032
  if (other.kind !== 'refine_variant')
1301
1033
  continue;
1302
- const input = other.input;
1034
+ const { input } = other;
1303
1035
  if (input.variantId !== item.id)
1304
1036
  continue;
1305
1037
  if (other.status === 'pending' || other.status === 'running') {
@@ -1318,8 +1050,8 @@ class SessionStore {
1318
1050
  renameWorkItem(args) {
1319
1051
  const session = this.requireSession(args.sessionId);
1320
1052
  const item = this.requireWorkItem(session, args.workItemId);
1321
- const input = item.input;
1322
- input.briefLabel = args.label;
1053
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
1054
+ item.input.briefLabel = args.label;
1323
1055
  return {
1324
1056
  workItemId: item.id,
1325
1057
  label: args.label,
@@ -1332,9 +1064,9 @@ class SessionStore {
1332
1064
  const workItemIds = [];
1333
1065
  for (const id of session.workItemOrder) {
1334
1066
  const item = session.workItems.get(id);
1335
- if (!item || item.removed)
1067
+ if (!item || item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
1336
1068
  continue;
1337
- const input = item.input;
1069
+ const { input } = item;
1338
1070
  if (input.requestId !== args.requestId)
1339
1071
  continue;
1340
1072
  const effective = input.runLabel ?? sessionFallback;
@@ -1401,12 +1133,7 @@ class SessionStore {
1401
1133
  const { lease } = item;
1402
1134
  if (!lease || item.status !== 'running')
1403
1135
  return [];
1404
- const input = item.input && typeof item.input === 'object'
1405
- ? item.input
1406
- : {};
1407
- const variantId = item.kind === 'refine_variant' && typeof input.variantId === 'string'
1408
- ? input.variantId
1409
- : item.id;
1136
+ const variantId = (item.kind === 'refine_variant' && item.input.variantId) || item.id;
1410
1137
  return {
1411
1138
  workId: item.id,
1412
1139
  variantId,
@@ -1432,14 +1159,25 @@ class SessionStore {
1432
1159
  hasSession(sessionId) {
1433
1160
  return this.sessions.has(sessionId);
1434
1161
  }
1435
- getWorkItemInput(sessionId, workItemId) {
1162
+ getVariantWorkItemInput(sessionId, workItemId) {
1436
1163
  const session = this.requireSession(sessionId);
1437
1164
  const item = this.requireWorkItem(session, workItemId);
1438
- return item.input;
1165
+ return (0, workItemInput_1.isVariantWorkItem)(item)
1166
+ ? (0, workItemInput_1.parseVariantWorkItemInput)(item)
1167
+ : undefined;
1168
+ }
1169
+ requireVariantWorkItemInput(args) {
1170
+ const session = this.requireSession(args.sessionId);
1171
+ const item = this.requireWorkItem(session, args.workItemId);
1172
+ const kind = args.kinds.find((candidate) => candidate === item.kind);
1173
+ if (!kind) {
1174
+ throw new errors_1.AgentVariantsError('WORK_ITEM_NOT_FOUND', `Work item ${item.id} is a ${item.kind} work item, not ${args.kinds.join(' or ')}`);
1175
+ }
1176
+ return (0, workItemInput_1.parseVariantWorkItemInput)({ id: item.id, kind, input: item.input });
1439
1177
  }
1440
1178
  getWorkItemIdsForRequest(sessionId, requestId) {
1441
1179
  return [...this.requireSession(sessionId).workItems.values()]
1442
- .filter((item) => item.input.requestId === requestId)
1180
+ .filter((item) => (0, workItemInput_1.isVariantWorkItem)(item) && item.input.requestId === requestId)
1443
1181
  .map((item) => item.id);
1444
1182
  }
1445
1183
  getWorkItemOutput(sessionId, workItemId) {
@@ -1463,7 +1201,7 @@ class SessionStore {
1463
1201
  }
1464
1202
  isVaryForkWorkItem(sessionId, workItemId) {
1465
1203
  const item = this.sessions.get(sessionId)?.workItems.get(workItemId);
1466
- return Boolean(item && item.input.sourceVariantId);
1204
+ return Boolean(item && (0, workItemInput_1.isVariantWorkItem)(item) && item.input.sourceVariantId);
1467
1205
  }
1468
1206
  isWorkItemAborted(sessionId, workItemId) {
1469
1207
  const session = this.sessions.get(sessionId);
@@ -1551,8 +1289,7 @@ class SessionStore {
1551
1289
  return out;
1552
1290
  }
1553
1291
  hasLeasableCodeGenForStaticPreview(session, staticPreview) {
1554
- const staticInput = staticPreview.input;
1555
- if (!staticInput.briefId)
1292
+ if (!(0, workItemInput_1.isVariantWorkItem)(staticPreview) || !staticPreview.input.briefId)
1556
1293
  return false;
1557
1294
  for (const candidate of session.workItems.values()) {
1558
1295
  if (candidate.kind !== 'code_gen')
@@ -1561,8 +1298,7 @@ class SessionStore {
1561
1298
  continue;
1562
1299
  if (!this.dependenciesMet(session, candidate))
1563
1300
  continue;
1564
- const codeInput = candidate.input;
1565
- if (codeInput.briefId === staticInput.briefId)
1301
+ if (candidate.input.briefId === staticPreview.input.briefId)
1566
1302
  return true;
1567
1303
  }
1568
1304
  return false;
@@ -1646,11 +1382,6 @@ class SessionStore {
1646
1382
  };
1647
1383
  }
1648
1384
  progressOf(session) {
1649
- if (session.stage === 'awaiting_source_plan') {
1650
- const planItems = [...session.workItems.values()].filter((item) => item.kind === 'source_plan');
1651
- const ready = planItems.filter((item) => item.status === 'succeeded').length;
1652
- return { ready, total: planItems.length };
1653
- }
1654
1385
  const items = this.terminalItems(session);
1655
1386
  const ready = items.filter((i) => i.status === 'succeeded').length;
1656
1387
  return { ready, total: items.length };
@@ -1661,14 +1392,11 @@ class SessionStore {
1661
1392
  successCount: items.filter((i) => i.status === 'succeeded').length,
1662
1393
  failureCount: items.filter((i) => i.status === 'failed').length,
1663
1394
  cancelledCount: items.filter((i) => i.status === 'cancelled').length,
1664
- variants: items.map((i) => {
1665
- const input = i.input;
1666
- return {
1667
- workItemId: i.id,
1668
- status: i.status,
1669
- label: input.briefLabel,
1670
- };
1671
- }),
1395
+ variants: items.map((i) => ({
1396
+ workItemId: i.id,
1397
+ status: i.status,
1398
+ label: (0, workItemInput_1.isVariantWorkItem)(i) ? i.input.briefLabel : undefined,
1399
+ })),
1672
1400
  };
1673
1401
  }
1674
1402
  refinementSnapshotPriority(item) {
@@ -1684,7 +1412,7 @@ class SessionStore {
1684
1412
  for (const item of session.workItems.values()) {
1685
1413
  if (item.kind !== 'refine_variant')
1686
1414
  continue;
1687
- const input = item.input;
1415
+ const { input } = item;
1688
1416
  if (!input.variantId)
1689
1417
  continue;
1690
1418
  const existing = refinementsByVariantId.get(input.variantId);
@@ -1698,14 +1426,14 @@ class SessionStore {
1698
1426
  .map((id) => session.workItems.get(id))
1699
1427
  .filter((i) => !!i &&
1700
1428
  !i.removed &&
1429
+ (0, workItemInput_1.isVariantWorkItem)(i) &&
1701
1430
  (i.kind === kind ||
1702
1431
  isAdoptedVariant(i) ||
1703
1432
  isForkedStaticPreviewVariant(i)))
1704
1433
  .map((item) => {
1705
- const input = item.input;
1434
+ const { input } = item;
1706
1435
  const refineItem = refinementsByVariantId.get(item.id);
1707
- const refineRequestId = refineItem?.input
1708
- ?.requestId;
1436
+ const refineRequestId = refineItem?.input.requestId;
1709
1437
  return {
1710
1438
  workItemId: item.id,
1711
1439
  ...(input.previewRoutes