@flanksource/clicky-ui 0.3.15 → 0.3.16

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 (754) 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 +177 -6
  139. package/dist/data/DataTable.cjs.map +1 -1
  140. package/dist/data/DataTable.d.ts +39 -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 +177 -6
  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/StatStrip.cjs +99 -0
  163. package/dist/data/StatStrip.cjs.map +1 -0
  164. package/dist/data/StatStrip.d.ts +41 -0
  165. package/dist/data/StatStrip.d.ts.map +1 -0
  166. package/dist/data/StatStrip.js +99 -0
  167. package/dist/data/StatStrip.js.map +1 -0
  168. package/dist/data/TaskManager.cjs +20 -1
  169. package/dist/data/TaskManager.cjs.map +1 -1
  170. package/dist/data/TaskManager.d.ts +3 -1
  171. package/dist/data/TaskManager.d.ts.map +1 -1
  172. package/dist/data/TaskManager.js +20 -1
  173. package/dist/data/TaskManager.js.map +1 -1
  174. package/dist/data/TaskManagerButton.cjs +49 -0
  175. package/dist/data/TaskManagerButton.cjs.map +1 -0
  176. package/dist/data/TaskManagerButton.d.ts +8 -0
  177. package/dist/data/TaskManagerButton.d.ts.map +1 -0
  178. package/dist/data/TaskManagerButton.js +49 -0
  179. package/dist/data/TaskManagerButton.js.map +1 -0
  180. package/dist/data/TaskProcessDetails.cjs +113 -0
  181. package/dist/data/TaskProcessDetails.cjs.map +1 -0
  182. package/dist/data/TaskProcessDetails.d.ts +6 -0
  183. package/dist/data/TaskProcessDetails.d.ts.map +1 -0
  184. package/dist/data/TaskProcessDetails.js +113 -0
  185. package/dist/data/TaskProcessDetails.js.map +1 -0
  186. package/dist/data/TaskProgress.cjs +106 -19
  187. package/dist/data/TaskProgress.cjs.map +1 -1
  188. package/dist/data/TaskProgress.d.ts +4 -2
  189. package/dist/data/TaskProgress.d.ts.map +1 -1
  190. package/dist/data/TaskProgress.js +107 -20
  191. package/dist/data/TaskProgress.js.map +1 -1
  192. package/dist/data/TaskSnapshot.cjs.map +1 -1
  193. package/dist/data/TaskSnapshot.d.ts +43 -0
  194. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  195. package/dist/data/TaskSnapshot.js.map +1 -1
  196. package/dist/data/Tree.cjs +91 -82
  197. package/dist/data/Tree.cjs.map +1 -1
  198. package/dist/data/Tree.d.ts +3 -1
  199. package/dist/data/Tree.d.ts.map +1 -1
  200. package/dist/data/Tree.js +91 -82
  201. package/dist/data/Tree.js.map +1 -1
  202. package/dist/data/TreeNode.cjs +3 -0
  203. package/dist/data/TreeNode.cjs.map +1 -1
  204. package/dist/data/TreeNode.d.ts +2 -1
  205. package/dist/data/TreeNode.d.ts.map +1 -1
  206. package/dist/data/TreeNode.js +3 -0
  207. package/dist/data/TreeNode.js.map +1 -1
  208. package/dist/data/ai/ChatWindow.cjs +9 -140
  209. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  210. package/dist/data/ai/ChatWindow.d.ts +2 -40
  211. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  212. package/dist/data/ai/ChatWindow.js +6 -137
  213. package/dist/data/ai/ChatWindow.js.map +1 -1
  214. package/dist/data/ai/ChatWindow.models.cjs +11 -0
  215. package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
  216. package/dist/data/ai/ChatWindow.models.d.ts +3 -0
  217. package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
  218. package/dist/data/ai/ChatWindow.models.js +11 -0
  219. package/dist/data/ai/ChatWindow.models.js.map +1 -0
  220. package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
  221. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
  222. package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
  223. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
  224. package/dist/data/ai/ChatWindow.preferences.js +57 -0
  225. package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
  226. package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
  227. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
  228. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
  229. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
  230. package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
  231. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
  232. package/dist/data/ai/ChatWindow.types.d.ts +41 -0
  233. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
  234. package/dist/data/ai/ContextBadges.cjs +76 -46
  235. package/dist/data/ai/ContextBadges.cjs.map +1 -1
  236. package/dist/data/ai/ContextBadges.d.ts.map +1 -1
  237. package/dist/data/ai/ContextBadges.js +77 -47
  238. package/dist/data/ai/ContextBadges.js.map +1 -1
  239. package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
  240. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  241. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
  242. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  243. package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
  244. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  245. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
  246. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
  247. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
  248. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
  249. package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
  250. package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
  251. package/dist/data/ai/PromptPicker/index.d.ts +2 -1
  252. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
  253. package/dist/data/ai/PromptPicker/types.cjs +7 -0
  254. package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
  255. package/dist/data/ai/PromptPicker/types.d.ts +18 -2
  256. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
  257. package/dist/data/ai/PromptPicker/types.js +7 -0
  258. package/dist/data/ai/PromptPicker/types.js.map +1 -0
  259. package/dist/data/ai/PromptRunEditor/index.cjs +82 -14
  260. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  261. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -1
  262. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  263. package/dist/data/ai/PromptRunEditor/index.js +83 -15
  264. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  265. package/dist/data/ai/RuntimeBar.cjs +336 -0
  266. package/dist/data/ai/RuntimeBar.cjs.map +1 -0
  267. package/dist/data/ai/RuntimeBar.d.ts +27 -0
  268. package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
  269. package/dist/data/ai/RuntimeBar.js +336 -0
  270. package/dist/data/ai/RuntimeBar.js.map +1 -0
  271. package/dist/data/ai/SessionChatComposer.cjs +56 -0
  272. package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
  273. package/dist/data/ai/SessionChatComposer.d.ts +24 -0
  274. package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
  275. package/dist/data/ai/SessionChatComposer.js +56 -0
  276. package/dist/data/ai/SessionChatComposer.js.map +1 -0
  277. package/dist/data/ai/SessionInspector.cjs +222 -382
  278. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  279. package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
  280. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
  281. package/dist/data/ai/SessionInspector.collection.cjs +377 -0
  282. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
  283. package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
  284. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
  285. package/dist/data/ai/SessionInspector.collection.js +377 -0
  286. package/dist/data/ai/SessionInspector.collection.js.map +1 -0
  287. package/dist/data/ai/SessionInspector.d.ts +9 -4
  288. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  289. package/dist/data/ai/SessionInspector.files.cjs +162 -0
  290. package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
  291. package/dist/data/ai/SessionInspector.files.d.ts +5 -0
  292. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
  293. package/dist/data/ai/SessionInspector.files.js +162 -0
  294. package/dist/data/ai/SessionInspector.files.js.map +1 -0
  295. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
  296. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
  297. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
  298. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
  299. package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
  300. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
  301. package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
  302. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
  303. package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
  304. package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
  305. package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
  306. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
  307. package/dist/data/ai/SessionInspector.js +224 -384
  308. package/dist/data/ai/SessionInspector.js.map +1 -1
  309. package/dist/data/ai/SessionInspector.model.cjs +125 -0
  310. package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
  311. package/dist/data/ai/SessionInspector.model.d.ts +14 -0
  312. package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
  313. package/dist/data/ai/SessionInspector.model.js +125 -0
  314. package/dist/data/ai/SessionInspector.model.js.map +1 -0
  315. package/dist/data/ai/SessionInspector.panels.cjs +265 -0
  316. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
  317. package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
  318. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
  319. package/dist/data/ai/SessionInspector.panels.js +265 -0
  320. package/dist/data/ai/SessionInspector.panels.js.map +1 -0
  321. package/dist/data/ai/SessionInspector.plan.cjs +77 -0
  322. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
  323. package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
  324. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
  325. package/dist/data/ai/SessionInspector.plan.js +77 -0
  326. package/dist/data/ai/SessionInspector.plan.js.map +1 -0
  327. package/dist/data/ai/SessionInspector.summary.cjs +182 -0
  328. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
  329. package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
  330. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
  331. package/dist/data/ai/SessionInspector.summary.js +182 -0
  332. package/dist/data/ai/SessionInspector.summary.js.map +1 -0
  333. package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
  334. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
  335. package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
  336. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
  337. package/dist/data/ai/SessionInspector.transcript.js +94 -0
  338. package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
  339. package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
  340. package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
  341. package/dist/data/ai/SessionViewer.cjs +86 -121
  342. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  343. package/dist/data/ai/SessionViewer.d.ts +8 -1
  344. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  345. package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
  346. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  347. package/dist/data/ai/SessionViewer.header.cjs +110 -0
  348. package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
  349. package/dist/data/ai/SessionViewer.header.d.ts +11 -0
  350. package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
  351. package/dist/data/ai/SessionViewer.header.js +110 -0
  352. package/dist/data/ai/SessionViewer.header.js.map +1 -0
  353. package/dist/data/ai/SessionViewer.js +87 -122
  354. package/dist/data/ai/SessionViewer.js.map +1 -1
  355. package/dist/data/ai/SessionViewer.model.cjs +109 -39
  356. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  357. package/dist/data/ai/SessionViewer.model.d.ts +2 -0
  358. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  359. package/dist/data/ai/SessionViewer.model.js +109 -39
  360. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  361. package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
  362. package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
  363. package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
  364. package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
  365. package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
  366. package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
  367. package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
  368. package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
  369. package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
  370. package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
  371. package/dist/data/ai/SessionViewer.row-time.js +15 -0
  372. package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
  373. package/dist/data/ai/SessionViewer.rows.cjs +37 -424
  374. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  375. package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
  376. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  377. package/dist/data/ai/SessionViewer.rows.js +31 -418
  378. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  379. package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
  380. package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
  381. package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
  382. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
  383. package/dist/data/ai/SessionViewer.tool-details.js +65 -0
  384. package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
  385. package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
  386. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
  387. package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
  388. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
  389. package/dist/data/ai/SessionViewer.tool-row.js +404 -0
  390. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
  391. package/dist/data/ai/SessionViewer.unified.d.ts +10 -2
  392. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  393. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
  394. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  395. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  396. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
  397. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  398. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
  399. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  400. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  401. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
  402. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  403. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
  404. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  405. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
  406. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
  407. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  408. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
  409. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
  410. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
  411. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
  412. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
  413. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  414. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  415. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  416. package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
  417. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  418. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
  419. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  420. package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
  421. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  422. package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
  423. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  424. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
  425. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  426. package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
  427. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  428. package/dist/data/ai/ToolPreferences.cjs +2 -1
  429. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  430. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  431. package/dist/data/ai/ToolPreferences.js +2 -1
  432. package/dist/data/ai/ToolPreferences.js.map +1 -1
  433. package/dist/data/ai/agent-action-icons.cjs +7 -10
  434. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  435. package/dist/data/ai/agent-action-icons.d.ts +1 -2
  436. package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
  437. package/dist/data/ai/agent-action-icons.js +8 -11
  438. package/dist/data/ai/agent-action-icons.js.map +1 -1
  439. package/dist/data/ai/context.cjs.map +1 -1
  440. package/dist/data/ai/context.d.ts +4 -0
  441. package/dist/data/ai/context.d.ts.map +1 -1
  442. package/dist/data/ai/context.js.map +1 -1
  443. package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
  444. package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
  445. package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
  446. package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
  447. package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
  448. package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
  449. package/dist/data/ai/examples/sessions/claude.cjs +252 -0
  450. package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
  451. package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
  452. package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
  453. package/dist/data/ai/examples/sessions/claude.js +252 -0
  454. package/dist/data/ai/examples/sessions/claude.js.map +1 -0
  455. package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
  456. package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
  457. package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
  458. package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
  459. package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
  460. package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
  461. package/dist/data/ai/examples/sessions/codex.cjs +236 -0
  462. package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
  463. package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
  464. package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
  465. package/dist/data/ai/examples/sessions/codex.js +236 -0
  466. package/dist/data/ai/examples/sessions/codex.js.map +1 -0
  467. package/dist/data/ai/examples/sessions/index.cjs +21 -0
  468. package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
  469. package/dist/data/ai/examples/sessions/index.d.ts +10 -0
  470. package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
  471. package/dist/data/ai/examples/sessions/index.js +21 -0
  472. package/dist/data/ai/examples/sessions/index.js.map +1 -0
  473. package/dist/data/ai/index.d.ts +8 -3
  474. package/dist/data/ai/index.d.ts.map +1 -1
  475. package/dist/data/ai/runtime-mode.cjs +62 -0
  476. package/dist/data/ai/runtime-mode.cjs.map +1 -1
  477. package/dist/data/ai/runtime-mode.d.ts +27 -0
  478. package/dist/data/ai/runtime-mode.d.ts.map +1 -1
  479. package/dist/data/ai/runtime-mode.js +62 -0
  480. package/dist/data/ai/runtime-mode.js.map +1 -1
  481. package/dist/data/cells/EntityCell.cjs +64 -0
  482. package/dist/data/cells/EntityCell.cjs.map +1 -0
  483. package/dist/data/cells/EntityCell.d.ts +27 -0
  484. package/dist/data/cells/EntityCell.d.ts.map +1 -0
  485. package/dist/data/cells/EntityCell.js +64 -0
  486. package/dist/data/cells/EntityCell.js.map +1 -0
  487. package/dist/data/chat/Attachment.cjs +53 -13
  488. package/dist/data/chat/Attachment.cjs.map +1 -1
  489. package/dist/data/chat/Attachment.d.ts +9 -3
  490. package/dist/data/chat/Attachment.d.ts.map +1 -1
  491. package/dist/data/chat/Attachment.js +54 -14
  492. package/dist/data/chat/Attachment.js.map +1 -1
  493. package/dist/data/chat/Chat.cjs +25 -17
  494. package/dist/data/chat/Chat.cjs.map +1 -1
  495. package/dist/data/chat/Chat.d.ts +8 -4
  496. package/dist/data/chat/Chat.d.ts.map +1 -1
  497. package/dist/data/chat/Chat.js +22 -14
  498. package/dist/data/chat/Chat.js.map +1 -1
  499. package/dist/data/chat/ContextMeter.cjs +142 -39
  500. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  501. package/dist/data/chat/ContextMeter.d.ts +4 -1
  502. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  503. package/dist/data/chat/ContextMeter.js +143 -40
  504. package/dist/data/chat/ContextMeter.js.map +1 -1
  505. package/dist/data/chat/Conversation.cjs +55 -3
  506. package/dist/data/chat/Conversation.cjs.map +1 -1
  507. package/dist/data/chat/Conversation.d.ts +5 -1
  508. package/dist/data/chat/Conversation.d.ts.map +1 -1
  509. package/dist/data/chat/Conversation.js +55 -3
  510. package/dist/data/chat/Conversation.js.map +1 -1
  511. package/dist/data/chat/ModelSelector.cjs +8 -10
  512. package/dist/data/chat/ModelSelector.cjs.map +1 -1
  513. package/dist/data/chat/ModelSelector.d.ts.map +1 -1
  514. package/dist/data/chat/ModelSelector.js +9 -11
  515. package/dist/data/chat/ModelSelector.js.map +1 -1
  516. package/dist/data/chat/PromptInput.cjs +56 -5
  517. package/dist/data/chat/PromptInput.cjs.map +1 -1
  518. package/dist/data/chat/PromptInput.d.ts +10 -1
  519. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  520. package/dist/data/chat/PromptInput.js +57 -6
  521. package/dist/data/chat/PromptInput.js.map +1 -1
  522. package/dist/data/chat/attachment-upload.cjs +33 -0
  523. package/dist/data/chat/attachment-upload.cjs.map +1 -0
  524. package/dist/data/chat/attachment-upload.d.ts +21 -0
  525. package/dist/data/chat/attachment-upload.d.ts.map +1 -0
  526. package/dist/data/chat/attachment-upload.js +33 -0
  527. package/dist/data/chat/attachment-upload.js.map +1 -0
  528. package/dist/data/chat/effort-icons.cjs +36 -6
  529. package/dist/data/chat/effort-icons.cjs.map +1 -1
  530. package/dist/data/chat/effort-icons.d.ts +6 -3
  531. package/dist/data/chat/effort-icons.d.ts.map +1 -1
  532. package/dist/data/chat/effort-icons.js +37 -7
  533. package/dist/data/chat/effort-icons.js.map +1 -1
  534. package/dist/data/chat/index.d.ts +3 -1
  535. package/dist/data/chat/index.d.ts.map +1 -1
  536. package/dist/data/chat/models.cjs +8 -0
  537. package/dist/data/chat/models.cjs.map +1 -0
  538. package/dist/data/chat/models.d.ts +11 -0
  539. package/dist/data/chat/models.d.ts.map +1 -0
  540. package/dist/data/chat/models.js +8 -0
  541. package/dist/data/chat/models.js.map +1 -0
  542. package/dist/data/chat/provider-icons.cjs +49 -16
  543. package/dist/data/chat/provider-icons.cjs.map +1 -1
  544. package/dist/data/chat/provider-icons.d.ts +2 -0
  545. package/dist/data/chat/provider-icons.d.ts.map +1 -1
  546. package/dist/data/chat/provider-icons.js +50 -17
  547. package/dist/data/chat/provider-icons.js.map +1 -1
  548. package/dist/data/chat/types.cjs.map +1 -1
  549. package/dist/data/chat/types.d.ts +9 -0
  550. package/dist/data/chat/types.d.ts.map +1 -1
  551. package/dist/data/chat/types.js.map +1 -1
  552. package/dist/data/examples/markdown-preview-mock.cjs +45 -0
  553. package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
  554. package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
  555. package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
  556. package/dist/data/examples/markdown-preview-mock.js +45 -0
  557. package/dist/data/examples/markdown-preview-mock.js.map +1 -0
  558. package/dist/data/examples/markdown-syntax.cjs +36 -0
  559. package/dist/data/examples/markdown-syntax.cjs.map +1 -0
  560. package/dist/data/examples/markdown-syntax.d.ts +12 -0
  561. package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
  562. package/dist/data/examples/markdown-syntax.js +36 -0
  563. package/dist/data/examples/markdown-syntax.js.map +1 -0
  564. package/dist/data/examples/markdown-syntax.md.cjs +4 -0
  565. package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
  566. package/dist/data/examples/markdown-syntax.md.js +5 -0
  567. package/dist/data/examples/markdown-syntax.md.js.map +1 -0
  568. package/dist/data/task-process-details.cjs +48 -0
  569. package/dist/data/task-process-details.cjs.map +1 -0
  570. package/dist/data/task-process-details.d.ts +5 -0
  571. package/dist/data/task-process-details.d.ts.map +1 -0
  572. package/dist/data/task-process-details.js +48 -0
  573. package/dist/data/task-process-details.js.map +1 -0
  574. package/dist/data/version-info.cjs +2 -2
  575. package/dist/data/version-info.js +2 -2
  576. package/dist/data.cjs +30 -0
  577. package/dist/data.cjs.map +1 -1
  578. package/dist/data.d.ts +7 -1
  579. package/dist/data.d.ts.map +1 -1
  580. package/dist/data.js +30 -0
  581. package/dist/data.js.map +1 -1
  582. package/dist/hooks/use-hotkey.cjs +98 -0
  583. package/dist/hooks/use-hotkey.cjs.map +1 -0
  584. package/dist/hooks/use-hotkey.d.ts +42 -0
  585. package/dist/hooks/use-hotkey.d.ts.map +1 -0
  586. package/dist/hooks/use-hotkey.js +98 -0
  587. package/dist/hooks/use-hotkey.js.map +1 -0
  588. package/dist/hooks/use-task-run.cjs +23 -1
  589. package/dist/hooks/use-task-run.cjs.map +1 -1
  590. package/dist/hooks/use-task-run.d.ts.map +1 -1
  591. package/dist/hooks/use-task-run.js +23 -1
  592. package/dist/hooks/use-task-run.js.map +1 -1
  593. package/dist/hooks.cjs +4 -0
  594. package/dist/hooks.cjs.map +1 -1
  595. package/dist/hooks.d.ts +1 -0
  596. package/dist/hooks.d.ts.map +1 -1
  597. package/dist/hooks.js +4 -0
  598. package/dist/hooks.js.map +1 -1
  599. package/dist/icons/components/UiBank.cjs +15 -0
  600. package/dist/icons/components/UiBank.cjs.map +1 -0
  601. package/dist/icons/components/UiBank.d.ts +15 -0
  602. package/dist/icons/components/UiBank.d.ts.map +1 -0
  603. package/dist/icons/components/UiBank.js +15 -0
  604. package/dist/icons/components/UiBank.js.map +1 -0
  605. package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
  606. package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
  607. package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
  608. package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
  609. package/dist/icons/components/UiChartOfAccounts.js +15 -0
  610. package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
  611. package/dist/icons/components/UiCloudUpload.cjs +15 -0
  612. package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
  613. package/dist/icons/components/UiCloudUpload.d.ts +15 -0
  614. package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
  615. package/dist/icons/components/UiCloudUpload.js +15 -0
  616. package/dist/icons/components/UiCloudUpload.js.map +1 -0
  617. package/dist/icons/components/UiLedger.cjs +15 -0
  618. package/dist/icons/components/UiLedger.cjs.map +1 -0
  619. package/dist/icons/components/UiLedger.d.ts +15 -0
  620. package/dist/icons/components/UiLedger.d.ts.map +1 -0
  621. package/dist/icons/components/UiLedger.js +15 -0
  622. package/dist/icons/components/UiLedger.js.map +1 -0
  623. package/dist/icons/components/UiReceipt.cjs +15 -0
  624. package/dist/icons/components/UiReceipt.cjs.map +1 -0
  625. package/dist/icons/components/UiReceipt.d.ts +15 -0
  626. package/dist/icons/components/UiReceipt.d.ts.map +1 -0
  627. package/dist/icons/components/UiReceipt.js +15 -0
  628. package/dist/icons/components/UiReceipt.js.map +1 -0
  629. package/dist/icons/index.d.ts +10 -0
  630. package/dist/icons/index.d.ts.map +1 -1
  631. package/dist/icons.cjs +15 -0
  632. package/dist/icons.cjs.map +1 -1
  633. package/dist/icons.js +15 -0
  634. package/dist/icons.js.map +1 -1
  635. package/dist/index.cjs +47 -0
  636. package/dist/index.cjs.map +1 -1
  637. package/dist/index.js +49 -2
  638. package/dist/index.js.map +1 -1
  639. package/dist/layout/AppShell.cjs +270 -238
  640. package/dist/layout/AppShell.cjs.map +1 -1
  641. package/dist/layout/AppShell.d.ts +9 -0
  642. package/dist/layout/AppShell.d.ts.map +1 -1
  643. package/dist/layout/AppShell.debug.cjs +53 -0
  644. package/dist/layout/AppShell.debug.cjs.map +1 -0
  645. package/dist/layout/AppShell.debug.d.ts +6 -0
  646. package/dist/layout/AppShell.debug.d.ts.map +1 -0
  647. package/dist/layout/AppShell.debug.js +53 -0
  648. package/dist/layout/AppShell.debug.js.map +1 -0
  649. package/dist/layout/AppShell.js +269 -237
  650. package/dist/layout/AppShell.js.map +1 -1
  651. package/dist/layout/AppShell.nav.cjs +90 -0
  652. package/dist/layout/AppShell.nav.cjs.map +1 -0
  653. package/dist/layout/AppShell.nav.d.ts +7 -0
  654. package/dist/layout/AppShell.nav.d.ts.map +1 -0
  655. package/dist/layout/AppShell.nav.js +90 -0
  656. package/dist/layout/AppShell.nav.js.map +1 -0
  657. package/dist/layout/AppSidebar.cjs +35 -5
  658. package/dist/layout/AppSidebar.cjs.map +1 -1
  659. package/dist/layout/AppSidebar.d.ts +4 -1
  660. package/dist/layout/AppSidebar.d.ts.map +1 -1
  661. package/dist/layout/AppSidebar.js +35 -5
  662. package/dist/layout/AppSidebar.js.map +1 -1
  663. package/dist/layout/Panel.cjs +25 -41
  664. package/dist/layout/Panel.cjs.map +1 -1
  665. package/dist/layout/Panel.d.ts +2 -1
  666. package/dist/layout/Panel.d.ts.map +1 -1
  667. package/dist/layout/Panel.js +26 -42
  668. package/dist/layout/Panel.js.map +1 -1
  669. package/dist/layout/PanelFrame.cjs +56 -0
  670. package/dist/layout/PanelFrame.cjs.map +1 -0
  671. package/dist/layout/PanelFrame.d.ts +15 -0
  672. package/dist/layout/PanelFrame.d.ts.map +1 -0
  673. package/dist/layout/PanelFrame.js +56 -0
  674. package/dist/layout/PanelFrame.js.map +1 -0
  675. package/dist/layout/Section.cjs +51 -41
  676. package/dist/layout/Section.cjs.map +1 -1
  677. package/dist/layout/Section.d.ts +3 -2
  678. package/dist/layout/Section.d.ts.map +1 -1
  679. package/dist/layout/Section.js +51 -41
  680. package/dist/layout/Section.js.map +1 -1
  681. package/dist/layout/content-width.cjs +8 -0
  682. package/dist/layout/content-width.cjs.map +1 -0
  683. package/dist/layout/content-width.d.ts +3 -0
  684. package/dist/layout/content-width.d.ts.map +1 -0
  685. package/dist/layout/content-width.js +8 -0
  686. package/dist/layout/content-width.js.map +1 -0
  687. package/dist/overlay/CommandPalette.cjs +207 -0
  688. package/dist/overlay/CommandPalette.cjs.map +1 -0
  689. package/dist/overlay/CommandPalette.d.ts +71 -0
  690. package/dist/overlay/CommandPalette.d.ts.map +1 -0
  691. package/dist/overlay/CommandPalette.js +207 -0
  692. package/dist/overlay/CommandPalette.js.map +1 -0
  693. package/dist/overlay/CommandPalette.model.cjs +70 -0
  694. package/dist/overlay/CommandPalette.model.cjs.map +1 -0
  695. package/dist/overlay/CommandPalette.model.d.ts +71 -0
  696. package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
  697. package/dist/overlay/CommandPalette.model.js +70 -0
  698. package/dist/overlay/CommandPalette.model.js.map +1 -0
  699. package/dist/overlay/CommandPaletteList.cjs +88 -0
  700. package/dist/overlay/CommandPaletteList.cjs.map +1 -0
  701. package/dist/overlay/CommandPaletteList.d.ts +23 -0
  702. package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
  703. package/dist/overlay/CommandPaletteList.js +88 -0
  704. package/dist/overlay/CommandPaletteList.js.map +1 -0
  705. package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
  706. package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
  707. package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
  708. package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
  709. package/dist/overlay/CommandPaletteTrigger.js +36 -0
  710. package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
  711. package/dist/overlay/Modal.cjs +12 -5
  712. package/dist/overlay/Modal.cjs.map +1 -1
  713. package/dist/overlay/Modal.d.ts.map +1 -1
  714. package/dist/overlay/Modal.js +12 -5
  715. package/dist/overlay/Modal.js.map +1 -1
  716. package/dist/overlay/modalStack.js +1 -1
  717. package/dist/overlay/zIndex.cjs +2 -0
  718. package/dist/overlay/zIndex.cjs.map +1 -1
  719. package/dist/overlay/zIndex.js +2 -0
  720. package/dist/overlay/zIndex.js.map +1 -1
  721. package/dist/rpc/EntityExplorerApp.cjs +6 -0
  722. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  723. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  724. package/dist/rpc/EntityExplorerApp.js +6 -0
  725. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  726. package/dist/rpc/OperationCatalog.cjs +49 -52
  727. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  728. package/dist/rpc/OperationCatalog.d.ts +17 -2
  729. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  730. package/dist/rpc/OperationCatalog.js +49 -52
  731. package/dist/rpc/OperationCatalog.js.map +1 -1
  732. package/dist/rpc/clickyMetadata.cjs +2 -1
  733. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  734. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  735. package/dist/rpc/clickyMetadata.js +2 -1
  736. package/dist/rpc/clickyMetadata.js.map +1 -1
  737. package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
  738. package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
  739. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
  740. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
  741. package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
  742. package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
  743. package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
  744. package/dist/rpc/types.cjs.map +1 -1
  745. package/dist/rpc/types.d.ts +1 -0
  746. package/dist/rpc/types.d.ts.map +1 -1
  747. package/dist/rpc/types.js.map +1 -1
  748. package/dist/styles.css +1 -1
  749. package/dist/tailwind-preset.cjs +11 -0
  750. package/dist/tailwind-preset.cjs.map +1 -1
  751. package/dist/tailwind-preset.d.ts.map +1 -1
  752. package/dist/tailwind-preset.js +11 -0
  753. package/dist/tailwind-preset.js.map +1 -1
  754. package/package.json +2 -2
