@flanksource/clicky-ui 0.3.34 → 0.3.35

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 (680) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +3 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.d.ts +1 -1
  7. package/dist/comments/CommentProvider.d.ts +1 -1
  8. package/dist/comments/CommentThread.d.ts +1 -1
  9. package/dist/comments/CommentThreadList.d.ts +1 -1
  10. package/dist/comments/MentionTextarea.d.ts +1 -1
  11. package/dist/comments/comment-context.d.ts +4 -4
  12. package/dist/comments/comment-fixtures.d.ts +1 -1
  13. package/dist/comments/comment-types.d.ts +1 -1
  14. package/dist/components/AccordionList.d.ts +1 -1
  15. package/dist/components/ComboboxControl.d.ts +1 -1
  16. package/dist/components/ComboboxMenu.d.ts +2 -2
  17. package/dist/components/ComboboxTags.cjs +41 -11
  18. package/dist/components/ComboboxTags.cjs.map +1 -1
  19. package/dist/components/ComboboxTags.d.ts +6 -0
  20. package/dist/components/ComboboxTags.d.ts.map +1 -1
  21. package/dist/components/ComboboxTags.js +41 -11
  22. package/dist/components/ComboboxTags.js.map +1 -1
  23. package/dist/components/DateField.d.ts +3 -3
  24. package/dist/components/DatePicker.d.ts +3 -3
  25. package/dist/components/DateTimePicker.d.ts +3 -3
  26. package/dist/components/ErrorWrapper.d.ts +2 -2
  27. package/dist/components/Field.d.ts +1 -1
  28. package/dist/components/FilterBar.d.ts +1 -1
  29. package/dist/components/FormLookupProvider.d.ts +1 -1
  30. package/dist/components/FormatOptionsDropdown.d.ts +1 -1
  31. package/dist/components/IconButton.d.ts +3 -3
  32. package/dist/components/InputField.d.ts +2 -2
  33. package/dist/components/ItemActions.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.cjs +17 -36
  35. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  36. package/dist/components/JsonSchemaForm.d.ts +1 -1
  37. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  38. package/dist/components/JsonSchemaForm.js +17 -36
  39. package/dist/components/JsonSchemaForm.js.map +1 -1
  40. package/dist/components/ListMenu.d.ts +1 -1
  41. package/dist/components/MultiSelect.d.ts +1 -1
  42. package/dist/components/SearchInput.d.ts +1 -1
  43. package/dist/components/SegmentedControl.d.ts +1 -1
  44. package/dist/components/SplitButton.d.ts +1 -1
  45. package/dist/components/Switch.d.ts +1 -1
  46. package/dist/components/TreePickerField.cjs +11 -2
  47. package/dist/components/TreePickerField.cjs.map +1 -1
  48. package/dist/components/TreePickerField.d.ts +13 -4
  49. package/dist/components/TreePickerField.d.ts.map +1 -1
  50. package/dist/components/TreePickerField.js +11 -2
  51. package/dist/components/TreePickerField.js.map +1 -1
  52. package/dist/components/UnitStepControls.d.ts +1 -1
  53. package/dist/components/button.d.ts +3 -3
  54. package/dist/components/combobox-types.d.ts +1 -1
  55. package/dist/components/density-switcher.d.ts +1 -1
  56. package/dist/components/filter-bar-context.d.ts +1 -1
  57. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  58. package/dist/components/form-lookup-context.d.ts +1 -1
  59. package/dist/components/icon-menu-picker.d.ts +1 -1
  60. package/dist/components/json-schema-form-accordion-array.cjs +44 -21
  61. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  63. package/dist/components/json-schema-form-accordion-array.js +47 -24
  64. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  65. package/dist/components/json-schema-form-array.cjs +53 -30
  66. package/dist/components/json-schema-form-array.cjs.map +1 -1
  67. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  68. package/dist/components/json-schema-form-array.js +54 -31
  69. package/dist/components/json-schema-form-array.js.map +1 -1
  70. package/dist/components/json-schema-form-cards-array.cjs +32 -22
  71. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-cards-array.js +33 -23
  74. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  75. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
  76. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
  77. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  78. package/dist/components/json-schema-form-errors.cjs +5 -1
  79. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  80. package/dist/components/json-schema-form-errors.d.ts +2 -1
  81. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  82. package/dist/components/json-schema-form-errors.js +6 -2
  83. package/dist/components/json-schema-form-errors.js.map +1 -1
  84. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  85. package/dist/components/json-schema-form-filter-input.cjs +50 -0
  86. package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
  87. package/dist/components/json-schema-form-filter-input.d.ts +5 -0
  88. package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
  89. package/dist/components/json-schema-form-filter-input.js +50 -0
  90. package/dist/components/json-schema-form-filter-input.js.map +1 -0
  91. package/dist/components/json-schema-form-filter.cjs +49 -0
  92. package/dist/components/json-schema-form-filter.cjs.map +1 -0
  93. package/dist/components/json-schema-form-filter.d.ts +8 -0
  94. package/dist/components/json-schema-form-filter.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-filter.js +49 -0
  96. package/dist/components/json-schema-form-filter.js.map +1 -0
  97. package/dist/components/json-schema-form-layout.cjs +84 -17
  98. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  99. package/dist/components/json-schema-form-layout.d.ts +1 -1
  100. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-layout.js +84 -17
  102. package/dist/components/json-schema-form-layout.js.map +1 -1
  103. package/dist/components/json-schema-form-list-array.cjs +16 -5
  104. package/dist/components/json-schema-form-list-array.cjs.map +1 -1
  105. package/dist/components/json-schema-form-list-array.d.ts +2 -1
  106. package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-list-array.js +16 -5
  108. package/dist/components/json-schema-form-list-array.js.map +1 -1
  109. package/dist/components/json-schema-form-object.cjs +239 -85
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts +2 -2
  112. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  113. package/dist/components/json-schema-form-object.js +241 -87
  114. package/dist/components/json-schema-form-object.js.map +1 -1
  115. package/dist/components/json-schema-form-preferences.cjs +1 -1
  116. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  117. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  118. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  119. package/dist/components/json-schema-form-preferences.js +1 -1
  120. package/dist/components/json-schema-form-preferences.js.map +1 -1
  121. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
  122. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
  123. package/dist/components/json-schema-form-properties-size.cjs +19 -0
  124. package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
  125. package/dist/components/json-schema-form-properties-size.d.ts +4 -0
  126. package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-properties-size.js +19 -0
  128. package/dist/components/json-schema-form-properties-size.js.map +1 -0
  129. package/dist/components/json-schema-form-properties.cjs +305 -0
  130. package/dist/components/json-schema-form-properties.cjs.map +1 -0
  131. package/dist/components/json-schema-form-properties.d.ts +20 -0
  132. package/dist/components/json-schema-form-properties.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
  134. package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
  135. package/dist/components/json-schema-form-properties.js +305 -0
  136. package/dist/components/json-schema-form-properties.js.map +1 -0
  137. package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
  138. package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
  139. package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
  140. package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
  141. package/dist/components/json-schema-form-property-actions-context.js +6 -0
  142. package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
  143. package/dist/components/json-schema-form-property-collection.cjs +31 -0
  144. package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
  145. package/dist/components/json-schema-form-property-collection.d.ts +6 -0
  146. package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
  147. package/dist/components/json-schema-form-property-collection.js +31 -0
  148. package/dist/components/json-schema-form-property-collection.js.map +1 -0
  149. package/dist/components/json-schema-form-property-draft.cjs +45 -0
  150. package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
  151. package/dist/components/json-schema-form-property-draft.d.ts +8 -0
  152. package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-property-draft.js +45 -0
  154. package/dist/components/json-schema-form-property-draft.js.map +1 -0
  155. package/dist/components/json-schema-form-property-preview.cjs +68 -0
  156. package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
  157. package/dist/components/json-schema-form-property-preview.d.ts +7 -0
  158. package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-property-preview.js +68 -0
  160. package/dist/components/json-schema-form-property-preview.js.map +1 -0
  161. package/dist/components/json-schema-form-property-selection.cjs +89 -0
  162. package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
  163. package/dist/components/json-schema-form-property-selection.d.ts +6 -0
  164. package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-property-selection.js +89 -0
  166. package/dist/components/json-schema-form-property-selection.js.map +1 -0
  167. package/dist/components/json-schema-form-render.cjs +41 -4
  168. package/dist/components/json-schema-form-render.cjs.map +1 -1
  169. package/dist/components/json-schema-form-render.d.ts +1 -1
  170. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  171. package/dist/components/json-schema-form-render.js +42 -5
  172. package/dist/components/json-schema-form-render.js.map +1 -1
  173. package/dist/components/json-schema-form-resolve.cjs +2 -0
  174. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  175. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  176. package/dist/components/json-schema-form-resolve.js +2 -0
  177. package/dist/components/json-schema-form-resolve.js.map +1 -1
  178. package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
  179. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
  180. package/dist/components/json-schema-form-table-array.cjs +82 -51
  181. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  182. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  183. package/dist/components/json-schema-form-table-array.js +84 -53
  184. package/dist/components/json-schema-form-table-array.js.map +1 -1
  185. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  186. package/dist/components/json-schema-form-template.d.ts +1 -1
  187. package/dist/components/json-schema-form-types.d.ts +7 -179
  188. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-utils.cjs +10 -9
  190. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  191. package/dist/components/json-schema-form-utils.d.ts +11 -1
  192. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-utils.js +10 -9
  194. package/dist/components/json-schema-form-utils.js.map +1 -1
  195. package/dist/components/loading.d.ts +4 -4
  196. package/dist/components/mdx-editor-callout.d.ts +1 -1
  197. package/dist/components/mdx-editor-options.d.ts +1 -1
  198. package/dist/components/select.d.ts +3 -3
  199. package/dist/components/theme-switcher.d.ts +1 -1
  200. package/dist/components/use-list-menu-selection.d.ts +1 -1
  201. package/dist/components/useComboboxLayout.d.ts +1 -1
  202. package/dist/components/workload-picker-utils.d.ts +1 -1
  203. package/dist/data/Avatar.d.ts +1 -1
  204. package/dist/data/AvatarBadge.d.ts +1 -1
  205. package/dist/data/Badge.d.ts +1 -1
  206. package/dist/data/Callout.d.ts +1 -1
  207. package/dist/data/DataTable.cjs +575 -435
  208. package/dist/data/DataTable.cjs.map +1 -1
  209. package/dist/data/DataTable.d.ts +21 -13
  210. package/dist/data/DataTable.d.ts.map +1 -1
  211. package/dist/data/DataTable.grouping.d.ts +1 -1
  212. package/dist/data/DataTable.js +575 -435
  213. package/dist/data/DataTable.js.map +1 -1
  214. package/dist/data/ExecutionTree.d.ts +1 -1
  215. package/dist/data/FilterPill.d.ts +1 -1
  216. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
  217. package/dist/data/FixtureEditor/types.d.ts +1 -1
  218. package/dist/data/Gauge.d.ts +1 -1
  219. package/dist/data/GaugeHoverCard.d.ts +1 -1
  220. package/dist/data/Icon.d.ts +1 -1
  221. package/dist/data/KeyValueList.d.ts +1 -1
  222. package/dist/data/MarkdownEditor.d.ts +1 -1
  223. package/dist/data/MatrixTable.d.ts +1 -1
  224. package/dist/data/ObjectGraph.d.ts +1 -1
  225. package/dist/data/ProgressBars.d.ts +1 -1
  226. package/dist/data/Properties.cjs +86 -35
  227. package/dist/data/Properties.cjs.map +1 -1
  228. package/dist/data/Properties.d.ts +2 -2
  229. package/dist/data/Properties.d.ts.map +1 -1
  230. package/dist/data/Properties.js +87 -36
  231. package/dist/data/Properties.js.map +1 -1
  232. package/dist/data/RadialGauge.d.ts +1 -1
  233. package/dist/data/SchemaViewer.d.ts +1 -1
  234. package/dist/data/SortableHeader.d.ts +1 -1
  235. package/dist/data/StatStrip.d.ts +1 -1
  236. package/dist/data/StatusBreakdown.d.ts +1 -1
  237. package/dist/data/TabButton.d.ts +1 -1
  238. package/dist/data/TaskManager.cjs +9 -17
  239. package/dist/data/TaskManager.cjs.map +1 -1
  240. package/dist/data/TaskManager.d.ts.map +1 -1
  241. package/dist/data/TaskManager.js +9 -17
  242. package/dist/data/TaskManager.js.map +1 -1
  243. package/dist/data/TaskManagerButton.cjs +17 -34
  244. package/dist/data/TaskManagerButton.cjs.map +1 -1
  245. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  246. package/dist/data/TaskManagerButton.js +18 -35
  247. package/dist/data/TaskManagerButton.js.map +1 -1
  248. package/dist/data/TaskProcessDetails.cjs +5 -26
  249. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  250. package/dist/data/TaskProcessDetails.d.ts +2 -1
  251. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  252. package/dist/data/TaskProcessDetails.js +5 -26
  253. package/dist/data/TaskProcessDetails.js.map +1 -1
  254. package/dist/data/TaskProgress.cjs +24 -15
  255. package/dist/data/TaskProgress.cjs.map +1 -1
  256. package/dist/data/TaskProgress.d.ts +2 -1
  257. package/dist/data/TaskProgress.d.ts.map +1 -1
  258. package/dist/data/TaskProgress.js +24 -15
  259. package/dist/data/TaskProgress.js.map +1 -1
  260. package/dist/data/TaskResourceReadings.cjs +42 -0
  261. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  262. package/dist/data/TaskResourceReadings.d.ts +6 -0
  263. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  264. package/dist/data/TaskResourceReadings.js +42 -0
  265. package/dist/data/TaskResourceReadings.js.map +1 -0
  266. package/dist/data/TaskSnapshot.cjs.map +1 -1
  267. package/dist/data/TaskSnapshot.d.ts +14 -1
  268. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  269. package/dist/data/TaskSnapshot.js.map +1 -1
  270. package/dist/data/Timeline.d.ts +1 -1
  271. package/dist/data/Tree.d.ts +1 -1
  272. package/dist/data/TreeGroupHeader.d.ts +1 -1
  273. package/dist/data/TreeNode.d.ts +1 -1
  274. package/dist/data/Version.d.ts +3 -3
  275. package/dist/data/ai/ChatWindow.cjs +22 -12
  276. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  277. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  278. package/dist/data/ai/ChatWindow.js +22 -12
  279. package/dist/data/ai/ChatWindow.js.map +1 -1
  280. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  281. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  282. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  283. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  284. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  285. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  286. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  287. package/dist/data/ai/ChatWindowManager.js +2 -0
  288. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  289. package/dist/data/ai/PolicyTree.d.ts +1 -1
  290. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  291. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  292. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  293. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  294. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  295. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  296. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  297. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  298. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  299. package/dist/data/ai/SessionInspector.approvals.cjs +147 -0
  300. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  301. package/dist/data/ai/SessionInspector.approvals.d.ts +21 -0
  302. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  303. package/dist/data/ai/SessionInspector.approvals.js +147 -0
  304. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  305. package/dist/data/ai/SessionInspector.cjs +21 -8
  306. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  307. package/dist/data/ai/SessionInspector.d.ts +6 -2
  308. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  309. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  310. package/dist/data/ai/SessionInspector.js +21 -8
  311. package/dist/data/ai/SessionInspector.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.panel-parts.cjs +47 -0
  313. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  314. package/dist/data/ai/SessionInspector.panel-parts.d.ts +20 -0
  315. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  316. package/dist/data/ai/SessionInspector.panel-parts.js +47 -0
  317. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  318. package/dist/data/ai/SessionInspector.panels.cjs +40 -99
  319. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  320. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  321. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  322. package/dist/data/ai/SessionInspector.panels.js +12 -71
  323. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  324. package/dist/data/ai/SessionViewer.d.ts +1 -1
  325. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  326. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  327. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  328. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  329. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  330. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  331. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  332. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  333. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  334. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  335. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  336. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  337. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  338. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  339. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  340. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  341. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  342. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  343. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  344. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  345. package/dist/data/ai/chat-window-context.cjs +1 -0
  346. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  347. package/dist/data/ai/chat-window-context.d.ts +13 -5
  348. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  349. package/dist/data/ai/chat-window-context.js +1 -0
  350. package/dist/data/ai/chat-window-context.js.map +1 -1
  351. package/dist/data/ai/index.d.ts +2 -1
  352. package/dist/data/ai/index.d.ts.map +1 -1
  353. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  354. package/dist/data/cache-browser/adapter.d.ts +1 -1
  355. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  356. package/dist/data/cells/EntityCell.d.ts +1 -1
  357. package/dist/data/cells/tag-utils.d.ts +1 -1
  358. package/dist/data/chat/Chat.cjs +42 -46
  359. package/dist/data/chat/Chat.cjs.map +1 -1
  360. package/dist/data/chat/Chat.d.ts +16 -5
  361. package/dist/data/chat/Chat.d.ts.map +1 -1
  362. package/dist/data/chat/Chat.js +43 -47
  363. package/dist/data/chat/Chat.js.map +1 -1
  364. package/dist/data/chat/ModelSelector.d.ts +1 -1
  365. package/dist/data/chat/PromptInput.cjs +13 -0
  366. package/dist/data/chat/PromptInput.cjs.map +1 -1
  367. package/dist/data/chat/PromptInput.d.ts +8 -2
  368. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  369. package/dist/data/chat/PromptInput.js +14 -1
  370. package/dist/data/chat/PromptInput.js.map +1 -1
  371. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  372. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  373. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  374. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  375. package/dist/data/chat/tool-render/context.d.ts +1 -1
  376. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  377. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  378. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  379. package/dist/data/chat/types.d.ts +1 -1
  380. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  381. package/dist/data/data-table-server-filters.d.ts +1 -1
  382. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  383. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  384. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  385. package/dist/data/git/GitChangeList.d.ts +1 -1
  386. package/dist/data/icon-fallback.d.ts +1 -1
  387. package/dist/data/properties-context.cjs +6 -0
  388. package/dist/data/properties-context.cjs.map +1 -0
  389. package/dist/data/properties-context.d.ts +7 -0
  390. package/dist/data/properties-context.d.ts.map +1 -0
  391. package/dist/data/properties-context.js +6 -0
  392. package/dist/data/properties-context.js.map +1 -0
  393. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  394. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  395. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  396. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  397. package/dist/data/runtime/RuntimeBar.js +7 -3
  398. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  399. package/dist/data/task-copy.cjs +1 -1
  400. package/dist/data/task-copy.cjs.map +1 -1
  401. package/dist/data/task-copy.js +1 -1
  402. package/dist/data/task-copy.js.map +1 -1
  403. package/dist/data/task-resource-summary.cjs +30 -0
  404. package/dist/data/task-resource-summary.cjs.map +1 -0
  405. package/dist/data/task-resource-summary.d.ts +15 -0
  406. package/dist/data/task-resource-summary.d.ts.map +1 -0
  407. package/dist/data/task-resource-summary.js +30 -0
  408. package/dist/data/task-resource-summary.js.map +1 -0
  409. package/dist/data/task-status.cjs +8 -2
  410. package/dist/data/task-status.cjs.map +1 -1
  411. package/dist/data/task-status.d.ts +3 -0
  412. package/dist/data/task-status.d.ts.map +1 -1
  413. package/dist/data/task-status.js +8 -2
  414. package/dist/data/task-status.js.map +1 -1
  415. package/dist/data/task-work-progress.cjs +24 -0
  416. package/dist/data/task-work-progress.cjs.map +1 -0
  417. package/dist/data/task-work-progress.d.ts +21 -0
  418. package/dist/data/task-work-progress.d.ts.map +1 -0
  419. package/dist/data/task-work-progress.js +24 -0
  420. package/dist/data/task-work-progress.js.map +1 -0
  421. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  422. package/dist/data/test-runner/adapter.d.ts +1 -1
  423. package/dist/data/test-runner/context.d.ts +1 -1
  424. package/dist/data/use-data-table-virtual.cjs +73 -0
  425. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  426. package/dist/data/use-data-table-virtual.d.ts +40 -0
  427. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  428. package/dist/data/use-data-table-virtual.js +73 -0
  429. package/dist/data/use-data-table-virtual.js.map +1 -0
  430. package/dist/data/verification/VerificationResults.d.ts +1 -1
  431. package/dist/data/version-info.cjs +3 -3
  432. package/dist/data/version-info.js +3 -3
  433. package/dist/expressions/lang/attributes.cjs +56 -0
  434. package/dist/expressions/lang/attributes.cjs.map +1 -0
  435. package/dist/expressions/lang/attributes.d.ts +22 -0
  436. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  437. package/dist/expressions/lang/attributes.js +56 -0
  438. package/dist/expressions/lang/attributes.js.map +1 -0
  439. package/dist/expressions/lang/completion.cjs +164 -0
  440. package/dist/expressions/lang/completion.cjs.map +1 -0
  441. package/dist/expressions/lang/completion.d.ts +29 -0
  442. package/dist/expressions/lang/completion.d.ts.map +1 -0
  443. package/dist/expressions/lang/completion.js +164 -0
  444. package/dist/expressions/lang/completion.js.map +1 -0
  445. package/dist/expressions/lang/environment.cjs +115 -0
  446. package/dist/expressions/lang/environment.cjs.map +1 -0
  447. package/dist/expressions/lang/environment.d.ts +54 -0
  448. package/dist/expressions/lang/environment.d.ts.map +1 -0
  449. package/dist/expressions/lang/environment.js +115 -0
  450. package/dist/expressions/lang/environment.js.map +1 -0
  451. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  452. package/dist/expressions/lang/generated/index.cjs +18 -0
  453. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  454. package/dist/expressions/lang/generated/index.d.ts +9 -0
  455. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  456. package/dist/expressions/lang/generated/index.js +18 -0
  457. package/dist/expressions/lang/generated/index.js.map +1 -0
  458. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  459. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  460. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  461. package/dist/expressions/lang/generated/languages.json.js +18 -0
  462. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  463. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  464. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  465. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  466. package/dist/expressions/lang/generated/spec.json.js +12 -0
  467. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  468. package/dist/expressions/lang/hover.cjs +106 -0
  469. package/dist/expressions/lang/hover.cjs.map +1 -0
  470. package/dist/expressions/lang/hover.d.ts +54 -0
  471. package/dist/expressions/lang/hover.d.ts.map +1 -0
  472. package/dist/expressions/lang/hover.js +106 -0
  473. package/dist/expressions/lang/hover.js.map +1 -0
  474. package/dist/expressions/lang/index.cjs +87 -0
  475. package/dist/expressions/lang/index.cjs.map +1 -0
  476. package/dist/expressions/lang/index.d.ts +65 -0
  477. package/dist/expressions/lang/index.d.ts.map +1 -0
  478. package/dist/expressions/lang/index.js +90 -0
  479. package/dist/expressions/lang/index.js.map +1 -0
  480. package/dist/expressions/lang/merge.cjs +52 -0
  481. package/dist/expressions/lang/merge.cjs.map +1 -0
  482. package/dist/expressions/lang/merge.d.ts +12 -0
  483. package/dist/expressions/lang/merge.d.ts.map +1 -0
  484. package/dist/expressions/lang/merge.js +52 -0
  485. package/dist/expressions/lang/merge.js.map +1 -0
  486. package/dist/expressions/lang/prefix.cjs +91 -0
  487. package/dist/expressions/lang/prefix.cjs.map +1 -0
  488. package/dist/expressions/lang/prefix.d.ts +36 -0
  489. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  490. package/dist/expressions/lang/prefix.js +91 -0
  491. package/dist/expressions/lang/prefix.js.map +1 -0
  492. package/dist/expressions/lang/spec.d.ts +13 -0
  493. package/dist/expressions/lang/spec.d.ts.map +1 -0
  494. package/dist/expressions/lang/theme.cjs +97 -0
  495. package/dist/expressions/lang/theme.cjs.map +1 -0
  496. package/dist/expressions/lang/theme.d.ts +6 -0
  497. package/dist/expressions/lang/theme.d.ts.map +1 -0
  498. package/dist/expressions/lang/theme.js +97 -0
  499. package/dist/expressions/lang/theme.js.map +1 -0
  500. package/dist/expressions/lang/types.d.ts +81 -0
  501. package/dist/expressions/lang/types.d.ts.map +1 -0
  502. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  503. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  504. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  505. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  506. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  507. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  508. package/dist/expressions/playground/RunControls.cjs +51 -0
  509. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  510. package/dist/expressions/playground/RunControls.d.ts +7 -0
  511. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  512. package/dist/expressions/playground/RunControls.js +51 -0
  513. package/dist/expressions/playground/RunControls.js.map +1 -0
  514. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  515. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  516. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  517. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  518. package/dist/expressions/playground/VerticalSplit.js +109 -0
  519. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  520. package/dist/expressions/playground/api.cjs +49 -0
  521. package/dist/expressions/playground/api.cjs.map +1 -0
  522. package/dist/expressions/playground/api.d.ts +53 -0
  523. package/dist/expressions/playground/api.d.ts.map +1 -0
  524. package/dist/expressions/playground/api.js +49 -0
  525. package/dist/expressions/playground/api.js.map +1 -0
  526. package/dist/expressions/playground/languages.cjs +88 -0
  527. package/dist/expressions/playground/languages.cjs.map +1 -0
  528. package/dist/expressions/playground/languages.d.ts +43 -0
  529. package/dist/expressions/playground/languages.d.ts.map +1 -0
  530. package/dist/expressions/playground/languages.js +88 -0
  531. package/dist/expressions/playground/languages.js.map +1 -0
  532. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  533. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  534. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  535. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  536. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  537. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  538. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  539. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  540. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  541. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  542. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  543. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  544. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  545. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  546. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  547. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  548. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  549. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  550. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  551. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  552. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  553. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  554. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  555. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  556. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  557. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  558. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  559. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  560. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  561. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  562. package/dist/expressions/playground/runAction.cjs +12 -0
  563. package/dist/expressions/playground/runAction.cjs.map +1 -0
  564. package/dist/expressions/playground/runAction.d.ts +15 -0
  565. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  566. package/dist/expressions/playground/runAction.js +12 -0
  567. package/dist/expressions/playground/runAction.js.map +1 -0
  568. package/dist/expressions/playground/runShortcut.cjs +9 -0
  569. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  570. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  571. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  572. package/dist/expressions/playground/runShortcut.js +9 -0
  573. package/dist/expressions/playground/runShortcut.js.map +1 -0
  574. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  575. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  576. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  577. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  578. package/dist/expressions/playground/useEditorTheme.js +23 -0
  579. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  580. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  581. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  582. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  583. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  584. package/dist/expressions/playground/useEvaluator.js +72 -0
  585. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  586. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  587. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  588. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  589. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  590. package/dist/expressions/playground/useParsedInput.js +22 -0
  591. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  592. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  593. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  594. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  595. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  596. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  597. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  598. package/dist/expressions/playground.cjs +18 -0
  599. package/dist/expressions/playground.cjs.map +1 -0
  600. package/dist/expressions/playground.d.ts +18 -0
  601. package/dist/expressions/playground.d.ts.map +1 -0
  602. package/dist/expressions/playground.js +18 -0
  603. package/dist/expressions/playground.js.map +1 -0
  604. package/dist/expressions.cjs +28 -0
  605. package/dist/expressions.cjs.map +1 -0
  606. package/dist/expressions.d.ts +10 -0
  607. package/dist/expressions.d.ts.map +1 -0
  608. package/dist/expressions.js +28 -0
  609. package/dist/expressions.js.map +1 -0
  610. package/dist/hooks/density-provider.d.ts +1 -1
  611. package/dist/hooks/theme-provider.d.ts +1 -1
  612. package/dist/hooks/use-density.d.ts +1 -1
  613. package/dist/hooks/use-resource-clock.cjs +14 -0
  614. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  615. package/dist/hooks/use-resource-clock.d.ts +2 -0
  616. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  617. package/dist/hooks/use-resource-clock.js +14 -0
  618. package/dist/hooks/use-resource-clock.js.map +1 -0
  619. package/dist/hooks/use-task-run.cjs +12 -3
  620. package/dist/hooks/use-task-run.cjs.map +1 -1
  621. package/dist/hooks/use-task-run.d.ts.map +1 -1
  622. package/dist/hooks/use-task-run.js +12 -3
  623. package/dist/hooks/use-task-run.js.map +1 -1
  624. package/dist/hooks/use-theme.d.ts +1 -1
  625. package/dist/icons/registry.d.ts +1 -1
  626. package/dist/icons/types.d.ts +1 -1
  627. package/dist/layout/AppShell.d.ts +1 -1
  628. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  629. package/dist/layout/AppSidebar.d.ts +1 -1
  630. package/dist/layout/Panel.d.ts +1 -1
  631. package/dist/layout/PanelFrame.d.ts +1 -1
  632. package/dist/layout/Section.d.ts +1 -1
  633. package/dist/layout/SplitPane.d.ts +1 -1
  634. package/dist/layout/Tabs.d.ts +1 -1
  635. package/dist/layout/Workspace.d.ts +1 -1
  636. package/dist/layout/Workspace.model.d.ts +1 -1
  637. package/dist/lib/combobox-values.d.ts +1 -1
  638. package/dist/monaco/MonacoEditor.cjs +3 -3
  639. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  640. package/dist/monaco/MonacoEditor.js +2 -2
  641. package/dist/monaco/MonacoEditor.js.map +1 -1
  642. package/dist/monaco/types.d.ts +1 -1
  643. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  644. package/dist/overlay/CellActions.d.ts +1 -1
  645. package/dist/overlay/CommandPalette.d.ts +2 -2
  646. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  647. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  648. package/dist/overlay/DropdownMenu.d.ts +1 -1
  649. package/dist/overlay/HoverCard.d.ts +1 -1
  650. package/dist/overlay/Modal.d.ts +2 -2
  651. package/dist/overlay/Toast.d.ts +1 -1
  652. package/dist/overlay/TourCard.d.ts +1 -1
  653. package/dist/overlay/TourProvider.d.ts +1 -1
  654. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  655. package/dist/overlay/toast-context.d.ts +2 -2
  656. package/dist/overlay/tour-context.d.ts +1 -1
  657. package/dist/overlay/tour-types.d.ts +1 -1
  658. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  659. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  660. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  661. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  662. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  663. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  664. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  665. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  666. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  667. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  668. package/dist/rpc/EndpointList.d.ts +1 -1
  669. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  670. package/dist/rpc/OperationCatalog.d.ts +1 -1
  671. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  672. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  673. package/dist/rpc/OperationResultView.d.ts +1 -1
  674. package/dist/rpc/RouterProvider.d.ts +1 -1
  675. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  676. package/dist/rpc/formMetadata.d.ts +1 -1
  677. package/dist/rpc/router.d.ts +1 -1
  678. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  679. package/dist/styles.css +1 -1
  680. package/package.json +21 -2
