@schlessera/brain-ui-react 0.35.0 → 0.36.0

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 (755) hide show
  1. package/README.md +82 -4
  2. package/dist/components/activity/activity-page.d.ts +17 -5
  3. package/dist/components/activity/activity-page.d.ts.map +1 -1
  4. package/dist/components/activity/activity-page.js +144 -50
  5. package/dist/components/activity/activity-page.js.map +1 -1
  6. package/dist/components/activity/activity-run-detail.d.ts +16 -1
  7. package/dist/components/activity/activity-run-detail.d.ts.map +1 -1
  8. package/dist/components/activity/activity-run-detail.js +47 -4
  9. package/dist/components/activity/activity-run-detail.js.map +1 -1
  10. package/dist/components/activity/activity-run-list.d.ts +7 -1
  11. package/dist/components/activity/activity-run-list.d.ts.map +1 -1
  12. package/dist/components/activity/activity-run-list.js +16 -8
  13. package/dist/components/activity/activity-run-list.js.map +1 -1
  14. package/dist/components/activity/activity-views.d.ts +63 -0
  15. package/dist/components/activity/activity-views.d.ts.map +1 -0
  16. package/dist/components/activity/activity-views.js +52 -0
  17. package/dist/components/activity/activity-views.js.map +1 -0
  18. package/dist/components/activity/approval-card.d.ts +11 -0
  19. package/dist/components/activity/approval-card.d.ts.map +1 -0
  20. package/dist/components/activity/approval-card.js +46 -0
  21. package/dist/components/activity/approval-card.js.map +1 -0
  22. package/dist/components/activity/digest-card.d.ts +3 -0
  23. package/dist/components/activity/digest-card.d.ts.map +1 -1
  24. package/dist/components/activity/digest-card.js +20 -16
  25. package/dist/components/activity/digest-card.js.map +1 -1
  26. package/dist/components/activity/digest-summary.d.ts +19 -0
  27. package/dist/components/activity/digest-summary.d.ts.map +1 -0
  28. package/dist/components/activity/digest-summary.js +20 -0
  29. package/dist/components/activity/digest-summary.js.map +1 -0
  30. package/dist/components/activity/push-switch.d.ts +25 -0
  31. package/dist/components/activity/push-switch.d.ts.map +1 -0
  32. package/dist/components/activity/push-switch.js +14 -0
  33. package/dist/components/activity/push-switch.js.map +1 -0
  34. package/dist/components/activity/push-toggle.d.ts +7 -0
  35. package/dist/components/activity/push-toggle.d.ts.map +1 -1
  36. package/dist/components/activity/push-toggle.js +72 -47
  37. package/dist/components/activity/push-toggle.js.map +1 -1
  38. package/dist/components/activity/span-bits.d.ts.map +1 -1
  39. package/dist/components/activity/span-bits.js +9 -7
  40. package/dist/components/activity/span-bits.js.map +1 -1
  41. package/dist/components/chat/ask-user-card.d.ts +76 -3
  42. package/dist/components/chat/ask-user-card.d.ts.map +1 -1
  43. package/dist/components/chat/ask-user-card.js +208 -149
  44. package/dist/components/chat/ask-user-card.js.map +1 -1
  45. package/dist/components/chat/ask-user-typed.d.ts +42 -0
  46. package/dist/components/chat/ask-user-typed.d.ts.map +1 -0
  47. package/dist/components/chat/ask-user-typed.js +60 -0
  48. package/dist/components/chat/ask-user-typed.js.map +1 -0
  49. package/dist/components/chat/brain-markdown-links.d.ts +2 -1
  50. package/dist/components/chat/brain-markdown-links.d.ts.map +1 -1
  51. package/dist/components/chat/brain-markdown-links.js +3 -4
  52. package/dist/components/chat/brain-markdown-links.js.map +1 -1
  53. package/dist/components/chat/brain-markdown.d.ts.map +1 -1
  54. package/dist/components/chat/brain-markdown.js +4 -2
  55. package/dist/components/chat/brain-markdown.js.map +1 -1
  56. package/dist/components/chat/chat-page.d.ts.map +1 -1
  57. package/dist/components/chat/chat-page.js +24 -9
  58. package/dist/components/chat/chat-page.js.map +1 -1
  59. package/dist/components/chat/composer-view.d.ts +75 -0
  60. package/dist/components/chat/composer-view.d.ts.map +1 -0
  61. package/dist/components/chat/composer-view.js +31 -0
  62. package/dist/components/chat/composer-view.js.map +1 -0
  63. package/dist/components/chat/composer.d.ts +4 -0
  64. package/dist/components/chat/composer.d.ts.map +1 -1
  65. package/dist/components/chat/composer.js +76 -59
  66. package/dist/components/chat/composer.js.map +1 -1
  67. package/dist/components/chat/markdown-content.d.ts +16 -1
  68. package/dist/components/chat/markdown-content.d.ts.map +1 -1
  69. package/dist/components/chat/markdown-content.js +47 -3
  70. package/dist/components/chat/markdown-content.js.map +1 -1
  71. package/dist/components/chat/mermaid-block.d.ts +4 -0
  72. package/dist/components/chat/mermaid-block.d.ts.map +1 -1
  73. package/dist/components/chat/mermaid-block.js +13 -5
  74. package/dist/components/chat/mermaid-block.js.map +1 -1
  75. package/dist/components/chat/mermaid-share.d.ts +2 -1
  76. package/dist/components/chat/mermaid-share.d.ts.map +1 -1
  77. package/dist/components/chat/mermaid-share.js +7 -8
  78. package/dist/components/chat/mermaid-share.js.map +1 -1
  79. package/dist/components/chat/mermaid-viewer.d.ts.map +1 -1
  80. package/dist/components/chat/mermaid-viewer.js +3 -1
  81. package/dist/components/chat/mermaid-viewer.js.map +1 -1
  82. package/dist/components/chat/message-bubble.d.ts +8 -1
  83. package/dist/components/chat/message-bubble.d.ts.map +1 -1
  84. package/dist/components/chat/message-bubble.js +53 -24
  85. package/dist/components/chat/message-bubble.js.map +1 -1
  86. package/dist/components/chat/message-share.d.ts +2 -1
  87. package/dist/components/chat/message-share.d.ts.map +1 -1
  88. package/dist/components/chat/message-share.js +6 -7
  89. package/dist/components/chat/message-share.js.map +1 -1
  90. package/dist/components/chat/renderers/bind.d.ts +39 -0
  91. package/dist/components/chat/renderers/bind.d.ts.map +1 -0
  92. package/dist/components/chat/renderers/bind.js +43 -0
  93. package/dist/components/chat/renderers/bind.js.map +1 -0
  94. package/dist/components/chat/renderers/brain-ui-tools.d.ts +3 -0
  95. package/dist/components/chat/renderers/brain-ui-tools.d.ts.map +1 -0
  96. package/dist/components/chat/renderers/brain-ui-tools.js +41 -0
  97. package/dist/components/chat/renderers/brain-ui-tools.js.map +1 -0
  98. package/dist/components/chat/renderers/claude-tools.d.ts.map +1 -1
  99. package/dist/components/chat/renderers/claude-tools.js +3 -2
  100. package/dist/components/chat/renderers/claude-tools.js.map +1 -1
  101. package/dist/components/chat/renderers/index.d.ts +10 -2
  102. package/dist/components/chat/renderers/index.d.ts.map +1 -1
  103. package/dist/components/chat/renderers/index.js +15 -10
  104. package/dist/components/chat/renderers/index.js.map +1 -1
  105. package/dist/components/chat/session-drawer.d.ts +4 -0
  106. package/dist/components/chat/session-drawer.d.ts.map +1 -1
  107. package/dist/components/chat/session-drawer.js +32 -32
  108. package/dist/components/chat/session-drawer.js.map +1 -1
  109. package/dist/components/chat/session-list.d.ts +41 -0
  110. package/dist/components/chat/session-list.d.ts.map +1 -0
  111. package/dist/components/chat/session-list.js +10 -0
  112. package/dist/components/chat/session-list.js.map +1 -0
  113. package/dist/components/chat/share-block.d.ts.map +1 -1
  114. package/dist/components/chat/share-block.js +12 -11
  115. package/dist/components/chat/share-block.js.map +1 -1
  116. package/dist/components/chat/share-card.js +2 -2
  117. package/dist/components/chat/share-card.js.map +1 -1
  118. package/dist/components/chat/subagent-view.js +1 -1
  119. package/dist/components/chat/subagent-view.js.map +1 -1
  120. package/dist/components/chat/tool-call-timeline.d.ts.map +1 -1
  121. package/dist/components/chat/tool-call-timeline.js +37 -12
  122. package/dist/components/chat/tool-call-timeline.js.map +1 -1
  123. package/dist/components/chat/tool-cards/block-card.d.ts +28 -0
  124. package/dist/components/chat/tool-cards/block-card.d.ts.map +1 -0
  125. package/dist/components/chat/tool-cards/block-card.js +103 -0
  126. package/dist/components/chat/tool-cards/block-card.js.map +1 -0
  127. package/dist/components/chat/tool-cards/image-mask-card.d.ts +70 -0
  128. package/dist/components/chat/tool-cards/image-mask-card.d.ts.map +1 -0
  129. package/dist/components/chat/tool-cards/image-mask-card.js +142 -0
  130. package/dist/components/chat/tool-cards/image-mask-card.js.map +1 -0
  131. package/dist/components/chat/tool-cards/location-card.d.ts +45 -0
  132. package/dist/components/chat/tool-cards/location-card.d.ts.map +1 -0
  133. package/dist/components/chat/tool-cards/location-card.js +128 -0
  134. package/dist/components/chat/tool-cards/location-card.js.map +1 -0
  135. package/dist/components/chat/tool-views.d.ts +13 -2
  136. package/dist/components/chat/tool-views.d.ts.map +1 -1
  137. package/dist/components/chat/tool-views.js +20 -22
  138. package/dist/components/chat/tool-views.js.map +1 -1
  139. package/dist/components/chat/transcript-turn.d.ts +45 -0
  140. package/dist/components/chat/transcript-turn.d.ts.map +1 -0
  141. package/dist/components/chat/transcript-turn.js +25 -0
  142. package/dist/components/chat/transcript-turn.js.map +1 -0
  143. package/dist/components/chat/use-chat-commands.d.ts.map +1 -1
  144. package/dist/components/chat/use-chat-commands.js +13 -16
  145. package/dist/components/chat/use-chat-commands.js.map +1 -1
  146. package/dist/components/chat/welcome-state.d.ts +7 -0
  147. package/dist/components/chat/welcome-state.d.ts.map +1 -1
  148. package/dist/components/chat/welcome-state.js +13 -5
  149. package/dist/components/chat/welcome-state.js.map +1 -1
  150. package/dist/components/connectivity/connection-gate.d.ts.map +1 -1
  151. package/dist/components/connectivity/connection-gate.js +27 -21
  152. package/dist/components/connectivity/connection-gate.js.map +1 -1
  153. package/dist/components/connectivity/login-form.d.ts +31 -0
  154. package/dist/components/connectivity/login-form.d.ts.map +1 -0
  155. package/dist/components/connectivity/login-form.js +19 -0
  156. package/dist/components/connectivity/login-form.js.map +1 -0
  157. package/dist/components/connectivity/login-screen.d.ts +5 -2
  158. package/dist/components/connectivity/login-screen.d.ts.map +1 -1
  159. package/dist/components/connectivity/login-screen.js +41 -31
  160. package/dist/components/connectivity/login-screen.js.map +1 -1
  161. package/dist/components/dev/share-harness.js +1 -1
  162. package/dist/components/dev/share-harness.js.map +1 -1
  163. package/dist/components/files/file-panel.d.ts +1 -1
  164. package/dist/components/files/file-panel.d.ts.map +1 -1
  165. package/dist/components/files/file-panel.js +74 -0
  166. package/dist/components/files/file-panel.js.map +1 -1
  167. package/dist/components/files/file-tree-view.d.ts +45 -0
  168. package/dist/components/files/file-tree-view.d.ts.map +1 -0
  169. package/dist/components/files/file-tree-view.js +51 -0
  170. package/dist/components/files/file-tree-view.js.map +1 -0
  171. package/dist/components/files/file-tree.d.ts +6 -0
  172. package/dist/components/files/file-tree.d.ts.map +1 -1
  173. package/dist/components/files/file-tree.js +39 -43
  174. package/dist/components/files/file-tree.js.map +1 -1
  175. package/dist/components/files/file-viewer-binary.d.ts.map +1 -1
  176. package/dist/components/files/file-viewer-binary.js +3 -2
  177. package/dist/components/files/file-viewer-binary.js.map +1 -1
  178. package/dist/components/files/file-viewer-frame.d.ts +36 -0
  179. package/dist/components/files/file-viewer-frame.d.ts.map +1 -0
  180. package/dist/components/files/file-viewer-frame.js +26 -0
  181. package/dist/components/files/file-viewer-frame.js.map +1 -0
  182. package/dist/components/files/file-viewer.d.ts +5 -0
  183. package/dist/components/files/file-viewer.d.ts.map +1 -1
  184. package/dist/components/files/file-viewer.js +26 -32
  185. package/dist/components/files/file-viewer.js.map +1 -1
  186. package/dist/components/files/frontmatter-chips.d.ts +18 -0
  187. package/dist/components/files/frontmatter-chips.d.ts.map +1 -0
  188. package/dist/components/files/frontmatter-chips.js +11 -0
  189. package/dist/components/files/frontmatter-chips.js.map +1 -0
  190. package/dist/components/files/frontmatter-panel.d.ts +5 -1
  191. package/dist/components/files/frontmatter-panel.d.ts.map +1 -1
  192. package/dist/components/files/frontmatter-panel.js +7 -6
  193. package/dist/components/files/frontmatter-panel.js.map +1 -1
  194. package/dist/components/files/staleness.d.ts +18 -0
  195. package/dist/components/files/staleness.d.ts.map +1 -0
  196. package/dist/components/files/staleness.js +27 -0
  197. package/dist/components/files/staleness.js.map +1 -0
  198. package/dist/components/graph/graph-canvas.d.ts.map +1 -1
  199. package/dist/components/graph/graph-canvas.js +24 -1
  200. package/dist/components/graph/graph-canvas.js.map +1 -1
  201. package/dist/components/graph/graph-controls-column.d.ts +14 -0
  202. package/dist/components/graph/graph-controls-column.d.ts.map +1 -0
  203. package/dist/components/graph/graph-controls-column.js +44 -0
  204. package/dist/components/graph/graph-controls-column.js.map +1 -0
  205. package/dist/components/graph/graph-controls.d.ts +20 -5
  206. package/dist/components/graph/graph-controls.d.ts.map +1 -1
  207. package/dist/components/graph/graph-controls.js +58 -37
  208. package/dist/components/graph/graph-controls.js.map +1 -1
  209. package/dist/components/graph/graph-form.d.ts +82 -0
  210. package/dist/components/graph/graph-form.d.ts.map +1 -0
  211. package/dist/components/graph/graph-form.js +69 -0
  212. package/dist/components/graph/graph-form.js.map +1 -0
  213. package/dist/components/graph/graph-maintenance.d.ts.map +1 -1
  214. package/dist/components/graph/graph-maintenance.js +6 -10
  215. package/dist/components/graph/graph-maintenance.js.map +1 -1
  216. package/dist/components/graph/graph-node-rail.d.ts +13 -0
  217. package/dist/components/graph/graph-node-rail.d.ts.map +1 -0
  218. package/dist/components/graph/graph-node-rail.js +92 -0
  219. package/dist/components/graph/graph-node-rail.js.map +1 -0
  220. package/dist/components/graph/graph-page.d.ts +7 -0
  221. package/dist/components/graph/graph-page.d.ts.map +1 -1
  222. package/dist/components/graph/graph-page.js +102 -12
  223. package/dist/components/graph/graph-page.js.map +1 -1
  224. package/dist/components/graph/graph-scene.d.ts.map +1 -1
  225. package/dist/components/graph/graph-scene.js +100 -24
  226. package/dist/components/graph/graph-scene.js.map +1 -1
  227. package/dist/components/graph/lib/graph-helpers.d.ts +42 -12
  228. package/dist/components/graph/lib/graph-helpers.d.ts.map +1 -1
  229. package/dist/components/graph/lib/graph-helpers.js +33 -41
  230. package/dist/components/graph/lib/graph-helpers.js.map +1 -1
  231. package/dist/components/graph/node-card.d.ts +28 -0
  232. package/dist/components/graph/node-card.d.ts.map +1 -0
  233. package/dist/components/graph/node-card.js +7 -0
  234. package/dist/components/graph/node-card.js.map +1 -0
  235. package/dist/components/graph/node-popover.d.ts +6 -2
  236. package/dist/components/graph/node-popover.d.ts.map +1 -1
  237. package/dist/components/graph/node-popover.js +13 -31
  238. package/dist/components/graph/node-popover.js.map +1 -1
  239. package/dist/components/graph/use-graph-theme.d.ts +32 -4
  240. package/dist/components/graph/use-graph-theme.d.ts.map +1 -1
  241. package/dist/components/graph/use-graph-theme.js +44 -32
  242. package/dist/components/graph/use-graph-theme.js.map +1 -1
  243. package/dist/components/graph/use-node-actions.d.ts +26 -0
  244. package/dist/components/graph/use-node-actions.d.ts.map +1 -0
  245. package/dist/components/graph/use-node-actions.js +54 -0
  246. package/dist/components/graph/use-node-actions.js.map +1 -0
  247. package/dist/components/images/image-share.d.ts +2 -1
  248. package/dist/components/images/image-share.d.ts.map +1 -1
  249. package/dist/components/images/image-share.js +3 -3
  250. package/dist/components/images/image-share.js.map +1 -1
  251. package/dist/components/images/image-viewer.d.ts.map +1 -1
  252. package/dist/components/images/image-viewer.js +3 -1
  253. package/dist/components/images/image-viewer.js.map +1 -1
  254. package/dist/components/images/mask-editor.d.ts.map +1 -1
  255. package/dist/components/images/mask-editor.js +7 -5
  256. package/dist/components/images/mask-editor.js.map +1 -1
  257. package/dist/components/layout/app-shell.d.ts.map +1 -1
  258. package/dist/components/layout/app-shell.js +4 -1
  259. package/dist/components/layout/app-shell.js.map +1 -1
  260. package/dist/components/layout/desktop-palette.d.ts +23 -0
  261. package/dist/components/layout/desktop-palette.d.ts.map +1 -0
  262. package/dist/components/layout/desktop-palette.js +132 -0
  263. package/dist/components/layout/desktop-palette.js.map +1 -0
  264. package/dist/components/layout/key-cap.d.ts +9 -0
  265. package/dist/components/layout/key-cap.d.ts.map +1 -0
  266. package/dist/components/layout/key-cap.js +10 -0
  267. package/dist/components/layout/key-cap.js.map +1 -0
  268. package/dist/components/layout/mobile-tab-bar.d.ts +13 -0
  269. package/dist/components/layout/mobile-tab-bar.d.ts.map +1 -1
  270. package/dist/components/layout/mobile-tab-bar.js +58 -47
  271. package/dist/components/layout/mobile-tab-bar.js.map +1 -1
  272. package/dist/components/layout/shortcut-switch.d.ts +13 -0
  273. package/dist/components/layout/shortcut-switch.d.ts.map +1 -0
  274. package/dist/components/layout/shortcut-switch.js +22 -0
  275. package/dist/components/layout/shortcut-switch.js.map +1 -0
  276. package/dist/components/layout/side-rail.d.ts +24 -0
  277. package/dist/components/layout/side-rail.d.ts.map +1 -1
  278. package/dist/components/layout/side-rail.js +65 -27
  279. package/dist/components/layout/side-rail.js.map +1 -1
  280. package/dist/components/layout/slide-panel.d.ts +12 -2
  281. package/dist/components/layout/slide-panel.d.ts.map +1 -1
  282. package/dist/components/layout/slide-panel.js +11 -2
  283. package/dist/components/layout/slide-panel.js.map +1 -1
  284. package/dist/components/layout/theme.d.ts +22 -0
  285. package/dist/components/layout/theme.d.ts.map +1 -0
  286. package/dist/components/layout/theme.js +44 -0
  287. package/dist/components/layout/theme.js.map +1 -0
  288. package/dist/components/quick-actions/add-form.d.ts +44 -0
  289. package/dist/components/quick-actions/add-form.d.ts.map +1 -0
  290. package/dist/components/quick-actions/add-form.js +30 -0
  291. package/dist/components/quick-actions/add-form.js.map +1 -0
  292. package/dist/components/quick-actions/add-modal.d.ts +7 -0
  293. package/dist/components/quick-actions/add-modal.d.ts.map +1 -1
  294. package/dist/components/quick-actions/add-modal.js +23 -20
  295. package/dist/components/quick-actions/add-modal.js.map +1 -1
  296. package/dist/components/quick-actions/search-modal.d.ts.map +1 -1
  297. package/dist/components/quick-actions/search-modal.js +4 -3
  298. package/dist/components/quick-actions/search-modal.js.map +1 -1
  299. package/dist/components/quick-actions/streaming-modal.d.ts +6 -0
  300. package/dist/components/quick-actions/streaming-modal.d.ts.map +1 -1
  301. package/dist/components/quick-actions/streaming-modal.js +39 -17
  302. package/dist/components/quick-actions/streaming-modal.js.map +1 -1
  303. package/dist/components/quick-actions/streaming-output.d.ts +38 -0
  304. package/dist/components/quick-actions/streaming-output.d.ts.map +1 -0
  305. package/dist/components/quick-actions/streaming-output.js +22 -0
  306. package/dist/components/quick-actions/streaming-output.js.map +1 -0
  307. package/dist/components/quick-actions/whatsup-modal.d.ts +5 -0
  308. package/dist/components/quick-actions/whatsup-modal.d.ts.map +1 -1
  309. package/dist/components/quick-actions/whatsup-modal.js +36 -10
  310. package/dist/components/quick-actions/whatsup-modal.js.map +1 -1
  311. package/dist/components/settings/devices-agents-tab.d.ts +6 -1
  312. package/dist/components/settings/devices-agents-tab.d.ts.map +1 -1
  313. package/dist/components/settings/devices-agents-tab.js +55 -20
  314. package/dist/components/settings/devices-agents-tab.js.map +1 -1
  315. package/dist/components/settings/models-list.d.ts +39 -0
  316. package/dist/components/settings/models-list.d.ts.map +1 -0
  317. package/dist/components/settings/models-list.js +72 -0
  318. package/dist/components/settings/models-list.js.map +1 -0
  319. package/dist/components/settings/models-tab.d.ts +4 -0
  320. package/dist/components/settings/models-tab.d.ts.map +1 -1
  321. package/dist/components/settings/models-tab.js +52 -102
  322. package/dist/components/settings/models-tab.js.map +1 -1
  323. package/dist/components/settings/one-time-agent-credential.js +1 -1
  324. package/dist/components/settings/one-time-agent-credential.js.map +1 -1
  325. package/dist/components/settings/passkey-list.d.ts +35 -0
  326. package/dist/components/settings/passkey-list.d.ts.map +1 -0
  327. package/dist/components/settings/passkey-list.js +34 -0
  328. package/dist/components/settings/passkey-list.js.map +1 -0
  329. package/dist/components/settings/passkey-tab.d.ts +3 -0
  330. package/dist/components/settings/passkey-tab.d.ts.map +1 -1
  331. package/dist/components/settings/passkey-tab.js +53 -45
  332. package/dist/components/settings/passkey-tab.js.map +1 -1
  333. package/dist/components/settings/pi-accounts-list.d.ts +27 -0
  334. package/dist/components/settings/pi-accounts-list.d.ts.map +1 -0
  335. package/dist/components/settings/pi-accounts-list.js +15 -0
  336. package/dist/components/settings/pi-accounts-list.js.map +1 -0
  337. package/dist/components/settings/pi-accounts.d.ts +3 -0
  338. package/dist/components/settings/pi-accounts.d.ts.map +1 -1
  339. package/dist/components/settings/pi-accounts.js +73 -55
  340. package/dist/components/settings/pi-accounts.js.map +1 -1
  341. package/dist/components/settings/principal-list.d.ts +37 -0
  342. package/dist/components/settings/principal-list.d.ts.map +1 -0
  343. package/dist/components/settings/principal-list.js +18 -0
  344. package/dist/components/settings/principal-list.js.map +1 -0
  345. package/dist/components/settings/settings-panel.d.ts +10 -3
  346. package/dist/components/settings/settings-panel.d.ts.map +1 -1
  347. package/dist/components/settings/settings-panel.js +69 -8
  348. package/dist/components/settings/settings-panel.js.map +1 -1
  349. package/dist/components/settings/skills-list.d.ts +53 -0
  350. package/dist/components/settings/skills-list.d.ts.map +1 -0
  351. package/dist/components/settings/skills-list.js +28 -0
  352. package/dist/components/settings/skills-list.js.map +1 -0
  353. package/dist/components/settings/skills-tab.d.ts.map +1 -1
  354. package/dist/components/settings/skills-tab.js +65 -38
  355. package/dist/components/settings/skills-tab.js.map +1 -1
  356. package/dist/components/settings/tool-permissions-list.d.ts +18 -0
  357. package/dist/components/settings/tool-permissions-list.d.ts.map +1 -0
  358. package/dist/components/settings/tool-permissions-list.js +6 -0
  359. package/dist/components/settings/tool-permissions-list.js.map +1 -0
  360. package/dist/components/settings/tool-permissions.d.ts +2 -1
  361. package/dist/components/settings/tool-permissions.d.ts.map +1 -1
  362. package/dist/components/settings/tool-permissions.js +33 -16
  363. package/dist/components/settings/tool-permissions.js.map +1 -1
  364. package/dist/components/settings/web-search-chain.d.ts +41 -0
  365. package/dist/components/settings/web-search-chain.d.ts.map +1 -0
  366. package/dist/components/settings/web-search-chain.js +47 -0
  367. package/dist/components/settings/web-search-chain.js.map +1 -0
  368. package/dist/components/settings/web-search-settings.d.ts +4 -7
  369. package/dist/components/settings/web-search-settings.d.ts.map +1 -1
  370. package/dist/components/settings/web-search-settings.js +54 -76
  371. package/dist/components/settings/web-search-settings.js.map +1 -1
  372. package/dist/components/share/share-menu.d.ts.map +1 -1
  373. package/dist/components/share/share-menu.js +24 -4
  374. package/dist/components/share/share-menu.js.map +1 -1
  375. package/dist/components/voice/dictation-sheet.js +3 -3
  376. package/dist/components/voice/dictation-sheet.js.map +1 -1
  377. package/dist/components/voice/mic-button.js +1 -1
  378. package/dist/components/voice/mic-button.js.map +1 -1
  379. package/dist/components/voice/review-card.js +1 -1
  380. package/dist/components/voice/review-card.js.map +1 -1
  381. package/dist/config.d.ts +5 -2
  382. package/dist/config.d.ts.map +1 -1
  383. package/dist/config.js +15 -5
  384. package/dist/config.js.map +1 -1
  385. package/dist/connection.d.ts +12 -0
  386. package/dist/connection.d.ts.map +1 -0
  387. package/dist/connection.js +421 -0
  388. package/dist/connection.js.map +1 -0
  389. package/dist/default-root.d.ts +3 -0
  390. package/dist/default-root.d.ts.map +1 -0
  391. package/dist/default-root.js +16 -0
  392. package/dist/default-root.js.map +1 -0
  393. package/dist/hooks/use-color-scheme.d.ts +14 -0
  394. package/dist/hooks/use-color-scheme.d.ts.map +1 -0
  395. package/dist/hooks/use-color-scheme.js +37 -0
  396. package/dist/hooks/use-color-scheme.js.map +1 -0
  397. package/dist/hooks/use-hash-routes.d.ts.map +1 -1
  398. package/dist/hooks/use-hash-routes.js +4 -2
  399. package/dist/hooks/use-hash-routes.js.map +1 -1
  400. package/dist/hooks/use-media-query.d.ts +7 -0
  401. package/dist/hooks/use-media-query.d.ts.map +1 -0
  402. package/dist/hooks/use-media-query.js +34 -0
  403. package/dist/hooks/use-media-query.js.map +1 -0
  404. package/dist/hooks/use-share-intake.d.ts.map +1 -1
  405. package/dist/hooks/use-share-intake.js +37 -12
  406. package/dist/hooks/use-share-intake.js.map +1 -1
  407. package/dist/hooks/use-vpn-status.d.ts.map +1 -1
  408. package/dist/hooks/use-vpn-status.js +17 -18
  409. package/dist/hooks/use-vpn-status.js.map +1 -1
  410. package/dist/hooks/use-websocket.d.ts +5 -24
  411. package/dist/hooks/use-websocket.d.ts.map +1 -1
  412. package/dist/hooks/use-websocket.js +11 -384
  413. package/dist/hooks/use-websocket.js.map +1 -1
  414. package/dist/hooks/websocket-handlers/activity.d.ts +2 -2
  415. package/dist/hooks/websocket-handlers/activity.d.ts.map +1 -1
  416. package/dist/hooks/websocket-handlers/activity.js +4 -5
  417. package/dist/hooks/websocket-handlers/activity.js.map +1 -1
  418. package/dist/hooks/websocket-handlers/chat.d.ts +1 -0
  419. package/dist/hooks/websocket-handlers/chat.d.ts.map +1 -1
  420. package/dist/hooks/websocket-handlers/chat.js +27 -5
  421. package/dist/hooks/websocket-handlers/chat.js.map +1 -1
  422. package/dist/hooks/websocket-handlers/connection.d.ts.map +1 -1
  423. package/dist/hooks/websocket-handlers/connection.js +4 -6
  424. package/dist/hooks/websocket-handlers/connection.js.map +1 -1
  425. package/dist/hooks/websocket-handlers/mask.d.ts +1 -1
  426. package/dist/hooks/websocket-handlers/mask.d.ts.map +1 -1
  427. package/dist/hooks/websocket-handlers/mask.js +2 -3
  428. package/dist/hooks/websocket-handlers/mask.js.map +1 -1
  429. package/dist/hooks/websocket-handlers/provider.d.ts.map +1 -1
  430. package/dist/hooks/websocket-handlers/provider.js +4 -6
  431. package/dist/hooks/websocket-handlers/provider.js.map +1 -1
  432. package/dist/hooks/websocket-handlers/types.d.ts +6 -2
  433. package/dist/hooks/websocket-handlers/types.d.ts.map +1 -1
  434. package/dist/index.d.ts +5 -3
  435. package/dist/index.d.ts.map +1 -1
  436. package/dist/index.js +6 -3
  437. package/dist/index.js.map +1 -1
  438. package/dist/lib/api-client.d.ts +289 -0
  439. package/dist/lib/api-client.d.ts.map +1 -1
  440. package/dist/lib/api-client.js +243 -224
  441. package/dist/lib/api-client.js.map +1 -1
  442. package/dist/lib/backend.d.ts +19 -2
  443. package/dist/lib/backend.d.ts.map +1 -1
  444. package/dist/lib/backend.js +15 -9
  445. package/dist/lib/backend.js.map +1 -1
  446. package/dist/lib/diff.d.ts +8 -10
  447. package/dist/lib/diff.d.ts.map +1 -1
  448. package/dist/lib/diff.js +26 -53
  449. package/dist/lib/diff.js.map +1 -1
  450. package/dist/lib/light-dark.d.ts +37 -0
  451. package/dist/lib/light-dark.d.ts.map +1 -0
  452. package/dist/lib/light-dark.js +83 -0
  453. package/dist/lib/light-dark.js.map +1 -0
  454. package/dist/lib/mermaid-theme.d.ts +7 -2
  455. package/dist/lib/mermaid-theme.d.ts.map +1 -1
  456. package/dist/lib/mermaid-theme.js +125 -203
  457. package/dist/lib/mermaid-theme.js.map +1 -1
  458. package/dist/lib/passkeys.d.ts +6 -3
  459. package/dist/lib/passkeys.d.ts.map +1 -1
  460. package/dist/lib/passkeys.js +10 -4
  461. package/dist/lib/passkeys.js.map +1 -1
  462. package/dist/lib/push-registration.d.ts +4 -1
  463. package/dist/lib/push-registration.d.ts.map +1 -1
  464. package/dist/lib/push-registration.js +20 -2
  465. package/dist/lib/push-registration.js.map +1 -1
  466. package/dist/lib/share-intake.d.ts +2 -1
  467. package/dist/lib/share-intake.d.ts.map +1 -1
  468. package/dist/lib/share-intake.js +3 -3
  469. package/dist/lib/share-intake.js.map +1 -1
  470. package/dist/lib/share.d.ts +4 -3
  471. package/dist/lib/share.d.ts.map +1 -1
  472. package/dist/lib/share.js +6 -7
  473. package/dist/lib/share.js.map +1 -1
  474. package/dist/lib/single-key.d.ts +30 -0
  475. package/dist/lib/single-key.d.ts.map +1 -0
  476. package/dist/lib/single-key.js +45 -0
  477. package/dist/lib/single-key.js.map +1 -0
  478. package/dist/lib/tool-names.d.ts +8 -6
  479. package/dist/lib/tool-names.d.ts.map +1 -1
  480. package/dist/lib/tool-names.js +17 -7
  481. package/dist/lib/tool-names.js.map +1 -1
  482. package/dist/root-context.d.ts +229 -0
  483. package/dist/root-context.d.ts.map +1 -0
  484. package/dist/root-context.js +33 -0
  485. package/dist/root-context.js.map +1 -0
  486. package/dist/root.d.ts +38 -0
  487. package/dist/root.d.ts.map +1 -0
  488. package/dist/root.js +47 -0
  489. package/dist/root.js.map +1 -0
  490. package/dist/stores/activity-state.d.ts +29 -0
  491. package/dist/stores/activity-state.d.ts.map +1 -0
  492. package/dist/stores/activity-state.js +282 -0
  493. package/dist/stores/activity-state.js.map +1 -0
  494. package/dist/stores/activity-store.d.ts +10 -41
  495. package/dist/stores/activity-store.d.ts.map +1 -1
  496. package/dist/stores/activity-store.js +9 -271
  497. package/dist/stores/activity-store.js.map +1 -1
  498. package/dist/stores/chat-state.d.ts +212 -0
  499. package/dist/stores/chat-state.d.ts.map +1 -0
  500. package/dist/stores/chat-state.js +466 -0
  501. package/dist/stores/chat-state.js.map +1 -0
  502. package/dist/stores/chat-store.d.ts +4 -162
  503. package/dist/stores/chat-store.d.ts.map +1 -1
  504. package/dist/stores/chat-store.js +7 -418
  505. package/dist/stores/chat-store.js.map +1 -1
  506. package/dist/stores/connection-state.d.ts +40 -0
  507. package/dist/stores/connection-state.d.ts.map +1 -0
  508. package/dist/stores/connection-state.js +30 -0
  509. package/dist/stores/connection-state.js.map +1 -0
  510. package/dist/stores/connection-store.d.ts +4 -40
  511. package/dist/stores/connection-store.d.ts.map +1 -1
  512. package/dist/stores/connection-store.js +7 -27
  513. package/dist/stores/connection-store.js.map +1 -1
  514. package/dist/stores/create-stores.d.ts +23 -0
  515. package/dist/stores/create-stores.d.ts.map +1 -0
  516. package/dist/stores/create-stores.js +28 -0
  517. package/dist/stores/create-stores.js.map +1 -0
  518. package/dist/stores/file-state.d.ts +53 -0
  519. package/dist/stores/file-state.d.ts.map +1 -0
  520. package/dist/stores/file-state.js +341 -0
  521. package/dist/stores/file-state.js.map +1 -0
  522. package/dist/stores/file-store.d.ts +4 -52
  523. package/dist/stores/file-store.d.ts.map +1 -1
  524. package/dist/stores/file-store.js +7 -336
  525. package/dist/stores/file-store.js.map +1 -1
  526. package/dist/stores/graph-state.d.ts +95 -0
  527. package/dist/stores/graph-state.d.ts.map +1 -0
  528. package/dist/stores/graph-state.js +252 -0
  529. package/dist/stores/graph-state.js.map +1 -0
  530. package/dist/stores/graph-store.d.ts +7 -83
  531. package/dist/stores/graph-store.d.ts.map +1 -1
  532. package/dist/stores/graph-store.js +8 -249
  533. package/dist/stores/graph-store.js.map +1 -1
  534. package/dist/stores/mask-state.d.ts +21 -0
  535. package/dist/stores/mask-state.d.ts.map +1 -0
  536. package/dist/stores/mask-state.js +9 -0
  537. package/dist/stores/mask-state.js.map +1 -0
  538. package/dist/stores/mask-store.d.ts +4 -21
  539. package/dist/stores/mask-store.d.ts.map +1 -1
  540. package/dist/stores/mask-store.js +7 -6
  541. package/dist/stores/mask-store.js.map +1 -1
  542. package/dist/stores/principal-state.d.ts +16 -0
  543. package/dist/stores/principal-state.d.ts.map +1 -0
  544. package/dist/stores/principal-state.js +31 -0
  545. package/dist/stores/principal-state.js.map +1 -0
  546. package/dist/stores/principal-store.d.ts +4 -15
  547. package/dist/stores/principal-store.d.ts.map +1 -1
  548. package/dist/stores/principal-store.js +7 -28
  549. package/dist/stores/principal-store.js.map +1 -1
  550. package/dist/stores/provider-state.d.ts +24 -0
  551. package/dist/stores/provider-state.d.ts.map +1 -0
  552. package/dist/stores/provider-state.js +68 -0
  553. package/dist/stores/provider-state.js.map +1 -0
  554. package/dist/stores/provider-store.d.ts +4 -23
  555. package/dist/stores/provider-store.d.ts.map +1 -1
  556. package/dist/stores/provider-store.js +7 -64
  557. package/dist/stores/provider-store.js.map +1 -1
  558. package/dist/stores/share-state.d.ts +29 -0
  559. package/dist/stores/share-state.d.ts.map +1 -0
  560. package/dist/stores/share-state.js +21 -0
  561. package/dist/stores/share-state.js.map +1 -0
  562. package/dist/stores/share-store.d.ts +4 -28
  563. package/dist/stores/share-store.d.ts.map +1 -1
  564. package/dist/stores/share-store.js +7 -18
  565. package/dist/stores/share-store.js.map +1 -1
  566. package/dist/stores/store-environment.d.ts +10 -0
  567. package/dist/stores/store-environment.d.ts.map +1 -0
  568. package/dist/stores/store-environment.js +2 -0
  569. package/dist/stores/store-environment.js.map +1 -0
  570. package/dist/stores/ui-state.d.ts +71 -0
  571. package/dist/stores/ui-state.d.ts.map +1 -0
  572. package/dist/stores/ui-state.js +58 -0
  573. package/dist/stores/ui-state.js.map +1 -0
  574. package/dist/stores/ui-store.d.ts +4 -45
  575. package/dist/stores/ui-store.d.ts.map +1 -1
  576. package/dist/stores/ui-store.js +7 -36
  577. package/dist/stores/ui-store.js.map +1 -1
  578. package/dist/styles.css +1 -1
  579. package/dist/theme.css +150 -97
  580. package/dist/voice/asr-clients.d.ts +2 -1
  581. package/dist/voice/asr-clients.d.ts.map +1 -1
  582. package/dist/voice/asr-clients.js +16 -17
  583. package/dist/voice/asr-clients.js.map +1 -1
  584. package/dist/voice/use-dictation.d.ts.map +1 -1
  585. package/dist/voice/use-dictation.js +12 -8
  586. package/dist/voice/use-dictation.js.map +1 -1
  587. package/dist/voice/voice-state.d.ts +25 -0
  588. package/dist/voice/voice-state.d.ts.map +1 -0
  589. package/dist/voice/voice-state.js +29 -0
  590. package/dist/voice/voice-state.js.map +1 -0
  591. package/dist/voice/voice-store.d.ts +4 -25
  592. package/dist/voice/voice-store.d.ts.map +1 -1
  593. package/dist/voice/voice-store.js +7 -26
  594. package/dist/voice/voice-store.js.map +1 -1
  595. package/package.json +3 -2
  596. package/src/components/activity/activity-page.tsx +334 -160
  597. package/src/components/activity/activity-run-detail.tsx +81 -47
  598. package/src/components/activity/activity-run-list.tsx +27 -59
  599. package/src/components/activity/activity-views.tsx +155 -0
  600. package/src/components/activity/approval-card.tsx +80 -0
  601. package/src/components/activity/digest-card.tsx +25 -61
  602. package/src/components/activity/digest-summary.tsx +52 -0
  603. package/src/components/activity/push-switch.tsx +62 -0
  604. package/src/components/activity/push-toggle.tsx +51 -81
  605. package/src/components/activity/span-bits.tsx +8 -7
  606. package/src/components/chat/ask-user-card.tsx +292 -356
  607. package/src/components/chat/ask-user-typed.ts +77 -0
  608. package/src/components/chat/brain-markdown-links.tsx +4 -4
  609. package/src/components/chat/brain-markdown.tsx +4 -2
  610. package/src/components/chat/chat-page.tsx +38 -9
  611. package/src/components/chat/composer-view.tsx +194 -0
  612. package/src/components/chat/composer.tsx +117 -296
  613. package/src/components/chat/markdown-content.tsx +53 -2
  614. package/src/components/chat/mermaid-block.tsx +13 -5
  615. package/src/components/chat/mermaid-share.ts +8 -7
  616. package/src/components/chat/mermaid-viewer.tsx +3 -1
  617. package/src/components/chat/message-bubble.tsx +78 -94
  618. package/src/components/chat/message-share.ts +7 -7
  619. package/src/components/chat/renderers/bind.tsx +94 -0
  620. package/src/components/chat/renderers/brain-ui-tools.tsx +56 -0
  621. package/src/components/chat/renderers/claude-tools.tsx +3 -2
  622. package/src/components/chat/renderers/index.ts +15 -10
  623. package/src/components/chat/session-drawer.tsx +41 -138
  624. package/src/components/chat/session-list.tsx +113 -0
  625. package/src/components/chat/share-block.tsx +16 -12
  626. package/src/components/chat/share-card.tsx +2 -2
  627. package/src/components/chat/subagent-view.tsx +4 -4
  628. package/src/components/chat/tool-call-timeline.tsx +59 -22
  629. package/src/components/chat/tool-cards/block-card.tsx +145 -0
  630. package/src/components/chat/tool-cards/image-mask-card.tsx +214 -0
  631. package/src/components/chat/tool-cards/location-card.tsx +159 -0
  632. package/src/components/chat/tool-views.tsx +21 -60
  633. package/src/components/chat/transcript-turn.tsx +108 -0
  634. package/src/components/chat/use-chat-commands.ts +14 -16
  635. package/src/components/chat/welcome-state.tsx +36 -91
  636. package/src/components/connectivity/connection-gate.tsx +32 -24
  637. package/src/components/connectivity/login-form.tsx +122 -0
  638. package/src/components/connectivity/login-screen.tsx +45 -100
  639. package/src/components/dev/share-harness.tsx +2 -2
  640. package/src/components/files/file-panel.tsx +168 -0
  641. package/src/components/files/file-tree-view.tsx +127 -0
  642. package/src/components/files/file-tree.tsx +55 -109
  643. package/src/components/files/file-viewer-binary.tsx +3 -2
  644. package/src/components/files/file-viewer-frame.tsx +113 -0
  645. package/src/components/files/file-viewer.tsx +40 -95
  646. package/src/components/files/frontmatter-chips.tsx +42 -0
  647. package/src/components/files/frontmatter-panel.tsx +6 -71
  648. package/src/components/files/staleness.ts +29 -0
  649. package/src/components/graph/graph-canvas.tsx +24 -1
  650. package/src/components/graph/graph-controls-column.tsx +92 -0
  651. package/src/components/graph/graph-controls.tsx +83 -127
  652. package/src/components/graph/graph-form.tsx +183 -0
  653. package/src/components/graph/graph-maintenance.tsx +9 -14
  654. package/src/components/graph/graph-node-rail.tsx +147 -0
  655. package/src/components/graph/graph-page.tsx +189 -49
  656. package/src/components/graph/graph-scene.tsx +200 -30
  657. package/src/components/graph/lib/graph-helpers.ts +65 -43
  658. package/src/components/graph/node-card.tsx +64 -0
  659. package/src/components/graph/node-popover.tsx +28 -117
  660. package/src/components/graph/use-graph-theme.ts +69 -32
  661. package/src/components/graph/use-node-actions.ts +56 -0
  662. package/src/components/images/image-share.ts +4 -2
  663. package/src/components/images/image-viewer.tsx +3 -1
  664. package/src/components/images/mask-editor.tsx +7 -4
  665. package/src/components/layout/app-shell.tsx +5 -1
  666. package/src/components/layout/desktop-palette.tsx +151 -0
  667. package/src/components/layout/key-cap.tsx +15 -0
  668. package/src/components/layout/mobile-tab-bar.tsx +80 -157
  669. package/src/components/layout/shortcut-switch.tsx +32 -0
  670. package/src/components/layout/side-rail.tsx +70 -150
  671. package/src/components/layout/slide-panel.tsx +29 -2
  672. package/src/components/layout/theme.tsx +67 -0
  673. package/src/components/quick-actions/add-form.tsx +188 -0
  674. package/src/components/quick-actions/add-modal.tsx +32 -153
  675. package/src/components/quick-actions/search-modal.tsx +5 -3
  676. package/src/components/quick-actions/streaming-modal.tsx +42 -71
  677. package/src/components/quick-actions/streaming-output.tsx +112 -0
  678. package/src/components/quick-actions/whatsup-modal.tsx +38 -60
  679. package/src/components/settings/devices-agents-tab.tsx +60 -152
  680. package/src/components/settings/models-list.tsx +299 -0
  681. package/src/components/settings/models-tab.tsx +63 -337
  682. package/src/components/settings/one-time-agent-credential.tsx +1 -1
  683. package/src/components/settings/passkey-list.tsx +201 -0
  684. package/src/components/settings/passkey-tab.tsx +53 -197
  685. package/src/components/settings/pi-accounts-list.tsx +128 -0
  686. package/src/components/settings/pi-accounts.tsx +71 -170
  687. package/src/components/settings/principal-list.tsx +172 -0
  688. package/src/components/settings/settings-panel.tsx +232 -21
  689. package/src/components/settings/skills-list.tsx +276 -0
  690. package/src/components/settings/skills-tab.tsx +82 -269
  691. package/src/components/settings/tool-permissions-list.tsx +54 -0
  692. package/src/components/settings/tool-permissions.tsx +27 -46
  693. package/src/components/settings/web-search-chain.tsx +300 -0
  694. package/src/components/settings/web-search-settings.tsx +58 -328
  695. package/src/components/share/share-menu.tsx +19 -4
  696. package/src/components/voice/dictation-sheet.tsx +5 -5
  697. package/src/components/voice/mic-button.tsx +1 -1
  698. package/src/components/voice/review-card.tsx +1 -1
  699. package/src/config.ts +21 -7
  700. package/src/connection.ts +443 -0
  701. package/src/default-root.ts +16 -0
  702. package/src/hooks/use-color-scheme.ts +36 -0
  703. package/src/hooks/use-hash-routes.ts +4 -2
  704. package/src/hooks/use-media-query.ts +32 -0
  705. package/src/hooks/use-share-intake.ts +32 -12
  706. package/src/hooks/use-vpn-status.ts +18 -17
  707. package/src/hooks/use-websocket.ts +12 -428
  708. package/src/hooks/websocket-handlers/activity.ts +4 -5
  709. package/src/hooks/websocket-handlers/chat.ts +26 -5
  710. package/src/hooks/websocket-handlers/connection.ts +4 -6
  711. package/src/hooks/websocket-handlers/mask.ts +2 -3
  712. package/src/hooks/websocket-handlers/provider.ts +4 -6
  713. package/src/hooks/websocket-handlers/types.ts +6 -2
  714. package/src/index.ts +7 -3
  715. package/src/lib/api-client.ts +426 -384
  716. package/src/lib/backend.ts +20 -10
  717. package/src/lib/diff.ts +28 -62
  718. package/src/lib/light-dark.ts +83 -0
  719. package/src/lib/mermaid-theme.ts +183 -214
  720. package/src/lib/passkeys.ts +12 -4
  721. package/src/lib/push-registration.ts +19 -2
  722. package/src/lib/share-intake.ts +6 -3
  723. package/src/lib/share.ts +7 -4
  724. package/src/lib/single-key.ts +47 -0
  725. package/src/lib/tool-names.ts +31 -8
  726. package/src/root-context.tsx +40 -0
  727. package/src/root.ts +83 -0
  728. package/src/stores/activity-state.ts +295 -0
  729. package/src/stores/activity-store.ts +11 -285
  730. package/src/stores/chat-state.ts +795 -0
  731. package/src/stores/chat-store.ts +11 -705
  732. package/src/stores/connection-state.ts +78 -0
  733. package/src/stores/connection-store.ts +11 -76
  734. package/src/stores/create-stores.ts +31 -0
  735. package/src/stores/file-state.ts +399 -0
  736. package/src/stores/file-store.ts +9 -390
  737. package/src/stores/graph-state.ts +368 -0
  738. package/src/stores/graph-store.ts +10 -355
  739. package/src/stores/mask-state.ts +30 -0
  740. package/src/stores/mask-store.ts +10 -27
  741. package/src/stores/principal-state.ts +42 -0
  742. package/src/stores/principal-store.ts +10 -37
  743. package/src/stores/provider-state.ts +103 -0
  744. package/src/stores/provider-store.ts +10 -95
  745. package/src/stores/share-state.ts +56 -0
  746. package/src/stores/share-store.ts +11 -54
  747. package/src/stores/store-environment.ts +10 -0
  748. package/src/stores/ui-state.ts +143 -0
  749. package/src/stores/ui-store.ts +11 -93
  750. package/src/styles.css +4 -1
  751. package/src/theme.css +150 -97
  752. package/src/voice/asr-clients.ts +17 -17
  753. package/src/voice/use-dictation.ts +11 -8
  754. package/src/voice/voice-state.ts +57 -0
  755. package/src/voice/voice-store.ts +11 -55
