@flanksource/clicky-ui 0.3.21 → 0.3.22

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 (1514) hide show
  1. package/NOTICE.md +14 -0
  2. package/README.md +8 -1
  3. package/dist/ai.cjs +10 -0
  4. package/dist/ai.cjs.map +1 -1
  5. package/dist/ai.js +10 -0
  6. package/dist/ai.js.map +1 -1
  7. package/dist/comments/MentionTextarea.cjs +1 -1
  8. package/dist/comments/MentionTextarea.cjs.map +1 -1
  9. package/dist/comments/MentionTextarea.js +1 -1
  10. package/dist/comments/MentionTextarea.js.map +1 -1
  11. package/dist/components/AccordionList.cjs +320 -0
  12. package/dist/components/AccordionList.cjs.map +1 -0
  13. package/dist/components/AccordionList.d.ts +93 -0
  14. package/dist/components/AccordionList.d.ts.map +1 -0
  15. package/dist/components/AccordionList.js +320 -0
  16. package/dist/components/AccordionList.js.map +1 -0
  17. package/dist/components/Combobox.cjs +41 -3
  18. package/dist/components/Combobox.cjs.map +1 -1
  19. package/dist/components/Combobox.d.ts.map +1 -1
  20. package/dist/components/Combobox.js +42 -4
  21. package/dist/components/Combobox.js.map +1 -1
  22. package/dist/components/ComboboxControl.cjs +6 -0
  23. package/dist/components/ComboboxControl.cjs.map +1 -1
  24. package/dist/components/ComboboxControl.d.ts +7 -3
  25. package/dist/components/ComboboxControl.d.ts.map +1 -1
  26. package/dist/components/ComboboxControl.js +6 -0
  27. package/dist/components/ComboboxControl.js.map +1 -1
  28. package/dist/components/ComboboxMenu.cjs +2 -1
  29. package/dist/components/ComboboxMenu.cjs.map +1 -1
  30. package/dist/components/ComboboxMenu.d.ts +3 -1
  31. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  32. package/dist/components/ComboboxMenu.js +2 -1
  33. package/dist/components/ComboboxMenu.js.map +1 -1
  34. package/dist/components/ComboboxTags.cjs +42 -11
  35. package/dist/components/ComboboxTags.cjs.map +1 -1
  36. package/dist/components/ComboboxTags.d.ts +5 -2
  37. package/dist/components/ComboboxTags.d.ts.map +1 -1
  38. package/dist/components/ComboboxTags.js +42 -11
  39. package/dist/components/ComboboxTags.js.map +1 -1
  40. package/dist/components/ConnectionLoggingPolicy.cjs +268 -0
  41. package/dist/components/ConnectionLoggingPolicy.cjs.map +1 -0
  42. package/dist/components/ConnectionLoggingPolicy.d.ts +3 -0
  43. package/dist/components/ConnectionLoggingPolicy.d.ts.map +1 -0
  44. package/dist/components/ConnectionLoggingPolicy.js +268 -0
  45. package/dist/components/ConnectionLoggingPolicy.js.map +1 -0
  46. package/dist/components/ConnectionLoggingPolicy.model.cjs +52 -0
  47. package/dist/components/ConnectionLoggingPolicy.model.cjs.map +1 -0
  48. package/dist/components/ConnectionLoggingPolicy.model.d.ts +35 -0
  49. package/dist/components/ConnectionLoggingPolicy.model.d.ts.map +1 -0
  50. package/dist/components/ConnectionLoggingPolicy.model.js +52 -0
  51. package/dist/components/ConnectionLoggingPolicy.model.js.map +1 -0
  52. package/dist/components/DaemonSetIcon.cjs +20 -0
  53. package/dist/components/DaemonSetIcon.cjs.map +1 -0
  54. package/dist/components/DaemonSetIcon.d.ts +8 -0
  55. package/dist/components/DaemonSetIcon.d.ts.map +1 -0
  56. package/dist/components/DaemonSetIcon.js +20 -0
  57. package/dist/components/DaemonSetIcon.js.map +1 -0
  58. package/dist/components/DateField.cjs.map +1 -1
  59. package/dist/components/DateField.d.ts +11 -3
  60. package/dist/components/DateField.d.ts.map +1 -1
  61. package/dist/components/DateField.js.map +1 -1
  62. package/dist/components/DatePicker.cjs +6 -1
  63. package/dist/components/DatePicker.cjs.map +1 -1
  64. package/dist/components/DatePicker.d.ts +11 -3
  65. package/dist/components/DatePicker.d.ts.map +1 -1
  66. package/dist/components/DatePicker.js +6 -1
  67. package/dist/components/DatePicker.js.map +1 -1
  68. package/dist/components/EndpointSelector.cjs +29 -8
  69. package/dist/components/EndpointSelector.cjs.map +1 -1
  70. package/dist/components/EndpointSelector.d.ts +1 -1
  71. package/dist/components/EndpointSelector.d.ts.map +1 -1
  72. package/dist/components/EndpointSelector.js +29 -8
  73. package/dist/components/EndpointSelector.js.map +1 -1
  74. package/dist/components/EndpointSelector.model.cjs.map +1 -1
  75. package/dist/components/EndpointSelector.model.d.ts +5 -0
  76. package/dist/components/EndpointSelector.model.d.ts.map +1 -1
  77. package/dist/components/EndpointSelector.model.js.map +1 -1
  78. package/dist/components/FilterBar.cjs +43 -19
  79. package/dist/components/FilterBar.cjs.map +1 -1
  80. package/dist/components/FilterBar.d.ts +21 -1
  81. package/dist/components/FilterBar.d.ts.map +1 -1
  82. package/dist/components/FilterBar.js +41 -17
  83. package/dist/components/FilterBar.js.map +1 -1
  84. package/dist/components/InputField.cjs +14 -2
  85. package/dist/components/InputField.cjs.map +1 -1
  86. package/dist/components/InputField.d.ts +6 -0
  87. package/dist/components/InputField.d.ts.map +1 -1
  88. package/dist/components/InputField.js +14 -2
  89. package/dist/components/InputField.js.map +1 -1
  90. package/dist/components/ItemActions.cjs +87 -0
  91. package/dist/components/ItemActions.cjs.map +1 -0
  92. package/dist/components/ItemActions.d.ts +33 -0
  93. package/dist/components/ItemActions.d.ts.map +1 -0
  94. package/dist/components/ItemActions.js +87 -0
  95. package/dist/components/ItemActions.js.map +1 -0
  96. package/dist/components/JsonSchemaForm.cjs +1 -1
  97. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  98. package/dist/components/JsonSchemaForm.js +1 -1
  99. package/dist/components/JsonSchemaForm.js.map +1 -1
  100. package/dist/components/MdxEditorCallout.cjs +108 -0
  101. package/dist/components/MdxEditorCallout.cjs.map +1 -0
  102. package/dist/components/MdxEditorCallout.d.ts +27 -0
  103. package/dist/components/MdxEditorCallout.d.ts.map +1 -0
  104. package/dist/components/MdxEditorCallout.js +108 -0
  105. package/dist/components/MdxEditorCallout.js.map +1 -0
  106. package/dist/components/MdxEditorField.cjs.map +1 -1
  107. package/dist/components/MdxEditorField.d.ts +1 -1
  108. package/dist/components/MdxEditorField.d.ts.map +1 -1
  109. package/dist/components/MdxEditorField.js.map +1 -1
  110. package/dist/components/MdxEditorToolbar.cjs +10 -2
  111. package/dist/components/MdxEditorToolbar.cjs.map +1 -1
  112. package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
  113. package/dist/components/MdxEditorToolbar.js +10 -2
  114. package/dist/components/MdxEditorToolbar.js.map +1 -1
  115. package/dist/components/MultiSelect.cjs +3 -1
  116. package/dist/components/MultiSelect.cjs.map +1 -1
  117. package/dist/components/MultiSelect.d.ts.map +1 -1
  118. package/dist/components/MultiSelect.js +3 -1
  119. package/dist/components/MultiSelect.js.map +1 -1
  120. package/dist/components/NamespacePicker.cjs +1 -0
  121. package/dist/components/NamespacePicker.cjs.map +1 -1
  122. package/dist/components/NamespacePicker.d.ts.map +1 -1
  123. package/dist/components/NamespacePicker.js +1 -0
  124. package/dist/components/NamespacePicker.js.map +1 -1
  125. package/dist/components/WorkloadPicker.cjs +117 -31
  126. package/dist/components/WorkloadPicker.cjs.map +1 -1
  127. package/dist/components/WorkloadPicker.d.ts +29 -5
  128. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  129. package/dist/components/WorkloadPicker.js +119 -33
  130. package/dist/components/WorkloadPicker.js.map +1 -1
  131. package/dist/components/button-variants.d.ts +1 -1
  132. package/dist/components/button.d.ts +1 -1
  133. package/dist/components/combobox-types.d.ts +13 -0
  134. package/dist/components/combobox-types.d.ts.map +1 -1
  135. package/dist/components/combobox-utils.cjs +16 -0
  136. package/dist/components/combobox-utils.cjs.map +1 -1
  137. package/dist/components/combobox-utils.d.ts +1 -0
  138. package/dist/components/combobox-utils.d.ts.map +1 -1
  139. package/dist/components/combobox-utils.js +16 -0
  140. package/dist/components/combobox-utils.js.map +1 -1
  141. package/dist/components/filter-bar-multi.cjs +1 -1
  142. package/dist/components/filter-bar-multi.cjs.map +1 -1
  143. package/dist/components/filter-bar-multi.js +1 -1
  144. package/dist/components/filter-bar-multi.js.map +1 -1
  145. package/dist/components/filter-bar-utils.cjs +14 -2
  146. package/dist/components/filter-bar-utils.cjs.map +1 -1
  147. package/dist/components/filter-bar-utils.d.ts +2 -1
  148. package/dist/components/filter-bar-utils.d.ts.map +1 -1
  149. package/dist/components/filter-bar-utils.js +14 -2
  150. package/dist/components/filter-bar-utils.js.map +1 -1
  151. package/dist/components/jotai-bindings-core.cjs +11 -0
  152. package/dist/components/jotai-bindings-core.cjs.map +1 -1
  153. package/dist/components/jotai-bindings-core.d.ts +3 -2
  154. package/dist/components/jotai-bindings-core.d.ts.map +1 -1
  155. package/dist/components/jotai-bindings-core.js +11 -0
  156. package/dist/components/jotai-bindings-core.js.map +1 -1
  157. package/dist/components/json-schema-form-accordion-array.cjs +54 -190
  158. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  159. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  160. package/dist/components/json-schema-form-accordion-array.js +59 -195
  161. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  162. package/dist/components/json-schema-form-array.cjs +46 -146
  163. package/dist/components/json-schema-form-array.cjs.map +1 -1
  164. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  165. package/dist/components/json-schema-form-array.js +47 -147
  166. package/dist/components/json-schema-form-array.js.map +1 -1
  167. package/dist/components/json-schema-form-cards-array.cjs +9 -7
  168. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  169. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  170. package/dist/components/json-schema-form-cards-array.js +11 -9
  171. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  172. package/dist/components/json-schema-form-error-display.js +1 -1
  173. package/dist/components/json-schema-form-errors.cjs +17 -4
  174. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  175. package/dist/components/json-schema-form-errors.d.ts +1 -0
  176. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  177. package/dist/components/json-schema-form-errors.js +16 -3
  178. package/dist/components/json-schema-form-errors.js.map +1 -1
  179. package/dist/components/json-schema-form-fields.cjs +18 -2
  180. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  181. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  182. package/dist/components/json-schema-form-fields.js +18 -2
  183. package/dist/components/json-schema-form-fields.js.map +1 -1
  184. package/dist/components/json-schema-form-item-row.cjs +17 -46
  185. package/dist/components/json-schema-form-item-row.cjs.map +1 -1
  186. package/dist/components/json-schema-form-item-row.d.ts +3 -10
  187. package/dist/components/json-schema-form-item-row.d.ts.map +1 -1
  188. package/dist/components/json-schema-form-item-row.js +18 -47
  189. package/dist/components/json-schema-form-item-row.js.map +1 -1
  190. package/dist/components/json-schema-form-item-summary.cjs +18 -4
  191. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  192. package/dist/components/json-schema-form-item-summary.d.ts +2 -1
  193. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  194. package/dist/components/json-schema-form-item-summary.js +15 -1
  195. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  196. package/dist/components/json-schema-form-lookup-tree.cjs +2 -5
  197. package/dist/components/json-schema-form-lookup-tree.cjs.map +1 -1
  198. package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -1
  199. package/dist/components/json-schema-form-lookup-tree.js +2 -5
  200. package/dist/components/json-schema-form-lookup-tree.js.map +1 -1
  201. package/dist/components/json-schema-form-object.cjs +3 -2
  202. package/dist/components/json-schema-form-object.cjs.map +1 -1
  203. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  204. package/dist/components/json-schema-form-object.js +2 -1
  205. package/dist/components/json-schema-form-object.js.map +1 -1
  206. package/dist/components/json-schema-form-render.cjs +4 -1
  207. package/dist/components/json-schema-form-render.cjs.map +1 -1
  208. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  209. package/dist/components/json-schema-form-render.js +5 -2
  210. package/dist/components/json-schema-form-render.js.map +1 -1
  211. package/dist/components/json-schema-form-resolve.cjs +21 -13
  212. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  213. package/dist/components/json-schema-form-resolve.d.ts +2 -2
  214. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  215. package/dist/components/json-schema-form-resolve.js +16 -8
  216. package/dist/components/json-schema-form-resolve.js.map +1 -1
  217. package/dist/components/json-schema-form-table-array.cjs +4 -3
  218. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  219. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  220. package/dist/components/json-schema-form-table-array.js +2 -1
  221. package/dist/components/json-schema-form-table-array.js.map +1 -1
  222. package/dist/components/json-schema-form-tags-combobox.cjs +55 -0
  223. package/dist/components/json-schema-form-tags-combobox.cjs.map +1 -0
  224. package/dist/components/json-schema-form-tags-combobox.d.ts +17 -0
  225. package/dist/components/json-schema-form-tags-combobox.d.ts.map +1 -0
  226. package/dist/components/json-schema-form-tags-combobox.js +55 -0
  227. package/dist/components/json-schema-form-tags-combobox.js.map +1 -0
  228. package/dist/components/json-schema-form-types.d.ts +8 -1
  229. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  230. package/dist/components/json-schema-form-utils.cjs +5 -28
  231. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  232. package/dist/components/json-schema-form-utils.d.ts +1 -5
  233. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  234. package/dist/components/json-schema-form-utils.js +5 -28
  235. package/dist/components/json-schema-form-utils.js.map +1 -1
  236. package/dist/components/jsonPathTree.cjs +10 -3
  237. package/dist/components/jsonPathTree.cjs.map +1 -1
  238. package/dist/components/jsonPathTree.d.ts +17 -0
  239. package/dist/components/jsonPathTree.d.ts.map +1 -1
  240. package/dist/components/jsonPathTree.js +10 -3
  241. package/dist/components/jsonPathTree.js.map +1 -1
  242. package/dist/components/mdx-editor-callout-model.cjs +26 -0
  243. package/dist/components/mdx-editor-callout-model.cjs.map +1 -0
  244. package/dist/components/mdx-editor-callout-model.d.ts +14 -0
  245. package/dist/components/mdx-editor-callout-model.d.ts.map +1 -0
  246. package/dist/components/mdx-editor-callout-model.js +26 -0
  247. package/dist/components/mdx-editor-callout-model.js.map +1 -0
  248. package/dist/components/mdx-editor-callout.cjs +39 -0
  249. package/dist/components/mdx-editor-callout.cjs.map +1 -0
  250. package/dist/components/mdx-editor-callout.d.ts +27 -0
  251. package/dist/components/mdx-editor-callout.d.ts.map +1 -0
  252. package/dist/components/mdx-editor-callout.js +39 -0
  253. package/dist/components/mdx-editor-callout.js.map +1 -0
  254. package/dist/components/mdx-editor-field-plugins.cjs +14 -0
  255. package/dist/components/mdx-editor-field-plugins.cjs.map +1 -1
  256. package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -1
  257. package/dist/components/mdx-editor-field-plugins.js +14 -0
  258. package/dist/components/mdx-editor-field-plugins.js.map +1 -1
  259. package/dist/components/mdx-editor-jsx-attributes.cjs +23 -0
  260. package/dist/components/mdx-editor-jsx-attributes.cjs.map +1 -0
  261. package/dist/components/mdx-editor-jsx-attributes.d.ts +29 -0
  262. package/dist/components/mdx-editor-jsx-attributes.d.ts.map +1 -0
  263. package/dist/components/mdx-editor-jsx-attributes.js +23 -0
  264. package/dist/components/mdx-editor-jsx-attributes.js.map +1 -0
  265. package/dist/components/mdx-editor-options.d.ts +79 -0
  266. package/dist/components/mdx-editor-options.d.ts.map +1 -1
  267. package/dist/components/workload-picker-utils.cjs +17 -4
  268. package/dist/components/workload-picker-utils.cjs.map +1 -1
  269. package/dist/components/workload-picker-utils.d.ts +3 -1
  270. package/dist/components/workload-picker-utils.d.ts.map +1 -1
  271. package/dist/components/workload-picker-utils.js +18 -5
  272. package/dist/components/workload-picker-utils.js.map +1 -1
  273. package/dist/components.cjs +13 -0
  274. package/dist/components.cjs.map +1 -1
  275. package/dist/components.d.ts +8 -3
  276. package/dist/components.d.ts.map +1 -1
  277. package/dist/components.js +13 -0
  278. package/dist/components.js.map +1 -1
  279. package/dist/data/Callout.cjs +48 -0
  280. package/dist/data/Callout.cjs.map +1 -0
  281. package/dist/data/Callout.d.ts +58 -0
  282. package/dist/data/Callout.d.ts.map +1 -0
  283. package/dist/data/Callout.js +48 -0
  284. package/dist/data/Callout.js.map +1 -0
  285. package/dist/data/Clicky.cjs +307 -248
  286. package/dist/data/Clicky.cjs.map +1 -1
  287. package/dist/data/Clicky.d.ts +37 -2
  288. package/dist/data/Clicky.d.ts.map +1 -1
  289. package/dist/data/Clicky.js +310 -251
  290. package/dist/data/Clicky.js.map +1 -1
  291. package/dist/data/DataTable.cjs +245 -115
  292. package/dist/data/DataTable.cjs.map +1 -1
  293. package/dist/data/DataTable.d.ts +48 -3
  294. package/dist/data/DataTable.d.ts.map +1 -1
  295. package/dist/data/DataTable.grouping.cjs.map +1 -1
  296. package/dist/data/DataTable.grouping.d.ts +11 -1
  297. package/dist/data/DataTable.grouping.d.ts.map +1 -1
  298. package/dist/data/DataTable.grouping.js.map +1 -1
  299. package/dist/data/DataTable.js +247 -117
  300. package/dist/data/DataTable.js.map +1 -1
  301. package/dist/data/Markdown.cjs +31 -2
  302. package/dist/data/Markdown.cjs.map +1 -1
  303. package/dist/data/Markdown.d.ts +10 -1
  304. package/dist/data/Markdown.d.ts.map +1 -1
  305. package/dist/data/Markdown.js +31 -2
  306. package/dist/data/Markdown.js.map +1 -1
  307. package/dist/data/MarkdownEditor.cjs +1 -1
  308. package/dist/data/MarkdownEditor.cjs.map +1 -1
  309. package/dist/data/MarkdownEditor.js +1 -1
  310. package/dist/data/MarkdownEditor.js.map +1 -1
  311. package/dist/data/ObjectGraph.cjs +108 -23
  312. package/dist/data/ObjectGraph.cjs.map +1 -1
  313. package/dist/data/ObjectGraph.d.ts +28 -22
  314. package/dist/data/ObjectGraph.d.ts.map +1 -1
  315. package/dist/data/ObjectGraph.js +109 -24
  316. package/dist/data/ObjectGraph.js.map +1 -1
  317. package/dist/data/PromptBanner.cjs +1 -1
  318. package/dist/data/PromptBanner.cjs.map +1 -1
  319. package/dist/data/PromptBanner.js +1 -1
  320. package/dist/data/PromptBanner.js.map +1 -1
  321. package/dist/data/Tree.cjs +39 -35
  322. package/dist/data/Tree.cjs.map +1 -1
  323. package/dist/data/Tree.d.ts +7 -1
  324. package/dist/data/Tree.d.ts.map +1 -1
  325. package/dist/data/Tree.js +39 -35
  326. package/dist/data/Tree.js.map +1 -1
  327. package/dist/data/ai/ChatButton.cjs +26 -0
  328. package/dist/data/ai/ChatButton.cjs.map +1 -0
  329. package/dist/data/ai/ChatButton.d.ts +5 -0
  330. package/dist/data/ai/ChatButton.d.ts.map +1 -0
  331. package/dist/data/ai/ChatButton.js +26 -0
  332. package/dist/data/ai/ChatButton.js.map +1 -0
  333. package/dist/data/ai/ChatFab.cjs +11 -6
  334. package/dist/data/ai/ChatFab.cjs.map +1 -1
  335. package/dist/data/ai/ChatFab.d.ts +5 -3
  336. package/dist/data/ai/ChatFab.d.ts.map +1 -1
  337. package/dist/data/ai/ChatFab.js +11 -6
  338. package/dist/data/ai/ChatFab.js.map +1 -1
  339. package/dist/data/ai/PromptRunEditor/index.cjs +16 -4
  340. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  341. package/dist/data/ai/PromptRunEditor/index.d.ts +7 -2
  342. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  343. package/dist/data/ai/PromptRunEditor/index.js +16 -4
  344. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  345. package/dist/data/ai/SandboxConnectionsSection.cjs +71 -0
  346. package/dist/data/ai/SandboxConnectionsSection.cjs.map +1 -0
  347. package/dist/data/ai/SandboxConnectionsSection.d.ts +8 -0
  348. package/dist/data/ai/SandboxConnectionsSection.d.ts.map +1 -0
  349. package/dist/data/ai/SandboxConnectionsSection.js +71 -0
  350. package/dist/data/ai/SandboxConnectionsSection.js.map +1 -0
  351. package/dist/data/ai/SandboxCreateWizard.cjs +288 -0
  352. package/dist/data/ai/SandboxCreateWizard.cjs.map +1 -0
  353. package/dist/data/ai/SandboxCreateWizard.d.ts +11 -0
  354. package/dist/data/ai/SandboxCreateWizard.d.ts.map +1 -0
  355. package/dist/data/ai/SandboxCreateWizard.js +288 -0
  356. package/dist/data/ai/SandboxCreateWizard.js.map +1 -0
  357. package/dist/data/ai/SandboxCreateWizard.model.cjs +77 -0
  358. package/dist/data/ai/SandboxCreateWizard.model.cjs.map +1 -0
  359. package/dist/data/ai/SandboxCreateWizard.model.d.ts +32 -0
  360. package/dist/data/ai/SandboxCreateWizard.model.d.ts.map +1 -0
  361. package/dist/data/ai/SandboxCreateWizard.model.js +77 -0
  362. package/dist/data/ai/SandboxCreateWizard.model.js.map +1 -0
  363. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +6 -6
  364. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  365. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  366. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +6 -6
  367. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  368. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +11 -8
  369. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +11 -8
  371. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +247 -0
  373. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -0
  374. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +12 -0
  375. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -0
  376. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +247 -0
  377. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -0
  378. package/dist/data/ai/SpecRuntimeEditor/fields.cjs +31 -22
  379. package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -1
  380. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +6 -4
  381. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -1
  382. package/dist/data/ai/SpecRuntimeEditor/fields.js +32 -23
  383. package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -1
  384. package/dist/data/ai/SpecRuntimeEditor/index.cjs +15 -1
  385. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  386. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +8 -3
  387. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  388. package/dist/data/ai/SpecRuntimeEditor/index.js +15 -1
  389. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  390. package/dist/data/ai/SpecRuntimeEditor/types.cjs +11 -0
  391. package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
  392. package/dist/data/ai/SpecRuntimeEditor/types.d.ts +53 -1
  393. package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
  394. package/dist/data/ai/SpecRuntimeEditor/types.js +11 -0
  395. package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
  396. package/dist/data/ai/SpecRuntimeEditor/update.cjs +23 -0
  397. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  398. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +23 -1
  399. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  400. package/dist/data/ai/SpecRuntimeEditor/update.js +23 -0
  401. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  402. package/dist/data/ai/SpecRuntimeEditor.model.cjs +28 -0
  403. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  404. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +35 -0
  405. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  406. package/dist/data/ai/SpecRuntimeEditor.model.js +28 -0
  407. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  408. package/dist/data/ai/index.d.ts +6 -2
  409. package/dist/data/ai/index.d.ts.map +1 -1
  410. package/dist/data/ai/sandbox-kind-meta.cjs +16 -0
  411. package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -0
  412. package/dist/data/ai/sandbox-kind-meta.d.ts +8 -0
  413. package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -0
  414. package/dist/data/ai/sandbox-kind-meta.js +16 -0
  415. package/dist/data/ai/sandbox-kind-meta.js.map +1 -0
  416. package/dist/data/badge-variants.d.ts +1 -1
  417. package/dist/data/cache-browser/CacheTree.cjs +1 -1
  418. package/dist/data/cache-browser/CacheTree.cjs.map +1 -1
  419. package/dist/data/cache-browser/CacheTree.js +1 -1
  420. package/dist/data/cache-browser/CacheTree.js.map +1 -1
  421. package/dist/data/callout-tones.cjs +95 -0
  422. package/dist/data/callout-tones.cjs.map +1 -0
  423. package/dist/data/callout-tones.d.ts +32 -0
  424. package/dist/data/callout-tones.d.ts.map +1 -0
  425. package/dist/data/callout-tones.js +95 -0
  426. package/dist/data/callout-tones.js.map +1 -0
  427. package/dist/data/chat/PromptInput.cjs +1 -1
  428. package/dist/data/chat/PromptInput.cjs.map +1 -1
  429. package/dist/data/chat/PromptInput.js +1 -1
  430. package/dist/data/chat/PromptInput.js.map +1 -1
  431. package/dist/data/clicky-export/ClickyExportDialog.cjs +145 -0
  432. package/dist/data/clicky-export/ClickyExportDialog.cjs.map +1 -0
  433. package/dist/data/clicky-export/ClickyExportDialog.d.ts +43 -0
  434. package/dist/data/clicky-export/ClickyExportDialog.d.ts.map +1 -0
  435. package/dist/data/clicky-export/ClickyExportDialog.js +145 -0
  436. package/dist/data/clicky-export/ClickyExportDialog.js.map +1 -0
  437. package/dist/data/clicky-export/index.d.ts +3 -0
  438. package/dist/data/clicky-export/index.d.ts.map +1 -0
  439. package/dist/data/clicky-export/useClickyExport.cjs +44 -0
  440. package/dist/data/clicky-export/useClickyExport.cjs.map +1 -0
  441. package/dist/data/clicky-export/useClickyExport.d.ts +30 -0
  442. package/dist/data/clicky-export/useClickyExport.d.ts.map +1 -0
  443. package/dist/data/clicky-export/useClickyExport.js +44 -0
  444. package/dist/data/clicky-export/useClickyExport.js.map +1 -0
  445. package/dist/data/data-table-server-filters.cjs +15 -2
  446. package/dist/data/data-table-server-filters.cjs.map +1 -1
  447. package/dist/data/data-table-server-filters.d.ts +12 -1
  448. package/dist/data/data-table-server-filters.d.ts.map +1 -1
  449. package/dist/data/data-table-server-filters.js +15 -2
  450. package/dist/data/data-table-server-filters.js.map +1 -1
  451. package/dist/data/diagnostics/ErrorDetails.cjs +29 -7
  452. package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
  453. package/dist/data/diagnostics/ErrorDetails.d.ts +2 -1
  454. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
  455. package/dist/data/diagnostics/ErrorDetails.js +29 -7
  456. package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
  457. package/dist/data/diagnostics/error-diagnostics.cjs +17 -2
  458. package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
  459. package/dist/data/diagnostics/error-diagnostics.d.ts +5 -0
  460. package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
  461. package/dist/data/diagnostics/error-diagnostics.js +17 -2
  462. package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
  463. package/dist/data/logs-normalize.cjs +18 -3
  464. package/dist/data/logs-normalize.cjs.map +1 -1
  465. package/dist/data/logs-normalize.d.ts +17 -0
  466. package/dist/data/logs-normalize.d.ts.map +1 -1
  467. package/dist/data/logs-normalize.js +18 -3
  468. package/dist/data/logs-normalize.js.map +1 -1
  469. package/dist/data/object-graph-nodes.cjs +24 -0
  470. package/dist/data/object-graph-nodes.cjs.map +1 -0
  471. package/dist/data/object-graph-nodes.d.ts +34 -0
  472. package/dist/data/object-graph-nodes.d.ts.map +1 -0
  473. package/dist/data/object-graph-nodes.js +24 -0
  474. package/dist/data/object-graph-nodes.js.map +1 -0
  475. package/dist/data/query-browser/QueryBrowser.cjs +52 -32
  476. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  477. package/dist/data/query-browser/QueryBrowser.d.ts +1 -1
  478. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  479. package/dist/data/query-browser/QueryBrowser.js +53 -33
  480. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  481. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
  482. package/dist/data/query-browser/QueryBrowser.types.d.ts +12 -0
  483. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
  484. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
  485. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +58 -10
  486. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -1
  487. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -1
  488. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +58 -10
  489. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -1
  490. package/dist/data/query-browser/QueryBrowserResults.cjs +4 -4
  491. package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -1
  492. package/dist/data/query-browser/QueryBrowserResults.d.ts +4 -2
  493. package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -1
  494. package/dist/data/query-browser/QueryBrowserResults.js +4 -4
  495. package/dist/data/query-browser/QueryBrowserResults.js.map +1 -1
  496. package/dist/data/query-info/QueryInfoDialog.cjs +106 -0
  497. package/dist/data/query-info/QueryInfoDialog.cjs.map +1 -0
  498. package/dist/data/query-info/QueryInfoDialog.d.ts +16 -0
  499. package/dist/data/query-info/QueryInfoDialog.d.ts.map +1 -0
  500. package/dist/data/query-info/QueryInfoDialog.js +106 -0
  501. package/dist/data/query-info/QueryInfoDialog.js.map +1 -0
  502. package/dist/data/query-info/index.d.ts +4 -0
  503. package/dist/data/query-info/index.d.ts.map +1 -0
  504. package/dist/data/query-info/queryInfo.cjs +42 -0
  505. package/dist/data/query-info/queryInfo.cjs.map +1 -0
  506. package/dist/data/query-info/queryInfo.d.ts +45 -0
  507. package/dist/data/query-info/queryInfo.d.ts.map +1 -0
  508. package/dist/data/query-info/queryInfo.js +42 -0
  509. package/dist/data/query-info/queryInfo.js.map +1 -0
  510. package/dist/data/query-info/useQueryInfo.cjs +48 -0
  511. package/dist/data/query-info/useQueryInfo.cjs.map +1 -0
  512. package/dist/data/query-info/useQueryInfo.d.ts +26 -0
  513. package/dist/data/query-info/useQueryInfo.d.ts.map +1 -0
  514. package/dist/data/query-info/useQueryInfo.js +48 -0
  515. package/dist/data/query-info/useQueryInfo.js.map +1 -0
  516. package/dist/data/use-infinite-rows.cjs +20 -0
  517. package/dist/data/use-infinite-rows.cjs.map +1 -0
  518. package/dist/data/use-infinite-rows.d.ts +20 -0
  519. package/dist/data/use-infinite-rows.d.ts.map +1 -0
  520. package/dist/data/use-infinite-rows.js +20 -0
  521. package/dist/data/use-infinite-rows.js.map +1 -0
  522. package/dist/data/version-info.cjs +3 -3
  523. package/dist/data/version-info.js +3 -3
  524. package/dist/data.cjs +44 -0
  525. package/dist/data.cjs.map +1 -1
  526. package/dist/data.d.ts +8 -3
  527. package/dist/data.d.ts.map +1 -1
  528. package/dist/data.js +44 -0
  529. package/dist/data.js.map +1 -1
  530. package/dist/hooks/use-log-tail.cjs +213 -0
  531. package/dist/hooks/use-log-tail.cjs.map +1 -0
  532. package/dist/hooks/use-log-tail.d.ts +112 -0
  533. package/dist/hooks/use-log-tail.d.ts.map +1 -0
  534. package/dist/hooks/use-log-tail.js +213 -0
  535. package/dist/hooks/use-log-tail.js.map +1 -0
  536. package/dist/hooks.cjs +10 -0
  537. package/dist/hooks.cjs.map +1 -1
  538. package/dist/hooks.d.ts +2 -0
  539. package/dist/hooks.d.ts.map +1 -1
  540. package/dist/hooks.js +10 -0
  541. package/dist/hooks.js.map +1 -1
  542. package/dist/icons/components/UiArrowsCounterClockwise.cjs +15 -0
  543. package/dist/icons/components/UiArrowsCounterClockwise.cjs.map +1 -0
  544. package/dist/icons/components/UiArrowsCounterClockwise.d.ts +15 -0
  545. package/dist/icons/components/UiArrowsCounterClockwise.d.ts.map +1 -0
  546. package/dist/icons/components/UiArrowsCounterClockwise.js +15 -0
  547. package/dist/icons/components/UiArrowsCounterClockwise.js.map +1 -0
  548. package/dist/icons/components/UiClipboardText.cjs +15 -0
  549. package/dist/icons/components/UiClipboardText.cjs.map +1 -0
  550. package/dist/icons/components/UiClipboardText.d.ts +15 -0
  551. package/dist/icons/components/UiClipboardText.d.ts.map +1 -0
  552. package/dist/icons/components/UiClipboardText.js +15 -0
  553. package/dist/icons/components/UiClipboardText.js.map +1 -0
  554. package/dist/icons/components/UiIdentificationCard.cjs +15 -0
  555. package/dist/icons/components/UiIdentificationCard.cjs.map +1 -0
  556. package/dist/icons/components/UiIdentificationCard.d.ts +15 -0
  557. package/dist/icons/components/UiIdentificationCard.d.ts.map +1 -0
  558. package/dist/icons/components/UiIdentificationCard.js +15 -0
  559. package/dist/icons/components/UiIdentificationCard.js.map +1 -0
  560. package/dist/icons/components/UiLockKey.cjs +15 -0
  561. package/dist/icons/components/UiLockKey.cjs.map +1 -0
  562. package/dist/icons/components/UiLockKey.d.ts +15 -0
  563. package/dist/icons/components/UiLockKey.d.ts.map +1 -0
  564. package/dist/icons/components/UiLockKey.js +15 -0
  565. package/dist/icons/components/UiLockKey.js.map +1 -0
  566. package/dist/icons/components/UiSteps.cjs +15 -0
  567. package/dist/icons/components/UiSteps.cjs.map +1 -0
  568. package/dist/icons/components/UiSteps.d.ts +15 -0
  569. package/dist/icons/components/UiSteps.d.ts.map +1 -0
  570. package/dist/icons/components/UiSteps.js +15 -0
  571. package/dist/icons/components/UiSteps.js.map +1 -0
  572. package/dist/icons/components/UiUserGear.cjs +15 -0
  573. package/dist/icons/components/UiUserGear.cjs.map +1 -0
  574. package/dist/icons/components/UiUserGear.d.ts +15 -0
  575. package/dist/icons/components/UiUserGear.d.ts.map +1 -0
  576. package/dist/icons/components/UiUserGear.js +15 -0
  577. package/dist/icons/components/UiUserGear.js.map +1 -0
  578. package/dist/icons/components/UiUsersFour.cjs +15 -0
  579. package/dist/icons/components/UiUsersFour.cjs.map +1 -0
  580. package/dist/icons/components/UiUsersFour.d.ts +15 -0
  581. package/dist/icons/components/UiUsersFour.d.ts.map +1 -0
  582. package/dist/icons/components/UiUsersFour.js +15 -0
  583. package/dist/icons/components/UiUsersFour.js.map +1 -0
  584. package/dist/icons/index.d.ts +14 -0
  585. package/dist/icons/index.d.ts.map +1 -1
  586. package/dist/icons/registry.cjs +15 -1
  587. package/dist/icons/registry.cjs.map +1 -1
  588. package/dist/icons/registry.d.ts.map +1 -1
  589. package/dist/icons/registry.js +15 -1
  590. package/dist/icons/registry.js.map +1 -1
  591. package/dist/icons.cjs +21 -0
  592. package/dist/icons.cjs.map +1 -1
  593. package/dist/icons.js +21 -0
  594. package/dist/icons.js.map +1 -1
  595. package/dist/index.cjs +75 -0
  596. package/dist/index.cjs.map +1 -1
  597. package/dist/index.js +75 -0
  598. package/dist/index.js.map +1 -1
  599. package/dist/jotai.d.ts +1 -1
  600. package/dist/jotai.d.ts.map +1 -1
  601. package/dist/lib/collections.cjs +31 -0
  602. package/dist/lib/collections.cjs.map +1 -0
  603. package/dist/lib/collections.d.ts +6 -0
  604. package/dist/lib/collections.d.ts.map +1 -0
  605. package/dist/lib/collections.js +31 -0
  606. package/dist/lib/collections.js.map +1 -0
  607. package/dist/mdx-editor.cjs +12 -0
  608. package/dist/mdx-editor.cjs.map +1 -1
  609. package/dist/mdx-editor.css +1 -1
  610. package/dist/mdx-editor.d.ts +4 -1
  611. package/dist/mdx-editor.d.ts.map +1 -1
  612. package/dist/mdx-editor.js +13 -1
  613. package/dist/mdx-editor.js.map +1 -1
  614. package/dist/overlay/CommandPalette.cjs +1 -1
  615. package/dist/overlay/CommandPalette.cjs.map +1 -1
  616. package/dist/overlay/CommandPalette.js +1 -1
  617. package/dist/overlay/CommandPalette.js.map +1 -1
  618. package/dist/profiles/cel/celEditor.cjs +395 -0
  619. package/dist/profiles/cel/celEditor.cjs.map +1 -0
  620. package/dist/profiles/cel/celEditor.d.ts +51 -0
  621. package/dist/profiles/cel/celEditor.d.ts.map +1 -0
  622. package/dist/profiles/cel/celEditor.js +395 -0
  623. package/dist/profiles/cel/celEditor.js.map +1 -0
  624. package/dist/profiles/cel/celEditorExtension.cjs +15 -0
  625. package/dist/profiles/cel/celEditorExtension.cjs.map +1 -0
  626. package/dist/profiles/cel/celEditorExtension.d.ts +5 -0
  627. package/dist/profiles/cel/celEditorExtension.d.ts.map +1 -0
  628. package/dist/profiles/cel/celEditorExtension.js +15 -0
  629. package/dist/profiles/cel/celEditorExtension.js.map +1 -0
  630. package/dist/profiles/cel/celExpression.cjs +174 -0
  631. package/dist/profiles/cel/celExpression.cjs.map +1 -0
  632. package/dist/profiles/cel/celExpression.d.ts +138 -0
  633. package/dist/profiles/cel/celExpression.d.ts.map +1 -0
  634. package/dist/profiles/cel/celExpression.js +174 -0
  635. package/dist/profiles/cel/celExpression.js.map +1 -0
  636. package/dist/profiles/cel/celPath.cjs +47 -0
  637. package/dist/profiles/cel/celPath.cjs.map +1 -0
  638. package/dist/profiles/cel/celPath.d.ts +31 -0
  639. package/dist/profiles/cel/celPath.d.ts.map +1 -0
  640. package/dist/profiles/cel/celPath.js +47 -0
  641. package/dist/profiles/cel/celPath.js.map +1 -0
  642. package/dist/profiles/cel/index.d.ts +5 -0
  643. package/dist/profiles/cel/index.d.ts.map +1 -0
  644. package/dist/profiles/connections/catalogTree.cjs +133 -0
  645. package/dist/profiles/connections/catalogTree.cjs.map +1 -0
  646. package/dist/profiles/connections/catalogTree.d.ts.map +1 -0
  647. package/dist/profiles/connections/catalogTree.js +133 -0
  648. package/dist/profiles/connections/catalogTree.js.map +1 -0
  649. package/dist/profiles/connections/connectionBrowserModel.cjs +191 -0
  650. package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -0
  651. package/dist/profiles/connections/connectionBrowserModel.d.ts +177 -0
  652. package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -0
  653. package/dist/profiles/connections/connectionBrowserModel.js +191 -0
  654. package/dist/profiles/connections/connectionBrowserModel.js.map +1 -0
  655. package/dist/profiles/connections/connectionQueryWorkspace.cjs +196 -0
  656. package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -0
  657. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +63 -0
  658. package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -0
  659. package/dist/profiles/connections/connectionQueryWorkspace.js +196 -0
  660. package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -0
  661. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +28 -0
  662. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -0
  663. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +38 -0
  664. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -0
  665. package/dist/profiles/connections/connectionQueryWorkspaceModel.js +28 -0
  666. package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -0
  667. package/dist/profiles/connections/index.d.ts +5 -0
  668. package/dist/profiles/connections/index.d.ts.map +1 -0
  669. package/dist/profiles/editor/index.d.ts +12 -0
  670. package/dist/profiles/editor/index.d.ts.map +1 -0
  671. package/dist/profiles/editor/profileBuilder.cjs +65 -0
  672. package/dist/profiles/editor/profileBuilder.cjs.map +1 -0
  673. package/dist/profiles/editor/profileBuilder.d.ts.map +1 -0
  674. package/dist/profiles/editor/profileBuilder.js +65 -0
  675. package/dist/profiles/editor/profileBuilder.js.map +1 -0
  676. package/dist/profiles/editor/profileBuilderExtension.cjs.map +1 -0
  677. package/dist/profiles/editor/profileBuilderExtension.d.ts +5 -0
  678. package/dist/profiles/editor/profileBuilderExtension.d.ts.map +1 -0
  679. package/dist/profiles/editor/profileBuilderExtension.js.map +1 -0
  680. package/dist/profiles/editor/profileBuilderModel.cjs +44 -0
  681. package/dist/profiles/editor/profileBuilderModel.cjs.map +1 -0
  682. package/dist/profiles/editor/profileBuilderModel.d.ts +4 -0
  683. package/dist/profiles/editor/profileBuilderModel.d.ts.map +1 -0
  684. package/dist/profiles/editor/profileBuilderModel.js +44 -0
  685. package/dist/profiles/editor/profileBuilderModel.js.map +1 -0
  686. package/dist/profiles/editor/profileBuilderWorkspace.cjs +333 -0
  687. package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -0
  688. package/dist/profiles/editor/profileBuilderWorkspace.d.ts +21 -0
  689. package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -0
  690. package/dist/profiles/editor/profileBuilderWorkspace.js +333 -0
  691. package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -0
  692. package/dist/profiles/editor/profileEditor.cjs +471 -0
  693. package/dist/profiles/editor/profileEditor.cjs.map +1 -0
  694. package/dist/profiles/editor/profileEditor.d.ts +20 -0
  695. package/dist/profiles/editor/profileEditor.d.ts.map +1 -0
  696. package/dist/profiles/editor/profileEditor.js +471 -0
  697. package/dist/profiles/editor/profileEditor.js.map +1 -0
  698. package/dist/profiles/editor/profileEditorModel.cjs +206 -0
  699. package/dist/profiles/editor/profileEditorModel.cjs.map +1 -0
  700. package/dist/profiles/editor/profileEditorModel.d.ts +76 -0
  701. package/dist/profiles/editor/profileEditorModel.d.ts.map +1 -0
  702. package/dist/profiles/editor/profileEditorModel.js +206 -0
  703. package/dist/profiles/editor/profileEditorModel.js.map +1 -0
  704. package/dist/profiles/editor/profileEditorPreview.cjs.map +1 -0
  705. package/dist/profiles/editor/profileEditorPreview.d.ts +12 -0
  706. package/dist/profiles/editor/profileEditorPreview.d.ts.map +1 -0
  707. package/dist/profiles/editor/profileEditorPreview.js.map +1 -0
  708. package/dist/profiles/editor/profileEditorRail.cjs.map +1 -0
  709. package/dist/profiles/editor/profileEditorRail.d.ts.map +1 -0
  710. package/dist/profiles/editor/profileEditorRail.js.map +1 -0
  711. package/dist/profiles/editor/profileEditorRaw.cjs +118 -0
  712. package/dist/profiles/editor/profileEditorRaw.cjs.map +1 -0
  713. package/dist/profiles/editor/profileEditorRaw.d.ts +7 -0
  714. package/dist/profiles/editor/profileEditorRaw.d.ts.map +1 -0
  715. package/dist/profiles/editor/profileEditorRaw.js +118 -0
  716. package/dist/profiles/editor/profileEditorRaw.js.map +1 -0
  717. package/dist/profiles/editor/profileEditorRoutes.cjs.map +1 -0
  718. package/dist/profiles/editor/profileEditorRoutes.d.ts.map +1 -0
  719. package/dist/profiles/editor/profileEditorRoutes.js.map +1 -0
  720. package/dist/profiles/editor/profileEditorSections.cjs +247 -0
  721. package/dist/profiles/editor/profileEditorSections.cjs.map +1 -0
  722. package/dist/profiles/editor/profileEditorSections.d.ts +26 -0
  723. package/dist/profiles/editor/profileEditorSections.d.ts.map +1 -0
  724. package/dist/profiles/editor/profileEditorSections.js +247 -0
  725. package/dist/profiles/editor/profileEditorSections.js.map +1 -0
  726. package/dist/profiles/editor/profileYaml.cjs +19 -0
  727. package/dist/profiles/editor/profileYaml.cjs.map +1 -0
  728. package/dist/profiles/editor/profileYaml.d.ts +4 -0
  729. package/dist/profiles/editor/profileYaml.d.ts.map +1 -0
  730. package/dist/profiles/editor/profileYaml.js +19 -0
  731. package/dist/profiles/editor/profileYaml.js.map +1 -0
  732. package/dist/profiles/editor/testSchema.d.ts +3 -0
  733. package/dist/profiles/editor/testSchema.d.ts.map +1 -0
  734. package/dist/profiles/elasticsearch/esFieldValues.cjs +57 -0
  735. package/dist/profiles/elasticsearch/esFieldValues.cjs.map +1 -0
  736. package/dist/profiles/elasticsearch/esFieldValues.d.ts +45 -0
  737. package/dist/profiles/elasticsearch/esFieldValues.d.ts.map +1 -0
  738. package/dist/profiles/elasticsearch/esFieldValues.js +57 -0
  739. package/dist/profiles/elasticsearch/esFieldValues.js.map +1 -0
  740. package/dist/profiles/elasticsearch/esParamMappingModel.cjs +301 -0
  741. package/dist/profiles/elasticsearch/esParamMappingModel.cjs.map +1 -0
  742. package/dist/profiles/elasticsearch/esParamMappingModel.d.ts +37 -0
  743. package/dist/profiles/elasticsearch/esParamMappingModel.d.ts.map +1 -0
  744. package/dist/profiles/elasticsearch/esParamMappingModel.js +301 -0
  745. package/dist/profiles/elasticsearch/esParamMappingModel.js.map +1 -0
  746. package/dist/profiles/elasticsearch/esParamMappingPill.cjs.map +1 -0
  747. package/dist/profiles/elasticsearch/esParamMappingPill.d.ts.map +1 -0
  748. package/dist/profiles/elasticsearch/esParamMappingPill.js.map +1 -0
  749. package/dist/profiles/elasticsearch/esParamOperandExtension.cjs +75 -0
  750. package/dist/profiles/elasticsearch/esParamOperandExtension.cjs.map +1 -0
  751. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +11 -0
  752. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts.map +1 -0
  753. package/dist/profiles/elasticsearch/esParamOperandExtension.js +75 -0
  754. package/dist/profiles/elasticsearch/esParamOperandExtension.js.map +1 -0
  755. package/dist/profiles/elasticsearch/esQueryBuilder.cjs +249 -0
  756. package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -0
  757. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +35 -0
  758. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -0
  759. package/dist/profiles/elasticsearch/esQueryBuilder.js +249 -0
  760. package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -0
  761. package/dist/profiles/elasticsearch/esQueryBuilderExtension.cjs.map +1 -0
  762. package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts +5 -0
  763. package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts.map +1 -0
  764. package/dist/profiles/elasticsearch/esQueryBuilderExtension.js.map +1 -0
  765. package/dist/profiles/elasticsearch/esQueryBuilderForm.cjs +59 -0
  766. package/dist/profiles/elasticsearch/esQueryBuilderForm.cjs.map +1 -0
  767. package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts +25 -0
  768. package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts.map +1 -0
  769. package/dist/profiles/elasticsearch/esQueryBuilderForm.js +59 -0
  770. package/dist/profiles/elasticsearch/esQueryBuilderForm.js.map +1 -0
  771. package/dist/profiles/elasticsearch/esQueryBuilderModel.cjs.map +1 -0
  772. package/dist/profiles/elasticsearch/esQueryBuilderModel.d.ts +110 -0
  773. package/dist/profiles/elasticsearch/esQueryBuilderModel.d.ts.map +1 -0
  774. package/dist/profiles/elasticsearch/esQueryBuilderModel.js.map +1 -0
  775. package/dist/profiles/elasticsearch/esQueryClauseGroup.cjs +144 -0
  776. package/dist/profiles/elasticsearch/esQueryClauseGroup.cjs.map +1 -0
  777. package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts.map +1 -0
  778. package/dist/profiles/elasticsearch/esQueryClauseGroup.js +144 -0
  779. package/dist/profiles/elasticsearch/esQueryClauseGroup.js.map +1 -0
  780. package/dist/profiles/elasticsearch/esQueryCompile.cjs +48 -0
  781. package/dist/profiles/elasticsearch/esQueryCompile.cjs.map +1 -0
  782. package/dist/profiles/elasticsearch/esQueryCompile.d.ts +40 -0
  783. package/dist/profiles/elasticsearch/esQueryCompile.d.ts.map +1 -0
  784. package/dist/profiles/elasticsearch/esQueryCompile.js +48 -0
  785. package/dist/profiles/elasticsearch/esQueryCompile.js.map +1 -0
  786. package/dist/profiles/elasticsearch/esQueryConditionRow.cjs +168 -0
  787. package/dist/profiles/elasticsearch/esQueryConditionRow.cjs.map +1 -0
  788. package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts +37 -0
  789. package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts.map +1 -0
  790. package/dist/profiles/elasticsearch/esQueryConditionRow.js +168 -0
  791. package/dist/profiles/elasticsearch/esQueryConditionRow.js.map +1 -0
  792. package/dist/profiles/elasticsearch/esQueryGroupModel.cjs.map +1 -0
  793. package/dist/profiles/elasticsearch/esQueryGroupModel.d.ts.map +1 -0
  794. package/dist/profiles/elasticsearch/esQueryGroupModel.js.map +1 -0
  795. package/dist/profiles/elasticsearch/esQueryOccur.cjs.map +1 -0
  796. package/dist/profiles/elasticsearch/esQueryOccur.d.ts.map +1 -0
  797. package/dist/profiles/elasticsearch/esQueryOccur.js.map +1 -0
  798. package/dist/profiles/elasticsearch/esQueryOperandEditors.cjs +279 -0
  799. package/dist/profiles/elasticsearch/esQueryOperandEditors.cjs.map +1 -0
  800. package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts +24 -0
  801. package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts.map +1 -0
  802. package/dist/profiles/elasticsearch/esQueryOperandEditors.js +279 -0
  803. package/dist/profiles/elasticsearch/esQueryOperandEditors.js.map +1 -0
  804. package/dist/profiles/elasticsearch/esQueryOperandModel.cjs.map +1 -0
  805. package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts +17 -0
  806. package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts.map +1 -0
  807. package/dist/profiles/elasticsearch/esQueryOperandModel.js.map +1 -0
  808. package/dist/profiles/elasticsearch/esQueryOperators.cjs +166 -0
  809. package/dist/profiles/elasticsearch/esQueryOperators.cjs.map +1 -0
  810. package/dist/profiles/elasticsearch/esQueryOperators.d.ts +84 -0
  811. package/dist/profiles/elasticsearch/esQueryOperators.d.ts.map +1 -0
  812. package/dist/profiles/elasticsearch/esQueryOperators.js +166 -0
  813. package/dist/profiles/elasticsearch/esQueryOperators.js.map +1 -0
  814. package/dist/profiles/elasticsearch/esQueryOutputEditor.cjs +138 -0
  815. package/dist/profiles/elasticsearch/esQueryOutputEditor.cjs.map +1 -0
  816. package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts +7 -0
  817. package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts.map +1 -0
  818. package/dist/profiles/elasticsearch/esQueryOutputEditor.js +138 -0
  819. package/dist/profiles/elasticsearch/esQueryOutputEditor.js.map +1 -0
  820. package/dist/profiles/elasticsearch/esQueryOutputModel.cjs.map +1 -0
  821. package/dist/profiles/elasticsearch/esQueryOutputModel.d.ts.map +1 -0
  822. package/dist/profiles/elasticsearch/esQueryOutputModel.js.map +1 -0
  823. package/dist/profiles/elasticsearch/esQueryPreview.cjs.map +1 -0
  824. package/dist/profiles/elasticsearch/esQueryPreview.d.ts.map +1 -0
  825. package/dist/profiles/elasticsearch/esQueryPreview.js.map +1 -0
  826. package/dist/profiles/elasticsearch/esQuerySortEditor.cjs +143 -0
  827. package/dist/profiles/elasticsearch/esQuerySortEditor.cjs.map +1 -0
  828. package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts.map +1 -0
  829. package/dist/profiles/elasticsearch/esQuerySortEditor.js +143 -0
  830. package/dist/profiles/elasticsearch/esQuerySortEditor.js.map +1 -0
  831. package/dist/profiles/elasticsearch/esQuerySortModel.cjs.map +1 -0
  832. package/dist/profiles/elasticsearch/esQuerySortModel.d.ts.map +1 -0
  833. package/dist/profiles/elasticsearch/esQuerySortModel.js.map +1 -0
  834. package/dist/profiles/elasticsearch/esValueCombobox.cjs +86 -0
  835. package/dist/profiles/elasticsearch/esValueCombobox.cjs.map +1 -0
  836. package/dist/profiles/elasticsearch/esValueCombobox.d.ts.map +1 -0
  837. package/dist/profiles/elasticsearch/esValueCombobox.js +86 -0
  838. package/dist/profiles/elasticsearch/esValueCombobox.js.map +1 -0
  839. package/dist/profiles/elasticsearch/index.d.ts +23 -0
  840. package/dist/profiles/elasticsearch/index.d.ts.map +1 -0
  841. package/dist/profiles/fields/index.d.ts +9 -0
  842. package/dist/profiles/fields/index.d.ts.map +1 -0
  843. package/dist/profiles/fields/profileColumnModel.cjs.map +1 -0
  844. package/dist/profiles/fields/profileColumnModel.d.ts +8 -0
  845. package/dist/profiles/fields/profileColumnModel.d.ts.map +1 -0
  846. package/dist/profiles/fields/profileColumnModel.js.map +1 -0
  847. package/dist/profiles/fields/profileColumnPicker.cjs +68 -0
  848. package/dist/profiles/fields/profileColumnPicker.cjs.map +1 -0
  849. package/dist/profiles/fields/profileColumnPicker.d.ts +11 -0
  850. package/dist/profiles/fields/profileColumnPicker.d.ts.map +1 -0
  851. package/dist/profiles/fields/profileColumnPicker.js +68 -0
  852. package/dist/profiles/fields/profileColumnPicker.js.map +1 -0
  853. package/dist/profiles/fields/profileFieldControls.cjs +50 -0
  854. package/dist/profiles/fields/profileFieldControls.cjs.map +1 -0
  855. package/dist/profiles/fields/profileFieldControls.d.ts +37 -0
  856. package/dist/profiles/fields/profileFieldControls.d.ts.map +1 -0
  857. package/dist/profiles/fields/profileFieldControls.js +50 -0
  858. package/dist/profiles/fields/profileFieldControls.js.map +1 -0
  859. package/dist/profiles/fields/profileFieldEditor.cjs +198 -0
  860. package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -0
  861. package/dist/profiles/fields/profileFieldEditor.d.ts +34 -0
  862. package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -0
  863. package/dist/profiles/fields/profileFieldEditor.js +198 -0
  864. package/dist/profiles/fields/profileFieldEditor.js.map +1 -0
  865. package/dist/profiles/fields/profileFieldFilterEditor.cjs +122 -0
  866. package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -0
  867. package/dist/profiles/fields/profileFieldFilterEditor.d.ts +16 -0
  868. package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -0
  869. package/dist/profiles/fields/profileFieldFilterEditor.js +122 -0
  870. package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -0
  871. package/dist/profiles/fields/profileFieldIcons.cjs +102 -0
  872. package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -0
  873. package/dist/profiles/fields/profileFieldIcons.d.ts +10 -0
  874. package/dist/profiles/fields/profileFieldIcons.d.ts.map +1 -0
  875. package/dist/profiles/fields/profileFieldIcons.js +102 -0
  876. package/dist/profiles/fields/profileFieldIcons.js.map +1 -0
  877. package/dist/profiles/fields/profileFieldList.cjs +215 -0
  878. package/dist/profiles/fields/profileFieldList.cjs.map +1 -0
  879. package/dist/profiles/fields/profileFieldList.d.ts +24 -0
  880. package/dist/profiles/fields/profileFieldList.d.ts.map +1 -0
  881. package/dist/profiles/fields/profileFieldList.js +215 -0
  882. package/dist/profiles/fields/profileFieldList.js.map +1 -0
  883. package/dist/profiles/fields/profileFieldManager.cjs +103 -0
  884. package/dist/profiles/fields/profileFieldManager.cjs.map +1 -0
  885. package/dist/profiles/fields/profileFieldManager.d.ts.map +1 -0
  886. package/dist/profiles/fields/profileFieldManager.js +103 -0
  887. package/dist/profiles/fields/profileFieldManager.js.map +1 -0
  888. package/dist/profiles/fields/profileFieldState.cjs +136 -0
  889. package/dist/profiles/fields/profileFieldState.cjs.map +1 -0
  890. package/dist/profiles/fields/profileFieldState.d.ts +41 -0
  891. package/dist/profiles/fields/profileFieldState.d.ts.map +1 -0
  892. package/dist/profiles/fields/profileFieldState.js +136 -0
  893. package/dist/profiles/fields/profileFieldState.js.map +1 -0
  894. package/dist/profiles/fields/profileFieldTypes.cjs.map +1 -0
  895. package/dist/profiles/fields/profileFieldTypes.d.ts +8 -0
  896. package/dist/profiles/fields/profileFieldTypes.d.ts.map +1 -0
  897. package/dist/profiles/fields/profileFieldTypes.js.map +1 -0
  898. package/dist/profiles/fields/profileParamModel.cjs.map +1 -0
  899. package/dist/profiles/fields/profileParamModel.d.ts +3 -0
  900. package/dist/profiles/fields/profileParamModel.d.ts.map +1 -0
  901. package/dist/profiles/fields/profileParamModel.js.map +1 -0
  902. package/dist/profiles/processor/index.d.ts +6 -0
  903. package/dist/profiles/processor/index.d.ts.map +1 -0
  904. package/dist/profiles/processor/processorConfig.cjs +185 -0
  905. package/dist/profiles/processor/processorConfig.cjs.map +1 -0
  906. package/dist/profiles/processor/processorConfig.d.ts +34 -0
  907. package/dist/profiles/processor/processorConfig.d.ts.map +1 -0
  908. package/dist/profiles/processor/processorConfig.js +185 -0
  909. package/dist/profiles/processor/processorConfig.js.map +1 -0
  910. package/dist/profiles/processor/processorPipeline.cjs +300 -0
  911. package/dist/profiles/processor/processorPipeline.cjs.map +1 -0
  912. package/dist/profiles/processor/processorPipeline.d.ts +11 -0
  913. package/dist/profiles/processor/processorPipeline.d.ts.map +1 -0
  914. package/dist/profiles/processor/processorPipeline.js +300 -0
  915. package/dist/profiles/processor/processorPipeline.js.map +1 -0
  916. package/dist/profiles/processor/processorPipelineEditor.cjs +330 -0
  917. package/dist/profiles/processor/processorPipelineEditor.cjs.map +1 -0
  918. package/dist/profiles/processor/processorPipelineEditor.d.ts +16 -0
  919. package/dist/profiles/processor/processorPipelineEditor.d.ts.map +1 -0
  920. package/dist/profiles/processor/processorPipelineEditor.js +330 -0
  921. package/dist/profiles/processor/processorPipelineEditor.js.map +1 -0
  922. package/dist/profiles/processor/processorPipelineExtension.cjs +28 -0
  923. package/dist/profiles/processor/processorPipelineExtension.cjs.map +1 -0
  924. package/dist/profiles/processor/processorPipelineExtension.d.ts +5 -0
  925. package/dist/profiles/processor/processorPipelineExtension.d.ts.map +1 -0
  926. package/dist/profiles/processor/processorPipelineExtension.js +28 -0
  927. package/dist/profiles/processor/processorPipelineExtension.js.map +1 -0
  928. package/dist/profiles/processor/processorPreview.cjs +55 -0
  929. package/dist/profiles/processor/processorPreview.cjs.map +1 -0
  930. package/dist/profiles/processor/processorPreview.d.ts +20 -0
  931. package/dist/profiles/processor/processorPreview.d.ts.map +1 -0
  932. package/dist/profiles/processor/processorPreview.js +55 -0
  933. package/dist/profiles/processor/processorPreview.js.map +1 -0
  934. package/dist/profiles/processor/processorPreviewTable.cjs +103 -0
  935. package/dist/profiles/processor/processorPreviewTable.cjs.map +1 -0
  936. package/dist/profiles/processor/processorPreviewTable.d.ts +6 -0
  937. package/dist/profiles/processor/processorPreviewTable.d.ts.map +1 -0
  938. package/dist/profiles/processor/processorPreviewTable.js +103 -0
  939. package/dist/profiles/processor/processorPreviewTable.js.map +1 -0
  940. package/dist/profiles/processor/processorSampleParams.cjs +38 -0
  941. package/dist/profiles/processor/processorSampleParams.cjs.map +1 -0
  942. package/dist/profiles/processor/processorSampleParams.d.ts +6 -0
  943. package/dist/profiles/processor/processorSampleParams.d.ts.map +1 -0
  944. package/dist/profiles/processor/processorSampleParams.js +38 -0
  945. package/dist/profiles/processor/processorSampleParams.js.map +1 -0
  946. package/dist/profiles/profileApi.cjs +16 -0
  947. package/dist/profiles/profileApi.cjs.map +1 -1
  948. package/dist/profiles/profileApi.d.ts +36 -3
  949. package/dist/profiles/profileApi.d.ts.map +1 -1
  950. package/dist/profiles/profileApi.js +16 -0
  951. package/dist/profiles/profileApi.js.map +1 -1
  952. package/dist/profiles/query/index.d.ts +9 -0
  953. package/dist/profiles/query/index.d.ts.map +1 -0
  954. package/dist/profiles/query/jsonPathSample.cjs +75 -0
  955. package/dist/profiles/query/jsonPathSample.cjs.map +1 -0
  956. package/dist/profiles/query/jsonPathSample.d.ts +27 -0
  957. package/dist/profiles/query/jsonPathSample.d.ts.map +1 -0
  958. package/dist/profiles/query/jsonPathSample.js +75 -0
  959. package/dist/profiles/query/jsonPathSample.js.map +1 -0
  960. package/dist/profiles/query/jsonPathSampleRow.cjs.map +1 -0
  961. package/dist/profiles/query/jsonPathSampleRow.d.ts.map +1 -0
  962. package/dist/profiles/query/jsonPathSampleRow.js.map +1 -0
  963. package/dist/profiles/query/kubernetesWorkloadTarget.cjs +43 -0
  964. package/dist/profiles/query/kubernetesWorkloadTarget.cjs.map +1 -0
  965. package/dist/profiles/query/kubernetesWorkloadTarget.d.ts +3 -0
  966. package/dist/profiles/query/kubernetesWorkloadTarget.d.ts.map +1 -0
  967. package/dist/profiles/query/kubernetesWorkloadTarget.js +43 -0
  968. package/dist/profiles/query/kubernetesWorkloadTarget.js.map +1 -0
  969. package/dist/profiles/query/kubernetesWorkloadTargetPicker.cjs +53 -0
  970. package/dist/profiles/query/kubernetesWorkloadTargetPicker.cjs.map +1 -0
  971. package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts +12 -0
  972. package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts.map +1 -0
  973. package/dist/profiles/query/kubernetesWorkloadTargetPicker.js +53 -0
  974. package/dist/profiles/query/kubernetesWorkloadTargetPicker.js.map +1 -0
  975. package/dist/profiles/query/profileSamplePayload.cjs.map +1 -0
  976. package/dist/profiles/query/profileSamplePayload.d.ts +13 -0
  977. package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -0
  978. package/dist/profiles/query/profileSamplePayload.js.map +1 -0
  979. package/dist/profiles/query/prometheusResults.cjs +60 -0
  980. package/dist/profiles/query/prometheusResults.cjs.map +1 -0
  981. package/dist/profiles/query/prometheusResults.d.ts +7 -0
  982. package/dist/profiles/query/prometheusResults.d.ts.map +1 -0
  983. package/dist/profiles/query/prometheusResults.js +60 -0
  984. package/dist/profiles/query/prometheusResults.js.map +1 -0
  985. package/dist/profiles/query/queryRowLimits.cjs +82 -0
  986. package/dist/profiles/query/queryRowLimits.cjs.map +1 -0
  987. package/dist/profiles/query/queryRowLimits.d.ts +9 -0
  988. package/dist/profiles/query/queryRowLimits.d.ts.map +1 -0
  989. package/dist/profiles/query/queryRowLimits.js +82 -0
  990. package/dist/profiles/query/queryRowLimits.js.map +1 -0
  991. package/dist/profiles/query/queryRowLimitsModel.cjs.map +1 -0
  992. package/dist/profiles/query/queryRowLimitsModel.d.ts +9 -0
  993. package/dist/profiles/query/queryRowLimitsModel.d.ts.map +1 -0
  994. package/dist/profiles/query/queryRowLimitsModel.js.map +1 -0
  995. package/dist/profiles/query/queryTargetPicker.cjs +42 -0
  996. package/dist/profiles/query/queryTargetPicker.cjs.map +1 -0
  997. package/dist/profiles/query/queryTargetPicker.d.ts +8 -0
  998. package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -0
  999. package/dist/profiles/query/queryTargetPicker.js +42 -0
  1000. package/dist/profiles/query/queryTargetPicker.js.map +1 -0
  1001. package/dist/profiles/wizard/index.d.ts +6 -0
  1002. package/dist/profiles/wizard/index.d.ts.map +1 -0
  1003. package/dist/profiles/wizard/profileWizard.cjs +257 -0
  1004. package/dist/profiles/wizard/profileWizard.cjs.map +1 -0
  1005. package/dist/profiles/wizard/profileWizard.d.ts +12 -0
  1006. package/dist/profiles/wizard/profileWizard.d.ts.map +1 -0
  1007. package/dist/profiles/wizard/profileWizard.js +257 -0
  1008. package/dist/profiles/wizard/profileWizard.js.map +1 -0
  1009. package/dist/profiles/wizard/profileWizardHelp.cjs.map +1 -0
  1010. package/dist/profiles/wizard/profileWizardHelp.d.ts.map +1 -0
  1011. package/dist/profiles/wizard/profileWizardHelp.js.map +1 -0
  1012. package/dist/profiles/wizard/profileWizardModel.cjs +204 -0
  1013. package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -0
  1014. package/dist/profiles/wizard/profileWizardModel.d.ts +266 -0
  1015. package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -0
  1016. package/dist/profiles/wizard/profileWizardModel.js +204 -0
  1017. package/dist/profiles/wizard/profileWizardModel.js.map +1 -0
  1018. package/dist/profiles/wizard/profileWizardQueryStep.cjs +215 -0
  1019. package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -0
  1020. package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -0
  1021. package/dist/profiles/wizard/profileWizardQueryStep.js +215 -0
  1022. package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -0
  1023. package/dist/profiles/wizard/profileWizardSteps.cjs +214 -0
  1024. package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -0
  1025. package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -0
  1026. package/dist/profiles/wizard/profileWizardSteps.js +214 -0
  1027. package/dist/profiles/wizard/profileWizardSteps.js.map +1 -0
  1028. package/dist/profiles.cjs +237 -178
  1029. package/dist/profiles.cjs.map +1 -1
  1030. package/dist/profiles.d.ts +8 -55
  1031. package/dist/profiles.d.ts.map +1 -1
  1032. package/dist/profiles.js +117 -58
  1033. package/dist/profiles.js.map +1 -1
  1034. package/dist/rpc/ChatLayer.cjs +27 -0
  1035. package/dist/rpc/ChatLayer.cjs.map +1 -0
  1036. package/dist/rpc/ChatLayer.d.ts +11 -0
  1037. package/dist/rpc/ChatLayer.d.ts.map +1 -0
  1038. package/dist/rpc/ChatLayer.js +27 -0
  1039. package/dist/rpc/ChatLayer.js.map +1 -0
  1040. package/dist/rpc/CommandForm.cjs +1 -1
  1041. package/dist/rpc/CommandForm.cjs.map +1 -1
  1042. package/dist/rpc/CommandForm.js +1 -1
  1043. package/dist/rpc/CommandForm.js.map +1 -1
  1044. package/dist/rpc/CommandOutput.cjs +29 -4
  1045. package/dist/rpc/CommandOutput.cjs.map +1 -1
  1046. package/dist/rpc/CommandOutput.d.ts +6 -2
  1047. package/dist/rpc/CommandOutput.d.ts.map +1 -1
  1048. package/dist/rpc/CommandOutput.js +29 -4
  1049. package/dist/rpc/CommandOutput.js.map +1 -1
  1050. package/dist/rpc/EndpointList.cjs +1 -1
  1051. package/dist/rpc/EndpointList.cjs.map +1 -1
  1052. package/dist/rpc/EndpointList.js +1 -1
  1053. package/dist/rpc/EndpointList.js.map +1 -1
  1054. package/dist/rpc/EntityExplorerApp.cjs +4 -1
  1055. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  1056. package/dist/rpc/EntityExplorerApp.d.ts +3 -1
  1057. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  1058. package/dist/rpc/EntityExplorerApp.js +4 -1
  1059. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  1060. package/dist/rpc/FilterForm.cjs +66 -80
  1061. package/dist/rpc/FilterForm.cjs.map +1 -1
  1062. package/dist/rpc/FilterForm.d.ts.map +1 -1
  1063. package/dist/rpc/FilterForm.js +68 -82
  1064. package/dist/rpc/FilterForm.js.map +1 -1
  1065. package/dist/rpc/InlineError.cjs +19 -2
  1066. package/dist/rpc/InlineError.cjs.map +1 -1
  1067. package/dist/rpc/InlineError.d.ts +5 -1
  1068. package/dist/rpc/InlineError.d.ts.map +1 -1
  1069. package/dist/rpc/InlineError.js +19 -2
  1070. package/dist/rpc/InlineError.js.map +1 -1
  1071. package/dist/rpc/OperationCatalog.cjs +96 -100
  1072. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  1073. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  1074. package/dist/rpc/OperationCatalog.js +98 -102
  1075. package/dist/rpc/OperationCatalog.js.map +1 -1
  1076. package/dist/rpc/OperationCommandPage.cjs +19 -7
  1077. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  1078. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  1079. package/dist/rpc/OperationCommandPage.js +21 -9
  1080. package/dist/rpc/OperationCommandPage.js.map +1 -1
  1081. package/dist/rpc/OperationEntityContextPicker.cjs +25 -13
  1082. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  1083. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  1084. package/dist/rpc/OperationEntityContextPicker.js +26 -14
  1085. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  1086. package/dist/rpc/OperationEntityPage.cjs +2 -8
  1087. package/dist/rpc/OperationEntityPage.cjs.map +1 -1
  1088. package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
  1089. package/dist/rpc/OperationEntityPage.js +2 -8
  1090. package/dist/rpc/OperationEntityPage.js.map +1 -1
  1091. package/dist/rpc/OperationResultView.cjs +13 -2
  1092. package/dist/rpc/OperationResultView.cjs.map +1 -1
  1093. package/dist/rpc/OperationResultView.d.ts +34 -2
  1094. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  1095. package/dist/rpc/OperationResultView.js +13 -2
  1096. package/dist/rpc/OperationResultView.js.map +1 -1
  1097. package/dist/rpc/apiClient.cjs +11 -1
  1098. package/dist/rpc/apiClient.cjs.map +1 -1
  1099. package/dist/rpc/apiClient.d.ts +15 -5
  1100. package/dist/rpc/apiClient.d.ts.map +1 -1
  1101. package/dist/rpc/apiClient.js +12 -2
  1102. package/dist/rpc/apiClient.js.map +1 -1
  1103. package/dist/rpc/cursorStale.cjs +35 -0
  1104. package/dist/rpc/cursorStale.cjs.map +1 -0
  1105. package/dist/rpc/cursorStale.d.ts +23 -0
  1106. package/dist/rpc/cursorStale.d.ts.map +1 -0
  1107. package/dist/rpc/cursorStale.js +35 -0
  1108. package/dist/rpc/cursorStale.js.map +1 -0
  1109. package/dist/rpc/executionPages.cjs +94 -0
  1110. package/dist/rpc/executionPages.cjs.map +1 -0
  1111. package/dist/rpc/executionPages.d.ts +18 -0
  1112. package/dist/rpc/executionPages.d.ts.map +1 -0
  1113. package/dist/rpc/executionPages.js +94 -0
  1114. package/dist/rpc/executionPages.js.map +1 -0
  1115. package/dist/rpc/filterShapes.cjs +17 -0
  1116. package/dist/rpc/filterShapes.cjs.map +1 -0
  1117. package/dist/rpc/filterShapes.d.ts +22 -0
  1118. package/dist/rpc/filterShapes.d.ts.map +1 -0
  1119. package/dist/rpc/filterShapes.js +17 -0
  1120. package/dist/rpc/filterShapes.js.map +1 -0
  1121. package/dist/rpc/formMetadata.cjs +225 -50
  1122. package/dist/rpc/formMetadata.cjs.map +1 -1
  1123. package/dist/rpc/formMetadata.d.ts +18 -1
  1124. package/dist/rpc/formMetadata.d.ts.map +1 -1
  1125. package/dist/rpc/formMetadata.js +227 -52
  1126. package/dist/rpc/formMetadata.js.map +1 -1
  1127. package/dist/rpc/operationErrorDiagnostics.cjs +100 -0
  1128. package/dist/rpc/operationErrorDiagnostics.cjs.map +1 -0
  1129. package/dist/rpc/operationErrorDiagnostics.d.ts +4 -0
  1130. package/dist/rpc/operationErrorDiagnostics.d.ts.map +1 -0
  1131. package/dist/rpc/operationErrorDiagnostics.js +100 -0
  1132. package/dist/rpc/operationErrorDiagnostics.js.map +1 -0
  1133. package/dist/rpc/operationFilterSearch.cjs +1 -1
  1134. package/dist/rpc/operationFilterSearch.cjs.map +1 -1
  1135. package/dist/rpc/operationFilterSearch.js +2 -2
  1136. package/dist/rpc/operationFilterSearch.js.map +1 -1
  1137. package/dist/rpc/types.cjs.map +1 -1
  1138. package/dist/rpc/types.d.ts +54 -3
  1139. package/dist/rpc/types.d.ts.map +1 -1
  1140. package/dist/rpc/types.js.map +1 -1
  1141. package/dist/rpc/useOperationPages.cjs +111 -0
  1142. package/dist/rpc/useOperationPages.cjs.map +1 -0
  1143. package/dist/rpc/useOperationPages.d.ts +46 -0
  1144. package/dist/rpc/useOperationPages.d.ts.map +1 -0
  1145. package/dist/rpc/useOperationPages.js +111 -0
  1146. package/dist/rpc/useOperationPages.js.map +1 -0
  1147. package/dist/rpc/useOperations.cjs +7 -4
  1148. package/dist/rpc/useOperations.cjs.map +1 -1
  1149. package/dist/rpc/useOperations.d.ts.map +1 -1
  1150. package/dist/rpc/useOperations.js +7 -4
  1151. package/dist/rpc/useOperations.js.map +1 -1
  1152. package/dist/rpc.cjs +2 -0
  1153. package/dist/rpc.cjs.map +1 -1
  1154. package/dist/rpc.d.ts +2 -1
  1155. package/dist/rpc.d.ts.map +1 -1
  1156. package/dist/rpc.js +2 -0
  1157. package/dist/rpc.js.map +1 -1
  1158. package/dist/styles.css +2 -2
  1159. package/dist/tailwind-preset.cjs +6 -3
  1160. package/dist/tailwind-preset.cjs.map +1 -1
  1161. package/dist/tailwind-preset.d.ts.map +1 -1
  1162. package/dist/tailwind-preset.js +6 -3
  1163. package/dist/tailwind-preset.js.map +1 -1
  1164. package/dist/utils.cjs +6 -0
  1165. package/dist/utils.cjs.map +1 -1
  1166. package/dist/utils.d.ts +1 -0
  1167. package/dist/utils.d.ts.map +1 -1
  1168. package/dist/utils.js +6 -0
  1169. package/dist/utils.js.map +1 -1
  1170. package/package.json +5 -5
  1171. package/dist/profiles/catalogTree.cjs +0 -133
  1172. package/dist/profiles/catalogTree.cjs.map +0 -1
  1173. package/dist/profiles/catalogTree.d.ts.map +0 -1
  1174. package/dist/profiles/catalogTree.js +0 -133
  1175. package/dist/profiles/catalogTree.js.map +0 -1
  1176. package/dist/profiles/connectionBrowserModel.cjs +0 -185
  1177. package/dist/profiles/connectionBrowserModel.cjs.map +0 -1
  1178. package/dist/profiles/connectionBrowserModel.d.ts +0 -169
  1179. package/dist/profiles/connectionBrowserModel.d.ts.map +0 -1
  1180. package/dist/profiles/connectionBrowserModel.js +0 -185
  1181. package/dist/profiles/connectionBrowserModel.js.map +0 -1
  1182. package/dist/profiles/connectionQueryWorkspace.cjs +0 -185
  1183. package/dist/profiles/connectionQueryWorkspace.cjs.map +0 -1
  1184. package/dist/profiles/connectionQueryWorkspace.d.ts +0 -63
  1185. package/dist/profiles/connectionQueryWorkspace.d.ts.map +0 -1
  1186. package/dist/profiles/connectionQueryWorkspace.js +0 -185
  1187. package/dist/profiles/connectionQueryWorkspace.js.map +0 -1
  1188. package/dist/profiles/connectionQueryWorkspaceModel.cjs +0 -28
  1189. package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +0 -1
  1190. package/dist/profiles/connectionQueryWorkspaceModel.d.ts +0 -38
  1191. package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +0 -1
  1192. package/dist/profiles/connectionQueryWorkspaceModel.js +0 -28
  1193. package/dist/profiles/connectionQueryWorkspaceModel.js.map +0 -1
  1194. package/dist/profiles/esFieldValues.cjs +0 -64
  1195. package/dist/profiles/esFieldValues.cjs.map +0 -1
  1196. package/dist/profiles/esFieldValues.d.ts +0 -48
  1197. package/dist/profiles/esFieldValues.d.ts.map +0 -1
  1198. package/dist/profiles/esFieldValues.js +0 -64
  1199. package/dist/profiles/esFieldValues.js.map +0 -1
  1200. package/dist/profiles/esParamMappingModel.cjs +0 -301
  1201. package/dist/profiles/esParamMappingModel.cjs.map +0 -1
  1202. package/dist/profiles/esParamMappingModel.d.ts +0 -37
  1203. package/dist/profiles/esParamMappingModel.d.ts.map +0 -1
  1204. package/dist/profiles/esParamMappingModel.js +0 -301
  1205. package/dist/profiles/esParamMappingModel.js.map +0 -1
  1206. package/dist/profiles/esParamMappingPill.cjs.map +0 -1
  1207. package/dist/profiles/esParamMappingPill.d.ts.map +0 -1
  1208. package/dist/profiles/esParamMappingPill.js.map +0 -1
  1209. package/dist/profiles/esParamOperandExtension.cjs +0 -75
  1210. package/dist/profiles/esParamOperandExtension.cjs.map +0 -1
  1211. package/dist/profiles/esParamOperandExtension.d.ts +0 -11
  1212. package/dist/profiles/esParamOperandExtension.d.ts.map +0 -1
  1213. package/dist/profiles/esParamOperandExtension.js +0 -75
  1214. package/dist/profiles/esParamOperandExtension.js.map +0 -1
  1215. package/dist/profiles/esQueryBuilder.cjs +0 -205
  1216. package/dist/profiles/esQueryBuilder.cjs.map +0 -1
  1217. package/dist/profiles/esQueryBuilder.d.ts +0 -35
  1218. package/dist/profiles/esQueryBuilder.d.ts.map +0 -1
  1219. package/dist/profiles/esQueryBuilder.js +0 -205
  1220. package/dist/profiles/esQueryBuilder.js.map +0 -1
  1221. package/dist/profiles/esQueryBuilderExtension.cjs.map +0 -1
  1222. package/dist/profiles/esQueryBuilderExtension.d.ts +0 -5
  1223. package/dist/profiles/esQueryBuilderExtension.d.ts.map +0 -1
  1224. package/dist/profiles/esQueryBuilderExtension.js.map +0 -1
  1225. package/dist/profiles/esQueryBuilderForm.cjs +0 -26
  1226. package/dist/profiles/esQueryBuilderForm.cjs.map +0 -1
  1227. package/dist/profiles/esQueryBuilderForm.d.ts +0 -18
  1228. package/dist/profiles/esQueryBuilderForm.d.ts.map +0 -1
  1229. package/dist/profiles/esQueryBuilderForm.js +0 -26
  1230. package/dist/profiles/esQueryBuilderForm.js.map +0 -1
  1231. package/dist/profiles/esQueryBuilderModel.cjs.map +0 -1
  1232. package/dist/profiles/esQueryBuilderModel.d.ts +0 -108
  1233. package/dist/profiles/esQueryBuilderModel.d.ts.map +0 -1
  1234. package/dist/profiles/esQueryBuilderModel.js.map +0 -1
  1235. package/dist/profiles/esQueryClauseGroup.cjs +0 -144
  1236. package/dist/profiles/esQueryClauseGroup.cjs.map +0 -1
  1237. package/dist/profiles/esQueryClauseGroup.d.ts.map +0 -1
  1238. package/dist/profiles/esQueryClauseGroup.js +0 -144
  1239. package/dist/profiles/esQueryClauseGroup.js.map +0 -1
  1240. package/dist/profiles/esQueryCompile.cjs +0 -47
  1241. package/dist/profiles/esQueryCompile.cjs.map +0 -1
  1242. package/dist/profiles/esQueryCompile.d.ts +0 -39
  1243. package/dist/profiles/esQueryCompile.d.ts.map +0 -1
  1244. package/dist/profiles/esQueryCompile.js +0 -47
  1245. package/dist/profiles/esQueryCompile.js.map +0 -1
  1246. package/dist/profiles/esQueryConditionRow.cjs +0 -168
  1247. package/dist/profiles/esQueryConditionRow.cjs.map +0 -1
  1248. package/dist/profiles/esQueryConditionRow.d.ts +0 -37
  1249. package/dist/profiles/esQueryConditionRow.d.ts.map +0 -1
  1250. package/dist/profiles/esQueryConditionRow.js +0 -168
  1251. package/dist/profiles/esQueryConditionRow.js.map +0 -1
  1252. package/dist/profiles/esQueryGroupModel.cjs.map +0 -1
  1253. package/dist/profiles/esQueryGroupModel.d.ts.map +0 -1
  1254. package/dist/profiles/esQueryGroupModel.js.map +0 -1
  1255. package/dist/profiles/esQueryOccur.cjs.map +0 -1
  1256. package/dist/profiles/esQueryOccur.d.ts.map +0 -1
  1257. package/dist/profiles/esQueryOccur.js.map +0 -1
  1258. package/dist/profiles/esQueryOperandEditors.cjs +0 -279
  1259. package/dist/profiles/esQueryOperandEditors.cjs.map +0 -1
  1260. package/dist/profiles/esQueryOperandEditors.d.ts +0 -24
  1261. package/dist/profiles/esQueryOperandEditors.d.ts.map +0 -1
  1262. package/dist/profiles/esQueryOperandEditors.js +0 -279
  1263. package/dist/profiles/esQueryOperandEditors.js.map +0 -1
  1264. package/dist/profiles/esQueryOperandModel.cjs.map +0 -1
  1265. package/dist/profiles/esQueryOperandModel.d.ts +0 -17
  1266. package/dist/profiles/esQueryOperandModel.d.ts.map +0 -1
  1267. package/dist/profiles/esQueryOperandModel.js.map +0 -1
  1268. package/dist/profiles/esQueryOperators.cjs +0 -165
  1269. package/dist/profiles/esQueryOperators.cjs.map +0 -1
  1270. package/dist/profiles/esQueryOperators.d.ts +0 -83
  1271. package/dist/profiles/esQueryOperators.d.ts.map +0 -1
  1272. package/dist/profiles/esQueryOperators.js +0 -165
  1273. package/dist/profiles/esQueryOperators.js.map +0 -1
  1274. package/dist/profiles/esQueryOutputEditor.cjs +0 -138
  1275. package/dist/profiles/esQueryOutputEditor.cjs.map +0 -1
  1276. package/dist/profiles/esQueryOutputEditor.d.ts +0 -7
  1277. package/dist/profiles/esQueryOutputEditor.d.ts.map +0 -1
  1278. package/dist/profiles/esQueryOutputEditor.js +0 -138
  1279. package/dist/profiles/esQueryOutputEditor.js.map +0 -1
  1280. package/dist/profiles/esQueryOutputModel.cjs.map +0 -1
  1281. package/dist/profiles/esQueryOutputModel.d.ts.map +0 -1
  1282. package/dist/profiles/esQueryOutputModel.js.map +0 -1
  1283. package/dist/profiles/esQueryPreview.cjs.map +0 -1
  1284. package/dist/profiles/esQueryPreview.d.ts.map +0 -1
  1285. package/dist/profiles/esQueryPreview.js.map +0 -1
  1286. package/dist/profiles/esQuerySortEditor.cjs +0 -143
  1287. package/dist/profiles/esQuerySortEditor.cjs.map +0 -1
  1288. package/dist/profiles/esQuerySortEditor.d.ts.map +0 -1
  1289. package/dist/profiles/esQuerySortEditor.js +0 -143
  1290. package/dist/profiles/esQuerySortEditor.js.map +0 -1
  1291. package/dist/profiles/esQuerySortModel.cjs.map +0 -1
  1292. package/dist/profiles/esQuerySortModel.d.ts.map +0 -1
  1293. package/dist/profiles/esQuerySortModel.js.map +0 -1
  1294. package/dist/profiles/esValueCombobox.cjs +0 -86
  1295. package/dist/profiles/esValueCombobox.cjs.map +0 -1
  1296. package/dist/profiles/esValueCombobox.d.ts.map +0 -1
  1297. package/dist/profiles/esValueCombobox.js +0 -86
  1298. package/dist/profiles/esValueCombobox.js.map +0 -1
  1299. package/dist/profiles/jsonPathSample.cjs +0 -75
  1300. package/dist/profiles/jsonPathSample.cjs.map +0 -1
  1301. package/dist/profiles/jsonPathSample.d.ts +0 -27
  1302. package/dist/profiles/jsonPathSample.d.ts.map +0 -1
  1303. package/dist/profiles/jsonPathSample.js +0 -75
  1304. package/dist/profiles/jsonPathSample.js.map +0 -1
  1305. package/dist/profiles/jsonPathSampleRow.cjs.map +0 -1
  1306. package/dist/profiles/jsonPathSampleRow.d.ts.map +0 -1
  1307. package/dist/profiles/jsonPathSampleRow.js.map +0 -1
  1308. package/dist/profiles/profileBuilder.cjs +0 -65
  1309. package/dist/profiles/profileBuilder.cjs.map +0 -1
  1310. package/dist/profiles/profileBuilder.d.ts.map +0 -1
  1311. package/dist/profiles/profileBuilder.js +0 -65
  1312. package/dist/profiles/profileBuilder.js.map +0 -1
  1313. package/dist/profiles/profileBuilderExtension.cjs.map +0 -1
  1314. package/dist/profiles/profileBuilderExtension.d.ts +0 -5
  1315. package/dist/profiles/profileBuilderExtension.d.ts.map +0 -1
  1316. package/dist/profiles/profileBuilderExtension.js.map +0 -1
  1317. package/dist/profiles/profileBuilderWorkspace.cjs +0 -368
  1318. package/dist/profiles/profileBuilderWorkspace.cjs.map +0 -1
  1319. package/dist/profiles/profileBuilderWorkspace.d.ts +0 -21
  1320. package/dist/profiles/profileBuilderWorkspace.d.ts.map +0 -1
  1321. package/dist/profiles/profileBuilderWorkspace.js +0 -368
  1322. package/dist/profiles/profileBuilderWorkspace.js.map +0 -1
  1323. package/dist/profiles/profileColumnModel.cjs.map +0 -1
  1324. package/dist/profiles/profileColumnModel.d.ts +0 -8
  1325. package/dist/profiles/profileColumnModel.d.ts.map +0 -1
  1326. package/dist/profiles/profileColumnModel.js.map +0 -1
  1327. package/dist/profiles/profileColumnPicker.cjs +0 -68
  1328. package/dist/profiles/profileColumnPicker.cjs.map +0 -1
  1329. package/dist/profiles/profileColumnPicker.d.ts +0 -11
  1330. package/dist/profiles/profileColumnPicker.d.ts.map +0 -1
  1331. package/dist/profiles/profileColumnPicker.js +0 -68
  1332. package/dist/profiles/profileColumnPicker.js.map +0 -1
  1333. package/dist/profiles/profileEditor.cjs +0 -386
  1334. package/dist/profiles/profileEditor.cjs.map +0 -1
  1335. package/dist/profiles/profileEditor.d.ts +0 -19
  1336. package/dist/profiles/profileEditor.d.ts.map +0 -1
  1337. package/dist/profiles/profileEditor.js +0 -386
  1338. package/dist/profiles/profileEditor.js.map +0 -1
  1339. package/dist/profiles/profileEditorModel.cjs +0 -181
  1340. package/dist/profiles/profileEditorModel.cjs.map +0 -1
  1341. package/dist/profiles/profileEditorModel.d.ts +0 -74
  1342. package/dist/profiles/profileEditorModel.d.ts.map +0 -1
  1343. package/dist/profiles/profileEditorModel.js +0 -181
  1344. package/dist/profiles/profileEditorModel.js.map +0 -1
  1345. package/dist/profiles/profileEditorPreview.cjs.map +0 -1
  1346. package/dist/profiles/profileEditorPreview.d.ts +0 -12
  1347. package/dist/profiles/profileEditorPreview.d.ts.map +0 -1
  1348. package/dist/profiles/profileEditorPreview.js.map +0 -1
  1349. package/dist/profiles/profileEditorRail.cjs.map +0 -1
  1350. package/dist/profiles/profileEditorRail.d.ts.map +0 -1
  1351. package/dist/profiles/profileEditorRail.js.map +0 -1
  1352. package/dist/profiles/profileEditorRaw.cjs +0 -118
  1353. package/dist/profiles/profileEditorRaw.cjs.map +0 -1
  1354. package/dist/profiles/profileEditorRaw.d.ts +0 -7
  1355. package/dist/profiles/profileEditorRaw.d.ts.map +0 -1
  1356. package/dist/profiles/profileEditorRaw.js +0 -118
  1357. package/dist/profiles/profileEditorRaw.js.map +0 -1
  1358. package/dist/profiles/profileEditorRoutes.cjs.map +0 -1
  1359. package/dist/profiles/profileEditorRoutes.d.ts.map +0 -1
  1360. package/dist/profiles/profileEditorRoutes.js.map +0 -1
  1361. package/dist/profiles/profileEditorSections.cjs +0 -213
  1362. package/dist/profiles/profileEditorSections.cjs.map +0 -1
  1363. package/dist/profiles/profileEditorSections.d.ts +0 -23
  1364. package/dist/profiles/profileEditorSections.d.ts.map +0 -1
  1365. package/dist/profiles/profileEditorSections.js +0 -213
  1366. package/dist/profiles/profileEditorSections.js.map +0 -1
  1367. package/dist/profiles/profileFieldEditor.cjs +0 -200
  1368. package/dist/profiles/profileFieldEditor.cjs.map +0 -1
  1369. package/dist/profiles/profileFieldEditor.d.ts +0 -34
  1370. package/dist/profiles/profileFieldEditor.d.ts.map +0 -1
  1371. package/dist/profiles/profileFieldEditor.js +0 -200
  1372. package/dist/profiles/profileFieldEditor.js.map +0 -1
  1373. package/dist/profiles/profileFieldGrid.cjs +0 -250
  1374. package/dist/profiles/profileFieldGrid.cjs.map +0 -1
  1375. package/dist/profiles/profileFieldGrid.d.ts +0 -20
  1376. package/dist/profiles/profileFieldGrid.d.ts.map +0 -1
  1377. package/dist/profiles/profileFieldGrid.js +0 -250
  1378. package/dist/profiles/profileFieldGrid.js.map +0 -1
  1379. package/dist/profiles/profileFieldManager.cjs +0 -103
  1380. package/dist/profiles/profileFieldManager.cjs.map +0 -1
  1381. package/dist/profiles/profileFieldManager.d.ts.map +0 -1
  1382. package/dist/profiles/profileFieldManager.js +0 -103
  1383. package/dist/profiles/profileFieldManager.js.map +0 -1
  1384. package/dist/profiles/profileFieldState.cjs +0 -136
  1385. package/dist/profiles/profileFieldState.cjs.map +0 -1
  1386. package/dist/profiles/profileFieldState.d.ts +0 -41
  1387. package/dist/profiles/profileFieldState.d.ts.map +0 -1
  1388. package/dist/profiles/profileFieldState.js +0 -136
  1389. package/dist/profiles/profileFieldState.js.map +0 -1
  1390. package/dist/profiles/profileFieldTypes.cjs.map +0 -1
  1391. package/dist/profiles/profileFieldTypes.d.ts +0 -8
  1392. package/dist/profiles/profileFieldTypes.d.ts.map +0 -1
  1393. package/dist/profiles/profileFieldTypes.js.map +0 -1
  1394. package/dist/profiles/profileParamModel.cjs.map +0 -1
  1395. package/dist/profiles/profileParamModel.d.ts +0 -3
  1396. package/dist/profiles/profileParamModel.d.ts.map +0 -1
  1397. package/dist/profiles/profileParamModel.js.map +0 -1
  1398. package/dist/profiles/profileSamplePayload.cjs.map +0 -1
  1399. package/dist/profiles/profileSamplePayload.d.ts +0 -13
  1400. package/dist/profiles/profileSamplePayload.d.ts.map +0 -1
  1401. package/dist/profiles/profileSamplePayload.js.map +0 -1
  1402. package/dist/profiles/profileWizard.cjs +0 -257
  1403. package/dist/profiles/profileWizard.cjs.map +0 -1
  1404. package/dist/profiles/profileWizard.d.ts +0 -12
  1405. package/dist/profiles/profileWizard.d.ts.map +0 -1
  1406. package/dist/profiles/profileWizard.js +0 -257
  1407. package/dist/profiles/profileWizard.js.map +0 -1
  1408. package/dist/profiles/profileWizardHelp.cjs.map +0 -1
  1409. package/dist/profiles/profileWizardHelp.d.ts.map +0 -1
  1410. package/dist/profiles/profileWizardHelp.js.map +0 -1
  1411. package/dist/profiles/profileWizardModel.cjs +0 -198
  1412. package/dist/profiles/profileWizardModel.cjs.map +0 -1
  1413. package/dist/profiles/profileWizardModel.d.ts +0 -255
  1414. package/dist/profiles/profileWizardModel.d.ts.map +0 -1
  1415. package/dist/profiles/profileWizardModel.js +0 -198
  1416. package/dist/profiles/profileWizardModel.js.map +0 -1
  1417. package/dist/profiles/profileWizardQueryStep.cjs +0 -215
  1418. package/dist/profiles/profileWizardQueryStep.cjs.map +0 -1
  1419. package/dist/profiles/profileWizardQueryStep.d.ts.map +0 -1
  1420. package/dist/profiles/profileWizardQueryStep.js +0 -215
  1421. package/dist/profiles/profileWizardQueryStep.js.map +0 -1
  1422. package/dist/profiles/profileWizardSteps.cjs +0 -214
  1423. package/dist/profiles/profileWizardSteps.cjs.map +0 -1
  1424. package/dist/profiles/profileWizardSteps.d.ts.map +0 -1
  1425. package/dist/profiles/profileWizardSteps.js +0 -214
  1426. package/dist/profiles/profileWizardSteps.js.map +0 -1
  1427. package/dist/profiles/profileYaml.cjs +0 -19
  1428. package/dist/profiles/profileYaml.cjs.map +0 -1
  1429. package/dist/profiles/profileYaml.d.ts +0 -4
  1430. package/dist/profiles/profileYaml.d.ts.map +0 -1
  1431. package/dist/profiles/profileYaml.js +0 -19
  1432. package/dist/profiles/profileYaml.js.map +0 -1
  1433. package/dist/profiles/prometheusResults.cjs +0 -60
  1434. package/dist/profiles/prometheusResults.cjs.map +0 -1
  1435. package/dist/profiles/prometheusResults.d.ts +0 -7
  1436. package/dist/profiles/prometheusResults.d.ts.map +0 -1
  1437. package/dist/profiles/prometheusResults.js +0 -60
  1438. package/dist/profiles/prometheusResults.js.map +0 -1
  1439. package/dist/profiles/queryRowLimits.cjs +0 -82
  1440. package/dist/profiles/queryRowLimits.cjs.map +0 -1
  1441. package/dist/profiles/queryRowLimits.d.ts +0 -9
  1442. package/dist/profiles/queryRowLimits.d.ts.map +0 -1
  1443. package/dist/profiles/queryRowLimits.js +0 -82
  1444. package/dist/profiles/queryRowLimits.js.map +0 -1
  1445. package/dist/profiles/queryRowLimitsModel.cjs.map +0 -1
  1446. package/dist/profiles/queryRowLimitsModel.d.ts +0 -9
  1447. package/dist/profiles/queryRowLimitsModel.d.ts.map +0 -1
  1448. package/dist/profiles/queryRowLimitsModel.js.map +0 -1
  1449. package/dist/profiles/queryTargetPicker.cjs +0 -42
  1450. package/dist/profiles/queryTargetPicker.cjs.map +0 -1
  1451. package/dist/profiles/queryTargetPicker.d.ts +0 -8
  1452. package/dist/profiles/queryTargetPicker.d.ts.map +0 -1
  1453. package/dist/profiles/queryTargetPicker.js +0 -42
  1454. package/dist/profiles/queryTargetPicker.js.map +0 -1
  1455. package/dist/profiles/testSchema.d.ts +0 -3
  1456. package/dist/profiles/testSchema.d.ts.map +0 -1
  1457. /package/dist/profiles/{catalogTree.d.ts → connections/catalogTree.d.ts} +0 -0
  1458. /package/dist/profiles/{profileBuilder.d.ts → editor/profileBuilder.d.ts} +0 -0
  1459. /package/dist/profiles/{profileBuilderExtension.cjs → editor/profileBuilderExtension.cjs} +0 -0
  1460. /package/dist/profiles/{profileBuilderExtension.js → editor/profileBuilderExtension.js} +0 -0
  1461. /package/dist/profiles/{profileEditorPreview.cjs → editor/profileEditorPreview.cjs} +0 -0
  1462. /package/dist/profiles/{profileEditorPreview.js → editor/profileEditorPreview.js} +0 -0
  1463. /package/dist/profiles/{profileEditorRail.cjs → editor/profileEditorRail.cjs} +0 -0
  1464. /package/dist/profiles/{profileEditorRail.d.ts → editor/profileEditorRail.d.ts} +0 -0
  1465. /package/dist/profiles/{profileEditorRail.js → editor/profileEditorRail.js} +0 -0
  1466. /package/dist/profiles/{profileEditorRoutes.cjs → editor/profileEditorRoutes.cjs} +0 -0
  1467. /package/dist/profiles/{profileEditorRoutes.d.ts → editor/profileEditorRoutes.d.ts} +0 -0
  1468. /package/dist/profiles/{profileEditorRoutes.js → editor/profileEditorRoutes.js} +0 -0
  1469. /package/dist/profiles/{esParamMappingPill.cjs → elasticsearch/esParamMappingPill.cjs} +0 -0
  1470. /package/dist/profiles/{esParamMappingPill.d.ts → elasticsearch/esParamMappingPill.d.ts} +0 -0
  1471. /package/dist/profiles/{esParamMappingPill.js → elasticsearch/esParamMappingPill.js} +0 -0
  1472. /package/dist/profiles/{esQueryBuilderExtension.cjs → elasticsearch/esQueryBuilderExtension.cjs} +0 -0
  1473. /package/dist/profiles/{esQueryBuilderExtension.js → elasticsearch/esQueryBuilderExtension.js} +0 -0
  1474. /package/dist/profiles/{esQueryBuilderModel.cjs → elasticsearch/esQueryBuilderModel.cjs} +0 -0
  1475. /package/dist/profiles/{esQueryBuilderModel.js → elasticsearch/esQueryBuilderModel.js} +0 -0
  1476. /package/dist/profiles/{esQueryClauseGroup.d.ts → elasticsearch/esQueryClauseGroup.d.ts} +0 -0
  1477. /package/dist/profiles/{esQueryGroupModel.cjs → elasticsearch/esQueryGroupModel.cjs} +0 -0
  1478. /package/dist/profiles/{esQueryGroupModel.d.ts → elasticsearch/esQueryGroupModel.d.ts} +0 -0
  1479. /package/dist/profiles/{esQueryGroupModel.js → elasticsearch/esQueryGroupModel.js} +0 -0
  1480. /package/dist/profiles/{esQueryOccur.cjs → elasticsearch/esQueryOccur.cjs} +0 -0
  1481. /package/dist/profiles/{esQueryOccur.d.ts → elasticsearch/esQueryOccur.d.ts} +0 -0
  1482. /package/dist/profiles/{esQueryOccur.js → elasticsearch/esQueryOccur.js} +0 -0
  1483. /package/dist/profiles/{esQueryOperandModel.cjs → elasticsearch/esQueryOperandModel.cjs} +0 -0
  1484. /package/dist/profiles/{esQueryOperandModel.js → elasticsearch/esQueryOperandModel.js} +0 -0
  1485. /package/dist/profiles/{esQueryOutputModel.cjs → elasticsearch/esQueryOutputModel.cjs} +0 -0
  1486. /package/dist/profiles/{esQueryOutputModel.d.ts → elasticsearch/esQueryOutputModel.d.ts} +0 -0
  1487. /package/dist/profiles/{esQueryOutputModel.js → elasticsearch/esQueryOutputModel.js} +0 -0
  1488. /package/dist/profiles/{esQueryPreview.cjs → elasticsearch/esQueryPreview.cjs} +0 -0
  1489. /package/dist/profiles/{esQueryPreview.d.ts → elasticsearch/esQueryPreview.d.ts} +0 -0
  1490. /package/dist/profiles/{esQueryPreview.js → elasticsearch/esQueryPreview.js} +0 -0
  1491. /package/dist/profiles/{esQuerySortEditor.d.ts → elasticsearch/esQuerySortEditor.d.ts} +0 -0
  1492. /package/dist/profiles/{esQuerySortModel.cjs → elasticsearch/esQuerySortModel.cjs} +0 -0
  1493. /package/dist/profiles/{esQuerySortModel.d.ts → elasticsearch/esQuerySortModel.d.ts} +0 -0
  1494. /package/dist/profiles/{esQuerySortModel.js → elasticsearch/esQuerySortModel.js} +0 -0
  1495. /package/dist/profiles/{esValueCombobox.d.ts → elasticsearch/esValueCombobox.d.ts} +0 -0
  1496. /package/dist/profiles/{profileColumnModel.cjs → fields/profileColumnModel.cjs} +0 -0
  1497. /package/dist/profiles/{profileColumnModel.js → fields/profileColumnModel.js} +0 -0
  1498. /package/dist/profiles/{profileFieldManager.d.ts → fields/profileFieldManager.d.ts} +0 -0
  1499. /package/dist/profiles/{profileFieldTypes.cjs → fields/profileFieldTypes.cjs} +0 -0
  1500. /package/dist/profiles/{profileFieldTypes.js → fields/profileFieldTypes.js} +0 -0
  1501. /package/dist/profiles/{profileParamModel.cjs → fields/profileParamModel.cjs} +0 -0
  1502. /package/dist/profiles/{profileParamModel.js → fields/profileParamModel.js} +0 -0
  1503. /package/dist/profiles/{jsonPathSampleRow.cjs → query/jsonPathSampleRow.cjs} +0 -0
  1504. /package/dist/profiles/{jsonPathSampleRow.d.ts → query/jsonPathSampleRow.d.ts} +0 -0
  1505. /package/dist/profiles/{jsonPathSampleRow.js → query/jsonPathSampleRow.js} +0 -0
  1506. /package/dist/profiles/{profileSamplePayload.cjs → query/profileSamplePayload.cjs} +0 -0
  1507. /package/dist/profiles/{profileSamplePayload.js → query/profileSamplePayload.js} +0 -0
  1508. /package/dist/profiles/{queryRowLimitsModel.cjs → query/queryRowLimitsModel.cjs} +0 -0
  1509. /package/dist/profiles/{queryRowLimitsModel.js → query/queryRowLimitsModel.js} +0 -0
  1510. /package/dist/profiles/{profileWizardHelp.cjs → wizard/profileWizardHelp.cjs} +0 -0
  1511. /package/dist/profiles/{profileWizardHelp.d.ts → wizard/profileWizardHelp.d.ts} +0 -0
  1512. /package/dist/profiles/{profileWizardHelp.js → wizard/profileWizardHelp.js} +0 -0
  1513. /package/dist/profiles/{profileWizardQueryStep.d.ts → wizard/profileWizardQueryStep.d.ts} +0 -0
  1514. /package/dist/profiles/{profileWizardSteps.d.ts → wizard/profileWizardSteps.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorDetails.cjs","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"sourcesContent":["import { useState, type MouseEvent, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport {\n UiCheck,\n UiChevronRight,\n UiCopy,\n UiDebugStepOver,\n UiMethod,\n UiWarningTriangle,\n} from \"../../icons\";\nimport {\n compactStackPath,\n isApplicationStackFrame,\n parseDiagnosticsStackTrace,\n parseInlineJsonContextValue,\n type ErrorDiagnostics,\n type ErrorStackFrame,\n} from \"./error-diagnostics\";\n\nexport type ErrorDetailsProps = {\n diagnostics: ErrorDiagnostics;\n // Optional renderer for context values that parse as JSON. Defaults to a\n // CopyBadge with the raw string. MC's playbook view passes a richer JsonView\n // here; smaller consumers (plugin iframes) can leave it unset.\n renderJsonContext?: (entry: { label: string; value: string; data: unknown }) => ReactNode;\n};\n\nexport function ErrorDetails({ diagnostics, renderJsonContext }: ErrorDetailsProps) {\n const [copyState, setCopyState] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n const scalarContext = diagnostics.context.filter(\n ([, value]) => !parseInlineJsonContextValue(value),\n );\n const jsonContext = diagnostics.context\n .map(([label, value]) => ({\n label,\n value,\n data: parseInlineJsonContextValue(value),\n }))\n .filter(\n (entry): entry is { label: string; value: string; data: unknown } => entry.data !== null,\n );\n const copyDiagnostics = async (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!navigator.clipboard?.writeText) {\n setCopyState(\"failed\");\n return;\n }\n try {\n await navigator.clipboard.writeText(diagnosticReport(diagnostics));\n setCopyState(\"copied\");\n } catch {\n setCopyState(\"failed\");\n }\n };\n return (\n <details className=\"group rounded-md border border-destructive/30 bg-destructive/5\">\n <summary className=\"flex cursor-pointer list-none items-start gap-2 p-3\">\n <Icon icon={UiWarningTriangle} className=\"mt-0.5 shrink-0 text-destructive\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-semibold text-destructive\">Error</div>\n <div className=\"mt-1 whitespace-pre-wrap text-sm text-destructive\">\n {diagnostics.message}\n </div>\n </div>\n <div className=\"flex shrink-0 flex-col items-end gap-2 text-xs font-medium text-muted-foreground sm:flex-row sm:items-center sm:gap-3\">\n <button\n type=\"button\"\n aria-label={\n copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy error details\"\n }\n title=\"Copy message, trace, time, context, and stack trace\"\n className=\"inline-flex items-center gap-1 hover:text-foreground\"\n onClick={(event) => void copyDiagnostics(event)}\n >\n <Icon icon={copyState === \"copied\" ? UiCheck : UiCopy} />\n <span aria-live=\"polite\">\n {copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy\"}\n </span>\n </button>\n <span className=\"inline-flex items-center gap-1 hover:text-foreground\">\n <span className=\"group-open:hidden\">More details</span>\n <span className=\"hidden group-open:inline\">Less details</span>\n <Icon\n icon={UiChevronRight}\n className=\"shrink-0 transition-transform group-open:rotate-90\"\n />\n </span>\n </div>\n </summary>\n <div className=\"grid gap-3 border-t border-destructive/20 p-3 pt-2\">\n {(diagnostics.trace || diagnostics.time) && (\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {diagnostics.trace && (\n <CopyBadge label=\"Trace\" value={diagnostics.trace} className=\"max-w-full\" />\n )}\n {diagnostics.time && (\n <span className=\"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-xs\">\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">\n Time\n </span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">\n {diagnostics.time}\n </span>\n </span>\n )}\n </div>\n )}\n {diagnostics.context.length > 0 && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Context\n </div>\n {scalarContext.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {scalarContext.map(([label, value]) => (\n <CopyBadge key={`${label}:${value}`} label={label} value={value} />\n ))}\n </div>\n )}\n {jsonContext.length > 0 && (\n <div className=\"mt-2 grid gap-2\">\n {jsonContext.map((entry) =>\n renderJsonContext ? (\n <span key={`${entry.label}:${entry.value}`}>{renderJsonContext(entry)}</span>\n ) : (\n <CopyBadge\n key={`${entry.label}:${entry.value}`}\n label={entry.label}\n value={entry.value}\n />\n ),\n )}\n </div>\n )}\n </div>\n )}\n {diagnostics.stacktrace && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Stack trace\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(diagnostics.stacktrace ?? \"\")}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n <PrettyStackTrace stacktrace={diagnostics.stacktrace} />\n </div>\n )}\n </div>\n </details>\n );\n}\n\nfunction diagnosticReport(diagnostics: ErrorDiagnostics): string {\n const lines = [`Error: ${diagnostics.message}`];\n if (diagnostics.trace) lines.push(`Trace: ${diagnostics.trace}`);\n if (diagnostics.time) lines.push(`Time: ${diagnostics.time}`);\n if (diagnostics.context.length > 0) {\n lines.push(\n \"\",\n \"Context:\",\n ...diagnostics.context.map(([label, value]) => `${label}: ${value}`),\n );\n }\n if (diagnostics.stacktrace) {\n lines.push(\"\", \"Stack trace:\", diagnostics.stacktrace);\n }\n return lines.join(\"\\n\");\n}\n\nexport function PrettyStackTrace({ stacktrace }: { stacktrace: string }) {\n const parsed = parseDiagnosticsStackTrace(stacktrace);\n if (parsed.frames.length === 0) {\n return (\n <pre className=\"max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-slate-950 p-3 font-mono text-xs leading-5 text-slate-200\">\n {stacktrace}\n </pre>\n );\n }\n\n return (\n <div className=\"max-h-96 min-h-40 overflow-auto rounded-md border border-border bg-background p-2\">\n <div className=\"mb-2 flex items-center justify-between gap-2 text-[11px] text-muted-foreground\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"rounded-full bg-red-100 px-2 py-0.5 text-red-700\">error</span>\n <span>{parsed.frames.length} frames</span>\n </div>\n </div>\n {parsed.headline && (\n <div className=\"mb-2 rounded-md bg-red-50 px-2 py-1.5 font-mono text-[11px] leading-4 text-red-700\">\n {parsed.headline}\n </div>\n )}\n <div className=\"space-y-0.5\">\n {parsed.frames.map((frame, index) => (\n <StackFrameRow key={`${frame.file}:${frame.line}:${index}`} frame={frame} index={index} />\n ))}\n </div>\n {parsed.unparsed.length > 0 && (\n <pre className=\"mt-2 whitespace-pre-wrap rounded bg-muted p-2 font-mono text-[11px] leading-4 text-muted-foreground\">\n {parsed.unparsed.join(\"\\n\")}\n </pre>\n )}\n </div>\n );\n}\n\nfunction StackFrameRow({ frame, index }: { frame: ErrorStackFrame; index: number }) {\n const appFrame = isApplicationStackFrame(frame.file);\n return (\n <button\n type=\"button\"\n onClick={() => copyText(frame.raw)}\n title=\"Copy stack frame\"\n className={[\n \"block w-full rounded px-1.5 py-1 text-left hover:bg-accent/50\",\n appFrame ? \"text-foreground\" : \"text-muted-foreground\",\n ].join(\" \")}\n >\n <div className=\"flex min-w-0 items-start gap-1.5\">\n <Icon\n icon={appFrame ? UiMethod : UiDebugStepOver}\n className=\"mt-0.5 shrink-0 text-[11px]\"\n />\n <div className=\"min-w-0\">\n <div className=\"break-all font-mono text-[11px] font-semibold leading-4\">\n <span className=\"mr-2 text-[10px] font-normal opacity-60\">#{index + 1}</span>\n {frame.functionName || \"unknown function\"}\n <span className=\"ml-2 text-[10px] font-normal opacity-80\">\n {compactStackPath(frame.file)}:{frame.line}\n </span>\n </div>\n </div>\n </div>\n </button>\n );\n}\n\nexport function CopyBadge({\n label,\n value,\n className = \"\",\n}: {\n label: string;\n value: string;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={() => copyText(value)}\n title={`Copy ${label}`}\n className={[\n \"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-left text-xs hover:border-primary/40 hover:bg-background\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">{label}</span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">{value}</span>\n <Icon icon={UiCopy} className=\"mr-1.5 h-3 w-3 shrink-0 text-muted-foreground\" />\n </button>\n );\n}\n\nfunction copyText(value: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n}\n"],"names":["useState","parseInlineJsonContextValue","jsxs","jsx","Icon","UiWarningTriangle","UiCheck","UiCopy","UiChevronRight","parseDiagnosticsStackTrace","isApplicationStackFrame","UiMethod","UiDebugStepOver","compactStackPath"],"mappings":"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"}
