@flanksource/clicky-ui 0.3.44 → 0.3.45

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 (471) hide show
  1. package/README.md +2 -0
  2. package/dist/ai.cjs +4 -2
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -1
  5. package/dist/components/MdxEditorField.cjs +40 -22
  6. package/dist/components/MdxEditorField.cjs.map +1 -1
  7. package/dist/components/MdxEditorField.d.ts.map +1 -1
  8. package/dist/components/MdxEditorField.js +41 -23
  9. package/dist/components/MdxEditorField.js.map +1 -1
  10. package/dist/components/json-schema-form-item-summary.cjs +6 -1
  11. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  12. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  13. package/dist/components/json-schema-form-item-summary.js +6 -1
  14. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  15. package/dist/data/CodeBlock.cjs +3 -2
  16. package/dist/data/CodeBlock.cjs.map +1 -1
  17. package/dist/data/CodeBlock.d.ts +3 -1
  18. package/dist/data/CodeBlock.d.ts.map +1 -1
  19. package/dist/data/CodeBlock.js +3 -2
  20. package/dist/data/CodeBlock.js.map +1 -1
  21. package/dist/data/GraphDiagram.cjs +18 -6
  22. package/dist/data/GraphDiagram.cjs.map +1 -1
  23. package/dist/data/GraphDiagram.d.ts +9 -1
  24. package/dist/data/GraphDiagram.d.ts.map +1 -1
  25. package/dist/data/GraphDiagram.js +18 -6
  26. package/dist/data/GraphDiagram.js.map +1 -1
  27. package/dist/data/GraphDiagramNodes.cjs +38 -29
  28. package/dist/data/GraphDiagramNodes.cjs.map +1 -1
  29. package/dist/data/GraphDiagramNodes.d.ts +8 -2
  30. package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
  31. package/dist/data/GraphDiagramNodes.js +38 -29
  32. package/dist/data/GraphDiagramNodes.js.map +1 -1
  33. package/dist/data/JsonView.cjs +118 -49
  34. package/dist/data/JsonView.cjs.map +1 -1
  35. package/dist/data/JsonView.d.ts +13 -10
  36. package/dist/data/JsonView.d.ts.map +1 -1
  37. package/dist/data/JsonView.js +118 -49
  38. package/dist/data/JsonView.js.map +1 -1
  39. package/dist/data/MarkdownEditor.cjs +2 -2
  40. package/dist/data/MarkdownEditor.cjs.map +1 -1
  41. package/dist/data/MarkdownEditor.js +2 -2
  42. package/dist/data/MarkdownEditor.js.map +1 -1
  43. package/dist/data/ai/AdvancedChatConfig.cjs +90 -249
  44. package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -1
  45. package/dist/data/ai/AdvancedChatConfig.d.ts +2 -5
  46. package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -1
  47. package/dist/data/ai/AdvancedChatConfig.js +91 -250
  48. package/dist/data/ai/AdvancedChatConfig.js.map +1 -1
  49. package/dist/data/ai/ChatButton.cjs +2 -0
  50. package/dist/data/ai/ChatButton.cjs.map +1 -1
  51. package/dist/data/ai/ChatButton.d.ts +1 -1
  52. package/dist/data/ai/ChatButton.d.ts.map +1 -1
  53. package/dist/data/ai/ChatButton.js +2 -0
  54. package/dist/data/ai/ChatButton.js.map +1 -1
  55. package/dist/data/ai/ChatFab.cjs +5 -1
  56. package/dist/data/ai/ChatFab.cjs.map +1 -1
  57. package/dist/data/ai/ChatFab.d.ts +5 -1
  58. package/dist/data/ai/ChatFab.d.ts.map +1 -1
  59. package/dist/data/ai/ChatFab.js +5 -1
  60. package/dist/data/ai/ChatFab.js.map +1 -1
  61. package/dist/data/ai/ChatWindow.cjs +2 -8
  62. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  63. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  64. package/dist/data/ai/ChatWindow.js +2 -8
  65. package/dist/data/ai/ChatWindow.js.map +1 -1
  66. package/dist/data/ai/ChatWindow.runtime.cjs +0 -5
  67. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
  68. package/dist/data/ai/ChatWindow.runtime.d.ts +0 -2
  69. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
  70. package/dist/data/ai/ChatWindow.runtime.js +0 -5
  71. package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
  72. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +2 -2
  73. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  74. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  75. package/dist/data/ai/PromptRunEditor/runtimeActions.js +2 -2
  76. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  77. package/dist/data/ai/SessionInspector.approvals.cjs +3 -6
  78. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  79. package/dist/data/ai/SessionInspector.approvals.js +3 -6
  80. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  81. package/dist/data/ai/SessionViewer.cjs +13 -4
  82. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  83. package/dist/data/ai/SessionViewer.d.ts +5 -1
  84. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  85. package/dist/data/ai/SessionViewer.header.cjs +1 -1
  86. package/dist/data/ai/SessionViewer.header.cjs.map +1 -1
  87. package/dist/data/ai/SessionViewer.header.js +1 -1
  88. package/dist/data/ai/SessionViewer.header.js.map +1 -1
  89. package/dist/data/ai/SessionViewer.js +13 -4
  90. package/dist/data/ai/SessionViewer.js.map +1 -1
  91. package/dist/data/ai/SessionViewer.model.cjs +2 -0
  92. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  93. package/dist/data/ai/SessionViewer.model.d.ts +1 -0
  94. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  95. package/dist/data/ai/SessionViewer.model.js +2 -0
  96. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  97. package/dist/data/ai/SessionViewer.rows.cjs +41 -27
  98. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  99. package/dist/data/ai/SessionViewer.rows.d.ts +4 -2
  100. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  101. package/dist/data/ai/SessionViewer.rows.js +41 -27
  102. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  103. package/dist/data/ai/SessionViewer.tokens.cjs +35 -0
  104. package/dist/data/ai/SessionViewer.tokens.cjs.map +1 -0
  105. package/dist/data/ai/SessionViewer.tokens.d.ts +5 -0
  106. package/dist/data/ai/SessionViewer.tokens.d.ts.map +1 -0
  107. package/dist/data/ai/SessionViewer.tokens.js +35 -0
  108. package/dist/data/ai/SessionViewer.tokens.js.map +1 -0
  109. package/dist/data/ai/SessionViewer.tool-cost.cjs +128 -0
  110. package/dist/data/ai/SessionViewer.tool-cost.cjs.map +1 -0
  111. package/dist/data/ai/SessionViewer.tool-cost.d.ts +6 -0
  112. package/dist/data/ai/SessionViewer.tool-cost.d.ts.map +1 -0
  113. package/dist/data/ai/SessionViewer.tool-cost.js +128 -0
  114. package/dist/data/ai/SessionViewer.tool-cost.js.map +1 -0
  115. package/dist/data/ai/SessionViewer.tool-details.cjs +3 -1
  116. package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -1
  117. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -1
  118. package/dist/data/ai/SessionViewer.tool-details.js +3 -1
  119. package/dist/data/ai/SessionViewer.tool-details.js.map +1 -1
  120. package/dist/data/ai/SessionViewer.tool-row.cjs +55 -35
  121. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  122. package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -1
  123. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  124. package/dist/data/ai/SessionViewer.tool-row.js +55 -35
  125. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  126. package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
  127. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  128. package/dist/data/ai/SessionViewerMenu.cjs +18 -1
  129. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  130. package/dist/data/ai/SessionViewerMenu.d.ts +6 -1
  131. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  132. package/dist/data/ai/SessionViewerMenu.js +18 -1
  133. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  134. package/dist/data/ai/ToolPreferences.cjs +149 -143
  135. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  136. package/dist/data/ai/ToolPreferences.d.ts +20 -6
  137. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  138. package/dist/data/ai/ToolPreferences.js +151 -146
  139. package/dist/data/ai/ToolPreferences.js.map +1 -1
  140. package/dist/data/ai/ToolPreferences.model.cjs +14 -10
  141. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
  142. package/dist/data/ai/ToolPreferences.model.d.ts +1 -0
  143. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
  144. package/dist/data/ai/ToolPreferences.model.js +15 -11
  145. package/dist/data/ai/ToolPreferences.model.js.map +1 -1
  146. package/dist/data/ai/ToolPreferencesList.cjs +1 -0
  147. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
  148. package/dist/data/ai/ToolPreferencesList.d.ts +4 -1
  149. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
  150. package/dist/data/ai/ToolPreferencesList.js +2 -1
  151. package/dist/data/ai/ToolPreferencesList.js.map +1 -1
  152. package/dist/data/ai/ToolSchemaBrowser.cjs +52 -53
  153. package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
  154. package/dist/data/ai/ToolSchemaBrowser.d.ts +6 -3
  155. package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
  156. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +9 -13
  157. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -1
  158. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +5 -2
  159. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -1
  160. package/dist/data/ai/ToolSchemaBrowser.directory-header.js +9 -13
  161. package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -1
  162. package/dist/data/ai/ToolSchemaBrowser.js +53 -54
  163. package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
  164. package/dist/data/ai/ToolSchemaBrowser.model.cjs +19 -27
  165. package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -1
  166. package/dist/data/ai/ToolSchemaBrowser.model.d.ts +9 -6
  167. package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -1
  168. package/dist/data/ai/ToolSchemaBrowser.model.js +20 -28
  169. package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -1
  170. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +12 -213
  171. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -1
  172. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +1 -3
  173. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -1
  174. package/dist/data/ai/ToolSchemaBrowser.sidebar.js +13 -214
  175. package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -1
  176. package/dist/data/ai/ToolSchemaBrowser.strategies.cjs +54 -0
  177. package/dist/data/ai/ToolSchemaBrowser.strategies.cjs.map +1 -0
  178. package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts +9 -0
  179. package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts.map +1 -0
  180. package/dist/data/ai/ToolSchemaBrowser.strategies.js +54 -0
  181. package/dist/data/ai/ToolSchemaBrowser.strategies.js.map +1 -0
  182. package/dist/data/ai/ToolSchemaBrowser.tree.cjs +179 -0
  183. package/dist/data/ai/ToolSchemaBrowser.tree.cjs.map +1 -0
  184. package/dist/data/ai/ToolSchemaBrowser.tree.d.ts +20 -0
  185. package/dist/data/ai/ToolSchemaBrowser.tree.d.ts.map +1 -0
  186. package/dist/data/ai/ToolSchemaBrowser.tree.js +179 -0
  187. package/dist/data/ai/ToolSchemaBrowser.tree.js.map +1 -0
  188. package/dist/data/ai/index.d.ts +2 -2
  189. package/dist/data/ai/index.d.ts.map +1 -1
  190. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs +8 -28
  191. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs.map +1 -1
  192. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts.map +1 -1
  193. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js +9 -29
  194. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js.map +1 -1
  195. package/dist/data/ai/session-token-sizing.d.ts +32 -0
  196. package/dist/data/ai/session-token-sizing.d.ts.map +1 -0
  197. package/dist/data/ai/use-session-token-sizing.cjs +73 -0
  198. package/dist/data/ai/use-session-token-sizing.cjs.map +1 -0
  199. package/dist/data/ai/use-session-token-sizing.d.ts +21 -0
  200. package/dist/data/ai/use-session-token-sizing.d.ts.map +1 -0
  201. package/dist/data/ai/use-session-token-sizing.js +73 -0
  202. package/dist/data/ai/use-session-token-sizing.js.map +1 -0
  203. package/dist/data/call-graph/CallGraph.cjs +250 -0
  204. package/dist/data/call-graph/CallGraph.cjs.map +1 -0
  205. package/dist/data/call-graph/CallGraph.d.ts +69 -0
  206. package/dist/data/call-graph/CallGraph.d.ts.map +1 -0
  207. package/dist/data/call-graph/CallGraph.js +250 -0
  208. package/dist/data/call-graph/CallGraph.js.map +1 -0
  209. package/dist/data/call-graph/CallGraphGlyphs.cjs +39 -0
  210. package/dist/data/call-graph/CallGraphGlyphs.cjs.map +1 -0
  211. package/dist/data/call-graph/CallGraphGlyphs.d.ts +19 -0
  212. package/dist/data/call-graph/CallGraphGlyphs.d.ts.map +1 -0
  213. package/dist/data/call-graph/CallGraphGlyphs.js +39 -0
  214. package/dist/data/call-graph/CallGraphGlyphs.js.map +1 -0
  215. package/dist/data/call-graph/CallGraphMembers.cjs +50 -0
  216. package/dist/data/call-graph/CallGraphMembers.cjs.map +1 -0
  217. package/dist/data/call-graph/CallGraphMembers.d.ts +22 -0
  218. package/dist/data/call-graph/CallGraphMembers.d.ts.map +1 -0
  219. package/dist/data/call-graph/CallGraphMembers.js +50 -0
  220. package/dist/data/call-graph/CallGraphMembers.js.map +1 -0
  221. package/dist/data/call-graph/CallGraphParts.cjs +204 -0
  222. package/dist/data/call-graph/CallGraphParts.cjs.map +1 -0
  223. package/dist/data/call-graph/CallGraphParts.d.ts +44 -0
  224. package/dist/data/call-graph/CallGraphParts.d.ts.map +1 -0
  225. package/dist/data/call-graph/CallGraphParts.js +204 -0
  226. package/dist/data/call-graph/CallGraphParts.js.map +1 -0
  227. package/dist/data/call-graph/CallGraphToolbar.cjs +186 -0
  228. package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -0
  229. package/dist/data/call-graph/CallGraphToolbar.d.ts +45 -0
  230. package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -0
  231. package/dist/data/call-graph/CallGraphToolbar.js +186 -0
  232. package/dist/data/call-graph/CallGraphToolbar.js.map +1 -0
  233. package/dist/data/call-graph/call-graph-exclude.cjs +75 -0
  234. package/dist/data/call-graph/call-graph-exclude.cjs.map +1 -0
  235. package/dist/data/call-graph/call-graph-exclude.d.ts +31 -0
  236. package/dist/data/call-graph/call-graph-exclude.d.ts.map +1 -0
  237. package/dist/data/call-graph/call-graph-exclude.js +75 -0
  238. package/dist/data/call-graph/call-graph-exclude.js.map +1 -0
  239. package/dist/data/call-graph/call-graph-labels.cjs +96 -0
  240. package/dist/data/call-graph/call-graph-labels.cjs.map +1 -0
  241. package/dist/data/call-graph/call-graph-labels.d.ts +53 -0
  242. package/dist/data/call-graph/call-graph-labels.d.ts.map +1 -0
  243. package/dist/data/call-graph/call-graph-labels.js +96 -0
  244. package/dist/data/call-graph/call-graph-labels.js.map +1 -0
  245. package/dist/data/call-graph/call-graph-model.cjs +161 -0
  246. package/dist/data/call-graph/call-graph-model.cjs.map +1 -0
  247. package/dist/data/call-graph/call-graph-model.d.ts +102 -0
  248. package/dist/data/call-graph/call-graph-model.d.ts.map +1 -0
  249. package/dist/data/call-graph/call-graph-model.js +161 -0
  250. package/dist/data/call-graph/call-graph-model.js.map +1 -0
  251. package/dist/data/call-graph/call-graph-vocabulary.cjs +177 -0
  252. package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -0
  253. package/dist/data/call-graph/call-graph-vocabulary.d.ts +72 -0
  254. package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -0
  255. package/dist/data/call-graph/call-graph-vocabulary.js +177 -0
  256. package/dist/data/call-graph/call-graph-vocabulary.js.map +1 -0
  257. package/dist/data/call-graph/call-graph.fixtures.d.ts +63 -0
  258. package/dist/data/call-graph/call-graph.fixtures.d.ts.map +1 -0
  259. package/dist/data/call-graph/index.d.ts +7 -0
  260. package/dist/data/call-graph/index.d.ts.map +1 -0
  261. package/dist/data/call-graph/types.cjs +5 -0
  262. package/dist/data/call-graph/types.cjs.map +1 -0
  263. package/dist/data/call-graph/types.d.ts +135 -0
  264. package/dist/data/call-graph/types.d.ts.map +1 -0
  265. package/dist/data/call-graph/types.js +5 -0
  266. package/dist/data/call-graph/types.js.map +1 -0
  267. package/dist/data/call-graph/use-call-graph.cjs +93 -0
  268. package/dist/data/call-graph/use-call-graph.cjs.map +1 -0
  269. package/dist/data/call-graph/use-call-graph.d.ts +24 -0
  270. package/dist/data/call-graph/use-call-graph.d.ts.map +1 -0
  271. package/dist/data/call-graph/use-call-graph.js +93 -0
  272. package/dist/data/call-graph/use-call-graph.js.map +1 -0
  273. package/dist/data/chat/Chat.cjs +39 -15
  274. package/dist/data/chat/Chat.cjs.map +1 -1
  275. package/dist/data/chat/Chat.d.ts.map +1 -1
  276. package/dist/data/chat/Chat.fixtures.cjs +2 -2
  277. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  278. package/dist/data/chat/Chat.fixtures.js +2 -2
  279. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  280. package/dist/data/chat/Chat.js +40 -16
  281. package/dist/data/chat/Chat.js.map +1 -1
  282. package/dist/data/chat/ChatRuntimeToolbar.cjs +3 -6
  283. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
  284. package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
  285. package/dist/data/chat/ChatRuntimeToolbar.js +3 -6
  286. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
  287. package/dist/data/chat/ContextMeter.bar.cjs +5 -8
  288. package/dist/data/chat/ContextMeter.bar.cjs.map +1 -1
  289. package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
  290. package/dist/data/chat/ContextMeter.bar.d.ts.map +1 -1
  291. package/dist/data/chat/ContextMeter.bar.js +5 -8
  292. package/dist/data/chat/ContextMeter.bar.js.map +1 -1
  293. package/dist/data/chat/ContextMeter.cjs +18 -19
  294. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  295. package/dist/data/chat/ContextMeter.d.ts +1 -1
  296. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  297. package/dist/data/chat/ContextMeter.js +18 -19
  298. package/dist/data/chat/ContextMeter.js.map +1 -1
  299. package/dist/data/chat/Conversation.cjs +2 -1
  300. package/dist/data/chat/Conversation.cjs.map +1 -1
  301. package/dist/data/chat/Conversation.d.ts +4 -1
  302. package/dist/data/chat/Conversation.d.ts.map +1 -1
  303. package/dist/data/chat/Conversation.js +2 -1
  304. package/dist/data/chat/Conversation.js.map +1 -1
  305. package/dist/data/chat/Message.cjs +39 -12
  306. package/dist/data/chat/Message.cjs.map +1 -1
  307. package/dist/data/chat/Message.d.ts +1 -1
  308. package/dist/data/chat/Message.d.ts.map +1 -1
  309. package/dist/data/chat/Message.js +40 -13
  310. package/dist/data/chat/Message.js.map +1 -1
  311. package/dist/data/chat/ToolCall.cjs +60 -5
  312. package/dist/data/chat/ToolCall.cjs.map +1 -1
  313. package/dist/data/chat/ToolCall.d.ts +7 -2
  314. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  315. package/dist/data/chat/ToolCall.js +60 -5
  316. package/dist/data/chat/ToolCall.js.map +1 -1
  317. package/dist/data/chat/approval.cjs.map +1 -1
  318. package/dist/data/chat/approval.d.ts +2 -2
  319. package/dist/data/chat/approval.d.ts.map +1 -1
  320. package/dist/data/chat/approval.js.map +1 -1
  321. package/dist/data/chat/tool-policy.cjs +59 -2
  322. package/dist/data/chat/tool-policy.cjs.map +1 -1
  323. package/dist/data/chat/tool-policy.d.ts +9 -0
  324. package/dist/data/chat/tool-policy.d.ts.map +1 -1
  325. package/dist/data/chat/tool-policy.js +59 -2
  326. package/dist/data/chat/tool-policy.js.map +1 -1
  327. package/dist/data/chat/types.cjs +6 -0
  328. package/dist/data/chat/types.cjs.map +1 -1
  329. package/dist/data/chat/types.d.ts +13 -4
  330. package/dist/data/chat/types.d.ts.map +1 -1
  331. package/dist/data/chat/types.js +7 -1
  332. package/dist/data/chat/types.js.map +1 -1
  333. package/dist/data/chat/usage-snapshot.cjs +11 -6
  334. package/dist/data/chat/usage-snapshot.cjs.map +1 -1
  335. package/dist/data/chat/usage-snapshot.d.ts +0 -1
  336. package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
  337. package/dist/data/chat/usage-snapshot.js +11 -6
  338. package/dist/data/chat/usage-snapshot.js.map +1 -1
  339. package/dist/data/diagnostics/StackFrameRow.cjs +3 -3
  340. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  341. package/dist/data/diagnostics/StackFrameRow.js +3 -3
  342. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  343. package/dist/data/graph-columns-layout.cjs +26 -10
  344. package/dist/data/graph-columns-layout.cjs.map +1 -1
  345. package/dist/data/graph-columns-layout.d.ts +8 -0
  346. package/dist/data/graph-columns-layout.d.ts.map +1 -1
  347. package/dist/data/graph-columns-layout.js +26 -10
  348. package/dist/data/graph-columns-layout.js.map +1 -1
  349. package/dist/data/graph-diagram-model.cjs.map +1 -1
  350. package/dist/data/graph-diagram-model.d.ts +5 -0
  351. package/dist/data/graph-diagram-model.d.ts.map +1 -1
  352. package/dist/data/graph-diagram-model.js.map +1 -1
  353. package/dist/data/graph-edge-routing.cjs +9 -3
  354. package/dist/data/graph-edge-routing.cjs.map +1 -1
  355. package/dist/data/graph-edge-routing.d.ts +2 -0
  356. package/dist/data/graph-edge-routing.d.ts.map +1 -1
  357. package/dist/data/graph-edge-routing.js +9 -3
  358. package/dist/data/graph-edge-routing.js.map +1 -1
  359. package/dist/data/json-view/JsonSource.cjs +84 -0
  360. package/dist/data/json-view/JsonSource.cjs.map +1 -0
  361. package/dist/data/json-view/JsonSource.d.ts +7 -0
  362. package/dist/data/json-view/JsonSource.d.ts.map +1 -0
  363. package/dist/data/json-view/JsonSource.js +84 -0
  364. package/dist/data/json-view/JsonSource.js.map +1 -0
  365. package/dist/data/json-view/parse-prefix.cjs +132 -0
  366. package/dist/data/json-view/parse-prefix.cjs.map +1 -0
  367. package/dist/data/json-view/parse-prefix.d.ts +11 -0
  368. package/dist/data/json-view/parse-prefix.d.ts.map +1 -0
  369. package/dist/data/json-view/parse-prefix.js +132 -0
  370. package/dist/data/json-view/parse-prefix.js.map +1 -0
  371. package/dist/data/json-view/parse-source.cjs +62 -0
  372. package/dist/data/json-view/parse-source.cjs.map +1 -0
  373. package/dist/data/json-view/parse-source.d.ts +16 -0
  374. package/dist/data/json-view/parse-source.d.ts.map +1 -0
  375. package/dist/data/json-view/parse-source.js +62 -0
  376. package/dist/data/json-view/parse-source.js.map +1 -0
  377. package/dist/data/json-view/story-fixtures.d.ts +6 -0
  378. package/dist/data/json-view/story-fixtures.d.ts.map +1 -0
  379. package/dist/data/json-view/types.d.ts +14 -0
  380. package/dist/data/json-view/types.d.ts.map +1 -0
  381. package/dist/data/runtime/RuntimeBar.cjs +2 -5
  382. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  383. package/dist/data/runtime/RuntimeBar.d.ts +2 -4
  384. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  385. package/dist/data/runtime/RuntimeBar.fields.cjs +2 -2
  386. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -1
  387. package/dist/data/runtime/RuntimeBar.fields.js +2 -2
  388. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -1
  389. package/dist/data/runtime/RuntimeBar.js +2 -5
  390. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  391. package/dist/data/runtime/RuntimeBar.selection.cjs +4 -1
  392. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -1
  393. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -1
  394. package/dist/data/runtime/RuntimeBar.selection.js +5 -2
  395. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -1
  396. package/dist/data/runtime/RuntimeBarActions.cjs +1 -5
  397. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  398. package/dist/data/runtime/RuntimeBarActions.d.ts +1 -1
  399. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  400. package/dist/data/runtime/RuntimeBarActions.js +1 -5
  401. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  402. package/dist/data/runtime/RuntimeBarIdentity.cjs +6 -14
  403. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -1
  404. package/dist/data/runtime/RuntimeBarIdentity.d.ts +0 -1
  405. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -1
  406. package/dist/data/runtime/RuntimeBarIdentity.js +6 -14
  407. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -1
  408. package/dist/data/runtime/RuntimeBarLayout.cjs +8 -27
  409. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -1
  410. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -1
  411. package/dist/data/runtime/RuntimeBarLayout.js +8 -27
  412. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -1
  413. package/dist/data/runtime/RuntimeBarSegment.cjs +1 -5
  414. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  415. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  416. package/dist/data/runtime/RuntimeBarSegment.js +1 -5
  417. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  418. package/dist/data/runtime/use-runtime-bar-overflow.cjs +4 -10
  419. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -1
  420. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +1 -2
  421. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -1
  422. package/dist/data/runtime/use-runtime-bar-overflow.js +4 -10
  423. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -1
  424. package/dist/data/test-runner/TestRunner.fixtures.d.ts +0 -20
  425. package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
  426. package/dist/data/test-runner/TestRunner.large-fixtures.d.ts +22 -0
  427. package/dist/data/test-runner/TestRunner.large-fixtures.d.ts.map +1 -0
  428. package/dist/data/use-pan-zoom.cjs +23 -10
  429. package/dist/data/use-pan-zoom.cjs.map +1 -1
  430. package/dist/data/use-pan-zoom.d.ts +16 -2
  431. package/dist/data/use-pan-zoom.d.ts.map +1 -1
  432. package/dist/data/use-pan-zoom.js +23 -10
  433. package/dist/data/use-pan-zoom.js.map +1 -1
  434. package/dist/data/version-info.cjs +3 -3
  435. package/dist/data/version-info.js +3 -3
  436. package/dist/data.cjs +26 -2
  437. package/dist/data.cjs.map +1 -1
  438. package/dist/data.d.ts +1 -0
  439. package/dist/data.d.ts.map +1 -1
  440. package/dist/data.js +24 -0
  441. package/dist/data.js.map +1 -1
  442. package/dist/index.cjs +28 -4
  443. package/dist/index.cjs.map +1 -1
  444. package/dist/index.js +24 -0
  445. package/dist/index.js.map +1 -1
  446. package/dist/layout/Workspace.cjs +13 -4
  447. package/dist/layout/Workspace.cjs.map +1 -1
  448. package/dist/layout/Workspace.d.ts +7 -2
  449. package/dist/layout/Workspace.d.ts.map +1 -1
  450. package/dist/layout/Workspace.js +13 -4
  451. package/dist/layout/Workspace.js.map +1 -1
  452. package/dist/lib/permission-strategies.cjs +71 -11
  453. package/dist/lib/permission-strategies.cjs.map +1 -1
  454. package/dist/lib/permission-strategies.d.ts +3 -0
  455. package/dist/lib/permission-strategies.d.ts.map +1 -1
  456. package/dist/lib/permission-strategies.js +71 -11
  457. package/dist/lib/permission-strategies.js.map +1 -1
  458. package/dist/styles.css +1 -1
  459. package/package.json +5 -3
  460. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +0 -57
  461. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +0 -1
  462. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +0 -7
  463. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +0 -1
  464. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +0 -57
  465. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +0 -1
  466. package/dist/data/runtime/RuntimeBar.context.cjs +0 -8
  467. package/dist/data/runtime/RuntimeBar.context.cjs.map +0 -1
  468. package/dist/data/runtime/RuntimeBar.context.d.ts +0 -2
  469. package/dist/data/runtime/RuntimeBar.context.d.ts.map +0 -1
  470. package/dist/data/runtime/RuntimeBar.context.js +0 -8
  471. package/dist/data/runtime/RuntimeBar.context.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SessionViewerMenu.js","sources":["../../../src/data/ai/SessionViewerMenu.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport {\n UiCheck,\n UiDesktop,\n UiDotsVertical,\n UiListDashes,\n UiListFlat,\n UiMoon,\n UiResizeVertical,\n UiRows,\n UiSun,\n} from \"../../icons\";\nimport { type Density } from \"../../hooks/use-density\";\nimport { getSessionAction } from \"./SessionViewer.model\";\nimport {\n CATEGORY_ICONS,\n CATEGORY_LABELS,\n type SessionCategory,\n type SessionFilters,\n} from \"./session-categories\";\n\nexport type SessionThemeOverride = \"light\" | \"dark\";\n\ninterface SegmentedOption<T> {\n value: T | undefined;\n icon: StaticIconComponent;\n label: string;\n}\n\nconst DENSITY_OPTIONS: Array<SegmentedOption<Density>> = [\n { value: undefined, icon: UiResizeVertical, label: \"Use page density\" },\n { value: \"compact\", icon: UiRows, label: \"Compact\" },\n { value: \"comfortable\", icon: UiListFlat, label: \"Comfortable\" },\n { value: \"spacious\", icon: UiListDashes, label: \"Spacious\" },\n];\n\nconst THEME_OPTIONS: Array<SegmentedOption<SessionThemeOverride>> = [\n { value: undefined, icon: UiDesktop, label: \"Use page theme\" },\n { value: \"light\", icon: UiSun, label: \"Light\" },\n { value: \"dark\", icon: UiMoon, label: \"Dark\" },\n];\n\nexport interface SessionViewerMenuProps {\n menuHeader?: ReactNode;\n density: Density | undefined;\n onDensityChange: (density: Density | undefined) => void;\n theme: SessionThemeOverride | undefined;\n onThemeChange: (theme: SessionThemeOverride | undefined) => void;\n filters: SessionFilters;\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n onToggleCategory: (category: SessionCategory) => void;\n onToggleTool: (tool: string) => void;\n onToggleSource: (source: string) => void;\n showThinking: boolean;\n onToggleThinking: () => void;\n hasThinking: boolean;\n hasEncryptedReasoning: boolean;\n showEncryptedReasoning: boolean;\n onToggleEncryptedReasoning: () => void;\n}\n\n/** The SessionViewer's \"3-dot\" menu: density and theme overrides as one-line\n * segmented icon rows, plus visibility toggles for the captain category /\n * tool / source facets present in the session. */\nexport function SessionViewerMenu({\n menuHeader,\n density,\n onDensityChange,\n theme,\n onThemeChange,\n filters,\n hiddenCategories,\n hiddenTools,\n hiddenSources,\n onToggleCategory,\n onToggleTool,\n onToggleSource,\n showThinking,\n onToggleThinking,\n hasThinking,\n hasEncryptedReasoning,\n showEncryptedReasoning,\n onToggleEncryptedReasoning,\n}: SessionViewerMenuProps) {\n return (\n <DropdownMenu\n icon={UiDotsVertical}\n hideChevron\n variant=\"ghost\"\n size=\"icon\"\n align=\"right\"\n title=\"Session options\"\n menuLabel=\"Session options\"\n menuClassName=\"min-w-[12rem] max-h-[70vh] overflow-auto px-1\"\n header={menuHeader}\n >\n {() => (\n <div className=\"text-popover-foreground\">\n <SegmentedRow\n label=\"Density\"\n options={DENSITY_OPTIONS}\n value={density}\n onChange={onDensityChange}\n />\n <SegmentedRow\n label=\"Theme\"\n options={THEME_OPTIONS}\n value={theme}\n onChange={onThemeChange}\n />\n\n {filters.categories.length > 0 && (\n <Section heading=\"Categories\">\n {filters.categories.map((category) => (\n <CheckRow\n key={category}\n label={CATEGORY_LABELS[category]}\n icon={CATEGORY_ICONS[category]}\n checked={!hiddenCategories.has(category)}\n onToggle={() => onToggleCategory(category)}\n />\n ))}\n </Section>\n )}\n\n {filters.tools.length > 0 && (\n <Section heading=\"Tools\">\n {filters.tools.map((tool) => (\n <CheckRow\n key={tool.key}\n label={tool.label}\n icon={getSessionAction(tool.key).icon}\n checked={!hiddenTools.has(tool.key)}\n onToggle={() => onToggleTool(tool.key)}\n />\n ))}\n </Section>\n )}\n\n {filters.sources.length > 1 && (\n <Section heading=\"Source\">\n {filters.sources.map((source) => (\n <CheckRow\n key={source}\n label={source}\n checked={!hiddenSources.has(source)}\n onToggle={() => onToggleSource(source)}\n />\n ))}\n </Section>\n )}\n\n {hasThinking && (\n <Section>\n <CheckRow label=\"Reasoning\" checked={showThinking} onToggle={onToggleThinking} />\n {hasEncryptedReasoning && (\n <CheckRow label=\"Encrypted reasoning\" checked={showEncryptedReasoning} onToggle={onToggleEncryptedReasoning} />\n )}\n </Section>\n )}\n </div>\n )}\n </DropdownMenu>\n );\n}\n\n// One line per setting: a dim label on the left, a bordered segmented group of\n// icon-only radio buttons on the right. Labels ride on aria-label/title so\n// menuitemradio queries (and tooltips) still see \"Compact\", \"Dark\", etc.\nfunction SegmentedRow<T extends string>({\n label,\n options,\n value,\n onChange,\n}: {\n label: string;\n options: Array<SegmentedOption<T>>;\n value: T | undefined;\n onChange: (value: T | undefined) => void;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-2 px-2 py-1\">\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <div className=\"flex items-center gap-0.5 rounded-md border border-border p-0.5\">\n {options.map((option) => {\n const active = value === option.value;\n return (\n <button\n key={option.label}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n aria-label={option.label}\n title={option.label}\n onClick={() => onChange(option.value)}\n className={cn(\n \"flex h-5 w-5 items-center justify-center rounded transition-colors focus:outline-none\",\n active\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:text-foreground focus:text-foreground\",\n )}\n >\n <Icon icon={option.icon} className=\"text-xs\" />\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction Section({ heading, children }: { heading?: string; children: ReactNode }) {\n return (\n <div className=\"mt-1 border-t border-border pt-0.5\">\n {heading && (\n <div className=\"px-2 py-1 text-[11px] font-medium text-muted-foreground\">{heading}</div>\n )}\n {children}\n </div>\n );\n}\n\nconst ROW_CLASS =\n \"flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-xs transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\";\n\nfunction CheckRow({\n label,\n checked,\n onToggle,\n icon,\n}: {\n label: string;\n checked: boolean;\n onToggle: () => void;\n icon?: StaticIconComponent;\n}) {\n return (\n <button\n type=\"button\"\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={cn(ROW_CLASS, !checked && \"text-muted-foreground\")}\n onClick={onToggle}\n >\n <span\n aria-hidden\n className={cn(\n \"flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded border\",\n checked ? \"border-primary bg-primary text-primary-foreground\" : \"border-input\",\n )}\n >\n {checked && <Icon icon={UiCheck} className=\"text-[0.6rem]\" />}\n </span>\n {icon && <Icon icon={icon} className=\"size-3.5 shrink-0 text-muted-foreground\" />}\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n </button>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionViewerMenu.js","sources":["../../../src/data/ai/SessionViewerMenu.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport {\n UiCheck,\n UiDesktop,\n UiDotsVertical,\n UiListDashes,\n UiListFlat,\n UiMoon,\n UiResizeVertical,\n UiRows,\n UiSun,\n} from \"../../icons\";\nimport { type Density } from \"../../hooks/use-density\";\nimport { getSessionAction } from \"./SessionViewer.model\";\nimport {\n CATEGORY_ICONS,\n CATEGORY_LABELS,\n type SessionCategory,\n type SessionFilters,\n} from \"./session-categories\";\n\nexport type SessionThemeOverride = \"light\" | \"dark\";\n\ninterface SegmentedOption<T> {\n value: T | undefined;\n icon: StaticIconComponent;\n label: string;\n}\n\nconst DENSITY_OPTIONS: Array<SegmentedOption<Density>> = [\n { value: undefined, icon: UiResizeVertical, label: \"Use page density\" },\n { value: \"compact\", icon: UiRows, label: \"Compact\" },\n { value: \"comfortable\", icon: UiListFlat, label: \"Comfortable\" },\n { value: \"spacious\", icon: UiListDashes, label: \"Spacious\" },\n];\n\nconst THEME_OPTIONS: Array<SegmentedOption<SessionThemeOverride>> = [\n { value: undefined, icon: UiDesktop, label: \"Use page theme\" },\n { value: \"light\", icon: UiSun, label: \"Light\" },\n { value: \"dark\", icon: UiMoon, label: \"Dark\" },\n];\n\nexport interface SessionViewerMenuProps {\n menuHeader?: ReactNode;\n density: Density | undefined;\n onDensityChange: (density: Density | undefined) => void;\n theme: SessionThemeOverride | undefined;\n onThemeChange: (theme: SessionThemeOverride | undefined) => void;\n filters: SessionFilters;\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n onToggleCategory: (category: SessionCategory) => void;\n onToggleTool: (tool: string) => void;\n onToggleSource: (source: string) => void;\n showThinking: boolean;\n onToggleThinking: () => void;\n hasThinking: boolean;\n hasEncryptedReasoning: boolean;\n showEncryptedReasoning: boolean;\n onToggleEncryptedReasoning: () => void;\n showEstimatedToolCost: boolean;\n onToggleEstimatedToolCost: () => void;\n onEstimateTokens?: () => void;\n onCalculateMissingTokens?: (() => void) | undefined;\n estimatingTokens?: boolean;\n}\n\n/** The SessionViewer's \"3-dot\" menu: density and theme overrides as one-line\n * segmented icon rows, plus visibility toggles for the captain category /\n * tool / source facets present in the session. */\nexport function SessionViewerMenu({\n menuHeader,\n density,\n onDensityChange,\n theme,\n onThemeChange,\n filters,\n hiddenCategories,\n hiddenTools,\n hiddenSources,\n onToggleCategory,\n onToggleTool,\n onToggleSource,\n showThinking,\n onToggleThinking,\n hasThinking,\n hasEncryptedReasoning,\n showEncryptedReasoning,\n onToggleEncryptedReasoning,\n showEstimatedToolCost,\n onToggleEstimatedToolCost,\n onEstimateTokens,\n onCalculateMissingTokens,\n estimatingTokens,\n}: SessionViewerMenuProps) {\n return (\n <DropdownMenu\n icon={UiDotsVertical}\n hideChevron\n variant=\"ghost\"\n size=\"icon\"\n align=\"right\"\n title=\"Session options\"\n menuLabel=\"Session options\"\n menuClassName=\"min-w-[12rem] max-h-[70vh] overflow-auto px-1\"\n header={menuHeader}\n >\n {() => (\n <div className=\"text-popover-foreground\">\n <SegmentedRow\n label=\"Density\"\n options={DENSITY_OPTIONS}\n value={density}\n onChange={onDensityChange}\n />\n <SegmentedRow\n label=\"Theme\"\n options={THEME_OPTIONS}\n value={theme}\n onChange={onThemeChange}\n />\n\n <Section>\n {onEstimateTokens && <button type=\"button\" role=\"menuitem\" className={ROW_CLASS} disabled={estimatingTokens} onClick={onEstimateTokens}>Estimate tokens/cost for all rows</button>}\n {onCalculateMissingTokens && <button type=\"button\" role=\"menuitem\" className={ROW_CLASS} disabled={estimatingTokens} onClick={onCalculateMissingTokens}>Calculate missing rows</button>}\n <CheckRow\n label=\"Show estimated tool cost\"\n checked={showEstimatedToolCost}\n onToggle={onToggleEstimatedToolCost}\n />\n </Section>\n\n {filters.categories.length > 0 && (\n <Section heading=\"Categories\">\n {filters.categories.map((category) => (\n <CheckRow\n key={category}\n label={CATEGORY_LABELS[category]}\n icon={CATEGORY_ICONS[category]}\n checked={!hiddenCategories.has(category)}\n onToggle={() => onToggleCategory(category)}\n />\n ))}\n </Section>\n )}\n\n {filters.tools.length > 0 && (\n <Section heading=\"Tools\">\n {filters.tools.map((tool) => (\n <CheckRow\n key={tool.key}\n label={tool.label}\n icon={getSessionAction(tool.key).icon}\n checked={!hiddenTools.has(tool.key)}\n onToggle={() => onToggleTool(tool.key)}\n />\n ))}\n </Section>\n )}\n\n {filters.sources.length > 1 && (\n <Section heading=\"Source\">\n {filters.sources.map((source) => (\n <CheckRow\n key={source}\n label={source}\n checked={!hiddenSources.has(source)}\n onToggle={() => onToggleSource(source)}\n />\n ))}\n </Section>\n )}\n\n {hasThinking && (\n <Section>\n <CheckRow label=\"Reasoning\" checked={showThinking} onToggle={onToggleThinking} />\n {hasEncryptedReasoning && (\n <CheckRow label=\"Encrypted reasoning\" checked={showEncryptedReasoning} onToggle={onToggleEncryptedReasoning} />\n )}\n </Section>\n )}\n </div>\n )}\n </DropdownMenu>\n );\n}\n\n// One line per setting: a dim label on the left, a bordered segmented group of\n// icon-only radio buttons on the right. Labels ride on aria-label/title so\n// menuitemradio queries (and tooltips) still see \"Compact\", \"Dark\", etc.\nfunction SegmentedRow<T extends string>({\n label,\n options,\n value,\n onChange,\n}: {\n label: string;\n options: Array<SegmentedOption<T>>;\n value: T | undefined;\n onChange: (value: T | undefined) => void;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-2 px-2 py-1\">\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <div className=\"flex items-center gap-0.5 rounded-md border border-border p-0.5\">\n {options.map((option) => {\n const active = value === option.value;\n return (\n <button\n key={option.label}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n aria-label={option.label}\n title={option.label}\n onClick={() => onChange(option.value)}\n className={cn(\n \"flex h-5 w-5 items-center justify-center rounded transition-colors focus:outline-none\",\n active\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:text-foreground focus:text-foreground\",\n )}\n >\n <Icon icon={option.icon} className=\"text-xs\" />\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction Section({ heading, children }: { heading?: string; children: ReactNode }) {\n return (\n <div className=\"mt-1 border-t border-border pt-0.5\">\n {heading && (\n <div className=\"px-2 py-1 text-[11px] font-medium text-muted-foreground\">{heading}</div>\n )}\n {children}\n </div>\n );\n}\n\nconst ROW_CLASS =\n \"flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-xs transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\";\n\nfunction CheckRow({\n label,\n checked,\n onToggle,\n icon,\n}: {\n label: string;\n checked: boolean;\n onToggle: () => void;\n icon?: StaticIconComponent;\n}) {\n return (\n <button\n type=\"button\"\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={cn(ROW_CLASS, !checked && \"text-muted-foreground\")}\n onClick={onToggle}\n >\n <span\n aria-hidden\n className={cn(\n \"flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded border\",\n checked ? \"border-primary bg-primary text-primary-foreground\" : \"border-input\",\n )}\n >\n {checked && <Icon icon={UiCheck} className=\"text-[0.6rem]\" />}\n </span>\n {icon && <Icon icon={icon} className=\"size-3.5 shrink-0 text-muted-foreground\" />}\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n </button>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -11,28 +11,114 @@ const effortIcons = require("../chat/effort-icons.cjs");
11
11
  const AdvancedChatConfig = require("./AdvancedChatConfig.cjs");
12
12
  const AdvancedCostsPanel = require("./AdvancedCostsPanel.cjs");
13
13
  const ToolSchemaBrowser = require("./ToolSchemaBrowser.cjs");
14
- const ToolPreferencesList = require("./ToolPreferencesList.cjs");
15
- const ToolPreferences_model = require("./ToolPreferences.model.cjs");
16
- const UiSliders = require("../../icons/components/UiSliders.cjs");
17
- const UiCode2 = require("../../icons/components/UiCode2.cjs");
14
+ const ToolSchemaBrowser_model = require("./ToolSchemaBrowser.model.cjs");
15
+ const ToolSchemaBrowser_tree = require("./ToolSchemaBrowser.tree.cjs");
18
16
  const UiShield = require("../../icons/components/UiShield.cjs");
19
17
  const UiCoins = require("../../icons/components/UiCoins.cjs");
20
- const ADVANCED_TABS = [
21
- "config",
22
- "costs",
23
- "permissions",
24
- "browser"
25
- ];
18
+ const UiSliders = require("../../icons/components/UiSliders.cjs");
19
+ const ADVANCED_TABS = ["config", "costs", "permissions"];
26
20
  const ADVANCED_TAB_ICONS = {
27
21
  config: UiSliders.UiSliders,
28
22
  costs: UiCoins.UiCoins,
29
- permissions: UiShield.UiShield,
30
- browser: UiCode2.UiCode2
23
+ permissions: UiShield.UiShield
31
24
  };
32
25
  function ToolPreferences({
26
+ className = "",
27
+ ...props
28
+ }) {
29
+ const [advancedOpen, setAdvancedOpen] = react.useState(false);
30
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31
+ /* @__PURE__ */ jsxRuntime.jsx(
32
+ DropdownMenu.DropdownMenu,
33
+ {
34
+ align: "right",
35
+ className,
36
+ menuClassName: "w-72 max-h-[70vh] overflow-y-auto p-1",
37
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(
38
+ button.Button,
39
+ {
40
+ variant: "ghost",
41
+ size: "icon",
42
+ title: "Tool preferences",
43
+ "data-testid": "tool-preferences-btn",
44
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiSliders.UiSliders, className: "size-4" })
45
+ }
46
+ ),
47
+ children: (closeMenu) => /* @__PURE__ */ jsxRuntime.jsx(
48
+ ToolPreferencesMenu,
49
+ {
50
+ tools: props.tools,
51
+ value: props.value,
52
+ onRule: props.onRule,
53
+ onAdvanced: () => {
54
+ closeMenu();
55
+ setAdvancedOpen(true);
56
+ }
57
+ }
58
+ )
59
+ }
60
+ ),
61
+ /* @__PURE__ */ jsxRuntime.jsx(
62
+ Modal.Modal,
63
+ {
64
+ open: advancedOpen,
65
+ onClose: () => setAdvancedOpen(false),
66
+ title: "Advanced Chat Settings",
67
+ size: "xl",
68
+ children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedChatSettings, { ...props, className: "h-[70vh]" })
69
+ }
70
+ )
71
+ ] });
72
+ }
73
+ function ToolPreferencesMenu({
74
+ tools,
75
+ value,
76
+ onRule,
77
+ onAdvanced,
78
+ className
79
+ }) {
80
+ const sections = react.useMemo(
81
+ () => ToolSchemaBrowser_model.buildToolSchemaSections(tools, "tree"),
82
+ [tools]
83
+ );
84
+ const [collapsed, setCollapsed] = react.useState(() => /* @__PURE__ */ new Set());
85
+ const toggle = (key) => setCollapsed((current) => {
86
+ const next = new Set(current);
87
+ if (next.has(key)) next.delete(key);
88
+ else next.add(key);
89
+ return next;
90
+ });
91
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
92
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 px-1 text-xs font-semibold", children: "Tool Preferences" }),
93
+ /* @__PURE__ */ jsxRuntime.jsx(
94
+ ToolSchemaBrowser_tree.ToolPolicyTree,
95
+ {
96
+ sections,
97
+ view: "tree",
98
+ value,
99
+ onRule,
100
+ isOpen: (key) => !collapsed.has(key),
101
+ onToggle: toggle,
102
+ emptyLabel: "No tools available"
103
+ }
104
+ ),
105
+ onAdvanced && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 border-t border-border pt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
106
+ "button",
107
+ {
108
+ type: "button",
109
+ className: "w-full rounded px-2 py-1.5 text-left text-xs hover:bg-accent",
110
+ onClick: onAdvanced,
111
+ children: "Advanced"
112
+ }
113
+ ) })
114
+ ] });
115
+ }
116
+ function AdvancedChatSettings({
33
117
  tools,
34
118
  value,
35
119
  onRule,
120
+ rules,
121
+ onRulesChange,
36
122
  models = [],
37
123
  runtime,
38
124
  onRuntimeChange,
@@ -45,11 +131,8 @@ function ToolPreferences({
45
131
  onReasoningEffortChange,
46
132
  permissionMode = "default",
47
133
  onPermissionModeChange,
48
- temperature,
49
- onTemperatureChange,
50
134
  budget,
51
135
  onBudgetChange,
52
- usage,
53
136
  costsApi,
54
137
  threadId,
55
138
  toolsLoading = false,
@@ -57,15 +140,13 @@ function ToolPreferences({
57
140
  catalogLoading = false,
58
141
  catalogError = null,
59
142
  onCatalogRetry,
60
- className = ""
143
+ defaultTab = "config",
144
+ className
61
145
  }) {
62
- const [advancedOpen, setAdvancedOpen] = react.useState(false);
63
- const [advancedTab, setAdvancedTab] = react.useState("config");
64
- const groups = react.useMemo(() => ToolPreferences_model.groupedToolEntries(tools), [tools]);
146
+ const [advancedTab, setAdvancedTab] = react.useState(defaultTab);
65
147
  const resolvedRuntime = runtime ?? {
66
148
  ...model ? { model } : {},
67
- ...reasoningEffort ? { effort: reasoningEffort } : {},
68
- ...temperature !== void 0 ? { temperature } : {}
149
+ ...reasoningEffort ? { effort: reasoningEffort } : {}
69
150
  };
70
151
  const handleRuntimeChange = (next) => {
71
152
  onRuntimeChange == null ? void 0 : onRuntimeChange(next);
@@ -76,134 +157,59 @@ function ToolPreferences({
76
157
  onReasoningEffortChange == null ? void 0 : onReasoningEffortChange(next.effort ?? "");
77
158
  }
78
159
  };
79
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
80
- /* @__PURE__ */ jsxRuntime.jsx(
81
- DropdownMenu.DropdownMenu,
82
- {
83
- align: "right",
84
- className,
85
- menuClassName: "w-72 max-h-[70vh] overflow-y-auto p-1",
86
- trigger: /* @__PURE__ */ jsxRuntime.jsx(
87
- button.Button,
88
- {
89
- variant: "ghost",
90
- size: "icon",
91
- title: "Tool preferences",
92
- "data-testid": "tool-preferences-btn",
93
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiSliders.UiSliders, className: "size-4" })
94
- }
95
- ),
96
- children: (closeMenu) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
97
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 px-1 text-xs font-semibold", children: "Tool Preferences" }),
98
- /* @__PURE__ */ jsxRuntime.jsx(
99
- ToolPreferencesList.CompactToolList,
100
- {
101
- groups,
102
- value,
103
- onRule,
104
- emptyLabel: "No tools available"
105
- }
160
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex min-h-0 flex-col gap-3", className), children: [
161
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 rounded border border-border bg-muted/30 p-1", children: [
162
+ ADVANCED_TABS.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
163
+ "button",
164
+ {
165
+ type: "button",
166
+ className: utils.cn(
167
+ "inline-flex h-8 items-center gap-1.5 rounded px-3 text-xs font-medium capitalize",
168
+ advancedTab === tab ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/60"
106
169
  ),
107
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 border-t border-border pt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
108
- "button",
109
- {
110
- type: "button",
111
- className: "w-full rounded px-2 py-1.5 text-left text-xs hover:bg-accent",
112
- onClick: () => {
113
- closeMenu();
114
- setAdvancedOpen(true);
115
- },
116
- children: "Advanced"
117
- }
118
- ) })
119
- ] })
170
+ onClick: () => setAdvancedTab(tab),
171
+ children: [
172
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: ADVANCED_TAB_ICONS[tab], className: "size-3.5" }),
173
+ tab
174
+ ]
175
+ },
176
+ tab
177
+ )),
178
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
179
+ toolsLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pr-2 text-[11px] text-muted-foreground", children: "Loading tools" }),
180
+ toolsError && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pr-2 text-[11px] text-destructive", children: toolsError })
181
+ ] }),
182
+ advancedTab === "config" ? /* @__PURE__ */ jsxRuntime.jsx(
183
+ AdvancedChatConfig.AdvancedChatConfig,
184
+ {
185
+ models,
186
+ runtime: resolvedRuntime,
187
+ onRuntimeChange: handleRuntimeChange,
188
+ runtimeFamilies,
189
+ reasoningEfforts,
190
+ runtimeLocked,
191
+ permissionMode,
192
+ onPermissionModeChange,
193
+ budget,
194
+ onBudgetChange,
195
+ catalogLoading,
196
+ catalogError,
197
+ onCatalogRetry
120
198
  }
121
- ),
122
- /* @__PURE__ */ jsxRuntime.jsx(
123
- Modal.Modal,
199
+ ) : advancedTab === "costs" ? /* @__PURE__ */ jsxRuntime.jsx(AdvancedCostsPanel.AdvancedCostsPanel, { costsApi, threadId }) : /* @__PURE__ */ jsxRuntime.jsx(
200
+ ToolSchemaBrowser.ToolSchemaBrowser,
124
201
  {
125
- open: advancedOpen,
126
- onClose: () => setAdvancedOpen(false),
127
- title: "Advanced Chat Settings",
128
- size: "xl",
129
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[70vh] min-h-0 flex-col gap-3", children: [
130
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 rounded border border-border bg-muted/30 p-1", children: [
131
- ADVANCED_TABS.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
132
- "button",
133
- {
134
- type: "button",
135
- className: utils.cn(
136
- "inline-flex h-8 items-center gap-1.5 rounded px-3 text-xs font-medium capitalize",
137
- advancedTab === tab ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/60"
138
- ),
139
- onClick: () => setAdvancedTab(tab),
140
- children: [
141
- /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: ADVANCED_TAB_ICONS[tab], className: "size-3.5" }),
142
- tab
143
- ]
144
- },
145
- tab
146
- )),
147
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
148
- toolsLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pr-2 text-[11px] text-muted-foreground", children: "Loading tools" }),
149
- toolsError && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pr-2 text-[11px] text-destructive", children: toolsError })
150
- ] }),
151
- advancedTab === "config" ? /* @__PURE__ */ jsxRuntime.jsx(
152
- AdvancedChatConfig.AdvancedChatConfig,
153
- {
154
- models,
155
- runtime: resolvedRuntime,
156
- onRuntimeChange: handleRuntimeChange,
157
- runtimeFamilies,
158
- reasoningEfforts,
159
- runtimeLocked,
160
- permissionMode,
161
- onPermissionModeChange,
162
- temperature,
163
- onTemperatureChange,
164
- budget,
165
- onBudgetChange,
166
- usage,
167
- catalogLoading,
168
- catalogError,
169
- onCatalogRetry
170
- }
171
- ) : advancedTab === "costs" ? /* @__PURE__ */ jsxRuntime.jsx(AdvancedCostsPanel.AdvancedCostsPanel, { costsApi, threadId }) : advancedTab === "permissions" ? /* @__PURE__ */ jsxRuntime.jsx(
172
- AdvancedPermissionsPanel,
173
- {
174
- groups,
175
- value,
176
- onRule
177
- }
178
- ) : /* @__PURE__ */ jsxRuntime.jsx(
179
- ToolSchemaBrowser.ToolSchemaBrowser,
180
- {
181
- tools,
182
- value,
183
- onRule,
184
- className: "min-h-0 flex-1"
185
- }
186
- )
187
- ] })
202
+ tools,
203
+ value,
204
+ onRule,
205
+ rules,
206
+ onRulesChange,
207
+ className: "min-h-0 flex-1"
188
208
  }