@@ -1,17 +1,19 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../lib/utils.js";
3
2
  import { CodeBlock } from "../CodeBlock.js";
4
3
  import { KeyValueList } from "../KeyValueList.js";
5
4
  import { tokenTotal, costTotal } from "./session-cost.js";
6
5
  import { formatDate, durationLabel } from "./SessionInspector.model.js";
7
6
  import { SessionFilesPanel } from "./SessionInspector.files.js";
8
7
  import { SessionPlanPanel } from "./SessionInspector.plan.js";
8
+ import { SessionApprovalsPanel } from "./SessionInspector.approvals.js";
9
+ import { EmptyState, kv, muted } from "./SessionInspector.panel-parts.js";
9
10
  import { compactTokens, formatCost } from "../../lib/tokens.js";
10
11
  function SessionInspectorPanel({
11
12
  tab,
12
13
  detail,
13
14
  session,
14
- onPlanChange
15
+ onPlanChange,
16
+ onResolveApproval
15
17
  }) {
16
18
  switch (tab) {
17
19
  case "files":
@@ -25,7 +27,14 @@ function SessionInspectorPanel({
25
27
  }
26
28
  );
27
29
  case "approvals":
28
- return /* @__PURE__ */ jsx(ApprovalsPanel, { approvals: detail == null ? void 0 : detail.approvals });
30
+ return /* @__PURE__ */ jsx(
31
+ SessionApprovalsPanel,
32
+ {
33
+ approvals: detail == null ? void 0 : detail.approvals,
34
+ requests: detail == null ? void 0 : detail.requests,
35
+ ...onResolveApproval ? { onResolve: onResolveApproval } : {}
36
+ }
37
+ );
29
38
  case "costs":
30
39
  return /* @__PURE__ */ jsx(
31
40
  CostsPanel,
@@ -43,36 +52,6 @@ function SessionInspectorPanel({
43
52
  return null;
44
53
  }
45
54
  }
46
- function ApprovalsPanel({
47
- approvals
48
- }) {
49
- var _a, _b;
50
- if (!approvals || !approvals.approved && !approvals.denied && !((_a = approvals.denials) == null ? void 0 : _a.length)) {
51
- return /* @__PURE__ */ jsx(EmptyState, { children: "No approval metadata." });
52
- }
53
- return /* @__PURE__ */ jsxs("div", { className: "space-y-density-4", children: [
54
- /* @__PURE__ */ jsx(
55
- KeyValueList,
56
- {
57
- items: [
58
- kv("Approved", approvals.approved ?? 0),
59
- kv("Denied", approvals.denied ?? 0)
60
- ]
61
- }
62
- ),
63
- ((_b = approvals.denials) == null ? void 0 : _b.length) ? /* @__PURE__ */ jsx(
64
- SimpleList,
65
- {
66
- title: "Denials",
67
- rows: approvals.denials.map((denial, index) => ({
68
- key: denial.toolUseId || `${denial.tool}-${index}`,
69
- title: [denial.tool, denial.toolUseId].filter(Boolean).join(" "),
70
- detail: denial.reason
71
- }))
72
- }
73
- ) : null
74
- ] });
75
- }
76
55
  function CostsPanel({
77
56
  usage,
78
57
  cost,
@@ -178,50 +157,12 @@ function JsonSection({ title, value }) {
178
157
  )
179
158
  ] });
180
159
  }
181
- function SimpleList({
182
- title,
183
- rows
184
- }) {
185
- return /* @__PURE__ */ jsxs("section", { children: [
186
- /* @__PURE__ */ jsx("h3", { className: "mb-density-2 text-xs font-semibold uppercase text-muted-foreground", children: title }),
187
- /* @__PURE__ */ jsx("ul", { className: "divide-y divide-border rounded-md border border-border", children: rows.map((row) => /* @__PURE__ */ jsxs("li", { className: "px-density-3 py-density-2", children: [
188
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: row.title || row.key }),
189
- row.detail ? /* @__PURE__ */ jsx("div", { className: "mt-0.5 text-xs text-muted-foreground", children: row.detail }) : null
190
- ] }, row.key)) })
191
- ] });
192
- }
193
160
  function Th({ children }) {
194
161
  return /* @__PURE__ */ jsx("th", { className: "px-density-3 py-density-2 font-medium", children });
195
162
  }