1
+ {"version":3,"file":"ErrorDetails.cjs","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"sourcesContent":["import { useState, type MouseEvent, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport {\n UiCheck,\n UiChevronRight,\n UiCopy,\n UiDebugStepOver,\n UiMethod,\n UiWarningTriangle,\n} from \"../../icons\";\nimport {\n compactStackPath,\n isApplicationStackFrame,\n parseDiagnosticsStackTrace,\n parseInlineJsonContextValue,\n type ErrorDiagnostics,\n type ErrorStackFrame,\n} from \"./error-diagnostics\";\n\nexport type ErrorDetailsProps = {\n diagnostics: ErrorDiagnostics;\n // Heading above the message. Defaults to \"Error\"; callers that already know\n // what failed (\"Failed to load /api/v1/profile/…\") say so instead.\n title?: string;\n // Optional renderer for context values that parse as JSON. Defaults to a\n // CopyBadge with the raw string. MC's playbook view passes a richer JsonView\n // here; smaller consumers (plugin iframes) can leave it unset.\n renderJsonContext?: (entry: { label: string; value: string; data: unknown }) => ReactNode;\n};\n\nexport function ErrorDetails({ diagnostics, title = \"Error\", renderJsonContext }: ErrorDetailsProps) {\n const [copyState, setCopyState] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n const scalarContext = diagnostics.context.filter(\n ([, value]) => !parseInlineJsonContextValue(value),\n );\n const jsonContext = diagnostics.context\n .map(([label, value]) => ({\n label,\n value,\n data: parseInlineJsonContextValue(value),\n }))\n .filter(\n (entry): entry is { label: string; value: string; data: unknown } => entry.data !== null,\n );\n const copyDiagnostics = async (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!navigator.clipboard?.writeText) {\n setCopyState(\"failed\");\n return;\n }\n try {\n await navigator.clipboard.writeText(diagnosticReport(diagnostics, title));\n setCopyState(\"copied\");\n } catch {\n setCopyState(\"failed\");\n }\n };\n return (\n <details className=\"group rounded-md border border-destructive/30 bg-destructive/5\">\n <summary className=\"flex cursor-pointer list-none items-start gap-2 p-3\">\n <Icon icon={UiWarningTriangle} className=\"mt-0.5 shrink-0 text-destructive\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-semibold text-destructive\">{title}</div>\n <div className=\"mt-1 whitespace-pre-wrap text-sm text-destructive\">\n {diagnostics.message}\n </div>\n </div>\n <div className=\"flex shrink-0 flex-col items-end gap-2 text-xs font-medium text-muted-foreground sm:flex-row sm:items-center sm:gap-3\">\n <button\n type=\"button\"\n aria-label={\n copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy error details\"\n }\n title=\"Copy message, trace, time, context, and stack trace\"\n className=\"inline-flex items-center gap-1 hover:text-foreground\"\n onClick={(event) => void copyDiagnostics(event)}\n >\n <Icon icon={copyState === \"copied\" ? UiCheck : UiCopy} />\n <span aria-live=\"polite\">\n {copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy\"}\n </span>\n </button>\n <span className=\"inline-flex items-center gap-1 hover:text-foreground\">\n <span className=\"group-open:hidden\">More details</span>\n <span className=\"hidden group-open:inline\">Less details</span>\n <Icon\n icon={UiChevronRight}\n className=\"shrink-0 transition-transform group-open:rotate-90\"\n />\n </span>\n </div>\n </summary>\n <div className=\"grid gap-3 border-t border-destructive/20 p-3 pt-2\">\n {(diagnostics.trace || diagnostics.time) && (\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {diagnostics.trace && (\n <CopyBadge label=\"Trace\" value={diagnostics.trace} className=\"max-w-full\" />\n )}\n {diagnostics.time && (\n <span className=\"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-xs\">\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">\n Time\n </span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">\n {diagnostics.time}\n </span>\n </span>\n )}\n </div>\n )}\n {diagnostics.context.length > 0 && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Context\n </div>\n {scalarContext.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {scalarContext.map(([label, value]) => (\n <CopyBadge key={`${label}:${value}`} label={label} value={value} />\n ))}\n </div>\n )}\n {jsonContext.length > 0 && (\n <div className=\"mt-2 grid gap-2\">\n {jsonContext.map((entry) =>\n renderJsonContext ? (\n <span key={`${entry.label}:${entry.value}`}>{renderJsonContext(entry)}</span>\n ) : (\n <CopyBadge\n key={`${entry.label}:${entry.value}`}\n label={entry.label}\n value={entry.value}\n />\n ),\n )}\n </div>\n )}\n </div>\n )}\n {diagnostics.details?.map((detail) => (\n <div key={detail.label} className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {detail.label}\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(detail.value)}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n {/* break-all because a response body is one long token as often\n as not, and pre-wrap alone only breaks on whitespace. */}\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted p-2 font-mono text-xs leading-5 text-foreground\">\n {detail.value}\n </pre>\n </div>\n ))}\n {diagnostics.stacktrace && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Stack trace\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(diagnostics.stacktrace ?? \"\")}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n <PrettyStackTrace stacktrace={diagnostics.stacktrace} />\n </div>\n )}\n </div>\n </details>\n );\n}\n\nfunction diagnosticReport(diagnostics: ErrorDiagnostics, title: string): string {\n const lines = [`${title}: ${diagnostics.message}`];\n if (diagnostics.trace) lines.push(`Trace: ${diagnostics.trace}`);\n if (diagnostics.time) lines.push(`Time: ${diagnostics.time}`);\n if (diagnostics.context.length > 0) {\n lines.push(\n \"\",\n \"Context:\",\n ...diagnostics.context.map(([label, value]) => `${label}: ${value}`),\n );\n }\n for (const detail of diagnostics.details ?? []) {\n lines.push(\"\", `${detail.label}:`, detail.value);\n }\n if (diagnostics.stacktrace) {\n lines.push(\"\", \"Stack trace:\", diagnostics.stacktrace);\n }\n return lines.join(\"\\n\");\n}\n\nexport function PrettyStackTrace({ stacktrace }: { stacktrace: string }) {\n const parsed = parseDiagnosticsStackTrace(stacktrace);\n if (parsed.frames.length === 0) {\n return (\n <pre className=\"max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-slate-950 p-3 font-mono text-xs leading-5 text-slate-200\">\n {stacktrace}\n </pre>\n );\n }\n\n return (\n <div className=\"max-h-96 min-h-40 overflow-auto rounded-md border border-border bg-background p-2\">\n <div className=\"mb-2 flex items-center justify-between gap-2 text-[11px] text-muted-foreground\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"rounded-full bg-red-100 px-2 py-0.5 text-red-700\">error</span>\n <span>{parsed.frames.length} frames</span>\n </div>\n </div>\n {parsed.headline && (\n <div className=\"mb-2 rounded-md bg-red-50 px-2 py-1.5 font-mono text-[11px] leading-4 text-red-700\">\n {parsed.headline}\n </div>\n )}\n <div className=\"space-y-0.5\">\n {parsed.frames.map((frame, index) => (\n <StackFrameRow key={`${frame.file}:${frame.line}:${index}`} frame={frame} index={index} />\n ))}\n </div>\n {parsed.unparsed.length > 0 && (\n <pre className=\"mt-2 whitespace-pre-wrap rounded bg-muted p-2 font-mono text-[11px] leading-4 text-muted-foreground\">\n {parsed.unparsed.join(\"\\n\")}\n </pre>\n )}\n </div>\n );\n}\n\nfunction StackFrameRow({ frame, index }: { frame: ErrorStackFrame; index: number }) {\n const appFrame = isApplicationStackFrame(frame.file);\n return (\n <button\n type=\"button\"\n onClick={() => copyText(frame.raw)}\n title=\"Copy stack frame\"\n className={[\n \"block w-full rounded px-1.5 py-1 text-left hover:bg-accent/50\",\n appFrame ? \"text-foreground\" : \"text-muted-foreground\",\n ].join(\" \")}\n >\n <div className=\"flex min-w-0 items-start gap-1.5\">\n <Icon\n icon={appFrame ? UiMethod : UiDebugStepOver}\n className=\"mt-0.5 shrink-0 text-[11px]\"\n />\n <div className=\"min-w-0\">\n <div className=\"break-all font-mono text-[11px] font-semibold leading-4\">\n <span className=\"mr-2 text-[10px] font-normal opacity-60\">#{index + 1}</span>\n {frame.functionName || \"unknown function\"}\n <span className=\"ml-2 text-[10px] font-normal opacity-80\">\n {compactStackPath(frame.file)}:{frame.line}\n </span>\n </div>\n </div>\n </div>\n </button>\n );\n}\n\nexport function CopyBadge({\n label,\n value,\n className = \"\",\n}: {\n label: string;\n value: string;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={() => copyText(value)}\n title={`Copy ${label}`}\n className={[\n \"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-left text-xs hover:border-primary/40 hover:bg-background\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">{label}</span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">{value}</span>\n <Icon icon={UiCopy} className=\"mr-1.5 h-3 w-3 shrink-0 text-muted-foreground\" />\n </button>\n );\n}\n\nfunction copyText(value: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n}\n"],"names":["useState","parseInlineJsonContextValue","_a","jsxs","jsx","Icon","UiWarningTriangle","UiCheck","UiCopy","UiChevronRight","parseDiagnosticsStackTrace","isApplicationStackFrame","UiMethod","UiDebugStepOver","compactStackPath"],"mappings":"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"}
@@ -2,13 +2,14 @@ import { ReactNode } from 'react';
2
2
  import { ErrorDiagnostics } from './error-diagnostics';