@@ -1,8 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { Check, Download, Loader2, Pencil, Plus, Power, Trash2, Upload, X } from "lucide-react";
4
- import { api } from "../../lib/api-client.js";
5
- import { cn } from "../../lib/utils.js";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { useBrainUiRoot } from "../../root-context.js";
4
+ import { SkillEditor, SkillsList } from "./skills-list.js";
6
5
  /**
7
6
  * Settings → Skills: manage the user's CUSTOM skills — create, edit,
8
7
  * enable/disable, remove — plus a read-only view of the built-ins brain-kit
@@ -13,6 +12,10 @@ import { cn } from "../../lib/utils.js";
13
12
  *
14
13
  * For guided authoring there is a better surface than this editor: the
15
14
  * `add-skill` skill — ask the agent in chat.
15
+ *
16
+ * This is the container (S6): the list request, the `active`-gated reload,
17
+ * every mutation and its generation guard, and the editor's fetch live here;
18
+ * `SkillsList` and `SkillEditor` draw from props.
16
19
  */
17
20
  const TEMPLATE = (name) => `---
18
21
  name: ${name}
@@ -24,6 +27,10 @@ description: Use when … (write the TRIGGER, not a summary — this line is how
24
27
  Instructions for the agent. Keep them imperative and specific.
25
28
  `;