@@ -0,0 +1,377 @@
1
+ import { costTotal } from "./session-cost.js";
2
+ function isSessionCollectionInput(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value) && "kind" in value && value.kind === "session-collection";
4
+ }
5
+ function validateSessionCollection(collection) {
6
+ const current = collection.sessions.find(
7
+ (item) => item.id === collection.currentSessionId
8
+ );
9
+ if (!current) {
10
+ throw new Error(
11
+ `Session collection ${collection.id} does not contain current session ${collection.currentSessionId}`
12
+ );
13
+ }
14
+ if (!current.session) {
15
+ throw new Error(
16
+ `Current session ${collection.currentSessionId} must be loaded`
17
+ );
18
+ }
19
+ }
20
+ function collectionSession(item, loaded) {
21
+ return item.session ?? loaded.get(item.id);
22
+ }
23
+ function buildSessionHierarchy(collection, loaded) {
24
+ const nodes = /* @__PURE__ */ new Map();
25
+ for (const item of collection.sessions) {
26
+ nodes.set(item.id, buildSessionNode(item, collectionSession(item, loaded)));
27
+ }
28
+ const roots = [];
29
+ for (const item of collection.sessions) {
30
+ const node = nodes.get(item.id);
31
+ const parent = item.parentId ? nodes.get(item.parentId) : void 0;
32
+ if (parent) parent.children.unshift(node);
33
+ else roots.push(node);
34
+ }
35
+ return roots;
36
+ }
37
+ function buildSessionNode(item, session) {
38
+ var _a, _b, _c;
39
+ const summary = item.summary;
40
+ const rootAgent = (session == null ? void 0 : session.root) ?? ((_a = session == null ? void 0 : session.agents) == null ? void 0 : _a.find((agent) => agent.isRoot));
41
+ const agents = session ? agentForest(item.id, session, rootAgent == null ? void 0 : rootAgent.id) : [];
42
+ const rootTurns = session ? ((_b = session.turns) == null ? void 0 : _b.filter(
43
+ (turn) => !turnAgentId(session, turn.id) || turnAgentId(session, turn.id) === (rootAgent == null ? void 0 : rootAgent.id)
44
+ ).map((turn) => turnNode(item.id, turn, session))) ?? [] : [];
45
+ return {
46
+ key: sessionKey(item.id),
47
+ kind: "session",
48
+ itemId: item.id,
49
+ label: item.label || (session == null ? void 0 : session.title) || (session == null ? void 0 : session.model) || item.id,
50
+ provider: (summary == null ? void 0 : summary.provider) ?? (session == null ? void 0 : session.provider),
51
+ model: (summary == null ? void 0 : summary.model) ?? (session == null ? void 0 : session.model),
52
+ effort: (summary == null ? void 0 : summary.effort) ?? (session == null ? void 0 : session.reasoningEffort),
53
+ mode: item.mode ?? (summary == null ? void 0 : summary.mode) ?? (session == null ? void 0 : session.backend),
54
+ status: item.status ?? (summary == null ? void 0 : summary.status) ?? ((_c = session == null ? void 0 : session.live) == null ? void 0 : _c.status),
55
+ pid: summary == null ? void 0 : summary.pid,
56
+ durationMs: summary == null ? void 0 : summary.durationMs,
57
+ updatedAt: summary == null ? void 0 : summary.updatedAt,
58
+ cost: (summary == null ? void 0 : summary.cost) ?? costTotal(session == null ? void 0 : session.cost),
59
+ usage: session == null ? void 0 : session.usage,
60
+ costDetail: session == null ? void 0 : session.cost,
61
+ item,
62
+ ...rootAgent ? { agent: rootAgent } : {},
63
+ children: [...agents, ...rootTurns]
64
+ };
65
+ }
66
+ function agentForest(itemId, session, rootAgentId) {
67
+ const agents = flattenAgents(session);
68
+ const nodes = /* @__PURE__ */ new Map();
69
+ for (const agent of agents) {
70
+ if (!agent.id || agent.id === rootAgentId || agent.isRoot) continue;
71
+ nodes.set(agent.id, agentNode(itemId, session, agent));
72
+ }
73
+ const roots = [];
74
+ for (const agent of agents) {
75
+ if (!agent.id || !nodes.has(agent.id)) continue;
76
+ const node = nodes.get(agent.id);
77
+ const parent = agent.parentId ? nodes.get(agent.parentId) : void 0;
78
+ if (parent) parent.children.unshift(node);
79
+ else roots.push(node);
80
+ }
81
+ return roots;
82
+ }
83
+ function flattenAgents(session) {
84
+ var _a;
85
+ const agents = /* @__PURE__ */ new Map();
86
+ const visit = (agent) => {
87
+ var _a2;
88
+ if (agent.id && !agents.has(agent.id)) agents.set(agent.id, agent);
89
+ (_a2 = agent.children) == null ? void 0 : _a2.forEach(visit);
90
+ };
91
+ if (session.root) visit(session.root);
92
+ (_a = session.agents) == null ? void 0 : _a.forEach(visit);
93
+ return [...agents.values()];
94
+ }
95
+ function agentNode(itemId, session, agent) {
96
+ var _a;
97
+ const turns = ((_a = session.turns) == null ? void 0 : _a.filter((turn) => turnAgentId(session, turn.id) === agent.id).map((turn) => turnNode(itemId, turn, session))) ?? [];
98
+ return {
99
+ key: `${itemId}:agent:${agent.id}`,
100
+ kind: "agent",
101
+ itemId,
102
+ label: agent.desc || agent.type || `Agent ${agent.id}`,
103
+ provider: session.provider,
104
+ model: session.model,
105
+ effort: session.reasoningEffort,
106
+ mode: session.backend,
107
+ status: void 0,
108
+ pid: void 0,
109
+ durationMs: void 0,
110
+ updatedAt: void 0,
111
+ cost: costTotal(agent.cost),
112
+ usage: agent.usage,
113
+ costDetail: agent.cost,
114
+ agent,
115
+ children: turns
116
+ };
117
+ }
118
+ function turnNode(itemId, turn, session) {
119
+ return {
120
+ key: `${itemId}:turn:${turn.id}`,
121
+ kind: "turn",
122
+ itemId,
123
+ label: `Turn ${turn.index}`,
124
+ provider: session.provider,
125
+ model: turn.model || session.model,
126
+ effort: turn.reasoningEffort || session.reasoningEffort,
127
+ mode: turn.backend || session.backend,
128
+ status: turn.status,
129
+ pid: void 0,
130
+ durationMs: void 0,
131
+ updatedAt: void 0,
132
+ cost: costTotal(turn.cost),
133
+ usage: turn.usage,
134
+ costDetail: turn.cost,
135
+ turn,
136
+ children: []
137
+ };
138
+ }
139
+ function turnAgentId(session, turnId) {
140
+ var _a, _b, _c;
141
+ return (_c = (_b = (_a = session.messages) == null ? void 0 : _a.find((message) => message.turnId === turnId)) == null ? void 0 : _b.provenance) == null ? void 0 : _c.agentId;
142
+ }
143
+ function sessionKey(itemId) {
144
+ return `${itemId}:session`;
145
+ }
146
+ function branchKeys(node) {
147
+ return [node.key, ...node.children.flatMap(branchKeys)];
148
+ }
149
+ function initialCheckedKeys(roots, sessionIds) {
150
+ const checked = /* @__PURE__ */ new Set();
151
+ for (const sessionId of sessionIds) {
152
+ const node = findNode(roots, sessionKey(sessionId));
153
+ if (node) branchKeys(node).forEach((key) => checked.add(key));
154
+ }
155
+ return checked;
156
+ }
157
+ function toggleHierarchyBranch(roots, checked, key, include) {
158
+ const next = new Set(checked);
159
+ const node = findNode(roots, key);
160
+ if (!node) return next;
161
+ for (const branchKey of branchKeys(node)) {
162
+ if (include) next.add(branchKey);
163
+ else next.delete(branchKey);
164
+ }
165
+ normalizeCheckedRoots(roots, next);
166
+ return next;
167
+ }
168
+ function normalizeCheckedRoots(roots, checked) {
169
+ const visit = (node) => {
170
+ if (node.children.length === 0) return checked.has(node.key);
171
+ const complete = node.children.every(visit);
172
+ if (complete) checked.add(node.key);
173
+ else checked.delete(node.key);
174
+ return complete;
175
+ };
176
+ roots.forEach(visit);
177
+ }
178
+ function hierarchyCheckState(node, checked) {
179
+ if (checked.has(node.key)) return "checked";
180
+ if (node.children.some((child) => hasCheckedNode(child, checked)))
181
+ return "indeterminate";
182
+ return "unchecked";
183
+ }
184
+ function hasCheckedNode(node, checked) {
185
+ return checked.has(node.key) || node.children.some((child) => hasCheckedNode(child, checked));
186
+ }
187
+ function findNode(roots, key) {
188
+ for (const root of roots) {
189
+ if (root.key === key) return root;
190
+ const child = findNode(root.children, key);
191
+ if (child) return child;
192
+ }
193
+ }
194
+ function selectedSessionCount(roots, checked) {
195
+ let count = 0;
196
+ const visit = (node) => {
197
+ if (node.kind === "session" && hasCheckedNode(node, checked)) count++;
198
+ node.children.forEach(visit);
199
+ };
200
+ roots.forEach(visit);
201
+ return count;
202
+ }
203
+ function filterSessionCollection(collection, loaded, roots, checked) {
204
+ const current = collection.sessions.find(
205
+ (item) => item.id === collection.currentSessionId
206
+ );
207
+ const base = collectionSession(current, loaded);
208
+ const selected = collection.sessions.flatMap((item) => {
209
+ const session = collectionSession(item, loaded);
210
+ const node = findNode(roots, sessionKey(item.id));
211
+ if (!session || !node || !hasCheckedNode(node, checked)) return [];
212
+ return [
213
+ { itemId: item.id, session: filterOneSession(session, node, checked) }
214
+ ];
215
+ });
216
+ const sessions = selected.map(
217
+ ({ itemId, session }) => selected.length > 1 ? namespaceSession(session, itemId) : session
218
+ );
219
+ const messages = sessions.flatMap((session) => session.messages ?? []);
220
+ messages.sort(
221
+ (a, b) => {
222
+ var _a, _b;
223
+ return (((_a = a.provenance) == null ? void 0 : _a.timestamp) || "").localeCompare(((_b = b.provenance) == null ? void 0 : _b.timestamp) || "");
224
+ }
225
+ );
226
+ const usage = sumUsage(sessions.map((session) => session.usage));
227
+ const cost = sumCosts(sessions.map((session) => session.cost));
228
+ return {
229
+ ...base,
230
+ id: collection.id,
231
+ messages,
232
+ turns: sessions.flatMap((session) => session.turns ?? []),
233
+ events: sessions.flatMap((session) => session.events ?? []),
234
+ ...usage ? { usage } : {},
235
+ ...cost ? { cost } : {},
236
+ toolCosts: sessions.flatMap((session) => session.toolCosts ?? [])
237
+ };
238
+ }
239
+ function namespaceSession(session, itemId) {
240
+ var _a, _b, _c, _d;
241
+ const namespace = (id) => `${itemId}:${id}`;
242
+ const messageIds = new Set(
243
+ (_a = session.messages) == null ? void 0 : _a.flatMap((message) => message.id ? [message.id] : [])
244
+ );
245
+ const messages = (_b = session.messages) == null ? void 0 : _b.map((message, index) => ({
246
+ ...message,
247
+ id: namespace(message.id || `message-${index + 1}`),
248
+ ...message.turnId ? { turnId: namespace(message.turnId) } : {}
249
+ }));
250
+ const turns = (_c = session.turns) == null ? void 0 : _c.map((turn) => ({
251
+ ...turn,
252
+ id: namespace(turn.id),
253
+ ...turn.messageIds ? { messageIds: turn.messageIds.map(namespace) } : {}
254
+ }));
255
+ const events = (_d = session.events) == null ? void 0 : _d.map((event) => ({
256
+ ...event,
257
+ ...event.turnId ? { turnId: namespace(event.turnId) } : {},
258
+ ...event.uuid && messageIds.has(event.uuid) ? { uuid: namespace(event.uuid) } : {}
259
+ }));
260
+ return {
261
+ ...session,
262
+ ...messages ? { messages } : {},
263
+ ...turns ? { turns } : {},
264
+ ...events ? { events } : {}
265
+ };
266
+ }
267
+ function filterOneSession(session, node, checked) {
268
+ var _a, _b, _c;
269
+ if (checked.has(node.key)) return session;
270
+ const turnIds = /* @__PURE__ */ new Set();
271
+ const agentIds = /* @__PURE__ */ new Set();
272
+ const costNodes = [];
273
+ const visit = (child) => {
274
+ var _a2;
275
+ if (child.kind === "session") return;
276
+ if (checked.has(child.key)) {
277
+ costNodes.push(child);
278
+ if (child.kind === "turn" && child.turn) turnIds.add(child.turn.id);
279
+ if (child.kind === "agent" && ((_a2 = child.agent) == null ? void 0 : _a2.id))
280
+ collectAgentIds(child, agentIds);
281
+ return;
282
+ }
283
+ child.children.forEach(visit);
284
+ };
285
+ node.children.forEach(visit);
286
+ const messages = (_a = session.messages) == null ? void 0 : _a.filter(
287
+ (message) => {
288
+ var _a2;
289
+ return message.turnId && turnIds.has(message.turnId) || ((_a2 = message.provenance) == null ? void 0 : _a2.agentId) && agentIds.has(message.provenance.agentId);
290
+ }
291
+ );
292
+ const includedTurns = new Set(
293
+ messages == null ? void 0 : messages.flatMap((message) => message.turnId ? [message.turnId] : [])
294
+ );
295
+ turnIds.forEach((id) => includedTurns.add(id));
296
+ const events = (_b = session.events) == null ? void 0 : _b.filter(
297
+ (event) => event.turnId && includedTurns.has(event.turnId) || event.uuid && (messages == null ? void 0 : messages.some((message) => message.id === event.uuid))
298
+ );
299
+ const usage = sumUsage(costNodes.map((entry) => entry.usage));
300
+ const cost = sumCosts(costNodes.map((entry) => entry.costDetail));
301
+ return {
302
+ ...session,
303
+ messages: messages ?? [],
304
+ turns: ((_c = session.turns) == null ? void 0 : _c.filter((turn) => includedTurns.has(turn.id))) ?? [],
305
+ ...events ? { events } : {},
306
+ ...usage ? { usage } : {},
307
+ ...cost ? { cost } : {},
308
+ toolCosts: []
309
+ };
310
+ }
311
+ function collectAgentIds(node, ids) {
312
+ var _a;
313
+ if ((_a = node.agent) == null ? void 0 : _a.id) ids.add(node.agent.id);
314
+ node.children.forEach((child) => collectAgentIds(child, ids));
315
+ }
316
+ function sumUsage(values) {
317
+ const present = values.filter(
318
+ (value) => Boolean(value)
319
+ );
320
+ if (!present.length) return void 0;
321
+ return sumFields(present);
322
+ }
323
+ function sumCosts(values) {
324
+ var _a;
325
+ const present = values.filter(
326
+ (value) => Boolean(value)
327
+ );
328
+ if (!present.length) return void 0;
329
+ const costFields = [
330
+ "inputCost",
331
+ "outputCost",
332
+ "reasoningCost",
333
+ "cacheReadCost",
334
+ "cacheWriteCost"
335
+ ];
336
+ const model = present.length === 1 ? (_a = present[0]) == null ? void 0 : _a.model : void 0;
337
+ return {
338
+ ...sumFields(present),
339
+ ...Object.fromEntries(
340
+ costFields.map((field) => [
341
+ field,
342
+ present.reduce((sum, value) => sum + (value[field] ?? 0), 0)
343
+ ])
344
+ ),
345
+ ...model ? { model } : {}
346
+ };
347
+ }
348
+ function sumFields(values) {
349
+ const fields = [
350
+ "inputTokens",
351
+ "outputTokens",
352
+ "reasoningTokens",
353
+ "cacheReadTokens",
354
+ "cacheWriteTokens",
355
+ "totalTokens"
356
+ ];
357
+ return Object.fromEntries(
358
+ fields.map((field) => [
359
+ field,
360
+ values.reduce((sum, value) => sum + (value[field] ?? 0), 0)
361
+ ])
362
+ );
363
+ }
364
+ export {
365
+ branchKeys,
366
+ buildSessionHierarchy,
367
+ collectionSession,
368
+ filterSessionCollection,
369
+ hierarchyCheckState,
370
+ initialCheckedKeys,
371
+ isSessionCollectionInput,
372
+ selectedSessionCount,
373
+ sessionKey,
374
+ toggleHierarchyBranch,
375
+ validateSessionCollection
376
+ };
377
+ //# sourceMappingURL=SessionInspector.collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.collection.js","sources":["../../../src/data/ai/SessionInspector.collection.ts"],"sourcesContent":["import { costTotal } from \"./session-cost\";\nimport type {\n SessionAgent,\n SessionCost,\n SessionTurn,\n SessionUsage,\n UnifiedSessionInput,\n} from \"./SessionViewer.unified\";\nimport type {\n SessionCollectionInput,\n SessionCollectionItem,\n SessionHierarchyNode,\n SessionInspectorInput,\n} from \"./SessionInspector.collection-types\";\n\nexport type {\n SessionCollectionInput,\n SessionCollectionItem,\n SessionCollectionSummary,\n SessionHierarchyNode,\n SessionHierarchyNodeKind,\n SessionInspectorInput,\n} from \"./SessionInspector.collection-types\";\nexport function isSessionCollectionInput(\n value: SessionInspectorInput\n): value is SessionCollectionInput {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"kind\" in value &&\n value.kind === \"session-collection\"\n );\n}\nexport function validateSessionCollection(collection: SessionCollectionInput) {\n const current = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n );\n if (!current) {\n throw new Error(\n `Session collection ${collection.id} does not contain current session ${collection.currentSessionId}`\n );\n }\n if (!current.session) {\n throw new Error(\n `Current session ${collection.currentSessionId} must be loaded`\n );\n }\n}\nexport function collectionSession(\n item: SessionCollectionItem,\n loaded: ReadonlyMap<string, UnifiedSessionInput>\n) {\n return item.session ?? loaded.get(item.id);\n}\nexport function buildSessionHierarchy(\n collection: SessionCollectionInput,\n loaded: ReadonlyMap<string, UnifiedSessionInput>\n): SessionHierarchyNode[] {\n const nodes = new Map<string, SessionHierarchyNode>();\n for (const item of collection.sessions) {\n nodes.set(item.id, buildSessionNode(item, collectionSession(item, loaded)));\n }\n\n const roots: SessionHierarchyNode[] = [];\n for (const item of collection.sessions) {\n const node = nodes.get(item.id)!;\n const parent = item.parentId ? nodes.get(item.parentId) : undefined;\n if (parent) parent.children.unshift(node);\n else roots.push(node);\n }\n return roots;\n}\nfunction buildSessionNode(\n item: SessionCollectionItem,\n session?: UnifiedSessionInput\n): SessionHierarchyNode {\n const summary = item.summary;\n const rootAgent =\n session?.root ?? session?.agents?.find((agent) => agent.isRoot);\n const agents = session ? agentForest(item.id, session, rootAgent?.id) : [];\n const rootTurns = session\n ? session.turns\n ?.filter(\n (turn) =>\n !turnAgentId(session, turn.id) ||\n turnAgentId(session, turn.id) === rootAgent?.id\n )\n .map((turn) => turnNode(item.id, turn, session)) ?? []\n : [];\n return {\n key: sessionKey(item.id),\n kind: \"session\",\n itemId: item.id,\n label: item.label || session?.title || session?.model || item.id,\n provider: summary?.provider ?? session?.provider,\n model: summary?.model ?? session?.model,\n effort: summary?.effort ?? session?.reasoningEffort,\n mode: item.mode ?? summary?.mode ?? session?.backend,\n status: item.status ?? summary?.status ?? session?.live?.status,\n pid: summary?.pid,\n durationMs: summary?.durationMs,\n updatedAt: summary?.updatedAt,\n cost: summary?.cost ?? costTotal(session?.cost),\n usage: session?.usage,\n costDetail: session?.cost,\n item,\n ...(rootAgent ? { agent: rootAgent } : {}),\n children: [...agents, ...rootTurns],\n };\n}\n\nfunction agentForest(\n itemId: string,\n session: UnifiedSessionInput,\n rootAgentId?: string\n) {\n const agents = flattenAgents(session);\n const nodes = new Map<string, SessionHierarchyNode>();\n for (const agent of agents) {\n if (!agent.id || agent.id === rootAgentId || agent.isRoot) continue;\n nodes.set(agent.id, agentNode(itemId, session, agent));\n }\n const roots: SessionHierarchyNode[] = [];\n for (const agent of agents) {\n if (!agent.id || !nodes.has(agent.id)) continue;\n const node = nodes.get(agent.id)!;\n const parent = agent.parentId ? nodes.get(agent.parentId) : undefined;\n if (parent) parent.children.unshift(node);\n else roots.push(node);\n }\n return roots;\n}\n\nfunction flattenAgents(session: UnifiedSessionInput) {\n const agents = new Map<string, SessionAgent>();\n const visit = (agent: SessionAgent) => {\n if (agent.id && !agents.has(agent.id)) agents.set(agent.id, agent);\n agent.children?.forEach(visit);\n };\n if (session.root) visit(session.root);\n session.agents?.forEach(visit);\n return [...agents.values()];\n}\n\nfunction agentNode(\n itemId: string,\n session: UnifiedSessionInput,\n agent: SessionAgent\n): SessionHierarchyNode {\n const turns =\n session.turns\n ?.filter((turn) => turnAgentId(session, turn.id) === agent.id)\n .map((turn) => turnNode(itemId, turn, session)) ?? [];\n return {\n key: `${itemId}:agent:${agent.id}`,\n kind: \"agent\",\n itemId,\n label: agent.desc || agent.type || `Agent ${agent.id}`,\n provider: session.provider,\n model: session.model,\n effort: session.reasoningEffort,\n mode: session.backend,\n status: undefined,\n pid: undefined,\n durationMs: undefined,\n updatedAt: undefined,\n cost: costTotal(agent.cost),\n usage: agent.usage,\n costDetail: agent.cost,\n agent,\n children: turns,\n };\n}\n\nfunction turnNode(\n itemId: string,\n turn: SessionTurn,\n session: UnifiedSessionInput\n): SessionHierarchyNode {\n return {\n key: `${itemId}:turn:${turn.id}`,\n kind: \"turn\",\n itemId,\n label: `Turn ${turn.index}`,\n provider: session.provider,\n model: turn.model || session.model,\n effort: turn.reasoningEffort || session.reasoningEffort,\n mode: turn.backend || session.backend,\n status: turn.status,\n pid: undefined,\n durationMs: undefined,\n updatedAt: undefined,\n cost: costTotal(turn.cost),\n usage: turn.usage,\n costDetail: turn.cost,\n turn,\n children: [],\n };\n}\n\nfunction turnAgentId(session: UnifiedSessionInput, turnId: string) {\n return session.messages?.find((message) => message.turnId === turnId)\n ?.provenance?.agentId;\n}\n\nexport function sessionKey(itemId: string) {\n return `${itemId}:session`;\n}\n\nexport function branchKeys(node: SessionHierarchyNode): string[] {\n return [node.key, ...node.children.flatMap(branchKeys)];\n}\n\nexport function initialCheckedKeys(\n roots: SessionHierarchyNode[],\n sessionIds: readonly string[]\n) {\n const checked = new Set<string>();\n for (const sessionId of sessionIds) {\n const node = findNode(roots, sessionKey(sessionId));\n if (node) branchKeys(node).forEach((key) => checked.add(key));\n }\n return checked;\n}\n\nexport function toggleHierarchyBranch(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>,\n key: string,\n include: boolean\n) {\n const next = new Set(checked);\n const node = findNode(roots, key);\n if (!node) return next;\n for (const branchKey of branchKeys(node)) {\n if (include) next.add(branchKey);\n else next.delete(branchKey);\n }\n normalizeCheckedRoots(roots, next);\n return next;\n}\n\nfunction normalizeCheckedRoots(\n roots: SessionHierarchyNode[],\n checked: Set<string>\n) {\n const visit = (node: SessionHierarchyNode): boolean => {\n if (node.children.length === 0) return checked.has(node.key);\n const complete = node.children.every(visit);\n if (complete) checked.add(node.key);\n else checked.delete(node.key);\n return complete;\n };\n roots.forEach(visit);\n}\n\nexport function hierarchyCheckState(\n node: SessionHierarchyNode,\n checked: ReadonlySet<string>\n) {\n if (checked.has(node.key)) return \"checked\" as const;\n if (node.children.some((child) => hasCheckedNode(child, checked)))\n return \"indeterminate\" as const;\n return \"unchecked\" as const;\n}\n\nfunction hasCheckedNode(\n node: SessionHierarchyNode,\n checked: ReadonlySet<string>\n): boolean {\n return (\n checked.has(node.key) ||\n node.children.some((child) => hasCheckedNode(child, checked))\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\nexport function selectedSessionCount(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n) {\n let count = 0;\n const visit = (node: SessionHierarchyNode) => {\n if (node.kind === \"session\" && hasCheckedNode(node, checked)) count++;\n node.children.forEach(visit);\n };\n roots.forEach(visit);\n return count;\n}\n\nexport function filterSessionCollection(\n collection: SessionCollectionInput,\n loaded: ReadonlyMap<string, UnifiedSessionInput>,\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n): UnifiedSessionInput {\n const current = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n )!;\n const base = collectionSession(current, loaded)!;\n const selected = collection.sessions.flatMap((item) => {\n const session = collectionSession(item, loaded);\n const node = findNode(roots, sessionKey(item.id));\n if (!session || !node || !hasCheckedNode(node, checked)) return [];\n return [\n { itemId: item.id, session: filterOneSession(session, node, checked) },\n ];\n });\n const sessions = selected.map(({ itemId, session }) =>\n selected.length > 1 ? namespaceSession(session, itemId) : session\n );\n const messages = sessions.flatMap((session) => session.messages ?? []);\n messages.sort((a, b) =>\n (a.provenance?.timestamp || \"\").localeCompare(b.provenance?.timestamp || \"\")\n );\n const usage = sumUsage(sessions.map((session) => session.usage));\n const cost = sumCosts(sessions.map((session) => session.cost));\n return {\n ...base,\n id: collection.id,\n messages,\n turns: sessions.flatMap((session) => session.turns ?? []),\n events: sessions.flatMap((session) => session.events ?? []),\n ...(usage ? { usage } : {}),\n ...(cost ? { cost } : {}),\n toolCosts: sessions.flatMap((session) => session.toolCosts ?? []),\n };\n}\n\nfunction namespaceSession(\n session: UnifiedSessionInput,\n itemId: string\n): UnifiedSessionInput {\n const namespace = (id: string) => `${itemId}:${id}`;\n const messageIds = new Set(\n session.messages?.flatMap((message) => (message.id ? [message.id] : []))\n );\n const messages = session.messages?.map((message, index) => ({\n ...message,\n id: namespace(message.id || `message-${index + 1}`),\n ...(message.turnId ? { turnId: namespace(message.turnId) } : {}),\n }));\n const turns = session.turns?.map((turn) => ({\n ...turn,\n id: namespace(turn.id),\n ...(turn.messageIds ? { messageIds: turn.messageIds.map(namespace) } : {}),\n }));\n const events = session.events?.map((event) => ({\n ...event,\n ...(event.turnId ? { turnId: namespace(event.turnId) } : {}),\n ...(event.uuid && messageIds.has(event.uuid)\n ? { uuid: namespace(event.uuid) }\n : {}),\n }));\n return {\n ...session,\n ...(messages ? { messages } : {}),\n ...(turns ? { turns } : {}),\n ...(events ? { events } : {}),\n };\n}\n\nfunction filterOneSession(\n session: UnifiedSessionInput,\n node: SessionHierarchyNode,\n checked: ReadonlySet<string>\n): UnifiedSessionInput {\n if (checked.has(node.key)) return session;\n const turnIds = new Set<string>();\n const agentIds = new Set<string>();\n const costNodes: SessionHierarchyNode[] = [];\n const visit = (child: SessionHierarchyNode) => {\n if (child.kind === \"session\") return;\n if (checked.has(child.key)) {\n costNodes.push(child);\n if (child.kind === \"turn\" && child.turn) turnIds.add(child.turn.id);\n if (child.kind === \"agent\" && child.agent?.id)\n collectAgentIds(child, agentIds);\n return;\n }\n child.children.forEach(visit);\n };\n node.children.forEach(visit);\n const messages = session.messages?.filter(\n (message) =>\n (message.turnId && turnIds.has(message.turnId)) ||\n (message.provenance?.agentId && agentIds.has(message.provenance.agentId))\n );\n const includedTurns = new Set(\n messages?.flatMap((message) => (message.turnId ? [message.turnId] : []))\n );\n turnIds.forEach((id) => includedTurns.add(id));\n const events = session.events?.filter(\n (event) =>\n (event.turnId && includedTurns.has(event.turnId)) ||\n (event.uuid && messages?.some((message) => message.id === event.uuid))\n );\n const usage = sumUsage(costNodes.map((entry) => entry.usage));\n const cost = sumCosts(costNodes.map((entry) => entry.costDetail));\n return {\n ...session,\n messages: messages ?? [],\n turns: session.turns?.filter((turn) => includedTurns.has(turn.id)) ?? [],\n ...(events ? { events } : {}),\n ...(usage ? { usage } : {}),\n ...(cost ? { cost } : {}),\n toolCosts: [],\n };\n}\n\nfunction collectAgentIds(node: SessionHierarchyNode, ids: Set<string>) {\n if (node.agent?.id) ids.add(node.agent.id);\n node.children.forEach((child) => collectAgentIds(child, ids));\n}\n\nfunction sumUsage(\n values: Array<SessionUsage | undefined>\n): SessionUsage | undefined {\n const present = values.filter((value): value is SessionUsage =>\n Boolean(value)\n );\n if (!present.length) return undefined;\n return sumFields(present);\n}\n\nfunction sumCosts(\n values: Array<SessionCost | undefined>\n): SessionCost | undefined {\n const present = values.filter((value): value is SessionCost =>\n Boolean(value)\n );\n if (!present.length) return undefined;\n const costFields = [\n \"inputCost\",\n \"outputCost\",\n \"reasoningCost\",\n \"cacheReadCost\",\n \"cacheWriteCost\",\n ] as const;\n const model = present.length === 1 ? present[0]?.model : undefined;\n return {\n ...sumFields(present),\n ...Object.fromEntries(\n costFields.map((field) => [\n field,\n present.reduce((sum, value) => sum + (value[field] ?? 0), 0),\n ])\n ),\n ...(model ? { model } : {}),\n };\n}\n\nfunction sumFields(values: SessionUsage[]): SessionUsage {\n const fields: Array<keyof SessionUsage> = [\n \"inputTokens\",\n \"outputTokens\",\n \"reasoningTokens\",\n \"cacheReadTokens\",\n \"cacheWriteTokens\",\n \"totalTokens\",\n ];\n return Object.fromEntries(\n fields.map((field) => [\n field,\n values.reduce((sum, value) => sum + (value[field] ?? 0), 0),\n ])\n );\n}\n"],"names":["_a"],"mappings":"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"}
@@ -1,11 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ import { SessionCollectionItem, SessionInspectorInput } from './SessionInspector.collection';
1
3
  import { SessionViewerProps } from './SessionViewer';
