@flanksource/clicky-ui 0.3.40 → 0.3.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/README.md +24 -0
  2. package/dist/ai.cjs +14 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +14 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.cjs +3 -1
  7. package/dist/comments/CommentCard.cjs.map +1 -1
  8. package/dist/comments/CommentCard.d.ts.map +1 -1
  9. package/dist/comments/CommentCard.js +4 -2
  10. package/dist/comments/CommentCard.js.map +1 -1
  11. package/dist/comments/CommentCardParts.cjs +16 -0
  12. package/dist/comments/CommentCardParts.cjs.map +1 -1
  13. package/dist/comments/CommentCardParts.d.ts +4 -1
  14. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  15. package/dist/comments/CommentCardParts.js +16 -0
  16. package/dist/comments/CommentCardParts.js.map +1 -1
  17. package/dist/comments/comment-types.cjs.map +1 -1
  18. package/dist/comments/comment-types.d.ts +4 -0
  19. package/dist/comments/comment-types.d.ts.map +1 -1
  20. package/dist/comments/comment-types.js.map +1 -1
  21. package/dist/components/AccordionList.cjs +5 -1
  22. package/dist/components/AccordionList.cjs.map +1 -1
  23. package/dist/components/AccordionList.d.ts +3 -1
  24. package/dist/components/AccordionList.d.ts.map +1 -1
  25. package/dist/components/AccordionList.js +5 -1
  26. package/dist/components/AccordionList.js.map +1 -1
  27. package/dist/components/Combobox.cjs +54 -8
  28. package/dist/components/Combobox.cjs.map +1 -1
  29. package/dist/components/Combobox.d.ts.map +1 -1
  30. package/dist/components/Combobox.js +56 -10
  31. package/dist/components/Combobox.js.map +1 -1
  32. package/dist/components/ComboboxMenu.cjs +139 -113
  33. package/dist/components/ComboboxMenu.cjs.map +1 -1
  34. package/dist/components/ComboboxMenu.d.ts +3 -1
  35. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  36. package/dist/components/ComboboxMenu.js +139 -113
  37. package/dist/components/ComboboxMenu.js.map +1 -1
  38. package/dist/components/ComboboxMenuTrigger.cjs +87 -0
  39. package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
  40. package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
  41. package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
  42. package/dist/components/ComboboxMenuTrigger.js +87 -0
  43. package/dist/components/ComboboxMenuTrigger.js.map +1 -0
  44. package/dist/components/JsonSchemaForm.cjs +39 -11
  45. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  46. package/dist/components/JsonSchemaForm.d.ts +1 -1
  47. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  48. package/dist/components/JsonSchemaForm.js +38 -10
  49. package/dist/components/JsonSchemaForm.js.map +1 -1
  50. package/dist/components/SegmentedControl.cjs +20 -3
  51. package/dist/components/SegmentedControl.cjs.map +1 -1
  52. package/dist/components/SegmentedControl.d.ts +11 -0
  53. package/dist/components/SegmentedControl.d.ts.map +1 -1
  54. package/dist/components/SegmentedControl.js +21 -4
  55. package/dist/components/SegmentedControl.js.map +1 -1
  56. package/dist/components/combobox-types.d.ts +8 -0
  57. package/dist/components/combobox-types.d.ts.map +1 -1
  58. package/dist/components/json-schema-form-accordion-array.cjs +3 -1
  59. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  60. package/dist/components/json-schema-form-accordion-array.d.ts +4 -1
  61. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.js +3 -1
  63. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  64. package/dist/components/json-schema-form-array-view.cjs +63 -0
  65. package/dist/components/json-schema-form-array-view.cjs.map +1 -0
  66. package/dist/components/json-schema-form-array-view.d.ts +21 -0
  67. package/dist/components/json-schema-form-array-view.d.ts.map +1 -0
  68. package/dist/components/json-schema-form-array-view.js +63 -0
  69. package/dist/components/json-schema-form-array-view.js.map +1 -0
  70. package/dist/components/json-schema-form-array.cjs +3 -7
  71. package/dist/components/json-schema-form-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-array.js +3 -7
  74. package/dist/components/json-schema-form-array.js.map +1 -1
  75. package/dist/components/json-schema-form-conditionals.cjs +67 -0
  76. package/dist/components/json-schema-form-conditionals.cjs.map +1 -0
  77. package/dist/components/json-schema-form-conditionals.d.ts +9 -0
  78. package/dist/components/json-schema-form-conditionals.d.ts.map +1 -0
  79. package/dist/components/json-schema-form-conditionals.js +67 -0
  80. package/dist/components/json-schema-form-conditionals.js.map +1 -0
  81. package/dist/components/json-schema-form-debug-badge.cjs +108 -0
  82. package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
  83. package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
  84. package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
  85. package/dist/components/json-schema-form-debug-badge.js +108 -0
  86. package/dist/components/json-schema-form-debug-badge.js.map +1 -0
  87. package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
  88. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
  89. package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
  90. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
  91. package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
  92. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
  93. package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
  94. package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
  95. package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
  96. package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
  97. package/dist/components/json-schema-form-debug-glyph.js +13 -0
  98. package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
  99. package/dist/components/json-schema-form-debug-groups.cjs +56 -0
  100. package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
  101. package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
  102. package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
  103. package/dist/components/json-schema-form-debug-groups.js +56 -0
  104. package/dist/components/json-schema-form-debug-groups.js.map +1 -0
  105. package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
  106. package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
  107. package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
  108. package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
  109. package/dist/components/json-schema-form-debug-keywords.js +159 -0
  110. package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
  111. package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
  112. package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
  113. package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
  114. package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
  115. package/dist/components/json-schema-form-debug-listeners.js +102 -0
  116. package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
  117. package/dist/components/json-schema-form-debug.cjs +31 -0
  118. package/dist/components/json-schema-form-debug.cjs.map +1 -0
  119. package/dist/components/json-schema-form-debug.d.ts +11 -0
  120. package/dist/components/json-schema-form-debug.d.ts.map +1 -0
  121. package/dist/components/json-schema-form-debug.js +31 -0
  122. package/dist/components/json-schema-form-debug.js.map +1 -0
  123. package/dist/components/json-schema-form-defaults.cjs +68 -0
  124. package/dist/components/json-schema-form-defaults.cjs.map +1 -0
  125. package/dist/components/json-schema-form-defaults.d.ts +4 -0
  126. package/dist/components/json-schema-form-defaults.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-defaults.js +68 -0
  128. package/dist/components/json-schema-form-defaults.js.map +1 -0
  129. package/dist/components/json-schema-form-enum-choice.cjs +114 -0
  130. package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
  131. package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
  132. package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-enum-choice.js +114 -0
  134. package/dist/components/json-schema-form-enum-choice.js.map +1 -0
  135. package/dist/components/json-schema-form-errors.cjs +49 -31
  136. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  137. package/dist/components/json-schema-form-errors.d.ts +4 -2
  138. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  139. package/dist/components/json-schema-form-errors.js +51 -33
  140. package/dist/components/json-schema-form-errors.js.map +1 -1
  141. package/dist/components/json-schema-form-fields.cjs +3 -93
  142. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  143. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  144. package/dist/components/json-schema-form-fields.js +1 -91
  145. package/dist/components/json-schema-form-fields.js.map +1 -1
  146. package/dist/components/json-schema-form-filter.cjs +2 -1
  147. package/dist/components/json-schema-form-filter.cjs.map +1 -1
  148. package/dist/components/json-schema-form-filter.js +2 -1
  149. package/dist/components/json-schema-form-filter.js.map +1 -1
  150. package/dist/components/json-schema-form-item-summary.cjs +6 -2
  151. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  152. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  153. package/dist/components/json-schema-form-item-summary.js +6 -2
  154. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  155. package/dist/components/json-schema-form-layout.cjs +28 -19
  156. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  157. package/dist/components/json-schema-form-layout.d.ts +8 -6
  158. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  159. package/dist/components/json-schema-form-layout.js +29 -20
  160. package/dist/components/json-schema-form-layout.js.map +1 -1
  161. package/dist/components/json-schema-form-listener-paths.cjs +52 -0
  162. package/dist/components/json-schema-form-listener-paths.cjs.map +1 -0
  163. package/dist/components/json-schema-form-listener-paths.d.ts +10 -0
  164. package/dist/components/json-schema-form-listener-paths.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-listener-paths.js +52 -0
  166. package/dist/components/json-schema-form-listener-paths.js.map +1 -0
  167. package/dist/components/json-schema-form-listener-types.d.ts +22 -0
  168. package/dist/components/json-schema-form-listener-types.d.ts.map +1 -0
  169. package/dist/components/json-schema-form-listeners.cjs +256 -0
  170. package/dist/components/json-schema-form-listeners.cjs.map +1 -0
  171. package/dist/components/json-schema-form-listeners.d.ts +13 -0
  172. package/dist/components/json-schema-form-listeners.d.ts.map +1 -0
  173. package/dist/components/json-schema-form-listeners.js +256 -0
  174. package/dist/components/json-schema-form-listeners.js.map +1 -0
  175. package/dist/components/json-schema-form-object-array-view.cjs +62 -0
  176. package/dist/components/json-schema-form-object-array-view.cjs.map +1 -0
  177. package/dist/components/json-schema-form-object-array-view.d.ts +14 -0
  178. package/dist/components/json-schema-form-object-array-view.d.ts.map +1 -0
  179. package/dist/components/json-schema-form-object-array-view.js +62 -0
  180. package/dist/components/json-schema-form-object-array-view.js.map +1 -0
  181. package/dist/components/json-schema-form-object.cjs +3 -0
  182. package/dist/components/json-schema-form-object.cjs.map +1 -1
  183. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-object.js +3 -0
  185. package/dist/components/json-schema-form-object.js.map +1 -1
  186. package/dist/components/json-schema-form-preferences.cjs +1 -0
  187. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  188. package/dist/components/json-schema-form-preferences.d.ts +1 -0
  189. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  190. package/dist/components/json-schema-form-preferences.js +1 -0
  191. package/dist/components/json-schema-form-preferences.js.map +1 -1
  192. package/dist/components/json-schema-form-render.cjs +36 -12
  193. package/dist/components/json-schema-form-render.cjs.map +1 -1
  194. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  195. package/dist/components/json-schema-form-render.js +38 -14
  196. package/dist/components/json-schema-form-render.js.map +1 -1
  197. package/dist/components/json-schema-form-resolve.cjs +6 -99
  198. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  199. package/dist/components/json-schema-form-resolve.d.ts +1 -8
  200. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  201. package/dist/components/json-schema-form-resolve.js +5 -98
  202. package/dist/components/json-schema-form-resolve.js.map +1 -1
  203. package/dist/components/json-schema-form-runtime-types.d.ts +16 -0
  204. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
  205. package/dist/components/json-schema-form-table-array.cjs +67 -16
  206. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  207. package/dist/components/json-schema-form-table-array.d.ts +4 -1
  208. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  209. package/dist/components/json-schema-form-table-array.js +70 -19
  210. package/dist/components/json-schema-form-table-array.js.map +1 -1
  211. package/dist/components/json-schema-form-tone.cjs +12 -0
  212. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  213. package/dist/components/json-schema-form-tone.js +12 -0
  214. package/dist/components/json-schema-form-tone.js.map +1 -1
  215. package/dist/components/json-schema-form-types.d.ts +17 -0
  216. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  217. package/dist/components/json-schema-form-utils.cjs +7 -1
  218. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  219. package/dist/components/json-schema-form-utils.d.ts +2 -1
  220. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  221. package/dist/components/json-schema-form-utils.js +7 -1
  222. package/dist/components/json-schema-form-utils.js.map +1 -1
  223. package/dist/components.cjs +3 -2
  224. package/dist/components.cjs.map +1 -1
  225. package/dist/components.d.ts +3 -2
  226. package/dist/components.d.ts.map +1 -1
  227. package/dist/components.js +2 -1
  228. package/dist/components.js.map +1 -1
  229. package/dist/data/DataTable.cjs +9 -3
  230. package/dist/data/DataTable.cjs.map +1 -1
  231. package/dist/data/DataTable.d.ts +6 -0
  232. package/dist/data/DataTable.d.ts.map +1 -1
  233. package/dist/data/DataTable.js +9 -3
  234. package/dist/data/DataTable.js.map +1 -1
  235. package/dist/data/FixtureEditor/FixtureEditor.cjs +43 -24
  236. package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -1
  237. package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -1
  238. package/dist/data/FixtureEditor/FixtureEditor.js +43 -24
  239. package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -1
  240. package/dist/data/GraphDiagram.cjs +125 -138
  241. package/dist/data/GraphDiagram.cjs.map +1 -1
  242. package/dist/data/GraphDiagram.d.ts +30 -23
  243. package/dist/data/GraphDiagram.d.ts.map +1 -1
  244. package/dist/data/GraphDiagram.js +128 -141
  245. package/dist/data/GraphDiagram.js.map +1 -1
  246. package/dist/data/GraphDiagramEdges.cjs +208 -0
  247. package/dist/data/GraphDiagramEdges.cjs.map +1 -0
  248. package/dist/data/GraphDiagramEdges.d.ts +40 -0
  249. package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
  250. package/dist/data/GraphDiagramEdges.js +208 -0
  251. package/dist/data/GraphDiagramEdges.js.map +1 -0
  252. package/dist/data/GraphDiagramNodes.cjs +142 -0
  253. package/dist/data/GraphDiagramNodes.cjs.map +1 -0
  254. package/dist/data/GraphDiagramNodes.d.ts +22 -0
  255. package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
  256. package/dist/data/GraphDiagramNodes.js +142 -0
  257. package/dist/data/GraphDiagramNodes.js.map +1 -0
  258. package/dist/data/Tree.cjs +10 -2
  259. package/dist/data/Tree.cjs.map +1 -1
  260. package/dist/data/Tree.d.ts +6 -1
  261. package/dist/data/Tree.d.ts.map +1 -1
  262. package/dist/data/Tree.js +10 -2
  263. package/dist/data/Tree.js.map +1 -1
  264. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
  265. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
  266. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
  267. package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
  268. package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
  269. package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
  270. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  271. package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
  272. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  273. package/dist/data/ai/PromptRunEditor/index.js +38 -44
  274. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  275. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
  276. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  277. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
  278. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  279. package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
  280. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  281. package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
  282. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
  283. package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
  284. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
  285. package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
  286. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
  287. package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
  288. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  289. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
  290. package/dist/data/ai/SessionInspector.approvals.js +26 -2
  291. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  292. package/dist/data/ai/SessionInspector.cjs +143 -167
  293. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  294. package/dist/data/ai/SessionInspector.collection-types.d.ts +5 -0
  295. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
  296. package/dist/data/ai/SessionInspector.collection.cjs +18 -5
  297. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
  298. package/dist/data/ai/SessionInspector.collection.d.ts +2 -0
  299. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -1
  300. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts +6 -0
  301. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts.map +1 -0
  302. package/dist/data/ai/SessionInspector.collection.js +18 -5
  303. package/dist/data/ai/SessionInspector.collection.js.map +1 -1
  304. package/dist/data/ai/SessionInspector.d.ts +24 -2
  305. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  306. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +105 -7
  307. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -1
  308. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +12 -1
  309. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -1
  310. package/dist/data/ai/SessionInspector.hierarchy-state.js +107 -9
  311. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  313. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  314. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  315. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  316. package/dist/data/ai/SessionInspector.js +144 -168
  317. package/dist/data/ai/SessionInspector.js.map +1 -1
  318. package/dist/data/ai/SessionInspector.legacy.cjs +116 -0
  319. package/dist/data/ai/SessionInspector.legacy.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.legacy.d.ts +19 -0
  321. package/dist/data/ai/SessionInspector.legacy.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.legacy.js +116 -0
  323. package/dist/data/ai/SessionInspector.legacy.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.panels.cjs +3 -0
  325. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  326. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  327. package/dist/data/ai/SessionInspector.panels.js +3 -0
  328. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  329. package/dist/data/ai/SessionInspector.plan.cjs +29 -12
  330. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -1
  331. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -1
  332. package/dist/data/ai/SessionInspector.plan.js +30 -13
  333. package/dist/data/ai/SessionInspector.plan.js.map +1 -1
  334. package/dist/data/ai/SessionInspector.remote-view.cjs +44 -0
  335. package/dist/data/ai/SessionInspector.remote-view.cjs.map +1 -0
  336. package/dist/data/ai/SessionInspector.remote-view.d.ts +11 -0
  337. package/dist/data/ai/SessionInspector.remote-view.d.ts.map +1 -0
  338. package/dist/data/ai/SessionInspector.remote-view.js +44 -0
  339. package/dist/data/ai/SessionInspector.remote-view.js.map +1 -0
  340. package/dist/data/ai/SessionInspector.remote.cjs +275 -0
  341. package/dist/data/ai/SessionInspector.remote.cjs.map +1 -0
  342. package/dist/data/ai/SessionInspector.remote.d.ts +57 -0
  343. package/dist/data/ai/SessionInspector.remote.d.ts.map +1 -0
  344. package/dist/data/ai/SessionInspector.remote.js +275 -0
  345. package/dist/data/ai/SessionInspector.remote.js.map +1 -0
  346. package/dist/data/ai/SessionInspector.summary.cjs +9 -159
  347. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  348. package/dist/data/ai/SessionInspector.summary.d.ts +0 -3
  349. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  350. package/dist/data/ai/SessionInspector.summary.js +11 -161
  351. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  352. package/dist/data/ai/SessionInspector.tab-state.cjs +15 -0
  353. package/dist/data/ai/SessionInspector.tab-state.cjs.map +1 -0
  354. package/dist/data/ai/SessionInspector.tab-state.d.ts +3 -0
  355. package/dist/data/ai/SessionInspector.tab-state.d.ts.map +1 -0
  356. package/dist/data/ai/SessionInspector.tab-state.js +15 -0
  357. package/dist/data/ai/SessionInspector.tab-state.js.map +1 -0
  358. package/dist/data/ai/SessionInspector.tabs.model.cjs +31 -18
  359. package/dist/data/ai/SessionInspector.tabs.model.cjs.map +1 -1
  360. package/dist/data/ai/SessionInspector.tabs.model.d.ts +3 -1
  361. package/dist/data/ai/SessionInspector.tabs.model.d.ts.map +1 -1
  362. package/dist/data/ai/SessionInspector.tabs.model.js +32 -19
  363. package/dist/data/ai/SessionInspector.tabs.model.js.map +1 -1
  364. package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
  365. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
  366. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  367. package/dist/data/ai/SessionInspector.transcript.js +4 -0
  368. package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
  369. package/dist/data/ai/SessionInspector.verification.cjs +53 -0
  370. package/dist/data/ai/SessionInspector.verification.cjs.map +1 -0
  371. package/dist/data/ai/SessionInspector.verification.d.ts +7 -0
  372. package/dist/data/ai/SessionInspector.verification.d.ts.map +1 -0
  373. package/dist/data/ai/SessionInspector.verification.js +53 -0
  374. package/dist/data/ai/SessionInspector.verification.js.map +1 -0
  375. package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
  376. package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
  377. package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
  378. package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
  379. package/dist/data/ai/SessionViewer.approval-body.js +146 -0
  380. package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
  381. package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
  382. package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
  383. package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
  384. package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
  385. package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
  386. package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
  387. package/dist/data/ai/SessionViewer.cjs +57 -20
  388. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  389. package/dist/data/ai/SessionViewer.d.ts +13 -3
  390. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  391. package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
  392. package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
  393. package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
  394. package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
  395. package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
  396. package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
  397. package/dist/data/ai/SessionViewer.decision.cjs +21 -0
  398. package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
  399. package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
  400. package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
  401. package/dist/data/ai/SessionViewer.decision.js +21 -0
  402. package/dist/data/ai/SessionViewer.decision.js.map +1 -0
  403. package/dist/data/ai/SessionViewer.input.cjs +14 -0
  404. package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
  405. package/dist/data/ai/SessionViewer.input.d.ts +5 -0
  406. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
  407. package/dist/data/ai/SessionViewer.input.js +14 -0
  408. package/dist/data/ai/SessionViewer.input.js.map +1 -1
  409. package/dist/data/ai/SessionViewer.js +58 -21
  410. package/dist/data/ai/SessionViewer.js.map +1 -1
  411. package/dist/data/ai/SessionViewer.model.cjs +7 -1
  412. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  413. package/dist/data/ai/SessionViewer.model.d.ts +25 -3
  414. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  415. package/dist/data/ai/SessionViewer.model.js +7 -1
  416. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  417. package/dist/data/ai/SessionViewer.rows.cjs +6 -3
  418. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  419. package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
  420. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  421. package/dist/data/ai/SessionViewer.rows.js +6 -3
  422. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  423. package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
  424. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  425. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  426. package/dist/data/ai/SessionViewer.tool-row.js +27 -235
  427. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  428. package/dist/data/ai/SessionViewer.unified.d.ts +17 -0
  429. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  430. package/dist/data/ai/SessionViewerMenu.cjs +8 -2
  431. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  432. package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
  433. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  434. package/dist/data/ai/SessionViewerMenu.js +8 -2
  435. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  436. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
  437. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  438. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
  439. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  440. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
  441. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  442. package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
  443. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  444. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
  445. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  446. package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
  447. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  448. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
  449. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
  450. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  451. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
  452. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  453. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  454. package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
  455. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  456. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
  457. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  458. package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
  459. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  460. package/dist/data/ai/approval-request.cjs +75 -0
  461. package/dist/data/ai/approval-request.cjs.map +1 -0
  462. package/dist/data/ai/approval-request.d.ts +155 -0
  463. package/dist/data/ai/approval-request.d.ts.map +1 -0
  464. package/dist/data/ai/approval-request.js +75 -0
  465. package/dist/data/ai/approval-request.js.map +1 -0
  466. package/dist/data/ai/index.d.ts +6 -1
  467. package/dist/data/ai/index.d.ts.map +1 -1
  468. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
  469. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
  470. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
  471. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
  472. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
  473. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
  474. package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
  475. package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
  476. package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
  477. package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
  478. package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
  479. package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
  480. package/dist/data/ai/runtime-preset-menu/model.js +73 -0
  481. package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
  482. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
  483. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
  484. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
  485. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
  486. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
  487. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
  488. package/dist/data/ai/runtime-spec-fields.cjs +166 -0
  489. package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
  490. package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
  491. package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
  492. package/dist/data/ai/runtime-spec-fields.js +166 -0
  493. package/dist/data/ai/runtime-spec-fields.js.map +1 -0
  494. package/dist/data/ai/session-categories.cjs +4 -0
  495. package/dist/data/ai/session-categories.cjs.map +1 -1
  496. package/dist/data/ai/session-categories.d.ts +1 -0
  497. package/dist/data/ai/session-categories.d.ts.map +1 -1
  498. package/dist/data/ai/session-categories.js +4 -0
  499. package/dist/data/ai/session-categories.js.map +1 -1
  500. package/dist/data/ai/use-session-scroll.cjs +49 -21
  501. package/dist/data/ai/use-session-scroll.cjs.map +1 -1
  502. package/dist/data/ai/use-session-scroll.d.ts +2 -0
  503. package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
  504. package/dist/data/ai/use-session-scroll.js +49 -21
  505. package/dist/data/ai/use-session-scroll.js.map +1 -1
  506. package/dist/data/chat/Chat.runtime.cjs +1 -1
  507. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  508. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  509. package/dist/data/chat/Chat.runtime.js +1 -1
  510. package/dist/data/chat/Chat.runtime.js.map +1 -1
  511. package/dist/data/graph-columns-layout.cjs +216 -0
  512. package/dist/data/graph-columns-layout.cjs.map +1 -0
  513. package/dist/data/graph-columns-layout.d.ts +56 -0
  514. package/dist/data/graph-columns-layout.d.ts.map +1 -0
  515. package/dist/data/graph-columns-layout.js +216 -0
  516. package/dist/data/graph-columns-layout.js.map +1 -0
  517. package/dist/data/graph-diagram-model.cjs +73 -0
  518. package/dist/data/graph-diagram-model.cjs.map +1 -0
  519. package/dist/data/graph-diagram-model.d.ts +90 -0
  520. package/dist/data/graph-diagram-model.d.ts.map +1 -0
  521. package/dist/data/graph-diagram-model.js +73 -0
  522. package/dist/data/graph-diagram-model.js.map +1 -0
  523. package/dist/data/graph-edge-routing.cjs +235 -0
  524. package/dist/data/graph-edge-routing.cjs.map +1 -0
  525. package/dist/data/graph-edge-routing.d.ts +73 -0
  526. package/dist/data/graph-edge-routing.d.ts.map +1 -0
  527. package/dist/data/graph-edge-routing.js +235 -0
  528. package/dist/data/graph-edge-routing.js.map +1 -0
  529. package/dist/data/graph-layout.cjs +0 -82
  530. package/dist/data/graph-layout.cjs.map +1 -1
  531. package/dist/data/graph-layout.d.ts +1 -28
  532. package/dist/data/graph-layout.d.ts.map +1 -1
  533. package/dist/data/graph-layout.js +1 -83
  534. package/dist/data/graph-layout.js.map +1 -1
  535. package/dist/data/har/HarPanel.cjs +129 -33
  536. package/dist/data/har/HarPanel.cjs.map +1 -1
  537. package/dist/data/har/HarPanel.d.ts +13 -1
  538. package/dist/data/har/HarPanel.d.ts.map +1 -1
  539. package/dist/data/har/HarPanel.js +130 -34
  540. package/dist/data/har/HarPanel.js.map +1 -1
  541. package/dist/data/har/fixtures.d.ts +12 -0
  542. package/dist/data/har/fixtures.d.ts.map +1 -1
  543. package/dist/data/har/types.d.ts +12 -0
  544. package/dist/data/har/types.d.ts.map +1 -1
  545. package/dist/data/runtime/RuntimeBar.cjs +67 -84
  546. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  547. package/dist/data/runtime/RuntimeBar.d.ts +4 -5
  548. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  549. package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
  550. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
  551. package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
  552. package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
  553. package/dist/data/runtime/RuntimeBar.fields.js +170 -0
  554. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
  555. package/dist/data/runtime/RuntimeBar.js +70 -87
  556. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  557. package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
  558. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
  559. package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
  560. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
  561. package/dist/data/runtime/RuntimeBar.selection.js +56 -0
  562. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
  563. package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
  564. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  565. package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
  566. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  567. package/dist/data/runtime/RuntimeBarActions.js +10 -6
  568. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  569. package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
  570. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
  571. package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
  572. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
  573. package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
  574. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
  575. package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
  576. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
  577. package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
  578. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
  579. package/dist/data/runtime/RuntimeBarLayout.js +95 -0
  580. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
  581. package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
  582. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  583. package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
  584. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  585. package/dist/data/runtime/RuntimeBarSegment.js +25 -14
  586. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  587. package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
  588. package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
  589. package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
  590. package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
  591. package/dist/data/runtime/RuntimeLimitInput.js +41 -0
  592. package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
  593. package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
  594. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
  595. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
  596. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
  597. package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
  598. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
  599. package/dist/data/use-edge-focus.cjs +20 -0
  600. package/dist/data/use-edge-focus.cjs.map +1 -0
  601. package/dist/data/use-edge-focus.d.ts +23 -0
  602. package/dist/data/use-edge-focus.d.ts.map +1 -0
  603. package/dist/data/use-edge-focus.js +20 -0
  604. package/dist/data/use-edge-focus.js.map +1 -0
  605. package/dist/data/use-pan-zoom.cjs +159 -0
  606. package/dist/data/use-pan-zoom.cjs.map +1 -0
  607. package/dist/data/use-pan-zoom.d.ts +79 -0
  608. package/dist/data/use-pan-zoom.d.ts.map +1 -0
  609. package/dist/data/use-pan-zoom.js +159 -0
  610. package/dist/data/use-pan-zoom.js.map +1 -0
  611. package/dist/data/version-info.cjs +3 -3
  612. package/dist/data/version-info.js +3 -3
  613. package/dist/data.cjs +5 -1
  614. package/dist/data.cjs.map +1 -1
  615. package/dist/data.d.ts +4 -3
  616. package/dist/data.d.ts.map +1 -1
  617. package/dist/data.js +6 -2
  618. package/dist/data.js.map +1 -1
  619. package/dist/devtools/useDebugStream.cjs +5 -1
  620. package/dist/devtools/useDebugStream.cjs.map +1 -1
  621. package/dist/devtools/useDebugStream.d.ts.map +1 -1
  622. package/dist/devtools/useDebugStream.js +6 -2
  623. package/dist/devtools/useDebugStream.js.map +1 -1
  624. package/dist/hooks/event-source-provider.cjs +9 -0
  625. package/dist/hooks/event-source-provider.cjs.map +1 -0
  626. package/dist/hooks/event-source-provider.d.ts +15 -0
  627. package/dist/hooks/event-source-provider.d.ts.map +1 -0
  628. package/dist/hooks/event-source-provider.js +9 -0
  629. package/dist/hooks/event-source-provider.js.map +1 -0
  630. package/dist/hooks/event-source.cjs +11 -0
  631. package/dist/hooks/event-source.cjs.map +1 -0
  632. package/dist/hooks/event-source.d.ts +22 -0
  633. package/dist/hooks/event-source.d.ts.map +1 -0
  634. package/dist/hooks/event-source.js +11 -0
  635. package/dist/hooks/event-source.js.map +1 -0
  636. package/dist/hooks/use-log-tail.cjs +5 -1
  637. package/dist/hooks/use-log-tail.cjs.map +1 -1
  638. package/dist/hooks/use-log-tail.d.ts.map +1 -1
  639. package/dist/hooks/use-log-tail.js +5 -1
  640. package/dist/hooks/use-log-tail.js.map +1 -1
  641. package/dist/hooks/use-prompts.cjs +5 -1
  642. package/dist/hooks/use-prompts.cjs.map +1 -1
  643. package/dist/hooks/use-prompts.d.ts.map +1 -1
  644. package/dist/hooks/use-prompts.js +6 -2
  645. package/dist/hooks/use-prompts.js.map +1 -1
  646. package/dist/hooks/use-task-run.cjs +9 -2
  647. package/dist/hooks/use-task-run.cjs.map +1 -1
  648. package/dist/hooks/use-task-run.d.ts.map +1 -1
  649. package/dist/hooks/use-task-run.js +10 -3
  650. package/dist/hooks/use-task-run.js.map +1 -1
  651. package/dist/hooks.cjs +4 -0
  652. package/dist/hooks.cjs.map +1 -1
  653. package/dist/hooks.d.ts +2 -0
  654. package/dist/hooks.d.ts.map +1 -1
  655. package/dist/hooks.js +4 -0
  656. package/dist/hooks.js.map +1 -1
  657. package/dist/icons/programmingCatalog.cjs +34 -34
  658. package/dist/icons/programmingCatalog.cjs.map +1 -1
  659. package/dist/icons/programmingCatalog.js +34 -34
  660. package/dist/icons/programmingCatalog.js.map +1 -1
  661. package/dist/index.cjs +14 -3
  662. package/dist/index.cjs.map +1 -1
  663. package/dist/index.js +14 -3
  664. package/dist/index.js.map +1 -1
  665. package/dist/monaco/MonacoEditor.cjs +4 -1
  666. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  667. package/dist/monaco/MonacoEditor.d.ts +1 -1
  668. package/dist/monaco/MonacoEditor.d.ts.map +1 -1
  669. package/dist/monaco/MonacoEditor.js +4 -1
  670. package/dist/monaco/MonacoEditor.js.map +1 -1
  671. package/dist/monaco/types.d.ts +2 -1
  672. package/dist/monaco/types.d.ts.map +1 -1
  673. package/dist/overlay/CommandPalette.cjs +14 -4
  674. package/dist/overlay/CommandPalette.cjs.map +1 -1
  675. package/dist/overlay/CommandPalette.d.ts +5 -1
  676. package/dist/overlay/CommandPalette.d.ts.map +1 -1
  677. package/dist/overlay/CommandPalette.js +14 -4
  678. package/dist/overlay/CommandPalette.js.map +1 -1
  679. package/dist/overlay/CommandPaletteList.cjs +5 -0
  680. package/dist/overlay/CommandPaletteList.cjs.map +1 -1
  681. package/dist/overlay/CommandPaletteList.d.ts +4 -2
  682. package/dist/overlay/CommandPaletteList.d.ts.map +1 -1
  683. package/dist/overlay/CommandPaletteList.js +5 -0
  684. package/dist/overlay/CommandPaletteList.js.map +1 -1
  685. package/dist/overlay/DropdownMenu.cjs +2 -0
  686. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  687. package/dist/overlay/DropdownMenu.d.ts +4 -0
  688. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  689. package/dist/overlay/DropdownMenu.js +2 -0
  690. package/dist/overlay/DropdownMenu.js.map +1 -1
  691. package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
  692. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  693. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  694. package/dist/overlay/DropdownMenuSubmenu.js +31 -15
  695. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  696. package/dist/rpc/OperationCatalog.cjs +32 -27
  697. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  698. package/dist/rpc/OperationCatalog.d.ts +11 -1
  699. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  700. package/dist/rpc/OperationCatalog.js +32 -27
  701. package/dist/rpc/OperationCatalog.js.map +1 -1
  702. package/dist/rpc/OperationEntityContextPicker.cjs +62 -256
  703. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  704. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  705. package/dist/rpc/OperationEntityContextPicker.js +64 -258
  706. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  707. package/dist/rpc/OperationEntityPicker.cjs +185 -0
  708. package/dist/rpc/OperationEntityPicker.cjs.map +1 -0
  709. package/dist/rpc/OperationEntityPicker.d.ts +51 -0
  710. package/dist/rpc/OperationEntityPicker.d.ts.map +1 -0
  711. package/dist/rpc/OperationEntityPicker.js +185 -0
  712. package/dist/rpc/OperationEntityPicker.js.map +1 -0
  713. package/dist/rpc/OperationEntityPicker.model.cjs +39 -0
  714. package/dist/rpc/OperationEntityPicker.model.cjs.map +1 -0
  715. package/dist/rpc/OperationEntityPicker.model.d.ts +27 -0
  716. package/dist/rpc/OperationEntityPicker.model.d.ts.map +1 -0
  717. package/dist/rpc/OperationEntityPicker.model.js +39 -0
  718. package/dist/rpc/OperationEntityPicker.model.js.map +1 -0
  719. package/dist/rpc/operationCatalogRowSelection.cjs +85 -0
  720. package/dist/rpc/operationCatalogRowSelection.cjs.map +1 -0
  721. package/dist/rpc/operationCatalogRowSelection.d.ts +57 -0
  722. package/dist/rpc/operationCatalogRowSelection.d.ts.map +1 -0
  723. package/dist/rpc/operationCatalogRowSelection.js +85 -0
  724. package/dist/rpc/operationCatalogRowSelection.js.map +1 -0
  725. package/dist/rpc/operationEntityPicker.fixtures.d.ts +13 -0
  726. package/dist/rpc/operationEntityPicker.fixtures.d.ts.map +1 -0
  727. package/dist/rpc/useOperationPages.cjs +6 -1
  728. package/dist/rpc/useOperationPages.cjs.map +1 -1
  729. package/dist/rpc/useOperationPages.d.ts +3 -1
  730. package/dist/rpc/useOperationPages.d.ts.map +1 -1
  731. package/dist/rpc/useOperationPages.js +6 -1
  732. package/dist/rpc/useOperationPages.js.map +1 -1
  733. package/dist/rpc.cjs +2 -0
  734. package/dist/rpc.cjs.map +1 -1
  735. package/dist/rpc.d.ts +2 -0
  736. package/dist/rpc.d.ts.map +1 -1
  737. package/dist/rpc.js +2 -0
  738. package/dist/rpc.js.map +1 -1
  739. package/dist/styles.css +1 -1
  740. package/package.json +4 -1
  741. package/schemas/json-schema-form.schema.json +571 -0
  742. package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
  743. package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
  744. package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
  745. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
  746. package/dist/data/runtime/RuntimeBarCombo.js +0 -423
  747. package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
  748. package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
  749. package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
  750. package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
  751. package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
  752. package/dist/data/runtime/RuntimeBarLimits.js +0 -262
  753. package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
  754. package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
  755. package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
  756. package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
  757. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
  758. package/dist/data/runtime/RuntimeBarSegments.js +0 -346
  759. package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.legacy.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKjD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B;6EAC6E;AAC7E,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,GAAG,EAAE,aAAa,EAClB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,MAAkB,EAClB,QAAQ,EACR,cAAc,GACf,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B,+BAiGA"}
