@flanksource/clicky-ui 0.3.40 → 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 (759) hide show
  1. package/README.md +24 -0
  2. package/dist/ai.cjs +14 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +14 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.cjs +3 -1
  7. package/dist/comments/CommentCard.cjs.map +1 -1
  8. package/dist/comments/CommentCard.d.ts.map +1 -1
  9. package/dist/comments/CommentCard.js +4 -2
  10. package/dist/comments/CommentCard.js.map +1 -1
  11. package/dist/comments/CommentCardParts.cjs +16 -0
  12. package/dist/comments/CommentCardParts.cjs.map +1 -1
  13. package/dist/comments/CommentCardParts.d.ts +4 -1
  14. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  15. package/dist/comments/CommentCardParts.js +16 -0
  16. package/dist/comments/CommentCardParts.js.map +1 -1
  17. package/dist/comments/comment-types.cjs.map +1 -1
  18. package/dist/comments/comment-types.d.ts +4 -0
  19. package/dist/comments/comment-types.d.ts.map +1 -1
  20. package/dist/comments/comment-types.js.map +1 -1
  21. package/dist/components/AccordionList.cjs +5 -1
  22. package/dist/components/AccordionList.cjs.map +1 -1
  23. package/dist/components/AccordionList.d.ts +3 -1
  24. package/dist/components/AccordionList.d.ts.map +1 -1
  25. package/dist/components/AccordionList.js +5 -1
  26. package/dist/components/AccordionList.js.map +1 -1
  27. package/dist/components/Combobox.cjs +54 -8
  28. package/dist/components/Combobox.cjs.map +1 -1
  29. package/dist/components/Combobox.d.ts.map +1 -1
  30. package/dist/components/Combobox.js +56 -10
  31. package/dist/components/Combobox.js.map +1 -1
  32. package/dist/components/ComboboxMenu.cjs +139 -113
  33. package/dist/components/ComboboxMenu.cjs.map +1 -1
  34. package/dist/components/ComboboxMenu.d.ts +3 -1
  35. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  36. package/dist/components/ComboboxMenu.js +139 -113
  37. package/dist/components/ComboboxMenu.js.map +1 -1
  38. package/dist/components/ComboboxMenuTrigger.cjs +87 -0
  39. package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
  40. package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
  41. package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
  42. package/dist/components/ComboboxMenuTrigger.js +87 -0
  43. package/dist/components/ComboboxMenuTrigger.js.map +1 -0
  44. package/dist/components/JsonSchemaForm.cjs +39 -11
  45. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  46. package/dist/components/JsonSchemaForm.d.ts +1 -1
  47. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  48. package/dist/components/JsonSchemaForm.js +38 -10
  49. package/dist/components/JsonSchemaForm.js.map +1 -1
  50. package/dist/components/SegmentedControl.cjs +20 -3
  51. package/dist/components/SegmentedControl.cjs.map +1 -1
  52. package/dist/components/SegmentedControl.d.ts +11 -0
  53. package/dist/components/SegmentedControl.d.ts.map +1 -1
  54. package/dist/components/SegmentedControl.js +21 -4
  55. package/dist/components/SegmentedControl.js.map +1 -1
  56. package/dist/components/combobox-types.d.ts +8 -0
  57. package/dist/components/combobox-types.d.ts.map +1 -1
  58. package/dist/components/json-schema-form-accordion-array.cjs +3 -1
  59. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  60. package/dist/components/json-schema-form-accordion-array.d.ts +4 -1
  61. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.js +3 -1
  63. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  64. package/dist/components/json-schema-form-array-view.cjs +63 -0
  65. package/dist/components/json-schema-form-array-view.cjs.map +1 -0
  66. package/dist/components/json-schema-form-array-view.d.ts +21 -0
  67. package/dist/components/json-schema-form-array-view.d.ts.map +1 -0
  68. package/dist/components/json-schema-form-array-view.js +63 -0
  69. package/dist/components/json-schema-form-array-view.js.map +1 -0
  70. package/dist/components/json-schema-form-array.cjs +3 -7
  71. package/dist/components/json-schema-form-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-array.js +3 -7
  74. package/dist/components/json-schema-form-array.js.map +1 -1
  75. package/dist/components/json-schema-form-conditionals.cjs +67 -0
  76. package/dist/components/json-schema-form-conditionals.cjs.map +1 -0
  77. package/dist/components/json-schema-form-conditionals.d.ts +9 -0
  78. package/dist/components/json-schema-form-conditionals.d.ts.map +1 -0
  79. package/dist/components/json-schema-form-conditionals.js +67 -0
  80. package/dist/components/json-schema-form-conditionals.js.map +1 -0
  81. package/dist/components/json-schema-form-debug-badge.cjs +108 -0
  82. package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
  83. package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
  84. package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
  85. package/dist/components/json-schema-form-debug-badge.js +108 -0
  86. package/dist/components/json-schema-form-debug-badge.js.map +1 -0
  87. package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
  88. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
  89. package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
  90. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
  91. package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
  92. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
  93. package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
  94. package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
  95. package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
  96. package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
  97. package/dist/components/json-schema-form-debug-glyph.js +13 -0
  98. package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
  99. package/dist/components/json-schema-form-debug-groups.cjs +56 -0
  100. package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
  101. package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
  102. package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
  103. package/dist/components/json-schema-form-debug-groups.js +56 -0
  104. package/dist/components/json-schema-form-debug-groups.js.map +1 -0
  105. package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
  106. package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
  107. package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
  108. package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
  109. package/dist/components/json-schema-form-debug-keywords.js +159 -0
  110. package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
  111. package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
  112. package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
  113. package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
  114. package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
  115. package/dist/components/json-schema-form-debug-listeners.js +102 -0
  116. package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
  117. package/dist/components/json-schema-form-debug.cjs +31 -0
  118. package/dist/components/json-schema-form-debug.cjs.map +1 -0
  119. package/dist/components/json-schema-form-debug.d.ts +11 -0
  120. package/dist/components/json-schema-form-debug.d.ts.map +1 -0
  121. package/dist/components/json-schema-form-debug.js +31 -0
  122. package/dist/components/json-schema-form-debug.js.map +1 -0
  123. package/dist/components/json-schema-form-defaults.cjs +68 -0
  124. package/dist/components/json-schema-form-defaults.cjs.map +1 -0
  125. package/dist/components/json-schema-form-defaults.d.ts +4 -0
  126. package/dist/components/json-schema-form-defaults.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-defaults.js +68 -0
  128. package/dist/components/json-schema-form-defaults.js.map +1 -0
  129. package/dist/components/json-schema-form-enum-choice.cjs +114 -0
  130. package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
  131. package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
  132. package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-enum-choice.js +114 -0
  134. package/dist/components/json-schema-form-enum-choice.js.map +1 -0
  135. package/dist/components/json-schema-form-errors.cjs +49 -31
  136. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  137. package/dist/components/json-schema-form-errors.d.ts +4 -2
  138. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  139. package/dist/components/json-schema-form-errors.js +51 -33
  140. package/dist/components/json-schema-form-errors.js.map +1 -1
  141. package/dist/components/json-schema-form-fields.cjs +3 -93
  142. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  143. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  144. package/dist/components/json-schema-form-fields.js +1 -91
  145. package/dist/components/json-schema-form-fields.js.map +1 -1
  146. package/dist/components/json-schema-form-filter.cjs +2 -1
  147. package/dist/components/json-schema-form-filter.cjs.map +1 -1
  148. package/dist/components/json-schema-form-filter.js +2 -1
  149. package/dist/components/json-schema-form-filter.js.map +1 -1
  150. package/dist/components/json-schema-form-item-summary.cjs +6 -2
  151. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  152. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  153. package/dist/components/json-schema-form-item-summary.js +6 -2
  154. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  155. package/dist/components/json-schema-form-layout.cjs +28 -19
  156. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  157. package/dist/components/json-schema-form-layout.d.ts +8 -6
  158. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  159. package/dist/components/json-schema-form-layout.js +29 -20
  160. package/dist/components/json-schema-form-layout.js.map +1 -1
  161. package/dist/components/json-schema-form-listener-paths.cjs +52 -0
  162. package/dist/components/json-schema-form-listener-paths.cjs.map +1 -0
  163. package/dist/components/json-schema-form-listener-paths.d.ts +10 -0
  164. package/dist/components/json-schema-form-listener-paths.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-listener-paths.js +52 -0
  166. package/dist/components/json-schema-form-listener-paths.js.map +1 -0
  167. package/dist/components/json-schema-form-listener-types.d.ts +22 -0
  168. package/dist/components/json-schema-form-listener-types.d.ts.map +1 -0
  169. package/dist/components/json-schema-form-listeners.cjs +256 -0
  170. package/dist/components/json-schema-form-listeners.cjs.map +1 -0
  171. package/dist/components/json-schema-form-listeners.d.ts +13 -0
  172. package/dist/components/json-schema-form-listeners.d.ts.map +1 -0
  173. package/dist/components/json-schema-form-listeners.js +256 -0
  174. package/dist/components/json-schema-form-listeners.js.map +1 -0
  175. package/dist/components/json-schema-form-object-array-view.cjs +62 -0
  176. package/dist/components/json-schema-form-object-array-view.cjs.map +1 -0
  177. package/dist/components/json-schema-form-object-array-view.d.ts +14 -0
  178. package/dist/components/json-schema-form-object-array-view.d.ts.map +1 -0
  179. package/dist/components/json-schema-form-object-array-view.js +62 -0
  180. package/dist/components/json-schema-form-object-array-view.js.map +1 -0
  181. package/dist/components/json-schema-form-object.cjs +3 -0
  182. package/dist/components/json-schema-form-object.cjs.map +1 -1
  183. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-object.js +3 -0
  185. package/dist/components/json-schema-form-object.js.map +1 -1
  186. package/dist/components/json-schema-form-preferences.cjs +1 -0
  187. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  188. package/dist/components/json-schema-form-preferences.d.ts +1 -0
  189. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  190. package/dist/components/json-schema-form-preferences.js +1 -0
  191. package/dist/components/json-schema-form-preferences.js.map +1 -1
  192. package/dist/components/json-schema-form-render.cjs +36 -12
  193. package/dist/components/json-schema-form-render.cjs.map +1 -1
  194. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  195. package/dist/components/json-schema-form-render.js +38 -14
  196. package/dist/components/json-schema-form-render.js.map +1 -1
  197. package/dist/components/json-schema-form-resolve.cjs +6 -99
  198. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  199. package/dist/components/json-schema-form-resolve.d.ts +1 -8
  200. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  201. package/dist/components/json-schema-form-resolve.js +5 -98
  202. package/dist/components/json-schema-form-resolve.js.map +1 -1
  203. package/dist/components/json-schema-form-runtime-types.d.ts +16 -0
  204. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
  205. package/dist/components/json-schema-form-table-array.cjs +67 -16
  206. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  207. package/dist/components/json-schema-form-table-array.d.ts +4 -1
  208. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  209. package/dist/components/json-schema-form-table-array.js +70 -19
  210. package/dist/components/json-schema-form-table-array.js.map +1 -1
  211. package/dist/components/json-schema-form-tone.cjs +12 -0
  212. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  213. package/dist/components/json-schema-form-tone.js +12 -0
  214. package/dist/components/json-schema-form-tone.js.map +1 -1
  215. package/dist/components/json-schema-form-types.d.ts +17 -0
  216. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  217. package/dist/components/json-schema-form-utils.cjs +7 -1
  218. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  219. package/dist/components/json-schema-form-utils.d.ts +2 -1
  220. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  221. package/dist/components/json-schema-form-utils.js +7 -1
  222. package/dist/components/json-schema-form-utils.js.map +1 -1
  223. package/dist/components.cjs +3 -2
  224. package/dist/components.cjs.map +1 -1
  225. package/dist/components.d.ts +3 -2
  226. package/dist/components.d.ts.map +1 -1
  227. package/dist/components.js +2 -1
  228. package/dist/components.js.map +1 -1
  229. package/dist/data/DataTable.cjs +9 -3
  230. package/dist/data/DataTable.cjs.map +1 -1
  231. package/dist/data/DataTable.d.ts +6 -0
  232. package/dist/data/DataTable.d.ts.map +1 -1
  233. package/dist/data/DataTable.js +9 -3
  234. package/dist/data/DataTable.js.map +1 -1
  235. package/dist/data/FixtureEditor/FixtureEditor.cjs +43 -24
  236. package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -1
  237. package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -1
  238. package/dist/data/FixtureEditor/FixtureEditor.js +43 -24
  239. package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -1
  240. package/dist/data/GraphDiagram.cjs +125 -138
  241. package/dist/data/GraphDiagram.cjs.map +1 -1
  242. package/dist/data/GraphDiagram.d.ts +30 -23
  243. package/dist/data/GraphDiagram.d.ts.map +1 -1
  244. package/dist/data/GraphDiagram.js +128 -141
  245. package/dist/data/GraphDiagram.js.map +1 -1
  246. package/dist/data/GraphDiagramEdges.cjs +208 -0
  247. package/dist/data/GraphDiagramEdges.cjs.map +1 -0
  248. package/dist/data/GraphDiagramEdges.d.ts +40 -0
  249. package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
  250. package/dist/data/GraphDiagramEdges.js +208 -0
  251. package/dist/data/GraphDiagramEdges.js.map +1 -0
  252. package/dist/data/GraphDiagramNodes.cjs +142 -0
  253. package/dist/data/GraphDiagramNodes.cjs.map +1 -0
  254. package/dist/data/GraphDiagramNodes.d.ts +22 -0
  255. package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
  256. package/dist/data/GraphDiagramNodes.js +142 -0
  257. package/dist/data/GraphDiagramNodes.js.map +1 -0
  258. package/dist/data/Tree.cjs +10 -2
  259. package/dist/data/Tree.cjs.map +1 -1
  260. package/dist/data/Tree.d.ts +6 -1
  261. package/dist/data/Tree.d.ts.map +1 -1
  262. package/dist/data/Tree.js +10 -2
  263. package/dist/data/Tree.js.map +1 -1
  264. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
  265. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
  266. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
  267. package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
  268. package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
  269. package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
  270. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  271. package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
  272. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  273. package/dist/data/ai/PromptRunEditor/index.js +38 -44
  274. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  275. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
  276. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  277. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
  278. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  279. package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
  280. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  281. package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
  282. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
  283. package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
  284. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
  285. package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
  286. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
  287. package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
  288. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  289. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
  290. package/dist/data/ai/SessionInspector.approvals.js +26 -2
  291. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  292. package/dist/data/ai/SessionInspector.cjs +143 -167
  293. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  294. package/dist/data/ai/SessionInspector.collection-types.d.ts +5 -0
  295. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
  296. package/dist/data/ai/SessionInspector.collection.cjs +18 -5
  297. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
  298. package/dist/data/ai/SessionInspector.collection.d.ts +2 -0
  299. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -1
  300. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts +6 -0
  301. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts.map +1 -0
  302. package/dist/data/ai/SessionInspector.collection.js +18 -5
  303. package/dist/data/ai/SessionInspector.collection.js.map +1 -1
  304. package/dist/data/ai/SessionInspector.d.ts +24 -2
  305. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  306. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +105 -7
  307. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -1
  308. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +12 -1
  309. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -1
  310. package/dist/data/ai/SessionInspector.hierarchy-state.js +107 -9
  311. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  313. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  314. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  315. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  316. package/dist/data/ai/SessionInspector.js +144 -168
  317. package/dist/data/ai/SessionInspector.js.map +1 -1
  318. package/dist/data/ai/SessionInspector.legacy.cjs +116 -0
  319. package/dist/data/ai/SessionInspector.legacy.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.legacy.d.ts +19 -0
  321. package/dist/data/ai/SessionInspector.legacy.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.legacy.js +116 -0
  323. package/dist/data/ai/SessionInspector.legacy.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.panels.cjs +3 -0
  325. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  326. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  327. package/dist/data/ai/SessionInspector.panels.js +3 -0
  328. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  329. package/dist/data/ai/SessionInspector.plan.cjs +29 -12
  330. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -1
  331. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -1
  332. package/dist/data/ai/SessionInspector.plan.js +30 -13
  333. package/dist/data/ai/SessionInspector.plan.js.map +1 -1
  334. package/dist/data/ai/SessionInspector.remote-view.cjs +44 -0
  335. package/dist/data/ai/SessionInspector.remote-view.cjs.map +1 -0
  336. package/dist/data/ai/SessionInspector.remote-view.d.ts +11 -0
  337. package/dist/data/ai/SessionInspector.remote-view.d.ts.map +1 -0
  338. package/dist/data/ai/SessionInspector.remote-view.js +44 -0
  339. package/dist/data/ai/SessionInspector.remote-view.js.map +1 -0
  340. package/dist/data/ai/SessionInspector.remote.cjs +275 -0
  341. package/dist/data/ai/SessionInspector.remote.cjs.map +1 -0
  342. package/dist/data/ai/SessionInspector.remote.d.ts +57 -0
  343. package/dist/data/ai/SessionInspector.remote.d.ts.map +1 -0
  344. package/dist/data/ai/SessionInspector.remote.js +275 -0
  345. package/dist/data/ai/SessionInspector.remote.js.map +1 -0
  346. package/dist/data/ai/SessionInspector.summary.cjs +9 -159
  347. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  348. package/dist/data/ai/SessionInspector.summary.d.ts +0 -3
  349. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  350. package/dist/data/ai/SessionInspector.summary.js +11 -161
  351. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  352. package/dist/data/ai/SessionInspector.tab-state.cjs +15 -0
  353. package/dist/data/ai/SessionInspector.tab-state.cjs.map +1 -0
  354. package/dist/data/ai/SessionInspector.tab-state.d.ts +3 -0
  355. package/dist/data/ai/SessionInspector.tab-state.d.ts.map +1 -0
  356. package/dist/data/ai/SessionInspector.tab-state.js +15 -0
  357. package/dist/data/ai/SessionInspector.tab-state.js.map +1 -0
  358. package/dist/data/ai/SessionInspector.tabs.model.cjs +31 -18
  359. package/dist/data/ai/SessionInspector.tabs.model.cjs.map +1 -1
  360. package/dist/data/ai/SessionInspector.tabs.model.d.ts +3 -1
  361. package/dist/data/ai/SessionInspector.tabs.model.d.ts.map +1 -1
  362. package/dist/data/ai/SessionInspector.tabs.model.js +32 -19
  363. package/dist/data/ai/SessionInspector.tabs.model.js.map +1 -1
  364. package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
  365. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
  366. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  367. package/dist/data/ai/SessionInspector.transcript.js +4 -0
  368. package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
  369. package/dist/data/ai/SessionInspector.verification.cjs +53 -0
  370. package/dist/data/ai/SessionInspector.verification.cjs.map +1 -0
  371. package/dist/data/ai/SessionInspector.verification.d.ts +7 -0
  372. package/dist/data/ai/SessionInspector.verification.d.ts.map +1 -0
  373. package/dist/data/ai/SessionInspector.verification.js +53 -0
  374. package/dist/data/ai/SessionInspector.verification.js.map +1 -0
  375. package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
  376. package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
  377. package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
  378. package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
  379. package/dist/data/ai/SessionViewer.approval-body.js +146 -0
  380. package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
  381. package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
  382. package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
  383. package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
  384. package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
  385. package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
  386. package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
  387. package/dist/data/ai/SessionViewer.cjs +57 -20
  388. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  389. package/dist/data/ai/SessionViewer.d.ts +13 -3
  390. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  391. package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
  392. package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
  393. package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
  394. package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
  395. package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
  396. package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
  397. package/dist/data/ai/SessionViewer.decision.cjs +21 -0
  398. package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
  399. package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
  400. package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
  401. package/dist/data/ai/SessionViewer.decision.js +21 -0
  402. package/dist/data/ai/SessionViewer.decision.js.map +1 -0
  403. package/dist/data/ai/SessionViewer.input.cjs +14 -0
  404. package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
  405. package/dist/data/ai/SessionViewer.input.d.ts +5 -0
  406. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
  407. package/dist/data/ai/SessionViewer.input.js +14 -0
  408. package/dist/data/ai/SessionViewer.input.js.map +1 -1
  409. package/dist/data/ai/SessionViewer.js +58 -21
  410. package/dist/data/ai/SessionViewer.js.map +1 -1
  411. package/dist/data/ai/SessionViewer.model.cjs +7 -1
  412. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  413. package/dist/data/ai/SessionViewer.model.d.ts +25 -3
  414. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  415. package/dist/data/ai/SessionViewer.model.js +7 -1
  416. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  417. package/dist/data/ai/SessionViewer.rows.cjs +6 -3
  418. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  419. package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
  420. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  421. package/dist/data/ai/SessionViewer.rows.js +6 -3
  422. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  423. package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
  424. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  425. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  426. package/dist/data/ai/SessionViewer.tool-row.js +27 -235
  427. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  428. package/dist/data/ai/SessionViewer.unified.d.ts +17 -0
  429. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  430. package/dist/data/ai/SessionViewerMenu.cjs +8 -2
  431. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  432. package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
  433. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  434. package/dist/data/ai/SessionViewerMenu.js +8 -2
  435. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  436. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
  437. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  438. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
  439. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  440. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
  441. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  442. package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
  443. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  444. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
  445. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  446. package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
  447. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  448. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
  449. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
  450. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  451. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
  452. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  453. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  454. package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
  455. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  456. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
  457. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  458. package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
  459. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  460. package/dist/data/ai/approval-request.cjs +75 -0
  461. package/dist/data/ai/approval-request.cjs.map +1 -0
  462. package/dist/data/ai/approval-request.d.ts +155 -0
  463. package/dist/data/ai/approval-request.d.ts.map +1 -0
  464. package/dist/data/ai/approval-request.js +75 -0
  465. package/dist/data/ai/approval-request.js.map +1 -0
  466. package/dist/data/ai/index.d.ts +6 -1
  467. package/dist/data/ai/index.d.ts.map +1 -1
  468. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
  469. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
  470. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
  471. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
  472. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
  473. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
  474. package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
  475. package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
  476. package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
  477. package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
  478. package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
  479. package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
  480. package/dist/data/ai/runtime-preset-menu/model.js +73 -0
  481. package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
  482. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
  483. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
  484. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
  485. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
  486. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
  487. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
  488. package/dist/data/ai/runtime-spec-fields.cjs +166 -0
  489. package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
  490. package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
  491. package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
  492. package/dist/data/ai/runtime-spec-fields.js +166 -0
  493. package/dist/data/ai/runtime-spec-fields.js.map +1 -0
  494. package/dist/data/ai/session-categories.cjs +4 -0
  495. package/dist/data/ai/session-categories.cjs.map +1 -1
  496. package/dist/data/ai/session-categories.d.ts +1 -0
  497. package/dist/data/ai/session-categories.d.ts.map +1 -1
  498. package/dist/data/ai/session-categories.js +4 -0
  499. package/dist/data/ai/session-categories.js.map +1 -1
  500. package/dist/data/ai/use-session-scroll.cjs +49 -21
  501. package/dist/data/ai/use-session-scroll.cjs.map +1 -1
  502. package/dist/data/ai/use-session-scroll.d.ts +2 -0
  503. package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
  504. package/dist/data/ai/use-session-scroll.js +49 -21
  505. package/dist/data/ai/use-session-scroll.js.map +1 -1
  506. package/dist/data/chat/Chat.runtime.cjs +1 -1
  507. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  508. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  509. package/dist/data/chat/Chat.runtime.js +1 -1
  510. package/dist/data/chat/Chat.runtime.js.map +1 -1
  511. package/dist/data/graph-columns-layout.cjs +216 -0
  512. package/dist/data/graph-columns-layout.cjs.map +1 -0
  513. package/dist/data/graph-columns-layout.d.ts +56 -0
  514. package/dist/data/graph-columns-layout.d.ts.map +1 -0
  515. package/dist/data/graph-columns-layout.js +216 -0
  516. package/dist/data/graph-columns-layout.js.map +1 -0
  517. package/dist/data/graph-diagram-model.cjs +73 -0
  518. package/dist/data/graph-diagram-model.cjs.map +1 -0
  519. package/dist/data/graph-diagram-model.d.ts +90 -0
  520. package/dist/data/graph-diagram-model.d.ts.map +1 -0
  521. package/dist/data/graph-diagram-model.js +73 -0
  522. package/dist/data/graph-diagram-model.js.map +1 -0
  523. package/dist/data/graph-edge-routing.cjs +235 -0
  524. package/dist/data/graph-edge-routing.cjs.map +1 -0
  525. package/dist/data/graph-edge-routing.d.ts +73 -0
  526. package/dist/data/graph-edge-routing.d.ts.map +1 -0
  527. package/dist/data/graph-edge-routing.js +235 -0
  528. package/dist/data/graph-edge-routing.js.map +1 -0
  529. package/dist/data/graph-layout.cjs +0 -82
  530. package/dist/data/graph-layout.cjs.map +1 -1
  531. package/dist/data/graph-layout.d.ts +1 -28
  532. package/dist/data/graph-layout.d.ts.map +1 -1
  533. package/dist/data/graph-layout.js +1 -83
  534. package/dist/data/graph-layout.js.map +1 -1
  535. package/dist/data/har/HarPanel.cjs +129 -33
  536. package/dist/data/har/HarPanel.cjs.map +1 -1
  537. package/dist/data/har/HarPanel.d.ts +13 -1
  538. package/dist/data/har/HarPanel.d.ts.map +1 -1
  539. package/dist/data/har/HarPanel.js +130 -34
  540. package/dist/data/har/HarPanel.js.map +1 -1
  541. package/dist/data/har/fixtures.d.ts +12 -0
  542. package/dist/data/har/fixtures.d.ts.map +1 -1
  543. package/dist/data/har/types.d.ts +12 -0
  544. package/dist/data/har/types.d.ts.map +1 -1
  545. package/dist/data/runtime/RuntimeBar.cjs +67 -84
  546. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  547. package/dist/data/runtime/RuntimeBar.d.ts +4 -5
  548. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  549. package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
  550. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
  551. package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
  552. package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
  553. package/dist/data/runtime/RuntimeBar.fields.js +170 -0
  554. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
  555. package/dist/data/runtime/RuntimeBar.js +70 -87
  556. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  557. package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
  558. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
  559. package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
  560. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
  561. package/dist/data/runtime/RuntimeBar.selection.js +56 -0
  562. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
  563. package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
  564. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  565. package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
  566. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  567. package/dist/data/runtime/RuntimeBarActions.js +10 -6
  568. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  569. package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
  570. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
  571. package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
  572. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
  573. package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
  574. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
  575. package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
  576. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
  577. package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
  578. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
  579. package/dist/data/runtime/RuntimeBarLayout.js +95 -0
  580. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
  581. package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
  582. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  583. package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
  584. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  585. package/dist/data/runtime/RuntimeBarSegment.js +25 -14
  586. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  587. package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
  588. package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
  589. package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
  590. package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
  591. package/dist/data/runtime/RuntimeLimitInput.js +41 -0
  592. package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
  593. package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
  594. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
  595. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
  596. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
  597. package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
  598. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
  599. package/dist/data/use-edge-focus.cjs +20 -0
  600. package/dist/data/use-edge-focus.cjs.map +1 -0
  601. package/dist/data/use-edge-focus.d.ts +23 -0
  602. package/dist/data/use-edge-focus.d.ts.map +1 -0
  603. package/dist/data/use-edge-focus.js +20 -0
  604. package/dist/data/use-edge-focus.js.map +1 -0
  605. package/dist/data/use-pan-zoom.cjs +159 -0
  606. package/dist/data/use-pan-zoom.cjs.map +1 -0
  607. package/dist/data/use-pan-zoom.d.ts +79 -0
  608. package/dist/data/use-pan-zoom.d.ts.map +1 -0
  609. package/dist/data/use-pan-zoom.js +159 -0
  610. package/dist/data/use-pan-zoom.js.map +1 -0
  611. package/dist/data/version-info.cjs +3 -3
  612. package/dist/data/version-info.js +3 -3
  613. package/dist/data.cjs +5 -1
  614. package/dist/data.cjs.map +1 -1
  615. package/dist/data.d.ts +4 -3
  616. package/dist/data.d.ts.map +1 -1
  617. package/dist/data.js +6 -2
  618. package/dist/data.js.map +1 -1
  619. package/dist/devtools/useDebugStream.cjs +5 -1
  620. package/dist/devtools/useDebugStream.cjs.map +1 -1
  621. package/dist/devtools/useDebugStream.d.ts.map +1 -1
  622. package/dist/devtools/useDebugStream.js +6 -2
  623. package/dist/devtools/useDebugStream.js.map +1 -1
  624. package/dist/hooks/event-source-provider.cjs +9 -0
  625. package/dist/hooks/event-source-provider.cjs.map +1 -0
  626. package/dist/hooks/event-source-provider.d.ts +15 -0
  627. package/dist/hooks/event-source-provider.d.ts.map +1 -0
  628. package/dist/hooks/event-source-provider.js +9 -0
  629. package/dist/hooks/event-source-provider.js.map +1 -0
  630. package/dist/hooks/event-source.cjs +11 -0
  631. package/dist/hooks/event-source.cjs.map +1 -0
  632. package/dist/hooks/event-source.d.ts +22 -0
  633. package/dist/hooks/event-source.d.ts.map +1 -0
  634. package/dist/hooks/event-source.js +11 -0
  635. package/dist/hooks/event-source.js.map +1 -0
  636. package/dist/hooks/use-log-tail.cjs +5 -1
  637. package/dist/hooks/use-log-tail.cjs.map +1 -1
  638. package/dist/hooks/use-log-tail.d.ts.map +1 -1
  639. package/dist/hooks/use-log-tail.js +5 -1
  640. package/dist/hooks/use-log-tail.js.map +1 -1
  641. package/dist/hooks/use-prompts.cjs +5 -1
  642. package/dist/hooks/use-prompts.cjs.map +1 -1
  643. package/dist/hooks/use-prompts.d.ts.map +1 -1
  644. package/dist/hooks/use-prompts.js +6 -2
  645. package/dist/hooks/use-prompts.js.map +1 -1
  646. package/dist/hooks/use-task-run.cjs +9 -2
  647. package/dist/hooks/use-task-run.cjs.map +1 -1
  648. package/dist/hooks/use-task-run.d.ts.map +1 -1
  649. package/dist/hooks/use-task-run.js +10 -3
  650. package/dist/hooks/use-task-run.js.map +1 -1
  651. package/dist/hooks.cjs +4 -0
  652. package/dist/hooks.cjs.map +1 -1
  653. package/dist/hooks.d.ts +2 -0
  654. package/dist/hooks.d.ts.map +1 -1
  655. package/dist/hooks.js +4 -0
  656. package/dist/hooks.js.map +1 -1
  657. package/dist/icons/programmingCatalog.cjs +34 -34
  658. package/dist/icons/programmingCatalog.cjs.map +1 -1
  659. package/dist/icons/programmingCatalog.js +34 -34
  660. package/dist/icons/programmingCatalog.js.map +1 -1
  661. package/dist/index.cjs +14 -3
  662. package/dist/index.cjs.map +1 -1
  663. package/dist/index.js +14 -3
  664. package/dist/index.js.map +1 -1
  665. package/dist/monaco/MonacoEditor.cjs +4 -1
  666. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  667. package/dist/monaco/MonacoEditor.d.ts +1 -1
  668. package/dist/monaco/MonacoEditor.d.ts.map +1 -1
  669. package/dist/monaco/MonacoEditor.js +4 -1
  670. package/dist/monaco/MonacoEditor.js.map +1 -1
  671. package/dist/monaco/types.d.ts +2 -1
  672. package/dist/monaco/types.d.ts.map +1 -1
  673. package/dist/overlay/CommandPalette.cjs +14 -4
  674. package/dist/overlay/CommandPalette.cjs.map +1 -1
  675. package/dist/overlay/CommandPalette.d.ts +5 -1
  676. package/dist/overlay/CommandPalette.d.ts.map +1 -1
  677. package/dist/overlay/CommandPalette.js +14 -4
  678. package/dist/overlay/CommandPalette.js.map +1 -1
  679. package/dist/overlay/CommandPaletteList.cjs +5 -0
  680. package/dist/overlay/CommandPaletteList.cjs.map +1 -1
  681. package/dist/overlay/CommandPaletteList.d.ts +4 -2
  682. package/dist/overlay/CommandPaletteList.d.ts.map +1 -1
  683. package/dist/overlay/CommandPaletteList.js +5 -0
  684. package/dist/overlay/CommandPaletteList.js.map +1 -1
  685. package/dist/overlay/DropdownMenu.cjs +2 -0
  686. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  687. package/dist/overlay/DropdownMenu.d.ts +4 -0
  688. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  689. package/dist/overlay/DropdownMenu.js +2 -0
  690. package/dist/overlay/DropdownMenu.js.map +1 -1
  691. package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
  692. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  693. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  694. package/dist/overlay/DropdownMenuSubmenu.js +31 -15
  695. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  696. package/dist/rpc/OperationCatalog.cjs +32 -27
  697. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  698. package/dist/rpc/OperationCatalog.d.ts +11 -1
  699. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  700. package/dist/rpc/OperationCatalog.js +32 -27
  701. package/dist/rpc/OperationCatalog.js.map +1 -1
  702. package/dist/rpc/OperationEntityContextPicker.cjs +62 -256
  703. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  704. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  705. package/dist/rpc/OperationEntityContextPicker.js +64 -258
  706. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  707. package/dist/rpc/OperationEntityPicker.cjs +185 -0
  708. package/dist/rpc/OperationEntityPicker.cjs.map +1 -0
  709. package/dist/rpc/OperationEntityPicker.d.ts +51 -0
  710. package/dist/rpc/OperationEntityPicker.d.ts.map +1 -0
  711. package/dist/rpc/OperationEntityPicker.js +185 -0
  712. package/dist/rpc/OperationEntityPicker.js.map +1 -0
  713. package/dist/rpc/OperationEntityPicker.model.cjs +39 -0
  714. package/dist/rpc/OperationEntityPicker.model.cjs.map +1 -0
  715. package/dist/rpc/OperationEntityPicker.model.d.ts +27 -0
  716. package/dist/rpc/OperationEntityPicker.model.d.ts.map +1 -0
  717. package/dist/rpc/OperationEntityPicker.model.js +39 -0
  718. package/dist/rpc/OperationEntityPicker.model.js.map +1 -0
  719. package/dist/rpc/operationCatalogRowSelection.cjs +85 -0
  720. package/dist/rpc/operationCatalogRowSelection.cjs.map +1 -0
  721. package/dist/rpc/operationCatalogRowSelection.d.ts +57 -0
  722. package/dist/rpc/operationCatalogRowSelection.d.ts.map +1 -0
  723. package/dist/rpc/operationCatalogRowSelection.js +85 -0
  724. package/dist/rpc/operationCatalogRowSelection.js.map +1 -0
  725. package/dist/rpc/operationEntityPicker.fixtures.d.ts +13 -0
  726. package/dist/rpc/operationEntityPicker.fixtures.d.ts.map +1 -0
  727. package/dist/rpc/useOperationPages.cjs +6 -1
  728. package/dist/rpc/useOperationPages.cjs.map +1 -1
  729. package/dist/rpc/useOperationPages.d.ts +3 -1
  730. package/dist/rpc/useOperationPages.d.ts.map +1 -1
  731. package/dist/rpc/useOperationPages.js +6 -1
  732. package/dist/rpc/useOperationPages.js.map +1 -1
  733. package/dist/rpc.cjs +2 -0
  734. package/dist/rpc.cjs.map +1 -1
  735. package/dist/rpc.d.ts +2 -0
  736. package/dist/rpc.d.ts.map +1 -1
  737. package/dist/rpc.js +2 -0
  738. package/dist/rpc.js.map +1 -1
  739. package/dist/styles.css +1 -1
  740. package/package.json +4 -1
  741. package/schemas/json-schema-form.schema.json +571 -0
  742. package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
  743. package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
  744. package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
  745. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
  746. package/dist/data/runtime/RuntimeBarCombo.js +0 -423
  747. package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
  748. package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
  749. package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
  750. package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
  751. package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
  752. package/dist/data/runtime/RuntimeBarLimits.js +0 -262
  753. package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
  754. package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
  755. package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
  756. package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
  757. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
  758. package/dist/data/runtime/RuntimeBarSegments.js +0 -346
  759. package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
