@flanksource/clicky-ui 0.3.25 → 0.3.27

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 (535) hide show
  1. package/NOTICE.md +1 -0
  2. package/dist/ai.cjs +4 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +6 -2
  5. package/dist/ai.js.map +1 -1
  6. package/dist/chat.cjs +8 -0
  7. package/dist/chat.cjs.map +1 -1
  8. package/dist/chat.js +9 -1
  9. package/dist/chat.js.map +1 -1
  10. package/dist/comments/CommentCard.cjs +89 -14
  11. package/dist/comments/CommentCard.cjs.map +1 -1
  12. package/dist/comments/CommentCard.d.ts.map +1 -1
  13. package/dist/comments/CommentCard.js +90 -15
  14. package/dist/comments/CommentCard.js.map +1 -1
  15. package/dist/comments/CommentComposer.cjs +25 -2
  16. package/dist/comments/CommentComposer.cjs.map +1 -1
  17. package/dist/comments/CommentComposer.d.ts.map +1 -1
  18. package/dist/comments/CommentComposer.js +25 -2
  19. package/dist/comments/CommentComposer.js.map +1 -1
  20. package/dist/comments/CommentProvider.cjs +21 -14
  21. package/dist/comments/CommentProvider.cjs.map +1 -1
  22. package/dist/comments/CommentProvider.d.ts +1 -1
  23. package/dist/comments/CommentProvider.d.ts.map +1 -1
  24. package/dist/comments/CommentProvider.js +21 -14
  25. package/dist/comments/CommentProvider.js.map +1 -1
  26. package/dist/comments/CommentSidePanel.cjs +1 -1
  27. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  28. package/dist/comments/CommentSidePanel.js +1 -1
  29. package/dist/comments/CommentSidePanel.js.map +1 -1
  30. package/dist/comments/comment-types.cjs.map +1 -1
  31. package/dist/comments/comment-types.d.ts +6 -0
  32. package/dist/comments/comment-types.d.ts.map +1 -1
  33. package/dist/comments/comment-types.js.map +1 -1
  34. package/dist/components/DimensionField.cjs +56 -0
  35. package/dist/components/DimensionField.cjs.map +1 -0
  36. package/dist/components/DimensionField.d.ts +17 -0
  37. package/dist/components/DimensionField.d.ts.map +1 -0
  38. package/dist/components/DimensionField.js +56 -0
  39. package/dist/components/DimensionField.js.map +1 -0
  40. package/dist/components.cjs +4 -0
  41. package/dist/components.cjs.map +1 -1
  42. package/dist/components.d.ts +2 -0
  43. package/dist/components.d.ts.map +1 -1
  44. package/dist/components.js +4 -0
  45. package/dist/components.js.map +1 -1
  46. package/dist/data/Clicky.cjs +4 -5
  47. package/dist/data/Clicky.cjs.map +1 -1
  48. package/dist/data/Clicky.d.ts.map +1 -1
  49. package/dist/data/Clicky.js +4 -5
  50. package/dist/data/Clicky.js.map +1 -1
  51. package/dist/data/FixtureEditor/fixture-frontmatter.cjs +4 -0
  52. package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
  53. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -1
  54. package/dist/data/FixtureEditor/fixture-frontmatter.js +4 -0
  55. package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
  56. package/dist/data/TaskExecDetails.cjs +8 -3
  57. package/dist/data/TaskExecDetails.cjs.map +1 -1
  58. package/dist/data/TaskExecDetails.d.ts +4 -0
  59. package/dist/data/TaskExecDetails.d.ts.map +1 -1
  60. package/dist/data/TaskExecDetails.js +9 -4
  61. package/dist/data/TaskExecDetails.js.map +1 -1
  62. package/dist/data/TaskManagerButton.cjs +101 -7
  63. package/dist/data/TaskManagerButton.cjs.map +1 -1
  64. package/dist/data/TaskManagerButton.d.ts +6 -1
  65. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  66. package/dist/data/TaskManagerButton.js +103 -9
  67. package/dist/data/TaskManagerButton.js.map +1 -1
  68. package/dist/data/TaskProcessDetails.cjs +2 -0
  69. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  70. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  71. package/dist/data/TaskProcessDetails.js +2 -0
  72. package/dist/data/TaskProcessDetails.js.map +1 -1
  73. package/dist/data/TaskProgress.cjs +14 -4
  74. package/dist/data/TaskProgress.cjs.map +1 -1
  75. package/dist/data/TaskProgress.js +14 -4
  76. package/dist/data/TaskProgress.js.map +1 -1
  77. package/dist/data/TaskSnapshot.cjs.map +1 -1
  78. package/dist/data/TaskSnapshot.d.ts +1 -0
  79. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  80. package/dist/data/TaskSnapshot.js.map +1 -1
  81. package/dist/data/ai/ChatWindow.cjs +18 -23
  82. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  83. package/dist/data/ai/ChatWindow.d.ts +1 -1
  84. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  85. package/dist/data/ai/ChatWindow.js +19 -24
  86. package/dist/data/ai/ChatWindow.js.map +1 -1
  87. package/dist/data/ai/ChatWindow.preferences.cjs +12 -21
  88. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
  89. package/dist/data/ai/ChatWindow.preferences.d.ts +3 -2
  90. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
  91. package/dist/data/ai/ChatWindow.preferences.js +12 -21
  92. package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
  93. package/dist/data/ai/ChatWindow.tool-catalog.cjs +21 -38
  94. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
  95. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +5 -5
  96. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
  97. package/dist/data/ai/ChatWindow.tool-catalog.js +21 -38
  98. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
  99. package/dist/data/ai/ChatWindow.types.d.ts +2 -2
  100. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
  101. package/dist/data/ai/ChatWindowManager.cjs +2 -2
  102. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  103. package/dist/data/ai/ChatWindowManager.js +2 -2
  104. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  105. package/dist/data/ai/ChatWindowRequestBody.cjs +4 -2
  106. package/dist/data/ai/ChatWindowRequestBody.cjs.map +1 -1
  107. package/dist/data/ai/ChatWindowRequestBody.d.ts +15 -3
  108. package/dist/data/ai/ChatWindowRequestBody.d.ts.map +1 -1
  109. package/dist/data/ai/ChatWindowRequestBody.js +4 -2
  110. package/dist/data/ai/ChatWindowRequestBody.js.map +1 -1
  111. package/dist/data/ai/PromptRunEditor/index.cjs +2 -3
  112. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  113. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  114. package/dist/data/ai/PromptRunEditor/index.js +2 -3
  115. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  116. package/dist/data/ai/PromptRunEditor/model.cjs +1 -0
  117. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
  118. package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
  119. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
  120. package/dist/data/ai/PromptRunEditor/model.js +1 -0
  121. package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
  122. package/dist/data/ai/RuntimeModePicker.cjs +11 -9
  123. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  124. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  125. package/dist/data/ai/RuntimeModePicker.js +12 -10
  126. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  127. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +5 -0
  128. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  129. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  130. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +5 -0
  131. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  132. package/dist/data/ai/SpecRuntimeEditor.model.cjs +4 -0
  133. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  134. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -0
  135. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  136. package/dist/data/ai/SpecRuntimeEditor.model.js +4 -0
  137. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  138. package/dist/data/ai/ToolPreferences.cjs +5 -5
  139. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  140. package/dist/data/ai/ToolPreferences.d.ts +6 -5
  141. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  142. package/dist/data/ai/ToolPreferences.js +5 -5
  143. package/dist/data/ai/ToolPreferences.js.map +1 -1
  144. package/dist/data/ai/ToolPreferences.model.cjs +61 -37
  145. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
  146. package/dist/data/ai/ToolPreferences.model.d.ts +32 -13
  147. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
  148. package/dist/data/ai/ToolPreferences.model.js +62 -38
  149. package/dist/data/ai/ToolPreferences.model.js.map +1 -1
  150. package/dist/data/ai/ToolPreferencesList.cjs +17 -20
  151. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
  152. package/dist/data/ai/ToolPreferencesList.d.ts +16 -7
  153. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
  154. package/dist/data/ai/ToolPreferencesList.js +18 -21
  155. package/dist/data/ai/ToolPreferencesList.js.map +1 -1
  156. package/dist/data/ai/chat-window-context.cjs +1 -1
  157. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  158. package/dist/data/ai/chat-window-context.d.ts +7 -7
  159. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  160. package/dist/data/ai/chat-window-context.js +1 -1
  161. package/dist/data/ai/chat-window-context.js.map +1 -1
  162. package/dist/data/ai/index.d.ts +3 -1
  163. package/dist/data/ai/index.d.ts.map +1 -1
  164. package/dist/data/chat/Chat.cjs +4 -2
  165. package/dist/data/chat/Chat.cjs.map +1 -1
  166. package/dist/data/chat/Chat.d.ts.map +1 -1
  167. package/dist/data/chat/Chat.js +4 -2
  168. package/dist/data/chat/Chat.js.map +1 -1
  169. package/dist/data/chat/Chat.runtime.cjs +14 -3
  170. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  171. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  172. package/dist/data/chat/Chat.runtime.js +15 -4
  173. package/dist/data/chat/Chat.runtime.js.map +1 -1
  174. package/dist/data/chat/clickyOperationsToTools.cjs +2 -1
  175. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
  176. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
  177. package/dist/data/chat/clickyOperationsToTools.js +2 -1
  178. package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
  179. package/dist/data/chat/index.d.ts +2 -1
  180. package/dist/data/chat/index.d.ts.map +1 -1
  181. package/dist/data/chat/tool-policy.cjs +132 -0
  182. package/dist/data/chat/tool-policy.cjs.map +1 -0
  183. package/dist/data/chat/tool-policy.d.ts +81 -0
  184. package/dist/data/chat/tool-policy.d.ts.map +1 -0
  185. package/dist/data/chat/tool-policy.js +132 -0
  186. package/dist/data/chat/tool-policy.js.map +1 -0
  187. package/dist/data/chat/types.cjs +20 -0
  188. package/dist/data/chat/types.cjs.map +1 -1
  189. package/dist/data/chat/types.d.ts +22 -2
  190. package/dist/data/chat/types.d.ts.map +1 -1
  191. package/dist/data/chat/types.js +20 -0
  192. package/dist/data/chat/types.js.map +1 -1
  193. package/dist/data/debugConsoleSignal.cjs +64 -0
  194. package/dist/data/debugConsoleSignal.cjs.map +1 -0
  195. package/dist/data/debugConsoleSignal.d.ts +83 -0
  196. package/dist/data/debugConsoleSignal.d.ts.map +1 -0
  197. package/dist/data/debugConsoleSignal.js +64 -0
  198. package/dist/data/debugConsoleSignal.js.map +1 -0
  199. package/dist/data/har/HarPanel.cjs +20 -14
  200. package/dist/data/har/HarPanel.cjs.map +1 -1
  201. package/dist/data/har/HarPanel.d.ts.map +1 -1
  202. package/dist/data/har/HarPanel.js +20 -14
  203. package/dist/data/har/HarPanel.js.map +1 -1
  204. package/dist/data/har/types.d.ts +18 -0
  205. package/dist/data/har/types.d.ts.map +1 -1
  206. package/dist/data/query-browser/QueryBrowser.cjs +4 -42
  207. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  208. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  209. package/dist/data/query-browser/QueryBrowser.js +5 -43
  210. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  211. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
  212. package/dist/data/query-browser/QueryBrowser.types.d.ts +0 -1
  213. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
  214. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
  215. package/dist/data/runtime/RuntimeBar.cjs +26 -41
  216. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  217. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  218. package/dist/data/runtime/RuntimeBar.js +28 -43
  219. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  220. package/dist/data/runtime/RuntimeBar.model.cjs +65 -0
  221. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
  222. package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
  223. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
  224. package/dist/data/runtime/RuntimeBar.model.js +65 -0
  225. package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
  226. package/dist/data/runtime/model-capabilities.cjs +8 -5
  227. package/dist/data/runtime/model-capabilities.cjs.map +1 -1
  228. package/dist/data/runtime/model-capabilities.d.ts +6 -1
  229. package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
  230. package/dist/data/runtime/model-capabilities.js +8 -5
  231. package/dist/data/runtime/model-capabilities.js.map +1 -1
  232. package/dist/data/runtime/runtime-mode.cjs +17 -0
  233. package/dist/data/runtime/runtime-mode.cjs.map +1 -1
  234. package/dist/data/runtime/runtime-mode.d.ts +6 -0
  235. package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
  236. package/dist/data/runtime/runtime-mode.js +17 -0
  237. package/dist/data/runtime/runtime-mode.js.map +1 -1
  238. package/dist/data/useDebugAction.cjs +29 -0
  239. package/dist/data/useDebugAction.cjs.map +1 -0
  240. package/dist/data/useDebugAction.d.ts +16 -0
  241. package/dist/data/useDebugAction.d.ts.map +1 -0
  242. package/dist/data/useDebugAction.js +29 -0
  243. package/dist/data/useDebugAction.js.map +1 -0
  244. package/dist/data/version-info.cjs +3 -3
  245. package/dist/data/version-info.js +3 -3
  246. package/dist/data.cjs +16 -8
  247. package/dist/data.cjs.map +1 -1
  248. package/dist/data.d.ts +3 -2
  249. package/dist/data.d.ts.map +1 -1
  250. package/dist/data.js +16 -8
  251. package/dist/devtools/DebugConsole.cjs +138 -0
  252. package/dist/devtools/DebugConsole.cjs.map +1 -0
  253. package/dist/devtools/DebugConsole.d.ts +23 -0
  254. package/dist/devtools/DebugConsole.d.ts.map +1 -0
  255. package/dist/devtools/DebugConsole.js +138 -0
  256. package/dist/devtools/DebugConsole.js.map +1 -0
  257. package/dist/devtools/DebugConsoleButton.cjs +59 -0
  258. package/dist/devtools/DebugConsoleButton.cjs.map +1 -0
  259. package/dist/devtools/DebugConsoleButton.d.ts +20 -0
  260. package/dist/devtools/DebugConsoleButton.d.ts.map +1 -0
  261. package/dist/devtools/DebugConsoleButton.js +59 -0
  262. package/dist/devtools/DebugConsoleButton.js.map +1 -0
  263. package/dist/devtools/DebugConsoleDock.cjs +112 -0
  264. package/dist/devtools/DebugConsoleDock.cjs.map +1 -0
  265. package/dist/devtools/DebugConsoleDock.d.ts +26 -0
  266. package/dist/devtools/DebugConsoleDock.d.ts.map +1 -0
  267. package/dist/devtools/DebugConsoleDock.js +112 -0
  268. package/dist/devtools/DebugConsoleDock.js.map +1 -0
  269. package/dist/devtools/ExecutionDetail.cjs +135 -0
  270. package/dist/devtools/ExecutionDetail.cjs.map +1 -0
  271. package/dist/devtools/ExecutionDetail.d.ts +19 -0
  272. package/dist/devtools/ExecutionDetail.d.ts.map +1 -0
  273. package/dist/devtools/ExecutionDetail.js +135 -0
  274. package/dist/devtools/ExecutionDetail.js.map +1 -0
  275. package/dist/devtools/debugClient.cjs +172 -0
  276. package/dist/devtools/debugClient.cjs.map +1 -0
  277. package/dist/devtools/debugClient.d.ts +98 -0
  278. package/dist/devtools/debugClient.d.ts.map +1 -0
  279. package/dist/devtools/debugClient.js +172 -0
  280. package/dist/devtools/debugClient.js.map +1 -0
  281. package/dist/devtools/debugStore.cjs +115 -0
  282. package/dist/devtools/debugStore.cjs.map +1 -0
  283. package/dist/devtools/debugStore.d.ts +83 -0
  284. package/dist/devtools/debugStore.d.ts.map +1 -0
  285. package/dist/devtools/debugStore.js +115 -0
  286. package/dist/devtools/debugStore.js.map +1 -0
  287. package/dist/devtools/dockState.cjs +51 -0
  288. package/dist/devtools/dockState.cjs.map +1 -0
  289. package/dist/devtools/dockState.d.ts +31 -0
  290. package/dist/devtools/dockState.d.ts.map +1 -0
  291. package/dist/devtools/dockState.js +51 -0
  292. package/dist/devtools/dockState.js.map +1 -0
  293. package/dist/devtools/tabs/ConsoleTab.cjs +36 -0
  294. package/dist/devtools/tabs/ConsoleTab.cjs.map +1 -0
  295. package/dist/devtools/tabs/ConsoleTab.d.ts +19 -0
  296. package/dist/devtools/tabs/ConsoleTab.d.ts.map +1 -0
  297. package/dist/devtools/tabs/ConsoleTab.js +36 -0
  298. package/dist/devtools/tabs/ConsoleTab.js.map +1 -0
  299. package/dist/devtools/tabs/InspectionCaches.cjs +150 -0
  300. package/dist/devtools/tabs/InspectionCaches.cjs.map +1 -0
  301. package/dist/devtools/tabs/InspectionCaches.d.ts +23 -0
  302. package/dist/devtools/tabs/InspectionCaches.d.ts.map +1 -0
  303. package/dist/devtools/tabs/InspectionCaches.js +150 -0
  304. package/dist/devtools/tabs/InspectionCaches.js.map +1 -0
  305. package/dist/devtools/tabs/InspectionTab.cjs +316 -0
  306. package/dist/devtools/tabs/InspectionTab.cjs.map +1 -0
  307. package/dist/devtools/tabs/InspectionTab.d.ts +27 -0
  308. package/dist/devtools/tabs/InspectionTab.d.ts.map +1 -0
  309. package/dist/devtools/tabs/InspectionTab.js +316 -0
  310. package/dist/devtools/tabs/InspectionTab.js.map +1 -0
  311. package/dist/devtools/tabs/NetworkTab.cjs +91 -0
  312. package/dist/devtools/tabs/NetworkTab.cjs.map +1 -0
  313. package/dist/devtools/tabs/NetworkTab.d.ts +20 -0
  314. package/dist/devtools/tabs/NetworkTab.d.ts.map +1 -0
  315. package/dist/devtools/tabs/NetworkTab.js +91 -0
  316. package/dist/devtools/tabs/NetworkTab.js.map +1 -0
  317. package/dist/devtools/tabs/QueriesTab.cjs +85 -0
  318. package/dist/devtools/tabs/QueriesTab.cjs.map +1 -0
  319. package/dist/devtools/tabs/QueriesTab.d.ts +24 -0
  320. package/dist/devtools/tabs/QueriesTab.d.ts.map +1 -0
  321. package/dist/devtools/tabs/QueriesTab.js +85 -0
  322. package/dist/devtools/tabs/QueriesTab.js.map +1 -0
  323. package/dist/devtools/types.cjs +26 -0
  324. package/dist/devtools/types.cjs.map +1 -0
  325. package/dist/devtools/types.d.ts +235 -0
  326. package/dist/devtools/types.d.ts.map +1 -0
  327. package/dist/devtools/types.js +26 -0
  328. package/dist/devtools/types.js.map +1 -0
  329. package/dist/devtools/useDebugStream.cjs +46 -0
  330. package/dist/devtools/useDebugStream.cjs.map +1 -0
  331. package/dist/devtools/useDebugStream.d.ts +23 -0
  332. package/dist/devtools/useDebugStream.d.ts.map +1 -0
  333. package/dist/devtools/useDebugStream.js +46 -0
  334. package/dist/devtools/useDebugStream.js.map +1 -0
  335. package/dist/devtools.cjs +51 -0
  336. package/dist/devtools.cjs.map +1 -0
  337. package/dist/devtools.d.ts +37 -0
  338. package/dist/devtools.d.ts.map +1 -0
  339. package/dist/devtools.js +51 -0
  340. package/dist/devtools.js.map +1 -0
  341. package/dist/icons/components/UiOpenScad.cjs +10 -0
  342. package/dist/icons/components/UiOpenScad.cjs.map +1 -0
  343. package/dist/icons/components/UiOpenScad.d.ts +9 -0
  344. package/dist/icons/components/UiOpenScad.d.ts.map +1 -0
  345. package/dist/icons/components/UiOpenScad.js +10 -0
  346. package/dist/icons/components/UiOpenScad.js.map +1 -0
  347. package/dist/icons/index.d.ts +1 -0
  348. package/dist/icons/index.d.ts.map +1 -1
  349. package/dist/icons/registry.cjs +2 -0
  350. package/dist/icons/registry.cjs.map +1 -1
  351. package/dist/icons/registry.d.ts.map +1 -1
  352. package/dist/icons/registry.js +2 -0
  353. package/dist/icons/registry.js.map +1 -1
  354. package/dist/icons.cjs +2 -0
  355. package/dist/icons.cjs.map +1 -1
  356. package/dist/icons.js +2 -0
  357. package/dist/icons.js.map +1 -1
  358. package/dist/index.cjs +20 -8
  359. package/dist/index.cjs.map +1 -1
  360. package/dist/index.js +20 -8
  361. package/dist/index.js.map +1 -1
  362. package/dist/layout/AppShell.cjs +15 -10
  363. package/dist/layout/AppShell.cjs.map +1 -1
  364. package/dist/layout/AppShell.d.ts +11 -0
  365. package/dist/layout/AppShell.d.ts.map +1 -1
  366. package/dist/layout/AppShell.js +15 -10
  367. package/dist/layout/AppShell.js.map +1 -1
  368. package/dist/layout/AppShell.nav.cjs +170 -49
  369. package/dist/layout/AppShell.nav.cjs.map +1 -1
  370. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  371. package/dist/layout/AppShell.nav.js +170 -49
  372. package/dist/layout/AppShell.nav.js.map +1 -1
  373. package/dist/overlay/CellActions.cjs +18 -124
  374. package/dist/overlay/CellActions.cjs.map +1 -1
  375. package/dist/overlay/CellActions.d.ts +1 -1
  376. package/dist/overlay/CellActions.d.ts.map +1 -1
  377. package/dist/overlay/CellActions.js +18 -124
  378. package/dist/overlay/CellActions.js.map +1 -1
  379. package/dist/overlay/ContextMenu.cjs +144 -0
  380. package/dist/overlay/ContextMenu.cjs.map +1 -0
  381. package/dist/overlay/ContextMenu.d.ts +8 -0
  382. package/dist/overlay/ContextMenu.d.ts.map +1 -0
  383. package/dist/overlay/ContextMenu.js +144 -0
  384. package/dist/overlay/ContextMenu.js.map +1 -0
  385. package/dist/profiles/connections/connectionBrowserModel.cjs +14 -65
  386. package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -1
  387. package/dist/profiles/connections/connectionBrowserModel.d.ts +35 -35
  388. package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -1
  389. package/dist/profiles/connections/connectionBrowserModel.js +14 -65
  390. package/dist/profiles/connections/connectionBrowserModel.js.map +1 -1
  391. package/dist/profiles/connections/connectionQueryWorkspace.cjs +29 -9
  392. package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -1
  393. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +3 -2
  394. package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -1
  395. package/dist/profiles/connections/connectionQueryWorkspace.js +30 -10
  396. package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -1
  397. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +15 -0
  398. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -1
  399. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +22 -1
  400. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -1
  401. package/dist/profiles/connections/connectionQueryWorkspaceModel.js +15 -0
  402. package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -1
  403. package/dist/profiles/connections/index.d.ts +1 -0
  404. package/dist/profiles/connections/index.d.ts.map +1 -1
  405. package/dist/profiles/connections/inspectionStatus.cjs +44 -0
  406. package/dist/profiles/connections/inspectionStatus.cjs.map +1 -0
  407. package/dist/profiles/connections/inspectionStatus.d.ts +5 -0
  408. package/dist/profiles/connections/inspectionStatus.d.ts.map +1 -0
  409. package/dist/profiles/connections/inspectionStatus.js +44 -0
  410. package/dist/profiles/connections/inspectionStatus.js.map +1 -0
  411. package/dist/profiles/connections/useInspection.cjs +123 -0
  412. package/dist/profiles/connections/useInspection.cjs.map +1 -0
  413. package/dist/profiles/connections/useInspection.d.ts +35 -0
  414. package/dist/profiles/connections/useInspection.d.ts.map +1 -0
  415. package/dist/profiles/connections/useInspection.js +123 -0
  416. package/dist/profiles/connections/useInspection.js.map +1 -0
  417. package/dist/profiles/editor/profileBuilderWorkspace.cjs +55 -23
  418. package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -1
  419. package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -1
  420. package/dist/profiles/editor/profileBuilderWorkspace.js +56 -24
  421. package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -1
  422. package/dist/profiles/elasticsearch/esQueryBuilder.cjs +12 -3
  423. package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -1
  424. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +2 -2
  425. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -1
  426. package/dist/profiles/elasticsearch/esQueryBuilder.js +12 -3
  427. package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -1
  428. package/dist/profiles/fields/profileFieldEditor.cjs +137 -22
  429. package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -1
  430. package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -1
  431. package/dist/profiles/fields/profileFieldEditor.js +137 -22
  432. package/dist/profiles/fields/profileFieldEditor.js.map +1 -1
  433. package/dist/profiles/fields/profileFieldFilterEditor.cjs +171 -82
  434. package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
  435. package/dist/profiles/fields/profileFieldFilterEditor.d.ts +0 -9
  436. package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -1
  437. package/dist/profiles/fields/profileFieldFilterEditor.js +174 -85
  438. package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
  439. package/dist/profiles/fields/profileFieldIcons.cjs +6 -3
  440. package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
  441. package/dist/profiles/fields/profileFieldIcons.js +6 -3
  442. package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
  443. package/dist/profiles/query/profileSampleFilterLookup.cjs +34 -0
  444. package/dist/profiles/query/profileSampleFilterLookup.cjs.map +1 -0
  445. package/dist/profiles/query/profileSampleFilterLookup.d.ts +12 -0
  446. package/dist/profiles/query/profileSampleFilterLookup.d.ts.map +1 -0
  447. package/dist/profiles/query/profileSampleFilterLookup.js +34 -0
  448. package/dist/profiles/query/profileSampleFilterLookup.js.map +1 -0
  449. package/dist/profiles/query/profileSamplePayload.cjs +6 -4
  450. package/dist/profiles/query/profileSamplePayload.cjs.map +1 -1
  451. package/dist/profiles/query/profileSamplePayload.d.ts +11 -4
  452. package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -1
  453. package/dist/profiles/query/profileSamplePayload.js +6 -4
  454. package/dist/profiles/query/profileSamplePayload.js.map +1 -1
  455. package/dist/profiles/query/profileSampleResult.cjs +26 -0
  456. package/dist/profiles/query/profileSampleResult.cjs.map +1 -0
  457. package/dist/profiles/query/profileSampleResult.d.ts +11 -0
  458. package/dist/profiles/query/profileSampleResult.d.ts.map +1 -0
  459. package/dist/profiles/query/profileSampleResult.js +26 -0
  460. package/dist/profiles/query/profileSampleResult.js.map +1 -0
  461. package/dist/profiles/query/queryTargetPicker.cjs +5 -3
  462. package/dist/profiles/query/queryTargetPicker.cjs.map +1 -1
  463. package/dist/profiles/query/queryTargetPicker.d.ts +3 -2
  464. package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -1
  465. package/dist/profiles/query/queryTargetPicker.js +5 -3
  466. package/dist/profiles/query/queryTargetPicker.js.map +1 -1
  467. package/dist/profiles/wizard/profileWizard.cjs +14 -5
  468. package/dist/profiles/wizard/profileWizard.cjs.map +1 -1
  469. package/dist/profiles/wizard/profileWizard.d.ts.map +1 -1
  470. package/dist/profiles/wizard/profileWizard.js +15 -6
  471. package/dist/profiles/wizard/profileWizard.js.map +1 -1
  472. package/dist/profiles/wizard/profileWizardModel.cjs +35 -6
  473. package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
  474. package/dist/profiles/wizard/profileWizardModel.d.ts +29 -4
  475. package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
  476. package/dist/profiles/wizard/profileWizardModel.js +35 -6
  477. package/dist/profiles/wizard/profileWizardModel.js.map +1 -1
  478. package/dist/profiles/wizard/profileWizardQueryStep.cjs +44 -11
  479. package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -1
  480. package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -1
  481. package/dist/profiles/wizard/profileWizardQueryStep.js +46 -13
  482. package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -1
  483. package/dist/profiles/wizard/profileWizardSteps.cjs +33 -2
  484. package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -1
  485. package/dist/profiles/wizard/profileWizardSteps.d.ts +11 -2
  486. package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -1
  487. package/dist/profiles/wizard/profileWizardSteps.js +33 -2
  488. package/dist/profiles/wizard/profileWizardSteps.js.map +1 -1
  489. package/dist/profiles.cjs +8 -2
  490. package/dist/profiles.cjs.map +1 -1
  491. package/dist/profiles.js +10 -4
  492. package/dist/profiles.js.map +1 -1
  493. package/dist/rpc/FilterForm.cjs +21 -237
  494. package/dist/rpc/FilterForm.cjs.map +1 -1
  495. package/dist/rpc/FilterForm.d.ts +3 -1
  496. package/dist/rpc/FilterForm.d.ts.map +1 -1
  497. package/dist/rpc/FilterForm.js +21 -237
  498. package/dist/rpc/FilterForm.js.map +1 -1
  499. package/dist/rpc/FilterFormFields.cjs +240 -0
  500. package/dist/rpc/FilterFormFields.cjs.map +1 -0
  501. package/dist/rpc/FilterFormFields.d.ts +12 -0
  502. package/dist/rpc/FilterFormFields.d.ts.map +1 -0
  503. package/dist/rpc/FilterFormFields.js +240 -0
  504. package/dist/rpc/FilterFormFields.js.map +1 -0
  505. package/dist/rpc/router.cjs +3 -2
  506. package/dist/rpc/router.cjs.map +1 -1
  507. package/dist/rpc/router.d.ts.map +1 -1
  508. package/dist/rpc/router.js +3 -2
  509. package/dist/rpc/router.js.map +1 -1
  510. package/dist/rpc/types.cjs.map +1 -1
  511. package/dist/rpc/types.d.ts +3 -1
  512. package/dist/rpc/types.d.ts.map +1 -1
  513. package/dist/rpc/types.js.map +1 -1
  514. package/dist/styles.css +1 -1
  515. package/package.json +6 -1
  516. package/dist/data/query-info/QueryInfoDialog.cjs +0 -106
  517. package/dist/data/query-info/QueryInfoDialog.cjs.map +0 -1
  518. package/dist/data/query-info/QueryInfoDialog.d.ts +0 -16
  519. package/dist/data/query-info/QueryInfoDialog.d.ts.map +0 -1
  520. package/dist/data/query-info/QueryInfoDialog.js +0 -106
  521. package/dist/data/query-info/QueryInfoDialog.js.map +0 -1
  522. package/dist/data/query-info/index.d.ts +0 -4
  523. package/dist/data/query-info/index.d.ts.map +0 -1
  524. package/dist/data/query-info/queryInfo.cjs +0 -42
  525. package/dist/data/query-info/queryInfo.cjs.map +0 -1
  526. package/dist/data/query-info/queryInfo.d.ts +0 -45
  527. package/dist/data/query-info/queryInfo.d.ts.map +0 -1
  528. package/dist/data/query-info/queryInfo.js +0 -42
  529. package/dist/data/query-info/queryInfo.js.map +0 -1
  530. package/dist/data/query-info/useQueryInfo.cjs +0 -48
  531. package/dist/data/query-info/useQueryInfo.cjs.map +0 -1
  532. package/dist/data/query-info/useQueryInfo.d.ts +0 -26
  533. package/dist/data/query-info/useQueryInfo.d.ts.map +0 -1
  534. package/dist/data/query-info/useQueryInfo.js +0 -48
  535. package/dist/data/query-info/useQueryInfo.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { LogsTable } from "../../data/LogsTable.js";
