rivet-design 0.21.10 → 0.22.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 (160) hide show
  1. package/README.md +5 -1
  2. package/README.npm.md +5 -1
  3. package/bin/rivet.js +4 -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 +12 -2
  8. package/dist/agent-variants/SessionStore.d.ts.map +1 -1
  9. package/dist/agent-variants/SessionStore.js +69 -77
  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 -1
  18. package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  19. package/dist/agent-variants/WorktreeOrchestrator.js +53 -26
  20. package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -1
  21. package/dist/agent-variants/contextAssets.d.ts.map +1 -1
  22. package/dist/agent-variants/contextAssets.js +2 -8
  23. package/dist/agent-variants/contextAssets.js.map +1 -1
  24. package/dist/agent-variants/contracts.d.ts +73 -63
  25. package/dist/agent-variants/contracts.d.ts.map +1 -1
  26. package/dist/agent-variants/contracts.js.map +1 -1
  27. package/dist/agent-variants/staticPreviewFiles.d.ts.map +1 -1
  28. package/dist/agent-variants/staticPreviewFiles.js +7 -6
  29. package/dist/agent-variants/staticPreviewFiles.js.map +1 -1
  30. package/dist/agent-variants/staticPreviewRefinements.d.ts.map +1 -1
  31. package/dist/agent-variants/staticPreviewRefinements.js +3 -3
  32. package/dist/agent-variants/staticPreviewRefinements.js.map +1 -1
  33. package/dist/agent-variants/variantContext.d.ts.map +1 -1
  34. package/dist/agent-variants/variantContext.js +2 -8
  35. package/dist/agent-variants/variantContext.js.map +1 -1
  36. package/dist/agent-variants/variantWorkspaceFiles.d.ts +0 -1
  37. package/dist/agent-variants/variantWorkspaceFiles.d.ts.map +1 -1
  38. package/dist/agent-variants/variantWorkspaceFiles.js +5 -10
  39. package/dist/agent-variants/variantWorkspaceFiles.js.map +1 -1
  40. package/dist/agent-variants/workItemInput.d.ts +5950 -0
  41. package/dist/agent-variants/workItemInput.d.ts.map +1 -0
  42. package/dist/agent-variants/workItemInput.js +76 -0
  43. package/dist/agent-variants/workItemInput.js.map +1 -0
  44. package/dist/agent-variants/workItemPreviewRoutes.js +2 -2
  45. package/dist/agent-variants/workItemPreviewRoutes.js.map +1 -1
  46. package/dist/cli/handoff.d.ts +5 -0
  47. package/dist/cli/handoff.d.ts.map +1 -1
  48. package/dist/cli/handoff.js +13 -10
  49. package/dist/cli/handoff.js.map +1 -1
  50. package/dist/config/proxy.d.ts +3 -0
  51. package/dist/config/proxy.d.ts.map +1 -1
  52. package/dist/config/proxy.js +7 -5
  53. package/dist/config/proxy.js.map +1 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +46 -7
  56. package/dist/index.js.map +1 -1
  57. package/dist/install/agentSkill.d.ts +16 -0
  58. package/dist/install/agentSkill.d.ts.map +1 -0
  59. package/dist/install/agentSkill.js +54 -0
  60. package/dist/install/agentSkill.js.map +1 -0
  61. package/dist/install/allowlists.d.ts +3 -1
  62. package/dist/install/allowlists.d.ts.map +1 -1
  63. package/dist/install/allowlists.js +89 -27
  64. package/dist/install/allowlists.js.map +1 -1
  65. package/dist/install/automaticCliUpdate.d.ts.map +1 -1
  66. package/dist/install/automaticCliUpdate.js +6 -11
  67. package/dist/install/automaticCliUpdate.js.map +1 -1
  68. package/dist/install/channelCli.d.ts.map +1 -1
  69. package/dist/install/channelCli.js +2 -37
  70. package/dist/install/channelCli.js.map +1 -1
  71. package/dist/install/channelManager.d.ts +2 -1
  72. package/dist/install/channelManager.d.ts.map +1 -1
  73. package/dist/install/channelManager.js +23 -20
  74. package/dist/install/channelManager.js.map +1 -1
  75. package/dist/install/codexSkill.d.ts +1 -8
  76. package/dist/install/codexSkill.d.ts.map +1 -1
  77. package/dist/install/codexSkill.js +9 -50
  78. package/dist/install/codexSkill.js.map +1 -1
  79. package/dist/install/cursorSkill.d.ts +6 -0
  80. package/dist/install/cursorSkill.d.ts.map +1 -0
  81. package/dist/install/cursorSkill.js +36 -0
  82. package/dist/install/cursorSkill.js.map +1 -0
  83. package/dist/install/globalBootstrap.d.ts +3 -2
  84. package/dist/install/globalBootstrap.d.ts.map +1 -1
  85. package/dist/install/globalBootstrap.js +9 -41
  86. package/dist/install/globalBootstrap.js.map +1 -1
  87. package/dist/install/harnesses.d.ts +27 -0
  88. package/dist/install/harnesses.d.ts.map +1 -1
  89. package/dist/install/harnesses.js +174 -76
  90. package/dist/install/harnesses.js.map +1 -1
  91. package/dist/library/importFiles.d.ts.map +1 -1
  92. package/dist/library/importFiles.js +3 -3
  93. package/dist/library/importFiles.js.map +1 -1
  94. package/dist/prototype-host.js +2 -1
  95. package/dist/prototype-host.js.map +1 -1
  96. package/dist/routes/agentVariants.d.ts.map +1 -1
  97. package/dist/routes/agentVariants.js +5 -11
  98. package/dist/routes/agentVariants.js.map +1 -1
  99. package/dist/routes/library/staticPreview.d.ts.map +1 -1
  100. package/dist/routes/library/staticPreview.js +9 -7
  101. package/dist/routes/library/staticPreview.js.map +1 -1
  102. package/dist/routes/prototypeHost.d.ts.map +1 -1
  103. package/dist/routes/prototypeHost.js +3 -3
  104. package/dist/routes/prototypeHost.js.map +1 -1
  105. package/dist/routes/staticPreviewPolicy.d.ts.map +1 -1
  106. package/dist/routes/staticPreviewPolicy.js +2 -10
  107. package/dist/routes/staticPreviewPolicy.js.map +1 -1
  108. package/dist/routes/variantRequestSchema.d.ts +4 -4
  109. package/dist/services/AuthService.js +3 -3
  110. package/dist/services/AuthService.js.map +1 -1
  111. package/dist/services/BundleStore.d.ts.map +1 -1
  112. package/dist/services/BundleStore.js +4 -8
  113. package/dist/services/BundleStore.js.map +1 -1
  114. package/dist/services/DependencyPreparationService.d.ts.map +1 -1
  115. package/dist/services/DependencyPreparationService.js +4 -3
  116. package/dist/services/DependencyPreparationService.js.map +1 -1
  117. package/dist/services/OperatingSystemServices.d.ts +5 -0
  118. package/dist/services/OperatingSystemServices.d.ts.map +1 -1
  119. package/dist/services/OperatingSystemServices.js +9 -3
  120. package/dist/services/OperatingSystemServices.js.map +1 -1
  121. package/dist/services/ProjectImport.d.ts.map +1 -1
  122. package/dist/services/ProjectImport.js +2 -1
  123. package/dist/services/ProjectImport.js.map +1 -1
  124. package/dist/services/ProjectPackageManager.d.ts +0 -1
  125. package/dist/services/ProjectPackageManager.d.ts.map +1 -1
  126. package/dist/services/ProjectPackageManager.js +5 -12
  127. package/dist/services/ProjectPackageManager.js.map +1 -1
  128. package/dist/services/PrototypeBuildService.d.ts.map +1 -1
  129. package/dist/services/PrototypeBuildService.js +10 -6
  130. package/dist/services/PrototypeBuildService.js.map +1 -1
  131. package/dist/services/VariantHistoryService.js +5 -8
  132. package/dist/services/VariantHistoryService.js.map +1 -1
  133. package/dist/services/WorktreeManager.d.ts.map +1 -1
  134. package/dist/services/WorktreeManager.js +4 -4
  135. package/dist/services/WorktreeManager.js.map +1 -1
  136. package/dist/services/packageManagerProcess.d.ts +20 -0
  137. package/dist/services/packageManagerProcess.d.ts.map +1 -0
  138. package/dist/services/packageManagerProcess.js +55 -0
  139. package/dist/services/packageManagerProcess.js.map +1 -0
  140. package/dist/services/referenceImages.d.ts.map +1 -1
  141. package/dist/services/referenceImages.js +4 -4
  142. package/dist/services/referenceImages.js.map +1 -1
  143. package/dist/services/staticProjectTarget.d.ts.map +1 -1
  144. package/dist/services/staticProjectTarget.js +3 -5
  145. package/dist/services/staticProjectTarget.js.map +1 -1
  146. package/dist/storage/library/ProjectPreviewCache.d.ts +2 -2
  147. package/dist/utils/pathContainment.d.ts +15 -0
  148. package/dist/utils/pathContainment.d.ts.map +1 -0
  149. package/dist/utils/pathContainment.js +46 -0
  150. package/dist/utils/pathContainment.js.map +1 -0
  151. package/dist/utils/skillWriter.d.ts +5 -2
  152. package/dist/utils/skillWriter.d.ts.map +1 -1
  153. package/dist/utils/skillWriter.js +93 -34
  154. package/dist/utils/skillWriter.js.map +1 -1
  155. package/package.json +2 -2
  156. package/src/ui/dist/assets/{LibraryEntry-CnaaBqt0.js → LibraryEntry-CjxmVfhv.js} +8 -8
  157. package/src/ui/dist/assets/{main-CPmhttJP.js → main-CdSzrhWD.js} +133 -133
  158. package/src/ui/dist/assets/main-DVb3ws41.css +1 -0
  159. package/src/ui/dist/index.html +2 -2
  160. package/src/ui/dist/assets/main-vcYlLdli.css +0 -1