189
209
  )
190
210
  ] });
191
211
  }
192
- function AdvancedPermissionsPanel({
193
- groups,
194
- value,
195
- onRule
196
- }) {
197
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto rounded border border-border p-1", children: /* @__PURE__ */ jsxRuntime.jsx(
198
- ToolPreferencesList.CompactToolList,
199
- {
200
- groups,
201
- value,
202
- onRule,
203
- emptyLabel: "No tools"
204
- }
205
- ) });
206
- }
207
- exports.CompactToolPreferencesList = ToolPreferencesList.CompactToolPreferencesList;
212
+ exports.AdvancedChatSettings = AdvancedChatSettings;
208
213
  exports.ToolPreferences = ToolPreferences;
214
+ exports.ToolPreferencesMenu = ToolPreferencesMenu;
209
215
  //# sourceMappingURL=ToolPreferences.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolPreferences.cjs","sources":["../../../src/data/ai/ToolPreferences.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { UiCode2, UiCoins, UiShield, UiSliders } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Modal } from \"../../overlay/Modal\";\nimport { Icon } from \"../Icon\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatModelRuntime,\n ChatUsageSummary,\n ClaudePermissionMode,\n ToolAnnotations,\n ToolMeta,\n ToolPolicy,\n} from \"../chat/types\";\nimport type { SpecRuntimeFamily } from \"../runtime/runtime-mode\";\nimport { AdvancedChatConfig } from \"./AdvancedChatConfig\";\nimport { AdvancedCostsPanel } from \"./AdvancedCostsPanel\";\nimport { ToolSchemaBrowser } from \"./ToolSchemaBrowser\";\nimport {\n CompactToolList,\n CompactToolPreferencesList,\n type CompactToolPreferencesListProps,\n} from \"./ToolPreferencesList\";\nimport { groupedToolEntries, type ToolGroup } from \"./ToolPreferences.model\";\nimport type { PermissionRule } from \"../chat/tool-policy\";\n\nexport type { ClaudePermissionMode, ToolAnnotations, ToolMeta, ToolPolicy };\nexport { CompactToolPreferencesList, type CompactToolPreferencesListProps };\n\nexport type ToolPreferencesProps = {\n tools: ToolMeta[];\n value: Record<string, ToolPolicy>;\n onRule: (rule: PermissionRule) => void;\n models?: ChatModel[] | undefined;\n runtime?: ChatModelRuntime | undefined;\n onRuntimeChange?: ((runtime: ChatModelRuntime) => void) | undefined;\n model?: string | undefined;\n onModelChange?: ((model: string) => void) | undefined;\n runtimeFamilies?: SpecRuntimeFamily[] | undefined;\n reasoningEfforts?: string[] | undefined;\n runtimeLocked?: boolean | undefined;\n reasoningEffort?: string | undefined;\n onReasoningEffortChange?: ((effort: string) => void) | undefined;\n permissionMode?: ClaudePermissionMode | undefined;\n onPermissionModeChange?: ((mode: ClaudePermissionMode) => void) | undefined;\n temperature?: number | undefined;\n onTemperatureChange?: ((temperature: number | undefined) => void) | undefined;\n budget?: ChatBudgetConfig | undefined;\n onBudgetChange?: ((budget: ChatBudgetConfig) => void) | undefined;\n usage?: ChatUsageSummary | null | undefined;\n /** Base sessions endpoint for the Costs tab, e.g. `/api/chat/sessions`. */\n costsApi?: string | undefined;\n /** Thread whose costs the Costs tab reports. */\n threadId?: string | undefined;\n toolsLoading?: boolean | undefined;\n toolsError?: string | null | undefined;\n catalogLoading?: boolean | undefined;\n catalogError?: string | null | undefined;\n onCatalogRetry?: (() => void) | undefined;\n className?: string;\n};\n\ntype AdvancedTab = \"config\" | \"costs\" | \"permissions\" | \"browser\";\n\nconst ADVANCED_TABS: AdvancedTab[] = [\n \"config\",\n \"costs\",\n \"permissions\",\n \"browser\",\n];\n\nconst ADVANCED_TAB_ICONS: Record<AdvancedTab, typeof UiSliders> = {\n config: UiSliders,\n costs: UiCoins,\n permissions: UiShield,\n browser: UiCode2,\n};\n\nexport function ToolPreferences({\n tools,\n value,\n onRule,\n models = [],\n runtime,\n onRuntimeChange,\n model,\n onModelChange,\n runtimeFamilies,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n runtimeLocked = false,\n reasoningEffort,\n onReasoningEffortChange,\n permissionMode = \"default\",\n onPermissionModeChange,\n temperature,\n onTemperatureChange,\n budget,\n onBudgetChange,\n usage,\n costsApi,\n threadId,\n toolsLoading = false,\n toolsError = null,\n catalogLoading = false,\n catalogError = null,\n onCatalogRetry,\n className = \"\",\n}: ToolPreferencesProps) {\n const [advancedOpen, setAdvancedOpen] = useState(false);\n const [advancedTab, setAdvancedTab] = useState<AdvancedTab>(\"config\");\n const groups = useMemo(() => groupedToolEntries(tools), [tools]);\n const resolvedRuntime =\n runtime ??\n ({\n ...(model ? { model } : {}),\n ...(reasoningEffort ? { effort: reasoningEffort } : {}),\n ...(temperature !== undefined ? { temperature } : {}),\n } satisfies ChatModelRuntime);\n const handleRuntimeChange = (next: ChatModelRuntime) => {\n onRuntimeChange?.(next);\n if ((next.id ?? next.model ?? \"\") !== (model ?? \"\")) {\n onModelChange?.(next.id ?? next.model ?? \"\");\n }\n if ((next.effort ?? \"\") !== (reasoningEffort ?? \"\")) {\n onReasoningEffortChange?.(next.effort ?? \"\");\n }\n };\n\n return (\n <>\n <DropdownMenu\n align=\"right\"\n className={className}\n menuClassName=\"w-72 max-h-[70vh] overflow-y-auto p-1\"\n trigger={\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Tool preferences\"\n data-testid=\"tool-preferences-btn\"\n >\n <Icon icon={UiSliders} className=\"size-4\" />\n </Button>\n }\n >\n {(closeMenu) => (\n <div>\n <div className=\"mb-1 px-1 text-xs font-semibold\">\n Tool Preferences\n </div>\n <CompactToolList\n groups={groups}\n value={value}\n onRule={onRule}\n emptyLabel=\"No tools available\"\n />\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n type=\"button\"\n className=\"w-full rounded px-2 py-1.5 text-left text-xs hover:bg-accent\"\n onClick={() => {\n closeMenu();\n setAdvancedOpen(true);\n }}\n >\n Advanced\n </button>\n </div>\n </div>\n )}\n </DropdownMenu>\n <Modal\n open={advancedOpen}\n onClose={() => setAdvancedOpen(false)}\n title=\"Advanced Chat Settings\"\n size=\"xl\"\n >\n <div className=\"flex h-[70vh] min-h-0 flex-col gap-3\">\n <div className=\"flex items-center gap-1 rounded border border-border bg-muted/30 p-1\">\n {ADVANCED_TABS.map((tab) => (\n <button\n key={tab}\n type=\"button\"\n className={cn(\n \"inline-flex h-8 items-center gap-1.5 rounded px-3 text-xs font-medium capitalize\",\n advancedTab === tab\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:bg-background/60\",\n )}\n onClick={() => setAdvancedTab(tab)}\n >\n <Icon icon={ADVANCED_TAB_ICONS[tab]} className=\"size-3.5\" />\n {tab}\n </button>\n ))}\n <div className=\"flex-1\" />\n {toolsLoading && (\n <span className=\"pr-2 text-[11px] text-muted-foreground\">\n Loading tools\n </span>\n )}\n {toolsError && (\n <span className=\"pr-2 text-[11px] text-destructive\">\n {toolsError}\n </span>\n )}\n </div>\n {advancedTab === \"config\" ? (\n <AdvancedChatConfig\n models={models}\n runtime={resolvedRuntime}\n onRuntimeChange={handleRuntimeChange}\n runtimeFamilies={runtimeFamilies}\n reasoningEfforts={reasoningEfforts}\n runtimeLocked={runtimeLocked}\n permissionMode={permissionMode}\n onPermissionModeChange={onPermissionModeChange}\n temperature={temperature}\n onTemperatureChange={onTemperatureChange}\n budget={budget}\n onBudgetChange={onBudgetChange}\n usage={usage}\n catalogLoading={catalogLoading}\n catalogError={catalogError}\n onCatalogRetry={onCatalogRetry}\n />\n ) : advancedTab === \"costs\" ? (\n <AdvancedCostsPanel costsApi={costsApi} threadId={threadId} />\n ) : advancedTab === \"permissions\" ? (\n <AdvancedPermissionsPanel\n groups={groups}\n value={value}\n onRule={onRule}\n />\n ) : (\n <ToolSchemaBrowser\n tools={tools}\n value={value}\n onRule={onRule}\n className=\"min-h-0 flex-1\"\n />\n )}\n </div>\n </Modal>\n </>\n );\n}\n\nfunction AdvancedPermissionsPanel({\n groups,\n value,\n onRule,\n}: {\n groups: ToolGroup[];\n value: Record<string, ToolPolicy>;\n onRule: (rule: PermissionRule) => void;\n}) {\n return (\n <div className=\"min-h-0 flex-1 overflow-y-auto rounded border border-border p-1\">\n <CompactToolList\n groups={groups}\n value={value}\n onRule={onRule}\n emptyLabel=\"No tools\"\n />\n </div>\n );\n}\n"],"names":["UiSliders","UiCoins","UiShield","UiCode2","DEFAULT_REASONING_EFFORTS","useState","useMemo","groupedToolEntries","jsxs","Fragment","jsx","DropdownMenu","Button","Icon","CompactToolList","Modal","cn","AdvancedChatConfig","AdvancedCostsPanel","ToolSchemaBrowser"],"mappings":"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"}
