@flanksource/clicky-ui 0.3.34 → 0.3.36

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 (733) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +4 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +4 -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/TaskHeaderExtras.cjs +35 -0
  239. package/dist/data/TaskHeaderExtras.cjs.map +1 -0
  240. package/dist/data/TaskHeaderExtras.d.ts +27 -0
  241. package/dist/data/TaskHeaderExtras.d.ts.map +1 -0
  242. package/dist/data/TaskHeaderExtras.js +35 -0
  243. package/dist/data/TaskHeaderExtras.js.map +1 -0
  244. package/dist/data/TaskManager.cjs +27 -23
  245. package/dist/data/TaskManager.cjs.map +1 -1
  246. package/dist/data/TaskManager.d.ts +13 -1
  247. package/dist/data/TaskManager.d.ts.map +1 -1
  248. package/dist/data/TaskManager.js +27 -23
  249. package/dist/data/TaskManager.js.map +1 -1
  250. package/dist/data/TaskManagerButton.cjs +17 -34
  251. package/dist/data/TaskManagerButton.cjs.map +1 -1
  252. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  253. package/dist/data/TaskManagerButton.js +18 -35
  254. package/dist/data/TaskManagerButton.js.map +1 -1
  255. package/dist/data/TaskProcessDetails.cjs +7 -25
  256. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  257. package/dist/data/TaskProcessDetails.d.ts +2 -1
  258. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  259. package/dist/data/TaskProcessDetails.js +7 -25
  260. package/dist/data/TaskProcessDetails.js.map +1 -1
  261. package/dist/data/TaskProcessMetadata.cjs +50 -0
  262. package/dist/data/TaskProcessMetadata.cjs.map +1 -0
  263. package/dist/data/TaskProcessMetadata.d.ts +20 -0
  264. package/dist/data/TaskProcessMetadata.d.ts.map +1 -0
  265. package/dist/data/TaskProcessMetadata.js +50 -0
  266. package/dist/data/TaskProcessMetadata.js.map +1 -0
  267. package/dist/data/TaskProgress.cjs +41 -41
  268. package/dist/data/TaskProgress.cjs.map +1 -1
  269. package/dist/data/TaskProgress.d.ts +15 -1
  270. package/dist/data/TaskProgress.d.ts.map +1 -1
  271. package/dist/data/TaskProgress.js +41 -41
  272. package/dist/data/TaskProgress.js.map +1 -1
  273. package/dist/data/TaskResourceReadings.cjs +42 -0
  274. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  275. package/dist/data/TaskResourceReadings.d.ts +6 -0
  276. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  277. package/dist/data/TaskResourceReadings.js +42 -0
  278. package/dist/data/TaskResourceReadings.js.map +1 -0
  279. package/dist/data/TaskSnapshot.cjs.map +1 -1
  280. package/dist/data/TaskSnapshot.d.ts +36 -1
  281. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  282. package/dist/data/TaskSnapshot.js.map +1 -1
  283. package/dist/data/TaskStreamTabs.cjs +78 -0
  284. package/dist/data/TaskStreamTabs.cjs.map +1 -0
  285. package/dist/data/TaskStreamTabs.d.ts +35 -0
  286. package/dist/data/TaskStreamTabs.d.ts.map +1 -0
  287. package/dist/data/TaskStreamTabs.js +78 -0
  288. package/dist/data/TaskStreamTabs.js.map +1 -0
  289. package/dist/data/Timeline.d.ts +1 -1
  290. package/dist/data/Tree.d.ts +1 -1
  291. package/dist/data/TreeGroupHeader.d.ts +1 -1
  292. package/dist/data/TreeNode.d.ts +1 -1
  293. package/dist/data/Version.d.ts +3 -3
  294. package/dist/data/ai/ChatWindow.cjs +22 -12
  295. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  296. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  297. package/dist/data/ai/ChatWindow.js +22 -12
  298. package/dist/data/ai/ChatWindow.js.map +1 -1
  299. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  300. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  301. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  302. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  303. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  304. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  305. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  306. package/dist/data/ai/ChatWindowManager.js +2 -0
  307. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  308. package/dist/data/ai/PolicyTree.d.ts +1 -1
  309. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  310. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  311. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  312. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  313. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  314. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  315. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  316. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  317. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  318. package/dist/data/ai/SessionInspector.approvals-model.cjs +9 -0
  319. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.approvals-model.d.ts +17 -0
  321. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.approvals-model.js +9 -0
  323. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.approvals.cjs +143 -0
  325. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  326. package/dist/data/ai/SessionInspector.approvals.d.ts +13 -0
  327. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  328. package/dist/data/ai/SessionInspector.approvals.js +143 -0
  329. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  330. package/dist/data/ai/SessionInspector.cjs +21 -8
  331. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  332. package/dist/data/ai/SessionInspector.d.ts +6 -2
  333. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  334. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  335. package/dist/data/ai/SessionInspector.js +21 -8
  336. package/dist/data/ai/SessionInspector.js.map +1 -1
  337. package/dist/data/ai/SessionInspector.panel-parts.cjs +34 -0
  338. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  339. package/dist/data/ai/SessionInspector.panel-parts.d.ts +19 -0
  340. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  341. package/dist/data/ai/SessionInspector.panel-parts.js +34 -0
  342. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.panel-values.cjs +18 -0
  344. package/dist/data/ai/SessionInspector.panel-values.cjs.map +1 -0
  345. package/dist/data/ai/SessionInspector.panel-values.d.ts +13 -0
  346. package/dist/data/ai/SessionInspector.panel-values.d.ts.map +1 -0
  347. package/dist/data/ai/SessionInspector.panel-values.js +18 -0
  348. package/dist/data/ai/SessionInspector.panel-values.js.map +1 -0
  349. package/dist/data/ai/SessionInspector.panels.cjs +41 -99
  350. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  351. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  352. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  353. package/dist/data/ai/SessionInspector.panels.js +13 -71
  354. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  355. package/dist/data/ai/SessionViewer.d.ts +1 -1
  356. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  357. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  358. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  359. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  360. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  361. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  362. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  363. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  364. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  365. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  366. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  367. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  368. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  369. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  371. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  373. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  374. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  375. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  376. package/dist/data/ai/chat-window-context.cjs +1 -0
  377. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  378. package/dist/data/ai/chat-window-context.d.ts +13 -5
  379. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  380. package/dist/data/ai/chat-window-context.js +1 -0
  381. package/dist/data/ai/chat-window-context.js.map +1 -1
  382. package/dist/data/ai/index.d.ts +3 -1
  383. package/dist/data/ai/index.d.ts.map +1 -1
  384. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  385. package/dist/data/cache-browser/adapter.d.ts +1 -1
  386. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  387. package/dist/data/cells/EntityCell.d.ts +1 -1
  388. package/dist/data/cells/tag-utils.d.ts +1 -1
  389. package/dist/data/chat/Chat.cjs +42 -46
  390. package/dist/data/chat/Chat.cjs.map +1 -1
  391. package/dist/data/chat/Chat.d.ts +16 -5
  392. package/dist/data/chat/Chat.d.ts.map +1 -1
  393. package/dist/data/chat/Chat.js +43 -47
  394. package/dist/data/chat/Chat.js.map +1 -1
  395. package/dist/data/chat/ModelSelector.d.ts +1 -1
  396. package/dist/data/chat/PromptInput.cjs +13 -0
  397. package/dist/data/chat/PromptInput.cjs.map +1 -1
  398. package/dist/data/chat/PromptInput.d.ts +8 -2
  399. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  400. package/dist/data/chat/PromptInput.js +14 -1
  401. package/dist/data/chat/PromptInput.js.map +1 -1
  402. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  403. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  404. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  405. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  406. package/dist/data/chat/tool-render/context.d.ts +1 -1
  407. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  408. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  409. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  410. package/dist/data/chat/types.d.ts +1 -1
  411. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  412. package/dist/data/data-table-server-filters.d.ts +1 -1
  413. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  414. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  415. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  416. package/dist/data/git/GitChangeList.d.ts +1 -1
  417. package/dist/data/icon-fallback.d.ts +1 -1
  418. package/dist/data/properties-context.cjs +6 -0
  419. package/dist/data/properties-context.cjs.map +1 -0
  420. package/dist/data/properties-context.d.ts +7 -0
  421. package/dist/data/properties-context.d.ts.map +1 -0
  422. package/dist/data/properties-context.js +6 -0
  423. package/dist/data/properties-context.js.map +1 -0
  424. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  425. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  426. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  427. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  428. package/dist/data/runtime/RuntimeBar.js +7 -3
  429. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  430. package/dist/data/task-copy.cjs +1 -1
  431. package/dist/data/task-copy.cjs.map +1 -1
  432. package/dist/data/task-copy.js +1 -1
  433. package/dist/data/task-copy.js.map +1 -1
  434. package/dist/data/task-metadata.cjs +36 -0
  435. package/dist/data/task-metadata.cjs.map +1 -0
  436. package/dist/data/task-metadata.d.ts +39 -0
  437. package/dist/data/task-metadata.d.ts.map +1 -0
  438. package/dist/data/task-metadata.js +36 -0
  439. package/dist/data/task-metadata.js.map +1 -0
  440. package/dist/data/task-resource-summary.cjs +30 -0
  441. package/dist/data/task-resource-summary.cjs.map +1 -0
  442. package/dist/data/task-resource-summary.d.ts +15 -0
  443. package/dist/data/task-resource-summary.d.ts.map +1 -0
  444. package/dist/data/task-resource-summary.js +30 -0
  445. package/dist/data/task-resource-summary.js.map +1 -0
  446. package/dist/data/task-status.cjs +8 -2
  447. package/dist/data/task-status.cjs.map +1 -1
  448. package/dist/data/task-status.d.ts +3 -0
  449. package/dist/data/task-status.d.ts.map +1 -1
  450. package/dist/data/task-status.js +8 -2
  451. package/dist/data/task-status.js.map +1 -1
  452. package/dist/data/task-streams.cjs +39 -0
  453. package/dist/data/task-streams.cjs.map +1 -0
  454. package/dist/data/task-streams.d.ts +60 -0
  455. package/dist/data/task-streams.d.ts.map +1 -0
  456. package/dist/data/task-streams.js +39 -0
  457. package/dist/data/task-streams.js.map +1 -0
  458. package/dist/data/task-work-progress.cjs +24 -0
  459. package/dist/data/task-work-progress.cjs.map +1 -0
  460. package/dist/data/task-work-progress.d.ts +21 -0
  461. package/dist/data/task-work-progress.d.ts.map +1 -0
  462. package/dist/data/task-work-progress.js +24 -0
  463. package/dist/data/task-work-progress.js.map +1 -0
  464. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  465. package/dist/data/test-runner/adapter.d.ts +1 -1
  466. package/dist/data/test-runner/context.d.ts +1 -1
  467. package/dist/data/use-data-table-virtual.cjs +73 -0
  468. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  469. package/dist/data/use-data-table-virtual.d.ts +40 -0
  470. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  471. package/dist/data/use-data-table-virtual.js +73 -0
  472. package/dist/data/use-data-table-virtual.js.map +1 -0
  473. package/dist/data/verification/VerificationResults.d.ts +1 -1
  474. package/dist/data/version-info.cjs +3 -3
  475. package/dist/data/version-info.js +3 -3
  476. package/dist/data.cjs +14 -0
  477. package/dist/data.cjs.map +1 -1
  478. package/dist/data.d.ts +6 -1
  479. package/dist/data.d.ts.map +1 -1
  480. package/dist/data.js +14 -0
  481. package/dist/data.js.map +1 -1
  482. package/dist/expressions/lang/attributes.cjs +56 -0
  483. package/dist/expressions/lang/attributes.cjs.map +1 -0
  484. package/dist/expressions/lang/attributes.d.ts +22 -0
  485. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  486. package/dist/expressions/lang/attributes.js +56 -0
  487. package/dist/expressions/lang/attributes.js.map +1 -0
  488. package/dist/expressions/lang/completion.cjs +164 -0
  489. package/dist/expressions/lang/completion.cjs.map +1 -0
  490. package/dist/expressions/lang/completion.d.ts +29 -0
  491. package/dist/expressions/lang/completion.d.ts.map +1 -0
  492. package/dist/expressions/lang/completion.js +164 -0
  493. package/dist/expressions/lang/completion.js.map +1 -0
  494. package/dist/expressions/lang/environment.cjs +115 -0
  495. package/dist/expressions/lang/environment.cjs.map +1 -0
  496. package/dist/expressions/lang/environment.d.ts +54 -0
  497. package/dist/expressions/lang/environment.d.ts.map +1 -0
  498. package/dist/expressions/lang/environment.js +115 -0
  499. package/dist/expressions/lang/environment.js.map +1 -0
  500. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  501. package/dist/expressions/lang/generated/index.cjs +18 -0
  502. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  503. package/dist/expressions/lang/generated/index.d.ts +9 -0
  504. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  505. package/dist/expressions/lang/generated/index.js +18 -0
  506. package/dist/expressions/lang/generated/index.js.map +1 -0
  507. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  508. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  509. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  510. package/dist/expressions/lang/generated/languages.json.js +18 -0
  511. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  512. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  513. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  514. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  515. package/dist/expressions/lang/generated/spec.json.js +12 -0
  516. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  517. package/dist/expressions/lang/hover.cjs +106 -0
  518. package/dist/expressions/lang/hover.cjs.map +1 -0
  519. package/dist/expressions/lang/hover.d.ts +54 -0
  520. package/dist/expressions/lang/hover.d.ts.map +1 -0
  521. package/dist/expressions/lang/hover.js +106 -0
  522. package/dist/expressions/lang/hover.js.map +1 -0
  523. package/dist/expressions/lang/index.cjs +87 -0
  524. package/dist/expressions/lang/index.cjs.map +1 -0
  525. package/dist/expressions/lang/index.d.ts +65 -0
  526. package/dist/expressions/lang/index.d.ts.map +1 -0
  527. package/dist/expressions/lang/index.js +90 -0
  528. package/dist/expressions/lang/index.js.map +1 -0
  529. package/dist/expressions/lang/merge.cjs +52 -0
  530. package/dist/expressions/lang/merge.cjs.map +1 -0
  531. package/dist/expressions/lang/merge.d.ts +12 -0
  532. package/dist/expressions/lang/merge.d.ts.map +1 -0
  533. package/dist/expressions/lang/merge.js +52 -0
  534. package/dist/expressions/lang/merge.js.map +1 -0
  535. package/dist/expressions/lang/prefix.cjs +91 -0
  536. package/dist/expressions/lang/prefix.cjs.map +1 -0
  537. package/dist/expressions/lang/prefix.d.ts +36 -0
  538. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  539. package/dist/expressions/lang/prefix.js +91 -0
  540. package/dist/expressions/lang/prefix.js.map +1 -0
  541. package/dist/expressions/lang/spec.d.ts +13 -0
  542. package/dist/expressions/lang/spec.d.ts.map +1 -0
  543. package/dist/expressions/lang/theme.cjs +97 -0
  544. package/dist/expressions/lang/theme.cjs.map +1 -0
  545. package/dist/expressions/lang/theme.d.ts +6 -0
  546. package/dist/expressions/lang/theme.d.ts.map +1 -0
  547. package/dist/expressions/lang/theme.js +97 -0
  548. package/dist/expressions/lang/theme.js.map +1 -0
  549. package/dist/expressions/lang/types.d.ts +81 -0
  550. package/dist/expressions/lang/types.d.ts.map +1 -0
  551. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  552. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  553. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  554. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  555. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  556. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  557. package/dist/expressions/playground/RunControls.cjs +51 -0
  558. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  559. package/dist/expressions/playground/RunControls.d.ts +7 -0
  560. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  561. package/dist/expressions/playground/RunControls.js +51 -0
  562. package/dist/expressions/playground/RunControls.js.map +1 -0
  563. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  564. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  565. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  566. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  567. package/dist/expressions/playground/VerticalSplit.js +109 -0
  568. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  569. package/dist/expressions/playground/api.cjs +49 -0
  570. package/dist/expressions/playground/api.cjs.map +1 -0
  571. package/dist/expressions/playground/api.d.ts +53 -0
  572. package/dist/expressions/playground/api.d.ts.map +1 -0
  573. package/dist/expressions/playground/api.js +49 -0
  574. package/dist/expressions/playground/api.js.map +1 -0
  575. package/dist/expressions/playground/languages.cjs +88 -0
  576. package/dist/expressions/playground/languages.cjs.map +1 -0
  577. package/dist/expressions/playground/languages.d.ts +43 -0
  578. package/dist/expressions/playground/languages.d.ts.map +1 -0
  579. package/dist/expressions/playground/languages.js +88 -0
  580. package/dist/expressions/playground/languages.js.map +1 -0
  581. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  582. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  583. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  584. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  585. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  586. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  587. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  588. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  589. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  590. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  591. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  592. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  593. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  594. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  595. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  596. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  597. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  598. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  599. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  600. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  601. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  602. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  603. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  604. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  605. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  606. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  607. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  608. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  609. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  610. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  611. package/dist/expressions/playground/runAction.cjs +12 -0
  612. package/dist/expressions/playground/runAction.cjs.map +1 -0
  613. package/dist/expressions/playground/runAction.d.ts +15 -0
  614. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  615. package/dist/expressions/playground/runAction.js +12 -0
  616. package/dist/expressions/playground/runAction.js.map +1 -0
  617. package/dist/expressions/playground/runShortcut.cjs +9 -0
  618. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  619. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  620. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  621. package/dist/expressions/playground/runShortcut.js +9 -0
  622. package/dist/expressions/playground/runShortcut.js.map +1 -0
  623. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  624. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  625. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  626. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  627. package/dist/expressions/playground/useEditorTheme.js +23 -0
  628. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  629. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  630. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  631. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  632. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  633. package/dist/expressions/playground/useEvaluator.js +72 -0
  634. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  635. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  636. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  637. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  638. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  639. package/dist/expressions/playground/useParsedInput.js +22 -0
  640. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  641. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  642. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  643. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  644. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  645. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  646. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  647. package/dist/expressions/playground.cjs +18 -0
  648. package/dist/expressions/playground.cjs.map +1 -0
  649. package/dist/expressions/playground.d.ts +18 -0
  650. package/dist/expressions/playground.d.ts.map +1 -0
  651. package/dist/expressions/playground.js +18 -0
  652. package/dist/expressions/playground.js.map +1 -0
  653. package/dist/expressions.cjs +28 -0
  654. package/dist/expressions.cjs.map +1 -0
  655. package/dist/expressions.d.ts +10 -0
  656. package/dist/expressions.d.ts.map +1 -0
  657. package/dist/expressions.js +28 -0
  658. package/dist/expressions.js.map +1 -0
  659. package/dist/hooks/density-provider.d.ts +1 -1
  660. package/dist/hooks/theme-provider.d.ts +1 -1
  661. package/dist/hooks/use-density.d.ts +1 -1
  662. package/dist/hooks/use-resource-clock.cjs +14 -0
  663. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  664. package/dist/hooks/use-resource-clock.d.ts +2 -0
  665. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  666. package/dist/hooks/use-resource-clock.js +14 -0
  667. package/dist/hooks/use-resource-clock.js.map +1 -0
  668. package/dist/hooks/use-task-run.cjs +25 -18
  669. package/dist/hooks/use-task-run.cjs.map +1 -1
  670. package/dist/hooks/use-task-run.d.ts.map +1 -1
  671. package/dist/hooks/use-task-run.js +26 -19
  672. package/dist/hooks/use-task-run.js.map +1 -1
  673. package/dist/hooks/use-theme.d.ts +1 -1
  674. package/dist/icons/registry.d.ts +1 -1
  675. package/dist/icons/types.d.ts +1 -1
  676. package/dist/index.cjs +14 -0
  677. package/dist/index.cjs.map +1 -1
  678. package/dist/index.js +14 -0
  679. package/dist/index.js.map +1 -1
  680. package/dist/layout/AppShell.d.ts +1 -1
  681. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  682. package/dist/layout/AppSidebar.d.ts +1 -1
  683. package/dist/layout/Panel.d.ts +1 -1
  684. package/dist/layout/PanelFrame.d.ts +1 -1
  685. package/dist/layout/Section.d.ts +1 -1
  686. package/dist/layout/SplitPane.d.ts +1 -1
  687. package/dist/layout/Tabs.d.ts +1 -1
  688. package/dist/layout/Workspace.d.ts +1 -1
  689. package/dist/layout/Workspace.model.d.ts +1 -1
  690. package/dist/lib/combobox-values.d.ts +1 -1
  691. package/dist/monaco/MonacoEditor.cjs +3 -3
  692. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  693. package/dist/monaco/MonacoEditor.js +2 -2
  694. package/dist/monaco/MonacoEditor.js.map +1 -1
  695. package/dist/monaco/types.d.ts +1 -1
  696. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  697. package/dist/overlay/CellActions.d.ts +1 -1
  698. package/dist/overlay/CommandPalette.d.ts +2 -2
  699. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  700. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  701. package/dist/overlay/DropdownMenu.d.ts +1 -1
  702. package/dist/overlay/HoverCard.d.ts +1 -1
  703. package/dist/overlay/Modal.d.ts +2 -2
  704. package/dist/overlay/Toast.d.ts +1 -1
  705. package/dist/overlay/TourCard.d.ts +1 -1
  706. package/dist/overlay/TourProvider.d.ts +1 -1
  707. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  708. package/dist/overlay/toast-context.d.ts +2 -2
  709. package/dist/overlay/tour-context.d.ts +1 -1
  710. package/dist/overlay/tour-types.d.ts +1 -1
  711. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  712. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  713. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  714. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  715. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  716. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  717. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  718. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  719. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  720. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  721. package/dist/rpc/EndpointList.d.ts +1 -1
  722. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  723. package/dist/rpc/OperationCatalog.d.ts +1 -1
  724. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  725. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  726. package/dist/rpc/OperationResultView.d.ts +1 -1
  727. package/dist/rpc/RouterProvider.d.ts +1 -1
  728. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  729. package/dist/rpc/formMetadata.d.ts +1 -1
  730. package/dist/rpc/router.d.ts +1 -1
  731. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  732. package/dist/styles.css +1 -1
  733. package/package.json +21 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.cjs","sources":["../../../src/data/ai/SessionInspector.tsx"],"sourcesContent":["import { useMemo, useState, type ReactNode } from \"react\";\nimport {\n UiBraces,\n UiChatDots,\n UiCoins,\n UiFileText,\n UiListDashes,\n UiSealCheck,\n UiStrategy,\n} from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { TabButton } from \"../TabButton\";\nimport { formatCost, costTotal } from \"./session-cost\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport {\n SessionInspectorHeader,\n SessionInspectorSidebar,\n} from \"./SessionInspector.summary\";\nimport { SessionTranscript } from \"./SessionInspector.transcript\";\nimport {\n isSessionCollectionInput,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionInspectorInput,\n} from \"./SessionInspector.collection\";\nimport { SessionHierarchyPicker } from \"./SessionInspector.hierarchy\";\nimport { useSessionHierarchy } from \"./SessionInspector.hierarchy-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport type SessionInspectorTab =\n | \"transcript\"\n | \"files\"\n | \"plan\"\n | \"approvals\"\n | \"costs\"\n | \"metadata\"\n | \"raw\";\n\nexport interface SessionInspectorProps {\n session: SessionInspectorInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n renderSessionActions?: (item: SessionCollectionItem) => ReactNode;\n /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */\n onPlanChange?: (content: string) => void;\n composer?: ReactNode;\n}\n\nconst TABS = [\n { id: \"transcript\", label: \"Transcript\", icon: UiChatDots },\n { id: \"files\", label: \"Files\", icon: UiFileText },\n { id: \"plan\", label: \"Plan\", icon: UiStrategy },\n { id: \"approvals\", label: \"Approvals\", icon: UiSealCheck },\n { id: \"costs\", label: \"Costs\", icon: UiCoins },\n { id: \"metadata\", label: \"Metadata\", icon: UiListDashes },\n { id: \"raw\", label: \"Raw\", icon: UiBraces },\n] as const;\n\nexport function SessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n composer,\n}: SessionInspectorProps) {\n const detail = useMemo(\n () =>\n isSessionCollectionInput(session) ? undefined : asUnifiedSession(session),\n [session],\n );\n const collection = useMemo(\n () =>\n isSessionCollectionInput(session)\n ? session\n : detail\n ? singleSessionCollection(detail)\n : undefined,\n [detail, session],\n );\n\n if (collection) {\n const optionalProps = {\n ...(className ? { className } : {}),\n ...(transcriptProps ? { transcriptProps } : {}),\n ...(renderSessionActions ? { renderSessionActions } : {}),\n ...(onPlanChange ? { onPlanChange } : {}),\n ...(composer ? { composer } : {}),\n };\n return (\n <CollectionSessionInspector\n collection={collection}\n defaultTab={defaultTab}\n {...optionalProps}\n />\n );\n }\n\n return (\n <LegacySessionInspector\n session={session as SessionInput}\n defaultTab={defaultTab}\n {...(className ? { className } : {})}\n {...(transcriptProps ? { transcriptProps } : {})}\n {...(composer ? { composer } : {})}\n />\n );\n}\n\nfunction CollectionSessionInspector({\n collection,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n composer,\n}: Omit<SessionInspectorProps, \"session\"> & {\n collection: SessionCollectionInput;\n}) {\n const hierarchy = useSessionHierarchy(collection);\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const panelDetail = tab === \"costs\" ? hierarchy.filtered : hierarchy.current;\n\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <SessionInspectorHeader session={hierarchy.current} />\n <div\n role=\"toolbar\"\n aria-label=\"Session content controls\"\n className=\"flex shrink-0 justify-start border-b border-border px-density-2 py-density-2\"\n >\n <SessionHierarchyPicker\n collection={collection}\n state={hierarchy}\n {...(renderSessionActions ? { renderSessionActions } : {})}\n />\n </div>\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => {\n const count = tabCount(item.id, hierarchy.current);\n return (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={tabLabel(\n item.id,\n item.label,\n item.id === \"costs\" ? hierarchy.filtered : hierarchy.current,\n )}\n icon={item.icon}\n variant=\"underline\"\n {...(count === undefined ? {} : { count })}\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n );\n })}\n </div>\n <div className=\"grid min-h-0 flex-1 overflow-y-auto lg:grid-cols-[minmax(0,1fr)_18rem] lg:overflow-hidden\">\n <main className=\"flex min-h-[28rem] min-w-0 flex-col lg:min-h-0\">\n <div\n className={cn(\n \"min-h-0 flex-1\",\n tab === \"transcript\"\n ? \"overflow-hidden\"\n : \"overflow-auto p-density-4\",\n )}\n >\n {tab === \"transcript\" ? (\n <SessionTranscript\n session={hierarchy.filtered}\n viewerProps={{\n ...transcriptProps,\n className: transcriptClassName,\n }}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={panelDetail}\n session={hierarchy.current}\n {...(onPlanChange ? { onPlanChange } : {})}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </main>\n <SessionInspectorSidebar session={hierarchy.current} />\n </div>\n </div>\n );\n}\n\nfunction LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n composer,\n}: Pick<\n SessionInspectorProps,\n \"className\" | \"defaultTab\" | \"transcriptProps\" | \"composer\"\n> & {\n session: SessionInput;\n}) {\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={item.label}\n icon={item.icon}\n variant=\"underline\"\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n ))}\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction tabCount(tab: SessionInspectorTab, session?: UnifiedSessionInput) {\n switch (tab) {\n case \"files\":\n return (\n (session?.files?.read?.length ?? 0) +\n (session?.files?.written?.length ?? 0)\n );\n case \"approvals\":\n return (\n (session?.approvals?.approved ?? 0) + (session?.approvals?.denied ?? 0)\n );\n default:\n return undefined;\n }\n}\n\nfunction singleSessionCollection(\n session: UnifiedSessionInput,\n): SessionCollectionInput {\n const id = session.id || \"session\";\n return {\n kind: \"session-collection\",\n id,\n currentSessionId: id,\n sessions: [{ id, session }],\n };\n}\n\nfunction tabLabel(\n tab: SessionInspectorTab,\n label: string,\n session?: UnifiedSessionInput,\n) {\n if (tab !== \"costs\") return label;\n const total = costTotal(session?.cost);\n return total ? `${label} ${formatCost(total)}` : label;\n}\n\nfunction asUnifiedSession(\n session: SessionInput,\n): UnifiedSessionInput | undefined {\n if (typeof session !== \"object\" || session === null || Array.isArray(session))\n return undefined;\n return session as UnifiedSessionInput;\n}\n"],"names":["UiChatDots","UiFileText","UiStrategy","UiSealCheck","UiCoins","UiListDashes","UiBraces","useMemo","isSessionCollectionInput","jsx","useSessionHierarchy","useState","cn","jsxs","SessionInspectorHeader","SessionHierarchyPicker","TabButton","SessionTranscript","SessionInspectorPanel","SessionInspectorSidebar","SessionViewer","costTotal","formatCost"],"mappings":"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"}