@@ -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":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAEV,yBAAyB,EACzB,+BAA+B,EAC/B,cAAc,EACd,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAExB,MAAM,SAAS,CAAC;AAKjB,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAC/B,iBAAiB,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC/D,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;IAC7D,UAAU,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC/C,2FAA2F;IAC3F,cAAc,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACjD,0EAA0E;IAC1E,cAAc,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACvD,oEAAoE;IACpE,aAAa,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC3D,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAE3D,sEAAsE;IACtE,eAAe,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,qFAAqF;IACrF,yBAAyB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAEnE,mFAAmF;IACnF,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,gBAAgB,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACvD,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAEhD,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/B,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,CAAC;IAEjD,uEAAuE;IACvE,QAAQ,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACxC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACtC,sDAAsD;IACtD,cAAc,CAAC,EACX,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,GAClD,SAAS,CAAC;IACd,aAAa,CAAC,EACV,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GACtD,SAAS,CAAC;IACd,eAAe,CAAC,EACZ,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GACtD,SAAS,CAAC;IACd,gBAAgB,CAAC,EACb,CAAC,CACC,OAAO,EAAE,4BAA4B,KAClC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GACrC,SAAS,CAAC;IACd,uDAAuD;IACvD,UAAU,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC9C,CAAC;AAmBF,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,MAAW,EACX,QAAgC,EAChC,KAAU,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAA4C,EAC5C,cAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,YAAY,EACZ,WAA2B,EAC3B,iBAAuD,EACvD,iBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,aAA0B,EAC1B,cAA+B,EAC/B,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,cAAc,EACd,UAAU,GACX,EAAE,oBAAoB,+BAqLtB"}
@@ -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":";;;;;;;;;;;;;;;;AAsIA,MAAM,cAA2D;AAAA,EAC/D,EAAE,IAAI,UAAU,OAAO,eAAA;AAAA,EACvB,EAAE,IAAI,SAAS,OAAO,cAAA;AACxB;AAIA,MAAM,cAAkE;AAAA,EACtE,QAAQ,CAAC,WAAW,kBAAkB,aAAa;AAAA,EACnD,OAAO,CAAC,SAAS;AACnB;AAOO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT,WAAW;AAAA,EACX,QAAQ,CAAA;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,iBAAiB,CAAA;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,MAAI,YAAY,cAAc;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACA,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,OAAO,MAAM,QAAQ,CAAA;AAC3B,QAAM,YAAY,YAAY,KAAK;AACnC,QAAM,gBAAgB,WAAW,CAAA;AACjC,QAAM,cACJ,yCAAY,SACZ;AAAA,IACE;AAAA,MAGE;AAAA,MACA,SAAS,MAAM,WAAW,CAAA;AAAA,IAAC;AAAA,IAE7B;AAAA,EAAA;AAGJ,QAAM,aAAa,qBAAqB;AAAA,IACtC,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW,CAAA,EAAC;AAAA,IAC1C,SAAS;AAAA,IACT;AAAA,IACA,UAAU,CAAC,SAAS;;AAClB,YAAM,UAAU,EAAE,GAAG,OAAO,MAAM,KAAK,MAAM,SAAS,KAAK,QAAA;AAC3D;AAAA,UACE,WAAM,aAAN,mBAAgB,WAAU,KAAK,SAAS,OACpC,gBAAgB,SAAS;AAAA,UACvB,qBAAqB,KAAK,IAAI;AAAA,UAC9B,GAAG,YAAY,KAAK,EAAE,MAAM,CAAC;AAAA,QAAA,CAC9B,IACD;AAAA,MAAA;AAAA,IAER;AAAA,EAAA,CACD;AACD,QAAM,aAAqC;AAAA,IACzC,QAAQ,WACJ,CAAA,IACA,kBAAkB;AAAA,MAChB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,eAAe,WAAW;AAAA,MAC1B,gBAAgB,WAAW;AAAA,MAC3B,UAAU,CAAC,SAAS,SAAS,EAAE,GAAG,OAAO,MAAM,KAAA,CAAM;AAAA,IAAA,CACtD,EAAE,OAAO,CAAC,UAAU;AACnB,YAAM,UACJ,MAAM,OAAO,qBACT,gBACA,MAAM,OAAO,qBACb,WACA;AACN,aAAO,CAAC,gBAAgB,aAAa,SAAS,OAAO;AAAA,IACvD,CAAC;AAAA,IACL,MAAM;AAAA,MACJ,GAAI,YAAY,UAAa,iBAAiB,WAAW,OAAO,CAAA;AAAA,MAChE,GAAI,WACA,CAAA,IACA;AAAA,QACE;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,UAAU,MAAM,YAAY,IAAI;AAAA,QAAA;AAAA,MAClC;AAAA,IACF;AAAA,EACN;AAGF,QAAM,kBAA0C;AAAA,IAC9C,OAAO;AAAA,IACP,UAAU,CAAC,SAAS,SAAS,EAAE,GAAG,OAAO,MAAM,MAAM;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,WAAW;AAAA,IAC3B,eAAe,WAAW;AAAA,IAC1B,GAAI,oBAAoB,EAAE,kBAAA,IAAsB,CAAA;AAAA,IAChD,GAAI,iBAAiB,EAAE,eAAA,IAAmB,CAAA;AAAA,IAC1C,GAAI,aAAa,EAAE,WAAA,IAAe,CAAA;AAAA,IAClC,GAAI,iBAAiB,EAAE,eAAA,IAAmB,CAAA;AAAA,IAC1C,GAAI,iBAAiB,EAAE,eAAA,IAAmB,CAAA;AAAA,IAC1C,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,EAAC;AAE3C,QAAM,eACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAIJ,8BACG,OAAA,EAAI,WAAW,GAAG,kCAAkC,SAAS,GAC5D,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX,MAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU,CAAC,SAAS,SAAS,cAAc,OAAO,IAAI,CAAC;AAAA,QACvD,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX;AAAA,IAED,qBAAC,OAAA,EAAM,OAAM,WACX,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,kBAAkB;AAAA,UAClB,SAAS;AAAA,QAAA;AAAA,MAAA;AAAA,MAEX;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA,UAAU,CAAC,YAAY,SAAS,kBAAkB,OAAO,OAAO,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAElE;AAAA,IAAA,GACH;AAAA,IAEC,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ,MAAM;AAAA,UACJ;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,SACE,oBAAC,OAAA,EAAI,WAAU,kCACZ,UAAA,aAAA,CACH;AAAA,UAAA;AAAA,UAGJ,GAAG;AAAA,QAAA;AAAA,QAEL,YAAY;AAAA,QACZ,YAAY,YAAY,SAAS;AAAA,QACjC,eAAc;AAAA,MAAA;AAAA,IAAA,IAGhB;AAAA,IAGD;AAAA,IAEA,WAAW;AAAA,IAEX,CAAC,YACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS,MAAM,YAAY,KAAK;AAAA,QAChC,OAAO;AAAA,QACP,MAAK;AAAA,QACL,YAAU;AAAA,QACV,WAAU;AAAA,QAEV,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACH,GAAI,eAAe,EAAE,UAAU,aAAA,IAAiB,CAAA;AAAA,YACjD,QAAQ,MAAM,YAAY,KAAK;AAAA,YAC/B,UAAU,MAAM,YAAY,KAAK;AAAA,YACjC,WAAU;AAAA,YACV,cAAc,aAAa,KAAK,MAAM,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MAChD;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ;"}
@@ -13,6 +13,7 @@ const permissionsModel = require("../SpecRuntimeEditor/permissions-model.cjs");
13
13
  const update = require("../SpecRuntimeEditor/update.cjs");