1
+ {"version":3,"file":"ToolPreferences.cjs","sources":["../../../src/data/ai/ToolPreferences.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { UiCoins, UiShield, UiSliders } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Modal } from \"../../overlay/Modal\";\nimport { Icon } from \"../Icon\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatModelRuntime,\n ClaudePermissionMode,\n ToolAnnotations,\n ToolMeta,\n ToolPolicy,\n} from \"../chat/types\";\nimport type { SpecRuntimeFamily } from \"../runtime/runtime-mode\";\nimport { AdvancedChatConfig } from \"./AdvancedChatConfig\";\nimport { AdvancedCostsPanel } from \"./AdvancedCostsPanel\";\nimport { ToolSchemaBrowser } from \"./ToolSchemaBrowser\";\nimport { buildToolSchemaSections } from \"./ToolSchemaBrowser.model\";\nimport { ToolPolicyTree } from \"./ToolSchemaBrowser.tree\";\nimport {\n CompactToolPreferencesList,\n type CompactToolPreferencesListProps,\n} from \"./ToolPreferencesList\";\nimport type { PermissionPolicy, PermissionRule } from \"../chat/tool-policy\";\n\nexport type { ClaudePermissionMode, ToolAnnotations, ToolMeta, ToolPolicy };\nexport { CompactToolPreferencesList, type CompactToolPreferencesListProps };\n\nexport type ToolPreferencesProps = {\n tools: ToolMeta[];\n value: Record<string, ToolPolicy>;\n onRule: (rule: PermissionRule) => void;\n /** The user's saved rules, edited by the Permissions tab's strategy editor. */\n rules?: PermissionPolicy | undefined;\n onRulesChange?: ((rules: PermissionPolicy) => void) | undefined;\n models?: ChatModel[] | undefined;\n runtime?: ChatModelRuntime | undefined;\n onRuntimeChange?: ((runtime: ChatModelRuntime) => void) | undefined;\n model?: string | undefined;\n onModelChange?: ((model: string) => void) | undefined;\n runtimeFamilies?: SpecRuntimeFamily[] | undefined;\n reasoningEfforts?: string[] | undefined;\n runtimeLocked?: boolean | undefined;\n reasoningEffort?: string | undefined;\n onReasoningEffortChange?: ((effort: string) => void) | undefined;\n permissionMode?: ClaudePermissionMode | undefined;\n onPermissionModeChange?: ((mode: ClaudePermissionMode) => void) | undefined;\n budget?: ChatBudgetConfig | undefined;\n onBudgetChange?: ((budget: ChatBudgetConfig) => void) | undefined;\n /** Base sessions endpoint for the Costs tab, e.g. `/api/chat/sessions`. */\n costsApi?: string | undefined;\n /** Thread whose costs the Costs tab reports. */\n threadId?: string | undefined;\n toolsLoading?: boolean | undefined;\n toolsError?: string | null | undefined;\n catalogLoading?: boolean | undefined;\n catalogError?: string | null | undefined;\n onCatalogRetry?: (() => void) | undefined;\n className?: string;\n};\n\nexport type AdvancedTab = \"config\" | \"costs\" | \"permissions\";\n\nconst ADVANCED_TABS: AdvancedTab[] = [\"config\", \"costs\", \"permissions\"];\n\nconst ADVANCED_TAB_ICONS: Record<AdvancedTab, typeof UiSliders> = {\n config: UiSliders,\n costs: UiCoins,\n permissions: UiShield,\n};\n\nexport function ToolPreferences({\n className = \"\",\n ...props\n}: ToolPreferencesProps) {\n const [advancedOpen, setAdvancedOpen] = useState(false);\n\n return (\n <>\n <DropdownMenu\n align=\"right\"\n className={className}\n menuClassName=\"w-72 max-h-[70vh] overflow-y-auto p-1\"\n trigger={\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Tool preferences\"\n data-testid=\"tool-preferences-btn\"\n >\n <Icon icon={UiSliders} className=\"size-4\" />\n </Button>\n }\n >\n {(closeMenu) => (\n <ToolPreferencesMenu\n tools={props.tools}\n value={props.value}\n onRule={props.onRule}\n onAdvanced={() => {\n closeMenu();\n setAdvancedOpen(true);\n }}\n />\n )}\n </DropdownMenu>\n <Modal\n open={advancedOpen}\n onClose={() => setAdvancedOpen(false)}\n title=\"Advanced Chat Settings\"\n size=\"xl\"\n >\n <AdvancedChatSettings {...props} className=\"h-[70vh]\" />\n </Modal>\n </>\n );\n}\n\nexport type ToolPreferencesMenuProps = {\n tools: ToolMeta[];\n value: Record<string, ToolPolicy>;\n onRule: (rule: PermissionRule) => void;\n /** Shows the Advanced action; omitted, the menu has no Advanced entry. */\n onAdvanced?: (() => void) | undefined;\n className?: string;\n};\n\nexport function ToolPreferencesMenu({\n tools,\n value,\n onRule,\n onAdvanced,\n className,\n}: ToolPreferencesMenuProps) {\n const sections = useMemo(\n () => buildToolSchemaSections(tools, \"tree\"),\n [tools],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set());\n const toggle = (key: string) =>\n setCollapsed((current) => {\n const next = new Set(current);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n\n return (\n <div className={className}>\n <div className=\"mb-1 px-1 text-xs font-semibold\">Tool Preferences</div>\n <ToolPolicyTree\n sections={sections}\n view=\"tree\"\n value={value}\n onRule={onRule}\n isOpen={(key) => !collapsed.has(key)}\n onToggle={toggle}\n emptyLabel=\"No tools available\"\n />\n {onAdvanced && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n type=\"button\"\n className=\"w-full rounded px-2 py-1.5 text-left text-xs hover:bg-accent\"\n onClick={onAdvanced}\n >\n Advanced\n </button>\n </div>\n )}\n </div>\n );\n}\n\nexport type AdvancedChatSettingsProps = ToolPreferencesProps & {\n defaultTab?: AdvancedTab | undefined;\n};\n\nexport function AdvancedChatSettings({\n tools,\n value,\n onRule,\n rules,\n onRulesChange,\n models = [],\n runtime,\n onRuntimeChange,\n model,\n onModelChange,\n runtimeFamilies,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n runtimeLocked = false,\n reasoningEffort,\n onReasoningEffortChange,\n permissionMode = \"default\",\n onPermissionModeChange,\n budget,\n onBudgetChange,\n costsApi,\n threadId,\n toolsLoading = false,\n toolsError = null,\n catalogLoading = false,\n catalogError = null,\n onCatalogRetry,\n defaultTab = \"config\",\n className,\n}: AdvancedChatSettingsProps) {\n const [advancedTab, setAdvancedTab] = useState<AdvancedTab>(defaultTab);\n const resolvedRuntime =\n runtime ??\n ({\n ...(model ? { model } : {}),\n ...(reasoningEffort ? { effort: reasoningEffort } : {}),\n } satisfies ChatModelRuntime);\n const handleRuntimeChange = (next: ChatModelRuntime) => {\n onRuntimeChange?.(next);\n if ((next.id ?? next.model ?? \"\") !== (model ?? \"\")) {\n onModelChange?.(next.id ?? next.model ?? \"\");\n }\n if ((next.effort ?? \"\") !== (reasoningEffort ?? \"\")) {\n onReasoningEffortChange?.(next.effort ?? \"\");\n }\n };\n\n return (\n <div className={cn(\"flex min-h-0 flex-col gap-3\", className)}>\n <div className=\"flex items-center gap-1 rounded border border-border bg-muted/30 p-1\">\n {ADVANCED_TABS.map((tab) => (\n <button\n key={tab}\n type=\"button\"\n className={cn(\n \"inline-flex h-8 items-center gap-1.5 rounded px-3 text-xs font-medium capitalize\",\n advancedTab === tab\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:bg-background/60\",\n )}\n onClick={() => setAdvancedTab(tab)}\n >\n <Icon icon={ADVANCED_TAB_ICONS[tab]} className=\"size-3.5\" />\n {tab}\n </button>\n ))}\n <div className=\"flex-1\" />\n {toolsLoading && (\n <span className=\"pr-2 text-[11px] text-muted-foreground\">\n Loading tools\n </span>\n )}\n {toolsError && (\n <span className=\"pr-2 text-[11px] text-destructive\">\n {toolsError}\n </span>\n )}\n </div>\n {advancedTab === \"config\" ? (\n <AdvancedChatConfig\n models={models}\n runtime={resolvedRuntime}\n onRuntimeChange={handleRuntimeChange}\n runtimeFamilies={runtimeFamilies}\n reasoningEfforts={reasoningEfforts}\n runtimeLocked={runtimeLocked}\n permissionMode={permissionMode}\n onPermissionModeChange={onPermissionModeChange}\n budget={budget}\n onBudgetChange={onBudgetChange}\n catalogLoading={catalogLoading}\n catalogError={catalogError}\n onCatalogRetry={onCatalogRetry}\n />\n ) : advancedTab === \"costs\" ? (\n <AdvancedCostsPanel costsApi={costsApi} threadId={threadId} />\n ) : (\n <ToolSchemaBrowser\n tools={tools}\n value={value}\n onRule={onRule}\n rules={rules}\n onRulesChange={onRulesChange}\n className=\"min-h-0 flex-1\"\n />\n )}\n </div>\n );\n}\n"],"names":["UiSliders","UiCoins","UiShield","useState","jsxs","Fragment","jsx","DropdownMenu","Button","Icon","Modal","useMemo","buildToolSchemaSections","ToolPolicyTree","DEFAULT_REASONING_EFFORTS","cn","AdvancedChatConfig","AdvancedCostsPanel","ToolSchemaBrowser"],"mappings":"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"}
@@ -1,13 +1,16 @@
1
- import { ChatBudgetConfig, ChatModel, ChatModelRuntime, ChatUsageSummary, ClaudePermissionMode, ToolAnnotations, ToolMeta, ToolPolicy } from '../chat/types.js';
1
+ import { ChatBudgetConfig, ChatModel, ChatModelRuntime, ClaudePermissionMode, ToolAnnotations, ToolMeta, ToolPolicy } from '../chat/types.js';
2
2
  import { SpecRuntimeFamily } from '../runtime/runtime-mode.js';
