@flanksource/clicky-ui 0.3.15 → 0.3.17

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 (823) hide show
  1. package/NOTICE.md +10 -0
  2. package/dist/ai.cjs +33 -4
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +31 -2
  5. package/dist/ai.js.map +1 -1
  6. package/dist/chat.cjs +6 -0
  7. package/dist/chat.cjs.map +1 -1
  8. package/dist/chat.js +7 -1
  9. package/dist/chat.js.map +1 -1
  10. package/dist/components/Combobox.cjs +92 -170
  11. package/dist/components/Combobox.cjs.map +1 -1
  12. package/dist/components/Combobox.d.ts +2 -111
  13. package/dist/components/Combobox.d.ts.map +1 -1
  14. package/dist/components/Combobox.js +95 -173
  15. package/dist/components/Combobox.js.map +1 -1
  16. package/dist/components/ComboboxActions.cjs +70 -0
  17. package/dist/components/ComboboxActions.cjs.map +1 -0
  18. package/dist/components/ComboboxActions.d.ts +8 -0
  19. package/dist/components/ComboboxActions.d.ts.map +1 -0
  20. package/dist/components/ComboboxActions.js +70 -0
  21. package/dist/components/ComboboxActions.js.map +1 -0
  22. package/dist/components/ComboboxMenu.cjs +160 -0
  23. package/dist/components/ComboboxMenu.cjs.map +1 -0
  24. package/dist/components/ComboboxMenu.d.ts +22 -0
  25. package/dist/components/ComboboxMenu.d.ts.map +1 -0
  26. package/dist/components/ComboboxMenu.js +160 -0
  27. package/dist/components/ComboboxMenu.js.map +1 -0
  28. package/dist/components/EndpointSelector.cjs +407 -0
  29. package/dist/components/EndpointSelector.cjs.map +1 -0
  30. package/dist/components/EndpointSelector.d.ts +3 -0
  31. package/dist/components/EndpointSelector.d.ts.map +1 -0
  32. package/dist/components/EndpointSelector.js +407 -0
  33. package/dist/components/EndpointSelector.js.map +1 -0
  34. package/dist/components/EndpointSelector.model.d.ts +52 -0
  35. package/dist/components/EndpointSelector.model.d.ts.map +1 -0
  36. package/dist/components/FilterBar.cjs +12 -0
  37. package/dist/components/FilterBar.cjs.map +1 -1
  38. package/dist/components/FilterBar.d.ts +4 -0
  39. package/dist/components/FilterBar.d.ts.map +1 -1
  40. package/dist/components/FilterBar.js +12 -0
  41. package/dist/components/FilterBar.js.map +1 -1
  42. package/dist/components/InputField.cjs +11 -12
  43. package/dist/components/InputField.cjs.map +1 -1
  44. package/dist/components/InputField.d.ts +7 -0
  45. package/dist/components/InputField.d.ts.map +1 -1
  46. package/dist/components/InputField.js +12 -13
  47. package/dist/components/InputField.js.map +1 -1
  48. package/dist/components/JsonSchemaForm.cjs +22 -16
  49. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  50. package/dist/components/JsonSchemaForm.d.ts +1 -1
  51. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  52. package/dist/components/JsonSchemaForm.js +22 -16
  53. package/dist/components/JsonSchemaForm.js.map +1 -1
  54. package/dist/components/MultiSelect.cjs +3 -3
  55. package/dist/components/MultiSelect.cjs.map +1 -1
  56. package/dist/components/MultiSelect.d.ts.map +1 -1
  57. package/dist/components/MultiSelect.js +3 -3
  58. package/dist/components/MultiSelect.js.map +1 -1
  59. package/dist/components/SecretKeySelector.cjs +150 -77
  60. package/dist/components/SecretKeySelector.cjs.map +1 -1
  61. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  62. package/dist/components/SecretKeySelector.js +151 -78
  63. package/dist/components/SecretKeySelector.js.map +1 -1
  64. package/dist/components/WorkloadPicker.cjs +2 -1
  65. package/dist/components/WorkloadPicker.cjs.map +1 -1
  66. package/dist/components/WorkloadPicker.d.ts +6 -1
  67. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  68. package/dist/components/WorkloadPicker.js +2 -1
  69. package/dist/components/WorkloadPicker.js.map +1 -1
  70. package/dist/components/combobox-types.d.ts +107 -0
  71. package/dist/components/combobox-types.d.ts.map +1 -0
  72. package/dist/components/combobox-utils.cjs +21 -0
  73. package/dist/components/combobox-utils.cjs.map +1 -0
  74. package/dist/components/combobox-utils.d.ts +15 -0
  75. package/dist/components/combobox-utils.d.ts.map +1 -0
  76. package/dist/components/combobox-utils.js +21 -0
  77. package/dist/components/combobox-utils.js.map +1 -0
  78. package/dist/components/endpoint-port.cjs +12 -0
  79. package/dist/components/endpoint-port.cjs.map +1 -0
  80. package/dist/components/endpoint-port.d.ts +4 -0
  81. package/dist/components/endpoint-port.d.ts.map +1 -0
  82. package/dist/components/endpoint-port.js +12 -0
  83. package/dist/components/endpoint-port.js.map +1 -0
  84. package/dist/components/json-schema-form-array.cjs +12 -23
  85. package/dist/components/json-schema-form-array.cjs.map +1 -1
  86. package/dist/components/json-schema-form-array.d.ts +1 -1
  87. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  88. package/dist/components/json-schema-form-array.js +12 -23
  89. package/dist/components/json-schema-form-array.js.map +1 -1
  90. package/dist/components/json-schema-form-discriminator.cjs +6 -2
  91. package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
  92. package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
  93. package/dist/components/json-schema-form-discriminator.js +6 -2
  94. package/dist/components/json-schema-form-discriminator.js.map +1 -1
  95. package/dist/components/json-schema-form-error-display.cjs +50 -0
  96. package/dist/components/json-schema-form-error-display.cjs.map +1 -0
  97. package/dist/components/json-schema-form-error-display.d.ts +12 -0
  98. package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
  99. package/dist/components/json-schema-form-error-display.js +50 -0
  100. package/dist/components/json-schema-form-error-display.js.map +1 -0
  101. package/dist/components/json-schema-form-error-types.d.ts +26 -0
  102. package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
  103. package/dist/components/json-schema-form-errors.cjs +169 -0
  104. package/dist/components/json-schema-form-errors.cjs.map +1 -0
  105. package/dist/components/json-schema-form-errors.d.ts +14 -0
  106. package/dist/components/json-schema-form-errors.d.ts.map +1 -0
  107. package/dist/components/json-schema-form-errors.js +169 -0
  108. package/dist/components/json-schema-form-errors.js.map +1 -0
  109. package/dist/components/json-schema-form-object.cjs +12 -2
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-object.js +12 -2
  113. package/dist/components/json-schema-form-object.js.map +1 -1
  114. package/dist/components/json-schema-form-refs.cjs +84 -19
  115. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  116. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  117. package/dist/components/json-schema-form-refs.js +84 -19
  118. package/dist/components/json-schema-form-refs.js.map +1 -1
  119. package/dist/components/json-schema-form-render.cjs +33 -10
  120. package/dist/components/json-schema-form-render.cjs.map +1 -1
  121. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  122. package/dist/components/json-schema-form-render.js +34 -11
  123. package/dist/components/json-schema-form-render.js.map +1 -1
  124. package/dist/components/json-schema-form-resolve.cjs +16 -4
  125. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  126. package/dist/components/json-schema-form-resolve.d.ts +1 -0
  127. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  128. package/dist/components/json-schema-form-resolve.js +17 -5
  129. package/dist/components/json-schema-form-resolve.js.map +1 -1
  130. package/dist/components/json-schema-form-types.d.ts +4 -3
  131. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  132. package/dist/components.cjs +13 -0
  133. package/dist/components.cjs.map +1 -1
  134. package/dist/components.d.ts +8 -1
  135. package/dist/components.d.ts.map +1 -1
  136. package/dist/components.js +15 -2
  137. package/dist/components.js.map +1 -1
  138. package/dist/data/DataTable.cjs +205 -14
  139. package/dist/data/DataTable.cjs.map +1 -1
  140. package/dist/data/DataTable.d.ts +41 -0
  141. package/dist/data/DataTable.d.ts.map +1 -1
  142. package/dist/data/DataTable.grouping.cjs +21 -0
  143. package/dist/data/DataTable.grouping.cjs.map +1 -0
  144. package/dist/data/DataTable.grouping.d.ts +26 -0
  145. package/dist/data/DataTable.grouping.d.ts.map +1 -0
  146. package/dist/data/DataTable.grouping.js +21 -0
  147. package/dist/data/DataTable.grouping.js.map +1 -0
  148. package/dist/data/DataTable.js +205 -14
  149. package/dist/data/DataTable.js.map +1 -1
  150. package/dist/data/Markdown.cjs +45 -1
  151. package/dist/data/Markdown.cjs.map +1 -1
  152. package/dist/data/Markdown.d.ts +3 -2
  153. package/dist/data/Markdown.d.ts.map +1 -1
  154. package/dist/data/Markdown.js +45 -1
  155. package/dist/data/Markdown.js.map +1 -1
  156. package/dist/data/MarkdownEditor.cjs +4 -3
  157. package/dist/data/MarkdownEditor.cjs.map +1 -1
  158. package/dist/data/MarkdownEditor.d.ts +6 -2
  159. package/dist/data/MarkdownEditor.d.ts.map +1 -1
  160. package/dist/data/MarkdownEditor.js +4 -3
  161. package/dist/data/MarkdownEditor.js.map +1 -1
  162. package/dist/data/ServerTimingBadge.cjs +64 -0
  163. package/dist/data/ServerTimingBadge.cjs.map +1 -0
  164. package/dist/data/ServerTimingBadge.d.ts +9 -0
  165. package/dist/data/ServerTimingBadge.d.ts.map +1 -0
  166. package/dist/data/ServerTimingBadge.js +64 -0
  167. package/dist/data/ServerTimingBadge.js.map +1 -0
  168. package/dist/data/StatStrip.cjs +99 -0
  169. package/dist/data/StatStrip.cjs.map +1 -0
  170. package/dist/data/StatStrip.d.ts +41 -0
  171. package/dist/data/StatStrip.d.ts.map +1 -0
  172. package/dist/data/StatStrip.js +99 -0
  173. package/dist/data/StatStrip.js.map +1 -0
  174. package/dist/data/TaskManager.cjs +20 -1
  175. package/dist/data/TaskManager.cjs.map +1 -1
  176. package/dist/data/TaskManager.d.ts +3 -1
  177. package/dist/data/TaskManager.d.ts.map +1 -1
  178. package/dist/data/TaskManager.js +20 -1
  179. package/dist/data/TaskManager.js.map +1 -1
  180. package/dist/data/TaskManagerButton.cjs +49 -0
  181. package/dist/data/TaskManagerButton.cjs.map +1 -0
  182. package/dist/data/TaskManagerButton.d.ts +8 -0
  183. package/dist/data/TaskManagerButton.d.ts.map +1 -0
  184. package/dist/data/TaskManagerButton.js +49 -0
  185. package/dist/data/TaskManagerButton.js.map +1 -0
  186. package/dist/data/TaskProcessDetails.cjs +113 -0
  187. package/dist/data/TaskProcessDetails.cjs.map +1 -0
  188. package/dist/data/TaskProcessDetails.d.ts +6 -0
  189. package/dist/data/TaskProcessDetails.d.ts.map +1 -0
  190. package/dist/data/TaskProcessDetails.js +113 -0
  191. package/dist/data/TaskProcessDetails.js.map +1 -0
  192. package/dist/data/TaskProgress.cjs +106 -19
  193. package/dist/data/TaskProgress.cjs.map +1 -1
  194. package/dist/data/TaskProgress.d.ts +4 -2
  195. package/dist/data/TaskProgress.d.ts.map +1 -1
  196. package/dist/data/TaskProgress.js +107 -20
  197. package/dist/data/TaskProgress.js.map +1 -1
  198. package/dist/data/TaskSnapshot.cjs.map +1 -1
  199. package/dist/data/TaskSnapshot.d.ts +43 -0
  200. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  201. package/dist/data/TaskSnapshot.js.map +1 -1
  202. package/dist/data/Tree.cjs +91 -82
  203. package/dist/data/Tree.cjs.map +1 -1
  204. package/dist/data/Tree.d.ts +3 -1
  205. package/dist/data/Tree.d.ts.map +1 -1
  206. package/dist/data/Tree.js +91 -82
  207. package/dist/data/Tree.js.map +1 -1
  208. package/dist/data/TreeNode.cjs +3 -0
  209. package/dist/data/TreeNode.cjs.map +1 -1
  210. package/dist/data/TreeNode.d.ts +2 -1
  211. package/dist/data/TreeNode.d.ts.map +1 -1
  212. package/dist/data/TreeNode.js +3 -0
  213. package/dist/data/TreeNode.js.map +1 -1
  214. package/dist/data/ai/ChatWindow.cjs +18 -141
  215. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  216. package/dist/data/ai/ChatWindow.d.ts +2 -40
  217. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  218. package/dist/data/ai/ChatWindow.js +15 -138
  219. package/dist/data/ai/ChatWindow.js.map +1 -1
  220. package/dist/data/ai/ChatWindow.models.cjs +11 -0
  221. package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
  222. package/dist/data/ai/ChatWindow.models.d.ts +3 -0
  223. package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
  224. package/dist/data/ai/ChatWindow.models.js +11 -0
  225. package/dist/data/ai/ChatWindow.models.js.map +1 -0
  226. package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
  227. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
  228. package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
  229. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
  230. package/dist/data/ai/ChatWindow.preferences.js +57 -0
  231. package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
  232. package/dist/data/ai/ChatWindow.thread-status.cjs +14 -0
  233. package/dist/data/ai/ChatWindow.thread-status.cjs.map +1 -0
  234. package/dist/data/ai/ChatWindow.thread-status.d.ts +5 -0
  235. package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -0
  236. package/dist/data/ai/ChatWindow.thread-status.js +14 -0
  237. package/dist/data/ai/ChatWindow.thread-status.js.map +1 -0
  238. package/dist/data/ai/ChatWindow.thread.cjs +68 -0
  239. package/dist/data/ai/ChatWindow.thread.cjs.map +1 -0
  240. package/dist/data/ai/ChatWindow.thread.d.ts +16 -0
  241. package/dist/data/ai/ChatWindow.thread.d.ts.map +1 -0
  242. package/dist/data/ai/ChatWindow.thread.js +68 -0
  243. package/dist/data/ai/ChatWindow.thread.js.map +1 -0
  244. package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
  245. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
  246. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
  247. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
  248. package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
  249. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
  250. package/dist/data/ai/ChatWindow.types.d.ts +41 -0
  251. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
  252. package/dist/data/ai/ContextBadges.cjs +76 -46
  253. package/dist/data/ai/ContextBadges.cjs.map +1 -1
  254. package/dist/data/ai/ContextBadges.d.ts.map +1 -1
  255. package/dist/data/ai/ContextBadges.js +77 -47
  256. package/dist/data/ai/ContextBadges.js.map +1 -1
  257. package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
  258. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  259. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
  260. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  261. package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
  262. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  263. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
  264. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
  265. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
  266. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
  267. package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
  268. package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
  269. package/dist/data/ai/PromptPicker/index.d.ts +2 -1
  270. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
  271. package/dist/data/ai/PromptPicker/types.cjs +7 -0
  272. package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
  273. package/dist/data/ai/PromptPicker/types.d.ts +18 -2
  274. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
  275. package/dist/data/ai/PromptPicker/types.js +7 -0
  276. package/dist/data/ai/PromptPicker/types.js.map +1 -0
  277. package/dist/data/ai/PromptRunEditor/index.cjs +171 -91
  278. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  279. package/dist/data/ai/PromptRunEditor/index.d.ts +9 -9
  280. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  281. package/dist/data/ai/PromptRunEditor/index.js +175 -95
  282. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  283. package/dist/data/ai/PromptRunEditor/model.cjs +47 -0
  284. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -0
  285. package/dist/data/ai/PromptRunEditor/model.d.ts +17 -0
  286. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -0
  287. package/dist/data/ai/PromptRunEditor/model.js +47 -0
  288. package/dist/data/ai/PromptRunEditor/model.js.map +1 -0
  289. package/dist/data/ai/RuntimeBar.cjs +408 -0
  290. package/dist/data/ai/RuntimeBar.cjs.map +1 -0
  291. package/dist/data/ai/RuntimeBar.d.ts +20 -0
  292. package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
  293. package/dist/data/ai/RuntimeBar.js +408 -0
  294. package/dist/data/ai/RuntimeBar.js.map +1 -0
  295. package/dist/data/ai/RuntimeBar.model.cjs +14 -0
  296. package/dist/data/ai/RuntimeBar.model.cjs.map +1 -0
  297. package/dist/data/ai/RuntimeBar.model.d.ts +10 -0
  298. package/dist/data/ai/RuntimeBar.model.d.ts.map +1 -0
  299. package/dist/data/ai/RuntimeBar.model.js +14 -0
  300. package/dist/data/ai/RuntimeBar.model.js.map +1 -0
  301. package/dist/data/ai/RuntimeBarCombo.cjs +359 -0
  302. package/dist/data/ai/RuntimeBarCombo.cjs.map +1 -0
  303. package/dist/data/ai/RuntimeBarCombo.d.ts +22 -0
  304. package/dist/data/ai/RuntimeBarCombo.d.ts.map +1 -0
  305. package/dist/data/ai/RuntimeBarCombo.js +359 -0
  306. package/dist/data/ai/RuntimeBarCombo.js.map +1 -0
  307. package/dist/data/ai/SessionChatComposer.cjs +56 -0
  308. package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
  309. package/dist/data/ai/SessionChatComposer.d.ts +24 -0
  310. package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
  311. package/dist/data/ai/SessionChatComposer.js +56 -0
  312. package/dist/data/ai/SessionChatComposer.js.map +1 -0
  313. package/dist/data/ai/SessionInspector.cjs +222 -382
  314. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  315. package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
  316. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
  317. package/dist/data/ai/SessionInspector.collection.cjs +377 -0
  318. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
  319. package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
  320. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
  321. package/dist/data/ai/SessionInspector.collection.js +377 -0
  322. package/dist/data/ai/SessionInspector.collection.js.map +1 -0
  323. package/dist/data/ai/SessionInspector.d.ts +9 -4
  324. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  325. package/dist/data/ai/SessionInspector.files.cjs +162 -0
  326. package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
  327. package/dist/data/ai/SessionInspector.files.d.ts +5 -0
  328. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
  329. package/dist/data/ai/SessionInspector.files.js +162 -0
  330. package/dist/data/ai/SessionInspector.files.js.map +1 -0
  331. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
  332. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
  333. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
  334. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
  335. package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
  336. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
  337. package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
  338. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
  339. package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
  340. package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
  341. package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
  342. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.js +224 -384
  344. package/dist/data/ai/SessionInspector.js.map +1 -1
  345. package/dist/data/ai/SessionInspector.model.cjs +125 -0
  346. package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
  347. package/dist/data/ai/SessionInspector.model.d.ts +14 -0
  348. package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
  349. package/dist/data/ai/SessionInspector.model.js +125 -0
  350. package/dist/data/ai/SessionInspector.model.js.map +1 -0
  351. package/dist/data/ai/SessionInspector.panels.cjs +265 -0
  352. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
  353. package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
  354. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
  355. package/dist/data/ai/SessionInspector.panels.js +265 -0
  356. package/dist/data/ai/SessionInspector.panels.js.map +1 -0
  357. package/dist/data/ai/SessionInspector.plan.cjs +77 -0
  358. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
  359. package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
  360. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
  361. package/dist/data/ai/SessionInspector.plan.js +77 -0
  362. package/dist/data/ai/SessionInspector.plan.js.map +1 -0
  363. package/dist/data/ai/SessionInspector.summary.cjs +182 -0
  364. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
  365. package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
  366. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
  367. package/dist/data/ai/SessionInspector.summary.js +182 -0
  368. package/dist/data/ai/SessionInspector.summary.js.map +1 -0
  369. package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
  370. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
  371. package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
  372. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
  373. package/dist/data/ai/SessionInspector.transcript.js +94 -0
  374. package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
  375. package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
  376. package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
  377. package/dist/data/ai/SessionViewer.cjs +86 -121
  378. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  379. package/dist/data/ai/SessionViewer.d.ts +8 -1
  380. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  381. package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
  382. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  383. package/dist/data/ai/SessionViewer.header.cjs +118 -0
  384. package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
  385. package/dist/data/ai/SessionViewer.header.d.ts +11 -0
  386. package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
  387. package/dist/data/ai/SessionViewer.header.js +118 -0
  388. package/dist/data/ai/SessionViewer.header.js.map +1 -0
  389. package/dist/data/ai/SessionViewer.js +87 -122
  390. package/dist/data/ai/SessionViewer.js.map +1 -1
  391. package/dist/data/ai/SessionViewer.model.cjs +111 -39
  392. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  393. package/dist/data/ai/SessionViewer.model.d.ts +6 -0
  394. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  395. package/dist/data/ai/SessionViewer.model.js +111 -39
  396. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  397. package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
  398. package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
  399. package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
  400. package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
  401. package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
  402. package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
  403. package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
  404. package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
  405. package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
  406. package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
  407. package/dist/data/ai/SessionViewer.row-time.js +15 -0
  408. package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
  409. package/dist/data/ai/SessionViewer.rows.cjs +37 -424
  410. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  411. package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
  412. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  413. package/dist/data/ai/SessionViewer.rows.js +31 -418
  414. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  415. package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
  416. package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
  417. package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
  418. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
  419. package/dist/data/ai/SessionViewer.tool-details.js +65 -0
  420. package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
  421. package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
  422. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
  423. package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
  424. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
  425. package/dist/data/ai/SessionViewer.tool-row.js +404 -0
  426. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
  427. package/dist/data/ai/SessionViewer.unified.d.ts +11 -2
  428. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  429. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
  430. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  431. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  432. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
  433. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  434. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
  435. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  436. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  437. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
  438. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  439. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
  440. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  441. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
  442. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
  443. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  444. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
  445. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
  446. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
  447. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
  448. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
  449. package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
  450. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  451. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  452. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  453. package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
  454. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  455. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
  456. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  457. package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
  458. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  459. package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
  460. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  461. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
  462. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  463. package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
  464. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  465. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  466. package/dist/data/ai/ThreadPicker.d.ts +2 -0
  467. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  468. package/dist/data/ai/ThreadPicker.js.map +1 -1
  469. package/dist/data/ai/ToolPreferences.cjs +2 -1
  470. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  471. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  472. package/dist/data/ai/ToolPreferences.js +2 -1
  473. package/dist/data/ai/ToolPreferences.js.map +1 -1
  474. package/dist/data/ai/agent-action-icons.cjs +7 -10
  475. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  476. package/dist/data/ai/agent-action-icons.d.ts +1 -2
  477. package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
  478. package/dist/data/ai/agent-action-icons.js +8 -11
  479. package/dist/data/ai/agent-action-icons.js.map +1 -1
  480. package/dist/data/ai/context.cjs.map +1 -1
  481. package/dist/data/ai/context.d.ts +4 -0
  482. package/dist/data/ai/context.d.ts.map +1 -1
  483. package/dist/data/ai/context.js.map +1 -1
  484. package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
  485. package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
  486. package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
  487. package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
  488. package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
  489. package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
  490. package/dist/data/ai/examples/sessions/claude.cjs +252 -0
  491. package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
  492. package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
  493. package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
  494. package/dist/data/ai/examples/sessions/claude.js +252 -0
  495. package/dist/data/ai/examples/sessions/claude.js.map +1 -0
  496. package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
  497. package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
  498. package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
  499. package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
  500. package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
  501. package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
  502. package/dist/data/ai/examples/sessions/codex.cjs +236 -0
  503. package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
  504. package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
  505. package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
  506. package/dist/data/ai/examples/sessions/codex.js +236 -0
  507. package/dist/data/ai/examples/sessions/codex.js.map +1 -0
  508. package/dist/data/ai/examples/sessions/index.cjs +21 -0
  509. package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
  510. package/dist/data/ai/examples/sessions/index.d.ts +10 -0
  511. package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
  512. package/dist/data/ai/examples/sessions/index.js +21 -0
  513. package/dist/data/ai/examples/sessions/index.js.map +1 -0
  514. package/dist/data/ai/index.d.ts +9 -3
  515. package/dist/data/ai/index.d.ts.map +1 -1
  516. package/dist/data/ai/model-capabilities.cjs +12 -1
  517. package/dist/data/ai/model-capabilities.cjs.map +1 -1
  518. package/dist/data/ai/model-capabilities.d.ts +2 -6
  519. package/dist/data/ai/model-capabilities.d.ts.map +1 -1
  520. package/dist/data/ai/model-capabilities.js +12 -1
  521. package/dist/data/ai/model-capabilities.js.map +1 -1
  522. package/dist/data/ai/runtime-mode.cjs +72 -1
  523. package/dist/data/ai/runtime-mode.cjs.map +1 -1
  524. package/dist/data/ai/runtime-mode.d.ts +28 -0
  525. package/dist/data/ai/runtime-mode.d.ts.map +1 -1
  526. package/dist/data/ai/runtime-mode.js +73 -2
  527. package/dist/data/ai/runtime-mode.js.map +1 -1
  528. package/dist/data/cells/EntityCell.cjs +64 -0
  529. package/dist/data/cells/EntityCell.cjs.map +1 -0
  530. package/dist/data/cells/EntityCell.d.ts +27 -0
  531. package/dist/data/cells/EntityCell.d.ts.map +1 -0
  532. package/dist/data/cells/EntityCell.js +64 -0
  533. package/dist/data/cells/EntityCell.js.map +1 -0
  534. package/dist/data/chat/Attachment.cjs +53 -13
  535. package/dist/data/chat/Attachment.cjs.map +1 -1
  536. package/dist/data/chat/Attachment.d.ts +9 -3
  537. package/dist/data/chat/Attachment.d.ts.map +1 -1
  538. package/dist/data/chat/Attachment.js +54 -14
  539. package/dist/data/chat/Attachment.js.map +1 -1
  540. package/dist/data/chat/Chat.cjs +113 -36
  541. package/dist/data/chat/Chat.cjs.map +1 -1
  542. package/dist/data/chat/Chat.d.ts +11 -4
  543. package/dist/data/chat/Chat.d.ts.map +1 -1
  544. package/dist/data/chat/Chat.js +111 -34
  545. package/dist/data/chat/Chat.js.map +1 -1
  546. package/dist/data/chat/ContextMeter.cjs +240 -66
  547. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  548. package/dist/data/chat/ContextMeter.d.ts +11 -3
  549. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  550. package/dist/data/chat/ContextMeter.js +241 -67
  551. package/dist/data/chat/ContextMeter.js.map +1 -1
  552. package/dist/data/chat/Conversation.cjs +55 -3
  553. package/dist/data/chat/Conversation.cjs.map +1 -1
  554. package/dist/data/chat/Conversation.d.ts +5 -1
  555. package/dist/data/chat/Conversation.d.ts.map +1 -1
  556. package/dist/data/chat/Conversation.js +55 -3
  557. package/dist/data/chat/Conversation.js.map +1 -1
  558. package/dist/data/chat/ModelSelector.cjs +8 -10
  559. package/dist/data/chat/ModelSelector.cjs.map +1 -1
  560. package/dist/data/chat/ModelSelector.d.ts.map +1 -1
  561. package/dist/data/chat/ModelSelector.js +9 -11
  562. package/dist/data/chat/ModelSelector.js.map +1 -1
  563. package/dist/data/chat/PromptInput.cjs +56 -5
  564. package/dist/data/chat/PromptInput.cjs.map +1 -1
  565. package/dist/data/chat/PromptInput.d.ts +10 -1
  566. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  567. package/dist/data/chat/PromptInput.js +57 -6
  568. package/dist/data/chat/PromptInput.js.map +1 -1
  569. package/dist/data/chat/approval.cjs +21 -0
  570. package/dist/data/chat/approval.cjs.map +1 -0
  571. package/dist/data/chat/approval.d.ts +11 -0
  572. package/dist/data/chat/approval.d.ts.map +1 -0
  573. package/dist/data/chat/approval.js +21 -0
  574. package/dist/data/chat/approval.js.map +1 -0
  575. package/dist/data/chat/attachment-upload.cjs +33 -0
  576. package/dist/data/chat/attachment-upload.cjs.map +1 -0
  577. package/dist/data/chat/attachment-upload.d.ts +21 -0
  578. package/dist/data/chat/attachment-upload.d.ts.map +1 -0
  579. package/dist/data/chat/attachment-upload.js +33 -0
  580. package/dist/data/chat/attachment-upload.js.map +1 -0
  581. package/dist/data/chat/effort-icons.cjs +36 -6
  582. package/dist/data/chat/effort-icons.cjs.map +1 -1
  583. package/dist/data/chat/effort-icons.d.ts +6 -3
  584. package/dist/data/chat/effort-icons.d.ts.map +1 -1
  585. package/dist/data/chat/effort-icons.js +37 -7
  586. package/dist/data/chat/effort-icons.js.map +1 -1
  587. package/dist/data/chat/index.d.ts +3 -1
  588. package/dist/data/chat/index.d.ts.map +1 -1
  589. package/dist/data/chat/models.cjs +8 -0
  590. package/dist/data/chat/models.cjs.map +1 -0
  591. package/dist/data/chat/models.d.ts +11 -0
  592. package/dist/data/chat/models.d.ts.map +1 -0
  593. package/dist/data/chat/models.js +8 -0
  594. package/dist/data/chat/models.js.map +1 -0
  595. package/dist/data/chat/provider-icons.cjs +49 -16
  596. package/dist/data/chat/provider-icons.cjs.map +1 -1
  597. package/dist/data/chat/provider-icons.d.ts +2 -0
  598. package/dist/data/chat/provider-icons.d.ts.map +1 -1
  599. package/dist/data/chat/provider-icons.js +50 -17
  600. package/dist/data/chat/provider-icons.js.map +1 -1
  601. package/dist/data/chat/types.cjs.map +1 -1
  602. package/dist/data/chat/types.d.ts +21 -0
  603. package/dist/data/chat/types.d.ts.map +1 -1
  604. package/dist/data/chat/types.js.map +1 -1
  605. package/dist/data/examples/markdown-preview-mock.cjs +45 -0
  606. package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
  607. package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
  608. package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
  609. package/dist/data/examples/markdown-preview-mock.js +45 -0
  610. package/dist/data/examples/markdown-preview-mock.js.map +1 -0
  611. package/dist/data/examples/markdown-syntax.cjs +36 -0
  612. package/dist/data/examples/markdown-syntax.cjs.map +1 -0
  613. package/dist/data/examples/markdown-syntax.d.ts +12 -0
  614. package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
  615. package/dist/data/examples/markdown-syntax.js +36 -0
  616. package/dist/data/examples/markdown-syntax.js.map +1 -0
  617. package/dist/data/examples/markdown-syntax.md.cjs +4 -0
  618. package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
  619. package/dist/data/examples/markdown-syntax.md.js +5 -0
  620. package/dist/data/examples/markdown-syntax.md.js.map +1 -0
  621. package/dist/data/server-timing.cjs +120 -0
  622. package/dist/data/server-timing.cjs.map +1 -0
  623. package/dist/data/server-timing.d.ts +11 -0
  624. package/dist/data/server-timing.d.ts.map +1 -0
  625. package/dist/data/server-timing.js +120 -0
  626. package/dist/data/server-timing.js.map +1 -0
  627. package/dist/data/task-process-details.cjs +48 -0
  628. package/dist/data/task-process-details.cjs.map +1 -0
  629. package/dist/data/task-process-details.d.ts +5 -0
  630. package/dist/data/task-process-details.d.ts.map +1 -0
  631. package/dist/data/task-process-details.js +48 -0
  632. package/dist/data/task-process-details.js.map +1 -0
  633. package/dist/data/version-info.cjs +3 -3
  634. package/dist/data/version-info.js +3 -3
  635. package/dist/data.cjs +37 -0
  636. package/dist/data.cjs.map +1 -1
  637. package/dist/data.d.ts +9 -1
  638. package/dist/data.d.ts.map +1 -1
  639. package/dist/data.js +37 -0
  640. package/dist/data.js.map +1 -1
  641. package/dist/hooks/use-hotkey.cjs +98 -0
  642. package/dist/hooks/use-hotkey.cjs.map +1 -0
  643. package/dist/hooks/use-hotkey.d.ts +42 -0
  644. package/dist/hooks/use-hotkey.d.ts.map +1 -0
  645. package/dist/hooks/use-hotkey.js +98 -0
  646. package/dist/hooks/use-hotkey.js.map +1 -0
  647. package/dist/hooks/use-task-run.cjs +23 -1
  648. package/dist/hooks/use-task-run.cjs.map +1 -1
  649. package/dist/hooks/use-task-run.d.ts.map +1 -1
  650. package/dist/hooks/use-task-run.js +23 -1
  651. package/dist/hooks/use-task-run.js.map +1 -1
  652. package/dist/hooks.cjs +4 -0
  653. package/dist/hooks.cjs.map +1 -1
  654. package/dist/hooks.d.ts +1 -0
  655. package/dist/hooks.d.ts.map +1 -1
  656. package/dist/hooks.js +4 -0
  657. package/dist/hooks.js.map +1 -1
  658. package/dist/icons/components/UiBank.cjs +15 -0
  659. package/dist/icons/components/UiBank.cjs.map +1 -0
  660. package/dist/icons/components/UiBank.d.ts +15 -0
  661. package/dist/icons/components/UiBank.d.ts.map +1 -0
  662. package/dist/icons/components/UiBank.js +15 -0
  663. package/dist/icons/components/UiBank.js.map +1 -0
  664. package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
  665. package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
  666. package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
  667. package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
  668. package/dist/icons/components/UiChartOfAccounts.js +15 -0
  669. package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
  670. package/dist/icons/components/UiCloudUpload.cjs +15 -0
  671. package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
  672. package/dist/icons/components/UiCloudUpload.d.ts +15 -0
  673. package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
  674. package/dist/icons/components/UiCloudUpload.js +15 -0
  675. package/dist/icons/components/UiCloudUpload.js.map +1 -0
  676. package/dist/icons/components/UiLedger.cjs +15 -0
  677. package/dist/icons/components/UiLedger.cjs.map +1 -0
  678. package/dist/icons/components/UiLedger.d.ts +15 -0
  679. package/dist/icons/components/UiLedger.d.ts.map +1 -0
  680. package/dist/icons/components/UiLedger.js +15 -0
  681. package/dist/icons/components/UiLedger.js.map +1 -0
  682. package/dist/icons/components/UiReceipt.cjs +15 -0
  683. package/dist/icons/components/UiReceipt.cjs.map +1 -0
  684. package/dist/icons/components/UiReceipt.d.ts +15 -0
  685. package/dist/icons/components/UiReceipt.d.ts.map +1 -0
  686. package/dist/icons/components/UiReceipt.js +15 -0
  687. package/dist/icons/components/UiReceipt.js.map +1 -0
  688. package/dist/icons/index.d.ts +10 -0
  689. package/dist/icons/index.d.ts.map +1 -1
  690. package/dist/icons.cjs +15 -0
  691. package/dist/icons.cjs.map +1 -1
  692. package/dist/icons.js +15 -0
  693. package/dist/icons.js.map +1 -1
  694. package/dist/index.cjs +54 -0
  695. package/dist/index.cjs.map +1 -1
  696. package/dist/index.js +56 -2
  697. package/dist/index.js.map +1 -1
  698. package/dist/layout/AppShell.cjs +270 -238
  699. package/dist/layout/AppShell.cjs.map +1 -1
  700. package/dist/layout/AppShell.d.ts +9 -0
  701. package/dist/layout/AppShell.d.ts.map +1 -1
  702. package/dist/layout/AppShell.debug.cjs +53 -0
  703. package/dist/layout/AppShell.debug.cjs.map +1 -0
  704. package/dist/layout/AppShell.debug.d.ts +6 -0
  705. package/dist/layout/AppShell.debug.d.ts.map +1 -0
  706. package/dist/layout/AppShell.debug.js +53 -0
  707. package/dist/layout/AppShell.debug.js.map +1 -0
  708. package/dist/layout/AppShell.js +269 -237
  709. package/dist/layout/AppShell.js.map +1 -1
  710. package/dist/layout/AppShell.nav.cjs +90 -0
  711. package/dist/layout/AppShell.nav.cjs.map +1 -0
  712. package/dist/layout/AppShell.nav.d.ts +7 -0
  713. package/dist/layout/AppShell.nav.d.ts.map +1 -0
  714. package/dist/layout/AppShell.nav.js +90 -0
  715. package/dist/layout/AppShell.nav.js.map +1 -0
  716. package/dist/layout/AppSidebar.cjs +35 -5
  717. package/dist/layout/AppSidebar.cjs.map +1 -1
  718. package/dist/layout/AppSidebar.d.ts +4 -1
  719. package/dist/layout/AppSidebar.d.ts.map +1 -1
  720. package/dist/layout/AppSidebar.js +35 -5
  721. package/dist/layout/AppSidebar.js.map +1 -1
  722. package/dist/layout/Panel.cjs +25 -41
  723. package/dist/layout/Panel.cjs.map +1 -1
  724. package/dist/layout/Panel.d.ts +2 -1
  725. package/dist/layout/Panel.d.ts.map +1 -1
  726. package/dist/layout/Panel.js +26 -42
  727. package/dist/layout/Panel.js.map +1 -1
  728. package/dist/layout/PanelFrame.cjs +56 -0
  729. package/dist/layout/PanelFrame.cjs.map +1 -0
  730. package/dist/layout/PanelFrame.d.ts +15 -0
  731. package/dist/layout/PanelFrame.d.ts.map +1 -0
  732. package/dist/layout/PanelFrame.js +56 -0
  733. package/dist/layout/PanelFrame.js.map +1 -0
  734. package/dist/layout/Section.cjs +51 -41
  735. package/dist/layout/Section.cjs.map +1 -1
  736. package/dist/layout/Section.d.ts +3 -2
  737. package/dist/layout/Section.d.ts.map +1 -1
  738. package/dist/layout/Section.js +51 -41
  739. package/dist/layout/Section.js.map +1 -1
  740. package/dist/layout/content-width.cjs +8 -0
  741. package/dist/layout/content-width.cjs.map +1 -0
  742. package/dist/layout/content-width.d.ts +3 -0
  743. package/dist/layout/content-width.d.ts.map +1 -0
  744. package/dist/layout/content-width.js +8 -0
  745. package/dist/layout/content-width.js.map +1 -0
  746. package/dist/overlay/CommandPalette.cjs +207 -0
  747. package/dist/overlay/CommandPalette.cjs.map +1 -0
  748. package/dist/overlay/CommandPalette.d.ts +71 -0
  749. package/dist/overlay/CommandPalette.d.ts.map +1 -0
  750. package/dist/overlay/CommandPalette.js +207 -0
  751. package/dist/overlay/CommandPalette.js.map +1 -0
  752. package/dist/overlay/CommandPalette.model.cjs +70 -0
  753. package/dist/overlay/CommandPalette.model.cjs.map +1 -0
  754. package/dist/overlay/CommandPalette.model.d.ts +71 -0
  755. package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
  756. package/dist/overlay/CommandPalette.model.js +70 -0
  757. package/dist/overlay/CommandPalette.model.js.map +1 -0
  758. package/dist/overlay/CommandPaletteList.cjs +88 -0
  759. package/dist/overlay/CommandPaletteList.cjs.map +1 -0
  760. package/dist/overlay/CommandPaletteList.d.ts +23 -0
  761. package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
  762. package/dist/overlay/CommandPaletteList.js +88 -0
  763. package/dist/overlay/CommandPaletteList.js.map +1 -0
  764. package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
  765. package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
  766. package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
  767. package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
  768. package/dist/overlay/CommandPaletteTrigger.js +36 -0
  769. package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
  770. package/dist/overlay/HoverCard.cjs.map +1 -1
  771. package/dist/overlay/HoverCard.d.ts +2 -2
  772. package/dist/overlay/HoverCard.d.ts.map +1 -1
  773. package/dist/overlay/HoverCard.js.map +1 -1
  774. package/dist/overlay/Modal.cjs +12 -5
  775. package/dist/overlay/Modal.cjs.map +1 -1
  776. package/dist/overlay/Modal.d.ts.map +1 -1
  777. package/dist/overlay/Modal.js +12 -5
  778. package/dist/overlay/Modal.js.map +1 -1
  779. package/dist/overlay/modalStack.js +1 -1
  780. package/dist/overlay/zIndex.cjs +2 -0
  781. package/dist/overlay/zIndex.cjs.map +1 -1
  782. package/dist/overlay/zIndex.js +2 -0
  783. package/dist/overlay/zIndex.js.map +1 -1
  784. package/dist/rpc/EntityExplorerApp.cjs +6 -0
  785. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  786. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  787. package/dist/rpc/EntityExplorerApp.js +6 -0
  788. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  789. package/dist/rpc/OperationCatalog.cjs +45 -71
  790. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  791. package/dist/rpc/OperationCatalog.d.ts +12 -2
  792. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  793. package/dist/rpc/OperationCatalog.js +46 -72
  794. package/dist/rpc/OperationCatalog.js.map +1 -1
  795. package/dist/rpc/OperationResultView.cjs +42 -0
  796. package/dist/rpc/OperationResultView.cjs.map +1 -1
  797. package/dist/rpc/OperationResultView.d.ts +2 -1
  798. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  799. package/dist/rpc/OperationResultView.js +42 -0
  800. package/dist/rpc/OperationResultView.js.map +1 -1
  801. package/dist/rpc/clickyMetadata.cjs +2 -1
  802. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  803. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  804. package/dist/rpc/clickyMetadata.js +2 -1
  805. package/dist/rpc/clickyMetadata.js.map +1 -1
  806. package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
  807. package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
  808. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
  809. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
  810. package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
  811. package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
  812. package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
  813. package/dist/rpc/types.cjs.map +1 -1
  814. package/dist/rpc/types.d.ts +1 -0
  815. package/dist/rpc/types.d.ts.map +1 -1
  816. package/dist/rpc/types.js.map +1 -1
  817. package/dist/styles.css +1 -1
  818. package/dist/tailwind-preset.cjs +15 -0
  819. package/dist/tailwind-preset.cjs.map +1 -1
  820. package/dist/tailwind-preset.d.ts.map +1 -1
  821. package/dist/tailwind-preset.js +15 -0
  822. package/dist/tailwind-preset.js.map +1 -1
  823. package/package.json +2 -2