@@ -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('|');
@@ -762,12 +762,13 @@ class SessionStore {
762
762
  item.error = args.error;
763
763
  if (args.runtime)
764
764
  item.runtime = args.runtime;
765
- if (args.status === 'succeeded' && (args.title || args.description)) {
766
- const input = item.input;
765
+ if (args.status === 'succeeded' &&
766
+ (args.title || args.description) &&
767
+ (0, workItemInput_1.isVariantWorkItem)(item)) {
767
768
  if (args.title)
768
- input.briefLabel = args.title.trim().slice(0, 80);
769
+ item.input.briefLabel = args.title.trim().slice(0, 80);
769
770
  if (args.description)
770
- input.briefBody = args.description.trim();
771
+ item.input.briefBody = args.description.trim();
771
772
  }
772
773
  item.acceptedReports.push(fp);
773
774
  item.lease = undefined;
@@ -797,8 +798,8 @@ class SessionStore {
797
798
  item.lease = undefined;
798
799
  item.output = undefined;
799
800
  item.error = undefined;
800
- const input = (item.input ?? {});
801
- item.input = { ...input, qaRetry: args.qaRetry };
801
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
802
+ item.input = { ...item.input, qaRetry: args.qaRetry };
802
803
  const result = {
803
804
  stage: session.stage,
804
805
  progress: this.progressOf(session),
@@ -818,8 +819,7 @@ class SessionStore {
818
819
  const activeRefinement = [...session.workItems.values()].find((item) => {
819
820
  if (item.kind !== 'refine_variant')
820
821
  return false;
821
- const input = item.input;
822
- return input.variantId === args.variantId && item.status === 'pending';
822
+ return (item.input.variantId === args.variantId && item.status === 'pending');
823
823
  });
824
824
  if (activeRefinement) {
825
825
  throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'A refinement is already queued for this variant');
@@ -847,7 +847,7 @@ class SessionStore {
847
847
  ...(args.currentHtml ? { currentHtml: args.currentHtml } : {}),
848
848
  ...(args.targetElement ? { targetElement: args.targetElement } : {}),
849
849
  ...(args.requestId ? { requestId: args.requestId } : {}),
850
- projectContext: targetInput.projectContext ?? session.projectContext,
850
+ projectContext: targetInput.projectContext,
851
851
  ...(targetInput.context ? { context: targetInput.context } : {}),
852
852
  ...(relevantFiles.length > 0 ? { relevantFiles } : {}),
853
853
  },
@@ -870,8 +870,7 @@ class SessionStore {
870
870
  const activeRefinement = [...session.workItems.values()].find((item) => {
871
871
  if (item.kind !== 'refine_variant')
872
872
  return false;
873
- const input = item.input;
874
- return (input.variantId === args.sourceVariantId &&
873
+ return (item.input.variantId === args.sourceVariantId &&
875
874
  (item.status === 'pending' || item.status === 'running'));
876
875
  });
877
876
  if (activeRefinement) {
@@ -946,7 +945,7 @@ class SessionStore {
946
945
  ...(args.targetElement ? { targetElement: args.targetElement } : {}),
947
946
  ...(args.requestId ? { requestId: args.requestId } : {}),
948
947
  ...(args.fidelity ? { fidelity: args.fidelity } : {}),
949
- projectContext: sourceInput.projectContext ?? session.projectContext,
948
+ projectContext: sourceInput.projectContext,
950
949
  ...(context ? { context } : {}),
951
950
  ...(relevantFiles.length > 0 ? { relevantFiles } : {}),
952
951
  },
@@ -984,16 +983,15 @@ class SessionStore {
984
983
  const activeRefinement = [...session.workItems.values()].find((item) => {
985
984
  if (item.kind !== 'refine_variant')
986
985
  return false;
987
- const input = item.input;
988
- return (input.variantId === args.sourceVariantId &&
986
+ return (item.input.variantId === args.sourceVariantId &&
989
987
  (item.status === 'pending' || item.status === 'running'));
990
988
  });
991
989
  if (activeRefinement) {
992
990
  throw new errors_1.AgentVariantsError('PENDING_CHANGE_CONFLICT', 'Cannot vary a variant while an in-place refinement is pending or running');
993
991
  }
994
992
  }
995
- const sourceInput = (source?.input ?? {});
996
- const relevantFiles = mergeRelevantFiles(sourceInput.relevantFiles, args.relevantFiles);
993
+ const sourceInput = source && (0, workItemInput_1.isVariantWorkItem)(source) ? source.input : undefined;
994
+ const relevantFiles = mergeRelevantFiles(sourceInput?.relevantFiles, args.relevantFiles);
997
995
  const createdWorkItemIds = [];
998
996
  for (const [batchSlotIndex, brief] of args.briefs.entries()) {
999
997
  const context = resolveVariantWorkItemContext({
@@ -1015,7 +1013,7 @@ class SessionStore {
1015
1013
  briefId: brief.briefId,
1016
1014
  briefLabel: brief.label,
1017
1015
  briefBody: brief.body,
1018
- references: (0, variant_reference_1.mergeVariantReferences)(sourceInput.references, context?.references),
1016
+ references: (0, variant_reference_1.mergeVariantReferences)(sourceInput?.references, context?.references),
1019
1017
  instruction: args.instruction,
1020
1018
  guidance: args.guidance ?? [],
1021
1019
  ...(brief.notes ? { briefNotes: brief.notes } : {}),
@@ -1024,10 +1022,10 @@ class SessionStore {
1024
1022
  ...(args.sourceVariantId
1025
1023
  ? { sourceVariantId: args.sourceVariantId }
1026
1024
  : {}),
1027
- ...(source && sourceInput.briefLabel
1025
+ ...(sourceInput?.briefLabel
1028
1026
  ? { sourceLabel: sourceInput.briefLabel }
1029
1027
  : {}),
1030
- ...(source && sourceInput.briefBody
1028
+ ...(sourceInput?.briefBody
1031
1029
  ? { sourceBody: sourceInput.briefBody }
1032
1030
  : {}),
1033
1031
  target: session.target,
@@ -1053,10 +1051,9 @@ class SessionStore {
1053
1051
  }
1054
1052
  const existing = this.findAdoptedVariant(session, args.source);
1055
1053
  if (existing) {
1056
- const input = existing.input;
1057
1054
  return {
1058
1055
  workItemId: existing.id,
1059
- briefId: input.briefId ?? '',
1056
+ briefId: existing.input.briefId ?? '',
1060
1057
  created: false,
1061
1058
  };
1062
1059
  }
@@ -1121,10 +1118,9 @@ class SessionStore {
1121
1118
  }
1122
1119
  findAdoptedVariant(session, source) {
1123
1120
  for (const item of session.workItems.values()) {
1124
- if (item.removed)
1121
+ if (item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
1125
1122
  continue;
1126
- const adoptedFrom = item.input
1127
- .adoptedFrom;
1123
+ const { adoptedFrom } = item.input;
1128
1124
  if (adoptedFrom &&
1129
1125
  adoptedFrom.sessionId === source.sessionId &&
1130
1126
  adoptedFrom.variantId === source.variantId) {
@@ -1136,43 +1132,38 @@ class SessionStore {
1136
1132
  assignVariantPreviewRoutes(args) {
1137
1133
  const session = this.requireSession(args.sessionId);
1138
1134
  const source = args.sourceVariantId
1139
- ? this.requireWorkItem(session, args.sourceVariantId).input
1135
+ ? this.requireWorkItem(session, args.sourceVariantId)
1140
1136
  : undefined;
1141
- const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source?.previewRoutes);
1137
+ const merged = (0, preview_routes_1.mergePreviewRoutes)(args.previewRoutes, source && (0, workItemInput_1.isVariantWorkItem)(source)
1138
+ ? source.input.previewRoutes
1139
+ : undefined);
1142
1140
  if (!merged.length)
1143
1141
  return;
1144
1142
  const previewRoutes = preview_routes_1.previewRoutesSchema.parse(merged);
1145
1143
  for (const workItemId of args.workItemIds) {
1146
1144
  const item = this.requireWorkItem(session, workItemId);
1147
- item.input = {
1148
- ...item.input,
1149
- previewRoutes: [...previewRoutes],
1150
- };
1145
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
1146
+ item.input = { ...item.input, previewRoutes: [...previewRoutes] };
1151
1147
  }
1152
1148
  }
1153
1149
  assignVariantRequestId(sessionId, workItemIds, requestId) {
1154
1150
  const session = this.requireSession(sessionId);
1155
1151
  for (const id of workItemIds) {
1156
1152
  const item = session.workItems.get(id);
1157
- if (!item)
1158
- continue;
1159
- const input = (item.input ?? {});
1160
- item.input = { ...input, requestId };
1153
+ if (item && (0, workItemInput_1.isVariantWorkItem)(item))
1154
+ item.input = { ...item.input, requestId };
1161
1155
  }
1162
1156
  }
1163
1157
  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
- });
1158
+ return [...this.requireSession(sessionId).workItems.values()].find((item) => item.kind === 'refine_variant' &&
1159
+ item.input.variantId === variantId &&
1160
+ item.status === 'pending');
1170
1161
  }
1171
1162
  appendPendingRefineVariantInstruction(args) {
1172
1163
  const refineItem = this.getPendingRefinement(args.sessionId, args.variantId);
1173
1164
  if (!refineItem)
1174
1165
  return false;
1175
- const input = refineItem.input;
1166
+ const { input } = refineItem;
1176
1167
  input.guidance = args.guidance ?? [];
1177
1168
  input.requestId = args.requestId;
1178
1169
  input.instruction =
@@ -1192,7 +1183,7 @@ class SessionStore {
1192
1183
  const runningRefinement = [...session.workItems.values()].find((item) => {
1193
1184
  if (item.kind !== 'refine_variant')
1194
1185
  return false;
1195
- const input = item.input;
1186
+ const { input } = item;
1196
1187
  return input.variantId === args.variantId && item.status === 'running';
1197
1188
  });
1198
1189
  if (runningRefinement) {
@@ -1201,7 +1192,7 @@ class SessionStore {
1201
1192
  const refineItem = [...session.workItems.values()].find((item) => {
1202
1193
  if (item.kind !== 'refine_variant')
1203
1194
  return false;
1204
- const input = item.input;
1195
+ const { input } = item;
1205
1196
  return input.variantId === args.variantId && item.status === 'pending';
1206
1197
  });
1207
1198
  if (!refineItem) {
@@ -1299,7 +1290,7 @@ class SessionStore {
1299
1290
  for (const other of session.workItems.values()) {
1300
1291
  if (other.kind !== 'refine_variant')
1301
1292
  continue;
1302
- const input = other.input;
1293
+ const { input } = other;
1303
1294
  if (input.variantId !== item.id)
1304
1295
  continue;
1305
1296
  if (other.status === 'pending' || other.status === 'running') {
@@ -1318,8 +1309,8 @@ class SessionStore {
1318
1309
  renameWorkItem(args) {
1319
1310
  const session = this.requireSession(args.sessionId);
1320
1311
  const item = this.requireWorkItem(session, args.workItemId);
1321
- const input = item.input;
1322
- input.briefLabel = args.label;
1312
+ if ((0, workItemInput_1.isVariantWorkItem)(item))
1313
+ item.input.briefLabel = args.label;
1323
1314
  return {
1324
1315
  workItemId: item.id,
1325
1316
  label: args.label,
@@ -1332,9 +1323,9 @@ class SessionStore {
1332
1323
  const workItemIds = [];
1333
1324
  for (const id of session.workItemOrder) {
1334
1325
  const item = session.workItems.get(id);
1335
- if (!item || item.removed)
1326
+ if (!item || item.removed || !(0, workItemInput_1.isVariantWorkItem)(item))
1336
1327
  continue;
1337
- const input = item.input;
1328
+ const { input } = item;
1338
1329
  if (input.requestId !== args.requestId)
1339
1330
  continue;
1340
1331
  const effective = input.runLabel ?? sessionFallback;
@@ -1401,12 +1392,7 @@ class SessionStore {
1401
1392
  const { lease } = item;
1402
1393
  if (!lease || item.status !== 'running')
1403
1394
  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;
1395
+ const variantId = (item.kind === 'refine_variant' && item.input.variantId) || item.id;
1410
1396
  return {
1411
1397
  workId: item.id,
1412
1398
  variantId,
@@ -1432,14 +1418,25 @@ class SessionStore {
1432
1418
  hasSession(sessionId) {
1433
1419
  return this.sessions.has(sessionId);
1434
1420
  }
1435
- getWorkItemInput(sessionId, workItemId) {
1421
+ getVariantWorkItemInput(sessionId, workItemId) {
1436
1422
  const session = this.requireSession(sessionId);
1437
1423
  const item = this.requireWorkItem(session, workItemId);
1438
- return item.input;
1424
+ return (0, workItemInput_1.isVariantWorkItem)(item)
1425
+ ? (0, workItemInput_1.parseVariantWorkItemInput)(item)
1426
+ : undefined;
1427
+ }
1428
+ requireVariantWorkItemInput(args) {
1429
+ const session = this.requireSession(args.sessionId);
1430
+ const item = this.requireWorkItem(session, args.workItemId);
1431
+ const kind = args.kinds.find((candidate) => candidate === item.kind);
1432
+ if (!kind) {
1433
+ throw new errors_1.AgentVariantsError('WORK_ITEM_NOT_FOUND', `Work item ${item.id} is a ${item.kind} work item, not ${args.kinds.join(' or ')}`);
1434
+ }
1435
+ return (0, workItemInput_1.parseVariantWorkItemInput)({ id: item.id, kind, input: item.input });
1439
1436
  }
1440
1437
  getWorkItemIdsForRequest(sessionId, requestId) {
1441
1438
  return [...this.requireSession(sessionId).workItems.values()]
1442
- .filter((item) => item.input.requestId === requestId)
1439
+ .filter((item) => (0, workItemInput_1.isVariantWorkItem)(item) && item.input.requestId === requestId)
1443
1440
  .map((item) => item.id);
1444
1441
  }
1445
1442
  getWorkItemOutput(sessionId, workItemId) {
@@ -1463,7 +1460,7 @@ class SessionStore {
1463
1460
  }
1464
1461
  isVaryForkWorkItem(sessionId, workItemId) {
1465
1462
  const item = this.sessions.get(sessionId)?.workItems.get(workItemId);
1466
- return Boolean(item && item.input.sourceVariantId);
1463
+ return Boolean(item && (0, workItemInput_1.isVariantWorkItem)(item) && item.input.sourceVariantId);
1467
1464
  }
1468
1465
  isWorkItemAborted(sessionId, workItemId) {
1469
1466
  const session = this.sessions.get(sessionId);
@@ -1551,8 +1548,7 @@ class SessionStore {
1551
1548
  return out;
1552
1549
  }
1553
1550
  hasLeasableCodeGenForStaticPreview(session, staticPreview) {
1554
- const staticInput = staticPreview.input;
1555
- if (!staticInput.briefId)
1551
+ if (!(0, workItemInput_1.isVariantWorkItem)(staticPreview) || !staticPreview.input.briefId)
1556
1552
  return false;
1557
1553
  for (const candidate of session.workItems.values()) {
1558
1554
  if (candidate.kind !== 'code_gen')
@@ -1561,8 +1557,7 @@ class SessionStore {
1561
1557
  continue;
1562
1558
  if (!this.dependenciesMet(session, candidate))
1563
1559
  continue;
1564
- const codeInput = candidate.input;
1565
- if (codeInput.briefId === staticInput.briefId)
1560
+ if (candidate.input.briefId === staticPreview.input.briefId)
1566
1561
  return true;
1567
1562
  }
1568
1563
  return false;
@@ -1661,14 +1656,11 @@ class SessionStore {
1661
1656
  successCount: items.filter((i) => i.status === 'succeeded').length,
1662
1657
  failureCount: items.filter((i) => i.status === 'failed').length,
1663
1658
  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
- }),
1659
+ variants: items.map((i) => ({
1660
+ workItemId: i.id,
1661
+ status: i.status,
1662
+ label: (0, workItemInput_1.isVariantWorkItem)(i) ? i.input.briefLabel : undefined,
1663
+ })),
1672
1664
  };
1673
1665
  }
1674
1666
  refinementSnapshotPriority(item) {
@@ -1684,7 +1676,7 @@ class SessionStore {
1684
1676
  for (const item of session.workItems.values()) {
1685
1677
  if (item.kind !== 'refine_variant')
1686
1678
  continue;
1687
- const input = item.input;
1679
+ const { input } = item;
1688
1680
  if (!input.variantId)
1689
1681
  continue;
1690
1682
  const existing = refinementsByVariantId.get(input.variantId);
@@ -1698,14 +1690,14 @@ class SessionStore {
1698
1690
  .map((id) => session.workItems.get(id))
1699
1691
  .filter((i) => !!i &&
1700
1692
  !i.removed &&
1693
+ (0, workItemInput_1.isVariantWorkItem)(i) &&
1701
1694
  (i.kind === kind ||
1702
1695
  isAdoptedVariant(i) ||
1703
1696
  isForkedStaticPreviewVariant(i)))
1704
1697
  .map((item) => {
1705
- const input = item.input;
1698
+ const { input } = item;
1706
1699
  const refineItem = refinementsByVariantId.get(item.id);
1707
- const refineRequestId = refineItem?.input
1708
- ?.requestId;
1700
+ const refineRequestId = refineItem?.input.requestId;
1709
1701
  return {
1710
1702
  workItemId: item.id,
1711
1703
  ...(input.previewRoutes