3
3
  import { CompactToolPreferencesList, CompactToolPreferencesListProps } from './ToolPreferencesList.js';
4
- import { PermissionRule } from '../chat/tool-policy.js';
4
+ import { PermissionPolicy, PermissionRule } from '../chat/tool-policy.js';
5
5
  export type { ClaudePermissionMode, ToolAnnotations, ToolMeta, ToolPolicy };
6
6
  export { CompactToolPreferencesList, type CompactToolPreferencesListProps };
7
7
  export type ToolPreferencesProps = {
8
8
  tools: ToolMeta[];
9
9
  value: Record<string, ToolPolicy>;
10
10
  onRule: (rule: PermissionRule) => void;
11
+ /** The user's saved rules, edited by the Permissions tab's strategy editor. */
12
+ rules?: PermissionPolicy | undefined;
13
+ onRulesChange?: ((rules: PermissionPolicy) => void) | undefined;
11
14
  models?: ChatModel[] | undefined;
12
15
  runtime?: ChatModelRuntime | undefined;
13
16
  onRuntimeChange?: ((runtime: ChatModelRuntime) => void) | undefined;
@@ -20,11 +23,8 @@ export type ToolPreferencesProps = {
20
23
  onReasoningEffortChange?: ((effort: string) => void) | undefined;
21
24
  permissionMode?: ClaudePermissionMode | undefined;
22
25
  onPermissionModeChange?: ((mode: ClaudePermissionMode) => void) | undefined;
23
- temperature?: number | undefined;
24
- onTemperatureChange?: ((temperature: number | undefined) => void) | undefined;
25
26
  budget?: ChatBudgetConfig | undefined;
26
27
  onBudgetChange?: ((budget: ChatBudgetConfig) => void) | undefined;
27
- usage?: ChatUsageSummary | null | undefined;
28
28
  /** Base sessions endpoint for the Costs tab, e.g. `/api/chat/sessions`. */
29
29
  costsApi?: string | undefined;
30
30
  /** Thread whose costs the Costs tab reports. */
@@ -36,5 +36,19 @@ export type ToolPreferencesProps = {
36
36
  onCatalogRetry?: (() => void) | undefined;
37
37
  className?: string;
38
38
  };
39
- export declare function ToolPreferences({ tools, value, onRule, models, runtime, onRuntimeChange, model, onModelChange, runtimeFamilies, reasoningEfforts, runtimeLocked, reasoningEffort, onReasoningEffortChange, permissionMode, onPermissionModeChange, temperature, onTemperatureChange, budget, onBudgetChange, usage, costsApi, threadId, toolsLoading, toolsError, catalogLoading, catalogError, onCatalogRetry, className, }: ToolPreferencesProps): import("react").JSX.Element;
39
+ export type AdvancedTab = "config" | "costs" | "permissions";
40
+ export declare function ToolPreferences({ className, ...props }: ToolPreferencesProps): import("react").JSX.Element;
41
+ export type ToolPreferencesMenuProps = {
42
+ tools: ToolMeta[];
43
+ value: Record<string, ToolPolicy>;
44
+ onRule: (rule: PermissionRule) => void;
45
+ /** Shows the Advanced action; omitted, the menu has no Advanced entry. */
46
+ onAdvanced?: (() => void) | undefined;
47
+ className?: string;
48
+ };
49
+ export declare function ToolPreferencesMenu({ tools, value, onRule, onAdvanced, className, }: ToolPreferencesMenuProps): import("react").JSX.Element;
50
+ export type AdvancedChatSettingsProps = ToolPreferencesProps & {
51
+ defaultTab?: AdvancedTab | undefined;
52
+ };
53
+ export declare function AdvancedChatSettings({ tools, value, onRule, rules, onRulesChange, models, runtime, onRuntimeChange, model, onModelChange, runtimeFamilies, reasoningEfforts, runtimeLocked, reasoningEffort, onReasoningEffortChange, permissionMode, onPermissionModeChange, budget, onBudgetChange, costsApi, threadId, toolsLoading, toolsError, catalogLoading, catalogError, onCatalogRetry, defaultTab, className, }: AdvancedChatSettingsProps): import("react").JSX.Element;
40
54
  //# sourceMappingURL=ToolPreferences.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolPreferences.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ToolPreferences.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolPreferences.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ToolPreferences.tsx"],"names":[],"mappings":"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"}