26
29
  export function SkillsTab({ active }) {
30
+ const root = useBrainUiRoot();
31
+ const api = root.api;
32
+ const lifetime = useRef(0);
33
+ const listRequest = useRef(0);
27
34
  const [skills, setSkills] = useState([]);
28
35
  const [error, setError] = useState(null);
29
36
  const [warning, setWarning] = useState(null);
@@ -34,41 +41,68 @@ export function SkillsTab({ active }) {
34
41
  const [overwrite, setOverwrite] = useState(false);
35
42
  const [installing, setInstalling] = useState(false);
36
43
  const [outcomes, setOutcomes] = useState(null);
37
- async function reload() {
44
+ const reload = useCallback(async () => {
45
+ const generation = lifetime.current;
46
+ const request = ++listRequest.current;
47
+ const current = () => generation === lifetime.current && request === listRequest.current;
38
48
  try {
39
49
  const { skills } = await api.skillsList();
50
+ if (!current())
51
+ return;
40
52
  setSkills(skills);
41
53
  setError(null);
42
54
  }
43
55
  catch (err) {
44
- setError(err instanceof Error ? err.message : "Could not load skills");
56
+ if (current())
57
+ setError(err instanceof Error ? err.message : "Could not load skills");
45
58
  }
46
- }
59
+ }, [api]);
47
60
  useEffect(() => {
61
+ lifetime.current++;
62
+ setSkills([]);
63
+ setError(null);
64
+ setWarning(null);
65
+ setBusy(null);
66
+ setEditing(null);
67
+ setNewName("");
68
+ setGithubSource("");
69
+ setOverwrite(false);
70
+ setInstalling(false);
71
+ setOutcomes(null);
48
72
  if (active)
49
73
  void reload();
50
- }, [active]);
74
+ const invalidate = () => { lifetime.current++; };
75
+ return invalidate;
76
+ }, [active, root, reload]);
51
77
  async function run(name, fn) {
78
+ const generation = lifetime.current;
52
79
  setBusy(name);
53
80
  setError(null);
54
81
  setWarning(null);
55
82
  try {
56
83
  const result = await fn();
84
+ if (generation !== lifetime.current)
85
+ return;
57
86
  if (result && "warning" in result && result.warning)
58
87
  setWarning(result.warning);
59
88
  await reload();
60
89
  }
61
90
  catch (err) {
62
- setError(err instanceof Error ? err.message : "Skill operation failed");
91
+ if (generation === lifetime.current)
92
+ setError(err instanceof Error ? err.message : "Skill operation failed");
63
93
  }
64
94
  finally {
65
- setBusy(null);
95
+ if (generation === lifetime.current)
96
+ setBusy(null);
66
97
  }
67
98
  }