1
+ {"version":3,"file":"SessionInspector.cjs","sources":["../../../src/data/ai/SessionInspector.tsx"],"sourcesContent":["import { useMemo, useState, type ReactNode } from \"react\";\nimport {\n UiBraces,\n UiChatDots,\n UiCoins,\n UiFileText,\n UiListDashes,\n UiSealCheck,\n UiStrategy,\n} from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { TabButton } from \"../TabButton\";\nimport { formatCost, costTotal } from \"./session-cost\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport {\n SessionInspectorHeader,\n SessionInspectorSidebar,\n} from \"./SessionInspector.summary\";\nimport { SessionTranscript } from \"./SessionInspector.transcript\";\nimport {\n isSessionCollectionInput,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionInspectorInput,\n} from \"./SessionInspector.collection\";\nimport { SessionHierarchyPicker } from \"./SessionInspector.hierarchy\";\nimport { useSessionHierarchy } from \"./SessionInspector.hierarchy-state\";\nimport {\n pendingApprovalRequests,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals-model\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport type SessionInspectorTab =\n | \"transcript\"\n | \"files\"\n | \"plan\"\n | \"approvals\"\n | \"costs\"\n | \"metadata\"\n | \"raw\";\n\nexport interface SessionInspectorProps {\n session: SessionInspectorInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n renderSessionActions?: (item: SessionCollectionItem) => ReactNode;\n /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */\n onPlanChange?: (content: string) => void;\n /** Resolves one pending tool approval from the Approvals tab. Omitted, the\n * tab still lists pending requests but renders no Approve/Deny controls. */\n onResolveApproval?: ApprovalResolveHandler;\n composer?: ReactNode;\n}\n\nconst TABS = [\n { id: \"transcript\", label: \"Transcript\", icon: UiChatDots },\n { id: \"files\", label: \"Files\", icon: UiFileText },\n { id: \"plan\", label: \"Plan\", icon: UiStrategy },\n { id: \"approvals\", label: \"Approvals\", icon: UiSealCheck },\n { id: \"costs\", label: \"Costs\", icon: UiCoins },\n { id: \"metadata\", label: \"Metadata\", icon: UiListDashes },\n { id: \"raw\", label: \"Raw\", icon: UiBraces },\n] as const;\n\nexport function SessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n onResolveApproval,\n composer,\n}: SessionInspectorProps) {\n const detail = useMemo(\n () =>\n isSessionCollectionInput(session) ? undefined : asUnifiedSession(session),\n [session],\n );\n const collection = useMemo(\n () =>\n isSessionCollectionInput(session)\n ? session\n : detail\n ? singleSessionCollection(detail)\n : undefined,\n [detail, session],\n );\n\n if (collection) {\n const optionalProps = {\n ...(className ? { className } : {}),\n ...(transcriptProps ? { transcriptProps } : {}),\n ...(renderSessionActions ? { renderSessionActions } : {}),\n ...(onPlanChange ? { onPlanChange } : {}),\n ...(onResolveApproval ? { onResolveApproval } : {}),\n ...(composer ? { composer } : {}),\n };\n return (\n <CollectionSessionInspector\n collection={collection}\n defaultTab={defaultTab}\n {...optionalProps}\n />\n );\n }\n\n return (\n <LegacySessionInspector\n session={session as SessionInput}\n defaultTab={defaultTab}\n {...(className ? { className } : {})}\n {...(transcriptProps ? { transcriptProps } : {})}\n {...(composer ? { composer } : {})}\n />\n );\n}\n\nfunction CollectionSessionInspector({\n collection,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n onResolveApproval,\n composer,\n}: Omit<SessionInspectorProps, \"session\"> & {\n collection: SessionCollectionInput;\n}) {\n const hierarchy = useSessionHierarchy(collection);\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const panelDetail = tab === \"costs\" ? hierarchy.filtered : hierarchy.current;\n\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <SessionInspectorHeader session={hierarchy.current} />\n <div\n role=\"toolbar\"\n aria-label=\"Session content controls\"\n className=\"flex shrink-0 justify-start border-b border-border px-density-2 py-density-2\"\n >\n <SessionHierarchyPicker\n collection={collection}\n state={hierarchy}\n {...(renderSessionActions ? { renderSessionActions } : {})}\n />\n </div>\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => {\n const badge = tabBadge(item.id, hierarchy.current);\n return (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={tabLabel(\n item.id,\n item.label,\n item.id === \"costs\" ? hierarchy.filtered : hierarchy.current,\n )}\n icon={item.icon}\n variant=\"underline\"\n {...(badge.count === undefined ? {} : { count: badge.count })}\n {...(badge.color ? { countColor: badge.color } : {})}\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n );\n })}\n </div>\n <div className=\"grid min-h-0 flex-1 overflow-y-auto lg:grid-cols-[minmax(0,1fr)_18rem] lg:overflow-hidden\">\n <main className=\"flex min-h-[28rem] min-w-0 flex-col lg:min-h-0\">\n <div\n className={cn(\n \"min-h-0 flex-1\",\n tab === \"transcript\"\n ? \"overflow-hidden\"\n : \"overflow-auto p-density-4\",\n )}\n >\n {tab === \"transcript\" ? (\n <SessionTranscript\n session={hierarchy.filtered}\n viewerProps={{\n ...transcriptProps,\n className: transcriptClassName,\n }}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={panelDetail}\n session={hierarchy.current}\n {...(onPlanChange ? { onPlanChange } : {})}\n {...(onResolveApproval ? { onResolveApproval } : {})}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </main>\n <SessionInspectorSidebar session={hierarchy.current} />\n </div>\n </div>\n );\n}\n\nfunction LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n composer,\n}: Pick<\n SessionInspectorProps,\n \"className\" | \"defaultTab\" | \"transcriptProps\" | \"composer\"\n> & {\n session: SessionInput;\n}) {\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={item.label}\n icon={item.icon}\n variant=\"underline\"\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n ))}\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\n/** The tab's count badge and, for a pending-approvals badge, an amber\n * override so an unresolved approval reads as urgent rather than blending\n * into the neutral resolved-count badge every other tab uses. */\nfunction tabBadge(\n tab: SessionInspectorTab,\n session?: UnifiedSessionInput,\n): { count?: number; color?: string } {\n switch (tab) {\n case \"files\":\n return {\n count:\n (session?.files?.read?.length ?? 0) +\n (session?.files?.written?.length ?? 0),\n };\n case \"approvals\": {\n const pending = pendingApprovalRequests(session?.requests).length;\n if (pending) return { count: pending, color: \"bg-amber-500\" };\n return {\n count:\n (session?.approvals?.approved ?? 0) +\n (session?.approvals?.denied ?? 0),\n };\n }\n default:\n return {};\n }\n}\n\nfunction singleSessionCollection(\n session: UnifiedSessionInput,\n): SessionCollectionInput {\n const id = session.id || \"session\";\n return {\n kind: \"session-collection\",\n id,\n currentSessionId: id,\n sessions: [{ id, session }],\n };\n}\n\nfunction tabLabel(\n tab: SessionInspectorTab,\n label: string,\n session?: UnifiedSessionInput,\n) {\n if (tab !== \"costs\") return label;\n const total = costTotal(session?.cost);\n return total ? `${label} ${formatCost(total)}` : label;\n}\n\nfunction asUnifiedSession(\n session: SessionInput,\n): UnifiedSessionInput | undefined {\n if (typeof session !== \"object\" || session === null || Array.isArray(session))\n return undefined;\n return session as UnifiedSessionInput;\n}\n"],"names":["UiChatDots","UiFileText","UiStrategy","UiSealCheck","UiCoins","UiListDashes","UiBraces","useMemo","isSessionCollectionInput","jsx","useSessionHierarchy","useState","cn","jsxs","SessionInspectorHeader","SessionHierarchyPicker","TabButton","SessionTranscript","SessionInspectorPanel","SessionInspectorSidebar","SessionViewer","pendingApprovalRequests","costTotal","formatCost"],"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 { SessionCollectionItem, SessionInspectorInput } from './SessionInspector.collection';
3
+ import { ApprovalResolveHandler } from './SessionInspector.approvals-model';
3
4
  import { SessionViewerProps } from './SessionViewer';
4
5
  export type SessionInspectorTab = "transcript" | "files" | "plan" | "approvals" | "costs" | "metadata" | "raw";
5
6
  export interface SessionInspectorProps {
@@ -10,7 +11,10 @@ export interface SessionInspectorProps {
10
11
  renderSessionActions?: (item: SessionCollectionItem) => ReactNode;
11
12
  /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */
12
13
  onPlanChange?: (content: string) => void;
14
+ /** Resolves one pending tool approval from the Approvals tab. Omitted, the
15
+ * tab still lists pending requests but renders no Approve/Deny controls. */
16
+ onResolveApproval?: ApprovalResolveHandler;
13
17
  composer?: ReactNode;
14
18
  }
15
- export declare function SessionInspector({ session, className, defaultTab, transcriptProps, renderSessionActions, onPlanChange, composer, }: SessionInspectorProps): import("react").JSX.Element;
19
+ export declare function SessionInspector({ session, className, defaultTab, transcriptProps, renderSessionActions, onPlanChange, onResolveApproval, composer, }: SessionInspectorProps): import("react").JSX.Element;
16
20
  //# sourceMappingURL=SessionInspector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmB1D,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,SAAS,CAAC;IAClE,+FAA+F;IAC/F,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,QAAQ,GACT,EAAE,qBAAqB,+BA0CvB"}
1
+ {"version":3,"file":"SessionInspector.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmB1D,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,SAAS,CAAC;IAClE,+FAA+F;IAC/F,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;iFAC6E;IAC7E,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,QAAQ,GACT,EAAE,qBAAqB,+BA2CvB"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { SessionCollectionInput, SessionCollectionItem } from './SessionInspector.collection';
3
3
  import { SessionHierarchyState } from './SessionInspector.hierarchy-state';
4
4
  export declare function SessionHierarchyPicker({ collection, state, renderSessionActions, }: {
@@ -9,6 +9,7 @@ import { SessionTranscript } from "./SessionInspector.transcript.js";
9
9
  import { isSessionCollectionInput } from "./SessionInspector.collection.js";
10
10
  import { SessionHierarchyPicker } from "./SessionInspector.hierarchy.js";
11
11
  import { useSessionHierarchy } from "./SessionInspector.hierarchy-state.js";
12
+ import { pendingApprovalRequests } from "./SessionInspector.approvals-model.js";
12
13
  import { SessionViewer } from "./SessionViewer.js";
13
14
  import { UiChatDots } from "../../icons/components/UiChatDots.js";
14
15
  import { UiFileText } from "../../icons/components/UiFileText.js";
@@ -34,6 +35,7 @@ function SessionInspector({
34
35
  transcriptProps,
35
36
  renderSessionActions,
36
37
  onPlanChange,
38
+ onResolveApproval,
37
39
  composer
38
40
  }) {
39
41
  const detail = useMemo(
@@ -50,6 +52,7 @@ function SessionInspector({
50
52
  ...transcriptProps ? { transcriptProps } : {},
51
53
  ...renderSessionActions ? { renderSessionActions } : {},
52
54
  ...onPlanChange ? { onPlanChange } : {},
55
+ ...onResolveApproval ? { onResolveApproval } : {},
53
56
  ...composer ? { composer } : {}
54
57
  };
55
58
  return /* @__PURE__ */ jsx(
@@ -79,6 +82,7 @@ function CollectionSessionInspector({
79
82
  transcriptProps,
80
83
  renderSessionActions,
81
84
  onPlanChange,
85
+ onResolveApproval,
82
86
  composer
83
87
  }) {
84
88
  const hierarchy = useSessionHierarchy(collection);
@@ -117,7 +121,7 @@ function CollectionSessionInspector({
117
121
  "aria-label": "Session detail view",
118
122
  className: "flex shrink-0 overflow-x-auto border-b border-border px-density-2",
119
123
  children: TABS.map((item) => {
120
- const count = tabCount(item.id, hierarchy.current);
124
+ const badge = tabBadge(item.id, hierarchy.current);
121
125
  return /* @__PURE__ */ jsx(
122
126
  TabButton,
123
127
  {
@@ -130,7 +134,8 @@ function CollectionSessionInspector({
130
134
  ),
131
135
  icon: item.icon,
132
136
  variant: "underline",
133
- ...count === void 0 ? {} : { count },
137
+ ...badge.count === void 0 ? {} : { count: badge.count },
138
+ ...badge.color ? { countColor: badge.color } : {},
134
139
  className: "shrink-0 py-density-2 [&_svg]:text-muted-foreground"
135
140
  },
136
141
  item.id
@@ -162,7 +167,8 @@ function CollectionSessionInspector({
162
167
  tab,
163
168
  detail: panelDetail,
164
169
  session: hierarchy.current,
165
- ...onPlanChange ? { onPlanChange } : {}
170
+ ...onPlanChange ? { onPlanChange } : {},
171
+ ...onResolveApproval ? { onResolveApproval } : {}
166
172
  }
167
173
  )
168
174
  }
@@ -236,15 +242,22 @@ function LegacySessionInspector({
236
242
  }
237
243
  );
238
244
  }
239
- function tabCount(tab, session) {
245
+ function tabBadge(tab, session) {
240
246
  var _a, _b, _c, _d, _e, _f;
241
247
  switch (tab) {
242
248
  case "files":
243
- return (((_b = (_a = session == null ? void 0 : session.files) == null ? void 0 : _a.read) == null ? void 0 : _b.length) ?? 0) + (((_d = (_c = session == null ? void 0 : session.files) == null ? void 0 : _c.written) == null ? void 0 : _d.length) ?? 0);
244
- case "approvals":
245
- return (((_e = session == null ? void 0 : session.approvals) == null ? void 0 : _e.approved) ?? 0) + (((_f = session == null ? void 0 : session.approvals) == null ? void 0 : _f.denied) ?? 0);
249
+ return {
250
+ count: (((_b = (_a = session == null ? void 0 : session.files) == null ? void 0 : _a.read) == null ? void 0 : _b.length) ?? 0) + (((_d = (_c = session == null ? void 0 : session.files) == null ? void 0 : _c.written) == null ? void 0 : _d.length) ?? 0)
251
+ };
252
+ case "approvals": {
253
+ const pending = pendingApprovalRequests(session == null ? void 0 : session.requests).length;
254
+ if (pending) return { count: pending, color: "bg-amber-500" };
255
+ return {
256
+ count: (((_e = session == null ? void 0 : session.approvals) == null ? void 0 : _e.approved) ?? 0) + (((_f = session == null ? void 0 : session.approvals) == null ? void 0 : _f.denied) ?? 0)
257
+ };
258
+ }
246
259
  default:
247
- return void 0;
260
+ return {};
248
261
  }
249
262
  }
250
263
  function singleSessionCollection(session) {
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.js","sources":["../../../src/data/ai/SessionInspector.tsx"],"sourcesContent":["import { useMemo, useState, type ReactNode } from \"react\";\nimport {\n UiBraces,\n UiChatDots,\n UiCoins,\n UiFileText,\n UiListDashes,\n UiSealCheck,\n UiStrategy,\n} from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { TabButton } from \"../TabButton\";\nimport { formatCost, costTotal } from \"./session-cost\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport {\n SessionInspectorHeader,\n SessionInspectorSidebar,\n} from \"./SessionInspector.summary\";\nimport { SessionTranscript } from \"./SessionInspector.transcript\";\nimport {\n isSessionCollectionInput,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionInspectorInput,\n} from \"./SessionInspector.collection\";\nimport { SessionHierarchyPicker } from \"./SessionInspector.hierarchy\";\nimport { useSessionHierarchy } from \"./SessionInspector.hierarchy-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport type SessionInspectorTab =\n | \"transcript\"\n | \"files\"\n | \"plan\"\n | \"approvals\"\n | \"costs\"\n | \"metadata\"\n | \"raw\";\n\nexport interface SessionInspectorProps {\n session: SessionInspectorInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n renderSessionActions?: (item: SessionCollectionItem) => ReactNode;\n /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */\n onPlanChange?: (content: string) => void;\n composer?: ReactNode;\n}\n\nconst TABS = [\n { id: \"transcript\", label: \"Transcript\", icon: UiChatDots },\n { id: \"files\", label: \"Files\", icon: UiFileText },\n { id: \"plan\", label: \"Plan\", icon: UiStrategy },\n { id: \"approvals\", label: \"Approvals\", icon: UiSealCheck },\n { id: \"costs\", label: \"Costs\", icon: UiCoins },\n { id: \"metadata\", label: \"Metadata\", icon: UiListDashes },\n { id: \"raw\", label: \"Raw\", icon: UiBraces },\n] as const;\n\nexport function SessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n composer,\n}: SessionInspectorProps) {\n const detail = useMemo(\n () =>\n isSessionCollectionInput(session) ? undefined : asUnifiedSession(session),\n [session],\n );\n const collection = useMemo(\n () =>\n isSessionCollectionInput(session)\n ? session\n : detail\n ? singleSessionCollection(detail)\n : undefined,\n [detail, session],\n );\n\n if (collection) {\n const optionalProps = {\n ...(className ? { className } : {}),\n ...(transcriptProps ? { transcriptProps } : {}),\n ...(renderSessionActions ? { renderSessionActions } : {}),\n ...(onPlanChange ? { onPlanChange } : {}),\n ...(composer ? { composer } : {}),\n };\n return (\n <CollectionSessionInspector\n collection={collection}\n defaultTab={defaultTab}\n {...optionalProps}\n />\n );\n }\n\n return (\n <LegacySessionInspector\n session={session as SessionInput}\n defaultTab={defaultTab}\n {...(className ? { className } : {})}\n {...(transcriptProps ? { transcriptProps } : {})}\n {...(composer ? { composer } : {})}\n />\n );\n}\n\nfunction CollectionSessionInspector({\n collection,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n composer,\n}: Omit<SessionInspectorProps, \"session\"> & {\n collection: SessionCollectionInput;\n}) {\n const hierarchy = useSessionHierarchy(collection);\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const panelDetail = tab === \"costs\" ? hierarchy.filtered : hierarchy.current;\n\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <SessionInspectorHeader session={hierarchy.current} />\n <div\n role=\"toolbar\"\n aria-label=\"Session content controls\"\n className=\"flex shrink-0 justify-start border-b border-border px-density-2 py-density-2\"\n >\n <SessionHierarchyPicker\n collection={collection}\n state={hierarchy}\n {...(renderSessionActions ? { renderSessionActions } : {})}\n />\n </div>\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => {\n const count = tabCount(item.id, hierarchy.current);\n return (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={tabLabel(\n item.id,\n item.label,\n item.id === \"costs\" ? hierarchy.filtered : hierarchy.current,\n )}\n icon={item.icon}\n variant=\"underline\"\n {...(count === undefined ? {} : { count })}\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n );\n })}\n </div>\n <div className=\"grid min-h-0 flex-1 overflow-y-auto lg:grid-cols-[minmax(0,1fr)_18rem] lg:overflow-hidden\">\n <main className=\"flex min-h-[28rem] min-w-0 flex-col lg:min-h-0\">\n <div\n className={cn(\n \"min-h-0 flex-1\",\n tab === \"transcript\"\n ? \"overflow-hidden\"\n : \"overflow-auto p-density-4\",\n )}\n >\n {tab === \"transcript\" ? (\n <SessionTranscript\n session={hierarchy.filtered}\n viewerProps={{\n ...transcriptProps,\n className: transcriptClassName,\n }}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={panelDetail}\n session={hierarchy.current}\n {...(onPlanChange ? { onPlanChange } : {})}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </main>\n <SessionInspectorSidebar session={hierarchy.current} />\n </div>\n </div>\n );\n}\n\nfunction LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n composer,\n}: Pick<\n SessionInspectorProps,\n \"className\" | \"defaultTab\" | \"transcriptProps\" | \"composer\"\n> & {\n session: SessionInput;\n}) {\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={item.label}\n icon={item.icon}\n variant=\"underline\"\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n ))}\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction tabCount(tab: SessionInspectorTab, session?: UnifiedSessionInput) {\n switch (tab) {\n case \"files\":\n return (\n (session?.files?.read?.length ?? 0) +\n (session?.files?.written?.length ?? 0)\n );\n case \"approvals\":\n return (\n (session?.approvals?.approved ?? 0) + (session?.approvals?.denied ?? 0)\n );\n default:\n return undefined;\n }\n}\n\nfunction singleSessionCollection(\n session: UnifiedSessionInput,\n): SessionCollectionInput {\n const id = session.id || \"session\";\n return {\n kind: \"session-collection\",\n id,\n currentSessionId: id,\n sessions: [{ id, session }],\n };\n}\n\nfunction tabLabel(\n tab: SessionInspectorTab,\n label: string,\n session?: UnifiedSessionInput,\n) {\n if (tab !== \"costs\") return label;\n const total = costTotal(session?.cost);\n return total ? `${label} ${formatCost(total)}` : label;\n}\n\nfunction asUnifiedSession(\n session: SessionInput,\n): UnifiedSessionInput | undefined {\n if (typeof session !== \"object\" || session === null || Array.isArray(session))\n return undefined;\n return session as UnifiedSessionInput;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAmDA,MAAM,OAAO;AAAA,EACX,EAAE,IAAI,cAAc,OAAO,cAAc,MAAM,WAAA;AAAA,EAC/C,EAAE,IAAI,SAAS,OAAO,SAAS,MAAM,WAAA;AAAA,EACrC,EAAE,IAAI,QAAQ,OAAO,QAAQ,MAAM,WAAA;AAAA,EACnC,EAAE,IAAI,aAAa,OAAO,aAAa,MAAM,YAAA;AAAA,EAC7C,EAAE,IAAI,SAAS,OAAO,SAAS,MAAM,QAAA;AAAA,EACrC,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,aAAA;AAAA,EAC3C,EAAE,IAAI,OAAO,OAAO,OAAO,MAAM,SAAA;AACnC;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,SAAS;AAAA,IACb,MACE,yBAAyB,OAAO,IAAI,SAAY,iBAAiB,OAAO;AAAA,IAC1E,CAAC,OAAO;AAAA,EAAA;AAEV,QAAM,aAAa;AAAA,IACjB,MACE,yBAAyB,OAAO,IAC5B,UACA,SACE,wBAAwB,MAAM,IAC9B;AAAA,IACR,CAAC,QAAQ,OAAO;AAAA,EAAA;AAGlB,MAAI,YAAY;AACd,UAAM,gBAAgB;AAAA,MACpB,GAAI,YAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAChC,GAAI,kBAAkB,EAAE,gBAAA,IAAoB,CAAA;AAAA,MAC5C,GAAI,uBAAuB,EAAE,qBAAA,IAAyB,CAAA;AAAA,MACtD,GAAI,eAAe,EAAE,aAAA,IAAiB,CAAA;AAAA,MACtC,GAAI,WAAW,EAAE,aAAa,CAAA;AAAA,IAAC;AAEjC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACC,GAAI,YAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAChC,GAAI,kBAAkB,EAAE,gBAAA,IAAoB,CAAA;AAAA,MAC5C,GAAI,WAAW,EAAE,aAAa,CAAA;AAAA,IAAC;AAAA,EAAA;AAGtC;AAEA,SAAS,2BAA2B;AAAA,EAClC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEG;AACD,QAAM,YAAY,oBAAoB,UAAU;AAChD,QAAM,CAAC,KAAK,MAAM,IAAI,SAA8B,UAAU;AAC9D,QAAM,sBAAsB,GAAG,UAAU,mDAAiB,SAAS;AACnE,QAAM,cAAc,QAAQ,UAAU,UAAU,WAAW,UAAU;AAErE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,oBAAC,wBAAA,EAAuB,SAAS,UAAU,QAAA,CAAS;AAAA,QACpD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YAEV,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,OAAO;AAAA,gBACN,GAAI,uBAAuB,EAAE,yBAAyB,CAAA;AAAA,cAAC;AAAA,YAAA;AAAA,UAC1D;AAAA,QAAA;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YAET,UAAA,KAAK,IAAI,CAAC,SAAS;AAClB,oBAAM,QAAQ,SAAS,KAAK,IAAI,UAAU,OAAO;AACjD,qBACE;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,QAAQ,QAAQ,KAAK;AAAA,kBACrB,SAAS,MAAM,OAAO,KAAK,EAAE;AAAA,kBAC7B,OAAO;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK,OAAO,UAAU,UAAU,WAAW,UAAU;AAAA,kBAAA;AAAA,kBAEvD,MAAM,KAAK;AAAA,kBACX,SAAQ;AAAA,kBACP,GAAI,UAAU,SAAY,CAAA,IAAK,EAAE,MAAA;AAAA,kBAClC,WAAU;AAAA,gBAAA;AAAA,gBAXL,KAAK;AAAA,cAAA;AAAA,YAchB,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,qBAAC,OAAA,EAAI,WAAU,6FACb,UAAA;AAAA,UAAA,qBAAC,QAAA,EAAK,WAAU,kDACd,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,QAAQ,eACJ,oBACA;AAAA,gBAAA;AAAA,gBAGL,kBAAQ,eACP;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,SAAS,UAAU;AAAA,oBACnB,aAAa;AAAA,sBACX,GAAG;AAAA,sBACH,WAAW;AAAA,oBAAA;AAAA,kBACb;AAAA,gBAAA,IAGF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC;AAAA,oBACA,QAAQ;AAAA,oBACR,SAAS,UAAU;AAAA,oBAClB,GAAI,eAAe,EAAE,iBAAiB,CAAA;AAAA,kBAAC;AAAA,gBAAA;AAAA,cAC1C;AAAA,YAAA;AAAA,YAGH,WACC,oBAAC,OAAA,EAAI,WAAU,+CACZ,oBACH,IACE;AAAA,UAAA,GACN;AAAA,UACA,oBAAC,yBAAA,EAAwB,SAAS,UAAU,QAAA,CAAS;AAAA,QAAA,EAAA,CACvD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AACF,GAKG;AACD,QAAM,CAAC,KAAK,MAAM,IAAI,SAA8B,UAAU;AAC9D,QAAM,sBAAsB,GAAG,UAAU,mDAAiB,SAAS;AACnE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YAET,UAAA,KAAK,IAAI,CAAC,SACT;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,QAAQ,QAAQ,KAAK;AAAA,gBACrB,SAAS,MAAM,OAAO,KAAK,EAAE;AAAA,gBAC7B,OAAO,KAAK;AAAA,gBACZ,MAAM,KAAK;AAAA,gBACX,SAAQ;AAAA,gBACR,WAAU;AAAA,cAAA;AAAA,cANL,KAAK;AAAA,YAAA,CAQb;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,qBAAC,OAAA,EAAI,WAAU,gDACb,UAAA;AAAA,UAAA,oBAAC,OAAA,EAAI,WAAU,kCACZ,UAAA,QAAQ,eACP;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,YAAU;AAAA,cACV,iBAAe;AAAA,cACd,GAAG;AAAA,cACJ,WAAW;AAAA,YAAA;AAAA,UAAA,IAGb;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,YAAA;AAAA,UAAA,GAGN;AAAA,UACC,WACC,oBAAC,OAAA,EAAI,WAAU,+CACZ,oBACH,IACE;AAAA,QAAA,EAAA,CACN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAAS,SAAS,KAA0B,SAA+B;;AACzE,UAAQ,KAAA;AAAA,IACN,KAAK;AACH,gBACG,8CAAS,UAAT,mBAAgB,SAAhB,mBAAsB,WAAU,QAChC,8CAAS,UAAT,mBAAgB,YAAhB,mBAAyB,WAAU;AAAA,IAExC,KAAK;AACH,gBACG,wCAAS,cAAT,mBAAoB,aAAY,QAAM,wCAAS,cAAT,mBAAoB,WAAU;AAAA,IAEzE;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,SAAS,wBACP,SACwB;AACxB,QAAM,KAAK,QAAQ,MAAM;AACzB,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,kBAAkB;AAAA,IAClB,UAAU,CAAC,EAAE,IAAI,SAAS;AAAA,EAAA;AAE9B;AAEA,SAAS,SACP,KACA,OACA,SACA;AACA,MAAI,QAAQ,QAAS,QAAO;AAC5B,QAAM,QAAQ,UAAU,mCAAS,IAAI;AACrC,SAAO,QAAQ,GAAG,KAAK,IAAI,WAAW,KAAK,CAAC,KAAK;AACnD;AAEA,SAAS,iBACP,SACiC;AACjC,MAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO;AAC1E,WAAO;AACT,SAAO;AACT;"}
1
+ {"version":3,"file":"SessionInspector.js","sources":["../../../src/data/ai/SessionInspector.tsx"],"sourcesContent":["import { useMemo, useState, type ReactNode } from \"react\";\nimport {\n UiBraces,\n UiChatDots,\n UiCoins,\n UiFileText,\n UiListDashes,\n UiSealCheck,\n UiStrategy,\n} from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { TabButton } from \"../TabButton\";\nimport { formatCost, costTotal } from \"./session-cost\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport {\n SessionInspectorHeader,\n SessionInspectorSidebar,\n} from \"./SessionInspector.summary\";\nimport { SessionTranscript } from \"./SessionInspector.transcript\";\nimport {\n isSessionCollectionInput,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionInspectorInput,\n} from \"./SessionInspector.collection\";\nimport { SessionHierarchyPicker } from \"./SessionInspector.hierarchy\";\nimport { useSessionHierarchy } from \"./SessionInspector.hierarchy-state\";\nimport {\n pendingApprovalRequests,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals-model\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport type SessionInspectorTab =\n | \"transcript\"\n | \"files\"\n | \"plan\"\n | \"approvals\"\n | \"costs\"\n | \"metadata\"\n | \"raw\";\n\nexport interface SessionInspectorProps {\n session: SessionInspectorInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n renderSessionActions?: (item: SessionCollectionItem) => ReactNode;\n /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */\n onPlanChange?: (content: string) => void;\n /** Resolves one pending tool approval from the Approvals tab. Omitted, the\n * tab still lists pending requests but renders no Approve/Deny controls. */\n onResolveApproval?: ApprovalResolveHandler;\n composer?: ReactNode;\n}\n\nconst TABS = [\n { id: \"transcript\", label: \"Transcript\", icon: UiChatDots },\n { id: \"files\", label: \"Files\", icon: UiFileText },\n { id: \"plan\", label: \"Plan\", icon: UiStrategy },\n { id: \"approvals\", label: \"Approvals\", icon: UiSealCheck },\n { id: \"costs\", label: \"Costs\", icon: UiCoins },\n { id: \"metadata\", label: \"Metadata\", icon: UiListDashes },\n { id: \"raw\", label: \"Raw\", icon: UiBraces },\n] as const;\n\nexport function SessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n onResolveApproval,\n composer,\n}: SessionInspectorProps) {\n const detail = useMemo(\n () =>\n isSessionCollectionInput(session) ? undefined : asUnifiedSession(session),\n [session],\n );\n const collection = useMemo(\n () =>\n isSessionCollectionInput(session)\n ? session\n : detail\n ? singleSessionCollection(detail)\n : undefined,\n [detail, session],\n );\n\n if (collection) {\n const optionalProps = {\n ...(className ? { className } : {}),\n ...(transcriptProps ? { transcriptProps } : {}),\n ...(renderSessionActions ? { renderSessionActions } : {}),\n ...(onPlanChange ? { onPlanChange } : {}),\n ...(onResolveApproval ? { onResolveApproval } : {}),\n ...(composer ? { composer } : {}),\n };\n return (\n <CollectionSessionInspector\n collection={collection}\n defaultTab={defaultTab}\n {...optionalProps}\n />\n );\n }\n\n return (\n <LegacySessionInspector\n session={session as SessionInput}\n defaultTab={defaultTab}\n {...(className ? { className } : {})}\n {...(transcriptProps ? { transcriptProps } : {})}\n {...(composer ? { composer } : {})}\n />\n );\n}\n\nfunction CollectionSessionInspector({\n collection,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n renderSessionActions,\n onPlanChange,\n onResolveApproval,\n composer,\n}: Omit<SessionInspectorProps, \"session\"> & {\n collection: SessionCollectionInput;\n}) {\n const hierarchy = useSessionHierarchy(collection);\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const panelDetail = tab === \"costs\" ? hierarchy.filtered : hierarchy.current;\n\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <SessionInspectorHeader session={hierarchy.current} />\n <div\n role=\"toolbar\"\n aria-label=\"Session content controls\"\n className=\"flex shrink-0 justify-start border-b border-border px-density-2 py-density-2\"\n >\n <SessionHierarchyPicker\n collection={collection}\n state={hierarchy}\n {...(renderSessionActions ? { renderSessionActions } : {})}\n />\n </div>\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => {\n const badge = tabBadge(item.id, hierarchy.current);\n return (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={tabLabel(\n item.id,\n item.label,\n item.id === \"costs\" ? hierarchy.filtered : hierarchy.current,\n )}\n icon={item.icon}\n variant=\"underline\"\n {...(badge.count === undefined ? {} : { count: badge.count })}\n {...(badge.color ? { countColor: badge.color } : {})}\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n );\n })}\n </div>\n <div className=\"grid min-h-0 flex-1 overflow-y-auto lg:grid-cols-[minmax(0,1fr)_18rem] lg:overflow-hidden\">\n <main className=\"flex min-h-[28rem] min-w-0 flex-col lg:min-h-0\">\n <div\n className={cn(\n \"min-h-0 flex-1\",\n tab === \"transcript\"\n ? \"overflow-hidden\"\n : \"overflow-auto p-density-4\",\n )}\n >\n {tab === \"transcript\" ? (\n <SessionTranscript\n session={hierarchy.filtered}\n viewerProps={{\n ...transcriptProps,\n className: transcriptClassName,\n }}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={panelDetail}\n session={hierarchy.current}\n {...(onPlanChange ? { onPlanChange } : {})}\n {...(onResolveApproval ? { onResolveApproval } : {})}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </main>\n <SessionInspectorSidebar session={hierarchy.current} />\n </div>\n </div>\n );\n}\n\nfunction LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n transcriptProps,\n composer,\n}: Pick<\n SessionInspectorProps,\n \"className\" | \"defaultTab\" | \"transcriptProps\" | \"composer\"\n> & {\n session: SessionInput;\n}) {\n const [tab, setTab] = useState<SessionInspectorTab>(defaultTab);\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div\n role=\"tablist\"\n aria-label=\"Session detail view\"\n className=\"flex shrink-0 overflow-x-auto border-b border-border px-density-2\"\n >\n {TABS.map((item) => (\n <TabButton\n key={item.id}\n active={tab === item.id}\n onClick={() => setTab(item.id)}\n label={item.label}\n icon={item.icon}\n variant=\"underline\"\n className=\"shrink-0 py-density-2 [&_svg]:text-muted-foreground\"\n />\n ))}\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n {composer ? (\n <div className=\"shrink-0 border-t border-border p-density-3\">\n {composer}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\n/** The tab's count badge and, for a pending-approvals badge, an amber\n * override so an unresolved approval reads as urgent rather than blending\n * into the neutral resolved-count badge every other tab uses. */\nfunction tabBadge(\n tab: SessionInspectorTab,\n session?: UnifiedSessionInput,\n): { count?: number; color?: string } {\n switch (tab) {\n case \"files\":\n return {\n count:\n (session?.files?.read?.length ?? 0) +\n (session?.files?.written?.length ?? 0),\n };\n case \"approvals\": {\n const pending = pendingApprovalRequests(session?.requests).length;\n if (pending) return { count: pending, color: \"bg-amber-500\" };\n return {\n count:\n (session?.approvals?.approved ?? 0) +\n (session?.approvals?.denied ?? 0),\n };\n }\n default:\n return {};\n }\n}\n\nfunction singleSessionCollection(\n session: UnifiedSessionInput,\n): SessionCollectionInput {\n const id = session.id || \"session\";\n return {\n kind: \"session-collection\",\n id,\n currentSessionId: id,\n sessions: [{ id, session }],\n };\n}\n\nfunction tabLabel(\n tab: SessionInspectorTab,\n label: string,\n session?: UnifiedSessionInput,\n) {\n if (tab !== \"costs\") return label;\n const total = costTotal(session?.cost);\n return total ? `${label} ${formatCost(total)}` : label;\n}\n\nfunction asUnifiedSession(\n session: SessionInput,\n): UnifiedSessionInput | undefined {\n if (typeof session !== \"object\" || session === null || Array.isArray(session))\n return undefined;\n return session as UnifiedSessionInput;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const utils = require("../../lib/utils.cjs");
5
+ function EmptyState({
6
+ children,
7
+ compact = false
8
+ }) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx(
10
+ "div",
11
+ {
12
+ className: utils.cn(
13
+ "rounded-md border border-dashed border-border text-sm text-muted-foreground",
14
+ compact ? "p-density-3" : "p-density-6 text-center"
15
+ ),
16
+ children
17
+ }
18
+ );
19
+ }
20
+ function SimpleList({
21
+ title,
22
+ rows
23
+ }) {
24
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-density-2 text-xs font-semibold uppercase text-muted-foreground", children: title }),
26
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "divide-y divide-border rounded-md border border-border", children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "px-density-3 py-density-2", children: [
27
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: row.title || row.key }),
28
+ row.detail ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 text-xs text-muted-foreground", children: row.detail }) : null
29
+ ] }, row.key)) })
30
+ ] });
31
+ }
32
+ exports.EmptyState = EmptyState;
33
+ exports.SimpleList = SimpleList;
34
+ //# sourceMappingURL=SessionInspector.panel-parts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-parts.cjs","sources":["../../../src/data/ai/SessionInspector.panel-parts.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n/** Small display components shared by the SessionInspector detail panels\n * (costs, metadata, approvals, …) — kept in their own module so panel files\n * can depend on them without importing each other. The value builders they are\n * used with live in SessionInspector.panel-values, which exports no components\n * so that neither module loses fast refresh to the other. */\n\nexport function 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\nexport function 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\n"],"names":["jsx","cn","jsxs"],"mappings":";;;;AASO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,UAAU;AACZ,GAGG;AACD,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,UAAU,gBAAgB;AAAA,MAAA;AAAA,MAG3B;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AACF,GAGG;AACD,yCACG,WAAA,EACC,UAAA;AAAA,IAAAD,2BAAAA,IAAC,MAAA,EAAG,WAAU,sEACX,UAAA,OACH;AAAA,IACAA,2BAAAA,IAAC,MAAA,EAAG,WAAU,0DACX,UAAA,KAAK,IAAI,CAAC,QACTE,2BAAAA,KAAC,MAAA,EAAiB,WAAU,6BAC1B,UAAA;AAAA,MAAAF,+BAAC,SAAI,WAAU,uBAAuB,UAAA,IAAI,SAAS,IAAI,KAAI;AAAA,MAC1D,IAAI,SACHA,+BAAC,OAAA,EAAI,WAAU,wCACZ,UAAA,IAAI,QACP,IACE;AAAA,IAAA,KANG,IAAI,GAOb,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;;;"}
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ /** Small display components shared by the SessionInspector detail panels
3
+ * (costs, metadata, approvals, …) — kept in their own module so panel files
4
+ * can depend on them without importing each other. The value builders they are
5
+ * used with live in SessionInspector.panel-values, which exports no components
6
+ * so that neither module loses fast refresh to the other. */
7
+ export declare function EmptyState({ children, compact, }: {
8
+ children: ReactNode;
9
+ compact?: boolean;
10
+ }): import("react").JSX.Element;
11
+ export declare function SimpleList({ title, rows, }: {
12
+ title: string;
13
+ rows: Array<{
14
+ key: string;
15
+ title?: ReactNode;
16
+ detail?: ReactNode;
17
+ }>;
18
+ }): import("react").JSX.Element;
19
+ //# sourceMappingURL=SessionInspector.panel-parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-parts.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.panel-parts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;8DAI8D;AAE9D,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAe,GAChB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+BAWA;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,GACL,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;CACrE,+BAoBA"}
@@ -0,0 +1,34 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ function EmptyState({
4
+ children,
5
+ compact = false
6
+ }) {
7
+ return /* @__PURE__ */ jsx(
8
+ "div",
9
+ {
10
+ className: cn(
11
+ "rounded-md border border-dashed border-border text-sm text-muted-foreground",
12
+ compact ? "p-density-3" : "p-density-6 text-center"
13
+ ),
14
+ children
15
+ }
16
+ );
17
+ }
18
+ function SimpleList({
19
+ title,
20
+ rows
21
+ }) {
22
+ return /* @__PURE__ */ jsxs("section", { children: [
23
+ /* @__PURE__ */ jsx("h3", { className: "mb-density-2 text-xs font-semibold uppercase text-muted-foreground", children: title }),
24
+ /* @__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: [
25
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: row.title || row.key }),
26
+ row.detail ? /* @__PURE__ */ jsx("div", { className: "mt-0.5 text-xs text-muted-foreground", children: row.detail }) : null
27
+ ] }, row.key)) })
28
+ ] });
29
+ }
30
+ export {
31
+ EmptyState,
32
+ SimpleList
33
+ };
34
+ //# sourceMappingURL=SessionInspector.panel-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-parts.js","sources":["../../../src/data/ai/SessionInspector.panel-parts.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n/** Small display components shared by the SessionInspector detail panels\n * (costs, metadata, approvals, …) — kept in their own module so panel files\n * can depend on them without importing each other. The value builders they are\n * used with live in SessionInspector.panel-values, which exports no components\n * so that neither module loses fast refresh to the other. */\n\nexport function 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\nexport function 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\n"],"names":[],"mappings":";;AASO,SAAS,WAAW;AAAA,EACzB;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;AAEO,SAAS,WAAW;AAAA,EACzB;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;"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ function muted(value) {
5
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: value });
6
+ }
7
+ function kv(label, value) {
8
+ const absent = value === void 0 || value === null || value === "";
9
+ return {
10
+ key: String(label),
11
+ label,
12
+ value: absent ? muted("-") : value,
13
+ hidden: absent
14
+ };
15
+ }
16
+ exports.kv = kv;
17
+ exports.muted = muted;
18
+ //# sourceMappingURL=SessionInspector.panel-values.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-values.cjs","sources":["../../../src/data/ai/SessionInspector.panel-values.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { KeyValueListItem } from \"../KeyValueList\";\n\n/** Value builders for the SessionInspector detail panels.\n *\n * They live apart from the panel components in SessionInspector.panel-parts\n * because they are not components: a module that mixes the two loses fast\n * refresh for everything in it, so the components keep their own file and\n * these keep this one. */\n\n/** Renders a value the panel has nothing to show for. */\nexport function muted(value: ReactNode) {\n return <span className=\"text-muted-foreground\">{value}</span>;\n}\n\n/** One key/value row, hidden and dashed out when the value is absent. */\nexport function kv(\n label: ReactNode,\n value: ReactNode | undefined | null\n): KeyValueListItem {\n const absent = value === undefined || value === null || value === \"\";\n return {\n key: String(label),\n label,\n value: absent ? muted(\"-\") : value,\n hidden: absent,\n };\n}\n"],"names":["jsx"],"mappings":";;;AAWO,SAAS,MAAM,OAAkB;AACtC,SAAOA,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,OAAM;AACxD;AAGO,SAAS,GACd,OACA,OACkB;AAClB,QAAM,SAAS,UAAU,UAAa,UAAU,QAAQ,UAAU;AAClE,SAAO;AAAA,IACL,KAAK,OAAO,KAAK;AAAA,IACjB;AAAA,IACA,OAAO,SAAS,MAAM,GAAG,IAAI;AAAA,IAC7B,QAAQ;AAAA,EAAA;AAEZ;;;"}
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ import { KeyValueListItem } from '../KeyValueList';
3
+ /** Value builders for the SessionInspector detail panels.
4
+ *
5
+ * They live apart from the panel components in SessionInspector.panel-parts
6
+ * because they are not components: a module that mixes the two loses fast
7
+ * refresh for everything in it, so the components keep their own file and
8
+ * these keep this one. */
9
+ /** Renders a value the panel has nothing to show for. */
10
+ export declare function muted(value: ReactNode): import("react").JSX.Element;
11
+ /** One key/value row, hidden and dashed out when the value is absent. */
12
+ export declare function kv(label: ReactNode, value: ReactNode | undefined | null): KeyValueListItem;
13
+ //# sourceMappingURL=SessionInspector.panel-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-values.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.panel-values.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;2BAK2B;AAE3B,yDAAyD;AACzD,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,+BAErC;AAED,yEAAyE;AACzE,wBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAClC,gBAAgB,CAQlB"}
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ function muted(value) {
3
+ return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: value });
4
+ }
5
+ function kv(label, value) {
6
+ const absent = value === void 0 || value === null || value === "";
7
+ return {
8
+ key: String(label),
9
+ label,
10
+ value: absent ? muted("-") : value,
11
+ hidden: absent
12
+ };
13
+ }
14
+ export {
15
+ kv,
16
+ muted
17
+ };
18
+ //# sourceMappingURL=SessionInspector.panel-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.panel-values.js","sources":["../../../src/data/ai/SessionInspector.panel-values.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { KeyValueListItem } from \"../KeyValueList\";\n\n/** Value builders for the SessionInspector detail panels.\n *\n * They live apart from the panel components in SessionInspector.panel-parts\n * because they are not components: a module that mixes the two loses fast\n * refresh for everything in it, so the components keep their own file and\n * these keep this one. */\n\n/** Renders a value the panel has nothing to show for. */\nexport function muted(value: ReactNode) {\n return <span className=\"text-muted-foreground\">{value}</span>;\n}\n\n/** One key/value row, hidden and dashed out when the value is absent. */\nexport function kv(\n label: ReactNode,\n value: ReactNode | undefined | null\n): KeyValueListItem {\n const absent = value === undefined || value === null || value === \"\";\n return {\n key: String(label),\n label,\n value: absent ? muted(\"-\") : value,\n hidden: absent,\n };\n}\n"],"names":[],"mappings":";AAWO,SAAS,MAAM,OAAkB;AACtC,SAAO,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,OAAM;AACxD;AAGO,SAAS,GACd,OACA,OACkB;AAClB,QAAM,SAAS,UAAU,UAAa,UAAU,QAAQ,UAAU;AAClE,SAAO;AAAA,IACL,KAAK,OAAO,KAAK;AAAA,IACjB;AAAA,IACA,OAAO,SAAS,MAAM,GAAG,IAAI;AAAA,IAC7B,QAAQ;AAAA,EAAA;AAEZ;"}