196
163
  function Td({ children }) {
197
164
  return /* @__PURE__ */ jsx("td", { className: "px-density-3 py-density-2", children });
198
165
  }
199
- function EmptyState({
200
- children,
201
- compact = false
202
- }) {
203
- return /* @__PURE__ */ jsx(
204
- "div",
205
- {
206
- className: cn(
207
- "rounded-md border border-dashed border-border text-sm text-muted-foreground",
208
- compact ? "p-density-3" : "p-density-6 text-center"
209
- ),
210
- children
211
- }
212
- );
213
- }
214
- function kv(label, value) {
215
- return {
216
- key: String(label),
217
- label,
218
- value: value === void 0 || value === null || value === "" ? muted("-") : value,
219
- hidden: value === void 0 || value === null || value === ""
220
- };
221
- }
222
- function muted(value) {
223
- return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: value });
224
- }
225
166
  function jsonSource(value) {
226
167
  if (typeof value === "string") {
227
168
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.panels.js","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionApprovalStats,\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n}) {\n switch (tab) {\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return <ApprovalsPanel approvals={detail?.approvals} />;\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction ApprovalsPanel({\n approvals,\n}: {\n approvals: SessionApprovalStats | undefined;\n}) {\n if (\n !approvals ||\n (!approvals.approved && !approvals.denied && !approvals.denials?.length)\n ) {\n return <EmptyState>No approval metadata.</EmptyState>;\n }\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Approved\", approvals.approved ?? 0),\n kv(\"Denied\", approvals.denied ?? 0),\n ]}\n />\n {approvals.denials?.length ? (\n <SimpleList\n title=\"Denials\"\n rows={approvals.denials.map((denial, index) => ({\n key: denial.toolUseId || `${denial.tool}-${index}`,\n title: [denial.tool, denial.toolUseId].filter(Boolean).join(\" \"),\n detail: denial.reason,\n }))}\n />\n ) : null}\n </div>\n );\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0)\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction SimpleList({\n title,\n rows,\n}: {\n title: string;\n rows: Array<{ key: string; title?: ReactNode; detail?: ReactNode }>;\n}) {\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <ul className=\"divide-y divide-border rounded-md border border-border\">\n {rows.map((row) => (\n <li key={row.key} className=\"px-density-3 py-density-2\">\n <div className=\"text-sm font-medium\">{row.title || row.key}</div>\n {row.detail ? (\n <div className=\"mt-0.5 text-xs text-muted-foreground\">\n {row.detail}\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction EmptyState({\n children,\n compact = false,\n}: {\n children: ReactNode;\n compact?: boolean;\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border border-dashed border-border text-sm text-muted-foreground\",\n compact ? \"p-density-3\" : \"p-density-6 text-center\"\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction kv(\n label: ReactNode,\n value: ReactNode | undefined | null\n): KeyValueListItem {\n return {\n key: String(label),\n label,\n value:\n value === undefined || value === null || value === \"\"\n ? muted(\"-\")\n : value,\n hidden: value === undefined || value === null || value === \"\",\n };\n}\n\nfunction muted(value: ReactNode) {\n return <span className=\"text-muted-foreground\">{value}</span>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAwBO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,UAAQ,KAAA;AAAA,IACN,KAAK;AACH,aAAO,oBAAC,mBAAA,EAAkB,OAAO,iCAAQ,MAAA,CAAO;AAAA,IAClD,KAAK;AACH,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM,iCAAQ;AAAA,UACb,GAAI,eAAe,EAAE,UAAU,iBAAiB,CAAA;AAAA,QAAC;AAAA,MAAA;AAAA,IAGxD,KAAK;AACH,aAAO,oBAAC,gBAAA,EAAe,WAAW,iCAAQ,UAAA,CAAW;AAAA,IACvD,KAAK;AACH,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO,iCAAQ;AAAA,UACf,MAAM,iCAAQ;AAAA,UACd,WAAW,iCAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IAGzB,KAAK;AACH,aAAO,oBAAC,eAAA,EAAc,SAAS,OAAA,CAAQ;AAAA,IACzC,KAAK;AACH,aAAO,oBAAC,UAAA,EAAS,OAAO,UAAU,QAAA,CAAS;AAAA,IAC7C;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,SAAS,eAAe;AAAA,EACtB;AACF,GAEG;;AACD,MACE,CAAC,aACA,CAAC,UAAU,YAAY,CAAC,UAAU,UAAU,GAAC,eAAU,YAAV,mBAAmB,SACjE;AACA,WAAO,oBAAC,cAAW,UAAA,wBAAA,CAAqB;AAAA,EAC1C;AACA,SACE,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,GAAG,YAAY,UAAU,YAAY,CAAC;AAAA,UACtC,GAAG,UAAU,UAAU,UAAU,CAAC;AAAA,QAAA;AAAA,MACpC;AAAA,IAAA;AAAA,MAED,eAAU,YAAV,mBAAmB,UAClB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,MAAM,UAAU,QAAQ,IAAI,CAAC,QAAQ,WAAW;AAAA,UAC9C,KAAK,OAAO,aAAa,GAAG,OAAO,IAAI,IAAI,KAAK;AAAA,UAChD,OAAO,CAAC,OAAO,MAAM,OAAO,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,UAC/D,QAAQ,OAAO;AAAA,QAAA,EACf;AAAA,MAAA;AAAA,IAAA,IAEF;AAAA,EAAA,GACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,GAIG;;AACD,MAAI,CAAC,SAAS,CAAC,QAAQ,EAAC,uCAAW;AACjC,WAAO,oBAAC,cAAW,UAAA,oBAAA,CAAiB;AACtC,SACE,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,GAAG,UAAU,WAAW,SAAS,IAAI,CAAC;AAAA,UACtC,GAAG,QAAQ,UAAU,IAAI,CAAC;AAAA,UAC1B,GAAG,SAAS,eAAe,cAAS,SAAT,mBAAgB,WAAW,CAAC;AAAA,UACvD,GAAG,UAAU,eAAe,cAAS,SAAT,mBAAgB,YAAY,CAAC;AAAA,UACzD,GAAG,aAAa,eAAe,cAAS,SAAT,mBAAgB,eAAe,CAAC;AAAA,UAC/D,GAAG,cAAc,eAAe,cAAS,SAAT,mBAAgB,eAAe,CAAC;AAAA,UAChE,GAAG,eAAe,eAAe,cAAS,SAAT,mBAAgB,gBAAgB,CAAC;AAAA,QAAA;AAAA,MACpE;AAAA,IAAA;AAAA,KAED,uCAAW,UAAS,oBAAC,eAAA,EAAc,OAAO,WAAW,IAAK;AAAA,EAAA,GAC7D;AAEJ;AAEA,SAAS,cAAc,EAAE,SAAmC;AAC1D,6BACG,OAAA,EAAI,WAAU,iDACb,UAAA,qBAAC,SAAA,EAAM,WAAU,0DACf,UAAA;AAAA,IAAA,oBAAC,SAAA,EAAM,WAAU,6CACf,UAAA,qBAAC,MAAA,EACC,UAAA;AAAA,MAAA,oBAAC,MAAG,UAAA,QAAA,CAAK;AAAA,MACT,oBAAC,MAAG,UAAA,SAAA,CAAM;AAAA,MACV,oBAAC,MAAG,UAAA,QAAA,CAAK;AAAA,MACT,oBAAC,MAAG,UAAA,SAAA,CAAM;AAAA,MACV,oBAAC,MAAG,UAAA,QAAA,CAAK;AAAA,MACT,oBAAC,MAAG,UAAA,OAAA,CAAI;AAAA,IAAA,EAAA,CACV,EAAA,CACF;AAAA,IACA,oBAAC,SAAA,EAAM,WAAU,0BACd,UAAA,MAAM,IAAI,CAAC,OAAO,UACjB,qBAAC,MAAA,EACC,UAAA;AAAA,MAAA,oBAAC,IAAA,EAAI,UAAA,MAAM,SAAS,MAAM,SAAS,GAAE;AAAA,0BACpC,IAAA,EAAI,UAAA,cAAc,WAAW,KAAK,CAAC,GAAE;AAAA,MACtC,oBAAC,IAAA,EAAI,UAAA,cAAc,MAAM,WAAW,GAAE;AAAA,MACtC,oBAAC,IAAA,EAAI,UAAA,cAAc,MAAM,YAAY,GAAE;AAAA,0BACtC,IAAA,EACE,UAAA;AAAA,SACE,MAAM,mBAAmB,MAAM,MAAM,oBAAoB;AAAA,MAAA,GAE9D;AAAA,MACA,oBAAC,IAAA,EAAI,UAAA,UAAU,KAAK,EAAA,CAAE;AAAA,IAAA,KAVf,GAAG,MAAM,SAAS,OAAO,IAAI,KAAK,EAW3C,CACD,EAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AACF,GAEG;AACD,MAAI,CAAC,QAAS,QAAO,oBAAC,cAAW,UAAA,gCAA4B;AAC7D,QAAM,WAA+B;AAAA,IACnC,GAAG,MAAM,QAAQ,EAAE;AAAA,IACnB,GAAG,UAAU,QAAQ,MAAM;AAAA,IAC3B,GAAG,WAAW,QAAQ,OAAO;AAAA,IAC7B,GAAG,OAAO,QAAQ,GAAG;AAAA,IACrB,GAAG,WAAW,QAAQ,WAAW;AAAA,IACjC,GAAG,SAAS,QAAQ,KAAK;AAAA,IACzB,GAAG,YAAY,QAAQ,QAAQ;AAAA,IAC/B,GAAG,QAAQ,QAAQ,SAAS;AAAA,IAC5B,GAAG,UAAU,QAAQ,eAAe;AAAA,IACpC,GAAG,WAAW,QAAQ,OAAO;AAAA,IAC7B,GAAG,OAAO,SAAS,QAAQ,GAAG,CAAC;AAAA,IAC/B,GAAG,WAAW,WAAW,QAAQ,SAAS,CAAC;AAAA,IAC3C,GAAG,SAAS,WAAW,QAAQ,OAAO,CAAC;AAAA,IACvC,GAAG,YAAY,cAAc,QAAQ,WAAW,QAAQ,OAAO,CAAC;AAAA,IAChE,GAAG,QAAQ,UAAU,QAAQ,IAAI,CAAC;AAAA,IAClC,GAAG,UAAU,YAAY,QAAQ,MAAM,CAAC;AAAA,EAAA;AAE1C,SACE,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA,oBAAC,cAAA,EAAa,OAAO,SAAA,CAAU;AAAA,wBAC9B,aAAA,EAAY,OAAM,gBAAe,OAAO,QAAQ,cAAc;AAAA,wBAC9D,aAAA,EAAY,OAAM,WAAU,OAAO,QAAQ,SAAS;AAAA,wBACpD,aAAA,EAAY,OAAM,UAAS,OAAO,QAAQ,QAAQ;AAAA,wBAClD,aAAA,EAAY,OAAM,UAAS,OAAO,QAAQ,QAAQ;AAAA,wBAClD,aAAA,EAAY,OAAM,UAAS,OAAO,QAAQ,OAAA,CAAQ;AAAA,EAAA,GACrD;AAEJ;AAEA,SAAS,SAAS,EAAE,SAA6B;AAC/C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,QAAQ,WAAW,KAAK;AAAA,MACxB,UAAQ;AAAA,MACR,sBAAsB;AAAA,IAAA;AAAA,EAAA;AAG5B;AAEA,SAAS,YAAY,EAAE,OAAO,SAA4C;AACxE,MACE,UAAU,UACV,UAAU,QACT,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAE1C,WAAO;AACT,8BACG,WAAA,EACC,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAG,WAAU,sEACX,UAAA,OACH;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,QAAQ,WAAW,KAAK;AAAA,QACxB,sBAAsB;AAAA,MAAA;AAAA,IAAA;AAAA,EACxB,GACF;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AACF,GAGG;AACD,8BACG,WAAA,EACC,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAG,WAAU,sEACX,UAAA,OACH;AAAA,IACA,oBAAC,MAAA,EAAG,WAAU,0DACX,UAAA,KAAK,IAAI,CAAC,QACT,qBAAC,MAAA,EAAiB,WAAU,6BAC1B,UAAA;AAAA,MAAA,oBAAC,SAAI,WAAU,uBAAuB,UAAA,IAAI,SAAS,IAAI,KAAI;AAAA,MAC1D,IAAI,SACH,oBAAC,OAAA,EAAI,WAAU,wCACZ,UAAA,IAAI,QACP,IACE;AAAA,IAAA,KANG,IAAI,GAOb,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AAEA,SAAS,GAAG,EAAE,YAAqC;AACjD,SAAO,oBAAC,MAAA,EAAG,WAAU,yCAAyC,SAAA,CAAS;AACzE;AAEA,SAAS,GAAG,EAAE,YAAqC;AACjD,SAAO,oBAAC,MAAA,EAAG,WAAU,6BAA6B,SAAA,CAAS;AAC7D;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,UAAU;AACZ,GAGG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UAAU,gBAAgB;AAAA,MAAA;AAAA,MAG3B;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAAS,GACP,OACA,OACkB;AAClB,SAAO;AAAA,IACL,KAAK,OAAO,KAAK;AAAA,IACjB;AAAA,IACA,OACE,UAAU,UAAa,UAAU,QAAQ,UAAU,KAC/C,MAAM,GAAG,IACT;AAAA,IACN,QAAQ,UAAU,UAAa,UAAU,QAAQ,UAAU;AAAA,EAAA;AAE/D;AAEA,SAAS,MAAM,OAAkB;AAC/B,SAAO,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,OAAM;AACxD;AAEA,SAAS,WAAW,OAAgB;AAClC,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI;AACF,aAAO,KAAK,UAAU,KAAK,MAAM,KAAK,GAAG,MAAM,CAAC;AAAA,IAClD,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,WAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,EACtC,QAAQ;AACN,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;AAEA,SAAS,WAAW,OAAoC;AACtD,QAAM,QAAQ,WAAW,KAAK;AAC9B,SAAO,QAAQ,GAAG,cAAc,KAAK,CAAC,YAAY,MAAM,GAAG;AAC7D;AAEA,SAAS,UAAU,MAAoB;AACrC,QAAM,QAAQ,UAAU,IAAI;AAC5B,SAAO,QAAQ,WAAW,KAAK,IAAI,MAAM,GAAG;AAC9C;AAEA,SAAS,SAAS,KAKf;AACD,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,CAAC,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,OAAO,SAAS,EAAE,EACjE,OAAO,OAAO,EACd,KAAK,GAAG;AACb;AAEA,SAAS,UAAU,MAA2B;AAC5C,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO;AAAA,IACL,KAAK,WAAW,KAAK,SAAS,WAAW;AAAA,IACzC,KAAK,MAAM,OAAO,KAAK,GAAG,KAAK;AAAA,IAC/B,KAAK;AAAA,EAAA,EAEJ,OAAO,OAAO,EACd,KAAK,KAAK;AACf;AAEA,SAAS,YAAY,QAA0B;AAC7C,UACE,iCAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,KAAK,UAAS;AAEzE;"}
1
+ {"version":3,"file":"SessionInspector.panels.js","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport {\n SessionApprovalsPanel,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals\";\nimport { EmptyState, kv, muted } from \"./SessionInspector.panel-parts\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n onResolveApproval,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n onResolveApproval?: ApprovalResolveHandler;\n}) {\n switch (tab) {\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return (\n <SessionApprovalsPanel\n approvals={detail?.approvals}\n requests={detail?.requests}\n {...(onResolveApproval ? { onResolve: onResolveApproval } : {})}\n />\n );\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0)\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { Density } from '../../hooks/use-density';
3
3
  import { SessionEvent, SessionInput } from './SessionViewer.model';
4
4
  import { SessionThemeOverride } from './SessionViewerMenu';
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { SessionEvent } from './SessionViewer.model';
3
3
  import { SessionEventGroup } from './SessionViewer.grouping';
4
4
  import { SessionToolDecision } from './SessionViewer';
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { SessionQuestion, ToolDiff, ToolParam } from './SessionViewer.input';
3
3
  export declare function QuestionCard({ question, index, }: {
4
4
  question: SessionQuestion;
@@ -147,8 +147,30 @@ export interface SessionDenial {
147
147
  export interface SessionApprovalStats {
148
148
  approved?: number;
149
149
  denied?: number;
150
+ pending?: number;
151
+ cancelled?: number;
152
+ expired?: number;
150
153
  denials?: SessionDenial[];
151
154
  }
155
+ /** One pending or resolved tool-approval gate on a prompt run — the row shape
156
+ * `session.requests[]` carries (captain pkg/session Request, kind
157
+ * "tool_approval"). A `pending` row with no matching transcript part is the
158
+ * only signal an approval brokered outside the in-process chat (e.g. by an
159
+ * external dashboard) ever gets — panels must key off this array directly,
160
+ * never off transcript parts. */
161
+ export interface SessionApprovalRequest {
162
+ id: string;
163
+ promptRunId?: string;
164
+ toolCallId?: string;
165
+ kind: string;
166
+ state: "pending" | "approved" | "denied" | "cancelled" | "expired";
167
+ tool: string;
168
+ input?: unknown;
169
+ requestedBy?: string;
170
+ createdAt?: string;
171
+ expiresAt?: string;
172
+ resolvedAt?: string;
173
+ }
152
174
  export interface SessionHealth {
153
175
  kind: string;
154
176
  severity: string;
@@ -196,6 +218,7 @@ export interface UnifiedSessionInput {
196
218
  files?: SessionChangedFiles;
197
219
  plan?: SessionPlan;
198
220
  approvals?: SessionApprovalStats;
221
+ requests?: SessionApprovalRequest[];
199
222
  health?: SessionHealth[];
200
223
  live?: SessionLiveProcess;
201
224
  prompt?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionViewer.unified.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.unified.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionViewer.unified.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.unified.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  export declare function Footer({ status, saveLabel, onSave, onCancel, }: {
3
3
  status: ReactNode;
4
4
  saveLabel: string;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  export declare function Rail({ eyebrow, title, target, }: {
3
3
  eyebrow: ReactNode;
4
4
  title: ReactNode;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { SpecSectionMeta } from './types';
3
3
  export declare function SectionCard({ meta, number, domId, sectionRef, advanced, advancedHint, defaultCollapsed, children, className, }: {
4
4
  meta: SpecSectionMeta;
@@ -18,7 +18,8 @@ function VerifySection({
18
18
  onChange,
19
19
  models,
20
20
  families,
21
- secretSelector
21
+ secretSelector,
22
+ fixtureSchemas
22
23
  }) {
23
24
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
24
25
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-density-3", children: [
@@ -28,6 +29,7 @@ function VerifySection({
28
29
  value: ((_b = (_a = value.workflow) == null ? void 0 : _a.verify) == null ? void 0 : _b.fixture) ?? "",
29
30
  onChange: (fixture) => onChange(update.withVerify(value, { fixture })),
30
31
  size: "sm",
32
+ ...fixtureSchemas ? { schemas: fixtureSchemas } : {},
31
33
  placeholder: "Write the verify fixture markdown...",
32
34
  frontmatterEditor: {
33
35
  mode: "verification",
@@ -1 +1 @@
1
- {"version":3,"file":"VerifySection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":["SPEC_VERIFY_SCOPES","jsxs","jsx","SpecField","FixtureEditor","withVerify","SegmentedControl","NumberField","UiRepeat","ListField","UiTerminal","UiChatDots"],"mappings":";;;;;;;;;;;AAcA,MAAM,gBACJA,wBAAAA,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,SACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,kBACf,UAAAD,2BAAAA;AAAAA,MAACE,cAAAA;AAAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAASC,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACAJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,SACf,UAAAD,2BAAAA;AAAAA,QAACI,iBAAAA;AAAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAASD,OAAAA,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACAH,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACb,UAAAA,2BAAAA;AAAAA,QAACK,OAAAA;AAAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAASF,OAAAA,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAMG,SAAAA;AAAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACAN,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAASJ,OAAAA,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAMK,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,IAERR,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAASJ,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAMM,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;;"}
1
+ {"version":3,"file":"VerifySection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n fixtureSchemas,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n {...(fixtureSchemas ? { schemas: fixtureSchemas } : {})}\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":["SPEC_VERIFY_SCOPES","jsxs","jsx","SpecField","FixtureEditor","withVerify","SegmentedControl","NumberField","UiRepeat","ListField","UiTerminal","UiChatDots"],"mappings":";;;;;;;;;;;AAeA,MAAM,gBACJA,wBAAAA,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;;AACD,SACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,kBACf,UAAAD,2BAAAA;AAAAA,MAACE,cAAAA;AAAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAASC,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACJ,GAAI,iBAAiB,EAAE,SAAS,eAAA,IAAmB,CAAA;AAAA,QACpD,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACAJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,SACf,UAAAD,2BAAAA;AAAAA,QAACI,iBAAAA;AAAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAASD,OAAAA,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACAH,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACb,UAAAA,2BAAAA;AAAAA,QAACK,OAAAA;AAAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAASF,OAAAA,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAMG,SAAAA;AAAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACAN,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAASJ,OAAAA,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAMK,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,IAERR,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAASJ,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAMM,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;;"}
@@ -1,12 +1,14 @@
1
+ import { FixtureFenceSchemas } from '../../FixtureEditor/types';
1
2
  import { ChatModel } from '../../chat/types';
2
3
  import { SpecRuntimeFamily } from '../../runtime/runtime-mode';
3
4
  import { AISpecRuntimeValue } from '../SpecRuntimeEditor.model';
4
5
  import { SpecRuntimeSecretSelectorConfig } from './types';
5
- export declare function VerifySection({ value, onChange, models, families, secretSelector, }: {
6
+ export declare function VerifySection({ value, onChange, models, families, secretSelector, fixtureSchemas, }: {
6
7
  value: AISpecRuntimeValue;
7
8
  onChange: (value: AISpecRuntimeValue) => void;
8
9
  models?: ChatModel[] | undefined;
9
10
  families?: SpecRuntimeFamily[] | undefined;
10
11
  secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;
12
+ fixtureSchemas?: FixtureFenceSchemas | undefined;
11
13
  }): import("react").JSX.Element;
12
14
  //# sourceMappingURL=VerifySection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerifySection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAS/D,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC9D,+BAyDA"}
1
+ {"version":3,"file":"VerifySection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAS/D,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,cAAc,EACd,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;IAC7D,cAAc,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAClD,+BA0DA"}
@@ -16,7 +16,8 @@ function VerifySection({
16
16
  onChange,
17
17
  models,
18
18
  families,
19
- secretSelector
19
+ secretSelector,
20
+ fixtureSchemas
20
21
  }) {
21
22
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
22
23
  return /* @__PURE__ */ jsxs("div", { className: "grid gap-density-3", children: [
@@ -26,6 +27,7 @@ function VerifySection({
26
27
  value: ((_b = (_a = value.workflow) == null ? void 0 : _a.verify) == null ? void 0 : _b.fixture) ?? "",
27
28
  onChange: (fixture) => onChange(withVerify(value, { fixture })),
28
29
  size: "sm",
30
+ ...fixtureSchemas ? { schemas: fixtureSchemas } : {},
29
31
  placeholder: "Write the verify fixture markdown...",
30
32
  frontmatterEditor: {
31
33
  mode: "verification",
@@ -1 +1 @@
1
- {"version":3,"file":"VerifySection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAcA,MAAM,gBACJ,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,WAAA,EAAU,OAAM,kBACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAA,oBAAC,WAAA,EAAU,OAAM,SACf,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAAS,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACA,oBAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAAS,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAAS,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAER;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;"}
1
+ {"version":3,"file":"VerifySection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n fixtureSchemas,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n {...(fixtureSchemas ? { schemas: fixtureSchemas } : {})}\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAeA,MAAM,gBACJ,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,WAAA,EAAU,OAAM,kBACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACJ,GAAI,iBAAiB,EAAE,SAAS,eAAA,IAAmB,CAAA;AAAA,QACpD,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAA,oBAAC,WAAA,EAAU,OAAM,SACf,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAAS,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACA,oBAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAAS,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAAS,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAER;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { ComboboxOption } from '../../../components/Combobox';
3
3
  import { StaticIconComponent } from '../../Icon';
4
4
  export declare function SpecField({ label, hint, children, composite, }: {
@@ -40,6 +40,7 @@ function SpecRuntimeEditor({
40
40
  permissionCatalog,
41
41
  secretSelector,
42
42
  cliOptions,
43
+ fixtureSchemas,
43
44
  sandboxCatalog,
44
45
  sandboxCreate,
45
46
  sections: sectionFilter,
@@ -197,7 +198,8 @@ function SpecRuntimeEditor({
197
198
  onChange: commitChange,
198
199
  models,
199
200
  families: runtimeFamilies,
200
- ...secretSelector ? { secretSelector } : {}
201
+ ...secretSelector ? { secretSelector } : {},
202
+ ...fixtureSchemas ? { fixtureSchemas } : {}
201
203
  }
202
204
  );
203
205
  case "commit":
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"sourcesContent":["import { useId, useMemo, type ReactNode } from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n AISpecRuntimePermissionCatalog,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport { CLIArgsSection, type SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nimport { CommitSection } from \"./CommitSection\";\nimport { EnvironmentAdvanced, EnvironmentSection } from \"./EnvironmentSection\";\nimport { Footer } from \"./Footer\";\nimport { ModelContextAdvanced } from \"./ModelContextAdvanced\";\nimport { ModelAdvanced, ModelSection } from \"./ModelSection\";\nimport { PermissionsAdvanced, PermissionsSection } from \"./PermissionsSection\";\nimport { PromptAdvanced, PromptSection } from \"./PromptSection\";\nimport { Rail } from \"./Rail\";\nimport { SandboxSection } from \"./SandboxSection\";\nimport { SectionCard } from \"./SectionCard\";\nimport { VerifySection } from \"./VerifySection\";\nimport { WorkspaceSection } from \"./WorkspaceSection\";\nimport {\n buildPermissionCatalog,\n specPermissionEntries,\n withAddedPermission,\n withPermissionEntries,\n} from \"./permissions-model\";\nimport { summarizeTarget } from \"./summaries\";\nimport {\n SPEC_RUNTIME_SECTIONS,\n type SpecRuntimeSandboxCatalog,\n type SpecRuntimeSecretSelectorConfig,\n type SpecSectionId,\n} from \"./types\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n firstMode,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { familyForModel } from \"../../../lib/runtime-family\";\nimport {\n runtimeFieldSection,\n runtimeFieldSupport,\n runtimeSchemaPropertyAtPath,\n SUPPORT_ALL_RUNTIME_FIELDS,\n} from \"../../runtime/runtime-field-support\";\nimport { useScrollSpy } from \"./use-scrollspy\";\n\nexport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nexport type {\n SpecRuntimeSandboxAgent,\n SpecRuntimeSandboxBackend,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSandboxKind,\n SpecRuntimeSecretSelectorConfig,\n} from \"./types\";\nexport type { SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nexport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n type SpecRuntimeModeOption,\n} from \"../../runtime/runtime-mode\";\n\nexport type SpecRuntimeEditorProps = {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n /** Provider families for the two-axis Family → Mode picker in the model section. */\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode used to validate posture when this editable layer inherits it. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family. */\n effectiveModel?: string | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n /** Schema for the runtime's extra CLI args; enables the CLI flags section. */\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Sandbox adapter catalog; enables the Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n /** Optional ordered section selection for embedded editors that only need part of the runtime spec. */\n sections?: readonly SpecSectionId[] | undefined;\n /** Presents prompt.user as a complete .prompt document body. */\n promptVariant?: \"runtime\" | \"document\" | undefined;\n /** Disables value controls while preserving section navigation and disclosures. */\n readOnly?: boolean | undefined;\n className?: string | undefined;\n title?: ReactNode | undefined;\n eyebrow?: ReactNode | undefined;\n /** Hide the editor rail when a host modal already supplies the context. */\n showHeader?: boolean | undefined;\n /** Content rendered before the first section inside the editor column. */\n beforeSections?: ReactNode | undefined;\n /** Sections that should start collapsed in embedded contexts. */\n defaultCollapsedSections?: readonly SpecSectionId[] | undefined;\n /** Restrict task-owned fields when editing a reusable preset fragment. */\n variant?: \"run\" | \"preset\" | undefined;\n /** Renders the sticky footer's save action when set. */\n onSave?: (() => void) | undefined;\n /** Renders the sticky footer's cancel action when set. */\n onCancel?: (() => void) | undefined;\n saveLabel?: string | undefined;\n footerStatus?: ReactNode | undefined;\n};\n\nconst ADVANCED_HINTS: Partial<Record<SpecSectionId, string>> = {\n model: \"fallbacks, session, caching, memory, skills\",\n prompt: \"schema\",\n permissions: \"tools, MCP, plugins\",\n environment: \"dotenv files\",\n};\n\n// Full-page runtime spec editor (design \"Runtime Spec Editor v2\"): a live\n// summary rail with scrollspy nav, preset quick-starts, and stacked numbered\n// sections. Container-responsive so it works embedded in a modal or standalone.\nexport function SpecRuntimeEditor({\n value,\n onChange,\n models = [],\n families,\n effectiveMode,\n effectiveModel,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n sandboxCatalog,\n sandboxCreate,\n sections: sectionFilter,\n promptVariant = \"runtime\",\n readOnly = false,\n className,\n title = \"Runtime Spec\",\n eyebrow = \"Agent configuration\",\n showHeader = true,\n beforeSections,\n defaultCollapsedSections,\n variant = \"run\",\n onSave,\n onCancel,\n saveLabel = \"Save & run\",\n footerStatus = \"Ready to run\",\n}: SpecRuntimeEditorProps) {\n const idPrefix = useId();\n const commitChange: (next: AISpecRuntimeValue) => void = readOnly\n ? () => undefined\n : onChange;\n const catalog = useMemo(\n () => buildPermissionCatalog(permissionCatalog, tools),\n [permissionCatalog, tools],\n );\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const runtimeError =\n runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id);\n const selectedRuntime = runtimeError\n ? undefined\n : modeOptionFor(runtimeFamilies, specMode, selectedFamily?.id);\n const supports = selectedRuntime\n ? runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id)\n : SUPPORT_ALL_RUNTIME_FIELDS;\n const runtimeSchema = selectedRuntime?.schema;\n const hasSandboxSection =\n runtimeSchema != null &&\n runtimeSchemaPropertyAtPath(runtimeSchema, \"sandbox.mode\") != null;\n const entries = useMemo(\n () => specPermissionEntries(value, catalog),\n [value, catalog],\n );\n const skillsSection = selectedRuntime\n ? (runtimeFieldSection(\n runtimeFamilies,\n specMode,\n \"permissions.skills\",\n selectedFamily?.id,\n ) ?? \"model\")\n : \"model\";\n const modelSkillEntries = entries.filter(\n (entry) =>\n entry.domain === \"skills\" &&\n skillsSection === \"model\" &&\n supports(\"permissions.skills\"),\n );\n const permissionEntries = entries.filter(\n (entry) =>\n (entry.domain !== \"skills\" || skillsSection === \"permissions\") &&\n supports(`permissions.${entry.domain}`),\n );\n const hasPermissionSection =\n (skillsSection === \"permissions\" && supports(\"permissions.skills\")) ||\n ([\"tools\", \"mcp\", \"plugins\"] as const).some((domain) =>\n supports(`permissions.${domain}`),\n );\n\n const requestedSections = useMemo(\n () =>\n sectionFilter\n ? sectionFilter.map((id) => {\n const section = SPEC_RUNTIME_SECTIONS.find(\n (candidate) => candidate.id === id,\n );\n if (!section)\n throw new Error(\n `unknown runtime editor section ${JSON.stringify(id)}`,\n );\n return section;\n })\n : SPEC_RUNTIME_SECTIONS,\n [sectionFilter],\n );\n // Sandbox modes come from the selected runtime schema. The adapter catalog is\n // optional metadata for configured Docker and Git Agent backends.\n const sections = requestedSections.filter(\n (section) =>\n (section.id !== \"cli\" || (cliOptions && supports(\"cliArgs\"))) &&\n (section.id !== \"sandbox\" || hasSandboxSection) &&\n (section.id !== \"permissions\" || hasPermissionSection),\n );\n const collapsedSections = useMemo(\n () => new Set(defaultCollapsedSections ?? []),\n [defaultCollapsedSections],\n );\n const domId = (id: SpecSectionId) => `${idPrefix}-${id}`;\n const { sectionRef } = useScrollSpy(\n sections.map((section) => domId(section.id)),\n );\n\n const applyEntries = (\n applied: Parameters<typeof withPermissionEntries>[1],\n mode: Parameters<typeof withPermissionEntries>[2],\n ) => commitChange(withPermissionEntries(value, applied, mode));\n const addEntry = (\n domain: Parameters<typeof withAddedPermission>[1],\n id: string,\n ) => {\n const next = withAddedPermission(value, domain, id);\n if (next) commitChange(next);\n };\n\n const sectionBody = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <ModelSection\n value={value}\n onChange={commitChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n families={runtimeFamilies}\n />\n );\n case \"prompt\":\n return (\n <PromptSection\n value={value}\n onChange={commitChange}\n supports={supports}\n variant={promptVariant}\n />\n );\n case \"workspace\":\n return (\n <WorkspaceSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n variant={variant}\n supports={supports}\n />\n );\n case \"sandbox\":\n return runtimeSchema ? (\n <SandboxSection\n value={value}\n onChange={commitChange}\n schema={runtimeSchema}\n {...(sandboxCatalog ? { catalog: sandboxCatalog } : {})}\n families={runtimeFamilies}\n {...(sandboxCreate ? { createConfig: sandboxCreate } : {})}\n />\n ) : null;\n case \"permissions\":\n return supports(\"permissions\") ? (\n <PermissionsSection\n value={value}\n onChange={commitChange}\n entries={permissionEntries}\n />\n ) : null;\n case \"environment\":\n return (\n <EnvironmentSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n />\n );\n case \"verify\":\n return (\n <VerifySection\n value={value}\n onChange={commitChange}\n models={models}\n families={runtimeFamilies}\n {...(secretSelector ? { secretSelector } : {})}\n />\n );\n case \"commit\":\n return <CommitSection value={value} onChange={commitChange} />;\n case \"cli\":\n return cliOptions ? (\n <CLIArgsSection\n value={value}\n onChange={commitChange}\n cliOptions={cliOptions}\n />\n ) : null;\n }\n };\n\n const sectionAdvanced = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <div className=\"grid gap-density-3\">\n <ModelAdvanced\n value={value}\n onChange={commitChange}\n models={models}\n supports={supports}\n families={runtimeFamilies}\n />\n <ModelContextAdvanced\n value={value}\n onChange={commitChange}\n entries={modelSkillEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n showSkills={skillsSection === \"model\"}\n supports={supports}\n />\n </div>\n );\n case \"prompt\":\n return supports(\"prompt.schema\") ? (\n <PromptAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n case \"permissions\":\n return (\n <PermissionsAdvanced\n entries={permissionEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n includeSkills={skillsSection === \"permissions\"}\n supports={supports}\n />\n );\n case \"environment\":\n return variant === \"run\" ? (\n <EnvironmentAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n default:\n return undefined;\n }\n };\n\n const valueControls = (content: ReactNode) =>\n readOnly && content ? (\n <fieldset disabled className=\"m-0 min-w-0 border-0 p-0\">\n {content}\n </fieldset>\n ) : (\n content\n );\n\n return (\n <div className={cn(\"@container\", className)}>\n <div className=\"mx-auto max-w-[820px] px-density-4 py-density-4\">\n {showHeader && (\n <Rail\n eyebrow={eyebrow}\n title={title}\n target={summarizeTarget(value)}\n />\n )}\n {runtimeError ? (\n <div\n role=\"alert\"\n className=\"mb-density-3 rounded-md border border-destructive/40 bg-destructive/10 px-density-3 py-density-2 text-sm text-destructive\"\n >\n {runtimeError} Select a valid mode below or switch to Raw to repair\n the prompt source.\n </div>\n ) : null}\n {beforeSections}\n {sections.map((section, index) => (\n <SectionCard\n key={section.id}\n meta={\n section.id === \"prompt\" && promptVariant === \"document\"\n ? {\n ...section,\n hint: \"The .prompt document body and its explicit system fields.\",\n }\n : section\n }\n number={String(index + 1).padStart(2, \"0\")}\n domId={domId(section.id)}\n sectionRef={sectionRef(domId(section.id))}\n advanced={valueControls(sectionAdvanced(section.id))}\n advancedHint={ADVANCED_HINTS[section.id]}\n defaultCollapsed={collapsedSections.has(section.id)}\n >\n {valueControls(sectionBody(section.id))}\n </SectionCard>\n ))}\n </div>\n {(onSave || onCancel) && (\n <Footer\n status={footerStatus}\n saveLabel={saveLabel}\n onSave={onSave}\n onCancel={onCancel}\n />\n )}\n </div>\n );\n}\n"],"names":["useId","useMemo","buildPermissionCatalog","SPEC_RUNTIME_FAMILIES","familyForModel","runtimeModeFromModel","firstMode","runtimeModelError","runtimeModeError","modeOptionFor","runtimeFieldSupport","SUPPORT_ALL_RUNTIME_FIELDS","runtimeSchemaPropertyAtPath","specPermissionEntries","runtimeFieldSection","SPEC_RUNTIME_SECTIONS","useScrollSpy","withPermissionEntries","withAddedPermission","jsx","ModelSection","PromptSection","WorkspaceSection","SandboxSection","PermissionsSection","EnvironmentSection","VerifySection","CommitSection","CLIArgsSection","jsxs","ModelAdvanced","ModelContextAdvanced","PromptAdvanced","PermissionsAdvanced","EnvironmentAdvanced","cn","Rail","summarizeTarget","SectionCard","Footer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"sourcesContent":["import { useId, useMemo, type ReactNode } from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport type {\n AISpecRuntimePermissionCatalog,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport { CLIArgsSection, type SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nimport { CommitSection } from \"./CommitSection\";\nimport { EnvironmentAdvanced, EnvironmentSection } from \"./EnvironmentSection\";\nimport { Footer } from \"./Footer\";\nimport { ModelContextAdvanced } from \"./ModelContextAdvanced\";\nimport { ModelAdvanced, ModelSection } from \"./ModelSection\";\nimport { PermissionsAdvanced, PermissionsSection } from \"./PermissionsSection\";\nimport { PromptAdvanced, PromptSection } from \"./PromptSection\";\nimport { Rail } from \"./Rail\";\nimport { SandboxSection } from \"./SandboxSection\";\nimport { SectionCard } from \"./SectionCard\";\nimport { VerifySection } from \"./VerifySection\";\nimport { WorkspaceSection } from \"./WorkspaceSection\";\nimport {\n buildPermissionCatalog,\n specPermissionEntries,\n withAddedPermission,\n withPermissionEntries,\n} from \"./permissions-model\";\nimport { summarizeTarget } from \"./summaries\";\nimport {\n SPEC_RUNTIME_SECTIONS,\n type SpecRuntimeSandboxCatalog,\n type SpecRuntimeSecretSelectorConfig,\n type SpecSectionId,\n} from \"./types\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n firstMode,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { familyForModel } from \"../../../lib/runtime-family\";\nimport {\n runtimeFieldSection,\n runtimeFieldSupport,\n runtimeSchemaPropertyAtPath,\n SUPPORT_ALL_RUNTIME_FIELDS,\n} from \"../../runtime/runtime-field-support\";\nimport { useScrollSpy } from \"./use-scrollspy\";\n\nexport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nexport type {\n SpecRuntimeSandboxAgent,\n SpecRuntimeSandboxBackend,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSandboxKind,\n SpecRuntimeSecretSelectorConfig,\n} from \"./types\";\nexport type { SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nexport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n type SpecRuntimeModeOption,\n} from \"../../runtime/runtime-mode\";\n\nexport type SpecRuntimeEditorProps = {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n /** Provider families for the two-axis Family → Mode picker in the model section. */\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode used to validate posture when this editable layer inherits it. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family. */\n effectiveModel?: string | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n /** Schema for the runtime's extra CLI args; enables the CLI flags section. */\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 Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n /** Optional ordered section selection for embedded editors that only need part of the runtime spec. */\n sections?: readonly SpecSectionId[] | undefined;\n /** Presents prompt.user as a complete .prompt document body. */\n promptVariant?: \"runtime\" | \"document\" | undefined;\n /** Disables value controls while preserving section navigation and disclosures. */\n readOnly?: boolean | undefined;\n className?: string | undefined;\n title?: ReactNode | undefined;\n eyebrow?: ReactNode | undefined;\n /** Hide the editor rail when a host modal already supplies the context. */\n showHeader?: boolean | undefined;\n /** Content rendered before the first section inside the editor column. */\n beforeSections?: ReactNode | undefined;\n /** Sections that should start collapsed in embedded contexts. */\n defaultCollapsedSections?: readonly SpecSectionId[] | undefined;\n /** Restrict task-owned fields when editing a reusable preset fragment. */\n variant?: \"run\" | \"preset\" | undefined;\n /** Renders the sticky footer's save action when set. */\n onSave?: (() => void) | undefined;\n /** Renders the sticky footer's cancel action when set. */\n onCancel?: (() => void) | undefined;\n saveLabel?: string | undefined;\n footerStatus?: ReactNode | undefined;\n};\n\nconst ADVANCED_HINTS: Partial<Record<SpecSectionId, string>> = {\n model: \"fallbacks, session, caching, memory, skills\",\n prompt: \"schema\",\n permissions: \"tools, MCP, plugins\",\n environment: \"dotenv files\",\n};\n\n// Full-page runtime spec editor (design \"Runtime Spec Editor v2\"): a live\n// summary rail with scrollspy nav, preset quick-starts, and stacked numbered\n// sections. Container-responsive so it works embedded in a modal or standalone.\nexport function SpecRuntimeEditor({\n value,\n onChange,\n models = [],\n families,\n effectiveMode,\n effectiveModel,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n sections: sectionFilter,\n promptVariant = \"runtime\",\n readOnly = false,\n className,\n title = \"Runtime Spec\",\n eyebrow = \"Agent configuration\",\n showHeader = true,\n beforeSections,\n defaultCollapsedSections,\n variant = \"run\",\n onSave,\n onCancel,\n saveLabel = \"Save & run\",\n footerStatus = \"Ready to run\",\n}: SpecRuntimeEditorProps) {\n const idPrefix = useId();\n const commitChange: (next: AISpecRuntimeValue) => void = readOnly\n ? () => undefined\n : onChange;\n const catalog = useMemo(\n () => buildPermissionCatalog(permissionCatalog, tools),\n [permissionCatalog, tools],\n );\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const runtimeError =\n runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id);\n const selectedRuntime = runtimeError\n ? undefined\n : modeOptionFor(runtimeFamilies, specMode, selectedFamily?.id);\n const supports = selectedRuntime\n ? runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id)\n : SUPPORT_ALL_RUNTIME_FIELDS;\n const runtimeSchema = selectedRuntime?.schema;\n const hasSandboxSection =\n runtimeSchema != null &&\n runtimeSchemaPropertyAtPath(runtimeSchema, \"sandbox.mode\") != null;\n const entries = useMemo(\n () => specPermissionEntries(value, catalog),\n [value, catalog],\n );\n const skillsSection = selectedRuntime\n ? (runtimeFieldSection(\n runtimeFamilies,\n specMode,\n \"permissions.skills\",\n selectedFamily?.id,\n ) ?? \"model\")\n : \"model\";\n const modelSkillEntries = entries.filter(\n (entry) =>\n entry.domain === \"skills\" &&\n skillsSection === \"model\" &&\n supports(\"permissions.skills\"),\n );\n const permissionEntries = entries.filter(\n (entry) =>\n (entry.domain !== \"skills\" || skillsSection === \"permissions\") &&\n supports(`permissions.${entry.domain}`),\n );\n const hasPermissionSection =\n (skillsSection === \"permissions\" && supports(\"permissions.skills\")) ||\n ([\"tools\", \"mcp\", \"plugins\"] as const).some((domain) =>\n supports(`permissions.${domain}`),\n );\n\n const requestedSections = useMemo(\n () =>\n sectionFilter\n ? sectionFilter.map((id) => {\n const section = SPEC_RUNTIME_SECTIONS.find(\n (candidate) => candidate.id === id,\n );\n if (!section)\n throw new Error(\n `unknown runtime editor section ${JSON.stringify(id)}`,\n );\n return section;\n })\n : SPEC_RUNTIME_SECTIONS,\n [sectionFilter],\n );\n // Sandbox modes come from the selected runtime schema. The adapter catalog is\n // optional metadata for configured Docker and Git Agent backends.\n const sections = requestedSections.filter(\n (section) =>\n (section.id !== \"cli\" || (cliOptions && supports(\"cliArgs\"))) &&\n (section.id !== \"sandbox\" || hasSandboxSection) &&\n (section.id !== \"permissions\" || hasPermissionSection),\n );\n const collapsedSections = useMemo(\n () => new Set(defaultCollapsedSections ?? []),\n [defaultCollapsedSections],\n );\n const domId = (id: SpecSectionId) => `${idPrefix}-${id}`;\n const { sectionRef } = useScrollSpy(\n sections.map((section) => domId(section.id)),\n );\n\n const applyEntries = (\n applied: Parameters<typeof withPermissionEntries>[1],\n mode: Parameters<typeof withPermissionEntries>[2],\n ) => commitChange(withPermissionEntries(value, applied, mode));\n const addEntry = (\n domain: Parameters<typeof withAddedPermission>[1],\n id: string,\n ) => {\n const next = withAddedPermission(value, domain, id);\n if (next) commitChange(next);\n };\n\n const sectionBody = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <ModelSection\n value={value}\n onChange={commitChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n families={runtimeFamilies}\n />\n );\n case \"prompt\":\n return (\n <PromptSection\n value={value}\n onChange={commitChange}\n supports={supports}\n variant={promptVariant}\n />\n );\n case \"workspace\":\n return (\n <WorkspaceSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n variant={variant}\n supports={supports}\n />\n );\n case \"sandbox\":\n return runtimeSchema ? (\n <SandboxSection\n value={value}\n onChange={commitChange}\n schema={runtimeSchema}\n {...(sandboxCatalog ? { catalog: sandboxCatalog } : {})}\n families={runtimeFamilies}\n {...(sandboxCreate ? { createConfig: sandboxCreate } : {})}\n />\n ) : null;\n case \"permissions\":\n return supports(\"permissions\") ? (\n <PermissionsSection\n value={value}\n onChange={commitChange}\n entries={permissionEntries}\n />\n ) : null;\n case \"environment\":\n return (\n <EnvironmentSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n />\n );\n case \"verify\":\n return (\n <VerifySection\n value={value}\n onChange={commitChange}\n models={models}\n families={runtimeFamilies}\n {...(secretSelector ? { secretSelector } : {})}\n {...(fixtureSchemas ? { fixtureSchemas } : {})}\n />\n );\n case \"commit\":\n return <CommitSection value={value} onChange={commitChange} />;\n case \"cli\":\n return cliOptions ? (\n <CLIArgsSection\n value={value}\n onChange={commitChange}\n cliOptions={cliOptions}\n />\n ) : null;\n }\n };\n\n const sectionAdvanced = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <div className=\"grid gap-density-3\">\n <ModelAdvanced\n value={value}\n onChange={commitChange}\n models={models}\n supports={supports}\n families={runtimeFamilies}\n />\n <ModelContextAdvanced\n value={value}\n onChange={commitChange}\n entries={modelSkillEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n showSkills={skillsSection === \"model\"}\n supports={supports}\n />\n </div>\n );\n case \"prompt\":\n return supports(\"prompt.schema\") ? (\n <PromptAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n case \"permissions\":\n return (\n <PermissionsAdvanced\n entries={permissionEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n includeSkills={skillsSection === \"permissions\"}\n supports={supports}\n />\n );\n case \"environment\":\n return variant === \"run\" ? (\n <EnvironmentAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n default:\n return undefined;\n }\n };\n\n const valueControls = (content: ReactNode) =>\n readOnly && content ? (\n <fieldset disabled className=\"m-0 min-w-0 border-0 p-0\">\n {content}\n </fieldset>\n ) : (\n content\n );\n\n return (\n <div className={cn(\"@container\", className)}>\n <div className=\"mx-auto max-w-[820px] px-density-4 py-density-4\">\n {showHeader && (\n <Rail\n eyebrow={eyebrow}\n title={title}\n target={summarizeTarget(value)}\n />\n )}\n {runtimeError ? (\n <div\n role=\"alert\"\n className=\"mb-density-3 rounded-md border border-destructive/40 bg-destructive/10 px-density-3 py-density-2 text-sm text-destructive\"\n >\n {runtimeError} Select a valid mode below or switch to Raw to repair\n the prompt source.\n </div>\n ) : null}\n {beforeSections}\n {sections.map((section, index) => (\n <SectionCard\n key={section.id}\n meta={\n section.id === \"prompt\" && promptVariant === \"document\"\n ? {\n ...section,\n hint: \"The .prompt document body and its explicit system fields.\",\n }\n : section\n }\n number={String(index + 1).padStart(2, \"0\")}\n domId={domId(section.id)}\n sectionRef={sectionRef(domId(section.id))}\n advanced={valueControls(sectionAdvanced(section.id))}\n advancedHint={ADVANCED_HINTS[section.id]}\n defaultCollapsed={collapsedSections.has(section.id)}\n >\n {valueControls(sectionBody(section.id))}\n </SectionCard>\n ))}\n </div>\n {(onSave || onCancel) && (\n <Footer\n status={footerStatus}\n saveLabel={saveLabel}\n onSave={onSave}\n onCancel={onCancel}\n />\n )}\n </div>\n );\n}\n"],"names":["useId","useMemo","buildPermissionCatalog","SPEC_RUNTIME_FAMILIES","familyForModel","runtimeModeFromModel","firstMode","runtimeModelError","runtimeModeError","modeOptionFor","runtimeFieldSupport","SUPPORT_ALL_RUNTIME_FIELDS","runtimeSchemaPropertyAtPath","specPermissionEntries","runtimeFieldSection","SPEC_RUNTIME_SECTIONS","useScrollSpy","withPermissionEntries","withAddedPermission","jsx","ModelSection","PromptSection","WorkspaceSection","SandboxSection","PermissionsSection","EnvironmentSection","VerifySection","CommitSection","CLIArgsSection","jsxs","ModelAdvanced","ModelContextAdvanced","PromptAdvanced","PermissionsAdvanced","EnvironmentAdvanced","cn","Rail","summarizeTarget","SectionCard","Footer"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { ReactNode } from '../../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { ChatModel, ToolMeta } from '../../chat/types';
3
+ import { FixtureFenceSchemas } from '../../FixtureEditor/types';
3
4
  import { AISpecRuntimePermissionCatalog, AISpecRuntimeValue } from '../SpecRuntimeEditor.model';
4
5
  import { SpecRuntimeSandboxCreateConfig } from '../SandboxCreateWizard.model';
5
6
  import { SpecRuntimeCLIOptions } from './CLIArgsSection';
@@ -24,6 +25,8 @@ export type SpecRuntimeEditorProps = {
24
25
  secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;
25
26
  /** Schema for the runtime's extra CLI args; enables the CLI flags section. */
26
27
  cliOptions?: SpecRuntimeCLIOptions | undefined;
28
+ /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */
29
+ fixtureSchemas?: FixtureFenceSchemas | undefined;
27
30
  /** Sandbox adapter catalog; enables the Sandbox section. */
28
31
  sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;
29
32
  /** Host-owned sandbox creation and credential-reference adapter. */
@@ -52,5 +55,5 @@ export type SpecRuntimeEditorProps = {
52
55
  saveLabel?: string | undefined;
53
56
  footerStatus?: ReactNode | undefined;
54
57
  };
55
- export declare function SpecRuntimeEditor({ value, onChange, models, families, effectiveMode, effectiveModel, tools, permissionCatalog, secretSelector, cliOptions, sandboxCatalog, sandboxCreate, sections: sectionFilter, promptVariant, readOnly, className, title, eyebrow, showHeader, beforeSections, defaultCollapsedSections, variant, onSave, onCancel, saveLabel, footerStatus, }: SpecRuntimeEditorProps): import("react").JSX.Element;
58
+ export declare function SpecRuntimeEditor({ value, onChange, models, families, effectiveMode, effectiveModel, tools, permissionCatalog, secretSelector, cliOptions, fixtureSchemas, sandboxCatalog, sandboxCreate, sections: sectionFilter, promptVariant, readOnly, className, title, eyebrow, showHeader, beforeSections, defaultCollapsedSections, variant, onSave, onCancel, saveLabel, footerStatus, }: SpecRuntimeEditorProps): import("react").JSX.Element;
56
59
  //# sourceMappingURL=index.d.ts.map