3
3
  export type ErrorDetailsProps = {
4
4
  diagnostics: ErrorDiagnostics;
5
+ title?: string;
5
6
  renderJsonContext?: (entry: {
6
7
  label: string;
7
8
  value: string;
8
9
  data: unknown;
9
10
  }) => ReactNode;
10
11
  };
11
- export declare function ErrorDetails({ diagnostics, renderJsonContext }: ErrorDetailsProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function ErrorDetails({ diagnostics, title, renderJsonContext }: ErrorDetailsProps): import("react/jsx-runtime").JSX.Element;
12
13
  export declare function PrettyStackTrace({ stacktrace }: {
13
14
  stacktrace: string;
14
15
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorDetails.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAUlE,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,gBAAgB,CAAC;IAI9B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,SAAS,CAAC;CAC3F,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,2CA2IjF;AAmBD,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,2CAmCtE;AAiCD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,SAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAkBA"}
1
+ {"version":3,"file":"ErrorDetails.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAUlE,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,gBAAgB,CAAC;IAG9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,SAAS,CAAC;CAC3F,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,KAAe,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,2CAiKlG;AAsBD,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,2CAmCtE;AAiCD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,SAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAkBA"}
@@ -8,7 +8,8 @@ import { UiCheck } from "../../icons/components/UiCheck.js";
8
8
  import { UiChevronRight } from "../../icons/components/UiChevronRight.js";
9
9
  import { UiMethod } from "../../icons/components/UiMethod.js";
10
10
  import { UiDebugStepOver } from "../../icons/components/UiDebugStepOver.js";
11
- function ErrorDetails({ diagnostics, renderJsonContext }) {
11
+ function ErrorDetails({ diagnostics, title = "Error", renderJsonContext }) {
12
+ var _a;
12
13
  const [copyState, setCopyState] = useState("idle");
13
14
  const scalarContext = diagnostics.context.filter(
14
15
  ([, value]) => !parseInlineJsonContextValue(value)
@@ -21,15 +22,15 @@ function ErrorDetails({ diagnostics, renderJsonContext }) {
21
22
  (entry) => entry.data !== null
22
23
  );
23
24
  const copyDiagnostics = async (event) => {
24
- var _a;
25
+ var _a2;
25
26
  event.preventDefault();
26
27
  event.stopPropagation();
27
- if (!((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) {
28
+ if (!((_a2 = navigator.clipboard) == null ? void 0 : _a2.writeText)) {
28
29
  setCopyState("failed");
29
30
  return;
30
31
  }
31
32
  try {
32
- await navigator.clipboard.writeText(diagnosticReport(diagnostics));
33
+ await navigator.clipboard.writeText(diagnosticReport(diagnostics, title));
33
34
  setCopyState("copied");
34
35
  } catch {
35
36
  setCopyState("failed");
@@ -39,7 +40,7 @@ function ErrorDetails({ diagnostics, renderJsonContext }) {
39
40
  /* @__PURE__ */ jsxs("summary", { className: "flex cursor-pointer list-none items-start gap-2 p-3", children: [
40
41
  /* @__PURE__ */ jsx(Icon, { icon: UiWarningTriangle, className: "mt-0.5 shrink-0 text-destructive" }),
41
42
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
42
- /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-destructive", children: "Error" }),
43
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-destructive", children: title }),
43
44
  /* @__PURE__ */ jsx("div", { className: "mt-1 whitespace-pre-wrap text-sm text-destructive", children: diagnostics.message })
44
45
  ] }),
45
46
  /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 flex-col items-end gap-2 text-xs font-medium text-muted-foreground sm:flex-row sm:items-center sm:gap-3", children: [
@@ -92,6 +93,24 @@ function ErrorDetails({ diagnostics, renderJsonContext }) {
92
93
  )
93
94
  ) })
94
95
  ] }),
96
+ (_a = diagnostics.details) == null ? void 0 : _a.map((detail) => /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
97
+ /* @__PURE__ */ jsxs("div", { className: "mb-1.5 flex min-w-0 items-center justify-between gap-3", children: [
98
+ /* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: detail.label }),
99
+ /* @__PURE__ */ jsxs(
100
+ "button",
101
+ {
102
+ type: "button",
103
+ onClick: () => copyText(detail.value),
104
+ className: "inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground",
105
+ children: [
106
+ /* @__PURE__ */ jsx(Icon, { icon: UiCopy }),
107
+ "copy"
108
+ ]
109
+ }
110
+ )
111
+ ] }),
112
+ /* @__PURE__ */ jsx("pre", { className: "max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted p-2 font-mono text-xs leading-5 text-foreground", children: detail.value })
113
+ ] }, detail.label)),
95
114
  diagnostics.stacktrace && /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
96
115
  /* @__PURE__ */ jsxs("div", { className: "mb-1.5 flex min-w-0 items-center justify-between gap-3", children: [
97
116
  /* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Stack trace" }),
@@ -113,8 +132,8 @@ function ErrorDetails({ diagnostics, renderJsonContext }) {
113
132
  ] })
114
133
  ] });
115
134
  }
116
- function diagnosticReport(diagnostics) {
117
- const lines = [`Error: ${diagnostics.message}`];
135
+ function diagnosticReport(diagnostics, title) {
136
+ const lines = [`${title}: ${diagnostics.message}`];
118
137
  if (diagnostics.trace) lines.push(`Trace: ${diagnostics.trace}`);
119
138
  if (diagnostics.time) lines.push(`Time: ${diagnostics.time}`);
120
139
  if (diagnostics.context.length > 0) {
@@ -124,6 +143,9 @@ function diagnosticReport(diagnostics) {
124
143
  ...diagnostics.context.map(([label, value]) => `${label}: ${value}`)
125
144
  );
126
145
  }
146
+ for (const detail of diagnostics.details ?? []) {
147
+ lines.push("", `${detail.label}:`, detail.value);
148
+ }
127
149
  if (diagnostics.stacktrace) {
128
150
  lines.push("", "Stack trace:", diagnostics.stacktrace);
129
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorDetails.js","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"sourcesContent":["import { useState, type MouseEvent, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport {\n UiCheck,\n UiChevronRight,\n UiCopy,\n UiDebugStepOver,\n UiMethod,\n UiWarningTriangle,\n} from \"../../icons\";\nimport {\n compactStackPath,\n isApplicationStackFrame,\n parseDiagnosticsStackTrace,\n parseInlineJsonContextValue,\n type ErrorDiagnostics,\n type ErrorStackFrame,\n} from \"./error-diagnostics\";\n\nexport type ErrorDetailsProps = {\n diagnostics: ErrorDiagnostics;\n // Optional renderer for context values that parse as JSON. Defaults to a\n // CopyBadge with the raw string. MC's playbook view passes a richer JsonView\n // here; smaller consumers (plugin iframes) can leave it unset.\n renderJsonContext?: (entry: { label: string; value: string; data: unknown }) => ReactNode;\n};\n\nexport function ErrorDetails({ diagnostics, renderJsonContext }: ErrorDetailsProps) {\n const [copyState, setCopyState] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n const scalarContext = diagnostics.context.filter(\n ([, value]) => !parseInlineJsonContextValue(value),\n );\n const jsonContext = diagnostics.context\n .map(([label, value]) => ({\n label,\n value,\n data: parseInlineJsonContextValue(value),\n }))\n .filter(\n (entry): entry is { label: string; value: string; data: unknown } => entry.data !== null,\n );\n const copyDiagnostics = async (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!navigator.clipboard?.writeText) {\n setCopyState(\"failed\");\n return;\n }\n try {\n await navigator.clipboard.writeText(diagnosticReport(diagnostics));\n setCopyState(\"copied\");\n } catch {\n setCopyState(\"failed\");\n }\n };\n return (\n <details className=\"group rounded-md border border-destructive/30 bg-destructive/5\">\n <summary className=\"flex cursor-pointer list-none items-start gap-2 p-3\">\n <Icon icon={UiWarningTriangle} className=\"mt-0.5 shrink-0 text-destructive\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-semibold text-destructive\">Error</div>\n <div className=\"mt-1 whitespace-pre-wrap text-sm text-destructive\">\n {diagnostics.message}\n </div>\n </div>\n <div className=\"flex shrink-0 flex-col items-end gap-2 text-xs font-medium text-muted-foreground sm:flex-row sm:items-center sm:gap-3\">\n <button\n type=\"button\"\n aria-label={\n copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy error details\"\n }\n title=\"Copy message, trace, time, context, and stack trace\"\n className=\"inline-flex items-center gap-1 hover:text-foreground\"\n onClick={(event) => void copyDiagnostics(event)}\n >\n <Icon icon={copyState === \"copied\" ? UiCheck : UiCopy} />\n <span aria-live=\"polite\">\n {copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy\"}\n </span>\n </button>\n <span className=\"inline-flex items-center gap-1 hover:text-foreground\">\n <span className=\"group-open:hidden\">More details</span>\n <span className=\"hidden group-open:inline\">Less details</span>\n <Icon\n icon={UiChevronRight}\n className=\"shrink-0 transition-transform group-open:rotate-90\"\n />\n </span>\n </div>\n </summary>\n <div className=\"grid gap-3 border-t border-destructive/20 p-3 pt-2\">\n {(diagnostics.trace || diagnostics.time) && (\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {diagnostics.trace && (\n <CopyBadge label=\"Trace\" value={diagnostics.trace} className=\"max-w-full\" />\n )}\n {diagnostics.time && (\n <span className=\"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-xs\">\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">\n Time\n </span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">\n {diagnostics.time}\n </span>\n </span>\n )}\n </div>\n )}\n {diagnostics.context.length > 0 && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Context\n </div>\n {scalarContext.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {scalarContext.map(([label, value]) => (\n <CopyBadge key={`${label}:${value}`} label={label} value={value} />\n ))}\n </div>\n )}\n {jsonContext.length > 0 && (\n <div className=\"mt-2 grid gap-2\">\n {jsonContext.map((entry) =>\n renderJsonContext ? (\n <span key={`${entry.label}:${entry.value}`}>{renderJsonContext(entry)}</span>\n ) : (\n <CopyBadge\n key={`${entry.label}:${entry.value}`}\n label={entry.label}\n value={entry.value}\n />\n ),\n )}\n </div>\n )}\n </div>\n )}\n {diagnostics.stacktrace && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Stack trace\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(diagnostics.stacktrace ?? \"\")}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n <PrettyStackTrace stacktrace={diagnostics.stacktrace} />\n </div>\n )}\n </div>\n </details>\n );\n}\n\nfunction diagnosticReport(diagnostics: ErrorDiagnostics): string {\n const lines = [`Error: ${diagnostics.message}`];\n if (diagnostics.trace) lines.push(`Trace: ${diagnostics.trace}`);\n if (diagnostics.time) lines.push(`Time: ${diagnostics.time}`);\n if (diagnostics.context.length > 0) {\n lines.push(\n \"\",\n \"Context:\",\n ...diagnostics.context.map(([label, value]) => `${label}: ${value}`),\n );\n }\n if (diagnostics.stacktrace) {\n lines.push(\"\", \"Stack trace:\", diagnostics.stacktrace);\n }\n return lines.join(\"\\n\");\n}\n\nexport function PrettyStackTrace({ stacktrace }: { stacktrace: string }) {\n const parsed = parseDiagnosticsStackTrace(stacktrace);\n if (parsed.frames.length === 0) {\n return (\n <pre className=\"max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-slate-950 p-3 font-mono text-xs leading-5 text-slate-200\">\n {stacktrace}\n </pre>\n );\n }\n\n return (\n <div className=\"max-h-96 min-h-40 overflow-auto rounded-md border border-border bg-background p-2\">\n <div className=\"mb-2 flex items-center justify-between gap-2 text-[11px] text-muted-foreground\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"rounded-full bg-red-100 px-2 py-0.5 text-red-700\">error</span>\n <span>{parsed.frames.length} frames</span>\n </div>\n </div>\n {parsed.headline && (\n <div className=\"mb-2 rounded-md bg-red-50 px-2 py-1.5 font-mono text-[11px] leading-4 text-red-700\">\n {parsed.headline}\n </div>\n )}\n <div className=\"space-y-0.5\">\n {parsed.frames.map((frame, index) => (\n <StackFrameRow key={`${frame.file}:${frame.line}:${index}`} frame={frame} index={index} />\n ))}\n </div>\n {parsed.unparsed.length > 0 && (\n <pre className=\"mt-2 whitespace-pre-wrap rounded bg-muted p-2 font-mono text-[11px] leading-4 text-muted-foreground\">\n {parsed.unparsed.join(\"\\n\")}\n </pre>\n )}\n </div>\n );\n}\n\nfunction StackFrameRow({ frame, index }: { frame: ErrorStackFrame; index: number }) {\n const appFrame = isApplicationStackFrame(frame.file);\n return (\n <button\n type=\"button\"\n onClick={() => copyText(frame.raw)}\n title=\"Copy stack frame\"\n className={[\n \"block w-full rounded px-1.5 py-1 text-left hover:bg-accent/50\",\n appFrame ? \"text-foreground\" : \"text-muted-foreground\",\n ].join(\" \")}\n >\n <div className=\"flex min-w-0 items-start gap-1.5\">\n <Icon\n icon={appFrame ? UiMethod : UiDebugStepOver}\n className=\"mt-0.5 shrink-0 text-[11px]\"\n />\n <div className=\"min-w-0\">\n <div className=\"break-all font-mono text-[11px] font-semibold leading-4\">\n <span className=\"mr-2 text-[10px] font-normal opacity-60\">#{index + 1}</span>\n {frame.functionName || \"unknown function\"}\n <span className=\"ml-2 text-[10px] font-normal opacity-80\">\n {compactStackPath(frame.file)}:{frame.line}\n </span>\n </div>\n </div>\n </div>\n </button>\n );\n}\n\nexport function CopyBadge({\n label,\n value,\n className = \"\",\n}: {\n label: string;\n value: string;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={() => copyText(value)}\n title={`Copy ${label}`}\n className={[\n \"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-left text-xs hover:border-primary/40 hover:bg-background\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">{label}</span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">{value}</span>\n <Icon icon={UiCopy} className=\"mr-1.5 h-3 w-3 shrink-0 text-muted-foreground\" />\n </button>\n );\n}\n\nfunction copyText(value: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorDetails.js","sources":["../../../src/data/diagnostics/ErrorDetails.tsx"],"sourcesContent":["import { useState, type MouseEvent, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport {\n UiCheck,\n UiChevronRight,\n UiCopy,\n UiDebugStepOver,\n UiMethod,\n UiWarningTriangle,\n} from \"../../icons\";\nimport {\n compactStackPath,\n isApplicationStackFrame,\n parseDiagnosticsStackTrace,\n parseInlineJsonContextValue,\n type ErrorDiagnostics,\n type ErrorStackFrame,\n} from \"./error-diagnostics\";\n\nexport type ErrorDetailsProps = {\n diagnostics: ErrorDiagnostics;\n // Heading above the message. Defaults to \"Error\"; callers that already know\n // what failed (\"Failed to load /api/v1/profile/…\") say so instead.\n title?: string;\n // Optional renderer for context values that parse as JSON. Defaults to a\n // CopyBadge with the raw string. MC's playbook view passes a richer JsonView\n // here; smaller consumers (plugin iframes) can leave it unset.\n renderJsonContext?: (entry: { label: string; value: string; data: unknown }) => ReactNode;\n};\n\nexport function ErrorDetails({ diagnostics, title = \"Error\", renderJsonContext }: ErrorDetailsProps) {\n const [copyState, setCopyState] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n const scalarContext = diagnostics.context.filter(\n ([, value]) => !parseInlineJsonContextValue(value),\n );\n const jsonContext = diagnostics.context\n .map(([label, value]) => ({\n label,\n value,\n data: parseInlineJsonContextValue(value),\n }))\n .filter(\n (entry): entry is { label: string; value: string; data: unknown } => entry.data !== null,\n );\n const copyDiagnostics = async (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (!navigator.clipboard?.writeText) {\n setCopyState(\"failed\");\n return;\n }\n try {\n await navigator.clipboard.writeText(diagnosticReport(diagnostics, title));\n setCopyState(\"copied\");\n } catch {\n setCopyState(\"failed\");\n }\n };\n return (\n <details className=\"group rounded-md border border-destructive/30 bg-destructive/5\">\n <summary className=\"flex cursor-pointer list-none items-start gap-2 p-3\">\n <Icon icon={UiWarningTriangle} className=\"mt-0.5 shrink-0 text-destructive\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-semibold text-destructive\">{title}</div>\n <div className=\"mt-1 whitespace-pre-wrap text-sm text-destructive\">\n {diagnostics.message}\n </div>\n </div>\n <div className=\"flex shrink-0 flex-col items-end gap-2 text-xs font-medium text-muted-foreground sm:flex-row sm:items-center sm:gap-3\">\n <button\n type=\"button\"\n aria-label={\n copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy error details\"\n }\n title=\"Copy message, trace, time, context, and stack trace\"\n className=\"inline-flex items-center gap-1 hover:text-foreground\"\n onClick={(event) => void copyDiagnostics(event)}\n >\n <Icon icon={copyState === \"copied\" ? UiCheck : UiCopy} />\n <span aria-live=\"polite\">\n {copyState === \"copied\"\n ? \"Copied\"\n : copyState === \"failed\"\n ? \"Copy failed\"\n : \"Copy\"}\n </span>\n </button>\n <span className=\"inline-flex items-center gap-1 hover:text-foreground\">\n <span className=\"group-open:hidden\">More details</span>\n <span className=\"hidden group-open:inline\">Less details</span>\n <Icon\n icon={UiChevronRight}\n className=\"shrink-0 transition-transform group-open:rotate-90\"\n />\n </span>\n </div>\n </summary>\n <div className=\"grid gap-3 border-t border-destructive/20 p-3 pt-2\">\n {(diagnostics.trace || diagnostics.time) && (\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {diagnostics.trace && (\n <CopyBadge label=\"Trace\" value={diagnostics.trace} className=\"max-w-full\" />\n )}\n {diagnostics.time && (\n <span className=\"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-xs\">\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">\n Time\n </span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">\n {diagnostics.time}\n </span>\n </span>\n )}\n </div>\n )}\n {diagnostics.context.length > 0 && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Context\n </div>\n {scalarContext.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {scalarContext.map(([label, value]) => (\n <CopyBadge key={`${label}:${value}`} label={label} value={value} />\n ))}\n </div>\n )}\n {jsonContext.length > 0 && (\n <div className=\"mt-2 grid gap-2\">\n {jsonContext.map((entry) =>\n renderJsonContext ? (\n <span key={`${entry.label}:${entry.value}`}>{renderJsonContext(entry)}</span>\n ) : (\n <CopyBadge\n key={`${entry.label}:${entry.value}`}\n label={entry.label}\n value={entry.value}\n />\n ),\n )}\n </div>\n )}\n </div>\n )}\n {diagnostics.details?.map((detail) => (\n <div key={detail.label} className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {detail.label}\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(detail.value)}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n {/* break-all because a response body is one long token as often\n as not, and pre-wrap alone only breaks on whitespace. */}\n <pre className=\"max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted p-2 font-mono text-xs leading-5 text-foreground\">\n {detail.value}\n </pre>\n </div>\n ))}\n {diagnostics.stacktrace && (\n <div className=\"min-w-0\">\n <div className=\"mb-1.5 flex min-w-0 items-center justify-between gap-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Stack trace\n </div>\n <button\n type=\"button\"\n onClick={() => copyText(diagnostics.stacktrace ?? \"\")}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiCopy} />\n copy\n </button>\n </div>\n <PrettyStackTrace stacktrace={diagnostics.stacktrace} />\n </div>\n )}\n </div>\n </details>\n );\n}\n\nfunction diagnosticReport(diagnostics: ErrorDiagnostics, title: string): string {\n const lines = [`${title}: ${diagnostics.message}`];\n if (diagnostics.trace) lines.push(`Trace: ${diagnostics.trace}`);\n if (diagnostics.time) lines.push(`Time: ${diagnostics.time}`);\n if (diagnostics.context.length > 0) {\n lines.push(\n \"\",\n \"Context:\",\n ...diagnostics.context.map(([label, value]) => `${label}: ${value}`),\n );\n }\n for (const detail of diagnostics.details ?? []) {\n lines.push(\"\", `${detail.label}:`, detail.value);\n }\n if (diagnostics.stacktrace) {\n lines.push(\"\", \"Stack trace:\", diagnostics.stacktrace);\n }\n return lines.join(\"\\n\");\n}\n\nexport function PrettyStackTrace({ stacktrace }: { stacktrace: string }) {\n const parsed = parseDiagnosticsStackTrace(stacktrace);\n if (parsed.frames.length === 0) {\n return (\n <pre className=\"max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-slate-950 p-3 font-mono text-xs leading-5 text-slate-200\">\n {stacktrace}\n </pre>\n );\n }\n\n return (\n <div className=\"max-h-96 min-h-40 overflow-auto rounded-md border border-border bg-background p-2\">\n <div className=\"mb-2 flex items-center justify-between gap-2 text-[11px] text-muted-foreground\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"rounded-full bg-red-100 px-2 py-0.5 text-red-700\">error</span>\n <span>{parsed.frames.length} frames</span>\n </div>\n </div>\n {parsed.headline && (\n <div className=\"mb-2 rounded-md bg-red-50 px-2 py-1.5 font-mono text-[11px] leading-4 text-red-700\">\n {parsed.headline}\n </div>\n )}\n <div className=\"space-y-0.5\">\n {parsed.frames.map((frame, index) => (\n <StackFrameRow key={`${frame.file}:${frame.line}:${index}`} frame={frame} index={index} />\n ))}\n </div>\n {parsed.unparsed.length > 0 && (\n <pre className=\"mt-2 whitespace-pre-wrap rounded bg-muted p-2 font-mono text-[11px] leading-4 text-muted-foreground\">\n {parsed.unparsed.join(\"\\n\")}\n </pre>\n )}\n </div>\n );\n}\n\nfunction StackFrameRow({ frame, index }: { frame: ErrorStackFrame; index: number }) {\n const appFrame = isApplicationStackFrame(frame.file);\n return (\n <button\n type=\"button\"\n onClick={() => copyText(frame.raw)}\n title=\"Copy stack frame\"\n className={[\n \"block w-full rounded px-1.5 py-1 text-left hover:bg-accent/50\",\n appFrame ? \"text-foreground\" : \"text-muted-foreground\",\n ].join(\" \")}\n >\n <div className=\"flex min-w-0 items-start gap-1.5\">\n <Icon\n icon={appFrame ? UiMethod : UiDebugStepOver}\n className=\"mt-0.5 shrink-0 text-[11px]\"\n />\n <div className=\"min-w-0\">\n <div className=\"break-all font-mono text-[11px] font-semibold leading-4\">\n <span className=\"mr-2 text-[10px] font-normal opacity-60\">#{index + 1}</span>\n {frame.functionName || \"unknown function\"}\n <span className=\"ml-2 text-[10px] font-normal opacity-80\">\n {compactStackPath(frame.file)}:{frame.line}\n </span>\n </div>\n </div>\n </div>\n </button>\n );\n}\n\nexport function CopyBadge({\n label,\n value,\n className = \"\",\n}: {\n label: string;\n value: string;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={() => copyText(value)}\n title={`Copy ${label}`}\n className={[\n \"inline-flex max-w-full items-center overflow-hidden rounded-md border border-border bg-background/80 text-left text-xs hover:border-primary/40 hover:bg-background\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"shrink-0 bg-muted px-2 py-1 font-medium text-muted-foreground\">{label}</span>\n <span className=\"min-w-0 truncate px-2 py-1 font-mono text-foreground\">{value}</span>\n <Icon icon={UiCopy} className=\"mr-1.5 h-3 w-3 shrink-0 text-muted-foreground\" />\n </button>\n );\n}\n\nfunction copyText(value: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(value);\n }\n}\n"],"names":["_a"],"mappings":"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"}
@@ -15,7 +15,12 @@ function normalizeErrorDiagnostics(value, fallback) {
15
15
  const trace = firstString(record, ["trace", "trace_id", "traceId", "traceID"]);
16
16
  const stacktrace = firstString(record, ["stacktrace", "stack_trace", "stackTrace", "stack"]);
17
17
  const time = firstString(record, ["time", "timestamp", "created_at"]);
18
- const context = contextEntries(record.context);
18
+ const hint = firstString(record, ["hint"]);
19
+ const context = [
20
+ ...hint ? [["Hint", hint]] : [],
21
+ ...contextEntries(record.context)
22
+ ];
23
+ const details = detailBlocks(record.details);
19
24
  if (!message && !trace && !stacktrace && !time && context.length === 0) {
20
25
  const nestedDiagnostics = objectRecord(record.diagnostics);
21
26
  if (nestedDiagnostics && nestedDiagnostics !== record) {
@@ -29,9 +34,19 @@ function normalizeErrorDiagnostics(value, fallback) {
29
34
  raw: value,
30
35
  ...trace !== void 0 ? { trace } : {},
31
36
  ...time !== void 0 ? { time } : {},
32
- ...stacktrace !== void 0 ? { stacktrace } : {}
37
+ ...stacktrace !== void 0 ? { stacktrace } : {},
38
+ ...details.length > 0 ? { details } : {}
33
39
  };
34
40
  }
41
+ function detailBlocks(value) {
42
+ if (!Array.isArray(value)) return [];
43
+ return value.flatMap((entry) => {
44
+ const record = objectRecord(entry);
45
+ const label = firstString(record ?? {}, ["label"]);
46
+ const detail = firstString(record ?? {}, ["value"]);
47
+ return label && detail ? [{ label, value: detail }] : [];
48
+ });
49
+ }
35
50
  function parseDiagnosticsStackTrace(stacktrace) {
36
51
  const lines = stacktrace.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
37
52
  const frames = [];
@@ -1 +1 @@
1
- {"version":3,"file":"error-diagnostics.cjs","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"sourcesContent":["// Normalize ad-hoc error payloads (oops JSON, plain strings, nested objects)\n// into the shape ErrorDetails consumes. Mirrors what `samber/oops` emits\n// from `OopsError.MarshalJSON()` on the Go side.\n\nexport type ErrorDiagnostics = {\n message: string;\n trace?: string;\n time?: string;\n stacktrace?: string;\n context: Array<[string, string]>;\n raw?: unknown;\n};\n\nexport type ParsedErrorStackTrace = {\n headline?: string;\n frames: ErrorStackFrame[];\n unparsed: string[];\n raw: string;\n};\n\nexport type ErrorStackFrame = {\n raw: string;\n file: string;\n line: number;\n functionName?: string;\n};\n\nexport function normalizeErrorDiagnostics(\n value: unknown,\n fallback?: string | null,\n): ErrorDiagnostics | null {\n if (!value) return null;\n if (typeof value === \"string\") {\n return value.trim() ? { message: value, context: [] } : null;\n }\n const record = objectRecord(value);\n if (!record) return null;\n const nestedError = objectRecord(record.error);\n if (nestedError && nestedError !== record) {\n return normalizeErrorDiagnostics(nestedError, fallback);\n }\n const message =\n firstString(record, [\"error\", \"message\", \"msg\", \"reason\", \"detail\", \"details\"]) ?? fallback;\n const trace = firstString(record, [\"trace\", \"trace_id\", \"traceId\", \"traceID\"]);\n const stacktrace = firstString(record, [\"stacktrace\", \"stack_trace\", \"stackTrace\", \"stack\"]);\n const time = firstString(record, [\"time\", \"timestamp\", \"created_at\"]);\n const context = contextEntries(record.context);\n if (!message && !trace && !stacktrace && !time && context.length === 0) {\n const nestedDiagnostics = objectRecord(record.diagnostics);\n if (nestedDiagnostics && nestedDiagnostics !== record) {\n return normalizeErrorDiagnostics(nestedDiagnostics, fallback);\n }\n }\n if (!message && !trace && !stacktrace && !time && context.length === 0) return null;\n return {\n message: message ?? \"Action failed\",\n context,\n raw: value,\n ...(trace !== undefined ? { trace } : {}),\n ...(time !== undefined ? { time } : {}),\n ...(stacktrace !== undefined ? { stacktrace } : {}),\n };\n}\n\nexport function parseDiagnosticsStackTrace(stacktrace: string): ParsedErrorStackTrace {\n const lines = stacktrace\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n const frames: ErrorStackFrame[] = [];\n const unparsed: string[] = [];\n let headline: string | undefined;\n\n for (const line of lines) {\n const frame = parseStackTraceFrame(line);\n if (frame) {\n frames.push(frame);\n continue;\n }\n if (!headline && !line.startsWith(\"--- at \")) {\n headline = line;\n continue;\n }\n unparsed.push(line);\n }\n\n return {\n frames,\n unparsed,\n raw: stacktrace,\n ...(headline !== undefined ? { headline } : {}),\n };\n}\n\nexport function parseInlineJsonContextValue(value: string): unknown | null {\n const trimmed = value.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nexport function compactStackPath(file: string) {\n return file\n .replace(/^github\\.com\\/flanksource\\/incident-commander\\//, \"\")\n .replace(/^github\\.com\\/flanksource\\//, \"flanksource/\")\n .replace(/^.*\\/go\\/pkg\\/mod\\//, \"pkg/mod/\")\n .replace(/^.*\\/incident-commander\\//, \"\");\n}\n\nexport function isApplicationStackFrame(file: string) {\n return (\n file.includes(\"github.com/flanksource/incident-commander/\") ||\n file.includes(\"/incident-commander/\")\n );\n}\n\nfunction parseStackTraceFrame(line: string): ErrorStackFrame | null {\n const prefix = \"--- at \";\n if (!line.startsWith(prefix)) return null;\n\n const value = line.slice(prefix.length);\n let fileEnd = -1;\n let lineStart = -1;\n let lineEnd = -1;\n let functionStart = -1;\n\n for (let index = 0; index < value.length; index++) {\n if (value[index] !== \":\" || !isDecimalDigit(value[index + 1])) continue;\n\n let end = index + 1;\n while (isDecimalDigit(value[end])) end++;\n if (end === value.length) {\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = -1;\n continue;\n }\n if (!isWhitespace(value[end])) continue;\n\n let start = end;\n while (isWhitespace(value[start])) start++;\n if (start === value.length && start - end < 2) continue;\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = start;\n }\n\n if (fileEnd <= 0 || lineStart < 0 || lineEnd < 0) return null;\n const functionName = functionStart >= 0 ? value.slice(functionStart).trim() : \"\";\n return {\n raw: line,\n file: value.slice(0, fileEnd),\n line: Number(value.slice(lineStart, lineEnd)),\n ...(functionName ? { functionName } : {}),\n };\n}\n\nfunction isDecimalDigit(value: string | undefined): boolean {\n return value !== undefined && value >= \"0\" && value <= \"9\";\n}\n\nfunction isWhitespace(value: string | undefined): boolean {\n return value !== undefined && value.trim() === \"\";\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction firstString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value;\n }\n return undefined;\n}\n\nfunction contextEntries(value: unknown): Array<[string, string]> {\n const record = objectRecord(value);\n if (!record) return [];\n return Object.entries(record)\n .filter(\n ([, entryValue]) => entryValue !== undefined && entryValue !== null && entryValue !== \"\",\n )\n .map(([key, entryValue]) => [key, stringifyValue(entryValue)]);\n}\n\nfunction stringifyValue(value: unknown): string {\n if (value === null || value === undefined || value === \"\") return \"-\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-diagnostics.cjs","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"sourcesContent":["// Normalize ad-hoc error payloads (oops JSON, plain strings, nested objects)\n// into the shape ErrorDetails consumes. Mirrors what `samber/oops` emits\n// from `OopsError.MarshalJSON()` on the Go side.\n\nexport type ErrorDiagnostics = {\n message: string;\n trace?: string;\n time?: string;\n stacktrace?: string;\n context: Array<[string, string]>;\n // details carries values too long for a context badge — a failing SQL\n // statement, a response body. They render as labeled preformatted blocks and\n // are part of the copied report.\n details?: ErrorDetailBlock[];\n raw?: unknown;\n};\n\nexport type ErrorDetailBlock = {\n label: string;\n value: string;\n};\n\nexport type ParsedErrorStackTrace = {\n headline?: string;\n frames: ErrorStackFrame[];\n unparsed: string[];\n raw: string;\n};\n\nexport type ErrorStackFrame = {\n raw: string;\n file: string;\n line: number;\n functionName?: string;\n};\n\nexport function normalizeErrorDiagnostics(\n value: unknown,\n fallback?: string | null,\n): ErrorDiagnostics | null {\n if (!value) return null;\n if (typeof value === \"string\") {\n return value.trim() ? { message: value, context: [] } : null;\n }\n const record = objectRecord(value);\n if (!record) return null;\n const nestedError = objectRecord(record.error);\n if (nestedError && nestedError !== record) {\n return normalizeErrorDiagnostics(nestedError, fallback);\n }\n const message =\n firstString(record, [\"error\", \"message\", \"msg\", \"reason\", \"detail\", \"details\"]) ?? fallback;\n const trace = firstString(record, [\"trace\", \"trace_id\", \"traceId\", \"traceID\"]);\n const stacktrace = firstString(record, [\"stacktrace\", \"stack_trace\", \"stackTrace\", \"stack\"]);\n const time = firstString(record, [\"time\", \"timestamp\", \"created_at\"]);\n const hint = firstString(record, [\"hint\"]);\n // The hint leads the context badges: of everything the server attaches it is\n // the one field that says what to do next.\n const context: Array<[string, string]> = [\n ...(hint ? ([[\"Hint\", hint]] as Array<[string, string]>) : []),\n ...contextEntries(record.context),\n ];\n const details = detailBlocks(record.details);\n if (!message && !trace && !stacktrace && !time && context.length === 0) {\n const nestedDiagnostics = objectRecord(record.diagnostics);\n if (nestedDiagnostics && nestedDiagnostics !== record) {\n return normalizeErrorDiagnostics(nestedDiagnostics, fallback);\n }\n }\n if (!message && !trace && !stacktrace && !time && context.length === 0) return null;\n return {\n message: message ?? \"Action failed\",\n context,\n raw: value,\n ...(trace !== undefined ? { trace } : {}),\n ...(time !== undefined ? { time } : {}),\n ...(stacktrace !== undefined ? { stacktrace } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n}\n\n// `details` is overloaded on the wire: our own envelope sends an array of\n// {label, value} blocks (entity.ErrorResponse), while third-party bodies use a\n// bare string that firstString already reads as the message. Only the array\n// form produces blocks; content_type is dropped because every block renders as\n// preformatted text either way.\nfunction detailBlocks(value: unknown): ErrorDetailBlock[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap((entry) => {\n const record = objectRecord(entry);\n const label = firstString(record ?? {}, [\"label\"]);\n const detail = firstString(record ?? {}, [\"value\"]);\n return label && detail ? [{ label, value: detail }] : [];\n });\n}\n\nexport function parseDiagnosticsStackTrace(stacktrace: string): ParsedErrorStackTrace {\n const lines = stacktrace\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n const frames: ErrorStackFrame[] = [];\n const unparsed: string[] = [];\n let headline: string | undefined;\n\n for (const line of lines) {\n const frame = parseStackTraceFrame(line);\n if (frame) {\n frames.push(frame);\n continue;\n }\n if (!headline && !line.startsWith(\"--- at \")) {\n headline = line;\n continue;\n }\n unparsed.push(line);\n }\n\n return {\n frames,\n unparsed,\n raw: stacktrace,\n ...(headline !== undefined ? { headline } : {}),\n };\n}\n\nexport function parseInlineJsonContextValue(value: string): unknown | null {\n const trimmed = value.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nexport function compactStackPath(file: string) {\n return file\n .replace(/^github\\.com\\/flanksource\\/incident-commander\\//, \"\")\n .replace(/^github\\.com\\/flanksource\\//, \"flanksource/\")\n .replace(/^.*\\/go\\/pkg\\/mod\\//, \"pkg/mod/\")\n .replace(/^.*\\/incident-commander\\//, \"\");\n}\n\nexport function isApplicationStackFrame(file: string) {\n return (\n file.includes(\"github.com/flanksource/incident-commander/\") ||\n file.includes(\"/incident-commander/\")\n );\n}\n\nfunction parseStackTraceFrame(line: string): ErrorStackFrame | null {\n const prefix = \"--- at \";\n if (!line.startsWith(prefix)) return null;\n\n const value = line.slice(prefix.length);\n let fileEnd = -1;\n let lineStart = -1;\n let lineEnd = -1;\n let functionStart = -1;\n\n for (let index = 0; index < value.length; index++) {\n if (value[index] !== \":\" || !isDecimalDigit(value[index + 1])) continue;\n\n let end = index + 1;\n while (isDecimalDigit(value[end])) end++;\n if (end === value.length) {\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = -1;\n continue;\n }\n if (!isWhitespace(value[end])) continue;\n\n let start = end;\n while (isWhitespace(value[start])) start++;\n if (start === value.length && start - end < 2) continue;\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = start;\n }\n\n if (fileEnd <= 0 || lineStart < 0 || lineEnd < 0) return null;\n const functionName = functionStart >= 0 ? value.slice(functionStart).trim() : \"\";\n return {\n raw: line,\n file: value.slice(0, fileEnd),\n line: Number(value.slice(lineStart, lineEnd)),\n ...(functionName ? { functionName } : {}),\n };\n}\n\nfunction isDecimalDigit(value: string | undefined): boolean {\n return value !== undefined && value >= \"0\" && value <= \"9\";\n}\n\nfunction isWhitespace(value: string | undefined): boolean {\n return value !== undefined && value.trim() === \"\";\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction firstString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value;\n }\n return undefined;\n}\n\nfunction contextEntries(value: unknown): Array<[string, string]> {\n const record = objectRecord(value);\n if (!record) return [];\n return Object.entries(record)\n .filter(\n ([, entryValue]) => entryValue !== undefined && entryValue !== null && entryValue !== \"\",\n )\n .map(([key, entryValue]) => [key, stringifyValue(entryValue)]);\n}\n\nfunction stringifyValue(value: unknown): string {\n if (value === null || value === undefined || value === \"\") return \"-\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n}\n"],"names":[],"mappings":"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"}
@@ -4,8 +4,13 @@ export type ErrorDiagnostics = {
4
4
  time?: string;
5
5
  stacktrace?: string;
6
6
  context: Array<[string, string]>;
7
+ details?: ErrorDetailBlock[];
7
8
  raw?: unknown;
8
9
  };
10
+ export type ErrorDetailBlock = {
11
+ label: string;
12
+ value: string;
13
+ };
9
14
  export type ParsedErrorStackTrace = {
10
15
  headline?: string;
11
16
  frames: ErrorStackFrame[];
@@ -1 +1 @@
1
- {"version":3,"file":"error-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,gBAAgB,GAAG,IAAI,CAgCzB;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,CA4BpF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQzE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,UAM5C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,WAKnD"}
1
+ {"version":3,"file":"error-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAIjC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,gBAAgB,GAAG,IAAI,CAwCzB;AAiBD,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,CA4BpF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQzE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,UAM5C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,WAKnD"}
@@ -13,7 +13,12 @@ function normalizeErrorDiagnostics(value, fallback) {
13
13
  const trace = firstString(record, ["trace", "trace_id", "traceId", "traceID"]);
14
14
  const stacktrace = firstString(record, ["stacktrace", "stack_trace", "stackTrace", "stack"]);
15
15
  const time = firstString(record, ["time", "timestamp", "created_at"]);
16
- const context = contextEntries(record.context);
16
+ const hint = firstString(record, ["hint"]);
17
+ const context = [
18
+ ...hint ? [["Hint", hint]] : [],
19
+ ...contextEntries(record.context)
20
+ ];
21
+ const details = detailBlocks(record.details);
17
22
  if (!message && !trace && !stacktrace && !time && context.length === 0) {
18
23
  const nestedDiagnostics = objectRecord(record.diagnostics);
19
24
  if (nestedDiagnostics && nestedDiagnostics !== record) {
@@ -27,9 +32,19 @@ function normalizeErrorDiagnostics(value, fallback) {
27
32
  raw: value,
28
33
  ...trace !== void 0 ? { trace } : {},
29
34
  ...time !== void 0 ? { time } : {},
30
- ...stacktrace !== void 0 ? { stacktrace } : {}
35
+ ...stacktrace !== void 0 ? { stacktrace } : {},
36
+ ...details.length > 0 ? { details } : {}
31
37
  };
32
38
  }
39
+ function detailBlocks(value) {
40
+ if (!Array.isArray(value)) return [];
41
+ return value.flatMap((entry) => {
42
+ const record = objectRecord(entry);
43
+ const label = firstString(record ?? {}, ["label"]);
44
+ const detail = firstString(record ?? {}, ["value"]);
45
+ return label && detail ? [{ label, value: detail }] : [];
46
+ });
47
+ }
33
48
  function parseDiagnosticsStackTrace(stacktrace) {
34
49
  const lines = stacktrace.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
35
50
  const frames = [];
@@ -1 +1 @@
1
- {"version":3,"file":"error-diagnostics.js","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"sourcesContent":["// Normalize ad-hoc error payloads (oops JSON, plain strings, nested objects)\n// into the shape ErrorDetails consumes. Mirrors what `samber/oops` emits\n// from `OopsError.MarshalJSON()` on the Go side.\n\nexport type ErrorDiagnostics = {\n message: string;\n trace?: string;\n time?: string;\n stacktrace?: string;\n context: Array<[string, string]>;\n raw?: unknown;\n};\n\nexport type ParsedErrorStackTrace = {\n headline?: string;\n frames: ErrorStackFrame[];\n unparsed: string[];\n raw: string;\n};\n\nexport type ErrorStackFrame = {\n raw: string;\n file: string;\n line: number;\n functionName?: string;\n};\n\nexport function normalizeErrorDiagnostics(\n value: unknown,\n fallback?: string | null,\n): ErrorDiagnostics | null {\n if (!value) return null;\n if (typeof value === \"string\") {\n return value.trim() ? { message: value, context: [] } : null;\n }\n const record = objectRecord(value);\n if (!record) return null;\n const nestedError = objectRecord(record.error);\n if (nestedError && nestedError !== record) {\n return normalizeErrorDiagnostics(nestedError, fallback);\n }\n const message =\n firstString(record, [\"error\", \"message\", \"msg\", \"reason\", \"detail\", \"details\"]) ?? fallback;\n const trace = firstString(record, [\"trace\", \"trace_id\", \"traceId\", \"traceID\"]);\n const stacktrace = firstString(record, [\"stacktrace\", \"stack_trace\", \"stackTrace\", \"stack\"]);\n const time = firstString(record, [\"time\", \"timestamp\", \"created_at\"]);\n const context = contextEntries(record.context);\n if (!message && !trace && !stacktrace && !time && context.length === 0) {\n const nestedDiagnostics = objectRecord(record.diagnostics);\n if (nestedDiagnostics && nestedDiagnostics !== record) {\n return normalizeErrorDiagnostics(nestedDiagnostics, fallback);\n }\n }\n if (!message && !trace && !stacktrace && !time && context.length === 0) return null;\n return {\n message: message ?? \"Action failed\",\n context,\n raw: value,\n ...(trace !== undefined ? { trace } : {}),\n ...(time !== undefined ? { time } : {}),\n ...(stacktrace !== undefined ? { stacktrace } : {}),\n };\n}\n\nexport function parseDiagnosticsStackTrace(stacktrace: string): ParsedErrorStackTrace {\n const lines = stacktrace\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n const frames: ErrorStackFrame[] = [];\n const unparsed: string[] = [];\n let headline: string | undefined;\n\n for (const line of lines) {\n const frame = parseStackTraceFrame(line);\n if (frame) {\n frames.push(frame);\n continue;\n }\n if (!headline && !line.startsWith(\"--- at \")) {\n headline = line;\n continue;\n }\n unparsed.push(line);\n }\n\n return {\n frames,\n unparsed,\n raw: stacktrace,\n ...(headline !== undefined ? { headline } : {}),\n };\n}\n\nexport function parseInlineJsonContextValue(value: string): unknown | null {\n const trimmed = value.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nexport function compactStackPath(file: string) {\n return file\n .replace(/^github\\.com\\/flanksource\\/incident-commander\\//, \"\")\n .replace(/^github\\.com\\/flanksource\\//, \"flanksource/\")\n .replace(/^.*\\/go\\/pkg\\/mod\\//, \"pkg/mod/\")\n .replace(/^.*\\/incident-commander\\//, \"\");\n}\n\nexport function isApplicationStackFrame(file: string) {\n return (\n file.includes(\"github.com/flanksource/incident-commander/\") ||\n file.includes(\"/incident-commander/\")\n );\n}\n\nfunction parseStackTraceFrame(line: string): ErrorStackFrame | null {\n const prefix = \"--- at \";\n if (!line.startsWith(prefix)) return null;\n\n const value = line.slice(prefix.length);\n let fileEnd = -1;\n let lineStart = -1;\n let lineEnd = -1;\n let functionStart = -1;\n\n for (let index = 0; index < value.length; index++) {\n if (value[index] !== \":\" || !isDecimalDigit(value[index + 1])) continue;\n\n let end = index + 1;\n while (isDecimalDigit(value[end])) end++;\n if (end === value.length) {\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = -1;\n continue;\n }\n if (!isWhitespace(value[end])) continue;\n\n let start = end;\n while (isWhitespace(value[start])) start++;\n if (start === value.length && start - end < 2) continue;\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = start;\n }\n\n if (fileEnd <= 0 || lineStart < 0 || lineEnd < 0) return null;\n const functionName = functionStart >= 0 ? value.slice(functionStart).trim() : \"\";\n return {\n raw: line,\n file: value.slice(0, fileEnd),\n line: Number(value.slice(lineStart, lineEnd)),\n ...(functionName ? { functionName } : {}),\n };\n}\n\nfunction isDecimalDigit(value: string | undefined): boolean {\n return value !== undefined && value >= \"0\" && value <= \"9\";\n}\n\nfunction isWhitespace(value: string | undefined): boolean {\n return value !== undefined && value.trim() === \"\";\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction firstString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value;\n }\n return undefined;\n}\n\nfunction contextEntries(value: unknown): Array<[string, string]> {\n const record = objectRecord(value);\n if (!record) return [];\n return Object.entries(record)\n .filter(\n ([, entryValue]) => entryValue !== undefined && entryValue !== null && entryValue !== \"\",\n )\n .map(([key, entryValue]) => [key, stringifyValue(entryValue)]);\n}\n\nfunction stringifyValue(value: unknown): string {\n if (value === null || value === undefined || value === \"\") return \"-\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-diagnostics.js","sources":["../../../src/data/diagnostics/error-diagnostics.ts"],"sourcesContent":["// Normalize ad-hoc error payloads (oops JSON, plain strings, nested objects)\n// into the shape ErrorDetails consumes. Mirrors what `samber/oops` emits\n// from `OopsError.MarshalJSON()` on the Go side.\n\nexport type ErrorDiagnostics = {\n message: string;\n trace?: string;\n time?: string;\n stacktrace?: string;\n context: Array<[string, string]>;\n // details carries values too long for a context badge — a failing SQL\n // statement, a response body. They render as labeled preformatted blocks and\n // are part of the copied report.\n details?: ErrorDetailBlock[];\n raw?: unknown;\n};\n\nexport type ErrorDetailBlock = {\n label: string;\n value: string;\n};\n\nexport type ParsedErrorStackTrace = {\n headline?: string;\n frames: ErrorStackFrame[];\n unparsed: string[];\n raw: string;\n};\n\nexport type ErrorStackFrame = {\n raw: string;\n file: string;\n line: number;\n functionName?: string;\n};\n\nexport function normalizeErrorDiagnostics(\n value: unknown,\n fallback?: string | null,\n): ErrorDiagnostics | null {\n if (!value) return null;\n if (typeof value === \"string\") {\n return value.trim() ? { message: value, context: [] } : null;\n }\n const record = objectRecord(value);\n if (!record) return null;\n const nestedError = objectRecord(record.error);\n if (nestedError && nestedError !== record) {\n return normalizeErrorDiagnostics(nestedError, fallback);\n }\n const message =\n firstString(record, [\"error\", \"message\", \"msg\", \"reason\", \"detail\", \"details\"]) ?? fallback;\n const trace = firstString(record, [\"trace\", \"trace_id\", \"traceId\", \"traceID\"]);\n const stacktrace = firstString(record, [\"stacktrace\", \"stack_trace\", \"stackTrace\", \"stack\"]);\n const time = firstString(record, [\"time\", \"timestamp\", \"created_at\"]);\n const hint = firstString(record, [\"hint\"]);\n // The hint leads the context badges: of everything the server attaches it is\n // the one field that says what to do next.\n const context: Array<[string, string]> = [\n ...(hint ? ([[\"Hint\", hint]] as Array<[string, string]>) : []),\n ...contextEntries(record.context),\n ];\n const details = detailBlocks(record.details);\n if (!message && !trace && !stacktrace && !time && context.length === 0) {\n const nestedDiagnostics = objectRecord(record.diagnostics);\n if (nestedDiagnostics && nestedDiagnostics !== record) {\n return normalizeErrorDiagnostics(nestedDiagnostics, fallback);\n }\n }\n if (!message && !trace && !stacktrace && !time && context.length === 0) return null;\n return {\n message: message ?? \"Action failed\",\n context,\n raw: value,\n ...(trace !== undefined ? { trace } : {}),\n ...(time !== undefined ? { time } : {}),\n ...(stacktrace !== undefined ? { stacktrace } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n}\n\n// `details` is overloaded on the wire: our own envelope sends an array of\n// {label, value} blocks (entity.ErrorResponse), while third-party bodies use a\n// bare string that firstString already reads as the message. Only the array\n// form produces blocks; content_type is dropped because every block renders as\n// preformatted text either way.\nfunction detailBlocks(value: unknown): ErrorDetailBlock[] {\n if (!Array.isArray(value)) return [];\n return value.flatMap((entry) => {\n const record = objectRecord(entry);\n const label = firstString(record ?? {}, [\"label\"]);\n const detail = firstString(record ?? {}, [\"value\"]);\n return label && detail ? [{ label, value: detail }] : [];\n });\n}\n\nexport function parseDiagnosticsStackTrace(stacktrace: string): ParsedErrorStackTrace {\n const lines = stacktrace\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n const frames: ErrorStackFrame[] = [];\n const unparsed: string[] = [];\n let headline: string | undefined;\n\n for (const line of lines) {\n const frame = parseStackTraceFrame(line);\n if (frame) {\n frames.push(frame);\n continue;\n }\n if (!headline && !line.startsWith(\"--- at \")) {\n headline = line;\n continue;\n }\n unparsed.push(line);\n }\n\n return {\n frames,\n unparsed,\n raw: stacktrace,\n ...(headline !== undefined ? { headline } : {}),\n };\n}\n\nexport function parseInlineJsonContextValue(value: string): unknown | null {\n const trimmed = value.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nexport function compactStackPath(file: string) {\n return file\n .replace(/^github\\.com\\/flanksource\\/incident-commander\\//, \"\")\n .replace(/^github\\.com\\/flanksource\\//, \"flanksource/\")\n .replace(/^.*\\/go\\/pkg\\/mod\\//, \"pkg/mod/\")\n .replace(/^.*\\/incident-commander\\//, \"\");\n}\n\nexport function isApplicationStackFrame(file: string) {\n return (\n file.includes(\"github.com/flanksource/incident-commander/\") ||\n file.includes(\"/incident-commander/\")\n );\n}\n\nfunction parseStackTraceFrame(line: string): ErrorStackFrame | null {\n const prefix = \"--- at \";\n if (!line.startsWith(prefix)) return null;\n\n const value = line.slice(prefix.length);\n let fileEnd = -1;\n let lineStart = -1;\n let lineEnd = -1;\n let functionStart = -1;\n\n for (let index = 0; index < value.length; index++) {\n if (value[index] !== \":\" || !isDecimalDigit(value[index + 1])) continue;\n\n let end = index + 1;\n while (isDecimalDigit(value[end])) end++;\n if (end === value.length) {\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = -1;\n continue;\n }\n if (!isWhitespace(value[end])) continue;\n\n let start = end;\n while (isWhitespace(value[start])) start++;\n if (start === value.length && start - end < 2) continue;\n fileEnd = index;\n lineStart = index + 1;\n lineEnd = end;\n functionStart = start;\n }\n\n if (fileEnd <= 0 || lineStart < 0 || lineEnd < 0) return null;\n const functionName = functionStart >= 0 ? value.slice(functionStart).trim() : \"\";\n return {\n raw: line,\n file: value.slice(0, fileEnd),\n line: Number(value.slice(lineStart, lineEnd)),\n ...(functionName ? { functionName } : {}),\n };\n}\n\nfunction isDecimalDigit(value: string | undefined): boolean {\n return value !== undefined && value >= \"0\" && value <= \"9\";\n}\n\nfunction isWhitespace(value: string | undefined): boolean {\n return value !== undefined && value.trim() === \"\";\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\n}\n\nfunction firstString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value;\n }\n return undefined;\n}\n\nfunction contextEntries(value: unknown): Array<[string, string]> {\n const record = objectRecord(value);\n if (!record) return [];\n return Object.entries(record)\n .filter(\n ([, entryValue]) => entryValue !== undefined && entryValue !== null && entryValue !== \"\",\n )\n .map(([key, entryValue]) => [key, stringifyValue(entryValue)]);\n}\n\nfunction stringifyValue(value: unknown): string {\n if (value === null || value === undefined || value === \"\") return \"-\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return JSON.stringify(value);\n}\n"],"names":[],"mappings":"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"}
@@ -4,12 +4,13 @@ const logUtils = require("./log-utils.cjs");
4
4
  const JSON_PARSE_FAILED = Symbol("json-parse-failed");
5
5
  function normalizeLogsTableRows(logs) {
6
6
  const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
7
- return entries.map((entry, index) => normalizeLogEntry(entry, index));
7
+ const seenIdentities = /* @__PURE__ */ new Map();
8
+ return entries.map((entry) => normalizeLogEntry(entry, seenIdentities));
8
9
  }
9
10
  function splitLogLines(logs) {
10
11
  return logs.split(/\r?\n/).filter((line) => line.length > 0);
11
12
  }
12
- function normalizeLogEntry(entry, index) {
13
+ function normalizeLogEntry(entry, seenIdentities) {
13
14
  const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
14
15
  const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
15
16
  const outer = logUtils.asRecord(parsedOuter);
@@ -81,7 +82,7 @@ function normalizeLogEntry(entry, index) {
81
82
  labels
82
83
  });
83
84
  return {
84
- id: `${index}:${timestamp || pod || message || stableString(entry)}`,
85
+ id: rowIdentity(entry, seenIdentities),
85
86
  timestamp,
86
87
  level,
87
88
  pod,
@@ -94,6 +95,20 @@ function normalizeLogEntry(entry, index) {
94
95
  ...parsedLine !== void 0 ? { parsedLine } : {}
95
96
  };
96
97
  }
98
+ function rowIdentity(entry, seenIdentities) {
99
+ const digest = digestString(stableString(entry));
100
+ const seen = seenIdentities.get(digest) ?? 0;
101
+ seenIdentities.set(digest, seen + 1);
102
+ return seen === 0 ? digest : `${digest}#${seen}`;
103
+ }
104
+ function digestString(value) {
105
+ let hash = 2166136261;
106
+ for (let index = 0; index < value.length; index += 1) {
107
+ hash ^= value.charCodeAt(index);
108
+ hash = Math.imul(hash, 16777619);
109
+ }
110
+ return (hash >>> 0).toString(36);
111
+ }
97
112
  function buildTags({
98
113
  namespace,
99
114
  container,
@@ -1 +1 @@
1
- {"version":3,"file":"logs-normalize.cjs","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n return entries.map((entry, index) => normalizeLogEntry(entry, index));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(entry: LogsTableInput, index: number): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: `${index}:${timestamp || pod || message || stableString(entry)}`,\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":["asRecord"],"mappings":"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"}
1
+ {"version":3,"file":"logs-normalize.cjs","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\n/**\n * normalizeLogsTableRows flattens raw log input — newline-delimited text or\n * already-parsed records — into the flat row shape LogsTable renders.\n *\n * A row's `id` is its content, not its position: the digest of the record as it\n * arrived. Identity has to survive appending, because that is what infinite\n * scroll does — a caller re-normalizes a run that grew at the end, and a\n * position-derived id would hand every row already on screen a new key, so React\n * would remount them and any expansion or selection would slide onto whichever\n * line now occupies that index. Content-derived ids stay attached to the line.\n *\n * Records that produce the same digest — the same line logged twice, or the rare\n * digest collision — are separated by the count of times that digest has already\n * been seen in this run. That discriminator is positional, and so is only as\n * stable as the ordering, which is why it is spent on actual collisions rather\n * than on every row.\n */\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n const seenIdentities = new Map<string, number>();\n return entries.map((entry) => normalizeLogEntry(entry, seenIdentities));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(\n entry: LogsTableInput,\n seenIdentities: Map<string, number>,\n): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: rowIdentity(entry, seenIdentities),\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\n// The digest, not the record itself, is the id: a log line runs to kilobytes and\n// the id is carried on every row, held in selection sets and written into an\n// aria-label, so keeping the whole line would cost a second copy of the log for\n// nothing. Collisions are handled the same way duplicate lines are, by counting\n// occurrences, so shortening identity costs correctness nothing.\nfunction rowIdentity(entry: LogsTableInput, seenIdentities: Map<string, number>): string {\n const digest = digestString(stableString(entry));\n const seen = seenIdentities.get(digest) ?? 0;\n seenIdentities.set(digest, seen + 1);\n return seen === 0 ? digest : `${digest}#${seen}`;\n}\n\n// FNV-1a, 32-bit. Chosen for being a handful of lines with no dependency and no\n// allocation per character — this runs once per log line, and a logs view opens\n// on tens of thousands of them.\nfunction digestString(value: string): string {\n let hash = 0x811c9dc5;\n for (let index = 0; index < value.length; index += 1) {\n hash ^= value.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0).toString(36);\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":["asRecord"],"mappings":"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"}