@flanksource/clicky-ui 0.3.41 → 0.3.42

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 (472) hide show
  1. package/dist/ai.cjs +4 -0
  2. package/dist/ai.cjs.map +1 -1
  3. package/dist/ai.js +4 -0
  4. package/dist/ai.js.map +1 -1
  5. package/dist/comments/CommentCard.cjs +3 -1
  6. package/dist/comments/CommentCard.cjs.map +1 -1
  7. package/dist/comments/CommentCard.d.ts.map +1 -1
  8. package/dist/comments/CommentCard.js +4 -2
  9. package/dist/comments/CommentCard.js.map +1 -1
  10. package/dist/comments/CommentCardParts.cjs +16 -0
  11. package/dist/comments/CommentCardParts.cjs.map +1 -1
  12. package/dist/comments/CommentCardParts.d.ts +4 -1
  13. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  14. package/dist/comments/CommentCardParts.js +16 -0
  15. package/dist/comments/CommentCardParts.js.map +1 -1
  16. package/dist/comments/comment-types.cjs.map +1 -1
  17. package/dist/comments/comment-types.d.ts +4 -0
  18. package/dist/comments/comment-types.d.ts.map +1 -1
  19. package/dist/comments/comment-types.js.map +1 -1
  20. package/dist/components/Combobox.cjs +54 -8
  21. package/dist/components/Combobox.cjs.map +1 -1
  22. package/dist/components/Combobox.d.ts.map +1 -1
  23. package/dist/components/Combobox.js +56 -10
  24. package/dist/components/Combobox.js.map +1 -1
  25. package/dist/components/ComboboxMenu.cjs +139 -113
  26. package/dist/components/ComboboxMenu.cjs.map +1 -1
  27. package/dist/components/ComboboxMenu.d.ts +3 -1
  28. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  29. package/dist/components/ComboboxMenu.js +139 -113
  30. package/dist/components/ComboboxMenu.js.map +1 -1
  31. package/dist/components/ComboboxMenuTrigger.cjs +87 -0
  32. package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
  33. package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
  34. package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
  35. package/dist/components/ComboboxMenuTrigger.js +87 -0
  36. package/dist/components/ComboboxMenuTrigger.js.map +1 -0
  37. package/dist/components/JsonSchemaForm.cjs +30 -7
  38. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  39. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  40. package/dist/components/JsonSchemaForm.js +30 -7
  41. package/dist/components/JsonSchemaForm.js.map +1 -1
  42. package/dist/components/SegmentedControl.cjs +20 -3
  43. package/dist/components/SegmentedControl.cjs.map +1 -1
  44. package/dist/components/SegmentedControl.d.ts +11 -0
  45. package/dist/components/SegmentedControl.d.ts.map +1 -1
  46. package/dist/components/SegmentedControl.js +21 -4
  47. package/dist/components/SegmentedControl.js.map +1 -1
  48. package/dist/components/combobox-types.d.ts +8 -0
  49. package/dist/components/combobox-types.d.ts.map +1 -1
  50. package/dist/components/json-schema-form-debug-badge.cjs +108 -0
  51. package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
  52. package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
  53. package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
  54. package/dist/components/json-schema-form-debug-badge.js +108 -0
  55. package/dist/components/json-schema-form-debug-badge.js.map +1 -0
  56. package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
  57. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
  58. package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
  59. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
  60. package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
  61. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
  62. package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
  63. package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
  64. package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
  65. package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
  66. package/dist/components/json-schema-form-debug-glyph.js +13 -0
  67. package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
  68. package/dist/components/json-schema-form-debug-groups.cjs +56 -0
  69. package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
  70. package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
  71. package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
  72. package/dist/components/json-schema-form-debug-groups.js +56 -0
  73. package/dist/components/json-schema-form-debug-groups.js.map +1 -0
  74. package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
  75. package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
  76. package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
  77. package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
  78. package/dist/components/json-schema-form-debug-keywords.js +159 -0
  79. package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
  80. package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
  81. package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
  82. package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
  83. package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
  84. package/dist/components/json-schema-form-debug-listeners.js +102 -0
  85. package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
  86. package/dist/components/json-schema-form-debug.cjs +31 -0
  87. package/dist/components/json-schema-form-debug.cjs.map +1 -0
  88. package/dist/components/json-schema-form-debug.d.ts +11 -0
  89. package/dist/components/json-schema-form-debug.d.ts.map +1 -0
  90. package/dist/components/json-schema-form-debug.js +31 -0
  91. package/dist/components/json-schema-form-debug.js.map +1 -0
  92. package/dist/components/json-schema-form-enum-choice.cjs +114 -0
  93. package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
  94. package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
  95. package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
  96. package/dist/components/json-schema-form-enum-choice.js +114 -0
  97. package/dist/components/json-schema-form-enum-choice.js.map +1 -0
  98. package/dist/components/json-schema-form-fields.cjs +3 -93
  99. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  100. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-fields.js +1 -91
  102. package/dist/components/json-schema-form-fields.js.map +1 -1
  103. package/dist/components/json-schema-form-listeners.cjs +7 -1
  104. package/dist/components/json-schema-form-listeners.cjs.map +1 -1
  105. package/dist/components/json-schema-form-listeners.d.ts.map +1 -1
  106. package/dist/components/json-schema-form-listeners.js +7 -1
  107. package/dist/components/json-schema-form-listeners.js.map +1 -1
  108. package/dist/components/json-schema-form-preferences.cjs +1 -0
  109. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  110. package/dist/components/json-schema-form-preferences.d.ts +1 -0
  111. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-preferences.js +1 -0
  113. package/dist/components/json-schema-form-preferences.js.map +1 -1
  114. package/dist/components/json-schema-form-render.cjs +21 -5
  115. package/dist/components/json-schema-form-render.cjs.map +1 -1
  116. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  117. package/dist/components/json-schema-form-render.js +21 -5
  118. package/dist/components/json-schema-form-render.js.map +1 -1
  119. package/dist/components/json-schema-form-runtime-types.d.ts +1 -0
  120. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
  121. package/dist/components/json-schema-form-tone.cjs +12 -0
  122. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  123. package/dist/components/json-schema-form-tone.js +12 -0
  124. package/dist/components/json-schema-form-tone.js.map +1 -1
  125. package/dist/components/json-schema-form-types.d.ts +1 -0
  126. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  127. package/dist/data/GraphDiagram.cjs +125 -138
  128. package/dist/data/GraphDiagram.cjs.map +1 -1
  129. package/dist/data/GraphDiagram.d.ts +30 -23
  130. package/dist/data/GraphDiagram.d.ts.map +1 -1
  131. package/dist/data/GraphDiagram.js +128 -141
  132. package/dist/data/GraphDiagram.js.map +1 -1
  133. package/dist/data/GraphDiagramEdges.cjs +208 -0
  134. package/dist/data/GraphDiagramEdges.cjs.map +1 -0
  135. package/dist/data/GraphDiagramEdges.d.ts +40 -0
  136. package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
  137. package/dist/data/GraphDiagramEdges.js +208 -0
  138. package/dist/data/GraphDiagramEdges.js.map +1 -0
  139. package/dist/data/GraphDiagramNodes.cjs +142 -0
  140. package/dist/data/GraphDiagramNodes.cjs.map +1 -0
  141. package/dist/data/GraphDiagramNodes.d.ts +22 -0
  142. package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
  143. package/dist/data/GraphDiagramNodes.js +142 -0
  144. package/dist/data/GraphDiagramNodes.js.map +1 -0
  145. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
  146. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
  147. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
  148. package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
  149. package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
  150. package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
  151. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  152. package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
  153. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  154. package/dist/data/ai/PromptRunEditor/index.js +38 -44
  155. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  156. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
  157. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  158. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
  159. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  160. package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
  161. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  162. package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
  163. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
  164. package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
  165. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
  166. package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
  167. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
  168. package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
  169. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  170. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
  171. package/dist/data/ai/SessionInspector.approvals.js +26 -2
  172. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  173. package/dist/data/ai/SessionInspector.summary.cjs +9 -3
  174. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  175. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  176. package/dist/data/ai/SessionInspector.summary.js +9 -3
  177. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  178. package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
  179. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
  180. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  181. package/dist/data/ai/SessionInspector.transcript.js +4 -0
  182. package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
  183. package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
  184. package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
  185. package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
  186. package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
  187. package/dist/data/ai/SessionViewer.approval-body.js +146 -0
  188. package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
  189. package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
  190. package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
  191. package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
  192. package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
  193. package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
  194. package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
  195. package/dist/data/ai/SessionViewer.cjs +57 -20
  196. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  197. package/dist/data/ai/SessionViewer.d.ts +13 -3
  198. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  199. package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
  200. package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
  201. package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
  202. package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
  203. package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
  204. package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
  205. package/dist/data/ai/SessionViewer.decision.cjs +21 -0
  206. package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
  207. package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
  208. package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
  209. package/dist/data/ai/SessionViewer.decision.js +21 -0
  210. package/dist/data/ai/SessionViewer.decision.js.map +1 -0
  211. package/dist/data/ai/SessionViewer.input.cjs +14 -0
  212. package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
  213. package/dist/data/ai/SessionViewer.input.d.ts +5 -0
  214. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
  215. package/dist/data/ai/SessionViewer.input.js +14 -0
  216. package/dist/data/ai/SessionViewer.input.js.map +1 -1
  217. package/dist/data/ai/SessionViewer.js +58 -21
  218. package/dist/data/ai/SessionViewer.js.map +1 -1
  219. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  220. package/dist/data/ai/SessionViewer.model.d.ts +4 -0
  221. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  222. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  223. package/dist/data/ai/SessionViewer.rows.cjs +6 -3
  224. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  225. package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
  226. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  227. package/dist/data/ai/SessionViewer.rows.js +6 -3
  228. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  229. package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
  230. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  231. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  232. package/dist/data/ai/SessionViewer.tool-row.js +27 -235
  233. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  234. package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
  235. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  236. package/dist/data/ai/SessionViewerMenu.cjs +8 -2
  237. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  238. package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
  239. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  240. package/dist/data/ai/SessionViewerMenu.js +8 -2
  241. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  242. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
  243. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  244. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
  245. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  246. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
  247. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  248. package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
  249. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  250. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
  251. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  252. package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
  253. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  254. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
  255. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
  256. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  257. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
  258. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  259. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  260. package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
  261. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  262. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
  263. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  264. package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
  265. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  266. package/dist/data/ai/approval-request.cjs +75 -0
  267. package/dist/data/ai/approval-request.cjs.map +1 -0
  268. package/dist/data/ai/approval-request.d.ts +155 -0
  269. package/dist/data/ai/approval-request.d.ts.map +1 -0
  270. package/dist/data/ai/approval-request.js +75 -0
  271. package/dist/data/ai/approval-request.js.map +1 -0
  272. package/dist/data/ai/index.d.ts +3 -0
  273. package/dist/data/ai/index.d.ts.map +1 -1
  274. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
  275. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
  276. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
  277. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
  278. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
  279. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
  280. package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
  281. package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
  282. package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
  283. package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
  284. package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
  285. package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
  286. package/dist/data/ai/runtime-preset-menu/model.js +73 -0
  287. package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
  288. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
  289. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
  290. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
  291. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
  292. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
  293. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
  294. package/dist/data/ai/runtime-spec-fields.cjs +166 -0
  295. package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
  296. package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
  297. package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
  298. package/dist/data/ai/runtime-spec-fields.js +166 -0
  299. package/dist/data/ai/runtime-spec-fields.js.map +1 -0
  300. package/dist/data/ai/session-categories.cjs +4 -0
  301. package/dist/data/ai/session-categories.cjs.map +1 -1
  302. package/dist/data/ai/session-categories.d.ts +1 -0
  303. package/dist/data/ai/session-categories.d.ts.map +1 -1
  304. package/dist/data/ai/session-categories.js +4 -0
  305. package/dist/data/ai/session-categories.js.map +1 -1
  306. package/dist/data/ai/use-session-scroll.cjs +49 -21
  307. package/dist/data/ai/use-session-scroll.cjs.map +1 -1
  308. package/dist/data/ai/use-session-scroll.d.ts +2 -0
  309. package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
  310. package/dist/data/ai/use-session-scroll.js +49 -21
  311. package/dist/data/ai/use-session-scroll.js.map +1 -1
  312. package/dist/data/chat/Chat.runtime.cjs +1 -1
  313. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  314. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  315. package/dist/data/chat/Chat.runtime.js +1 -1
  316. package/dist/data/chat/Chat.runtime.js.map +1 -1
  317. package/dist/data/graph-columns-layout.cjs +216 -0
  318. package/dist/data/graph-columns-layout.cjs.map +1 -0
  319. package/dist/data/graph-columns-layout.d.ts +56 -0
  320. package/dist/data/graph-columns-layout.d.ts.map +1 -0
  321. package/dist/data/graph-columns-layout.js +216 -0
  322. package/dist/data/graph-columns-layout.js.map +1 -0
  323. package/dist/data/graph-diagram-model.cjs +73 -0
  324. package/dist/data/graph-diagram-model.cjs.map +1 -0
  325. package/dist/data/graph-diagram-model.d.ts +90 -0
  326. package/dist/data/graph-diagram-model.d.ts.map +1 -0
  327. package/dist/data/graph-diagram-model.js +73 -0
  328. package/dist/data/graph-diagram-model.js.map +1 -0
  329. package/dist/data/graph-edge-routing.cjs +235 -0
  330. package/dist/data/graph-edge-routing.cjs.map +1 -0
  331. package/dist/data/graph-edge-routing.d.ts +73 -0
  332. package/dist/data/graph-edge-routing.d.ts.map +1 -0
  333. package/dist/data/graph-edge-routing.js +235 -0
  334. package/dist/data/graph-edge-routing.js.map +1 -0
  335. package/dist/data/graph-layout.cjs +0 -82
  336. package/dist/data/graph-layout.cjs.map +1 -1
  337. package/dist/data/graph-layout.d.ts +1 -28
  338. package/dist/data/graph-layout.d.ts.map +1 -1
  339. package/dist/data/graph-layout.js +1 -83
  340. package/dist/data/graph-layout.js.map +1 -1
  341. package/dist/data/har/HarPanel.cjs +129 -33
  342. package/dist/data/har/HarPanel.cjs.map +1 -1
  343. package/dist/data/har/HarPanel.d.ts +13 -1
  344. package/dist/data/har/HarPanel.d.ts.map +1 -1
  345. package/dist/data/har/HarPanel.js +130 -34
  346. package/dist/data/har/HarPanel.js.map +1 -1
  347. package/dist/data/har/fixtures.d.ts +12 -0
  348. package/dist/data/har/fixtures.d.ts.map +1 -1
  349. package/dist/data/har/types.d.ts +12 -0
  350. package/dist/data/har/types.d.ts.map +1 -1
  351. package/dist/data/runtime/RuntimeBar.cjs +67 -84
  352. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  353. package/dist/data/runtime/RuntimeBar.d.ts +4 -5
  354. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  355. package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
  356. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
  357. package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
  358. package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
  359. package/dist/data/runtime/RuntimeBar.fields.js +170 -0
  360. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
  361. package/dist/data/runtime/RuntimeBar.js +70 -87
  362. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  363. package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
  364. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
  365. package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
  366. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
  367. package/dist/data/runtime/RuntimeBar.selection.js +56 -0
  368. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
  369. package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
  370. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  371. package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
  372. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  373. package/dist/data/runtime/RuntimeBarActions.js +10 -6
  374. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  375. package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
  376. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
  377. package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
  378. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
  379. package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
  380. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
  381. package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
  382. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
  383. package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
  384. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
  385. package/dist/data/runtime/RuntimeBarLayout.js +95 -0
  386. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
  387. package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
  388. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  389. package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
  390. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  391. package/dist/data/runtime/RuntimeBarSegment.js +25 -14
  392. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  393. package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
  394. package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
  395. package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
  396. package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
  397. package/dist/data/runtime/RuntimeLimitInput.js +41 -0
  398. package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
  399. package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
  400. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
  401. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
  402. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
  403. package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
  404. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
  405. package/dist/data/use-edge-focus.cjs +20 -0
  406. package/dist/data/use-edge-focus.cjs.map +1 -0
  407. package/dist/data/use-edge-focus.d.ts +23 -0
  408. package/dist/data/use-edge-focus.d.ts.map +1 -0
  409. package/dist/data/use-edge-focus.js +20 -0
  410. package/dist/data/use-edge-focus.js.map +1 -0
  411. package/dist/data/use-pan-zoom.cjs +159 -0
  412. package/dist/data/use-pan-zoom.cjs.map +1 -0
  413. package/dist/data/use-pan-zoom.d.ts +79 -0
  414. package/dist/data/use-pan-zoom.d.ts.map +1 -0
  415. package/dist/data/use-pan-zoom.js +159 -0
  416. package/dist/data/use-pan-zoom.js.map +1 -0
  417. package/dist/data/version-info.cjs +3 -3
  418. package/dist/data/version-info.js +3 -3
  419. package/dist/data.cjs +5 -1
  420. package/dist/data.cjs.map +1 -1
  421. package/dist/data.d.ts +4 -3
  422. package/dist/data.d.ts.map +1 -1
  423. package/dist/data.js +6 -2
  424. package/dist/data.js.map +1 -1
  425. package/dist/index.cjs +5 -1
  426. package/dist/index.cjs.map +1 -1
  427. package/dist/index.js +6 -2
  428. package/dist/index.js.map +1 -1
  429. package/dist/overlay/DropdownMenu.cjs +1 -0
  430. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  431. package/dist/overlay/DropdownMenu.d.ts +4 -0
  432. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  433. package/dist/overlay/DropdownMenu.js +1 -0
  434. package/dist/overlay/DropdownMenu.js.map +1 -1
  435. package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
  436. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  437. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  438. package/dist/overlay/DropdownMenuSubmenu.js +31 -15
  439. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  440. package/dist/rpc/OperationCatalog.cjs +3 -1
  441. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  442. package/dist/rpc/OperationCatalog.d.ts +3 -1
  443. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  444. package/dist/rpc/OperationCatalog.js +3 -1
  445. package/dist/rpc/OperationCatalog.js.map +1 -1
  446. package/dist/rpc/useOperationPages.cjs +6 -1
  447. package/dist/rpc/useOperationPages.cjs.map +1 -1
  448. package/dist/rpc/useOperationPages.d.ts +3 -1
  449. package/dist/rpc/useOperationPages.d.ts.map +1 -1
  450. package/dist/rpc/useOperationPages.js +6 -1
  451. package/dist/rpc/useOperationPages.js.map +1 -1
  452. package/dist/styles.css +1 -1
  453. package/package.json +1 -1
  454. package/schemas/json-schema-form.schema.json +5 -0
  455. package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
  456. package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
  457. package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
  458. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
  459. package/dist/data/runtime/RuntimeBarCombo.js +0 -423
  460. package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
  461. package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
  462. package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
  463. package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
  464. package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
  465. package/dist/data/runtime/RuntimeBarLimits.js +0 -262
  466. package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
  467. package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
  468. package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
  469. package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
  470. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
  471. package/dist/data/runtime/RuntimeBarSegments.js +0 -346
  472. package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