68
99
  async function openEditor(entry) {
100
+ const generation = lifetime.current;
69
101
  setBusy(entry.name);
70
102
  try {
71
103
  const detail = await api.skillGet(entry.name);
104
+ if (generation !== lifetime.current)
105
+ return;
72
106
  setEditing({
73
107
  name: entry.name,
74
108
  content: detail.content,
@@ -78,10 +112,12 @@ export function SkillsTab({ active }) {
78
112
  setError(null);
79
113
  }
80
114
  catch (err) {
81
- setError(err instanceof Error ? err.message : "Could not load skill");
115
+ if (generation === lifetime.current)
116
+ setError(err instanceof Error ? err.message : "Could not load skill");
82
117
  }
83
118
  finally {
84
- setBusy(null);
119
+ if (generation === lifetime.current)
120
+ setBusy(null);
85
121
  }
86
122
  }
87
123
  function startCreate() {
@@ -94,57 +130,48 @@ export function SkillsTab({ active }) {
94
130
  async function saveEditor() {
95
131
  if (!editing || editing.readOnly)
96
132
  return;
133
+ const generation = lifetime.current;
97
134
  const { name, content, isNew } = editing;
98
135
  await run(name, async () => {
99
136
  const result = isNew
100
137
  ? await api.skillCreate(name, content)
101
138
  : await api.skillUpdate(name, content);
102
- setEditing(null);
139
+ if (generation === lifetime.current)
140
+ setEditing(null);
103
141
  return result;
104
142
  });
105
143
  }
106
144
  async function install(fn) {
145
+ const generation = lifetime.current;
107
146
  setInstalling(true);
108
147
  setError(null);
109
148
  setWarning(null);
110
149
  setOutcomes(null);
111
150
  try {
112
151
  const result = await fn();
152
+ if (generation !== lifetime.current)
153
+ return;
113
154
  setOutcomes(result.outcomes);
114
155
  if (result.warning)
115
156
  setWarning(result.warning);
116
157
  await reload();
117
158
  }
118
159
  catch (err) {
119
- setError(err instanceof Error ? err.message : "Install failed");
160
+ if (generation === lifetime.current)
161
+ setError(err instanceof Error ? err.message : "Install failed");
120
162
  }
121
163
  finally {
122
- setInstalling(false);
164
+ if (generation === lifetime.current)
165
+ setInstalling(false);
123
166
  }
124
167
  }
125
- const custom = skills.filter((s) => s.source === "custom");
126
- const builtin = skills.filter((s) => s.source === "builtin");
127
168
  if (editing) {
128
- return (_jsxs("div", { className: "flex h-full flex-col p-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "text-sm font-medium text-foreground", children: [editing.isNew ? "New skill" : editing.name, editing.readOnly && (_jsx("span", { className: "ml-2 text-[11px] text-muted-foreground", children: "built-in \u00B7 read-only" }))] }), _jsxs("div", { className: "flex gap-2", children: [!editing.readOnly && (_jsxs("button", { onClick: () => void saveEditor(), disabled: busy !== null, className: "flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:brightness-110 disabled:opacity-50", children: [busy ? _jsx(Loader2, { className: "h-3 w-3 animate-spin" }) : _jsx(Check, { className: "h-3 w-3" }), "Save"] })), _jsxs("button", { onClick: () => setEditing(null), className: "flex items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground", children: [_jsx(X, { className: "h-3 w-3" }), "Close"] })] })] }), error && _jsx("p", { className: "mt-2 text-xs text-destructive", children: error }), _jsx("textarea", { value: editing.content, readOnly: editing.readOnly, onChange: (e) => setEditing({ ...editing, content: e.target.value }), spellCheck: false, className: "mt-3 min-h-0 flex-1 resize-none rounded-lg border border-border-subtle bg-background p-3 font-mono text-xs text-foreground focus:border-primary focus:outline-none" })] }));
169
+ return (_jsx(SkillEditor, { name: editing.name, content: editing.content, isNew: editing.isNew, readOnly: editing.readOnly, saving: busy !== null, error: error, onChange: (content) => setEditing({ ...editing, content }), onSave: () => void saveEditor(), onClose: () => setEditing(null) }));
129
170
  }
130
- return (_jsxs("div", { className: "h-full overflow-y-auto p-4", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Your skills" }), _jsxs("p", { className: "mt-1 text-xs text-muted-foreground", children: ["Custom skills live in your brain repo (", _jsx("code", { children: ".agents/skills/" }), ") \u2014 they survive redeployments, ride the repo's backups, and apply to every backend. For guided authoring, ask the agent in chat to", " ", _jsx("span", { className: "font-medium text-foreground", children: "add a skill" }), " \u2014 the built-in ", _jsx("code", { children: "add-skill" }), " skill walks through design and setup."] }), _jsxs("div", { className: "mt-4 flex items-center gap-2", children: [_jsx("input", { value: newName, onChange: (e) => setNewName(e.target.value.toLowerCase()), onKeyDown: (e) => {
131
- if (e.key === "Enter")
132
- startCreate();
133
- }, placeholder: "new-skill-name (kebab-case)", className: "min-w-0 flex-1 rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none" }), _jsxs("button", { onClick: startCreate, disabled: !newName.trim(), className: "flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:brightness-110 disabled:opacity-50", children: [_jsx(Plus, { className: "h-3 w-3" }), "Create"] })] }), _jsxs("div", { className: "mt-3 rounded-lg border border-border-subtle bg-surface p-3", children: [_jsx("p", { className: "text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: "Install" }), _jsxs("div", { className: "mt-2 flex items-center gap-2", children: [_jsxs("label", { className: cn("flex cursor-pointer items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:border-primary hover:text-primary", installing && "pointer-events-none opacity-50"), children: [_jsx(Upload, { className: "h-3 w-3" }), "Upload .zip", _jsx("input", { type: "file", accept: ".zip,application/zip", className: "hidden", onChange: (e) => {
134
- const file = e.target.files?.[0];
135
- e.target.value = "";
136
- if (file)
137
- void install(() => api.skillInstallZip(file, overwrite));
138
- } })] }), _jsxs("label", { className: "flex items-center gap-1.5 text-[11px] text-muted-foreground", children: [_jsx("input", { type: "checkbox", checked: overwrite, onChange: (e) => setOverwrite(e.target.checked) }), "overwrite existing"] })] }), _jsxs("div", { className: "mt-2 flex items-center gap-2", children: [_jsx("input", { value: githubSource, onChange: (e) => setGithubSource(e.target.value), onKeyDown: (e) => {
139
- if (e.key === "Enter" && githubSource.trim() && !installing) {
140
- void install(() => api.skillInstallGitHub(githubSource.trim(), overwrite));
141
- }
142
- }, placeholder: "GitHub: owner/repo or https://github.com/\u2026/tree/main/skills", className: "min-w-0 flex-1 rounded-md border border-border-subtle bg-background px-2 py-1.5 text-xs text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none" }), _jsxs("button", { onClick: () => void install(() => api.skillInstallGitHub(githubSource.trim(), overwrite)), disabled: installing || !githubSource.trim(), className: "flex items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:border-primary hover:text-primary disabled:opacity-50", children: [installing ? _jsx(Loader2, { className: "h-3 w-3 animate-spin" }) : _jsx(Download, { className: "h-3 w-3" }), "Install"] })] }), _jsx("p", { className: "mt-1.5 text-[11px] text-muted-foreground", children: "A skill is any folder with a SKILL.md; one source may carry several. Private repos use the server's GITHUB_TOKEN." }), outcomes && (_jsx("ul", { className: "mt-2 flex flex-col gap-1", children: outcomes.map((o, i) => (_jsx("li", { className: "text-[11px]", children: o.status === "skipped" ? (_jsxs("span", { className: "text-muted-foreground", children: ["\u2717 ", o.name, " \u2014 ", o.reason] })) : (_jsxs("span", { className: "text-primary", children: ["\u2713 ", o.name, " ", o.status === "replaced" ? "replaced" : "installed", typeof o.files === "number" ? ` (${o.files} file${o.files === 1 ? "" : "s"})` : ""] })) }, `${o.name}-${i}`))) }))] }), error && _jsx("p", { className: "mt-2 text-xs text-destructive", children: error }), warning && _jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: warning }), _jsxs("ul", { className: "mt-4 flex flex-col gap-2", children: [custom.length === 0 && (_jsx("li", { className: "rounded-lg border border-dashed border-border-subtle p-3 text-xs text-muted-foreground", children: "No custom skills yet." })), custom.map((skill) => (_jsx("li", { className: cn("rounded-lg border border-border-subtle bg-surface p-3", !skill.enabled && "opacity-60"), children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("p", { className: "truncate text-sm text-foreground", children: [skill.name, !skill.enabled && (_jsx("span", { className: "ml-2 text-[11px] text-muted-foreground", children: "disabled" }))] }), _jsx("p", { className: "truncate text-[11px] text-muted-foreground", children: skill.warning ? `⚠ ${skill.warning}` : skill.description })] }), _jsx("button", { onClick: () => void openEditor(skill), disabled: busy !== null, title: "Edit SKILL.md", className: "rounded-md border border-border-subtle p-1.5 text-muted-foreground transition-colors hover:border-primary hover:text-primary disabled:opacity-50", children: _jsx(Pencil, { className: "h-3.5 w-3.5" }) }), _jsx("button", { onClick: () => void run(skill.name, () => api.skillSetEnabled(skill.name, !skill.enabled)), disabled: busy !== null, title: skill.enabled ? "Disable (all backends)" : "Enable", className: cn("rounded-md border border-border-subtle p-1.5 transition-colors disabled:opacity-50", skill.enabled
143
- ? "text-primary hover:border-primary"
144
- : "text-muted-foreground hover:border-primary hover:text-primary"), children: busy === skill.name ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(Power, { className: "h-3.5 w-3.5" })) }), _jsx("button", { onClick: () => {
145
- if (confirm(`Delete the skill "${skill.name}" permanently?`)) {
146
- void run(skill.name, () => api.skillRemove(skill.name));
147
- }
148
- }, disabled: busy !== null, title: "Delete permanently", className: "rounded-md border border-border-subtle p-1.5 text-muted-foreground transition-colors hover:border-destructive hover:text-destructive disabled:opacity-50", children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })] }) }, skill.name)))] }), _jsx("h3", { className: "mt-6 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Built-in skills" }), _jsxs("p", { className: "mt-1 text-xs text-muted-foreground", children: ["Shipped by brain-kit and its modules; managed by ", _jsx("code", { children: "brain skills sync" }), ". A custom skill with the same name overrides a built-in."] }), _jsx("ul", { className: "mt-3 flex flex-col gap-1.5", children: builtin.map((skill) => (_jsxs("li", { className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-surface px-3 py-2", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-xs text-foreground", children: skill.name }), _jsx("p", { className: "truncate text-[11px] text-muted-foreground", children: skill.description })] }), _jsx("button", { onClick: () => void openEditor(skill), disabled: busy !== null, title: "View SKILL.md", className: "shrink-0 rounded-md border border-border-subtle px-2 py-1 text-[11px] text-muted-foreground transition-colors hover:border-primary hover:text-primary disabled:opacity-50", children: "View" })] }, skill.name))) })] }));
171
+ return (_jsx(SkillsList, { skills: skills, busy: busy, installing: installing, error: error, warning: warning, outcomes: outcomes, newName: newName, githubSource: githubSource, overwrite: overwrite, onNewName: setNewName, onCreate: startCreate, onGithubSource: setGithubSource, onOverwrite: setOverwrite, onInstallZip: (file) => void install(() => api.skillInstallZip(file, overwrite)), onInstallGitHub: () => void install(() => api.skillInstallGitHub(githubSource.trim(), overwrite)), onOpen: (skill) => void openEditor(skill), onToggle: (skill) => void run(skill.name, () => api.skillSetEnabled(skill.name, !skill.enabled)), onRemove: (skill) => {
172
+ if (confirm(`Delete the skill "${skill.name}" permanently?`)) {
173
+ void run(skill.name, () => api.skillRemove(skill.name));
174
+ }
175
+ } }));
149
176
  }