@@ -0,0 +1,116 @@
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { SessionInspectorPanel } from "./SessionInspector.panels.js";
5
+ import { CompactSessionInspectorToolbar } from "./SessionInspector.compact.js";
6
+ import { InspectorTabs } from "./SessionInspector.tabs.js";
7
+ import { inspectorTabs } from "./SessionInspector.tabs.model.js";
8
+ import { useInspectorTab } from "./SessionInspector.tab-state.js";
9
+ import { SessionViewer } from "./SessionViewer.js";
10
+ import { getSessionMetadata } from "./SessionViewer.model.js";
11
+ function LegacySessionInspector({
12
+ session,
13
+ className,
14
+ defaultTab = "transcript",
15
+ tab: controlledTab,
16
+ onTabChange,
17
+ transcriptProps,
18
+ composer,
19
+ layout = "default",
20
+ metadata,
21
+ toolbarActions
22
+ }) {
23
+ const compact = layout === "compact";
24
+ const [menuHost, setMenuHost] = useState(null);
25
+ const [tab, setTab] = useInspectorTab(
26
+ defaultTab,
27
+ false,
28
+ controlledTab,
29
+ onTabChange
30
+ );
31
+ const transcriptClassName = cn("h-full", transcriptProps == null ? void 0 : transcriptProps.className);
32
+ const compactTabs = inspectorTabs(false);
33
+ const compactMetadata = metadata ?? getSessionMetadata(session);
34
+ const viewerProps = compact ? {
35
+ ...transcriptProps,
36
+ menuContainer: menuHost,
37
+ showMenu: menuHost !== null && (transcriptProps == null ? void 0 : transcriptProps.showMenu) !== false
38
+ } : transcriptProps;
39
+ return /* @__PURE__ */ jsxs(
40
+ "div",
41
+ {
42
+ className: cn(
43
+ "flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm",
44
+ compact ? "@container rounded-none border-0 shadow-none" : "rounded-xl border border-border shadow-sm",
45
+ className
46
+ ),
47
+ children: [
48
+ compact ? /* @__PURE__ */ jsx(
49
+ CompactSessionInspectorToolbar,
50
+ {
51
+ tabs: compactTabs,
52
+ activeTab: tab,
53
+ onSelect: (next) => setTab(next),
54
+ onMenuHost: setMenuHost,
55
+ ...compactMetadata ? { metadata: compactMetadata } : {},
56
+ ...toolbarActions ? { toolbarActions } : {}
57
+ }
58
+ ) : /* @__PURE__ */ jsx(InspectorTabs, { tab, tabs: compactTabs, onSelect: setTab }),
59
+ /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: [
60
+ compact ? /* @__PURE__ */ jsxs(Fragment, { children: [
61
+ /* @__PURE__ */ jsx(
62
+ "div",
63
+ {
64
+ className: cn(
65
+ "min-h-0 flex-1 overflow-hidden",
66
+ tab !== "transcript" && "hidden"
67
+ ),
68
+ children: /* @__PURE__ */ jsx(
69
+ SessionViewer,
70
+ {
71
+ session,
72
+ scrollable: true,
73
+ showRowMetadata: true,
74
+ ...viewerProps,
75
+ className: transcriptClassName,
76
+ showHeader: false,
77
+ showContextMeter: false
78
+ }
79
+ )
80
+ }
81
+ ),
82
+ tab !== "transcript" ? /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto p-density-4", children: /* @__PURE__ */ jsx(
83
+ SessionInspectorPanel,
84
+ {
85
+ tab,
86
+ detail: void 0,
87
+ session
88
+ }
89
+ ) }) : null
90
+ ] }) : /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: tab === "transcript" ? /* @__PURE__ */ jsx(
91
+ SessionViewer,
92
+ {
93
+ session,
94
+ scrollable: true,
95
+ showRowMetadata: true,
96
+ ...transcriptProps,
97
+ className: transcriptClassName
98
+ }
99
+ ) : /* @__PURE__ */ jsx(
100
+ SessionInspectorPanel,
101
+ {
102
+ tab,
103
+ detail: void 0,
104
+ session
105
+ }
106
+ ) }),
107
+ composer ? /* @__PURE__ */ jsx("div", { className: "shrink-0 border-t border-border p-density-3", children: composer }) : null
108
+ ] })
109
+ ]
110
+ }
111
+ );
112
+ }
113
+ export {
114
+ LegacySessionInspector
115
+ };
116
+ //# sourceMappingURL=SessionInspector.legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.legacy.js","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport { CompactSessionInspectorToolbar } from \"./SessionInspector.compact\";\nimport { InspectorTabs } from \"./SessionInspector.tabs\";\nimport {\n inspectorTabs,\n type SessionInspectorTab,\n} from \"./SessionInspector.tabs.model\";\nimport { useInspectorTab } from \"./SessionInspector.tab-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport {\n getSessionMetadata,\n type SessionInput,\n type SessionMetadataSummary,\n} from \"./SessionViewer.model\";\n\n/** The inspector for a non-unified session (legacy entries or raw log text):\n * only the transcript carries content, so it has no hierarchy or facets. */\nexport function LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n tab: controlledTab,\n onTabChange,\n transcriptProps,\n composer,\n layout = \"default\",\n metadata,\n toolbarActions,\n}: {\n session: SessionInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n tab?: SessionInspectorTab;\n onTabChange?: (tab: SessionInspectorTab) => void;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n composer?: ReactNode;\n layout?: \"default\" | \"compact\";\n metadata?: SessionMetadataSummary;\n toolbarActions?: ReactNode;\n}) {\n const compact = layout === \"compact\";\n const [menuHost, setMenuHost] = useState<HTMLSpanElement | null>(null);\n const [tab, setTab] = useInspectorTab(\n defaultTab,\n false,\n controlledTab,\n onTabChange,\n );\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const compactTabs = inspectorTabs(false);\n const compactMetadata = metadata ?? getSessionMetadata(session);\n const viewerProps = compact\n ? {\n ...transcriptProps,\n menuContainer: menuHost,\n showMenu: menuHost !== null && transcriptProps?.showMenu !== false,\n }\n : transcriptProps;\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm\",\n compact\n ? \"@container rounded-none border-0 shadow-none\"\n : \"rounded-xl border border-border shadow-sm\",\n className,\n )}\n >\n {compact ? (\n <CompactSessionInspectorToolbar\n tabs={compactTabs}\n activeTab={tab}\n onSelect={(next) => setTab(next as SessionInspectorTab)}\n onMenuHost={setMenuHost}\n {...(compactMetadata ? { metadata: compactMetadata } : {})}\n {...(toolbarActions ? { toolbarActions } : {})}\n />\n ) : (\n <InspectorTabs tab={tab} tabs={compactTabs} onSelect={setTab} />\n )}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n {compact ? (\n <>\n <div\n className={cn(\n \"min-h-0 flex-1 overflow-hidden\",\n tab !== \"transcript\" && \"hidden\",\n )}\n >\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...viewerProps}\n className={transcriptClassName}\n showHeader={false}\n showContextMeter={false}\n />\n </div>\n {tab !== \"transcript\" ? (\n <div className=\"min-h-0 flex-1 overflow-auto p-density-4\">\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n </div>\n ) : null}\n </>\n ) : (\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 )}\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"],"names":[],"mappings":";;;;;;;;;;AAmBO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAWG;AACD,QAAM,UAAU,WAAW;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiC,IAAI;AACrE,QAAM,CAAC,KAAK,MAAM,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,sBAAsB,GAAG,UAAU,mDAAiB,SAAS;AACnE,QAAM,cAAc,cAAc,KAAK;AACvC,QAAM,kBAAkB,YAAY,mBAAmB,OAAO;AAC9D,QAAM,cAAc,UAChB;AAAA,IACE,GAAG;AAAA,IACH,eAAe;AAAA,IACf,UAAU,aAAa,SAAQ,mDAAiB,cAAa;AAAA,EAAA,IAE/D;AACJ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UACI,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAW;AAAA,YACX,UAAU,CAAC,SAAS,OAAO,IAA2B;AAAA,YACtD,YAAY;AAAA,YACX,GAAI,kBAAkB,EAAE,UAAU,gBAAA,IAAoB,CAAA;AAAA,YACtD,GAAI,iBAAiB,EAAE,mBAAmB,CAAA;AAAA,UAAC;AAAA,QAAA,IAG9C,oBAAC,eAAA,EAAc,KAAU,MAAM,aAAa,UAAU,QAAQ;AAAA,QAEhE,qBAAC,OAAA,EAAI,WAAU,gDACZ,UAAA;AAAA,UAAA,UACC,qBAAA,UAAA,EACE,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,QAAQ,gBAAgB;AAAA,gBAAA;AAAA,gBAG1B,UAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC;AAAA,oBACA,YAAU;AAAA,oBACV,iBAAe;AAAA,oBACd,GAAG;AAAA,oBACJ,WAAW;AAAA,oBACX,YAAY;AAAA,oBACZ,kBAAkB;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACpB;AAAA,YAAA;AAAA,YAED,QAAQ,eACP,oBAAC,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,QAAQ;AAAA,gBACR;AAAA,cAAA;AAAA,YAAA,GAEJ,IACE;AAAA,UAAA,GACN,IAEA,oBAAC,OAAA,EAAI,WAAU,kCACZ,kBAAQ,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,UAED,WACC,oBAAC,OAAA,EAAI,WAAU,+CACZ,oBACH,IACE;AAAA,QAAA,EAAA,CACN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -7,6 +7,7 @@ const sessionCost = require("./session-cost.cjs");
7
7
  const SessionInspector_model = require("./SessionInspector.model.cjs");