@@ -44,7 +44,7 @@ function RuntimeRows({
44
44
  showTimeout: true,
45
45
  showCost: true,
46
46
  ariaLabel: "Runtime 1 controls",
47
- ...actions ? { actions: /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarActions.RuntimeBarActions, { ...actions, inline: wider }) } : {}
47
+ ...actions ? { actions } : {}
48
48
  }
49
49
  )
50
50
  }
@@ -67,7 +67,9 @@ function RuntimeRows({
67
67
  onChange: (next) => onChange(
68
68
  model.withRuntimeRows(
69
69
  value,
70
- rows.map((item, itemIndex) => itemIndex === index ? next : item)
70
+ rows.map(
71
+ (item, itemIndex) => itemIndex === index ? next : item
72
+ )
71
73
  )
72
74
  ),
73
75
  ariaLabel: `Runtime ${index + 1} controls`
@@ -103,7 +105,10 @@ function RuntimeRows({
103
105
  onClick: () => {
104
106
  var _a;
105
107
  return onChange(
106
- model.withRuntimeRows(value, [...rows, ((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}])
108
+ model.withRuntimeRows(value, [
109
+ ...rows,
110
+ ((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}
111
+ ])
107
112
  );
108
113
  },
109
114
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeRows.cjs","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions\n ? { actions: <RuntimeBarActions {...actions} inline={wider} /> }\n : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) => (itemIndex === index ? next : item)),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [...rows, rows[0]?.mode ? { mode: rows[0].mode } : {}]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":["useContainerWiderThan","modelModeOf","jsx","RuntimeBar","singleRuntimeOf","withSingleRuntime","RuntimeBarActions","runtimeRows","jsxs","withRuntimeRows","Button","Icon","UiTrash","UiAdd"],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeRows.cjs","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions ? { actions } : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) =>\n itemIndex === index ? next : item,\n ),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [\n ...rows,\n rows[0]?.mode ? { mode: rows[0].mode } : {},\n ]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":["useContainerWiderThan","modelModeOf","jsx","RuntimeBar","singleRuntimeOf","withSingleRuntime","runtimeRows","jsxs","withRuntimeRows","Button","Icon","UiTrash","RuntimeBarActions","UiAdd"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeRows.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAUjB,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5D,0EAA0E;IAC1E,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC9C,+BA6FA"}
1
+ {"version":3,"file":"RuntimeRows.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAUjB,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5D,0EAA0E;IAC1E,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC9C,+BAgGA"}
@@ -42,7 +42,7 @@ function RuntimeRows({
42
42
  showTimeout: true,
43
43
  showCost: true,
44
44
  ariaLabel: "Runtime 1 controls",
45
- ...actions ? { actions: /* @__PURE__ */ jsx(RuntimeBarActions, { ...actions, inline: wider }) } : {}
45
+ ...actions ? { actions } : {}
46
46
  }
47
47
  )
48
48
  }
@@ -65,7 +65,9 @@ function RuntimeRows({
65
65
  onChange: (next) => onChange(
66
66
  withRuntimeRows(
67
67
  value,
68
- rows.map((item, itemIndex) => itemIndex === index ? next : item)
68
+ rows.map(
69
+ (item, itemIndex) => itemIndex === index ? next : item
70
+ )
69
71
  )
70
72
  ),
71
73
  ariaLabel: `Runtime ${index + 1} controls`
@@ -101,7 +103,10 @@ function RuntimeRows({
101
103
  onClick: () => {
102
104
  var _a;
103
105
  return onChange(
104
- withRuntimeRows(value, [...rows, ((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}])
106
+ withRuntimeRows(value, [
107
+ ...rows,
108
+ ((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}
109
+ ])
105
110
  );
106
111
  },
107
112
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeRows.js","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions\n ? { actions: <RuntimeBarActions {...actions} inline={wider} /> }\n : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) => (itemIndex === index ? next : item)),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [...rows, rows[0]?.mode ? { mode: rows[0].mode } : {}]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAyBA,MAAM,gCAAgC;AAI/B,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,EAAE,KAAK,UAAU,sBAAsB,6BAA6B;AAC1E,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,iBAAiB;AAAA,IACjC,eAAe,iBAAiB;AAAA,EAAA;AAGlC,MAAI,YAAY,KAAK,MAAM,UAAU;AACnC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,WAAU;AAAA,QAEV,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO,gBAAgB,KAAK;AAAA,YAC5B,UAAU,CAAC,SAAS,SAAS,kBAAkB,OAAO,IAAI,CAAC;AAAA,YAC3D,aAAW;AAAA,YACX,UAAQ;AAAA,YACR,WAAU;AAAA,YACT,GAAI,UACD,EAAE,SAAS,oBAAC,mBAAA,EAAmB,GAAG,SAAS,QAAQ,MAAA,CAAO,MAC1D,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAGN;AAEA,QAAM,OAAO,YAAY,KAAK;AAC9B,SACE,qBAAC,OAAA,EAAI,KAAU,WAAU,kCACtB,UAAA;AAAA,IAAA,KAAK,IAAI,CAAC,SAAS,UAClB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,cAAY,WAAW,QAAQ,CAAC;AAAA,QAChC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,OAAO;AAAA,cACP,UAAU,CAAC,SACT;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK,IAAI,CAAC,MAAM,cAAe,cAAc,QAAQ,OAAO,IAAK;AAAA,gBAAA;AAAA,cACnE;AAAA,cAGJ,WAAW,WAAW,QAAQ,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,UAEhC,KAAK,SAAS,KACb;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAY,kBAAkB,QAAQ,CAAC;AAAA,cACvC,SAAS,MACP;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK;AAAA,gBAAA;AAAA,cACnD;AAAA,cAIJ,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1C;AAAA,MAAA;AAAA,MAjCG;AAAA,IAAA,CAoCR;AAAA,IAEA,+BAAY,mBAAA,EAAmB,GAAG,SAAS,QAAQ,OAAO,YAAU,MAAC;AAAA,IACtE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAU;AAAA,QACV,cAAW;AAAA,QACX,SAAS,MAAA;;AACP;AAAA,YACE,gBAAgB,OAAO,CAAC,GAAG,QAAM,UAAK,CAAC,MAAN,mBAAS,QAAO,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC;AAAA,UAAA;AAAA;AAAA,QAIjF,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,UAAS;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAE1C,GACF;AAEJ;"}
1
+ {"version":3,"file":"RuntimeRows.js","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions ? { actions } : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) =>\n itemIndex === index ? next : item,\n ),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [\n ...rows,\n rows[0]?.mode ? { mode: rows[0].mode } : {},\n ]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAyBA,MAAM,gCAAgC;AAI/B,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,EAAE,KAAK,UAAU,sBAAsB,6BAA6B;AAC1E,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,iBAAiB;AAAA,IACjC,eAAe,iBAAiB;AAAA,EAAA;AAGlC,MAAI,YAAY,KAAK,MAAM,UAAU;AACnC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,WAAU;AAAA,QAEV,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO,gBAAgB,KAAK;AAAA,YAC5B,UAAU,CAAC,SAAS,SAAS,kBAAkB,OAAO,IAAI,CAAC;AAAA,YAC3D,aAAW;AAAA,YACX,UAAQ;AAAA,YACR,WAAU;AAAA,YACT,GAAI,UAAU,EAAE,YAAY,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA,MAChC;AAAA,IAAA;AAAA,EAGN;AAEA,QAAM,OAAO,YAAY,KAAK;AAC9B,SACE,qBAAC,OAAA,EAAI,KAAU,WAAU,kCACtB,UAAA;AAAA,IAAA,KAAK,IAAI,CAAC,SAAS,UAClB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,cAAY,WAAW,QAAQ,CAAC;AAAA,QAChC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,OAAO;AAAA,cACP,UAAU,CAAC,SACT;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK;AAAA,oBAAI,CAAC,MAAM,cACd,cAAc,QAAQ,OAAO;AAAA,kBAAA;AAAA,gBAC/B;AAAA,cACF;AAAA,cAGJ,WAAW,WAAW,QAAQ,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,UAEhC,KAAK,SAAS,KACb;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAY,kBAAkB,QAAQ,CAAC;AAAA,cACvC,SAAS,MACP;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK;AAAA,gBAAA;AAAA,cACnD;AAAA,cAIJ,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1C;AAAA,MAAA;AAAA,MAnCG;AAAA,IAAA,CAsCR;AAAA,IAEA,+BAAY,mBAAA,EAAmB,GAAG,SAAS,QAAQ,OAAO,YAAU,MAAC;AAAA,IACtE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAU;AAAA,QACV,cAAW;AAAA,QACX,SAAS,MAAA;;AACP;AAAA,YACE,gBAAgB,OAAO;AAAA,cACrB,GAAG;AAAA,gBACH,UAAK,CAAC,MAAN,mBAAS,QAAO,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS,CAAA;AAAA,YAAC,CAC3C;AAAA,UAAA;AAAA;AAAA,QAIL,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,UAAS;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAE1C,GACF;AAEJ;"}
@@ -9,12 +9,12 @@ const effortIcons = require("../../chat/effort-icons.cjs");
9
9
  const runtimeMode = require("../../runtime/runtime-mode.cjs");
10
10
  const index = require("../SpecRuntimeEditor/index.cjs");
11
11
  const runtimeProfileModel = require("../../../lib/runtime-profile-model.cjs");
12
- const OrderedPresetSelect = require("../runtime-profiles/OrderedPresetSelect.cjs");
12
+ const runtimeSpecFields = require("../runtime-spec-fields.cjs");
13
13
  const model = require("./model.cjs");
14
14
  const PromptBlocks = require("./PromptBlocks.cjs");
15
15
  const RecentRuntimes = require("./RecentRuntimes.cjs");
16
- const runtimeActions = require("./runtimeActions.cjs");
17
16
  const RuntimeRows = require("./RuntimeRows.cjs");
17
+ const useRuntimePresetMenu = require("../runtime-preset-menu/use-runtime-preset-menu.cjs");
18
18
  const UiGearSix = require("../../../icons/components/UiGearSix.cjs");
19
19
  const MODEL_MODES = [
20
20
  { id: "single", label: "Single model" },
@@ -55,6 +55,7 @@ function PromptRunEditor({
55
55
  specSections,
56
56
  specTabs,
57
57
  presets,
58
+ onCreatePreset,
58
59
  resolution
59
60
  }) {
60
61
  if (specTabs && specSections) {
@@ -63,7 +64,6 @@ function PromptRunEditor({
63
64
  );
64
65
  }
65
66
  const [specOpen, setSpecOpen] = react.useState(false);
66
- const [presetsOpen, setPresetsOpen] = react.useState(false);
67
67
  const spec = value.spec ?? {};
68
68
  const modelMode = model.modelModeOf(value);
69
69
  const presetCatalog = presets ?? [];
@@ -74,31 +74,42 @@ function PromptRunEditor({
74
74
  },
75
75
  presetCatalog
76
76
  );
77
+ const presetMenu = useRuntimePresetMenu.useRuntimePresetMenu({
78
+ value: { spec, presets: value.presets ?? [] },
79
+ presets: presetCatalog,
80
+ onCreatePreset,
81
+ onChange: (next) => {
82
+ var _a;
83
+ const updated = { ...value, spec: next.spec, presets: next.presets };
84
+ onChange(
85
+ ((_a = value.runtimes) == null ? void 0 : _a.length) && next.spec !== spec ? model.withRuntimeRows(updated, [
86
+ model.runtimeModelFromSpec(next.spec),
87
+ ...model.runtimeRows(value).slice(1)
88
+ ]) : updated
89
+ );
90
+ }
91
+ });
77
92
  const barActions = {
78
- fields: [
93
+ fields: specTabs ? [] : runtimeSpecFields.runtimeSpecFields({
94
+ value: spec,
95
+ families,
96
+ models,
97
+ effectiveMode: runRuntime.mode,
98
+ effectiveModel: runRuntime.model,
99
+ onChange: (next) => onChange({ ...value, spec: next })
100
+ }).filter((field) => {
101
+ const section = field.id === "permissions.mode" ? "permissions" : field.id === "workflow.commits" ? "commit" : "workspace";
102
+ return !specSections || specSections.includes(section);
103
+ }),
104
+ menu: [
105
+ ...presets !== void 0 || onCreatePreset ? presetMenu.menu : [],
79
106
  ...specTabs ? [] : [
80
- runtimeActions.permissionField({
81
- spec,
82
- families,
83
- effectiveMode: runRuntime.mode,
84
- onChange: (next) => onChange({ ...value, spec: next })
85
- })
86
- ],
87
- ...presets === void 0 ? [] : [
88
- runtimeActions.presetsField({
89
- presets: presetCatalog,
90
- value: value.presets ?? [],
91
- onChange: (next) => onChange({ ...value, presets: next }),
92
- onReorder: () => setPresetsOpen(true)
93
- })
107
+ {
108
+ label: advancedLabel,
109
+ icon: UiGearSix.UiGearSix,
110
+ onSelect: () => setSpecOpen(true)
111
+ }
94
112
  ]
95
- ].filter((field) => field !== void 0),
96
- menu: specTabs ? [] : [
97
- {
98
- label: advancedLabel,
99
- icon: UiGearSix.UiGearSix,
100
- onSelect: () => setSpecOpen(true)
101
- }
102
113
  ]
103
114
  };
104
115
  const specEditorProps = {
@@ -187,24 +198,7 @@ function PromptRunEditor({
187
198
  }
188
199
  ) : promptBlocks,
189
200
  footer,
190
- presets !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
191
- Modal.Modal,
192
- {
193
- open: presetsOpen,
194
- onClose: () => setPresetsOpen(false),
195
- title: "Presets",
196
- size: "lg",
197
- closeOnEsc: true,
198
- children: /* @__PURE__ */ jsxRuntime.jsx(
199
- OrderedPresetSelect.OrderedPresetSelect,
200
- {
201
- presets: presetCatalog,
202
- value: value.presets ?? [],
203
- onChange: (next) => onChange({ ...value, presets: next })
204
- }
205
- )
206
- }
207
- ),
201
+ presetMenu.dialogs,
208
202
  !specTabs && /* @__PURE__ */ jsxRuntime.jsx(
209
203
  Modal.Modal,
210
204
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n RuntimeBarAction,\n RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { OrderedPresetSelect } from \"../runtime-profiles/OrderedPresetSelect\";\nimport {\n modelModeOf,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { permissionField, presetsField } from \"./runtimeActions\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const [presetsOpen, setPresetsOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n // Spec-level run settings shown on the runtime bar. The permission field is\n // dropped under `specTabs` because the inline Permissions tab already owns it,\n // and a value with two editors in one layout is a value that drifts.\n const barActions: RuntimeBarActionsProps = {\n fields: [\n ...(specTabs\n ? []\n : [\n permissionField({\n spec,\n families,\n effectiveMode: runRuntime.mode,\n onChange: (next) => onChange({ ...value, spec: next }),\n }),\n ]),\n ...(presets === undefined\n ? []\n : [\n presetsField({\n presets: presetCatalog,\n value: value.presets ?? [],\n onChange: (next) => onChange({ ...value, presets: next }),\n onReorder: () => setPresetsOpen(true),\n }),\n ]),\n ].filter((field): field is RuntimeBarAction => field !== undefined),\n menu: specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presets !== undefined && (\n <Modal\n open={presetsOpen}\n onClose={() => setPresetsOpen(false)}\n title=\"Presets\"\n size=\"lg\"\n closeOnEsc\n >\n <OrderedPresetSelect\n presets={presetCatalog}\n value={value.presets ?? []}\n onChange={(next) => onChange({ ...value, presets: next })}\n />\n </Modal>\n )}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":["SPEC_RUNTIME_FAMILIES","DEFAULT_REASONING_EFFORTS","useState","modelModeOf","authoredRuntimeSpec","permissionField","presetsField","UiGearSix","jsx","PromptBlocks","cn","SegmentedControl","withModelMode","jsxs","Block","RuntimeRows","RecentRuntimes","withRecentRuntime","SpecRuntimeEditor","Modal","OrderedPresetSelect","labelForMode"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type { RuntimeBarActionsProps } from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { runtimeSpecFields } from \"../runtime-spec-fields\";\nimport { useRuntimePresetMenu } from \"../runtime-preset-menu\";\nimport {\n modelModeOf,\n runtimeModelFromSpec,\n runtimeRows,\n withRuntimeRows,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n /** Persist a preset captured from the runtime bar. */\n onCreatePreset?:\n | ((draft: RuntimePreset) => Promise<RuntimePreset>)\n | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n onCreatePreset,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n const presetMenu = useRuntimePresetMenu({\n value: { spec, presets: value.presets ?? [] },\n presets: presetCatalog,\n onCreatePreset,\n onChange: (next) => {\n const updated = { ...value, spec: next.spec, presets: next.presets };\n onChange(\n value.runtimes?.length && next.spec !== spec\n ? withRuntimeRows(updated, [\n runtimeModelFromSpec(next.spec),\n ...runtimeRows(value).slice(1),\n ])\n : updated,\n );\n },\n });\n const barActions: RuntimeBarActionsProps = {\n fields: specTabs\n ? []\n : runtimeSpecFields({\n value: spec,\n families,\n models,\n effectiveMode: runRuntime.mode,\n effectiveModel: runRuntime.model,\n onChange: (next) => onChange({ ...value, spec: next }),\n }).filter((field) => {\n const section =\n field.id === \"permissions.mode\"\n ? \"permissions\"\n : field.id === \"workflow.commits\"\n ? \"commit\"\n : \"workspace\";\n return !specSections || specSections.includes(section);\n }),\n menu: [\n ...(presets !== undefined || onCreatePreset ? presetMenu.menu : []),\n ...(specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ]),\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presetMenu.dialogs}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":["SPEC_RUNTIME_FAMILIES","DEFAULT_REASONING_EFFORTS","useState","modelModeOf","authoredRuntimeSpec","useRuntimePresetMenu","withRuntimeRows","runtimeModelFromSpec","runtimeRows","runtimeSpecFields","UiGearSix","jsx","PromptBlocks","cn","SegmentedControl","withModelMode","jsxs","Block","RuntimeRows","RecentRuntimes","withRecentRuntime","SpecRuntimeEditor","Modal","labelForMode"],"mappings":"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"}
@@ -62,11 +62,13 @@ export type PromptRunEditorProps = {
62
62
  profiles?: RuntimeProfile[] | undefined;
63
63
  /** Available presets for direct ordered run selection. */
64
64
  presets?: RuntimePreset[] | undefined;
65
+ /** Persist a preset captured from the runtime bar. */
66
+ onCreatePreset?: ((draft: RuntimePreset) => Promise<RuntimePreset>) | undefined;
65
67
  onSaveProfile?: ((profile: RuntimeProfile) => Promise<RuntimeProfile>) | undefined;
66
68
  onCreateProfile?: ((profile: RuntimeProfile) => Promise<RuntimeProfile>) | undefined;
67
69
  onResolveProfile?: ((request: RuntimeProfileResolveRequest) => Promise<ResolvedRuntimeProfile>) | undefined;
68
70
  /** The last render's resolved spec and layer trace. */
69
71
  resolution?: ResolvedRuntimeSpec | undefined;
70
72
  };
71
- export declare function PromptRunEditor({ value, onChange, models, families, tools, permissionCatalog, secretSelector, cliOptions, fixtureSchemas, sandboxCatalog, sandboxCreate, reasoningEfforts, recentRuntimes, variablesSchema, onVariablesValidityChange, promptEditor, promptLabel, promptPlaceholder, enableAttachments, attachmentUpload, attachmentLimits, children, header, footer, className, advancedLabel, specModalTitle, specSections, specTabs, presets, resolution, }: PromptRunEditorProps): import("react").JSX.Element;
73
+ export declare function PromptRunEditor({ value, onChange, models, families, tools, permissionCatalog, secretSelector, cliOptions, fixtureSchemas, sandboxCatalog, sandboxCreate, reasoningEfforts, recentRuntimes, variablesSchema, onVariablesValidityChange, promptEditor, promptLabel, promptPlaceholder, enableAttachments, attachmentUpload, attachmentLimits, children, header, footer, className, advancedLabel, specModalTitle, specSections, specTabs, presets, onCreatePreset, resolution, }: PromptRunEditorProps): import("react").JSX.Element;
72
74
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"names":[],"mappings":"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"}
@@ -7,12 +7,12 @@ import { DEFAULT_REASONING_EFFORTS } from "../../chat/effort-icons.js";
7
7
  import { SPEC_RUNTIME_FAMILIES, labelForMode } from "../../runtime/runtime-mode.js";
8
8
  import { SpecRuntimeEditor } from "../SpecRuntimeEditor/index.js";
9
9
  import { authoredRuntimeSpec } from "../../../lib/runtime-profile-model.js";
10
- import { OrderedPresetSelect } from "../runtime-profiles/OrderedPresetSelect.js";
11
- import { modelModeOf, withModelMode, withRecentRuntime } from "./model.js";
10
+ import { runtimeSpecFields } from "../runtime-spec-fields.js";
11
+ import { modelModeOf, withModelMode, withRecentRuntime, withRuntimeRows, runtimeModelFromSpec, runtimeRows } from "./model.js";
12
12
  import { Block, PromptBlocks } from "./PromptBlocks.js";
13
13
  import { RecentRuntimes } from "./RecentRuntimes.js";
14
- import { permissionField, presetsField } from "./runtimeActions.js";
15
14
  import { RuntimeRows } from "./RuntimeRows.js";
15
+ import { useRuntimePresetMenu } from "../runtime-preset-menu/use-runtime-preset-menu.js";
16
16
  import { UiGearSix } from "../../../icons/components/UiGearSix.js";
17
17
  const MODEL_MODES = [
18
18
  { id: "single", label: "Single model" },
@@ -53,6 +53,7 @@ function PromptRunEditor({
53
53
  specSections,
54
54
  specTabs,
55
55
  presets,
56
+ onCreatePreset,
56
57
  resolution
57
58
  }) {
58
59
  if (specTabs && specSections) {
@@ -61,7 +62,6 @@ function PromptRunEditor({
61
62
  );
62
63
  }
63
64
  const [specOpen, setSpecOpen] = useState(false);
64
- const [presetsOpen, setPresetsOpen] = useState(false);
65
65
  const spec = value.spec ?? {};
66
66
  const modelMode = modelModeOf(value);
67
67
  const presetCatalog = presets ?? [];
@@ -72,31 +72,42 @@ function PromptRunEditor({
72
72
  },
73
73
  presetCatalog
74
74
  );
75
+ const presetMenu = useRuntimePresetMenu({
76
+ value: { spec, presets: value.presets ?? [] },
77
+ presets: presetCatalog,
78
+ onCreatePreset,
79
+ onChange: (next) => {
80
+ var _a;
81
+ const updated = { ...value, spec: next.spec, presets: next.presets };
82
+ onChange(
83
+ ((_a = value.runtimes) == null ? void 0 : _a.length) && next.spec !== spec ? withRuntimeRows(updated, [
84
+ runtimeModelFromSpec(next.spec),
85
+ ...runtimeRows(value).slice(1)
86
+ ]) : updated
87
+ );
88
+ }
89
+ });
75
90
  const barActions = {
76
- fields: [
91
+ fields: specTabs ? [] : runtimeSpecFields({
92
+ value: spec,
93
+ families,
94
+ models,
95
+ effectiveMode: runRuntime.mode,
96
+ effectiveModel: runRuntime.model,
97
+ onChange: (next) => onChange({ ...value, spec: next })
98
+ }).filter((field) => {
99
+ const section = field.id === "permissions.mode" ? "permissions" : field.id === "workflow.commits" ? "commit" : "workspace";
100
+ return !specSections || specSections.includes(section);
101
+ }),
102
+ menu: [
103
+ ...presets !== void 0 || onCreatePreset ? presetMenu.menu : [],
77
104
  ...specTabs ? [] : [
78
- permissionField({
79
- spec,
80
- families,
81
- effectiveMode: runRuntime.mode,
82
- onChange: (next) => onChange({ ...value, spec: next })
83
- })
84
- ],
85
- ...presets === void 0 ? [] : [
86
- presetsField({
87
- presets: presetCatalog,
88
- value: value.presets ?? [],
89
- onChange: (next) => onChange({ ...value, presets: next }),
90
- onReorder: () => setPresetsOpen(true)
91
- })
105
+ {
106
+ label: advancedLabel,
107
+ icon: UiGearSix,
108
+ onSelect: () => setSpecOpen(true)
109
+ }
92
110
  ]
93
- ].filter((field) => field !== void 0),
94
- menu: specTabs ? [] : [
95
- {
96
- label: advancedLabel,
97
- icon: UiGearSix,
98
- onSelect: () => setSpecOpen(true)
99
- }
100
111
  ]
101
112
  };
102
113
  const specEditorProps = {
@@ -185,24 +196,7 @@ function PromptRunEditor({
185
196
  }
186
197
  ) : promptBlocks,
187
198
  footer,
188
- presets !== void 0 && /* @__PURE__ */ jsx(
189
- Modal,
190
- {
191
- open: presetsOpen,
192
- onClose: () => setPresetsOpen(false),
193
- title: "Presets",
194
- size: "lg",
195
- closeOnEsc: true,
196
- children: /* @__PURE__ */ jsx(
197
- OrderedPresetSelect,
198
- {
199
- presets: presetCatalog,
200
- value: value.presets ?? [],
201
- onChange: (next) => onChange({ ...value, presets: next })
202
- }
203
- )
204
- }
205
- ),
199
+ presetMenu.dialogs,
206
200
  !specTabs && /* @__PURE__ */ jsx(
207
201
  Modal,
208
202
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n RuntimeBarAction,\n RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { OrderedPresetSelect } from \"../runtime-profiles/OrderedPresetSelect\";\nimport {\n modelModeOf,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { permissionField, presetsField } from \"./runtimeActions\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const [presetsOpen, setPresetsOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n // Spec-level run settings shown on the runtime bar. The permission field is\n // dropped under `specTabs` because the inline Permissions tab already owns it,\n // and a value with two editors in one layout is a value that drifts.\n const barActions: RuntimeBarActionsProps = {\n fields: [\n ...(specTabs\n ? []\n : [\n permissionField({\n spec,\n families,\n effectiveMode: runRuntime.mode,\n onChange: (next) => onChange({ ...value, spec: next }),\n }),\n ]),\n ...(presets === undefined\n ? []\n : [\n presetsField({\n presets: presetCatalog,\n value: value.presets ?? [],\n onChange: (next) => onChange({ ...value, presets: next }),\n onReorder: () => setPresetsOpen(true),\n }),\n ]),\n ].filter((field): field is RuntimeBarAction => field !== undefined),\n menu: specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presets !== undefined && (\n <Modal\n open={presetsOpen}\n onClose={() => setPresetsOpen(false)}\n title=\"Presets\"\n size=\"lg\"\n closeOnEsc\n >\n <OrderedPresetSelect\n presets={presetCatalog}\n value={value.presets ?? []}\n onChange={(next) => onChange({ ...value, presets: next })}\n />\n </Modal>\n )}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type { RuntimeBarActionsProps } from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { runtimeSpecFields } from \"../runtime-spec-fields\";\nimport { useRuntimePresetMenu } from \"../runtime-preset-menu\";\nimport {\n modelModeOf,\n runtimeModelFromSpec,\n runtimeRows,\n withRuntimeRows,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n /** Persist a preset captured from the runtime bar. */\n onCreatePreset?:\n | ((draft: RuntimePreset) => Promise<RuntimePreset>)\n | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n onCreatePreset,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n const presetMenu = useRuntimePresetMenu({\n value: { spec, presets: value.presets ?? [] },\n presets: presetCatalog,\n onCreatePreset,\n onChange: (next) => {\n const updated = { ...value, spec: next.spec, presets: next.presets };\n onChange(\n value.runtimes?.length && next.spec !== spec\n ? withRuntimeRows(updated, [\n runtimeModelFromSpec(next.spec),\n ...runtimeRows(value).slice(1),\n ])\n : updated,\n );\n },\n });\n const barActions: RuntimeBarActionsProps = {\n fields: specTabs\n ? []\n : runtimeSpecFields({\n value: spec,\n families,\n models,\n effectiveMode: runRuntime.mode,\n effectiveModel: runRuntime.model,\n onChange: (next) => onChange({ ...value, spec: next }),\n }).filter((field) => {\n const section =\n field.id === \"permissions.mode\"\n ? \"permissions\"\n : field.id === \"workflow.commits\"\n ? \"commit\"\n : \"workspace\";\n return !specSections || specSections.includes(section);\n }),\n menu: [\n ...(presets !== undefined || onCreatePreset ? presetMenu.menu : []),\n ...(specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ]),\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presetMenu.dialogs}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}