150
177
  //# sourceMappingURL=skills-tab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-tab.js","sourceRoot":"","sources":["../../../src/components/settings/skills-tab.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills-tab.js","sourceRoot":"","sources":["../../../src/components/settings/skills-tab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AAEH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;QAC3B,IAAI;;;;IAIR,IAAI;;;CAGP,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAuB;IACvD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAK5B,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA+B,IAAI,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC,OAAO,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO;YACvB,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE;gBAAE,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACxF,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,UAAU,CAAC,EAAE,CAAC,CAAC;QACf,eAAe,CAAC,EAAE,CAAC,CAAC;QACpB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,MAAM;YAAE,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,EAA8C;QAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC5C,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO;gBAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAC/G,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,KAAiB;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAgB,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC5C,UAAU,CAAC;gBACT,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS;aACrC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC7G,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,SAAS,WAAW;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,UAAU,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,UAAU,UAAU;QACvB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;QACpC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACzC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,MAAM,GAAG,KAAK;gBAClB,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;gBACtC,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,EAAwE;QAC7F,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC5C,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO;gBAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACvG,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO;gBAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,KAAC,WAAW,IACV,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,MAAM,EAAE,IAAI,KAAK,IAAI,EACrB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,EAC1D,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,EAAE,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAC/B,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,UAAU,IACT,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,WAAW,EACrB,cAAc,EAAE,eAAe,EAC/B,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAChF,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,EACjG,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAChG,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,IAAI,OAAO,CAAC,qBAAqB,KAAK,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC;gBAC7D,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,GACD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The always-allowed tools, rendered from props (S7, the `settings`