4
+ function ConsoleTab({ lines, recordId, search }) {
5
+ const rows = useMemo(() => {
6
+ const scoped = recordId ? lines.filter((line) => line.recordId === recordId) : lines;
7
+ return scoped.map(toLogRecord);
8
+ }, [lines, recordId]);
9
+ if (rows.length === 0) {
10
+ return /* @__PURE__ */ jsx("div", { className: "p-density-6 text-center text-muted-foreground text-sm", children: recordId ? "This capture logged nothing." : "No server log lines yet. The tail starts when the console connects." });
11
+ }
12
+ return /* @__PURE__ */ jsx(
13
+ LogsTable,
14
+ {
15
+ logs: rows,
16
+ ...search === void 0 ? { showGlobalFilter: true } : { globalFilter: search },
17
+ showRawDetails: true
18
+ }
19
+ );
20
+ }
21
+ function toLogRecord(line) {
22
+ return {
23
+ timestamp: line.time,
24
+ level: line.level,
25
+ logger: line.logger ?? "",
26
+ message: line.message,
27
+ tags: [line.source, line.event, line.recordId ? `record:${line.recordId.slice(0, 8)}` : ""].filter(
28
+ Boolean
29
+ ),
30
+ ...line.values
31
+ };
32
+ }
33
+ export {
34
+ ConsoleTab
35
+ };
36
+ //# sourceMappingURL=ConsoleTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleTab.js","sources":["../../../src/devtools/tabs/ConsoleTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { LogsTable } from \"../../data/LogsTable\";\nimport type { DebugLogLine } from \"../types\";\n\n/**\n * The server's own log, live in the browser.\n *\n * Two sources are merged here, and the seam is labelled rather than hidden.\n * A `request` line was captured structurally, with its values intact, at the\n * level the console armed; a `process` line was scraped from the writer the\n * logger was already using and has been rendered to text by the time it\n * arrives. Presenting them as one undifferentiated stream would imply the\n * second is as trustworthy as the first.\n */\n\nexport type ConsoleTabProps = {\n lines: DebugLogLine[];\n /** Show only lines belonging to this record. */\n recordId?: string | undefined;\n search?: string | undefined;\n};\n\nexport function ConsoleTab({ lines, recordId, search }: ConsoleTabProps) {\n const rows = useMemo(() => {\n const scoped = recordId ? lines.filter((line) => line.recordId === recordId) : lines;\n return scoped.map(toLogRecord);\n }, [lines, recordId]);\n\n if (rows.length === 0) {\n return (\n <div className=\"p-density-6 text-center text-muted-foreground text-sm\">\n {recordId\n ? \"This capture logged nothing.\"\n : \"No server log lines yet. The tail starts when the console connects.\"}\n </div>\n );\n }\n\n return (\n <LogsTable\n logs={rows}\n {...(search === undefined ? { showGlobalFilter: true } : { globalFilter: search })}\n showRawDetails\n />\n );\n}\n\n/**\n * Maps a line onto the canonical log row LogsTable normalizes.\n *\n * `seam` rather than an extra column: the tag list is where a row's provenance\n * already lives, and a column that reads \"request\" on most rows and \"process\"\n * on the rest would cost width to say very little.\n */\nfunction toLogRecord(line: DebugLogLine): Record<string, unknown> {\n return {\n timestamp: line.time,\n level: line.level,\n logger: line.logger ?? \"\",\n message: line.message,\n tags: [line.source, line.event, line.recordId ? `record:${line.recordId.slice(0, 8)}` : \"\"].filter(\n Boolean,\n ),\n ...line.values,\n };\n}\n"],"names":[],"mappings":";;;AAsBO,SAAS,WAAW,EAAE,OAAO,UAAU,UAA2B;AACvE,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,SAAS,WAAW,MAAM,OAAO,CAAC,SAAS,KAAK,aAAa,QAAQ,IAAI;AAC/E,WAAO,OAAO,IAAI,WAAW;AAAA,EAC/B,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,MAAI,KAAK,WAAW,GAAG;AACrB,+BACG,OAAA,EAAI,WAAU,yDACZ,UAAA,WACG,iCACA,uEACN;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACL,GAAI,WAAW,SAAY,EAAE,kBAAkB,SAAS,EAAE,cAAc,OAAA;AAAA,MACzE,gBAAc;AAAA,IAAA;AAAA,EAAA;AAGpB;AASA,SAAS,YAAY,MAA6C;AAChE,SAAO;AAAA,IACL,WAAW,KAAK;AAAA,IAChB,OAAO,KAAK;AAAA,IACZ,QAAQ,KAAK,UAAU;AAAA,IACvB,SAAS,KAAK;AAAA,IACd,MAAM,CAAC,KAAK,QAAQ,KAAK,OAAO,KAAK,WAAW,UAAU,KAAK,SAAS,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AAAA,MAC1F;AAAA,IAAA;AAAA,IAEF,GAAG,KAAK;AAAA,EAAA;AAEZ;"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const button = require("../../components/button.cjs");
6
+ const DataTable = require("../../data/DataTable.cjs");
7
+ const debugClient = require("../debugClient.cjs");
8
+ function InspectionCaches({
9
+ client,
10
+ refreshInspection,
11
+ onRefreshInspectionChange,
12
+ caches: provided
13
+ }) {
14
+ const { caches, error, reload } = useCaches(client, provided);
15
+ const [flushing, setFlushing] = react.useState(null);
16
+ const [outcome, setOutcome] = react.useState();
17
+ const flush = react.useCallback(
18
+ async (policy) => {
19
+ setFlushing(policy ?? "*");
20
+ setOutcome(void 0);
21
+ try {
22
+ const result = await (client ?? new debugClient.DebugClient()).flushInspection(
23
+ policy ? { policy } : {}
24
+ );
25
+ setOutcome(
26
+ result.entries === 0 ? "Nothing was cached to drop." : `Dropped ${result.entries} ${result.entries === 1 ? "entry" : "entries"} from ${result.caches.length} ${result.caches.length === 1 ? "cache" : "caches"}.`
27
+ );
28
+ await reload();
29
+ } catch (failure) {
30
+ setOutcome(failure instanceof Error ? failure.message : String(failure));
31
+ } finally {
32
+ setFlushing(null);
33
+ }
34
+ },
35
+ [client, reload]
36
+ );
37
+ const columns = [
38
+ { key: "policy", label: "Cache", grow: true, minWidth: 200 },
39
+ {
40
+ key: "entries",
41
+ label: "Entries",
42
+ align: "right",
43
+ shrink: true,
44
+ render: (value, row) => `${Number(value ?? 0)} / ${row.maxEntries}`,
45
+ sortValue: (value) => Number(value ?? 0)
46
+ },
47
+ {
48
+ key: "filling",
49
+ label: "Filling",
50
+ align: "right",
51
+ shrink: true,
52
+ // Blank rather than "0": a column of zeros with one occasional 1 buries
53
+ // the only value that means anything here.
54
+ render: (value) => Number(value ?? 0) > 0 ? String(value) : ""
55
+ },
56
+ {
57
+ key: "freshForSeconds",
58
+ label: "Fresh for",
59
+ align: "right",
60
+ shrink: true,
61
+ render: (value) => formatDuration(Number(value ?? 0)),
62
+ sortValue: (value) => Number(value ?? 0)
63
+ },
64
+ {
65
+ key: "id",
66
+ label: "",
67
+ shrink: true,
68
+ render: (_value, row) => /* @__PURE__ */ jsxRuntime.jsx(
69
+ button.Button,
70
+ {
71
+ size: "sm",
72
+ variant: "ghost",
73
+ disabled: flushing !== null || row.entries === 0,
74
+ onClick: () => void flush(row.policy),
75
+ children: flushing === row.policy ? "Flushing…" : "Flush"
76
+ }
77
+ )
78
+ }
79
+ ];
80
+ const held = caches.reduce((total, cache) => total + cache.entries, 0);
81
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-density-2", children: [
82
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-density-2", children: [
83
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: "Metadata caches" }),
84
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-density-3", children: [
85
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-density-1 text-xs", children: [
86
+ /* @__PURE__ */ jsxRuntime.jsx(
87
+ "input",
88
+ {
89
+ type: "checkbox",
90
+ checked: refreshInspection,
91
+ onChange: (event) => onRefreshInspectionChange(event.target.checked)
92
+ }
93
+ ),
94
+ /* @__PURE__ */ jsxRuntime.jsx("span", { title: "Every request this console arms rebuilds the metadata it reads, instead of using the cache. Costs only your requests.", children: "Rebuild on every request" })
95
+ ] }),
96
+ /* @__PURE__ */ jsxRuntime.jsx(
97
+ button.Button,
98
+ {
99
+ size: "sm",
100
+ variant: "outline",
101
+ disabled: flushing !== null || held === 0,
102
+ onClick: () => void flush(),
103
+ title: "Drops cached metadata for every request that follows, not just yours.",
104
+ children: flushing === "*" ? "Flushing…" : "Flush all"
105
+ }
106
+ )
107
+ ] })
108
+ ] }),
109
+ refreshInspection ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-xs", children: "Rebuilding on every request. Pages will be slower until this is switched off — it is dropped automatically when the console closes." }) : null,
110
+ outcome ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-xs", children: outcome }) : null,
111
+ error ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-destructive text-xs", children: error }) : null,
112
+ /* @__PURE__ */ jsxRuntime.jsx(
113
+ DataTable.DataTable,
114
+ {
115
+ data: caches.map((cache) => ({ ...cache, id: cache.policy })),
116
+ columns,
117
+ emptyMessage: "This server registered no metadata caches."
118
+ }
119
+ )
120
+ ] });
121
+ }
122
+ function useCaches(client, provided) {
123
+ const [caches, setCaches] = react.useState(provided ?? []);
124
+ const [error, setError] = react.useState();
125
+ const reload = react.useCallback(async () => {
126
+ if (provided !== void 0) return;
127
+ try {
128
+ setCaches((await (client ?? new debugClient.DebugClient()).inspection()).caches);
129
+ setError(void 0);
130
+ } catch (failure) {
131
+ setError(failure instanceof Error ? failure.message : String(failure));
132
+ }
133
+ }, [client, provided]);
134
+ react.useEffect(() => {
135
+ if (provided !== void 0) {
136
+ setCaches(provided);
137
+ return;
138
+ }
139
+ void reload();
140
+ }, [provided, reload]);
141
+ return { caches, error, reload };
142
+ }
143
+ function formatDuration(seconds) {
144
+ if (seconds < 60) return `${seconds}s`;
145
+ if (seconds < 3600) return `${Math.round(seconds / 60)}m`;
146
+ if (seconds < 86400) return `${Math.round(seconds / 3600)}h`;
147
+ return `${Math.round(seconds / 86400)}d`;
148
+ }
149
+ exports.InspectionCaches = InspectionCaches;
150
+ //# sourceMappingURL=InspectionCaches.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InspectionCaches.cjs","sources":["../../../src/devtools/tabs/InspectionCaches.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { DataTable, type DataTableColumn } from \"../../data/DataTable\";\nimport { DebugClient } from \"../debugClient\";\nimport type { InspectionCacheStats } from \"../types\";\n\n/**\n * The controls for the metadata caches: what the server is holding, and the two\n * ways to make it stop.\n *\n * The two are not interchangeable and the wording says so. **Rebuild on every\n * request** costs the caller who asked and leaves everyone else reading the\n * cache; **flush** drops the entry for every request that follows. One is a way\n * to check your own page, the other is an intervention on a running server, and\n * a console that presented them as the same button would invite the second when\n * the first was meant.\n */\n\nexport type InspectionCachesProps = {\n client?: DebugClient | undefined;\n /** Rebuild every metadata lookup on subsequent requests. */\n refreshInspection: boolean;\n onRefreshInspectionChange: (refresh: boolean) => void;\n /** Pre-loaded rows, for a story or a test that has no server. */\n caches?: InspectionCacheStats[] | undefined;\n};\n\ntype CacheRow = Record<string, unknown> & InspectionCacheStats & { id: string };\n\nexport function InspectionCaches({\n client,\n refreshInspection,\n onRefreshInspectionChange,\n caches: provided,\n}: InspectionCachesProps) {\n const { caches, error, reload } = useCaches(client, provided);\n const [flushing, setFlushing] = useState<string | null>(null);\n const [outcome, setOutcome] = useState<string | undefined>();\n\n const flush = useCallback(\n async (policy?: string) => {\n setFlushing(policy ?? \"*\");\n setOutcome(undefined);\n try {\n const result = await (client ?? new DebugClient()).flushInspection(\n policy ? { policy } : {},\n );\n // Stated either way. An empty flush and a broken one look identical\n // without the count, and the operator would conclude the second.\n setOutcome(\n result.entries === 0\n ? \"Nothing was cached to drop.\"\n : `Dropped ${result.entries} ${result.entries === 1 ? \"entry\" : \"entries\"} from ${result.caches.length} ${result.caches.length === 1 ? \"cache\" : \"caches\"}.`,\n );\n await reload();\n } catch (failure: unknown) {\n setOutcome(failure instanceof Error ? failure.message : String(failure));\n } finally {\n setFlushing(null);\n }\n },\n [client, reload],\n );\n\n const columns: DataTableColumn<CacheRow>[] = [\n { key: \"policy\", label: \"Cache\", grow: true, minWidth: 200 },\n {\n key: \"entries\",\n label: \"Entries\",\n align: \"right\",\n shrink: true,\n render: (value, row) => `${Number(value ?? 0)} / ${row.maxEntries}`,\n sortValue: (value) => Number(value ?? 0),\n },\n {\n key: \"filling\",\n label: \"Filling\",\n align: \"right\",\n shrink: true,\n // Blank rather than \"0\": a column of zeros with one occasional 1 buries\n // the only value that means anything here.\n render: (value) => (Number(value ?? 0) > 0 ? String(value) : \"\"),\n },\n {\n key: \"freshForSeconds\",\n label: \"Fresh for\",\n align: \"right\",\n shrink: true,\n render: (value) => formatDuration(Number(value ?? 0)),\n sortValue: (value) => Number(value ?? 0),\n },\n {\n key: \"id\",\n label: \"\",\n shrink: true,\n render: (_value, row) => (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={flushing !== null || row.entries === 0}\n onClick={() => void flush(row.policy)}\n >\n {flushing === row.policy ? \"Flushing…\" : \"Flush\"}\n </Button>\n ),\n },\n ];\n\n const held = caches.reduce((total, cache) => total + cache.entries, 0);\n\n return (\n <section className=\"flex flex-col gap-density-2\">\n <div className=\"flex flex-wrap items-center justify-between gap-density-2\">\n <h3 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Metadata caches\n </h3>\n <div className=\"flex items-center gap-density-3\">\n <label className=\"flex items-center gap-density-1 text-xs\">\n <input\n type=\"checkbox\"\n checked={refreshInspection}\n onChange={(event) => onRefreshInspectionChange(event.target.checked)}\n />\n <span title=\"Every request this console arms rebuilds the metadata it reads, instead of using the cache. Costs only your requests.\">\n Rebuild on every request\n </span>\n </label>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={flushing !== null || held === 0}\n onClick={() => void flush()}\n title=\"Drops cached metadata for every request that follows, not just yours.\"\n >\n {flushing === \"*\" ? \"Flushing…\" : \"Flush all\"}\n </Button>\n </div>\n </div>\n\n {refreshInspection ? (\n <p className=\"text-muted-foreground text-xs\">\n Rebuilding on every request. Pages will be slower until this is switched off — it is\n dropped automatically when the console closes.\n </p>\n ) : null}\n {outcome ? <p className=\"text-muted-foreground text-xs\">{outcome}</p> : null}\n {error ? <p className=\"text-destructive text-xs\">{error}</p> : null}\n\n <DataTable<CacheRow>\n data={caches.map((cache) => ({ ...cache, id: cache.policy }))}\n columns={columns}\n emptyMessage=\"This server registered no metadata caches.\"\n />\n </section>\n );\n}\n\nfunction useCaches(client: DebugClient | undefined, provided: InspectionCacheStats[] | undefined) {\n const [caches, setCaches] = useState<InspectionCacheStats[]>(provided ?? []);\n const [error, setError] = useState<string | undefined>();\n\n const reload = useCallback(async () => {\n if (provided !== undefined) return;\n try {\n setCaches((await (client ?? new DebugClient()).inspection()).caches);\n setError(undefined);\n } catch (failure: unknown) {\n setError(failure instanceof Error ? failure.message : String(failure));\n }\n }, [client, provided]);\n\n useEffect(() => {\n if (provided !== undefined) {\n setCaches(provided);\n return;\n }\n void reload();\n }, [provided, reload]);\n\n return { caches, error, reload };\n}\n\nfunction formatDuration(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n if (seconds < 3600) return `${Math.round(seconds / 60)}m`;\n if (seconds < 86_400) return `${Math.round(seconds / 3600)}h`;\n return `${Math.round(seconds / 86_400)}d`;\n}\n"],"names":["useState","useCallback","DebugClient","jsx","Button","jsxs","DataTable","useEffect"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { DebugClient } from '../debugClient';
2
+ import { InspectionCacheStats } from '../types';
3
+ /**
4
+ * The controls for the metadata caches: what the server is holding, and the two
5
+ * ways to make it stop.
6
+ *
7
+ * The two are not interchangeable and the wording says so. **Rebuild on every
8
+ * request** costs the caller who asked and leaves everyone else reading the
9
+ * cache; **flush** drops the entry for every request that follows. One is a way
10
+ * to check your own page, the other is an intervention on a running server, and
11
+ * a console that presented them as the same button would invite the second when
12
+ * the first was meant.
13
+ */
14
+ export type InspectionCachesProps = {
15
+ client?: DebugClient | undefined;
16
+ /** Rebuild every metadata lookup on subsequent requests. */
17
+ refreshInspection: boolean;
18
+ onRefreshInspectionChange: (refresh: boolean) => void;
19
+ /** Pre-loaded rows, for a story or a test that has no server. */
20
+ caches?: InspectionCacheStats[] | undefined;
21
+ };
22
+ export declare function InspectionCaches({ client, refreshInspection, onRefreshInspectionChange, caches: provided, }: InspectionCachesProps): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=InspectionCaches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InspectionCaches.d.ts","sourceRoot":"","sources":["../../../src/devtools/tabs/InspectionCaches.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,4DAA4D;IAC5D,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,iEAAiE;IACjE,MAAM,CAAC,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;CAC7C,CAAC;AAIF,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,iBAAiB,EACjB,yBAAyB,EACzB,MAAM,EAAE,QAAQ,GACjB,EAAE,qBAAqB,2CAyHvB"}
@@ -0,0 +1,150 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useCallback, useEffect } from "react";
3
+ import { Button } from "../../components/button.js";
4
+ import { DataTable } from "../../data/DataTable.js";
5
+ import { DebugClient } from "../debugClient.js";
6
+ function InspectionCaches({
7
+ client,
8
+ refreshInspection,
9
+ onRefreshInspectionChange,
10
+ caches: provided
11
+ }) {
12
+ const { caches, error, reload } = useCaches(client, provided);
13
+ const [flushing, setFlushing] = useState(null);
14
+ const [outcome, setOutcome] = useState();
15
+ const flush = useCallback(
16
+ async (policy) => {
17
+ setFlushing(policy ?? "*");
18
+ setOutcome(void 0);
19
+ try {
20
+ const result = await (client ?? new DebugClient()).flushInspection(
21
+ policy ? { policy } : {}
22
+ );
23
+ setOutcome(
24
+ result.entries === 0 ? "Nothing was cached to drop." : `Dropped ${result.entries} ${result.entries === 1 ? "entry" : "entries"} from ${result.caches.length} ${result.caches.length === 1 ? "cache" : "caches"}.`
25
+ );
26
+ await reload();
27
+ } catch (failure) {
28
+ setOutcome(failure instanceof Error ? failure.message : String(failure));
29
+ } finally {
30
+ setFlushing(null);
31
+ }
32
+ },
33
+ [client, reload]
34
+ );
35
+ const columns = [
36
+ { key: "policy", label: "Cache", grow: true, minWidth: 200 },
37
+ {
38
+ key: "entries",
39
+ label: "Entries",
40
+ align: "right",
41
+ shrink: true,
42
+ render: (value, row) => `${Number(value ?? 0)} / ${row.maxEntries}`,
43
+ sortValue: (value) => Number(value ?? 0)
44
+ },
45
+ {
46
+ key: "filling",
47
+ label: "Filling",
48
+ align: "right",
49
+ shrink: true,
50
+ // Blank rather than "0": a column of zeros with one occasional 1 buries
51
+ // the only value that means anything here.
52
+ render: (value) => Number(value ?? 0) > 0 ? String(value) : ""
53
+ },
54
+ {
55
+ key: "freshForSeconds",
56
+ label: "Fresh for",
57
+ align: "right",
58
+ shrink: true,
59
+ render: (value) => formatDuration(Number(value ?? 0)),
60
+ sortValue: (value) => Number(value ?? 0)
61
+ },
62
+ {
63
+ key: "id",
64
+ label: "",
65
+ shrink: true,
66
+ render: (_value, row) => /* @__PURE__ */ jsx(
67
+ Button,
68
+ {
69
+ size: "sm",
70
+ variant: "ghost",
71
+ disabled: flushing !== null || row.entries === 0,
72
+ onClick: () => void flush(row.policy),
73
+ children: flushing === row.policy ? "Flushing…" : "Flush"
74
+ }
75
+ )
76
+ }
77
+ ];
78
+ const held = caches.reduce((total, cache) => total + cache.entries, 0);
79
+ return /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-density-2", children: [
80
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-density-2", children: [
81
+ /* @__PURE__ */ jsx("h3", { className: "font-medium text-muted-foreground text-xs uppercase tracking-wide", children: "Metadata caches" }),
82
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-density-3", children: [
83
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-density-1 text-xs", children: [
84
+ /* @__PURE__ */ jsx(
85
+ "input",
86
+ {
87
+ type: "checkbox",
88
+ checked: refreshInspection,
89
+ onChange: (event) => onRefreshInspectionChange(event.target.checked)
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsx("span", { title: "Every request this console arms rebuilds the metadata it reads, instead of using the cache. Costs only your requests.", children: "Rebuild on every request" })
93
+ ] }),
94
+ /* @__PURE__ */ jsx(
95
+ Button,
96
+ {
97
+ size: "sm",
98
+ variant: "outline",
99
+ disabled: flushing !== null || held === 0,
100
+ onClick: () => void flush(),
101
+ title: "Drops cached metadata for every request that follows, not just yours.",
102
+ children: flushing === "*" ? "Flushing…" : "Flush all"
103
+ }
104
+ )
105
+ ] })
106
+ ] }),
107
+ refreshInspection ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: "Rebuilding on every request. Pages will be slower until this is switched off — it is dropped automatically when the console closes." }) : null,
108
+ outcome ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: outcome }) : null,
109
+ error ? /* @__PURE__ */ jsx("p", { className: "text-destructive text-xs", children: error }) : null,
110
+ /* @__PURE__ */ jsx(
111
+ DataTable,
112
+ {
113
+ data: caches.map((cache) => ({ ...cache, id: cache.policy })),
114
+ columns,
115
+ emptyMessage: "This server registered no metadata caches."
116
+ }
117
+ )
118
+ ] });
119
+ }
120
+ function useCaches(client, provided) {
121
+ const [caches, setCaches] = useState(provided ?? []);
122
+ const [error, setError] = useState();
123
+ const reload = useCallback(async () => {
124
+ if (provided !== void 0) return;
125
+ try {
126
+ setCaches((await (client ?? new DebugClient()).inspection()).caches);
127
+ setError(void 0);
128
+ } catch (failure) {
129
+ setError(failure instanceof Error ? failure.message : String(failure));
130
+ }
131
+ }, [client, provided]);
132
+ useEffect(() => {
133
+ if (provided !== void 0) {
134
+ setCaches(provided);
135
+ return;
136
+ }
137
+ void reload();
138
+ }, [provided, reload]);
139
+ return { caches, error, reload };
140
+ }
141
+ function formatDuration(seconds) {
142
+ if (seconds < 60) return `${seconds}s`;
143
+ if (seconds < 3600) return `${Math.round(seconds / 60)}m`;
144
+ if (seconds < 86400) return `${Math.round(seconds / 3600)}h`;
145
+ return `${Math.round(seconds / 86400)}d`;
146
+ }
147
+ export {
148
+ InspectionCaches
149
+ };
150
+ //# sourceMappingURL=InspectionCaches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InspectionCaches.js","sources":["../../../src/devtools/tabs/InspectionCaches.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { DataTable, type DataTableColumn } from \"../../data/DataTable\";\nimport { DebugClient } from \"../debugClient\";\nimport type { InspectionCacheStats } from \"../types\";\n\n/**\n * The controls for the metadata caches: what the server is holding, and the two\n * ways to make it stop.\n *\n * The two are not interchangeable and the wording says so. **Rebuild on every\n * request** costs the caller who asked and leaves everyone else reading the\n * cache; **flush** drops the entry for every request that follows. One is a way\n * to check your own page, the other is an intervention on a running server, and\n * a console that presented them as the same button would invite the second when\n * the first was meant.\n */\n\nexport type InspectionCachesProps = {\n client?: DebugClient | undefined;\n /** Rebuild every metadata lookup on subsequent requests. */\n refreshInspection: boolean;\n onRefreshInspectionChange: (refresh: boolean) => void;\n /** Pre-loaded rows, for a story or a test that has no server. */\n caches?: InspectionCacheStats[] | undefined;\n};\n\ntype CacheRow = Record<string, unknown> & InspectionCacheStats & { id: string };\n\nexport function InspectionCaches({\n client,\n refreshInspection,\n onRefreshInspectionChange,\n caches: provided,\n}: InspectionCachesProps) {\n const { caches, error, reload } = useCaches(client, provided);\n const [flushing, setFlushing] = useState<string | null>(null);\n const [outcome, setOutcome] = useState<string | undefined>();\n\n const flush = useCallback(\n async (policy?: string) => {\n setFlushing(policy ?? \"*\");\n setOutcome(undefined);\n try {\n const result = await (client ?? new DebugClient()).flushInspection(\n policy ? { policy } : {},\n );\n // Stated either way. An empty flush and a broken one look identical\n // without the count, and the operator would conclude the second.\n setOutcome(\n result.entries === 0\n ? \"Nothing was cached to drop.\"\n : `Dropped ${result.entries} ${result.entries === 1 ? \"entry\" : \"entries\"} from ${result.caches.length} ${result.caches.length === 1 ? \"cache\" : \"caches\"}.`,\n );\n await reload();\n } catch (failure: unknown) {\n setOutcome(failure instanceof Error ? failure.message : String(failure));\n } finally {\n setFlushing(null);\n }\n },\n [client, reload],\n );\n\n const columns: DataTableColumn<CacheRow>[] = [\n { key: \"policy\", label: \"Cache\", grow: true, minWidth: 200 },\n {\n key: \"entries\",\n label: \"Entries\",\n align: \"right\",\n shrink: true,\n render: (value, row) => `${Number(value ?? 0)} / ${row.maxEntries}`,\n sortValue: (value) => Number(value ?? 0),\n },\n {\n key: \"filling\",\n label: \"Filling\",\n align: \"right\",\n shrink: true,\n // Blank rather than \"0\": a column of zeros with one occasional 1 buries\n // the only value that means anything here.\n render: (value) => (Number(value ?? 0) > 0 ? String(value) : \"\"),\n },\n {\n key: \"freshForSeconds\",\n label: \"Fresh for\",\n align: \"right\",\n shrink: true,\n render: (value) => formatDuration(Number(value ?? 0)),\n sortValue: (value) => Number(value ?? 0),\n },\n {\n key: \"id\",\n label: \"\",\n shrink: true,\n render: (_value, row) => (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={flushing !== null || row.entries === 0}\n onClick={() => void flush(row.policy)}\n >\n {flushing === row.policy ? \"Flushing…\" : \"Flush\"}\n </Button>\n ),\n },\n ];\n\n const held = caches.reduce((total, cache) => total + cache.entries, 0);\n\n return (\n <section className=\"flex flex-col gap-density-2\">\n <div className=\"flex flex-wrap items-center justify-between gap-density-2\">\n <h3 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Metadata caches\n </h3>\n <div className=\"flex items-center gap-density-3\">\n <label className=\"flex items-center gap-density-1 text-xs\">\n <input\n type=\"checkbox\"\n checked={refreshInspection}\n onChange={(event) => onRefreshInspectionChange(event.target.checked)}\n />\n <span title=\"Every request this console arms rebuilds the metadata it reads, instead of using the cache. Costs only your requests.\">\n Rebuild on every request\n </span>\n </label>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={flushing !== null || held === 0}\n onClick={() => void flush()}\n title=\"Drops cached metadata for every request that follows, not just yours.\"\n >\n {flushing === \"*\" ? \"Flushing…\" : \"Flush all\"}\n </Button>\n </div>\n </div>\n\n {refreshInspection ? (\n <p className=\"text-muted-foreground text-xs\">\n Rebuilding on every request. Pages will be slower until this is switched off — it is\n dropped automatically when the console closes.\n </p>\n ) : null}\n {outcome ? <p className=\"text-muted-foreground text-xs\">{outcome}</p> : null}\n {error ? <p className=\"text-destructive text-xs\">{error}</p> : null}\n\n <DataTable<CacheRow>\n data={caches.map((cache) => ({ ...cache, id: cache.policy }))}\n columns={columns}\n emptyMessage=\"This server registered no metadata caches.\"\n />\n </section>\n );\n}\n\nfunction useCaches(client: DebugClient | undefined, provided: InspectionCacheStats[] | undefined) {\n const [caches, setCaches] = useState<InspectionCacheStats[]>(provided ?? []);\n const [error, setError] = useState<string | undefined>();\n\n const reload = useCallback(async () => {\n if (provided !== undefined) return;\n try {\n setCaches((await (client ?? new DebugClient()).inspection()).caches);\n setError(undefined);\n } catch (failure: unknown) {\n setError(failure instanceof Error ? failure.message : String(failure));\n }\n }, [client, provided]);\n\n useEffect(() => {\n if (provided !== undefined) {\n setCaches(provided);\n return;\n }\n void reload();\n }, [provided, reload]);\n\n return { caches, error, reload };\n}\n\nfunction formatDuration(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n if (seconds < 3600) return `${Math.round(seconds / 60)}m`;\n if (seconds < 86_400) return `${Math.round(seconds / 3600)}h`;\n return `${Math.round(seconds / 86_400)}d`;\n}\n"],"names":[],"mappings":"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"}