2
- import { SessionInput } from './SessionViewer.model';
3
- export type SessionInspectorTab = "transcript" | "turns" | "agents" | "files" | "plan" | "approvals" | "costs" | "metadata" | "raw";
4
+ export type SessionInspectorTab = "transcript" | "files" | "plan" | "approvals" | "costs" | "metadata" | "raw";
4
5
  export interface SessionInspectorProps {
5
- session: SessionInput;
6
+ session: SessionInspectorInput;
6
7
  className?: string;
7
8
  defaultTab?: SessionInspectorTab;
8
9
  transcriptProps?: Omit<SessionViewerProps, "session">;
10
+ renderSessionActions?: (item: SessionCollectionItem) => ReactNode;
11
+ /** Receives edits made in the Plan tab. The inspector also keeps the draft visible locally. */
12
+ onPlanChange?: (content: string) => void;
13
+ composer?: ReactNode;
9
14
  }
10
- export declare function SessionInspector({ session, className, defaultTab, transcriptProps, }: SessionInspectorProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function SessionInspector({ session, className, defaultTab, transcriptProps, renderSessionActions, onPlanChange, composer, }: SessionInspectorProps): import("react/jsx-runtime").JSX.Element;
11
16
  //# sourceMappingURL=SessionInspector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionInspector.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAe1D,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;CACvD;AAcD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,eAAe,GAChB,EAAE,qBAAqB,2CAqCvB"}
1
+ {"version":3,"file":"SessionInspector.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmB1D,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,OAAO,GACP,MAAM,GACN,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,SAAS,CAAC;IAClE,+FAA+F;IAC/F,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,QAAQ,GACT,EAAE,qBAAqB,2CA0CvB"}
@@ -0,0 +1,162 @@
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
+ const Icon = require("../Icon.cjs");
6
+ const Tree = require("../Tree.cjs");
7
+ const UiFolder = require("../../icons/components/UiFolder.cjs");
8
+ const UiMarkdown = require("../../icons/components/UiMarkdown.cjs");
9
+ const UiJson = require("../../icons/components/UiJson.cjs");
10
+ const UiFileSpreadsheet = require("../../icons/components/UiFileSpreadsheet.cjs");
11
+ const UiImage = require("../../icons/components/UiImage.cjs");
12
+ const UiFileText = require("../../icons/components/UiFileText.cjs");
13
+ const UiFileCode = require("../../icons/components/UiFileCode.cjs");
14
+ const UiFile = require("../../icons/components/UiFile.cjs");
15
+ function SessionFilesPanel({
16
+ files
17
+ }) {
18
+ const roots = buildFileTree(files);
19
+ if (!roots.length) {
20
+ return /* @__PURE__ */ jsxRuntime.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." });
21
+ }
22
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-background", children: [
23
+ /* @__PURE__ */ jsxRuntime.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: [
24
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
25
+ roots.reduce((count, node) => count + countFiles(node), 0),
26
+ " files"
27
+ ] }),
28
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex gap-density-3", children: [
29
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "R read" }),
30
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "W written" })
31
+ ] })
32
+ ] }),
33
+ /* @__PURE__ */ jsxRuntime.jsx(
34
+ Tree.Tree,
35
+ {
36
+ roots,
37
+ ariaLabel: "Session files",
38
+ getChildren: (node) => [...node.children.values()].sort(compareNodes),
39
+ getKey: (node) => node.path,
40
+ getAriaLabel: (node) => node.path,
41
+ getSearchText: (node) => node.path,
42
+ defaultOpen: () => true,
43
+ renderRow: ({ node, hasChildren }) => /* @__PURE__ */ jsxRuntime.jsx(FileTreeRow, { node, directory: hasChildren }),
44
+ rowClass: (node) => utils.cn(
45
+ "group min-h-6 border-l-2 border-transparent py-0 pr-density-3 text-xs hover:border-primary/40 hover:bg-muted/40",
46
+ !node.children.size && node.access.has("written") && "border-l-amber-500/60"
47
+ ),
48
+ className: "pb-1"
49
+ }
50
+ )
51
+ ] });
52
+ }
53
+ function FileTreeRow({
54
+ node,
55
+ directory
56
+ }) {
57
+ const FileIcon = directory ? UiFolder.UiFolder : fileTypeIcon(node.name);
58
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
59
+ /* @__PURE__ */ jsxRuntime.jsx(
60
+ Icon.Icon,
61
+ {
62
+ icon: FileIcon,
63
+ className: utils.cn(
64
+ "size-4 shrink-0",
65
+ directory ? "text-sky-600 dark:text-sky-400" : "text-muted-foreground"
66
+ )
67
+ }
68
+ ),
69
+ /* @__PURE__ */ jsxRuntime.jsx(
70
+ "span",
71
+ {
72
+ className: utils.cn(
73
+ "min-w-0 flex-1 truncate",
74
+ directory ? "font-medium" : "font-mono"
75
+ ),
76
+ children: node.name
77
+ }
78
+ ),
79
+ !directory ? /* @__PURE__ */ jsxRuntime.jsx(AccessBadge, { access: node.access }) : null
80
+ ] });
81
+ }
82
+ function AccessBadge({ access }) {
83
+ const label = access.has("read") && access.has("written") ? "RW" : access.has("written") ? "W" : "R";
84
+ return /* @__PURE__ */ jsxRuntime.jsx(
85
+ "span",
86
+ {
87
+ title: label === "RW" ? "Read and written" : label === "W" ? "Written" : "Read",
88
+ className: utils.cn(
89
+ "w-6 shrink-0 text-right font-mono text-[11px] font-semibold",
90
+ access.has("written") ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground"
91
+ ),
92
+ children: label
93
+ }
94
+ );
95
+ }
96
+ function buildFileTree(files) {
97
+ const roots = /* @__PURE__ */ new Map();
98
+ addPaths(roots, (files == null ? void 0 : files.read) ?? [], "read");
99
+ addPaths(roots, (files == null ? void 0 : files.written) ?? [], "written");
100
+ return [...roots.values()].sort(compareNodes);
101
+ }
102
+ function addPaths(roots, paths, access) {
103
+ for (const path of paths) {
104
+ const parts = path.split("/").filter(Boolean);
105
+ let nodes = roots;
106
+ let currentPath = "";
107
+ parts.forEach((part, index) => {
108
+ currentPath = currentPath ? `${currentPath}/${part}` : part;
109
+ const node = nodes.get(part) ?? {
110
+ name: part,
111
+ path: currentPath,
112
+ children: /* @__PURE__ */ new Map(),
113
+ access: /* @__PURE__ */ new Set()
114
+ };
115
+ nodes.set(part, node);
116
+ if (index === parts.length - 1) node.access.add(access);
117
+ nodes = node.children;
118
+ });
119
+ }
120
+ }
121
+ function compareNodes(left, right) {
122
+ const leftDirectory = left.children.size > 0;
123
+ const rightDirectory = right.children.size > 0;
124
+ if (leftDirectory !== rightDirectory) return leftDirectory ? -1 : 1;
125
+ return left.name.localeCompare(right.name);
126
+ }
127
+ function countFiles(node) {
128
+ return node.children.size ? [...node.children.values()].reduce(
129
+ (count, child) => count + countFiles(child),
130
+ 0
131
+ ) : 1;
132
+ }
133
+ function fileTypeIcon(path) {
134
+ const extension = path.toLowerCase().split(".").at(-1) ?? "";
135
+ if (["md", "mdx"].includes(extension)) return UiMarkdown.UiMarkdown;
136
+ if (["json", "jsonl"].includes(extension)) return UiJson.UiJson;
137
+ if (["csv", "xls", "xlsx"].includes(extension)) return UiFileSpreadsheet.UiFileSpreadsheet;
138
+ if (["png", "jpg", "jpeg", "gif", "svg", "webp"].includes(extension))
139
+ return UiImage.UiImage;
140
+ if (["txt", "log", "rst"].includes(extension)) return UiFileText.UiFileText;
141
+ if ([
142
+ "ts",
143
+ "tsx",
144
+ "js",
145
+ "jsx",
146
+ "go",
147
+ "py",
148
+ "rs",
149
+ "java",
150
+ "css",
151
+ "scss",
152
+ "html",
153
+ "yaml",
154
+ "yml",
155
+ "toml",
156
+ "sh"
157
+ ].includes(extension))
158
+ return UiFileCode.UiFileCode;
159
+ return UiFile.UiFile;
160
+ }
161
+ exports.SessionFilesPanel = SessionFilesPanel;
162
+ //# sourceMappingURL=SessionInspector.files.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.files.cjs","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":["jsx","jsxs","Tree","cn","UiFolder","Fragment","Icon","UiMarkdown","UiJson","UiFileSpreadsheet","UiImage","UiFileText","UiFileCode","UiFile"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { SessionChangedFiles } from './SessionViewer.unified';
2
+ export declare function SessionFilesPanel({ files, }: {
3
+ files: SessionChangedFiles | undefined;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=SessionInspector.files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInspector.files.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.files.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAWnE,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,GACN,EAAE;IACD,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACxC,2CA2CA"}