3
+ * directory). The design's settings screen is `Label` + `Surface(pad=0)` +
4
+ * grouped `ListRow`s "exercising all four trailing slots"; a grant is a
5
+ * mono-titled row whose trailing action is *Revoke*. The kit's trailing
6
+ * action is decorative — "the row carries the handler" — so tapping the row
7
+ * revokes, and the row dims while the revoke is in flight.
8
+ * `ToolPermissionsSection` is the container that owns the request.
9
+ */
10
+ export interface ToolPermissionsListProps {
11
+ tools: string[];
12
+ /** The tool whose revoke is in flight. */
13
+ busy: string | null;
14
+ error: string | null;
15
+ onRevoke: (tool: string) => void;
16
+ }
17
+ export declare function ToolPermissionsList(p: ToolPermissionsListProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=tool-permissions-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-permissions-list.d.ts","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions-list.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,+BAkC9D"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Callout, Label, ListRow, Surface } from "@schlessera/brain-ui-kit";
3
+ export function ToolPermissionsList(p) {
4
+ return (_jsxs("div", { className: "mt-6 flex flex-col gap-2", children: [_jsx(Label, { text: "Always-allowed tools", icon: "capability" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "These run without an approval card (\"Always allow\" on a past approval). Destructive command confirmations still ask every time. Tap one to ask for approval again." }), p.tools.length > 0 && (_jsx(Surface, { pad: 0, children: p.tools.map((tool, i) => (_jsx(ListRow, { variant: "group", mono: true, icon: "capability", iconTone: "amber", title: tool, actionLabel: p.busy === tool ? "Revoking…" : "Revoke", dim: p.busy === tool, last: i === p.tools.length - 1, onClick: p.busy === tool ? undefined : () => p.onRevoke(tool) }, tool))) })), p.error && (_jsx("div", { role: "alert", children: _jsx(Callout, { tone: "red", variant: "banner", icon: "failed", mono: true, text: p.error }) }))] }));
5
+ }
6
+ //# sourceMappingURL=tool-permissions-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-permissions-list.js","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAmB5E,MAAM,UAAU,mBAAmB,CAAC,CAA2B;IAC7D,OAAO,CACL,eAAK,SAAS,EAAC,0BAA0B,aACvC,KAAC,KAAK,IAAC,IAAI,EAAC,sBAAsB,EAAC,IAAI,EAAC,YAAY,GAAG,EACvD,YAAG,SAAS,EAAC,+BAA+B,qLAIxC,EACH,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,KAAC,OAAO,IAAC,GAAG,EAAE,CAAC,YACZ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,KAAC,OAAO,IAEN,OAAO,EAAC,OAAO,EACf,IAAI,QACJ,IAAI,EAAC,YAAY,EACjB,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAE,IAAI,EACX,WAAW,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EACrD,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,EACpB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAC9B,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IATxD,IAAI,CAUT,CACH,CAAC,GACM,CACX,EACA,CAAC,CAAC,KAAK,IAAI,CACV,cAAK,IAAI,EAAC,OAAO,YACf,KAAC,OAAO,IAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,QAAC,IAAI,EAAE,CAAC,CAAC,KAAK,GAAI,GACrE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -2,7 +2,8 @@
2
2
  * The user's remembered "always allow" tool grants — accumulated by the
3
3
  * approval cards' "Always allow" button, revocable here. Renders nothing
4
4
  * while the list is empty: the section only exists once there is something
5
- * to manage.
5
+ * to manage. This is the container (S7); `ToolPermissionsList` draws the
6
+ * rows on the kit.
6
7
  */
7
8
  export declare function ToolPermissionsSection({ active }: {
8
9
  active: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-permissions.d.ts","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions.tsx"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,sCA6DrE"}
1
+ {"version":3,"file":"tool-permissions.d.ts","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions.tsx"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,sCAyCrE"}
@@ -1,41 +1,58 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { X } from "lucide-react";
4
- import { api } from "../../lib/api-client.js";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { useBrainApi } from "../../root-context.js";
4
+ import { ToolPermissionsList } from "./tool-permissions-list.js";
5
5
  /**
6
6
  * The user's remembered "always allow" tool grants — accumulated by the
7
7
  * approval cards' "Always allow" button, revocable here. Renders nothing
8
8
  * while the list is empty: the section only exists once there is something
9
- * to manage.
9
+ * to manage. This is the container (S7); `ToolPermissionsList` draws the
10
+ * rows on the kit.
10
11
  */
11
12
  export function ToolPermissionsSection({ active }) {
13
+ const api = useBrainApi();
14
+ const lifetime = useRef(0);
12
15
  const [tools, setTools] = useState([]);
13
16
  const [error, setError] = useState(null);
14
17
  const [busy, setBusy] = useState(null);
15
18
  useEffect(() => {
16
- if (!active)
17
- return;
18
- api
19
- .toolPermissions()
20
- .then(({ tools }) => setTools(tools))
21
- .catch((err) => setError(err instanceof Error ? err.message : "Could not load tool permissions"));
22
- }, [active]);
19
+ const generation = ++lifetime.current;
20
+ const current = () => generation === lifetime.current;
21
+ setTools([]);
22
+ setError(null);
23
+ setBusy(null);
24
+ if (active) {
25
+ api.toolPermissions()
26
+ .then(({ tools }) => { if (current())
27
+ setTools(tools); })
28
+ .catch((err) => {
29
+ if (current())
30
+ setError(err instanceof Error ? err.message : "Could not load tool permissions");
31
+ });
32
+ }
33
+ const invalidate = () => { lifetime.current++; };
34
+ return invalidate;
35
+ }, [active, api]);
23
36
  async function revoke(tool) {
37
+ const generation = lifetime.current;
24
38
  setBusy(tool);
25
39
  setError(null);
26
40
  try {
27
41
  const { tools } = await api.toolPermissionRevoke(tool);
28
- setTools(tools);
42
+ if (generation === lifetime.current)
43
+ setTools(tools);
29
44
  }
30
45
  catch (err) {
31
- setError(err instanceof Error ? err.message : "Could not revoke");
46
+ if (generation === lifetime.current)
47
+ setError(err instanceof Error ? err.message : "Could not revoke");
32
48
  }
33
49
  finally {
34
- setBusy(null);
50
+ if (generation === lifetime.current)
51
+ setBusy(null);
35
52
  }
36
53
  }
37
54
  if (tools.length === 0 && !error)
38
55
  return null;
39
- return (_jsxs("div", { className: "mt-6", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Always-allowed tools" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "These run without an approval card (\"Always allow\" on a past approval). Destructive command confirmations still ask every time." }), _jsx("ul", { className: "mt-4 flex flex-col gap-1.5", children: tools.map((tool) => (_jsxs("li", { className: "flex items-center justify-between gap-3 rounded-lg border border-border-subtle bg-surface px-3 py-2", children: [_jsx("code", { className: "truncate text-xs text-foreground", children: tool }), _jsxs("button", { onClick: () => void revoke(tool), disabled: busy === tool, title: "Ask for approval again", className: "flex shrink-0 items-center gap-1 rounded-md border border-border-subtle px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:border-destructive hover:text-destructive disabled:opacity-50", children: [_jsx(X, { className: "h-3 w-3" }), "Revoke"] })] }, tool))) }), error && _jsx("p", { className: "mt-2 text-xs text-destructive", children: error })] }));
56
+ return _jsx(ToolPermissionsList, { tools: tools, busy: busy, error: error, onRevoke: (tool) => void revoke(tool) });
40
57
  }