14
14
  const runtimeFamily = require("../../../lib/runtime-family.cjs");
15
15
  const SpecRuntimeEditor_sandboxModel = require("../SpecRuntimeEditor.sandbox-model.cjs");
16
+ const UiShield = require("../../../icons/components/UiShield.cjs");
16
17
  const UiSliders = require("../../../icons/components/UiSliders.cjs");
17
18
  const PERMISSION_GROUP = "Permission posture";
18
19
  const PRESETS_GROUP = "Presets";
@@ -20,12 +21,14 @@ function permissionField({
20
21
  spec,
21
22
  families,
22
23
  effectiveMode,
23
- onChange
24
+ effectiveModel,
25
+ onChange,
26
+ models = []
24
27
  }) {
25
28
  var _a, _b;
26
29
  const specMode = ((_a = spec.mode) == null ? void 0 : _a.trim()) || (effectiveMode == null ? void 0 : effectiveMode.trim());
27
- const runtime = specMode ? runtimeFamily.modeOptionFor(families, specMode) : void 0;
28
- const family = specMode ? runtimeMode.familyForMode(families, specMode) : void 0;
30
+ const family = runtimeFamily.familyForModel(families, models, spec.model ?? spec.id ?? effectiveModel) ?? (specMode ? runtimeMode.familyForMode(families, specMode) : void 0);
31
+ const runtime = specMode ? runtimeFamily.modeOptionFor(families, specMode, family == null ? void 0 : family.id) : void 0;
29
32
  const available = permissionsModel.publishedPermissionModes(runtime == null ? void 0 : runtime.schema);
30
33
  const published = SpecRuntimeEditor_sandboxModel.SPEC_PERMISSION_MODES.filter(
31
34
  (mode) => available.includes(mode)
@@ -53,8 +56,10 @@ function permissionField({
53
56
  const select = (mode) => onChange(update.withPermissionMode(spec, mode));
54
57
  return {
55
58
  id: "permissions.mode",
59
+ isSet: current !== void 0,
56
60
  label: PERMISSION_GROUP,
57
- ...(currentVisual == null ? void 0 : currentVisual.icon) ? { icon: currentVisual.icon } : {},
61
+ icon: UiShield.UiShield,
62
+ iconClassName: "text-muted-foreground",
58
63
  title: unpublished ? `${PERMISSION_GROUP} — ${currentVisual == null ? void 0 : currentVisual.label} is not available for ${runtimeLabel}` : `${PERMISSION_GROUP} — ${(currentVisual == null ? void 0 : currentVisual.label) ?? unspecified.UNSPECIFIED_NAME}`,
59
64
  caption: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
60
65
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: utils.cn(RuntimeBarSegment.SEGMENT_KEY_CLASS, "min-w-0 truncate"), children: "Perms" }),
@@ -109,6 +114,7 @@ function permissionField({
109
114
  }
110
115
  ),
111
116
  icon: visual.icon,
117
+ iconClassName: sessionTones.sessionTone(visual.tone).text,
112
118
  onSelect: () => select(mode)
113
119
  };
114
120
  }),