@@ -0,0 +1,162 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Icon } from "../Icon.js";
4
+ import { Tree } from "../Tree.js";
5
+ import { UiFolder } from "../../icons/components/UiFolder.js";
6
+ import { UiMarkdown } from "../../icons/components/UiMarkdown.js";
7
+ import { UiJson } from "../../icons/components/UiJson.js";
8
+ import { UiFileSpreadsheet } from "../../icons/components/UiFileSpreadsheet.js";
9
+ import { UiImage } from "../../icons/components/UiImage.js";
10
+ import { UiFileText } from "../../icons/components/UiFileText.js";
11
+ import { UiFileCode } from "../../icons/components/UiFileCode.js";
12
+ import { UiFile } from "../../icons/components/UiFile.js";
13
+ function SessionFilesPanel({
14
+ files
15
+ }) {
16
+ const roots = buildFileTree(files);
17
+ if (!roots.length) {
18
+ return /* @__PURE__ */ jsx("div", { className: "rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground", children: "No changed-file summary." });
19
+ }
20
+ return /* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-background", children: [
21
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-border bg-muted/30 px-density-3 py-density-2 text-xs text-muted-foreground", children: [
22
+ /* @__PURE__ */ jsxs("span", { children: [
23
+ roots.reduce((count, node) => count + countFiles(node), 0),
24
+ " files"
25
+ ] }),
26
+ /* @__PURE__ */ jsxs("span", { className: "flex gap-density-3", children: [
27
+ /* @__PURE__ */ jsx("span", { children: "R read" }),
28
+ /* @__PURE__ */ jsx("span", { children: "W written" })
29
+ ] })
30
+ ] }),
31
+ /* @__PURE__ */ jsx(
32
+ Tree,
33
+ {
34
+ roots,
35
+ ariaLabel: "Session files",
36
+ getChildren: (node) => [...node.children.values()].sort(compareNodes),
37
+ getKey: (node) => node.path,
38
+ getAriaLabel: (node) => node.path,
39
+ getSearchText: (node) => node.path,
40
+ defaultOpen: () => true,
41
+ renderRow: ({ node, hasChildren }) => /* @__PURE__ */ jsx(FileTreeRow, { node, directory: hasChildren }),
42
+ rowClass: (node) => cn(
43
+ "group min-h-6 border-l-2 border-transparent py-0 pr-density-3 text-xs hover:border-primary/40 hover:bg-muted/40",
44
+ !node.children.size && node.access.has("written") && "border-l-amber-500/60"
45
+ ),
46
+ className: "pb-1"
47
+ }
48
+ )
49
+ ] });
50
+ }
51
+ function FileTreeRow({
52
+ node,
53
+ directory
54
+ }) {
55
+ const FileIcon = directory ? UiFolder : fileTypeIcon(node.name);
56
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
57
+ /* @__PURE__ */ jsx(
58
+ Icon,
59
+ {
60
+ icon: FileIcon,
61
+ className: cn(
62
+ "size-4 shrink-0",
63
+ directory ? "text-sky-600 dark:text-sky-400" : "text-muted-foreground"
64
+ )
65
+ }
66
+ ),
67
+ /* @__PURE__ */ jsx(
68
+ "span",
69
+ {
70
+ className: cn(
71
+ "min-w-0 flex-1 truncate",
72
+ directory ? "font-medium" : "font-mono"
73
+ ),
74
+ children: node.name
75
+ }
76
+ ),
77
+ !directory ? /* @__PURE__ */ jsx(AccessBadge, { access: node.access }) : null
78
+ ] });
79
+ }
80
+ function AccessBadge({ access }) {
81
+ const label = access.has("read") && access.has("written") ? "RW" : access.has("written") ? "W" : "R";
82
+ return /* @__PURE__ */ jsx(
83
+ "span",
84
+ {
85
+ title: label === "RW" ? "Read and written" : label === "W" ? "Written" : "Read",
86
+ className: cn(
87
+ "w-6 shrink-0 text-right font-mono text-[11px] font-semibold",
88
+ access.has("written") ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground"
89
+ ),
90
+ children: label
91
+ }
92
+ );
93
+ }
94
+ function buildFileTree(files) {
95
+ const roots = /* @__PURE__ */ new Map();
96
+ addPaths(roots, (files == null ? void 0 : files.read) ?? [], "read");
97
+ addPaths(roots, (files == null ? void 0 : files.written) ?? [], "written");
98
+ return [...roots.values()].sort(compareNodes);
99
+ }
100
+ function addPaths(roots, paths, access) {
101
+ for (const path of paths) {
102
+ const parts = path.split("/").filter(Boolean);
103
+ let nodes = roots;
104
+ let currentPath = "";
105
+ parts.forEach((part, index) => {
106
+ currentPath = currentPath ? `${currentPath}/${part}` : part;
107
+ const node = nodes.get(part) ?? {
108
+ name: part,
109
+ path: currentPath,
110
+ children: /* @__PURE__ */ new Map(),
111
+ access: /* @__PURE__ */ new Set()
112
+ };
113
+ nodes.set(part, node);
114
+ if (index === parts.length - 1) node.access.add(access);
115
+ nodes = node.children;
116
+ });
117
+ }
118
+ }
119
+ function compareNodes(left, right) {
120
+ const leftDirectory = left.children.size > 0;
121
+ const rightDirectory = right.children.size > 0;
122
+ if (leftDirectory !== rightDirectory) return leftDirectory ? -1 : 1;
123
+ return left.name.localeCompare(right.name);
124
+ }
125
+ function countFiles(node) {
126
+ return node.children.size ? [...node.children.values()].reduce(
127
+ (count, child) => count + countFiles(child),
128
+ 0
129
+ ) : 1;
130
+ }
131
+ function fileTypeIcon(path) {
132
+ const extension = path.toLowerCase().split(".").at(-1) ?? "";
133
+ if (["md", "mdx"].includes(extension)) return UiMarkdown;
134
+ if (["json", "jsonl"].includes(extension)) return UiJson;
135
+ if (["csv", "xls", "xlsx"].includes(extension)) return UiFileSpreadsheet;
136
+ if (["png", "jpg", "jpeg", "gif", "svg", "webp"].includes(extension))
137
+ return UiImage;
138
+ if (["txt", "log", "rst"].includes(extension)) return UiFileText;
139
+ if ([
140
+ "ts",
141
+ "tsx",
142
+ "js",
143
+ "jsx",
144
+ "go",
145
+ "py",
146
+ "rs",
147
+ "java",
148
+ "css",
149
+ "scss",
150
+ "html",
151
+ "yaml",
152
+ "yml",
153
+ "toml",
154
+ "sh"
155
+ ].includes(extension))
156
+ return UiFileCode;
157
+ return UiFile;
158
+ }
159
+ export {
160
+ SessionFilesPanel
161
+ };
162
+ //# sourceMappingURL=SessionInspector.files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.files.js","sources":["../../../src/data/ai/SessionInspector.files.tsx"],"sourcesContent":["import {\n UiFile,\n UiFileCode,\n UiFileSpreadsheet,\n UiFileText,\n UiFolder,\n UiImage,\n UiJson,\n UiMarkdown,\n} from \"../../icons\";\nimport type { IconComponent } from \"../../icons/types\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport { Tree } from \"../Tree\";\nimport type { SessionChangedFiles } from \"./SessionViewer.unified\";\n\ntype FileAccess = \"read\" | \"written\";\n\ntype FileTreeNode = {\n name: string;\n path: string;\n children: Map<string, FileTreeNode>;\n access: Set<FileAccess>;\n};\n\nexport function SessionFilesPanel({\n files,\n}: {\n files: SessionChangedFiles | undefined;\n}) {\n const roots = buildFileTree(files);\n if (!roots.length) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No changed-file summary.\n </div>\n );\n }\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border bg-muted/30 px-density-3 py-density-2 text-xs text-muted-foreground\">\n <span>\n {roots.reduce((count, node) => count + countFiles(node), 0)} files\n </span>\n <span className=\"flex gap-density-3\">\n <span>R read</span>\n <span>W written</span>\n </span>\n </div>\n <Tree<FileTreeNode>\n roots={roots}\n ariaLabel=\"Session files\"\n getChildren={(node) => [...node.children.values()].sort(compareNodes)}\n getKey={(node) => node.path}\n getAriaLabel={(node) => node.path}\n getSearchText={(node) => node.path}\n defaultOpen={() => true}\n renderRow={({ node, hasChildren }) => (\n <FileTreeRow node={node} directory={hasChildren} />\n )}\n rowClass={(node) =>\n cn(\n \"group min-h-6 border-l-2 border-transparent py-0 pr-density-3 text-xs hover:border-primary/40 hover:bg-muted/40\",\n !node.children.size &&\n node.access.has(\"written\") &&\n \"border-l-amber-500/60\",\n )\n }\n className=\"pb-1\"\n />\n </div>\n );\n}\n\nfunction FileTreeRow({\n node,\n directory,\n}: {\n node: FileTreeNode;\n directory: boolean;\n}) {\n const FileIcon = directory ? UiFolder : fileTypeIcon(node.name);\n return (\n <>\n <Icon\n icon={FileIcon}\n className={cn(\n \"size-4 shrink-0\",\n directory\n ? \"text-sky-600 dark:text-sky-400\"\n : \"text-muted-foreground\",\n )}\n />\n <span\n className={cn(\n \"min-w-0 flex-1 truncate\",\n directory ? \"font-medium\" : \"font-mono\",\n )}\n >\n {node.name}\n </span>\n {!directory ? <AccessBadge access={node.access} /> : null}\n </>\n );\n}\n\nfunction AccessBadge({ access }: { access: Set<FileAccess> }) {\n const label =\n access.has(\"read\") && access.has(\"written\")\n ? \"RW\"\n : access.has(\"written\")\n ? \"W\"\n : \"R\";\n return (\n <span\n title={\n label === \"RW\" ? \"Read and written\" : label === \"W\" ? \"Written\" : \"Read\"\n }\n className={cn(\n \"w-6 shrink-0 text-right font-mono text-[11px] font-semibold\",\n access.has(\"written\")\n ? \"text-amber-600 dark:text-amber-400\"\n : \"text-muted-foreground\",\n )}\n >\n {label}\n </span>\n );\n}\n\nfunction buildFileTree(files: SessionChangedFiles | undefined) {\n const roots = new Map<string, FileTreeNode>();\n addPaths(roots, files?.read ?? [], \"read\");\n addPaths(roots, files?.written ?? [], \"written\");\n return [...roots.values()].sort(compareNodes);\n}\n\nfunction addPaths(\n roots: Map<string, FileTreeNode>,\n paths: string[],\n access: FileAccess,\n) {\n for (const path of paths) {\n const parts = path.split(\"/\").filter(Boolean);\n let nodes = roots;\n let currentPath = \"\";\n parts.forEach((part, index) => {\n currentPath = currentPath ? `${currentPath}/${part}` : part;\n const node = nodes.get(part) ?? {\n name: part,\n path: currentPath,\n children: new Map(),\n access: new Set<FileAccess>(),\n };\n nodes.set(part, node);\n if (index === parts.length - 1) node.access.add(access);\n nodes = node.children;\n });\n }\n}\n\nfunction compareNodes(left: FileTreeNode, right: FileTreeNode) {\n const leftDirectory = left.children.size > 0;\n const rightDirectory = right.children.size > 0;\n if (leftDirectory !== rightDirectory) return leftDirectory ? -1 : 1;\n return left.name.localeCompare(right.name);\n}\n\nfunction countFiles(node: FileTreeNode): number {\n return node.children.size\n ? [...node.children.values()].reduce(\n (count, child) => count + countFiles(child),\n 0,\n )\n : 1;\n}\n\nfunction fileTypeIcon(path: string): IconComponent {\n const extension = path.toLowerCase().split(\".\").at(-1) ?? \"\";\n if ([\"md\", \"mdx\"].includes(extension)) return UiMarkdown;\n if ([\"json\", \"jsonl\"].includes(extension)) return UiJson;\n if ([\"csv\", \"xls\", \"xlsx\"].includes(extension)) return UiFileSpreadsheet;\n if ([\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"webp\"].includes(extension))\n return UiImage;\n if ([\"txt\", \"log\", \"rst\"].includes(extension)) return UiFileText;\n if (\n [\n \"ts\",\n \"tsx\",\n \"js\",\n \"jsx\",\n \"go\",\n \"py\",\n \"rs\",\n \"java\",\n \"css\",\n \"scss\",\n \"html\",\n \"yaml\",\n \"yml\",\n \"toml\",\n \"sh\",\n ].includes(extension)\n )\n return UiFileCode;\n return UiFile;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const SessionInspector_collection = require("./SessionInspector.collection.cjs");
5
+ function useSessionHierarchy(collection) {
6
+ var _a;
7
+ SessionInspector_collection.validateSessionCollection(collection);
8
+ const [loaded, setLoaded] = react.useState(
9
+ /* @__PURE__ */ new Map()
10
+ );
11
+ const [loading, setLoading] = react.useState(/* @__PURE__ */ new Set());
12
+ const [errors, setErrors] = react.useState(/* @__PURE__ */ new Map());
13
+ const roots = react.useMemo(
14
+ () => SessionInspector_collection.buildSessionHierarchy(collection, loaded),
15
+ [collection, loaded]
16
+ );
17
+ const initialSessionIds = ((_a = collection.defaultSelectedSessionIds) == null ? void 0 : _a.length) ? collection.defaultSelectedSessionIds : [collection.currentSessionId];
18
+ const [checked, setChecked] = react.useState(
19
+ () => SessionInspector_collection.initialCheckedKeys(roots, initialSessionIds)
20
+ );
21
+ const identity = `${collection.id}:${collection.currentSessionId}:${initialSessionIds.join(",")}`;
22
+ const previousIdentity = react.useRef(identity);
23
+ react.useEffect(() => {
24
+ if (previousIdentity.current === identity) return;
25
+ previousIdentity.current = identity;
26
+ setLoaded(/* @__PURE__ */ new Map());
27
+ setErrors(/* @__PURE__ */ new Map());
28
+ setChecked(
29
+ SessionInspector_collection.initialCheckedKeys(
30
+ SessionInspector_collection.buildSessionHierarchy(collection, /* @__PURE__ */ new Map()),
31
+ initialSessionIds
32
+ )
33
+ );
34
+ }, [collection, identity]);
35
+ react.useEffect(() => {
36
+ setChecked((previous) => reconcileCheckedBranches(roots, previous));
37
+ }, [roots]);
38
+ const ensureLoaded = react.useCallback(
39
+ async (item) => {
40
+ const existing = SessionInspector_collection.collectionSession(item, loaded);
41
+ if (existing) return existing;
42
+ if (!collection.loadSession) {
43
+ throw new Error(
44
+ `Session ${item.id} is not loaded and no loader was provided`
45
+ );
46
+ }
47
+ setLoading((previous) => new Set(previous).add(item.id));
48
+ setErrors((previous) => {
49
+ const next = new Map(previous);
50
+ next.delete(item.id);
51
+ return next;
52
+ });
53
+ try {
54
+ const session = await collection.loadSession(item);
55
+ if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);
56
+ setLoaded((previous) => new Map(previous).set(item.id, session));
57
+ return session;
58
+ } catch (reason) {
59
+ const message = reason instanceof Error ? reason.message : String(reason);
60
+ setErrors((previous) => new Map(previous).set(item.id, message));
61
+ throw reason;
62
+ } finally {
63
+ setLoading((previous) => {
64
+ const next = new Set(previous);
65
+ next.delete(item.id);
66
+ return next;
67
+ });
68
+ }
69
+ },
70
+ [collection, loaded]
71
+ );
72
+ const loadChildren = react.useCallback(
73
+ async (node) => {
74
+ if (node.kind !== "session" || !node.item) return node.children;
75
+ const session = await ensureLoaded(node.item);
76
+ const nextLoaded = new Map(loaded).set(node.item.id, session);
77
+ const nextRoots = SessionInspector_collection.buildSessionHierarchy(collection, nextLoaded);
78
+ const nextNode = findNode(nextRoots, node.key);
79
+ if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);
80
+ if (checked.has(node.key)) {
81
+ setChecked((previous) => {
82
+ const next = new Set(previous);
83
+ SessionInspector_collection.branchKeys(nextNode).forEach((key) => next.add(key));
84
+ return next;
85
+ });
86
+ }
87
+ return nextNode.children;
88
+ },
89
+ [checked, collection, ensureLoaded, loaded]
90
+ );
91
+ const setBranchChecked = react.useCallback(
92
+ async (node, include) => {
93
+ let nextNode = node;
94
+ let targetRoots = roots;
95
+ if (include && node.kind === "session" && node.item && !SessionInspector_collection.collectionSession(node.item, loaded)) {
96
+ const session = await ensureLoaded(node.item);
97
+ targetRoots = SessionInspector_collection.buildSessionHierarchy(
98
+ collection,
99
+ new Map(loaded).set(node.item.id, session)
100
+ );
101
+ nextNode = findNode(targetRoots, node.key) ?? node;
102
+ }
103
+ setChecked(
104
+ (previous) => SessionInspector_collection.toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)
105
+ );
106
+ },
107
+ [collection, ensureLoaded, loaded, roots]
108
+ );
109
+ const currentItem = collection.sessions.find(
110
+ (item) => item.id === collection.currentSessionId
111
+ );
112
+ const current = SessionInspector_collection.collectionSession(currentItem, loaded);
113
+ return {
114
+ current,
115
+ filtered: SessionInspector_collection.filterSessionCollection(collection, loaded, roots, checked),
116
+ roots,
117
+ checked,
118
+ setBranchChecked,
119
+ loadChildren,
120
+ loading,
121
+ loadedSessionIds: /* @__PURE__ */ new Set([
122
+ ...collection.sessions.filter((item) => Boolean(item.session)).map((item) => item.id),
123
+ ...loaded.keys()
124
+ ]),
125
+ errors
126
+ };
127
+ }
128
+ function findNode(roots, key) {
129
+ for (const root of roots) {
130
+ if (root.key === key) return root;
131
+ const child = findNode(root.children, key);
132
+ if (child) return child;
133
+ }
134
+ }
135
+ function reconcileCheckedBranches(roots, checked) {
136
+ const next = new Set(checked);
137
+ const visit = (node) => {
138
+ if (checked.has(node.key)) {
139
+ SessionInspector_collection.branchKeys(node).forEach((key) => next.add(key));
140
+ return;
141
+ }
142
+ node.children.forEach(visit);
143
+ };
144
+ roots.forEach(visit);
145
+ return next;
146
+ }
147
+ exports.useSessionHierarchy = useSessionHierarchy;
148
+ //# sourceMappingURL=SessionInspector.hierarchy-state.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.hierarchy-state.cjs","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n branchKeys,\n buildSessionHierarchy,\n collectionSession,\n filterSessionCollection,\n initialCheckedKeys,\n toggleHierarchyBranch,\n validateSessionCollection,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionHierarchyNode,\n} from \"./SessionInspector.collection\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport interface SessionHierarchyState {\n current: UnifiedSessionInput;\n filtered: UnifiedSessionInput;\n roots: SessionHierarchyNode[];\n checked: ReadonlySet<string>;\n setBranchChecked: (\n node: SessionHierarchyNode,\n include: boolean\n ) => Promise<void>;\n loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;\n loading: ReadonlySet<string>;\n loadedSessionIds: ReadonlySet<string>;\n errors: ReadonlyMap<string, string>;\n}\n\nexport function useSessionHierarchy(\n collection: SessionCollectionInput\n): SessionHierarchyState {\n validateSessionCollection(collection);\n const [loaded, setLoaded] = useState<Map<string, UnifiedSessionInput>>(\n new Map()\n );\n const [loading, setLoading] = useState<Set<string>>(new Set());\n const [errors, setErrors] = useState<Map<string, string>>(new Map());\n const roots = useMemo(\n () => buildSessionHierarchy(collection, loaded),\n [collection, loaded]\n );\n const initialSessionIds = collection.defaultSelectedSessionIds?.length\n ? collection.defaultSelectedSessionIds\n : [collection.currentSessionId];\n const [checked, setChecked] = useState<Set<string>>(() =>\n initialCheckedKeys(roots, initialSessionIds)\n );\n const identity = `${collection.id}:${\n collection.currentSessionId\n }:${initialSessionIds.join(\",\")}`;\n const previousIdentity = useRef(identity);\n\n useEffect(() => {\n if (previousIdentity.current === identity) return;\n previousIdentity.current = identity;\n setLoaded(new Map());\n setErrors(new Map());\n setChecked(\n initialCheckedKeys(\n buildSessionHierarchy(collection, new Map()),\n initialSessionIds\n )\n );\n }, [collection, identity]);\n\n useEffect(() => {\n setChecked((previous) => reconcileCheckedBranches(roots, previous));\n }, [roots]);\n\n const ensureLoaded = useCallback(\n async (item: SessionCollectionItem) => {\n const existing = collectionSession(item, loaded);\n if (existing) return existing;\n if (!collection.loadSession) {\n throw new Error(\n `Session ${item.id} is not loaded and no loader was provided`\n );\n }\n setLoading((previous) => new Set(previous).add(item.id));\n setErrors((previous) => {\n const next = new Map(previous);\n next.delete(item.id);\n return next;\n });\n try {\n const session = await collection.loadSession(item);\n if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);\n setLoaded((previous) => new Map(previous).set(item.id, session));\n return session;\n } catch (reason) {\n const message =\n reason instanceof Error ? reason.message : String(reason);\n setErrors((previous) => new Map(previous).set(item.id, message));\n throw reason;\n } finally {\n setLoading((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n }\n },\n [collection, loaded]\n );\n\n const loadChildren = useCallback(\n async (node: SessionHierarchyNode) => {\n if (node.kind !== \"session\" || !node.item) return node.children;\n const session = await ensureLoaded(node.item);\n const nextLoaded = new Map(loaded).set(node.item.id, session);\n const nextRoots = buildSessionHierarchy(collection, nextLoaded);\n const nextNode = findNode(nextRoots, node.key);\n if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);\n if (checked.has(node.key)) {\n setChecked((previous) => {\n const next = new Set(previous);\n branchKeys(nextNode).forEach((key) => next.add(key));\n return next;\n });\n }\n return nextNode.children;\n },\n [checked, collection, ensureLoaded, loaded]\n );\n\n const setBranchChecked = useCallback(\n async (node: SessionHierarchyNode, include: boolean) => {\n let nextNode = node;\n let targetRoots = roots;\n if (\n include &&\n node.kind === \"session\" &&\n node.item &&\n !collectionSession(node.item, loaded)\n ) {\n const session = await ensureLoaded(node.item);\n targetRoots = buildSessionHierarchy(\n collection,\n new Map(loaded).set(node.item.id, session)\n );\n nextNode = findNode(targetRoots, node.key) ?? node;\n }\n setChecked((previous) =>\n toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)\n );\n },\n [collection, ensureLoaded, loaded, roots]\n );\n\n const currentItem = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n )!;\n const current = collectionSession(currentItem, loaded)!;\n return {\n current,\n filtered: filterSessionCollection(collection, loaded, roots, checked),\n roots,\n checked,\n setBranchChecked,\n loadChildren,\n loading,\n loadedSessionIds: new Set([\n ...collection.sessions\n .filter((item) => Boolean(item.session))\n .map((item) => item.id),\n ...loaded.keys(),\n ]),\n errors,\n };\n}\n\nfunction findNode(\n roots: SessionHierarchyNode[],\n key: string\n): SessionHierarchyNode | undefined {\n for (const root of roots) {\n if (root.key === key) return root;\n const child = findNode(root.children, key);\n if (child) return child;\n }\n}\n\nfunction reconcileCheckedBranches(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n) {\n const next = new Set(checked);\n const visit = (node: SessionHierarchyNode) => {\n if (checked.has(node.key)) {\n branchKeys(node).forEach((key) => next.add(key));\n return;\n }\n node.children.forEach(visit);\n };\n roots.forEach(visit);\n return next;\n}\n"],"names":["validateSessionCollection","useState","useMemo","buildSessionHierarchy","initialCheckedKeys","useRef","useEffect","useCallback","collectionSession","branchKeys","toggleHierarchyBranch","filterSessionCollection"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SessionCollectionInput, SessionHierarchyNode } from './SessionInspector.collection';
2
+ import { UnifiedSessionInput } from './SessionViewer.unified';
3
+ export interface SessionHierarchyState {
4
+ current: UnifiedSessionInput;
5
+ filtered: UnifiedSessionInput;
6
+ roots: SessionHierarchyNode[];
7
+ checked: ReadonlySet<string>;
8
+ setBranchChecked: (node: SessionHierarchyNode, include: boolean) => Promise<void>;
9
+ loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;
10
+ loading: ReadonlySet<string>;
11
+ loadedSessionIds: ReadonlySet<string>;
12
+ errors: ReadonlyMap<string, string>;
13
+ }
14
+ export declare function useSessionHierarchy(collection: SessionCollectionInput): SessionHierarchyState;
15
+ //# sourceMappingURL=SessionInspector.hierarchy-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.hierarchy-state.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAE,CAChB,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,sBAAsB,GACjC,qBAAqB,CA2IvB"}
@@ -0,0 +1,148 @@
1
+ import { useState, useMemo, useRef, useEffect, useCallback } from "react";
2
+ import { validateSessionCollection, buildSessionHierarchy, initialCheckedKeys, collectionSession, branchKeys, toggleHierarchyBranch, filterSessionCollection } from "./SessionInspector.collection.js";
3
+ function useSessionHierarchy(collection) {
4
+ var _a;
5
+ validateSessionCollection(collection);
6
+ const [loaded, setLoaded] = useState(
7
+ /* @__PURE__ */ new Map()
8
+ );
9
+ const [loading, setLoading] = useState(/* @__PURE__ */ new Set());
10
+ const [errors, setErrors] = useState(/* @__PURE__ */ new Map());
11
+ const roots = useMemo(
12
+ () => buildSessionHierarchy(collection, loaded),
13
+ [collection, loaded]
14
+ );
15
+ const initialSessionIds = ((_a = collection.defaultSelectedSessionIds) == null ? void 0 : _a.length) ? collection.defaultSelectedSessionIds : [collection.currentSessionId];
16
+ const [checked, setChecked] = useState(
17
+ () => initialCheckedKeys(roots, initialSessionIds)
18
+ );
19
+ const identity = `${collection.id}:${collection.currentSessionId}:${initialSessionIds.join(",")}`;
20
+ const previousIdentity = useRef(identity);
21
+ useEffect(() => {
22
+ if (previousIdentity.current === identity) return;
23
+ previousIdentity.current = identity;
24
+ setLoaded(/* @__PURE__ */ new Map());
25
+ setErrors(/* @__PURE__ */ new Map());
26
+ setChecked(
27
+ initialCheckedKeys(
28
+ buildSessionHierarchy(collection, /* @__PURE__ */ new Map()),
29
+ initialSessionIds
30
+ )
31
+ );
32
+ }, [collection, identity]);
33
+ useEffect(() => {
34
+ setChecked((previous) => reconcileCheckedBranches(roots, previous));
35
+ }, [roots]);
36
+ const ensureLoaded = useCallback(
37
+ async (item) => {
38
+ const existing = collectionSession(item, loaded);
39
+ if (existing) return existing;
40
+ if (!collection.loadSession) {
41
+ throw new Error(
42
+ `Session ${item.id} is not loaded and no loader was provided`
43
+ );
44
+ }
45
+ setLoading((previous) => new Set(previous).add(item.id));
46
+ setErrors((previous) => {
47
+ const next = new Map(previous);
48
+ next.delete(item.id);
49
+ return next;
50
+ });
51
+ try {
52
+ const session = await collection.loadSession(item);
53
+ if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);
54
+ setLoaded((previous) => new Map(previous).set(item.id, session));
55
+ return session;
56
+ } catch (reason) {
57
+ const message = reason instanceof Error ? reason.message : String(reason);
58
+ setErrors((previous) => new Map(previous).set(item.id, message));
59
+ throw reason;
60
+ } finally {
61
+ setLoading((previous) => {
62
+ const next = new Set(previous);
63
+ next.delete(item.id);
64
+ return next;
65
+ });
66
+ }
67
+ },
68
+ [collection, loaded]
69
+ );
70
+ const loadChildren = useCallback(
71
+ async (node) => {
72
+ if (node.kind !== "session" || !node.item) return node.children;
73
+ const session = await ensureLoaded(node.item);
74
+ const nextLoaded = new Map(loaded).set(node.item.id, session);
75
+ const nextRoots = buildSessionHierarchy(collection, nextLoaded);
76
+ const nextNode = findNode(nextRoots, node.key);
77
+ if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);
78
+ if (checked.has(node.key)) {
79
+ setChecked((previous) => {
80
+ const next = new Set(previous);
81
+ branchKeys(nextNode).forEach((key) => next.add(key));
82
+ return next;
83
+ });
84
+ }
85
+ return nextNode.children;
86
+ },
87
+ [checked, collection, ensureLoaded, loaded]
88
+ );
89
+ const setBranchChecked = useCallback(
90
+ async (node, include) => {
91
+ let nextNode = node;
92
+ let targetRoots = roots;
93
+ if (include && node.kind === "session" && node.item && !collectionSession(node.item, loaded)) {
94
+ const session = await ensureLoaded(node.item);
95
+ targetRoots = buildSessionHierarchy(
96
+ collection,
97
+ new Map(loaded).set(node.item.id, session)
98
+ );
99
+ nextNode = findNode(targetRoots, node.key) ?? node;
100
+ }
101
+ setChecked(
102
+ (previous) => toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)
103
+ );
104
+ },
105
+ [collection, ensureLoaded, loaded, roots]
106
+ );
107
+ const currentItem = collection.sessions.find(
108
+ (item) => item.id === collection.currentSessionId
109
+ );
110
+ const current = collectionSession(currentItem, loaded);
111
+ return {
112
+ current,
113
+ filtered: filterSessionCollection(collection, loaded, roots, checked),
114
+ roots,
115
+ checked,
116
+ setBranchChecked,
117
+ loadChildren,
118
+ loading,
119
+ loadedSessionIds: /* @__PURE__ */ new Set([
120
+ ...collection.sessions.filter((item) => Boolean(item.session)).map((item) => item.id),
121
+ ...loaded.keys()
122
+ ]),
123
+ errors
124
+ };
125
+ }
126
+ function findNode(roots, key) {
127
+ for (const root of roots) {
128
+ if (root.key === key) return root;
129
+ const child = findNode(root.children, key);
130
+ if (child) return child;
131
+ }
132
+ }
133
+ function reconcileCheckedBranches(roots, checked) {
134
+ const next = new Set(checked);
135
+ const visit = (node) => {
136
+ if (checked.has(node.key)) {
137
+ branchKeys(node).forEach((key) => next.add(key));
138
+ return;
139
+ }
140
+ node.children.forEach(visit);
141
+ };
142
+ roots.forEach(visit);
143
+ return next;
144
+ }
145
+ export {
146
+ useSessionHierarchy
147
+ };
148
+ //# sourceMappingURL=SessionInspector.hierarchy-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.hierarchy-state.js","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n branchKeys,\n buildSessionHierarchy,\n collectionSession,\n filterSessionCollection,\n initialCheckedKeys,\n toggleHierarchyBranch,\n validateSessionCollection,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionHierarchyNode,\n} from \"./SessionInspector.collection\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport interface SessionHierarchyState {\n current: UnifiedSessionInput;\n filtered: UnifiedSessionInput;\n roots: SessionHierarchyNode[];\n checked: ReadonlySet<string>;\n setBranchChecked: (\n node: SessionHierarchyNode,\n include: boolean\n ) => Promise<void>;\n loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;\n loading: ReadonlySet<string>;\n loadedSessionIds: ReadonlySet<string>;\n errors: ReadonlyMap<string, string>;\n}\n\nexport function useSessionHierarchy(\n collection: SessionCollectionInput\n): SessionHierarchyState {\n validateSessionCollection(collection);\n const [loaded, setLoaded] = useState<Map<string, UnifiedSessionInput>>(\n new Map()\n );\n const [loading, setLoading] = useState<Set<string>>(new Set());\n const [errors, setErrors] = useState<Map<string, string>>(new Map());\n const roots = useMemo(\n () => buildSessionHierarchy(collection, loaded),\n [collection, loaded]\n );\n const initialSessionIds = collection.defaultSelectedSessionIds?.length\n ? collection.defaultSelectedSessionIds\n : [collection.currentSessionId];\n const [checked, setChecked] = useState<Set<string>>(() =>\n initialCheckedKeys(roots, initialSessionIds)\n );\n const identity = `${collection.id}:${\n collection.currentSessionId\n }:${initialSessionIds.join(\",\")}`;\n const previousIdentity = useRef(identity);\n\n useEffect(() => {\n if (previousIdentity.current === identity) return;\n previousIdentity.current = identity;\n setLoaded(new Map());\n setErrors(new Map());\n setChecked(\n initialCheckedKeys(\n buildSessionHierarchy(collection, new Map()),\n initialSessionIds\n )\n );\n }, [collection, identity]);\n\n useEffect(() => {\n setChecked((previous) => reconcileCheckedBranches(roots, previous));\n }, [roots]);\n\n const ensureLoaded = useCallback(\n async (item: SessionCollectionItem) => {\n const existing = collectionSession(item, loaded);\n if (existing) return existing;\n if (!collection.loadSession) {\n throw new Error(\n `Session ${item.id} is not loaded and no loader was provided`\n );\n }\n setLoading((previous) => new Set(previous).add(item.id));\n setErrors((previous) => {\n const next = new Map(previous);\n next.delete(item.id);\n return next;\n });\n try {\n const session = await collection.loadSession(item);\n if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);\n setLoaded((previous) => new Map(previous).set(item.id, session));\n return session;\n } catch (reason) {\n const message =\n reason instanceof Error ? reason.message : String(reason);\n setErrors((previous) => new Map(previous).set(item.id, message));\n throw reason;\n } finally {\n setLoading((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n }\n },\n [collection, loaded]\n );\n\n const loadChildren = useCallback(\n async (node: SessionHierarchyNode) => {\n if (node.kind !== \"session\" || !node.item) return node.children;\n const session = await ensureLoaded(node.item);\n const nextLoaded = new Map(loaded).set(node.item.id, session);\n const nextRoots = buildSessionHierarchy(collection, nextLoaded);\n const nextNode = findNode(nextRoots, node.key);\n if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);\n if (checked.has(node.key)) {\n setChecked((previous) => {\n const next = new Set(previous);\n branchKeys(nextNode).forEach((key) => next.add(key));\n return next;\n });\n }\n return nextNode.children;\n },\n [checked, collection, ensureLoaded, loaded]\n );\n\n const setBranchChecked = useCallback(\n async (node: SessionHierarchyNode, include: boolean) => {\n let nextNode = node;\n let targetRoots = roots;\n if (\n include &&\n node.kind === \"session\" &&\n node.item &&\n !collectionSession(node.item, loaded)\n ) {\n const session = await ensureLoaded(node.item);\n targetRoots = buildSessionHierarchy(\n collection,\n new Map(loaded).set(node.item.id, session)\n );\n nextNode = findNode(targetRoots, node.key) ?? node;\n }\n setChecked((previous) =>\n toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)\n );\n },\n [collection, ensureLoaded, loaded, roots]\n );\n\n const currentItem = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n )!;\n const current = collectionSession(currentItem, loaded)!;\n return {\n current,\n filtered: filterSessionCollection(collection, loaded, roots, checked),\n roots,\n checked,\n setBranchChecked,\n loadChildren,\n loading,\n loadedSessionIds: new Set([\n ...collection.sessions\n .filter((item) => Boolean(item.session))\n .map((item) => item.id),\n ...loaded.keys(),\n ]),\n errors,\n };\n}\n\nfunction findNode(\n roots: SessionHierarchyNode[],\n key: string\n): SessionHierarchyNode | undefined {\n for (const root of roots) {\n if (root.key === key) return root;\n const child = findNode(root.children, key);\n if (child) return child;\n }\n}\n\nfunction reconcileCheckedBranches(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n) {\n const next = new Set(checked);\n const visit = (node: SessionHierarchyNode) => {\n if (checked.has(node.key)) {\n branchKeys(node).forEach((key) => next.add(key));\n return;\n }\n node.children.forEach(visit);\n };\n roots.forEach(visit);\n return next;\n}\n"],"names":[],"mappings":"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"}