41
58
  //# sourceMappingURL=tool-permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-permissions.js","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAuB;IACpE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,GAAG;aACA,eAAe,EAAE;aACjB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACpC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CACjF,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,KAAK,UAAU,MAAM,CAAC,IAAY;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACvD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,mEAAmE,qCAE5E,EACL,YAAG,SAAS,EAAC,oCAAoC,kJAG7C,EACJ,aAAI,SAAS,EAAC,4BAA4B,YACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,cAEE,SAAS,EAAC,qGAAqG,aAE/G,eAAM,SAAS,EAAC,kCAAkC,YAAE,IAAI,GAAQ,EAChE,kBACE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,EAChC,QAAQ,EAAE,IAAI,KAAK,IAAI,EACvB,KAAK,EAAC,wBAAwB,EAC9B,SAAS,EAAC,uNAAuN,aAEjO,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,GAAG,cAElB,KAZJ,IAAI,CAaN,CACN,CAAC,GACC,EACJ,KAAK,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,KAAK,GAAK,IAC9D,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool-permissions.js","sourceRoot":"","sources":["../../../src/components/settings/tool-permissions.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { WebSearchConfig } from "../../lib/api-client.js";
2
+ /**
3
+ * The web-search provider chain, rendered from props (S6). `WebSearchSection`
4
+ * is the container: it owns the load, the update round-trip, the lifetime
5
+ * guards and the two-second "saved" flash. This owns nothing but what is on
6
+ * screen, and every event it raises names the provider it is about.
7
+ *
8
+ * Providers are toggles, not one choice: the enabled set becomes an ordered
9
+ * chain, cheapest first, so ordinary searches run on a free provider and a
10
+ * paid one is only reached when the cheap ones fail. Enabling a provider that
11
+ * has no credential is blocked here rather than bounced by the server: the
12
+ * extension would skip it at search time anyway, leaving a chain entry that
13
+ * silently never runs. A provider that LOST its key must still be switchable
14
+ * off, so only turning one on without a credential is refused.
15
+ *
16
+ * The switch is the kit's `Toggle`, named "Enable <provider> for web search",
17
+ * and the buttons are the kit's. The key-chip that opens the editor stays a
18
+ * native button: the kit's `Chip` is a mark, not a control, and this chip is
19
+ * a disclosure with `aria-expanded`. The key field stays a native input for
20
+ * the same reason the login form's does — the kit has no text input.
21
+ *
22
+ * Key values never come back from the server; the view only ever learns "a
23
+ * key is stored".
24
+ */
25
+ export interface WebSearchChainProps {
26
+ config: WebSearchConfig;
27
+ busy: boolean;
28
+ error: string | null;
29
+ /** The provider whose key editor is open, if any. */
30
+ openKey: string | null;
31
+ keyDraft: string;
32
+ savedFlash: boolean;
33
+ onToggle: (id: string) => void;
34
+ onToggleKey: (id: string) => void;
35
+ onKeyDraft: (value: string) => void;
36
+ onSaveKey: (id: string) => void;
37
+ onClearKey: (id: string) => void;
38
+ onClearOverride: () => void;
39
+ }
40
+ export declare function WebSearchChain(p: WebSearchChainProps): import("react").JSX.Element;
41
+ //# sourceMappingURL=web-search-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search-chain.d.ts","sourceRoot":"","sources":["../../../src/components/settings/web-search-chain.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAC;AAGlF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,mBAAmB,+BAyDpD"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Toggle } from "@schlessera/brain-ui-kit";
3
+ import { AlertTriangle, Check, Loader2 } from "lucide-react";
4
+ import { cn } from "../../lib/utils.js";
5
+ export function WebSearchChain(p) {
6
+ const { config } = p;
7
+ const byId = new Map(config.providers.map((provider) => [provider.id, provider]));
8
+ const orderLabels = config.order.map((id) => byId.get(id)?.label ?? id);
9
+ return (_jsxs("div", { className: "mt-6", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Web search" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "Enable the providers this deployment may use. Searches run them cheapest-first and only fall through to the next when one fails, so a paid provider costs nothing until it is actually needed. The agent is told which are enabled and can pick one deliberately. Changes apply to new conversations." }), _jsx(AppliesTo, { models: config.appliesTo }), _jsxs("div", { className: "mt-4 rounded-lg border border-border-subtle bg-surface p-3", children: [config.overriddenBy && (_jsx(OverrideWarning, { provider: config.overriddenBy, busy: p.busy, onClear: p.onClearOverride })), _jsx("p", { className: "text-[11px] text-muted-foreground", children: orderLabels.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-foreground", children: "Order:" }), " ", orderLabels.join(" → ")] })) : ("Nothing enabled — the extension picks for itself, starting with a free rate-limited tier.") }), _jsx("ul", { className: "mt-3 space-y-1.5", children: config.providers.map((provider) => (_jsx(ProviderRow, { provider: provider, busy: p.busy, keyOpen: p.openKey === provider.id, keyDraft: p.keyDraft, savedFlash: p.savedFlash, onKeyDraft: p.onKeyDraft, onToggle: () => p.onToggle(provider.id), onToggleKey: () => p.onToggleKey(provider.id), onSaveKey: () => p.onSaveKey(provider.id), onClearKey: () => p.onClearKey(provider.id) }, provider.id))) }), p.error && _jsx("p", { className: "mt-2 text-xs text-destructive", children: p.error })] })] }));
10
+ }
11
+ /**
12
+ * Which models these toggles actually reach.
13
+ *
14
+ * The card is shown whenever the pi backend is configured, but a deployment
15
+ * running both backends puts Claude models in the same picker — and those use
16
+ * the Agent SDK's Anthropic-hosted WebSearch, which takes no provider setting.
17
+ * Without this line the toggles look global and silently are not.
18
+ */
19
+ function AppliesTo({ models }) {
20
+ return (_jsxs("p", { className: "mt-2 text-xs text-muted-foreground", children: ["Applies to", " ", _jsx("span", { className: "text-foreground", children: models.length > 0 ? models.join(", ") : "the pi models" }), ". Claude models search through Anthropic instead, which has no provider setting."] }));
21
+ }
22
+ /**
23
+ * A single-provider selection in the config file beats `searchRouting`
24
+ * outright in the extension, and pi's own /curator command writes one back —
25
+ * so a chain can be configured here and quietly not be what runs. Say so
26
+ * instead of showing toggles that lie.
27
+ */
28
+ function OverrideWarning({ provider, busy, onClear }) {
29
+ return (_jsxs("div", { className: "mb-3 flex items-start gap-2 rounded-md border border-primary/40 bg-primary-fill/10 p-2", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-primary" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("p", { className: "text-[11px] text-foreground", children: ["Searches are pinned to ", _jsx("span", { className: "font-medium", children: provider }), ", which overrides the chain below. pi's own ", _jsx("code", { children: "/curator" }), " command sets this."] }), _jsx("div", { className: "mt-1.5", children: _jsx(Button, { label: "Use the chain instead", tone: "ghost", size: "sm", block: false, disabled: busy, onClick: onClear }) })] })] }));
30
+ }
31
+ function ProviderRow({ provider, busy, keyOpen, keyDraft, savedFlash, onKeyDraft, onToggle, onToggleKey, onSaveKey, onClearKey, }) {
32
+ const hasCredential = provider.keyless || provider.keyConfigured || provider.keyFromEnv;
33
+ const switchable = provider.enabled || hasCredential;
34
+ return (_jsxs("li", { className: "rounded-lg border border-border-subtle bg-background p-2.5", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("span", { className: "mt-0.5 flex shrink-0", title: !switchable ? `${provider.label} needs an API key first` : undefined, children: _jsx(Toggle, { on: provider.enabled, tone: "amber", label: `Enable ${provider.label} for web search`, disabled: busy || !switchable, onClick: onToggle }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsx("p", { className: "text-sm text-foreground", children: provider.label }), provider.hasKeyField && (_jsx("button", { type: "button", onClick: onToggleKey, "aria-expanded": keyOpen, className: cn("shrink-0 rounded-md border px-2 py-1 text-[11px] font-medium transition-colors", provider.keyConfigured
35
+ ? "border-border-subtle text-primary hover:border-primary"
36
+ : hasCredential
37
+ ? "border-border-subtle text-muted-foreground hover:border-primary hover:text-foreground"
38
+ : "border-dashed border-border text-muted-foreground hover:border-primary hover:text-primary"), children: provider.keyConfigured ? "Key stored" : provider.keyFromEnv ? "Key from env" : "Needs key" }))] }), _jsx("p", { className: "text-[11px] text-muted-foreground", children: provider.costNote }), _jsx("p", { className: "text-[11px] text-muted-foreground/70", children: provider.blurb })] })] }), keyOpen && provider.hasKeyField && (_jsxs("div", { className: "mt-2", children: [provider.keyFromEnv && !provider.keyConfigured && (_jsx("p", { className: "mb-1 text-[11px] text-muted-foreground", children: "A key is already coming from the environment. One saved here takes its place." })), provider.keyless && !provider.keyConfigured && (_jsx("p", { className: "mb-1 text-[11px] text-muted-foreground", children: "Optional \u2014 the free tier works without one, a key lifts its rate limit." })), _jsx(KeyEditor, { busy: busy, draft: keyDraft, onDraft: onKeyDraft, keyConfigured: provider.keyConfigured, savedFlash: savedFlash, onSave: onSaveKey, onClear: onClearKey })] }))] }));
39
+ }
40
+ function KeyEditor({ busy, draft, onDraft, keyConfigured, savedFlash, onSave, onClear, }) {
41
+ const canSave = !busy && draft.trim().length > 0;
42
+ return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "password", value: draft, disabled: busy, "aria-label": "API key", placeholder: keyConfigured ? "•••••••• (stored — enter to replace)" : "Paste API key", onChange: (e) => onDraft(e.target.value), onKeyDown: (e) => {
43
+ if (e.key === "Enter" && canSave)
44
+ onSave();
45
+ }, autoComplete: "off", className: "min-w-0 flex-1 rounded-md border border-border-subtle bg-background px-2 py-1.5 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none disabled:opacity-50" }), busy ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin text-muted-foreground", "aria-hidden": true })) : savedFlash ? (_jsx(Check, { className: "h-3 w-3 text-primary", "aria-hidden": true })) : null, _jsx(Button, { label: "Save", tone: "ghost", size: "sm", block: false, disabled: !canSave, onClick: onSave }), keyConfigured && (_jsx("span", { title: "Remove the stored key", className: "flex", children: _jsx(Button, { label: "Clear", icon: "dismiss", tone: "danger", size: "sm", block: false, disabled: busy, onClick: onClear }) }))] }));
46
+ }
47
+ //# sourceMappingURL=web-search-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search-chain.js","sourceRoot":"","sources":["../../../src/components/settings/web-search-chain.tsx"],"names":[],"mappings":"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"}
@@ -8,13 +8,10 @@
8
8
  * same list and can name a specific provider per search when a question
9
9
  * warrants it.
10
10
  *
11
- * Enabling a provider that has no credential is blocked in the UI rather than
12
- * bounced by the server: the extension would skip it at search time anyway,
13
- * leaving a chain entry that silently never runs.
14
- *
15
- * Key values never come back from the server; the UI only ever learns "a key
16
- * is stored". Renders nothing when the server reports pi as not configured,
17
- * so the Models tab is unchanged for Claude-only deployments.
11
+ * This is the container (S6): it owns the load, the update round-trip, the
12
+ * per-root lifetime guards and the "saved" flash, and hands everything on
13
+ * screen to `WebSearchChain`. Renders nothing when the server reports pi as
14
+ * not configured, so the Models tab is unchanged for Claude-only deployments.
18
15
  */
19
16
  export declare function WebSearchSection({ active }: {
20
17
  active: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"web-search-settings.d.ts","sourceRoot":"","sources":["../../../src/components/settings/web-search-settings.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,sCA4G/D"}
1
+ {"version":3,"file":"web-search-settings.d.ts","sourceRoot":"","sources":["../../../src/components/settings/web-search-settings.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,sCA2F/D"}