@@ -125,6 +131,7 @@ function permissionField({
125
131
  }
126
132
  ),
127
133
  icon: permissionModeVisuals.permissionModeVisual(family == null ? void 0 : family.id, current).icon,
134
+ iconClassName: "text-destructive",
128
135
  disabled: true,
129
136
  onSelect: () => {
130
137
  }
@@ -139,7 +146,10 @@ function presetsField({
139
146
  onChange,
140
147
  onReorder
141
148
  }) {
142
- const rows = value.map((ref) => ({ ref, preset: runtimeProfileModel.presetForRef(ref, presets) }));
149
+ const rows = value.map((ref) => ({
150
+ ref,
151
+ preset: runtimeProfileModel.presetForRef(ref, presets)
152
+ }));
143
153
  const names = rows.map(({ ref, preset }) => (preset == null ? void 0 : preset.name) ?? ref);
144
154
  const missing = rows.some(({ preset }) => !preset);
145
155
  const toggle = (preset) => {
@@ -153,6 +163,7 @@ function presetsField({
153
163
  };
154
164
  return {
155
165
  id: "presets",
166
+ isSet: value.length > 0,
156
167
  label: PRESETS_GROUP,
157
168
  title: names.length > 0 ? `Presets — ${names.join(", ")}` : "Presets — none",
158
169
  caption: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeActions.cjs","sources":["../../../../src/data/ai/PromptRunEditor/runtimeActions.tsx"],"sourcesContent":["import { UiSliders } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../../overlay/DropdownMenu\";\nimport { presetForRef } from \"../../../lib/runtime-profile-model\";\nimport { Icon } from \"../../Icon\";\nimport type { RuntimeBarAction } from \"../../runtime/RuntimeBarActions\";\nimport {\n SEGMENT_CAPTION_CLASS,\n SEGMENT_KEY_CLASS,\n SegmentItemLabel,\n} from \"../../runtime/RuntimeBarSegment\";\nimport {\n familyForMode,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport {\n UNSPECIFIED_LABEL,\n UNSPECIFIED_NAME,\n unspecifiedHint,\n} from \"../../runtime/unspecified\";\nimport { sessionTone } from \"../session-tones\";\nimport type { RuntimePreset } from \"../runtime-profile\";\nimport {\n SPEC_PERMISSION_MODES,\n type AISpecRuntimeValue,\n type SpecPermissionMode,\n} from \"../SpecRuntimeEditor.model\";\nimport {\n collapsePermissionModeAliases,\n permissionModeVisual,\n} from \"../SpecRuntimeEditor/permission-mode-visuals\";\nimport { publishedPermissionModes } from \"../SpecRuntimeEditor/permissions-model\";\nimport { withPermissionMode } from \"../SpecRuntimeEditor/update\";\n\nconst PERMISSION_GROUP = \"Permission posture\";\nconst PRESETS_GROUP = \"Presets\";\n\n/**\n * The `permissions.mode` field as a runtime-bar action. Narrowing, aliasing and\n * labelling follow `PermissionModeField` exactly, so the bar and the spec\n * modal never disagree about which postures a runtime publishes.\n *\n * Undefined when the resolved runtime publishes no postures (schema\n * `enum: null`) and the spec holds none either — there is nothing to edit.\n */\nexport function permissionField({\n spec,\n families,\n effectiveMode,\n onChange,\n}: {\n spec: AISpecRuntimeValue;\n families: SpecRuntimeFamily[];\n effectiveMode?: string | undefined;\n onChange: (spec: AISpecRuntimeValue) => void;\n}): RuntimeBarAction | undefined {\n const specMode = spec.mode?.trim() || effectiveMode?.trim();\n const runtime = specMode ? modeOptionFor(families, specMode) : undefined;\n const family = specMode ? familyForMode(families, specMode) : undefined;\n const available = publishedPermissionModes(runtime?.schema);\n const published = SPEC_PERMISSION_MODES.filter((mode) =>\n available.includes(mode),\n );\n const current = spec.permissions?.mode;\n const support = Object.fromEntries(\n published.map((mode) => [\n mode,\n runtime?.permissions?.modes[mode] ?? { kind: \"native\" as const },\n ]),\n );\n const visible = collapsePermissionModeAliases(\n family?.id,\n published,\n current,\n support,\n );\n // A posture the runtime does not publish is a misconfiguration the operator\n // must see, not one the bar may silently drop.\n const unpublished = current !== undefined && !published.includes(current);\n if (visible.length === 0 && !unpublished) return undefined;\n\n const runtimeLabel = runtime\n ? `${family?.label ?? specMode} ${runtime.label}`\n : (specMode ?? \"the current runtime\");\n const currentVisual = current\n ? permissionModeVisual(family?.id, current)\n : undefined;\n const select = (mode: SpecPermissionMode | undefined) =>\n onChange(withPermissionMode(spec, mode));\n\n return {\n id: \"permissions.mode\",\n label: PERMISSION_GROUP,\n ...(currentVisual?.icon ? { icon: currentVisual.icon } : {}),\n title: unpublished\n ? `${PERMISSION_GROUP} — ${currentVisual?.label} is not available for ${runtimeLabel}`\n : `${PERMISSION_GROUP} — ${currentVisual?.label ?? UNSPECIFIED_NAME}`,\n caption: (\n <>\n <span className={cn(SEGMENT_KEY_CLASS, \"min-w-0 truncate\")}>Perms</span>\n {currentVisual && (\n <Icon\n icon={currentVisual.icon}\n className={cn(\n \"size-4 shrink-0\",\n unpublished\n ? \"text-destructive\"\n : sessionTone(currentVisual.tone).text,\n )}\n />\n )}\n <span\n className={cn(\n SEGMENT_CAPTION_CLASS,\n \"shrink-0\",\n unpublished && \"text-destructive\",\n )}\n >\n {currentVisual?.label ?? UNSPECIFIED_LABEL}\n </span>\n </>\n ),\n items: [\n {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={UNSPECIFIED_LABEL}\n hint={unspecifiedHint()}\n selected={current === undefined}\n />\n ),\n onSelect: () => select(undefined),\n },\n ...visible.map((mode) => {\n const visual = permissionModeVisual(family?.id, mode);\n const cell = support[mode];\n return {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={visual.label}\n {...(cell?.effects?.note ? { hint: cell.effects.note } : {})}\n selected={mode === current}\n stacked\n />\n ),\n icon: visual.icon,\n onSelect: () => select(mode),\n };\n }),\n ...(unpublished && current\n ? [\n {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={permissionModeVisual(family?.id, current).label}\n hint={`not available for ${runtimeLabel}`}\n selected\n stacked\n />\n ),\n icon: permissionModeVisual(family?.id, current).icon,\n disabled: true,\n onSelect: () => {},\n },\n ]\n : []),\n ],\n };\n}\n\n/**\n * Preset selection as a runtime-bar action. Toggling happens in the menu;\n * ORDERING does not — reordering needs move controls, which cannot live inside\n * `role=\"menu\"` — so the field hands that off to a host-owned modal.\n */\nexport function presetsField({\n presets,\n value,\n onChange,\n onReorder,\n}: {\n presets: RuntimePreset[];\n value: string[];\n onChange: (next: string[]) => void;\n onReorder: () => void;\n}): RuntimeBarAction {\n const rows = value.map((ref) => ({ ref, preset: presetForRef(ref, presets) }));\n const names = rows.map(({ ref, preset }) => preset?.name ?? ref);\n const missing = rows.some(({ preset }) => !preset);\n\n const toggle = (preset: RuntimePreset) => {\n const index = rows.findIndex((row) => row.preset?.id === preset.id);\n // Removing keeps the surviving order; adding appends, so the newest preset\n // resolves last and therefore wins.\n onChange(\n index === -1\n ? [...value, preset.id]\n : value.filter((_, itemIndex) => itemIndex !== index),\n );\n };\n\n return {\n id: \"presets\",\n label: PRESETS_GROUP,\n title: names.length > 0 ? `Presets — ${names.join(\", \")}` : \"Presets — none\",\n caption: (\n <>\n <span className={cn(SEGMENT_KEY_CLASS, \"min-w-0 truncate\")}>\n Presets\n </span>\n <span className={cn(SEGMENT_CAPTION_CLASS, \"shrink-0\")}>\n {names.length > 0 ? String(names.length) : UNSPECIFIED_LABEL}\n </span>\n </>\n ),\n items: [\n ...presets.map((preset) => ({\n group: PRESETS_GROUP,\n label: (\n <SegmentItemLabel\n text={preset.name}\n {...(preset.description ? { hint: preset.description } : {})}\n selected={rows.some((row) => row.preset?.id === preset.id)}\n stacked\n />\n ),\n onSelect: () => toggle(preset),\n })),\n // Ordering matters past one preset; a reference the catalog cannot\n // resolve is only removable there, so it opens the modal on its own.\n ...(names.length >= 2 || missing\n ? [\n {\n group: \"Order\",\n label: \"Reorder presets…\",\n icon: UiSliders,\n onSelect: onReorder,\n } satisfies DropdownMenuItem,\n ]\n : []),\n ],\n };\n}\n"],"names":["modeOptionFor","familyForMode","publishedPermissionModes","SPEC_PERMISSION_MODES","_a","collapsePermissionModeAliases","permissionModeVisual","withPermissionMode","UNSPECIFIED_NAME","jsxs","Fragment","jsx","cn","SEGMENT_KEY_CLASS","Icon","sessionTone","SEGMENT_CAPTION_CLASS","UNSPECIFIED_LABEL","SegmentItemLabel","unspecifiedHint","presetForRef","UiSliders"],"mappings":"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"}
1
+ {"version":3,"file":"runtimeActions.cjs","sources":["../../../../src/data/ai/PromptRunEditor/runtimeActions.tsx"],"sourcesContent":["import { UiShield, UiSliders } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../../overlay/DropdownMenu\";\nimport { presetForRef } from \"../../../lib/runtime-profile-model\";\nimport { Icon } from \"../../Icon\";\nimport type { RuntimeBarAction } from \"../../runtime/RuntimeBarActions\";\nimport type { ChatModel } from \"../../chat/types\";\nimport {\n SEGMENT_CAPTION_CLASS,\n SEGMENT_KEY_CLASS,\n SegmentItemLabel,\n} from \"../../runtime/RuntimeBarSegment\";\nimport {\n familyForMode,\n familyForModel,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport {\n UNSPECIFIED_LABEL,\n UNSPECIFIED_NAME,\n unspecifiedHint,\n} from \"../../runtime/unspecified\";\nimport { sessionTone } from \"../session-tones\";\nimport type { RuntimePreset } from \"../runtime-profile\";\nimport {\n SPEC_PERMISSION_MODES,\n type AISpecRuntimeValue,\n type SpecPermissionMode,\n} from \"../SpecRuntimeEditor.model\";\nimport {\n collapsePermissionModeAliases,\n permissionModeVisual,\n} from \"../SpecRuntimeEditor/permission-mode-visuals\";\nimport { publishedPermissionModes } from \"../SpecRuntimeEditor/permissions-model\";\nimport { withPermissionMode } from \"../SpecRuntimeEditor/update\";\n\nconst PERMISSION_GROUP = \"Permission posture\";\nconst PRESETS_GROUP = \"Presets\";\n\n/**\n * The `permissions.mode` field as a runtime-bar action. Narrowing, aliasing and\n * labelling follow `PermissionModeField` exactly, so the bar and the spec\n * modal never disagree about which postures a runtime publishes.\n *\n * Undefined when the resolved runtime publishes no postures (schema\n * `enum: null`) and the spec holds none either — there is nothing to edit.\n */\nexport function permissionField({\n spec,\n families,\n effectiveMode,\n effectiveModel,\n onChange,\n models = [],\n}: {\n spec: AISpecRuntimeValue;\n families: SpecRuntimeFamily[];\n effectiveMode?: string | undefined;\n effectiveModel?: string | undefined;\n onChange: (spec: AISpecRuntimeValue) => void;\n models?: ChatModel[];\n}): RuntimeBarAction | undefined {\n const specMode = spec.mode?.trim() || effectiveMode?.trim();\n const family =\n familyForModel(families, models, spec.model ?? spec.id ?? effectiveModel) ??\n (specMode ? familyForMode(families, specMode) : undefined);\n const runtime = specMode\n ? modeOptionFor(families, specMode, family?.id)\n : undefined;\n const available = publishedPermissionModes(runtime?.schema);\n const published = SPEC_PERMISSION_MODES.filter((mode) =>\n available.includes(mode),\n );\n const current = spec.permissions?.mode;\n const support = Object.fromEntries(\n published.map((mode) => [\n mode,\n runtime?.permissions?.modes[mode] ?? { kind: \"native\" as const },\n ]),\n );\n const visible = collapsePermissionModeAliases(\n family?.id,\n published,\n current,\n support,\n );\n // A posture the runtime does not publish is a misconfiguration the operator\n // must see, not one the bar may silently drop.\n const unpublished = current !== undefined && !published.includes(current);\n if (visible.length === 0 && !unpublished) return undefined;\n\n const runtimeLabel = runtime\n ? `${family?.label ?? specMode} ${runtime.label}`\n : specMode ?? \"the current runtime\";\n const currentVisual = current\n ? permissionModeVisual(family?.id, current)\n : undefined;\n const select = (mode: SpecPermissionMode | undefined) =>\n onChange(withPermissionMode(spec, mode));\n\n return {\n id: \"permissions.mode\",\n isSet: current !== undefined,\n label: PERMISSION_GROUP,\n icon: UiShield,\n iconClassName: \"text-muted-foreground\",\n title: unpublished\n ? `${PERMISSION_GROUP} — ${currentVisual?.label} is not available for ${runtimeLabel}`\n : `${PERMISSION_GROUP} — ${currentVisual?.label ?? UNSPECIFIED_NAME}`,\n caption: (\n <>\n <span className={cn(SEGMENT_KEY_CLASS, \"min-w-0 truncate\")}>Perms</span>\n {currentVisual && (\n <Icon\n icon={currentVisual.icon}\n className={cn(\n \"size-4 shrink-0\",\n unpublished\n ? \"text-destructive\"\n : sessionTone(currentVisual.tone).text,\n )}\n />\n )}\n <span\n className={cn(\n SEGMENT_CAPTION_CLASS,\n \"shrink-0\",\n unpublished && \"text-destructive\",\n )}\n >\n {currentVisual?.label ?? UNSPECIFIED_LABEL}\n </span>\n </>\n ),\n items: [\n {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={UNSPECIFIED_LABEL}\n hint={unspecifiedHint()}\n selected={current === undefined}\n />\n ),\n onSelect: () => select(undefined),\n },\n ...visible.map((mode) => {\n const visual = permissionModeVisual(family?.id, mode);\n const cell = support[mode];\n return {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={visual.label}\n {...(cell?.effects?.note ? { hint: cell.effects.note } : {})}\n selected={mode === current}\n stacked\n />\n ),\n icon: visual.icon,\n iconClassName: sessionTone(visual.tone).text,\n onSelect: () => select(mode),\n };\n }),\n ...(unpublished && current\n ? [\n {\n group: PERMISSION_GROUP,\n label: (\n <SegmentItemLabel\n text={permissionModeVisual(family?.id, current).label}\n hint={`not available for ${runtimeLabel}`}\n selected\n stacked\n />\n ),\n icon: permissionModeVisual(family?.id, current).icon,\n iconClassName: \"text-destructive\",\n disabled: true,\n onSelect: () => {},\n },\n ]\n : []),\n ],\n };\n}\n\n/**\n * Preset selection as a runtime-bar action. Toggling happens in the menu;\n * ORDERING does not — reordering needs move controls, which cannot live inside\n * `role=\"menu\"` — so the field hands that off to a host-owned modal.\n */\nexport function presetsField({\n presets,\n value,\n onChange,\n onReorder,\n}: {\n presets: RuntimePreset[];\n value: string[];\n onChange: (next: string[]) => void;\n onReorder: () => void;\n}): RuntimeBarAction {\n const rows = value.map((ref) => ({\n ref,\n preset: presetForRef(ref, presets),\n }));\n const names = rows.map(({ ref, preset }) => preset?.name ?? ref);\n const missing = rows.some(({ preset }) => !preset);\n\n const toggle = (preset: RuntimePreset) => {\n const index = rows.findIndex((row) => row.preset?.id === preset.id);\n // Removing keeps the surviving order; adding appends, so the newest preset\n // resolves last and therefore wins.\n onChange(\n index === -1\n ? [...value, preset.id]\n : value.filter((_, itemIndex) => itemIndex !== index),\n );\n };\n\n return {\n id: \"presets\",\n isSet: value.length > 0,\n label: PRESETS_GROUP,\n title:\n names.length > 0 ? `Presets — ${names.join(\", \")}` : \"Presets — none\",\n caption: (\n <>\n <span className={cn(SEGMENT_KEY_CLASS, \"min-w-0 truncate\")}>\n Presets\n </span>\n <span className={cn(SEGMENT_CAPTION_CLASS, \"shrink-0\")}>\n {names.length > 0 ? String(names.length) : UNSPECIFIED_LABEL}\n </span>\n </>\n ),\n items: [\n ...presets.map((preset) => ({\n group: PRESETS_GROUP,\n label: (\n <SegmentItemLabel\n text={preset.name}\n {...(preset.description ? { hint: preset.description } : {})}\n selected={rows.some((row) => row.preset?.id === preset.id)}\n stacked\n />\n ),\n onSelect: () => toggle(preset),\n })),\n // Ordering matters past one preset; a reference the catalog cannot\n // resolve is only removable there, so it opens the modal on its own.\n ...(names.length >= 2 || missing\n ? [\n {\n group: \"Order\",\n label: \"Reorder presets…\",\n icon: UiSliders,\n onSelect: onReorder,\n } satisfies DropdownMenuItem,\n ]\n : []),\n ],\n };\n}\n"],"names":["familyForModel","familyForMode","modeOptionFor","publishedPermissionModes","SPEC_PERMISSION_MODES","_a","collapsePermissionModeAliases","permissionModeVisual","withPermissionMode","UiShield","UNSPECIFIED_NAME","jsxs","Fragment","jsx","cn","SEGMENT_KEY_CLASS","Icon","sessionTone","SEGMENT_CAPTION_CLASS","UNSPECIFIED_LABEL","SegmentItemLabel","unspecifiedHint","presetForRef","UiSliders"],"mappings":";;;;;;;;;;;;;;;;;AAqCA,MAAM,mBAAmB;AACzB,MAAM,gBAAgB;AAUf,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AACX,GAOiC;;AAC/B,QAAM,aAAW,UAAK,SAAL,mBAAW,YAAU,+CAAe;AACrD,QAAM,SACJA,cAAAA,eAAe,UAAU,QAAQ,KAAK,SAAS,KAAK,MAAM,cAAc,MACvE,WAAWC,YAAAA,cAAc,UAAU,QAAQ,IAAI;AAClD,QAAM,UAAU,WACZC,4BAAc,UAAU,UAAU,iCAAQ,EAAE,IAC5C;AACJ,QAAM,YAAYC,iBAAAA,yBAAyB,mCAAS,MAAM;AAC1D,QAAM,YAAYC,+BAAAA,sBAAsB;AAAA,IAAO,CAAC,SAC9C,UAAU,SAAS,IAAI;AAAA,EAAA;AAEzB,QAAM,WAAU,UAAK,gBAAL,mBAAkB;AAClC,QAAM,UAAU,OAAO;AAAA,IACrB,UAAU,IAAI,CAAC,SAAA;;AAAS;AAAA,QACtB;AAAA,UACAC,MAAA,mCAAS,gBAAT,gBAAAA,IAAsB,MAAM,UAAS,EAAE,MAAM,SAAA;AAAA,MAAkB;AAAA,KAChE;AAAA,EAAA;AAEH,QAAM,UAAUC,sBAAAA;AAAAA,IACd,iCAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIF,QAAM,cAAc,YAAY,UAAa,CAAC,UAAU,SAAS,OAAO;AACxE,MAAI,QAAQ,WAAW,KAAK,CAAC,YAAa,QAAO;AAEjD,QAAM,eAAe,UACjB,IAAG,iCAAQ,UAAS,QAAQ,IAAI,QAAQ,KAAK,KAC7C,YAAY;AAChB,QAAM,gBAAgB,UAClBC,sBAAAA,qBAAqB,iCAAQ,IAAI,OAAO,IACxC;AACJ,QAAM,SAAS,CAAC,SACd,SAASC,OAAAA,mBAAmB,MAAM,IAAI,CAAC;AAEzC,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO,YAAY;AAAA,IACnB,OAAO;AAAA,IACP,MAAMC,SAAAA;AAAAA,IACN,eAAe;AAAA,IACf,OAAO,cACH,GAAG,gBAAgB,MAAM,+CAAe,KAAK,yBAAyB,YAAY,KAClF,GAAG,gBAAgB,OAAM,+CAAe,UAASC,YAAAA,gBAAgB;AAAA,IACrE,SACEC,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,MAAAC,+BAAC,UAAK,WAAWC,MAAAA,GAAGC,kBAAAA,mBAAmB,kBAAkB,GAAG,UAAA,SAAK;AAAA,MAChE,iBACCF,2BAAAA;AAAAA,QAACG,KAAAA;AAAAA,QAAA;AAAA,UACC,MAAM,cAAc;AAAA,UACpB,WAAWF,MAAAA;AAAAA,YACT;AAAA,YACA,cACI,qBACAG,aAAAA,YAAY,cAAc,IAAI,EAAE;AAAA,UAAA;AAAA,QACtC;AAAA,MAAA;AAAA,MAGJJ,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC,MAAAA;AAAAA,YACTI,kBAAAA;AAAAA,YACA;AAAA,YACA,eAAe;AAAA,UAAA;AAAA,UAGhB,0DAAe,UAASC,YAAAA;AAAAA,QAAA;AAAA,MAAA;AAAA,IAC3B,GACF;AAAA,IAEF,OAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,OACEN,2BAAAA;AAAAA,UAACO,kBAAAA;AAAAA,UAAA;AAAA,YACC,MAAMD,YAAAA;AAAAA,YACN,MAAME,YAAAA,gBAAA;AAAA,YACN,UAAU,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAG1B,UAAU,MAAM,OAAO,MAAS;AAAA,MAAA;AAAA,MAElC,GAAG,QAAQ,IAAI,CAAC,SAAS;;AACvB,cAAM,SAASd,sBAAAA,qBAAqB,iCAAQ,IAAI,IAAI;AACpD,cAAM,OAAO,QAAQ,IAAI;AACzB,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OACEM,2BAAAA;AAAAA,YAACO,kBAAAA;AAAAA,YAAA;AAAA,cACC,MAAM,OAAO;AAAA,cACZ,KAAIf,MAAA,6BAAM,YAAN,gBAAAA,IAAe,QAAO,EAAE,MAAM,KAAK,QAAQ,KAAA,IAAS,CAAA;AAAA,cACzD,UAAU,SAAS;AAAA,cACnB,SAAO;AAAA,YAAA;AAAA,UAAA;AAAA,UAGX,MAAM,OAAO;AAAA,UACb,eAAeY,aAAAA,YAAY,OAAO,IAAI,EAAE;AAAA,UACxC,UAAU,MAAM,OAAO,IAAI;AAAA,QAAA;AAAA,MAE/B,CAAC;AAAA,MACD,GAAI,eAAe,UACf;AAAA,QACE;AAAA,UACE,OAAO;AAAA,UACP,OACEJ,2BAAAA;AAAAA,YAACO,kBAAAA;AAAAA,YAAA;AAAA,cACC,MAAMb,sBAAAA,qBAAqB,iCAAQ,IAAI,OAAO,EAAE;AAAA,cAChD,MAAM,qBAAqB,YAAY;AAAA,cACvC,UAAQ;AAAA,cACR,SAAO;AAAA,YAAA;AAAA,UAAA;AAAA,UAGX,MAAMA,sBAAAA,qBAAqB,iCAAQ,IAAI,OAAO,EAAE;AAAA,UAChD,eAAe;AAAA,UACf,UAAU;AAAA,UACV,UAAU,MAAM;AAAA,UAAC;AAAA,QAAA;AAAA,MACnB,IAEF,CAAA;AAAA,IAAC;AAAA,EACP;AAEJ;AAOO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKqB;AACnB,QAAM,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IAC/B;AAAA,IACA,QAAQe,oBAAAA,aAAa,KAAK,OAAO;AAAA,EAAA,EACjC;AACF,QAAM,QAAQ,KAAK,IAAI,CAAC,EAAE,KAAK,cAAa,iCAAQ,SAAQ,GAAG;AAC/D,QAAM,UAAU,KAAK,KAAK,CAAC,EAAE,OAAA,MAAa,CAAC,MAAM;AAEjD,QAAM,SAAS,CAAC,WAA0B;AACxC,UAAM,QAAQ,KAAK,UAAU,CAAC;;AAAQ,wBAAI,WAAJ,mBAAY,QAAO,OAAO;AAAA,KAAE;AAGlE;AAAA,MACE,UAAU,KACN,CAAC,GAAG,OAAO,OAAO,EAAE,IACpB,MAAM,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK;AAAA,IAAA;AAAA,EAE1D;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO,MAAM,SAAS;AAAA,IACtB,OAAO;AAAA,IACP,OACE,MAAM,SAAS,IAAI,aAAa,MAAM,KAAK,IAAI,CAAC,KAAK;AAAA,IACvD,SACEX,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,MAAAC,+BAAC,UAAK,WAAWC,MAAAA,GAAGC,kBAAAA,mBAAmB,kBAAkB,GAAG,UAAA,WAE5D;AAAA,MACAF,2BAAAA,IAAC,QAAA,EAAK,WAAWC,MAAAA,GAAGI,kBAAAA,uBAAuB,UAAU,GAClD,UAAA,MAAM,SAAS,IAAI,OAAO,MAAM,MAAM,IAAIC,8BAAA,CAC7C;AAAA,IAAA,GACF;AAAA,IAEF,OAAO;AAAA,MACL,GAAG,QAAQ,IAAI,CAAC,YAAY;AAAA,QAC1B,OAAO;AAAA,QACP,OACEN,2BAAAA;AAAAA,UAACO,kBAAAA;AAAAA,UAAA;AAAA,YACC,MAAM,OAAO;AAAA,YACZ,GAAI,OAAO,cAAc,EAAE,MAAM,OAAO,YAAA,IAAgB,CAAA;AAAA,YACzD,UAAU,KAAK,KAAK,CAAC;;AAAQ,gCAAI,WAAJ,mBAAY,QAAO,OAAO;AAAA,aAAE;AAAA,YACzD,SAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGX,UAAU,MAAM,OAAO,MAAM;AAAA,MAAA,EAC7B;AAAA;AAAA;AAAA,MAGF,GAAI,MAAM,UAAU,KAAK,UACrB;AAAA,QACE;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAMG,UAAAA;AAAAA,UACN,UAAU;AAAA,QAAA;AAAA,MACZ,IAEF,CAAA;AAAA,IAAC;AAAA,EACP;AAEJ;;;"}
@@ -1,4 +1,5 @@
1
1
  import { RuntimeBarAction } from '../../runtime/RuntimeBarActions.js';
2
+ import { ChatModel } from '../../chat/types.js';
2
3
  import { SpecRuntimeFamily } from '../../runtime/runtime-mode.js';
3
4
  import { RuntimePreset } from '../runtime-profile.js';
4
5
  import { AISpecRuntimeValue } from '../SpecRuntimeEditor.model.js';
@@ -10,11 +11,13 @@ import { AISpecRuntimeValue } from '../SpecRuntimeEditor.model.js';
10
11
  * Undefined when the resolved runtime publishes no postures (schema
11
12
  * `enum: null`) and the spec holds none either — there is nothing to edit.
12
13
  */
13
- export declare function permissionField({ spec, families, effectiveMode, onChange, }: {
14
+ export declare function permissionField({ spec, families, effectiveMode, effectiveModel, onChange, models, }: {
14
15
  spec: AISpecRuntimeValue;
15
16
  families: SpecRuntimeFamily[];
16
17
  effectiveMode?: string | undefined;
18
+ effectiveModel?: string | undefined;
17
19
  onChange: (spec: AISpecRuntimeValue) => void;
20
+ models?: ChatModel[];
18
21
  }): RuntimeBarAction | undefined;
19
22
  /**
20
23
  * Preset selection as a runtime-bar action. Toggling happens in the menu;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeActions.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/runtimeActions.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMxE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAWpC;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9C,GAAG,gBAAgB,GAAG,SAAS,CAoH/B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,gBAAgB,CAyDnB"}
1
+ {"version":3,"file":"runtimeActions.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/runtimeActions.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAWpC;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,QAAQ,EACR,MAAW,GACZ,EAAE;IACD,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB,GAAG,gBAAgB,GAAG,SAAS,CA4H/B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE;IACD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,gBAAgB,CA8DnB"}
@@ -9,8 +9,9 @@ import { sessionTone } from "../session-tones.js";
9
9
  import { collapsePermissionModeAliases, permissionModeVisual } from "../SpecRuntimeEditor/permission-mode-visuals.js";
10
10
  import { publishedPermissionModes } from "../SpecRuntimeEditor/permissions-model.js";
11
11
  import { withPermissionMode } from "../SpecRuntimeEditor/update.js";
12
- import { modeOptionFor } from "../../../lib/runtime-family.js";
12
+ import { familyForModel, modeOptionFor } from "../../../lib/runtime-family.js";
13
13
  import { SPEC_PERMISSION_MODES } from "../SpecRuntimeEditor.sandbox-model.js";
14
+ import { UiShield } from "../../../icons/components/UiShield.js";
14
15
  import { UiSliders } from "../../../icons/components/UiSliders.js";
15
16
  const PERMISSION_GROUP = "Permission posture";
16
17
  const PRESETS_GROUP = "Presets";
@@ -18,12 +19,14 @@ function permissionField({
18
19
  spec,
19
20
  families,
20
21
  effectiveMode,
21
- onChange
22
+ effectiveModel,
23
+ onChange,
24
+ models = []
22
25
  }) {
23
26
  var _a, _b;
24
27
  const specMode = ((_a = spec.mode) == null ? void 0 : _a.trim()) || (effectiveMode == null ? void 0 : effectiveMode.trim());
25
- const runtime = specMode ? modeOptionFor(families, specMode) : void 0;
26
- const family = specMode ? familyForMode(families, specMode) : void 0;
28
+ const family = familyForModel(families, models, spec.model ?? spec.id ?? effectiveModel) ?? (specMode ? familyForMode(families, specMode) : void 0);
29
+ const runtime = specMode ? modeOptionFor(families, specMode, family == null ? void 0 : family.id) : void 0;
27
30
  const available = publishedPermissionModes(runtime == null ? void 0 : runtime.schema);
28
31
  const published = SPEC_PERMISSION_MODES.filter(
29
32
  (mode) => available.includes(mode)
@@ -51,8 +54,10 @@ function permissionField({
51
54
  const select = (mode) => onChange(withPermissionMode(spec, mode));
52
55
  return {
53
56
  id: "permissions.mode",
57
+ isSet: current !== void 0,
54
58
  label: PERMISSION_GROUP,
55
- ...(currentVisual == null ? void 0 : currentVisual.icon) ? { icon: currentVisual.icon } : {},
59
+ icon: UiShield,
60
+ iconClassName: "text-muted-foreground",
56
61
  title: unpublished ? `${PERMISSION_GROUP} — ${currentVisual == null ? void 0 : currentVisual.label} is not available for ${runtimeLabel}` : `${PERMISSION_GROUP} — ${(currentVisual == null ? void 0 : currentVisual.label) ?? UNSPECIFIED_NAME}`,
57
62
  caption: /* @__PURE__ */ jsxs(Fragment, { children: [
58
63
  /* @__PURE__ */ jsx("span", { className: cn(SEGMENT_KEY_CLASS, "min-w-0 truncate"), children: "Perms" }),
@@ -107,6 +112,7 @@ function permissionField({
107
112
  }
108
113
  ),
109
114
  icon: visual.icon,
115
+ iconClassName: sessionTone(visual.tone).text,
110
116
  onSelect: () => select(mode)
111
117
  };
112
118
  }),
@@ -123,6 +129,7 @@ function permissionField({
123
129
  }
124
130
  ),
125
131
  icon: permissionModeVisual(family == null ? void 0 : family.id, current).icon,
132
+ iconClassName: "text-destructive",
126
133
  disabled: true,
127
134
  onSelect: () => {
128
135
  }
@@ -137,7 +144,10 @@ function presetsField({
137
144
  onChange,
138
145
  onReorder
139
146
  }) {
140
- const rows = value.map((ref) => ({ ref, preset: presetForRef(ref, presets) }));
147
+ const rows = value.map((ref) => ({
148
+ ref,
149
+ preset: presetForRef(ref, presets)
150
+ }));
141
151
  const names = rows.map(({ ref, preset }) => (preset == null ? void 0 : preset.name) ?? ref);
142
152
  const missing = rows.some(({ preset }) => !preset);
143
153
  const toggle = (preset) => {
@@ -151,6 +161,7 @@ function presetsField({
151
161
  };
152
162
  return {
153
163
  id: "presets",
164
+ isSet: value.length > 0,
154
165
  label: PRESETS_GROUP,
155
166
  title: names.length > 0 ? `Presets — ${names.join(", ")}` : "Presets — none",
156
167
  caption: /* @__PURE__ */ jsxs(Fragment, { children: [