8
8
  const SessionInspector_files = require("./SessionInspector.files.cjs");
9
9
  const SessionInspector_plan = require("./SessionInspector.plan.cjs");
10
+ const SessionInspector_verification = require("./SessionInspector.verification.cjs");
10
11
  const SessionInspector_approvals = require("./SessionInspector.approvals.cjs");
11
12
  const SessionInspector_panelParts = require("./SessionInspector.panel-parts.cjs");
12
13
  const SessionInspector_panelValues = require("./SessionInspector.panel-values.cjs");
@@ -21,6 +22,8 @@ function SessionInspectorPanel({
21
22
  switch (tab) {
22
23
  case "output":
23
24
  return /* @__PURE__ */ jsxRuntime.jsx(StructuredOutputPanel, { value: detail == null ? void 0 : detail.structuredOutput });
25
+ case "verification":
26
+ return /* @__PURE__ */ jsxRuntime.jsx(SessionInspector_verification.SessionVerificationPanel, { verifications: detail == null ? void 0 : detail.verifications });
24
27
  case "files":
25
28
  return /* @__PURE__ */ jsxRuntime.jsx(SessionInspector_files.SessionFilesPanel, { files: detail == null ? void 0 : detail.files });
26
29
  case "plan":
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.panels.cjs","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport {\n SessionApprovalsPanel,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals\";\nimport { EmptyState } from \"./SessionInspector.panel-parts\";\nimport { kv, muted } from \"./SessionInspector.panel-values\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n onResolveApproval,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n onResolveApproval?: ApprovalResolveHandler;\n}) {\n switch (tab) {\n case \"output\":\n return <StructuredOutputPanel value={detail?.structuredOutput} />;\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return (\n <SessionApprovalsPanel\n approvals={detail?.approvals}\n requests={detail?.requests}\n {...(onResolveApproval ? { onResolve: onResolveApproval } : {})}\n />\n );\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction StructuredOutputPanel({ value }: { value: unknown }) {\n if (value === undefined || value === null)\n return <EmptyState>No structured output.</EmptyState>;\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={3}\n />\n );\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0)\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":["jsx","SessionFilesPanel","SessionPlanPanel","SessionApprovalsPanel","EmptyState","CodeBlock","jsxs","KeyValueList","kv","compactTokens","muted","tokenTotal","formatDate","durationLabel","costTotal","formatCost"],"mappings":"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"}
1
+ {"version":3,"file":"SessionInspector.panels.cjs","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport { SessionVerificationPanel } from \"./SessionInspector.verification\";\nimport {\n SessionApprovalsPanel,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals\";\nimport { EmptyState } from \"./SessionInspector.panel-parts\";\nimport { kv, muted } from \"./SessionInspector.panel-values\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n onResolveApproval,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n onResolveApproval?: ApprovalResolveHandler;\n}) {\n switch (tab) {\n case \"output\":\n return <StructuredOutputPanel value={detail?.structuredOutput} />;\n case \"verification\":\n return <SessionVerificationPanel verifications={detail?.verifications} />;\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return (\n <SessionApprovalsPanel\n approvals={detail?.approvals}\n requests={detail?.requests}\n {...(onResolveApproval ? { onResolve: onResolveApproval } : {})}\n />\n );\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction StructuredOutputPanel({ value }: { value: unknown }) {\n if (value === undefined || value === null)\n return <EmptyState>No structured output.</EmptyState>;\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={3}\n />\n );\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0),\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":["jsx","SessionVerificationPanel","SessionFilesPanel","SessionPlanPanel","SessionApprovalsPanel","EmptyState","CodeBlock","jsxs","KeyValueList","kv","compactTokens","muted","tokenTotal","formatDate","durationLabel","costTotal","formatCost"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.panels.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACH,MAAM,EACN,OAAO,EACP,YAAY,EACZ,iBAAiB,GAClB,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CAC5C,sCAoCA"}
1
+ {"version":3,"file":"SessionInspector.panels.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACH,MAAM,EACN,OAAO,EACP,YAAY,EACZ,iBAAiB,GAClB,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CAC5C,sCAsCA"}
@@ -5,6 +5,7 @@ import { tokenTotal, costTotal } from "./session-cost.js";
5
5
  import { formatDate, durationLabel } from "./SessionInspector.model.js";
6
6
  import { SessionFilesPanel } from "./SessionInspector.files.js";
7
7
  import { SessionPlanPanel } from "./SessionInspector.plan.js";
8
+ import { SessionVerificationPanel } from "./SessionInspector.verification.js";
8
9
  import { SessionApprovalsPanel } from "./SessionInspector.approvals.js";
9
10
  import { EmptyState } from "./SessionInspector.panel-parts.js";
10
11
  import { kv, muted } from "./SessionInspector.panel-values.js";
@@ -19,6 +20,8 @@ function SessionInspectorPanel({
19
20
  switch (tab) {
20
21
  case "output":
21
22
  return /* @__PURE__ */ jsx(StructuredOutputPanel, { value: detail == null ? void 0 : detail.structuredOutput });
23
+ case "verification":
24
+ return /* @__PURE__ */ jsx(SessionVerificationPanel, { verifications: detail == null ? void 0 : detail.verifications });
22
25
  case "files":
23
26
  return /* @__PURE__ */ jsx(SessionFilesPanel, { files: detail == null ? void 0 : detail.files });
24
27
  case "plan":
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.panels.js","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport {\n SessionApprovalsPanel,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals\";\nimport { EmptyState } from \"./SessionInspector.panel-parts\";\nimport { kv, muted } from \"./SessionInspector.panel-values\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n onResolveApproval,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n onResolveApproval?: ApprovalResolveHandler;\n}) {\n switch (tab) {\n case \"output\":\n return <StructuredOutputPanel value={detail?.structuredOutput} />;\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return (\n <SessionApprovalsPanel\n approvals={detail?.approvals}\n requests={detail?.requests}\n {...(onResolveApproval ? { onResolve: onResolveApproval } : {})}\n />\n );\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction StructuredOutputPanel({ value }: { value: unknown }) {\n if (value === undefined || value === null)\n return <EmptyState>No structured output.</EmptyState>;\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={3}\n />\n );\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0)\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionInspector.panels.js","sources":["../../../src/data/ai/SessionInspector.panels.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { KeyValueList, type KeyValueListItem } from \"../KeyValueList\";\nimport {\n compactTokens,\n costTotal,\n formatCost,\n tokenTotal,\n} from \"./session-cost\";\nimport { durationLabel, formatDate } from \"./SessionInspector.model\";\nimport { SessionFilesPanel } from \"./SessionInspector.files\";\nimport { SessionPlanPanel } from \"./SessionInspector.plan\";\nimport { SessionVerificationPanel } from \"./SessionInspector.verification\";\nimport {\n SessionApprovalsPanel,\n type ApprovalResolveHandler,\n} from \"./SessionInspector.approvals\";\nimport { EmptyState } from \"./SessionInspector.panel-parts\";\nimport { kv, muted } from \"./SessionInspector.panel-values\";\nimport type { SessionInput } from \"./SessionViewer.model\";\nimport type {\n SessionCost,\n SessionHealth,\n SessionLiveProcess,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type { SessionInspectorTab } from \"./SessionInspector\";\n\nexport function SessionInspectorPanel({\n tab,\n detail,\n session,\n onPlanChange,\n onResolveApproval,\n}: {\n tab: SessionInspectorTab;\n detail: UnifiedSessionInput | undefined;\n session: SessionInput;\n onPlanChange?: (content: string) => void;\n onResolveApproval?: ApprovalResolveHandler;\n}) {\n switch (tab) {\n case \"output\":\n return <StructuredOutputPanel value={detail?.structuredOutput} />;\n case \"verification\":\n return <SessionVerificationPanel verifications={detail?.verifications} />;\n case \"files\":\n return <SessionFilesPanel files={detail?.files} />;\n case \"plan\":\n return (\n <SessionPlanPanel\n plan={detail?.plan}\n {...(onPlanChange ? { onChange: onPlanChange } : {})}\n />\n );\n case \"approvals\":\n return (\n <SessionApprovalsPanel\n approvals={detail?.approvals}\n requests={detail?.requests}\n {...(onResolveApproval ? { onResolve: onResolveApproval } : {})}\n />\n );\n case \"costs\":\n return (\n <CostsPanel\n usage={detail?.usage}\n cost={detail?.cost}\n toolCosts={detail?.toolCosts}\n />\n );\n case \"metadata\":\n return <MetadataPanel session={detail} />;\n case \"raw\":\n return <RawPanel value={detail ?? session} />;\n default:\n return null;\n }\n}\n\nfunction StructuredOutputPanel({ value }: { value: unknown }) {\n if (value === undefined || value === null)\n return <EmptyState>No structured output.</EmptyState>;\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={3}\n />\n );\n}\n\nfunction CostsPanel({\n usage,\n cost,\n toolCosts,\n}: {\n usage: SessionUsage | undefined;\n cost: SessionCost | undefined;\n toolCosts: SessionCost[] | undefined;\n}) {\n if (!usage && !cost && !toolCosts?.length)\n return <EmptyState>No cost metadata.</EmptyState>;\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList\n items={[\n kv(\"Tokens\", usageLabel(usage ?? cost)),\n kv(\"Cost\", costLabel(cost)),\n kv(\"Input\", compactTokens((usage ?? cost)?.inputTokens)),\n kv(\"Output\", compactTokens((usage ?? cost)?.outputTokens)),\n kv(\"Reasoning\", compactTokens((usage ?? cost)?.reasoningTokens)),\n kv(\"Cache Read\", compactTokens((usage ?? cost)?.cacheReadTokens)),\n kv(\"Cache Write\", compactTokens((usage ?? cost)?.cacheWriteTokens)),\n ]}\n />\n {toolCosts?.length ? <CostBreakdown costs={toolCosts} /> : null}\n </div>\n );\n}\n\nfunction CostBreakdown({ costs }: { costs: SessionCost[] }) {\n return (\n <div className=\"overflow-auto rounded-md border border-border\">\n <table className=\"w-full min-w-[560px] border-collapse text-left text-sm\">\n <thead className=\"bg-muted/60 text-xs text-muted-foreground\">\n <tr>\n <Th>Model</Th>\n <Th>Tokens</Th>\n <Th>Input</Th>\n <Th>Output</Th>\n <Th>Cache</Th>\n <Th>Cost</Th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {costs.map((entry, index) => (\n <tr key={`${entry.model || \"model\"}-${index}`}>\n <Td>{entry.model || muted(\"unknown\")}</Td>\n <Td>{compactTokens(tokenTotal(entry))}</Td>\n <Td>{compactTokens(entry.inputTokens)}</Td>\n <Td>{compactTokens(entry.outputTokens)}</Td>\n <Td>\n {compactTokens(\n (entry.cacheReadTokens ?? 0) + (entry.cacheWriteTokens ?? 0),\n )}\n </Td>\n <Td>{costLabel(entry)}</Td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction MetadataPanel({\n session,\n}: {\n session: UnifiedSessionInput | undefined;\n}) {\n if (!session) return <EmptyState>No unified session metadata.</EmptyState>;\n const identity: KeyValueListItem[] = [\n kv(\"ID\", session.id),\n kv(\"Source\", session.source),\n kv(\"Project\", session.project),\n kv(\"CWD\", session.cwd),\n kv(\"History\", session.historyFile),\n kv(\"Model\", session.model),\n kv(\"Provider\", session.provider),\n kv(\"Mode\", session.modelMode),\n kv(\"Effort\", session.reasoningEffort),\n kv(\"Version\", session.version),\n kv(\"Git\", gitLabel(session.git)),\n kv(\"Started\", formatDate(session.startedAt)),\n kv(\"Ended\", formatDate(session.endedAt)),\n kv(\"Duration\", durationLabel(session.startedAt, session.endedAt)),\n kv(\"Live\", liveLabel(session.live)),\n kv(\"Health\", healthLabel(session.health)),\n ];\n return (\n <div className=\"space-y-density-4\">\n <KeyValueList items={identity} />\n <JsonSection title=\"Capabilities\" value={session.capabilities} />\n <JsonSection title=\"Context\" value={session.context} />\n <JsonSection title=\"Budget\" value={session.budget} />\n <JsonSection title=\"Events\" value={session.events} />\n <JsonSection title=\"Prompt\" value={session.prompt} />\n </div>\n );\n}\n\nfunction RawPanel({ value }: { value: unknown }) {\n return (\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n copyable\n jsonDefaultOpenDepth={1}\n />\n );\n}\n\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (\n value === undefined ||\n value === null ||\n (Array.isArray(value) && value.length === 0)\n )\n return null;\n return (\n <section>\n <h3 className=\"mb-density-2 text-xs font-semibold uppercase text-muted-foreground\">\n {title}\n </h3>\n <CodeBlock\n language=\"json\"\n source={jsonSource(value)}\n jsonDefaultOpenDepth={1}\n />\n </section>\n );\n}\n\nfunction Th({ children }: { children: ReactNode }) {\n return <th className=\"px-density-3 py-density-2 font-medium\">{children}</th>;\n}\n\nfunction Td({ children }: { children: ReactNode }) {\n return <td className=\"px-density-3 py-density-2\">{children}</td>;\n}\n\nfunction jsonSource(value: unknown) {\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction usageLabel(usage?: SessionUsage | SessionCost) {\n const total = tokenTotal(usage);\n return total ? `${compactTokens(total)} tokens` : muted(\"-\");\n}\n\nfunction costLabel(cost?: SessionCost) {\n const total = costTotal(cost);\n return total ? formatCost(total) : muted(\"-\");\n}\n\nfunction gitLabel(git?: {\n branch?: string;\n commit?: string;\n worktree?: string;\n diff?: string;\n}) {\n if (!git) return \"\";\n return [git.branch, git.commit, git.worktree, git.diff ? \"diff\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction liveLabel(live?: SessionLiveProcess) {\n if (!live) return \"\";\n return [\n live.status || (live.active ? \"active\" : \"inactive\"),\n live.pid ? `pid ${live.pid}` : \"\",\n live.command,\n ]\n .filter(Boolean)\n .join(\" - \");\n}\n\nfunction healthLabel(health?: SessionHealth[]) {\n return (\n health?.map((item) => `${item.severity}:${item.kind}`).join(\", \") ?? \"\"\n );\n}\n"],"names":[],"mappings":"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"}
@@ -3,12 +3,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
5
  const button = require("../../components/button.cjs");
6
- const MdxEditorField = require("../../components/MdxEditorField.cjs");
7
6
  const Icon = require("../Icon.cjs");
8
7
  const Markdown = require("../Markdown.cjs");
9
8
  const UiFileText = require("../../icons/components/UiFileText.cjs");
10
9
  const UiCheck = require("../../icons/components/UiCheck.cjs");
11
10
  const UiEdit = require("../../icons/components/UiEdit.cjs");
11
+ const LazyMdxEditorField = react.lazy(async () => {
12
+ const mod = await Promise.resolve().then(() => require("../../components/MdxEditorField.cjs"));
13
+ return { default: mod.MdxEditorField };
14
+ });
12
15
  function SessionPlanPanel({
13
16
  plan,
14
17
  onChange
@@ -57,18 +60,32 @@ function SessionPlanPanel({
57
60
  )
58
61
  ] }),
59
62
  editing ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-density-3", children: /* @__PURE__ */ jsxRuntime.jsx(
60
- MdxEditorField.MdxEditorField,
63
+ react.Suspense,
61
64
  {
62
- value: content,
63
- onChange: updateContent,
64
- "aria-label": "Plan markdown",
65
- toolbar: true,
66
- headings: true,
67
- lists: true,
68
- links: true,
69
- codeBlocks: true,
70
- codeMirror: true,
71
- className: "min-h-80"
65
+ fallback: /* @__PURE__ */ jsxRuntime.jsx(
66
+ "textarea",
67
+ {
68
+ "aria-label": "Plan markdown",
69
+ className: "min-h-80 w-full rounded-md border border-input bg-background p-density-2 font-mono text-sm",
70
+ value: content,
71
+ onChange: (e) => updateContent(e.target.value)
72
+ }
73
+ ),
74
+ children: /* @__PURE__ */ jsxRuntime.jsx(
75
+ LazyMdxEditorField,
76
+ {
77
+ value: content,
78
+ onChange: updateContent,
79
+ "aria-label": "Plan markdown",
80
+ toolbar: true,
81
+ headings: true,
82
+ lists: true,
83
+ links: true,
84
+ codeBlocks: true,
85
+ codeMirror: true,
86
+ className: "min-h-80"
87
+ }
88
+ )
72
89
  }
73
90
  ) }) : content ? /* @__PURE__ */ jsxRuntime.jsx(Markdown.Markdown, { text: content, className: "px-density-1 py-density-4" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-density-6 text-center text-sm text-muted-foreground", children: "The plan is empty." })
74
91
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.plan.cjs","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { UiCheck, UiEdit, UiFileText } from \"../../icons\";\nimport { Button } from \"../../components/button\";\nimport { MdxEditorField } from \"../../components/MdxEditorField\";\nimport { Icon } from \"../Icon\";\nimport { Markdown } from \"../Markdown\";\nimport type { SessionPlan } from \"./SessionViewer.unified\";\n\nexport function SessionPlanPanel({\n plan,\n onChange,\n}: {\n plan: SessionPlan | undefined;\n onChange?: (content: string) => void;\n}) {\n const [editing, setEditing] = useState(false);\n const [content, setContent] = useState(plan?.content ?? \"\");\n\n useEffect(() => setContent(plan?.content ?? \"\"), [plan?.content]);\n\n if (!plan) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No plan metadata.\n </div>\n );\n }\n\n const updateContent = (next: string) => {\n setContent(next);\n onChange?.(next);\n };\n\n return (\n <section>\n <header className=\"flex min-w-0 items-center gap-density-2 border-b border-border px-density-1 pb-density-2\">\n <Icon\n icon={UiFileText}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate font-mono text-xs text-foreground\">\n {plan.path || plan.slug || \"Session plan\"}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {plan.events?.length ?? 0} events\n {plan.explicit ? \" · explicit\" : \"\"}\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n aria-label={editing ? \"Done editing plan\" : \"Edit plan\"}\n onClick={() => setEditing((value) => !value)}\n >\n <Icon icon={editing ? UiCheck : UiEdit} />\n {editing ? \"Done\" : \"Edit\"}\n </Button>\n </header>\n {editing ? (\n <div className=\"pt-density-3\">\n <MdxEditorField\n value={content}\n onChange={updateContent}\n aria-label=\"Plan markdown\"\n toolbar\n headings\n lists\n links\n codeBlocks\n codeMirror\n className=\"min-h-80\"\n />\n </div>\n ) : content ? (\n <Markdown text={content} className=\"px-density-1 py-density-4\" />\n ) : (\n <div className=\"p-density-6 text-center text-sm text-muted-foreground\">\n The plan is empty.\n </div>\n )}\n </section>\n );\n}\n"],"names":["useState","useEffect","jsx","jsxs","Icon","UiFileText","Button","UiCheck","UiEdit","MdxEditorField","Markdown"],"mappings":";;;;;;;;;;;AAQO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGG;;AACD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,UAAS,6BAAM,YAAW,EAAE;AAE1DC,kBAAU,MAAM,YAAW,6BAAM,YAAW,EAAE,GAAG,CAAC,6BAAM,OAAO,CAAC;AAEhE,MAAI,CAAC,MAAM;AACT,WACEC,2BAAAA,IAAC,OAAA,EAAI,WAAU,uGAAsG,UAAA,qBAErH;AAAA,EAEJ;AAEA,QAAM,gBAAgB,CAAC,SAAiB;AACtC,eAAW,IAAI;AACf,yCAAW;AAAA,EACb;AAEA,yCACG,WAAA,EACC,UAAA;AAAA,IAAAC,2BAAAA,KAAC,UAAA,EAAO,WAAU,4FAChB,UAAA;AAAA,MAAAD,2BAAAA;AAAAA,QAACE,KAAAA;AAAAA,QAAA;AAAA,UACC,MAAMC,WAAAA;AAAAA,UACN,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZF,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAAD,2BAAAA,IAAC,SAAI,WAAU,8CACZ,eAAK,QAAQ,KAAK,QAAQ,eAAA,CAC7B;AAAA,QACAC,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,YAAA,UAAK,WAAL,mBAAa,WAAU;AAAA,UAAE;AAAA,UACzB,KAAK,WAAW,gBAAgB;AAAA,QAAA,EAAA,CACnC;AAAA,MAAA,GACF;AAAA,MACAA,2BAAAA;AAAAA,QAACG,OAAAA;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAY,UAAU,sBAAsB;AAAA,UAC5C,SAAS,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK;AAAA,UAE3C,UAAA;AAAA,YAAAJ,2BAAAA,IAACE,KAAAA,MAAA,EAAK,MAAM,UAAUG,QAAAA,UAAUC,OAAAA,QAAQ;AAAA,YACvC,UAAU,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACtB,GACF;AAAA,IACC,UACCN,2BAAAA,IAAC,OAAA,EAAI,WAAU,gBACb,UAAAA,2BAAAA;AAAAA,MAACO,eAAAA;AAAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAW;AAAA,QACX,SAAO;AAAA,QACP,UAAQ;AAAA,QACR,OAAK;AAAA,QACL,OAAK;AAAA,QACL,YAAU;AAAA,QACV,YAAU;AAAA,QACV,WAAU;AAAA,MAAA;AAAA,IAAA,EACZ,CACF,IACE,UACFP,2BAAAA,IAACQ,SAAAA,YAAS,MAAM,SAAS,WAAU,4BAAA,CAA4B,IAE/DR,2BAAAA,IAAC,OAAA,EAAI,WAAU,yDAAwD,UAAA,qBAAA,CAEvE;AAAA,EAAA,GAEJ;AAEJ;;"}
1
+ {"version":3,"file":"SessionInspector.plan.cjs","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, useState } from \"react\";\nimport { UiCheck, UiEdit, UiFileText } from \"../../icons\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { Markdown } from \"../Markdown\";\nimport type { SessionPlan } from \"./SessionViewer.unified\";\n\n// Loaded lazily so a static import here doesn't pull @mdxeditor/editor into\n// every host that imports the `data`/main entry — mirrors the pattern in\n// components/json-schema-form-fields.tsx.\nconst LazyMdxEditorField = lazy(async () => {\n const mod = await import(\"../../components/MdxEditorField\");\n return { default: mod.MdxEditorField };\n});\n\nexport function SessionPlanPanel({\n plan,\n onChange,\n}: {\n plan: SessionPlan | undefined;\n onChange?: (content: string) => void;\n}) {\n const [editing, setEditing] = useState(false);\n const [content, setContent] = useState(plan?.content ?? \"\");\n\n useEffect(() => setContent(plan?.content ?? \"\"), [plan?.content]);\n\n if (!plan) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No plan metadata.\n </div>\n );\n }\n\n const updateContent = (next: string) => {\n setContent(next);\n onChange?.(next);\n };\n\n return (\n <section>\n <header className=\"flex min-w-0 items-center gap-density-2 border-b border-border px-density-1 pb-density-2\">\n <Icon\n icon={UiFileText}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate font-mono text-xs text-foreground\">\n {plan.path || plan.slug || \"Session plan\"}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {plan.events?.length ?? 0} events\n {plan.explicit ? \" · explicit\" : \"\"}\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n aria-label={editing ? \"Done editing plan\" : \"Edit plan\"}\n onClick={() => setEditing((value) => !value)}\n >\n <Icon icon={editing ? UiCheck : UiEdit} />\n {editing ? \"Done\" : \"Edit\"}\n </Button>\n </header>\n {editing ? (\n <div className=\"pt-density-3\">\n <Suspense\n fallback={\n <textarea\n aria-label=\"Plan markdown\"\n className=\"min-h-80 w-full rounded-md border border-input bg-background p-density-2 font-mono text-sm\"\n value={content}\n onChange={(e) => updateContent(e.target.value)}\n />\n }\n >\n <LazyMdxEditorField\n value={content}\n onChange={updateContent}\n aria-label=\"Plan markdown\"\n toolbar\n headings\n lists\n links\n codeBlocks\n codeMirror\n className=\"min-h-80\"\n />\n </Suspense>\n </div>\n ) : content ? (\n <Markdown text={content} className=\"px-density-1 py-density-4\" />\n ) : (\n <div className=\"p-density-6 text-center text-sm text-muted-foreground\">\n The plan is empty.\n </div>\n )}\n </section>\n );\n}\n"],"names":["lazy","useState","useEffect","jsx","jsxs","Icon","UiFileText","Button","UiCheck","UiEdit","Suspense","Markdown"],"mappings":";;;;;;;;;;AAUA,MAAM,qBAAqBA,MAAAA,KAAK,YAAY;AAC1C,QAAM,MAAM,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,qCAAiC,CAAA;AAC1D,SAAO,EAAE,SAAS,IAAI,eAAA;AACxB,CAAC;AAEM,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGG;;AACD,QAAM,CAAC,SAAS,UAAU,IAAIC,MAAAA,SAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,UAAS,6BAAM,YAAW,EAAE;AAE1DC,kBAAU,MAAM,YAAW,6BAAM,YAAW,EAAE,GAAG,CAAC,6BAAM,OAAO,CAAC;AAEhE,MAAI,CAAC,MAAM;AACT,WACEC,2BAAAA,IAAC,OAAA,EAAI,WAAU,uGAAsG,UAAA,qBAErH;AAAA,EAEJ;AAEA,QAAM,gBAAgB,CAAC,SAAiB;AACtC,eAAW,IAAI;AACf,yCAAW;AAAA,EACb;AAEA,yCACG,WAAA,EACC,UAAA;AAAA,IAAAC,2BAAAA,KAAC,UAAA,EAAO,WAAU,4FAChB,UAAA;AAAA,MAAAD,2BAAAA;AAAAA,QAACE,KAAAA;AAAAA,QAAA;AAAA,UACC,MAAMC,WAAAA;AAAAA,UACN,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZF,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAAD,2BAAAA,IAAC,SAAI,WAAU,8CACZ,eAAK,QAAQ,KAAK,QAAQ,eAAA,CAC7B;AAAA,QACAC,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,YAAA,UAAK,WAAL,mBAAa,WAAU;AAAA,UAAE;AAAA,UACzB,KAAK,WAAW,gBAAgB;AAAA,QAAA,EAAA,CACnC;AAAA,MAAA,GACF;AAAA,MACAA,2BAAAA;AAAAA,QAACG,OAAAA;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAY,UAAU,sBAAsB;AAAA,UAC5C,SAAS,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK;AAAA,UAE3C,UAAA;AAAA,YAAAJ,2BAAAA,IAACE,KAAAA,MAAA,EAAK,MAAM,UAAUG,QAAAA,UAAUC,OAAAA,QAAQ;AAAA,YACvC,UAAU,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACtB,GACF;AAAA,IACC,UACCN,2BAAAA,IAAC,OAAA,EAAI,WAAU,gBACb,UAAAA,2BAAAA;AAAAA,MAACO,MAAAA;AAAAA,MAAA;AAAA,QACC,UACEP,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,WAAU;AAAA,YACV,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAIjD,UAAAA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,YACV,cAAW;AAAA,YACX,SAAO;AAAA,YACP,UAAQ;AAAA,YACR,OAAK;AAAA,YACL,OAAK;AAAA,YACL,YAAU;AAAA,YACV,YAAU;AAAA,YACV,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA,EACF,CACF,IACE,UACFA,2BAAAA,IAACQ,SAAAA,YAAS,MAAM,SAAS,WAAU,4BAAA,CAA4B,IAE/DR,2BAAAA,IAAC,OAAA,EAAI,WAAU,yDAAwD,UAAA,qBAAA,CAEvE;AAAA,EAAA,GAEJ;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.plan.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,+BAsEA"}
1
+ {"version":3,"file":"SessionInspector.plan.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,+BAiFA"}
@@ -1,12 +1,15 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from "react";
2
+ import { useState, useEffect, Suspense, lazy } from "react";
3
3
  import { Button } from "../../components/button.js";
4
- import { MdxEditorField } from "../../components/MdxEditorField.js";
5
4
  import { Icon } from "../Icon.js";
6
5
  import { Markdown } from "../Markdown.js";
7
6
  import { UiFileText } from "../../icons/components/UiFileText.js";
8
7
  import { UiCheck } from "../../icons/components/UiCheck.js";
9
8
  import { UiEdit } from "../../icons/components/UiEdit.js";
9
+ const LazyMdxEditorField = lazy(async () => {
10
+ const mod = await import("../../components/MdxEditorField.js");
11
+ return { default: mod.MdxEditorField };
12
+ });
10
13
  function SessionPlanPanel({
11
14
  plan,
12
15
  onChange
@@ -55,18 +58,32 @@ function SessionPlanPanel({
55
58
  )
56
59
  ] }),
57
60
  editing ? /* @__PURE__ */ jsx("div", { className: "pt-density-3", children: /* @__PURE__ */ jsx(
58
- MdxEditorField,
61
+ Suspense,
59
62
  {
60
- value: content,
61
- onChange: updateContent,
62
- "aria-label": "Plan markdown",
63
- toolbar: true,
64
- headings: true,
65
- lists: true,
66
- links: true,
67
- codeBlocks: true,
68
- codeMirror: true,
69
- className: "min-h-80"
63
+ fallback: /* @__PURE__ */ jsx(
64
+ "textarea",
65
+ {
66
+ "aria-label": "Plan markdown",
67
+ className: "min-h-80 w-full rounded-md border border-input bg-background p-density-2 font-mono text-sm",
68
+ value: content,
69
+ onChange: (e) => updateContent(e.target.value)
70
+ }
71
+ ),
72
+ children: /* @__PURE__ */ jsx(
73
+ LazyMdxEditorField,
74
+ {
75
+ value: content,
76
+ onChange: updateContent,
77
+ "aria-label": "Plan markdown",
78
+ toolbar: true,
79
+ headings: true,
80
+ lists: true,
81
+ links: true,
82
+ codeBlocks: true,
83
+ codeMirror: true,
84
+ className: "min-h-80"
85
+ }
86
+ )
70
87
  }
71
88
  ) }) : content ? /* @__PURE__ */ jsx(Markdown, { text: content, className: "px-density-1 py-density-4" }) : /* @__PURE__ */ jsx("div", { className: "p-density-6 text-center text-sm text-muted-foreground", children: "The plan is empty." })
72
89
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.plan.js","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { UiCheck, UiEdit, UiFileText } from \"../../icons\";\nimport { Button } from \"../../components/button\";\nimport { MdxEditorField } from \"../../components/MdxEditorField\";\nimport { Icon } from \"../Icon\";\nimport { Markdown } from \"../Markdown\";\nimport type { SessionPlan } from \"./SessionViewer.unified\";\n\nexport function SessionPlanPanel({\n plan,\n onChange,\n}: {\n plan: SessionPlan | undefined;\n onChange?: (content: string) => void;\n}) {\n const [editing, setEditing] = useState(false);\n const [content, setContent] = useState(plan?.content ?? \"\");\n\n useEffect(() => setContent(plan?.content ?? \"\"), [plan?.content]);\n\n if (!plan) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No plan metadata.\n </div>\n );\n }\n\n const updateContent = (next: string) => {\n setContent(next);\n onChange?.(next);\n };\n\n return (\n <section>\n <header className=\"flex min-w-0 items-center gap-density-2 border-b border-border px-density-1 pb-density-2\">\n <Icon\n icon={UiFileText}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate font-mono text-xs text-foreground\">\n {plan.path || plan.slug || \"Session plan\"}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {plan.events?.length ?? 0} events\n {plan.explicit ? \" · explicit\" : \"\"}\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n aria-label={editing ? \"Done editing plan\" : \"Edit plan\"}\n onClick={() => setEditing((value) => !value)}\n >\n <Icon icon={editing ? UiCheck : UiEdit} />\n {editing ? \"Done\" : \"Edit\"}\n </Button>\n </header>\n {editing ? (\n <div className=\"pt-density-3\">\n <MdxEditorField\n value={content}\n onChange={updateContent}\n aria-label=\"Plan markdown\"\n toolbar\n headings\n lists\n links\n codeBlocks\n codeMirror\n className=\"min-h-80\"\n />\n </div>\n ) : content ? (\n <Markdown text={content} className=\"px-density-1 py-density-4\" />\n ) : (\n <div className=\"p-density-6 text-center text-sm text-muted-foreground\">\n The plan is empty.\n </div>\n )}\n </section>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAQO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGG;;AACD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAI,UAAS,6BAAM,YAAW,EAAE;AAE1D,YAAU,MAAM,YAAW,6BAAM,YAAW,EAAE,GAAG,CAAC,6BAAM,OAAO,CAAC;AAEhE,MAAI,CAAC,MAAM;AACT,WACE,oBAAC,OAAA,EAAI,WAAU,uGAAsG,UAAA,qBAErH;AAAA,EAEJ;AAEA,QAAM,gBAAgB,CAAC,SAAiB;AACtC,eAAW,IAAI;AACf,yCAAW;AAAA,EACb;AAEA,8BACG,WAAA,EACC,UAAA;AAAA,IAAA,qBAAC,UAAA,EAAO,WAAU,4FAChB,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,qBAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAA,oBAAC,SAAI,WAAU,8CACZ,eAAK,QAAQ,KAAK,QAAQ,eAAA,CAC7B;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,YAAA,UAAK,WAAL,mBAAa,WAAU;AAAA,UAAE;AAAA,UACzB,KAAK,WAAW,gBAAgB;AAAA,QAAA,EAAA,CACnC;AAAA,MAAA,GACF;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAY,UAAU,sBAAsB;AAAA,UAC5C,SAAS,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK;AAAA,UAE3C,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAM,UAAU,UAAU,QAAQ;AAAA,YACvC,UAAU,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACtB,GACF;AAAA,IACC,UACC,oBAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAW;AAAA,QACX,SAAO;AAAA,QACP,UAAQ;AAAA,QACR,OAAK;AAAA,QACL,OAAK;AAAA,QACL,YAAU;AAAA,QACV,YAAU;AAAA,QACV,WAAU;AAAA,MAAA;AAAA,IAAA,EACZ,CACF,IACE,UACF,oBAAC,YAAS,MAAM,SAAS,WAAU,4BAAA,CAA4B,IAE/D,oBAAC,OAAA,EAAI,WAAU,yDAAwD,UAAA,qBAAA,CAEvE;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"SessionInspector.plan.js","sources":["../../../src/data/ai/SessionInspector.plan.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, useState } from \"react\";\nimport { UiCheck, UiEdit, UiFileText } from \"../../icons\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { Markdown } from \"../Markdown\";\nimport type { SessionPlan } from \"./SessionViewer.unified\";\n\n// Loaded lazily so a static import here doesn't pull @mdxeditor/editor into\n// every host that imports the `data`/main entry — mirrors the pattern in\n// components/json-schema-form-fields.tsx.\nconst LazyMdxEditorField = lazy(async () => {\n const mod = await import(\"../../components/MdxEditorField\");\n return { default: mod.MdxEditorField };\n});\n\nexport function SessionPlanPanel({\n plan,\n onChange,\n}: {\n plan: SessionPlan | undefined;\n onChange?: (content: string) => void;\n}) {\n const [editing, setEditing] = useState(false);\n const [content, setContent] = useState(plan?.content ?? \"\");\n\n useEffect(() => setContent(plan?.content ?? \"\"), [plan?.content]);\n\n if (!plan) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No plan metadata.\n </div>\n );\n }\n\n const updateContent = (next: string) => {\n setContent(next);\n onChange?.(next);\n };\n\n return (\n <section>\n <header className=\"flex min-w-0 items-center gap-density-2 border-b border-border px-density-1 pb-density-2\">\n <Icon\n icon={UiFileText}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate font-mono text-xs text-foreground\">\n {plan.path || plan.slug || \"Session plan\"}\n </div>\n <div className=\"text-[11px] text-muted-foreground\">\n {plan.events?.length ?? 0} events\n {plan.explicit ? \" · explicit\" : \"\"}\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n aria-label={editing ? \"Done editing plan\" : \"Edit plan\"}\n onClick={() => setEditing((value) => !value)}\n >\n <Icon icon={editing ? UiCheck : UiEdit} />\n {editing ? \"Done\" : \"Edit\"}\n </Button>\n </header>\n {editing ? (\n <div className=\"pt-density-3\">\n <Suspense\n fallback={\n <textarea\n aria-label=\"Plan markdown\"\n className=\"min-h-80 w-full rounded-md border border-input bg-background p-density-2 font-mono text-sm\"\n value={content}\n onChange={(e) => updateContent(e.target.value)}\n />\n }\n >\n <LazyMdxEditorField\n value={content}\n onChange={updateContent}\n aria-label=\"Plan markdown\"\n toolbar\n headings\n lists\n links\n codeBlocks\n codeMirror\n className=\"min-h-80\"\n />\n </Suspense>\n </div>\n ) : content ? (\n <Markdown text={content} className=\"px-density-1 py-density-4\" />\n ) : (\n <div className=\"p-density-6 text-center text-sm text-muted-foreground\">\n The plan is empty.\n </div>\n )}\n </section>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,qBAAqB,KAAK,YAAY;AAC1C,QAAM,MAAM,MAAM,OAAO,oCAAiC;AAC1D,SAAO,EAAE,SAAS,IAAI,eAAA;AACxB,CAAC;AAEM,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGG;;AACD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAI,UAAS,6BAAM,YAAW,EAAE;AAE1D,YAAU,MAAM,YAAW,6BAAM,YAAW,EAAE,GAAG,CAAC,6BAAM,OAAO,CAAC;AAEhE,MAAI,CAAC,MAAM;AACT,WACE,oBAAC,OAAA,EAAI,WAAU,uGAAsG,UAAA,qBAErH;AAAA,EAEJ;AAEA,QAAM,gBAAgB,CAAC,SAAiB;AACtC,eAAW,IAAI;AACf,yCAAW;AAAA,EACb;AAEA,8BACG,WAAA,EACC,UAAA;AAAA,IAAA,qBAAC,UAAA,EAAO,WAAU,4FAChB,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,qBAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAA,oBAAC,SAAI,WAAU,8CACZ,eAAK,QAAQ,KAAK,QAAQ,eAAA,CAC7B;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,YAAA,UAAK,WAAL,mBAAa,WAAU;AAAA,UAAE;AAAA,UACzB,KAAK,WAAW,gBAAgB;AAAA,QAAA,EAAA,CACnC;AAAA,MAAA,GACF;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAY,UAAU,sBAAsB;AAAA,UAC5C,SAAS,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK;AAAA,UAE3C,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAM,UAAU,UAAU,QAAQ;AAAA,YACvC,UAAU,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACtB,GACF;AAAA,IACC,UACC,oBAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,WAAU;AAAA,YACV,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAIjD,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,YACV,cAAW;AAAA,YACX,SAAO;AAAA,YACP,UAAQ;AAAA,YACR,OAAK;AAAA,YACL,OAAK;AAAA,YACL,YAAU;AAAA,YACV,YAAU;AAAA,YACV,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA,EACF,CACF,IACE,UACF,oBAAC,YAAS,MAAM,SAAS,WAAU,4BAAA,CAA4B,IAE/D,oBAAC,OAAA,EAAI,WAAU,yDAAwD,UAAA,qBAAA,CAEvE;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,44 @@
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 RemoteSessionStatus({
6
+ loading,
7
+ error,
8
+ className,
9
+ children
10
+ }) {
11
+ const alert = error ? /* @__PURE__ */ jsxRuntime.jsx(
12
+ "div",
13
+ {
14
+ role: "alert",
15
+ className: "shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive",
16
+ children: error
17
+ }
18
+ ) : null;
19
+ if (children) {
20
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex h-full min-h-0 w-full flex-col gap-density-2", className), children: [
21
+ alert,
22
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1", children })
23
+ ] });
24
+ }
25
+ return /* @__PURE__ */ jsxRuntime.jsx(
26
+ "div",
27
+ {
28
+ "aria-busy": loading,
29
+ className: utils.cn(
30
+ "flex h-full min-h-0 w-full flex-col gap-density-3 rounded-xl border border-border bg-background p-density-4 text-sm shadow-sm",
31
+ className
32
+ ),
33
+ children: alert ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
34
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Loading session…" }),
35
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-control-h w-1/3 animate-pulse rounded-md bg-muted" }),
36
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }),
37
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-5/6 animate-pulse rounded bg-muted" }),
38
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-2/3 animate-pulse rounded bg-muted" })
39
+ ] })
40
+ }
41
+ );
42
+ }
43
+ exports.RemoteSessionStatus = RemoteSessionStatus;
44
+ //# sourceMappingURL=SessionInspector.remote-view.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.remote-view.cjs","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n/** Loading and error chrome for a SessionInspector fed from a URL. With\n * `children` (a session already loaded) the error sits above it; without,\n * it replaces the inspector: a skeleton while loading, the alert on failure. */\nexport function RemoteSessionStatus({\n loading,\n error,\n className,\n children,\n}: {\n loading: boolean;\n error?: string;\n className?: string;\n children?: ReactNode;\n}) {\n const alert = error ? (\n <div\n role=\"alert\"\n className=\"shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive\"\n >\n {error}\n </div>\n ) : null;\n if (children) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full flex-col gap-density-2\", className)}>\n {alert}\n <div className=\"min-h-0 flex-1\">{children}</div>\n </div>\n );\n }\n return (\n <div\n aria-busy={loading}\n className={cn(\n \"flex h-full min-h-0 w-full flex-col gap-density-3 rounded-xl border border-border bg-background p-density-4 text-sm shadow-sm\",\n className,\n )}\n >\n {alert ?? (\n <>\n <p className=\"text-xs text-muted-foreground\">Loading session…</p>\n <div className=\"h-control-h w-1/3 animate-pulse rounded-md bg-muted\" />\n <div className=\"h-4 w-full animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-5/6 animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-2/3 animate-pulse rounded bg-muted\" />\n </>\n )}\n </div>\n );\n}\n"],"names":["jsx","cn","jsxs","Fragment"],"mappings":";;;;AAMO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,QAAQ,QACZA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MAET,UAAA;AAAA,IAAA;AAAA,EAAA,IAED;AACJ,MAAI,UAAU;AACZ,2CACG,OAAA,EAAI,WAAWC,MAAAA,GAAG,qDAAqD,SAAS,GAC9E,UAAA;AAAA,MAAA;AAAA,MACDD,2BAAAA,IAAC,OAAA,EAAI,WAAU,kBAAkB,SAAA,CAAS;AAAA,IAAA,GAC5C;AAAA,EAEJ;AACA,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGD,mBACCC,2BAAAA,KAAAC,WAAAA,UAAA,EACE,UAAA;AAAA,QAAAH,2BAAAA,IAAC,KAAA,EAAE,WAAU,iCAAgC,UAAA,oBAAgB;AAAA,QAC7DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,sDAAA,CAAsD;AAAA,QACrEA,2BAAAA,IAAC,OAAA,EAAI,WAAU,4CAAA,CAA4C;AAAA,QAC3DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,QAC1DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,MAAA,EAAA,CAC5D;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ /** Loading and error chrome for a SessionInspector fed from a URL. With
3
+ * `children` (a session already loaded) the error sits above it; without,
4
+ * it replaces the inspector: a skeleton while loading, the alert on failure. */
5
+ export declare function RemoteSessionStatus({ loading, error, className, children, }: {
6
+ loading: boolean;
7
+ error?: string;
8
+ className?: string;
9
+ children?: ReactNode;
10
+ }): import("react").JSX.Element;
11
+ //# sourceMappingURL=SessionInspector.remote-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.remote-view.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;iFAEiF;AACjF,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,+BAoCA"}