@tai42/studio-sdk 16.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/dist/components/code-block.js +1 -1
  2. package/dist/components/code-block.js.map +1 -1
  3. package/dist/components/confirm-dialog.js +1 -1
  4. package/dist/components/confirm-dialog.js.map +1 -1
  5. package/dist/components/copy-field.js +1 -1
  6. package/dist/components/copy-field.js.map +1 -1
  7. package/dist/components/date-range-picker.d.ts.map +1 -1
  8. package/dist/components/date-range-picker.js.map +1 -1
  9. package/dist/components/dialog.d.ts.map +1 -1
  10. package/dist/components/dialog.js.map +1 -1
  11. package/dist/components/dirty-guard.d.ts.map +1 -1
  12. package/dist/components/dirty-guard.js +1 -1
  13. package/dist/components/dirty-guard.js.map +1 -1
  14. package/dist/components/explorer-body.d.ts +49 -0
  15. package/dist/components/explorer-body.d.ts.map +1 -0
  16. package/dist/components/explorer-body.js +67 -0
  17. package/dist/components/explorer-body.js.map +1 -0
  18. package/dist/components/explorer-page-size.d.ts +4 -0
  19. package/dist/components/explorer-page-size.d.ts.map +1 -0
  20. package/dist/components/explorer-page-size.js +36 -0
  21. package/dist/components/explorer-page-size.js.map +1 -0
  22. package/dist/components/explorer-tag-filter.d.ts +17 -0
  23. package/dist/components/explorer-tag-filter.d.ts.map +1 -0
  24. package/dist/components/explorer-tag-filter.js +29 -0
  25. package/dist/components/explorer-tag-filter.js.map +1 -0
  26. package/dist/components/explorer-tags.d.ts +22 -0
  27. package/dist/components/explorer-tags.d.ts.map +1 -0
  28. package/dist/components/explorer-tags.js +51 -0
  29. package/dist/components/explorer-tags.js.map +1 -0
  30. package/dist/components/explorer-view.d.ts +3 -17
  31. package/dist/components/explorer-view.d.ts.map +1 -1
  32. package/dist/components/explorer-view.js +53 -170
  33. package/dist/components/explorer-view.js.map +1 -1
  34. package/dist/components/extension-combo-builder.d.ts +1 -6
  35. package/dist/components/extension-combo-builder.d.ts.map +1 -1
  36. package/dist/components/extension-combo-builder.js +4 -79
  37. package/dist/components/extension-combo-builder.js.map +1 -1
  38. package/dist/components/extension-combo-parts.d.ts +44 -0
  39. package/dist/components/extension-combo-parts.d.ts.map +1 -0
  40. package/dist/components/extension-combo-parts.js +52 -0
  41. package/dist/components/extension-combo-parts.js.map +1 -0
  42. package/dist/components/field.d.ts +8 -0
  43. package/dist/components/field.d.ts.map +1 -1
  44. package/dist/components/field.js +0 -8
  45. package/dist/components/field.js.map +1 -1
  46. package/dist/components/fleet-report.d.ts +1 -1
  47. package/dist/components/fleet-report.d.ts.map +1 -1
  48. package/dist/components/fleet-report.js +51 -37
  49. package/dist/components/fleet-report.js.map +1 -1
  50. package/dist/components/folder-nav.d.ts.map +1 -1
  51. package/dist/components/folder-nav.js +1 -1
  52. package/dist/components/folder-nav.js.map +1 -1
  53. package/dist/components/form-dialog.d.ts.map +1 -1
  54. package/dist/components/form-dialog.js +1 -1
  55. package/dist/components/form-dialog.js.map +1 -1
  56. package/dist/components/icons/chrome-marks.d.ts +50 -0
  57. package/dist/components/icons/chrome-marks.d.ts.map +1 -0
  58. package/dist/components/icons/chrome-marks.js +51 -0
  59. package/dist/components/icons/chrome-marks.js.map +1 -0
  60. package/dist/components/icons/icon-frame.d.ts +29 -0
  61. package/dist/components/icons/icon-frame.d.ts.map +1 -0
  62. package/dist/components/icons/icon-frame.js +19 -0
  63. package/dist/components/icons/icon-frame.js.map +1 -0
  64. package/dist/components/icons/index.d.ts +40 -0
  65. package/dist/components/icons/index.d.ts.map +1 -0
  66. package/dist/components/icons/index.js +39 -0
  67. package/dist/components/icons/index.js.map +1 -0
  68. package/dist/components/icons/nav-map.d.ts +14 -0
  69. package/dist/components/icons/nav-map.d.ts.map +1 -0
  70. package/dist/components/icons/nav-map.js +28 -0
  71. package/dist/components/icons/nav-map.js.map +1 -0
  72. package/dist/components/icons/nav-marks.d.ts +44 -0
  73. package/dist/components/icons/nav-marks.d.ts.map +1 -0
  74. package/dist/components/icons/nav-marks.js +45 -0
  75. package/dist/components/icons/nav-marks.js.map +1 -0
  76. package/dist/components/icons/status-marks.d.ts +21 -0
  77. package/dist/components/icons/status-marks.d.ts.map +1 -0
  78. package/dist/components/icons/status-marks.js +22 -0
  79. package/dist/components/icons/status-marks.js.map +1 -0
  80. package/dist/components/icons/theme-marks.d.ts +9 -0
  81. package/dist/components/icons/theme-marks.d.ts.map +1 -0
  82. package/dist/components/icons/theme-marks.js +10 -0
  83. package/dist/components/icons/theme-marks.js.map +1 -0
  84. package/dist/components/inputs.js.map +1 -1
  85. package/dist/components/json-diff.d.ts.map +1 -1
  86. package/dist/components/json-diff.js +1 -3
  87. package/dist/components/json-diff.js.map +1 -1
  88. package/dist/components/json-tree-context.d.ts +13 -0
  89. package/dist/components/json-tree-context.d.ts.map +1 -0
  90. package/dist/components/json-tree-context.js +15 -0
  91. package/dist/components/json-tree-context.js.map +1 -0
  92. package/dist/components/json-tree-model.d.ts +56 -0
  93. package/dist/components/json-tree-model.d.ts.map +1 -0
  94. package/dist/components/json-tree-model.js +125 -0
  95. package/dist/components/json-tree-model.js.map +1 -0
  96. package/dist/components/json-tree-nodes.d.ts +35 -0
  97. package/dist/components/json-tree-nodes.d.ts.map +1 -0
  98. package/dist/components/json-tree-nodes.js +113 -0
  99. package/dist/components/json-tree-nodes.js.map +1 -0
  100. package/dist/components/json-tree.d.ts +20 -0
  101. package/dist/components/json-tree.d.ts.map +1 -1
  102. package/dist/components/json-tree.js +7 -315
  103. package/dist/components/json-tree.js.map +1 -1
  104. package/dist/components/json-value-format.d.ts +20 -0
  105. package/dist/components/json-value-format.d.ts.map +1 -0
  106. package/dist/components/json-value-format.js +63 -0
  107. package/dist/components/json-value-format.js.map +1 -0
  108. package/dist/components/markdown-blocks.d.ts +38 -0
  109. package/dist/components/markdown-blocks.d.ts.map +1 -0
  110. package/dist/components/markdown-blocks.js +168 -0
  111. package/dist/components/markdown-blocks.js.map +1 -0
  112. package/dist/components/markdown-inline.d.ts +24 -0
  113. package/dist/components/markdown-inline.d.ts.map +1 -0
  114. package/dist/components/markdown-inline.js +257 -0
  115. package/dist/components/markdown-inline.js.map +1 -0
  116. package/dist/components/markdown.d.ts +3 -52
  117. package/dist/components/markdown.d.ts.map +1 -1
  118. package/dist/components/markdown.js +4 -376
  119. package/dist/components/markdown.js.map +1 -1
  120. package/dist/components/observer-registry.d.ts +38 -0
  121. package/dist/components/observer-registry.d.ts.map +1 -0
  122. package/dist/components/observer-registry.js +131 -0
  123. package/dist/components/observer-registry.js.map +1 -0
  124. package/dist/components/overflow-measure.d.ts +38 -0
  125. package/dist/components/overflow-measure.d.ts.map +1 -0
  126. package/dist/components/overflow-measure.js +54 -0
  127. package/dist/components/overflow-measure.js.map +1 -0
  128. package/dist/components/page-fill.d.ts.map +1 -1
  129. package/dist/components/page-fill.js.map +1 -1
  130. package/dist/components/prose-regions.d.ts +81 -0
  131. package/dist/components/prose-regions.d.ts.map +1 -0
  132. package/dist/components/prose-regions.js +128 -0
  133. package/dist/components/prose-regions.js.map +1 -0
  134. package/dist/components/radio-group.d.ts.map +1 -1
  135. package/dist/components/radio-group.js.map +1 -1
  136. package/dist/components/scroll-region.d.ts +24 -0
  137. package/dist/components/scroll-region.d.ts.map +1 -1
  138. package/dist/components/scroll-region.js +3 -322
  139. package/dist/components/scroll-region.js.map +1 -1
  140. package/dist/components/tab-stop-parse.d.ts +53 -0
  141. package/dist/components/tab-stop-parse.d.ts.map +1 -0
  142. package/dist/components/tab-stop-parse.js +202 -0
  143. package/dist/components/tab-stop-parse.js.map +1 -0
  144. package/dist/components/table.d.ts +1 -1
  145. package/dist/components/table.d.ts.map +1 -1
  146. package/dist/components/tags.d.ts.map +1 -1
  147. package/dist/components/tags.js +1 -1
  148. package/dist/components/tags.js.map +1 -1
  149. package/dist/components/templated-text-field.d.ts +1 -1
  150. package/dist/components/templated-text-field.d.ts.map +1 -1
  151. package/dist/components/templated-text-field.js +10 -174
  152. package/dist/components/templated-text-field.js.map +1 -1
  153. package/dist/components/templated-text-kwargs-editor.d.ts +24 -0
  154. package/dist/components/templated-text-kwargs-editor.d.ts.map +1 -0
  155. package/dist/components/templated-text-kwargs-editor.js +48 -0
  156. package/dist/components/templated-text-kwargs-editor.js.map +1 -0
  157. package/dist/components/templated-text-kwargs.d.ts +37 -0
  158. package/dist/components/templated-text-kwargs.d.ts.map +1 -0
  159. package/dist/components/templated-text-kwargs.js +66 -0
  160. package/dist/components/templated-text-kwargs.js.map +1 -0
  161. package/dist/components/templated-text-source.d.ts +33 -0
  162. package/dist/components/templated-text-source.d.ts.map +1 -0
  163. package/dist/components/templated-text-source.js +53 -0
  164. package/dist/components/templated-text-source.js.map +1 -0
  165. package/dist/components/tool-picker-parts.d.ts +39 -0
  166. package/dist/components/tool-picker-parts.d.ts.map +1 -0
  167. package/dist/components/tool-picker-parts.js +87 -0
  168. package/dist/components/tool-picker-parts.js.map +1 -0
  169. package/dist/components/tool-picker.d.ts +1 -2
  170. package/dist/components/tool-picker.d.ts.map +1 -1
  171. package/dist/components/tool-picker.js +4 -66
  172. package/dist/components/tool-picker.js.map +1 -1
  173. package/dist/components/version-history-panel.d.ts.map +1 -1
  174. package/dist/components/version-history-panel.js +7 -34
  175. package/dist/components/version-history-panel.js.map +1 -1
  176. package/dist/components/version-history-rows.d.ts +48 -0
  177. package/dist/components/version-history-rows.d.ts.map +1 -0
  178. package/dist/components/version-history-rows.js +51 -0
  179. package/dist/components/version-history-rows.js.map +1 -0
  180. package/dist/components/view-toggle.d.ts.map +1 -1
  181. package/dist/components/view-toggle.js.map +1 -1
  182. package/dist/element-slot.d.ts +11 -0
  183. package/dist/element-slot.d.ts.map +1 -1
  184. package/dist/element-slot.js +0 -11
  185. package/dist/element-slot.js.map +1 -1
  186. package/dist/guards.d.ts +6 -0
  187. package/dist/guards.d.ts.map +1 -0
  188. package/dist/guards.js +8 -0
  189. package/dist/guards.js.map +1 -0
  190. package/dist/hooks/interactions-connection.d.ts +43 -0
  191. package/dist/hooks/interactions-connection.d.ts.map +1 -0
  192. package/dist/hooks/interactions-connection.js +171 -0
  193. package/dist/hooks/interactions-connection.js.map +1 -0
  194. package/dist/hooks/interactions-stream.d.ts +80 -0
  195. package/dist/hooks/interactions-stream.d.ts.map +1 -0
  196. package/dist/hooks/interactions-stream.js +233 -0
  197. package/dist/hooks/interactions-stream.js.map +1 -0
  198. package/dist/hooks/useApi.d.ts +2259 -2189
  199. package/dist/hooks/useApi.d.ts.map +1 -1
  200. package/dist/hooks/useApi.js +0 -11
  201. package/dist/hooks/useApi.js.map +1 -1
  202. package/dist/hooks/useAuth.d.ts +6 -0
  203. package/dist/hooks/useAuth.d.ts.map +1 -1
  204. package/dist/hooks/useAuth.js +0 -6
  205. package/dist/hooks/useAuth.js.map +1 -1
  206. package/dist/hooks/useCapabilities.d.ts +18 -2
  207. package/dist/hooks/useCapabilities.d.ts.map +1 -1
  208. package/dist/hooks/useCapabilities.js +1 -17
  209. package/dist/hooks/useCapabilities.js.map +1 -1
  210. package/dist/hooks/useSse.d.ts +34 -6
  211. package/dist/hooks/useSse.d.ts.map +1 -1
  212. package/dist/hooks/useSse.js +27 -471
  213. package/dist/hooks/useSse.js.map +1 -1
  214. package/dist/hooks/useSystemKinds.d.ts +1 -1
  215. package/dist/hooks/useSystemKinds.d.ts.map +1 -1
  216. package/dist/hooks/useSystemKinds.js +0 -18
  217. package/dist/hooks/useSystemKinds.js.map +1 -1
  218. package/dist/hooks/useTheme.d.ts +15 -0
  219. package/dist/hooks/useTheme.d.ts.map +1 -1
  220. package/dist/hooks/useTheme.js +0 -15
  221. package/dist/hooks/useTheme.js.map +1 -1
  222. package/dist/hooks/useToolDisplayNames.d.ts +0 -14
  223. package/dist/hooks/useToolDisplayNames.d.ts.map +1 -1
  224. package/dist/hooks/useToolDisplayNames.js +0 -14
  225. package/dist/hooks/useToolDisplayNames.js.map +1 -1
  226. package/dist/host.d.ts +3 -3
  227. package/dist/host.d.ts.map +1 -1
  228. package/dist/host.js +2 -9
  229. package/dist/host.js.map +1 -1
  230. package/dist/index.d.ts +103 -103
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +49 -62
  233. package/dist/index.js.map +1 -1
  234. package/dist/navigation/app-link.d.ts +25 -0
  235. package/dist/navigation/app-link.d.ts.map +1 -0
  236. package/dist/navigation/app-link.js +33 -0
  237. package/dist/navigation/app-link.js.map +1 -0
  238. package/dist/navigation/context.d.ts +3 -20
  239. package/dist/navigation/context.d.ts.map +1 -1
  240. package/dist/navigation/context.js +7 -267
  241. package/dist/navigation/context.js.map +1 -1
  242. package/dist/navigation/entry-state.d.ts +23 -0
  243. package/dist/navigation/entry-state.d.ts.map +1 -0
  244. package/dist/navigation/entry-state.js +39 -0
  245. package/dist/navigation/entry-state.js.map +1 -0
  246. package/dist/navigation/guard-registry.d.ts +30 -0
  247. package/dist/navigation/guard-registry.d.ts.map +1 -0
  248. package/dist/navigation/guard-registry.js +46 -0
  249. package/dist/navigation/guard-registry.js.map +1 -0
  250. package/dist/navigation/guarded-navigation.d.ts +24 -0
  251. package/dist/navigation/guarded-navigation.d.ts.map +1 -0
  252. package/dist/navigation/guarded-navigation.js +102 -0
  253. package/dist/navigation/guarded-navigation.js.map +1 -0
  254. package/dist/navigation/index.d.ts +5 -4
  255. package/dist/navigation/index.d.ts.map +1 -1
  256. package/dist/navigation/index.js +2 -1
  257. package/dist/navigation/index.js.map +1 -1
  258. package/dist/navigation/types.d.ts +8 -11
  259. package/dist/navigation/types.d.ts.map +1 -1
  260. package/dist/navigation/use-back-forward-guard.d.ts +12 -0
  261. package/dist/navigation/use-back-forward-guard.d.ts.map +1 -0
  262. package/dist/navigation/use-back-forward-guard.js +75 -0
  263. package/dist/navigation/use-back-forward-guard.js.map +1 -0
  264. package/dist/navigation/use-search-commit.d.ts.map +1 -1
  265. package/dist/navigation/use-search-commit.js.map +1 -1
  266. package/dist/plugin/host-state.d.ts.map +1 -1
  267. package/dist/plugin/host-state.js.map +1 -1
  268. package/dist/plugin/registry.d.ts +6 -15
  269. package/dist/plugin/registry.d.ts.map +1 -1
  270. package/dist/plugin/registry.js +83 -75
  271. package/dist/plugin/registry.js.map +1 -1
  272. package/dist/schema-editor/SchemaEditor.d.ts.map +1 -1
  273. package/dist/schema-editor/SchemaEditor.js.map +1 -1
  274. package/dist/schema-editor/index.d.ts +3 -3
  275. package/dist/schema-editor/index.d.ts.map +1 -1
  276. package/dist/schema-editor/index.js +1 -6
  277. package/dist/schema-editor/index.js.map +1 -1
  278. package/dist/schema-form/SecretRefField.d.ts +18 -3
  279. package/dist/schema-form/SecretRefField.d.ts.map +1 -1
  280. package/dist/schema-form/SecretRefField.js +21 -26
  281. package/dist/schema-form/SecretRefField.js.map +1 -1
  282. package/dist/schema-form/classify.d.ts +1 -113
  283. package/dist/schema-form/classify.d.ts.map +1 -1
  284. package/dist/schema-form/classify.js +174 -246
  285. package/dist/schema-form/classify.js.map +1 -1
  286. package/dist/schema-form/context.d.ts +6 -0
  287. package/dist/schema-form/context.d.ts.map +1 -1
  288. package/dist/schema-form/context.js +0 -6
  289. package/dist/schema-form/context.js.map +1 -1
  290. package/dist/schema-form/default-value.d.ts.map +1 -1
  291. package/dist/schema-form/default-value.js +42 -19
  292. package/dist/schema-form/default-value.js.map +1 -1
  293. package/dist/schema-form/enum-field.d.ts +1 -1
  294. package/dist/schema-form/enum-field.d.ts.map +1 -1
  295. package/dist/schema-form/field-group.d.ts +6 -0
  296. package/dist/schema-form/field-group.d.ts.map +1 -1
  297. package/dist/schema-form/field-group.js +0 -6
  298. package/dist/schema-form/field-group.js.map +1 -1
  299. package/dist/schema-form/field-model.d.ts +121 -0
  300. package/dist/schema-form/field-model.d.ts.map +1 -0
  301. package/dist/schema-form/field-model.js +2 -0
  302. package/dist/schema-form/field-model.js.map +1 -0
  303. package/dist/schema-form/field-node.d.ts.map +1 -1
  304. package/dist/schema-form/field-node.js +25 -14
  305. package/dist/schema-form/field-node.js.map +1 -1
  306. package/dist/schema-form/index.d.ts +8 -8
  307. package/dist/schema-form/index.d.ts.map +1 -1
  308. package/dist/schema-form/index.js +3 -34
  309. package/dist/schema-form/index.js.map +1 -1
  310. package/dist/schema-form/json-field.d.ts +19 -0
  311. package/dist/schema-form/json-field.d.ts.map +1 -1
  312. package/dist/schema-form/json-field.js +0 -19
  313. package/dist/schema-form/json-field.js.map +1 -1
  314. package/dist/schema-form/media-field.d.ts +1 -1
  315. package/dist/schema-form/media-field.d.ts.map +1 -1
  316. package/dist/schema-form/media-field.js +49 -30
  317. package/dist/schema-form/media-field.js.map +1 -1
  318. package/dist/schema-form/record-field.d.ts +12 -0
  319. package/dist/schema-form/record-field.d.ts.map +1 -1
  320. package/dist/schema-form/record-field.js +1 -13
  321. package/dist/schema-form/record-field.js.map +1 -1
  322. package/dist/schema-form/string-annotations.d.ts +20 -0
  323. package/dist/schema-form/string-annotations.d.ts.map +1 -0
  324. package/dist/schema-form/string-annotations.js +105 -0
  325. package/dist/schema-form/string-annotations.js.map +1 -0
  326. package/dist/schema-form/string-field.d.ts +1 -1
  327. package/dist/schema-form/string-field.d.ts.map +1 -1
  328. package/dist/schema-form/string-field.js +1 -1
  329. package/dist/schema-form/string-field.js.map +1 -1
  330. package/dist/schema-form/union-field.d.ts +1 -1
  331. package/dist/schema-form/union-field.d.ts.map +1 -1
  332. package/dist/schema-form/union-field.js.map +1 -1
  333. package/dist/schema-form/union.d.ts +8 -1
  334. package/dist/schema-form/union.d.ts.map +1 -1
  335. package/dist/schema-form/union.js +0 -7
  336. package/dist/schema-form/union.js.map +1 -1
  337. package/dist/schema-form/validate.d.ts.map +1 -1
  338. package/dist/schema-form/validate.js +126 -105
  339. package/dist/schema-form/validate.js.map +1 -1
  340. package/dist/state-binding/AdapterMapping.d.ts.map +1 -1
  341. package/dist/state-binding/AdapterMapping.js +0 -0
  342. package/dist/state-binding/AdapterMapping.js.map +1 -1
  343. package/dist/state-binding/BindingJqField.d.ts.map +1 -1
  344. package/dist/state-binding/BindingJqField.js +2 -2
  345. package/dist/state-binding/BindingJqField.js.map +1 -1
  346. package/dist/state-binding/InputInjectionRow.d.ts.map +1 -1
  347. package/dist/state-binding/InputInjectionRow.js +3 -3
  348. package/dist/state-binding/InputInjectionRow.js.map +1 -1
  349. package/dist/state-binding/StateAttachRow.d.ts.map +1 -1
  350. package/dist/state-binding/StateAttachRow.js +57 -41
  351. package/dist/state-binding/StateAttachRow.js.map +1 -1
  352. package/dist/state-binding/StateBindingSection.d.ts.map +1 -1
  353. package/dist/state-binding/StateBindingSection.js.map +1 -1
  354. package/dist/state-binding/SubjectScopeFields.d.ts.map +1 -1
  355. package/dist/state-binding/SubjectScopeFields.js.map +1 -1
  356. package/dist/state-binding/UpdateRow.d.ts.map +1 -1
  357. package/dist/state-binding/UpdateRow.js +2 -2
  358. package/dist/state-binding/UpdateRow.js.map +1 -1
  359. package/dist/state-binding/adapter-mapping-row.d.ts +17 -0
  360. package/dist/state-binding/adapter-mapping-row.d.ts.map +1 -0
  361. package/dist/state-binding/adapter-mapping-row.js +87 -0
  362. package/dist/state-binding/adapter-mapping-row.js.map +1 -0
  363. package/dist/state-binding/index.d.ts +21 -21
  364. package/dist/state-binding/index.d.ts.map +1 -1
  365. package/dist/state-binding/index.js +9 -15
  366. package/dist/state-binding/index.js.map +1 -1
  367. package/dist/state-binding/templated-text-catalog.d.ts.map +1 -1
  368. package/dist/state-binding/templated-text-catalog.js.map +1 -1
  369. package/dist/state-binding/types.d.ts +2 -2
  370. package/dist/state-binding/types.d.ts.map +1 -1
  371. package/dist/structured-output/StructuredOutput.d.ts.map +1 -1
  372. package/dist/structured-output/StructuredOutput.js +1 -3
  373. package/dist/structured-output/StructuredOutput.js.map +1 -1
  374. package/package.json +2 -2
  375. package/src/components/code-block.tsx +1 -1
  376. package/src/components/confirm-dialog.tsx +1 -1
  377. package/src/components/copy-field.tsx +1 -1
  378. package/src/components/date-range-picker.tsx +1 -1
  379. package/src/components/dialog.tsx +1 -1
  380. package/src/components/dirty-guard.tsx +3 -3
  381. package/src/components/explorer-body.tsx +239 -0
  382. package/src/components/explorer-page-size.ts +39 -0
  383. package/src/components/explorer-tag-filter.tsx +80 -0
  384. package/src/components/explorer-tags.ts +64 -0
  385. package/src/components/explorer-view.tsx +115 -367
  386. package/src/components/extension-combo-builder.tsx +35 -153
  387. package/src/components/extension-combo-parts.tsx +236 -0
  388. package/src/components/field.tsx +1 -1
  389. package/src/components/fleet-report.tsx +98 -55
  390. package/src/components/folder-nav.tsx +2 -2
  391. package/src/components/form-dialog.tsx +2 -2
  392. package/src/components/icons/chrome-marks.tsx +195 -0
  393. package/src/components/icons/icon-frame.tsx +50 -0
  394. package/src/components/icons/index.ts +84 -0
  395. package/src/components/icons/nav-map.ts +55 -0
  396. package/src/components/icons/nav-marks.tsx +205 -0
  397. package/src/components/icons/status-marks.tsx +46 -0
  398. package/src/components/icons/theme-marks.tsx +33 -0
  399. package/src/components/inputs.tsx +1 -1
  400. package/src/components/json-diff.tsx +1 -4
  401. package/src/components/json-tree-context.ts +26 -0
  402. package/src/components/json-tree-model.ts +139 -0
  403. package/src/components/json-tree-nodes.tsx +224 -0
  404. package/src/components/json-tree.tsx +15 -434
  405. package/src/components/json-value-format.ts +64 -0
  406. package/src/components/markdown-blocks.ts +198 -0
  407. package/src/components/markdown-inline.tsx +365 -0
  408. package/src/components/markdown.tsx +6 -472
  409. package/src/components/observer-registry.ts +139 -0
  410. package/src/components/overflow-measure.ts +69 -0
  411. package/src/components/page-fill.tsx +1 -1
  412. package/src/components/prose-regions.ts +153 -0
  413. package/src/components/radio-group.tsx +1 -1
  414. package/src/components/scroll-region.tsx +22 -361
  415. package/src/components/tab-stop-parse.ts +217 -0
  416. package/src/components/table.tsx +1 -1
  417. package/src/components/tags.tsx +2 -2
  418. package/src/components/templated-text-field.tsx +39 -332
  419. package/src/components/templated-text-kwargs-editor.tsx +147 -0
  420. package/src/components/templated-text-kwargs.ts +92 -0
  421. package/src/components/templated-text-source.tsx +226 -0
  422. package/src/components/tool-picker-parts.tsx +184 -0
  423. package/src/components/tool-picker.tsx +22 -114
  424. package/src/components/version-history-panel.tsx +39 -143
  425. package/src/components/version-history-rows.tsx +220 -0
  426. package/src/components/view-toggle.tsx +1 -1
  427. package/src/element-slot.ts +1 -1
  428. package/src/guards.ts +7 -0
  429. package/src/hooks/interactions-connection.ts +227 -0
  430. package/src/hooks/interactions-stream.ts +274 -0
  431. package/src/hooks/useApi.ts +1 -1
  432. package/src/hooks/useAuth.ts +1 -1
  433. package/src/hooks/useCapabilities.ts +3 -3
  434. package/src/hooks/useSse.ts +51 -478
  435. package/src/hooks/useSystemKinds.tsx +2 -2
  436. package/src/hooks/useTheme.ts +1 -1
  437. package/src/hooks/useToolDisplayNames.tsx +2 -2
  438. package/src/host.ts +7 -7
  439. package/src/index.ts +292 -292
  440. package/src/navigation/app-link.tsx +70 -0
  441. package/src/navigation/context.tsx +12 -331
  442. package/src/navigation/entry-state.ts +42 -0
  443. package/src/navigation/guard-registry.ts +65 -0
  444. package/src/navigation/guarded-navigation.ts +147 -0
  445. package/src/navigation/index.ts +14 -14
  446. package/src/navigation/types.ts +8 -11
  447. package/src/navigation/use-back-forward-guard.ts +90 -0
  448. package/src/navigation/use-search-commit.ts +1 -1
  449. package/src/plugin/host-state.ts +1 -1
  450. package/src/plugin/registry.ts +111 -90
  451. package/src/schema-editor/SchemaEditor.tsx +1 -1
  452. package/src/schema-editor/index.ts +3 -3
  453. package/src/schema-form/SecretRefField.tsx +122 -72
  454. package/src/schema-form/classify.ts +245 -396
  455. package/src/schema-form/context.ts +1 -1
  456. package/src/schema-form/default-value.ts +48 -17
  457. package/src/schema-form/enum-field.tsx +1 -1
  458. package/src/schema-form/field-group.tsx +1 -1
  459. package/src/schema-form/field-model.ts +133 -0
  460. package/src/schema-form/field-node.tsx +95 -39
  461. package/src/schema-form/index.ts +10 -10
  462. package/src/schema-form/json-field.tsx +1 -1
  463. package/src/schema-form/media-field.tsx +136 -67
  464. package/src/schema-form/record-field.tsx +2 -2
  465. package/src/schema-form/string-annotations.ts +111 -0
  466. package/src/schema-form/string-field.tsx +2 -2
  467. package/src/schema-form/union-field.tsx +3 -2
  468. package/src/schema-form/union.ts +1 -1
  469. package/src/schema-form/validate.ts +185 -104
  470. package/src/state-binding/AdapterMapping.tsx +0 -0
  471. package/src/state-binding/BindingJqField.tsx +3 -3
  472. package/src/state-binding/InputInjectionRow.tsx +4 -4
  473. package/src/state-binding/StateAttachRow.tsx +229 -154
  474. package/src/state-binding/StateBindingSection.tsx +1 -1
  475. package/src/state-binding/SubjectScopeFields.tsx +1 -1
  476. package/src/state-binding/UpdateRow.tsx +3 -3
  477. package/src/state-binding/adapter-mapping-row.tsx +232 -0
  478. package/src/state-binding/index.ts +43 -43
  479. package/src/state-binding/templated-text-catalog.ts +0 -1
  480. package/src/state-binding/types.ts +2 -2
  481. package/src/structured-output/StructuredOutput.tsx +1 -4
  482. package/dist/components/icons.d.ts +0 -160
  483. package/dist/components/icons.d.ts.map +0 -1
  484. package/dist/components/icons.js +0 -160
  485. package/dist/components/icons.js.map +0 -1
  486. package/src/components/icons.tsx +0 -586
@@ -21,6 +21,7 @@
21
21
  */
22
22
  import { type ReactNode } from 'react';
23
23
 
24
+ import { isRecord } from '../guards';
24
25
  import { Badge } from './badge';
25
26
  import { JsonTree } from './json-tree';
26
27
  import { Table, TBody, TD, TH, THead, TR } from './table';
@@ -36,10 +37,6 @@ export interface JsonDiffRow {
36
37
  readonly after?: unknown;
37
38
  }
38
39
 
39
- function isRecord(value: unknown): value is Record<string, unknown> {
40
- return typeof value === 'object' && value !== null && !Array.isArray(value);
41
- }
42
-
43
40
  /** Structural deep-equality over JSON values (arrays compared position-wise). */
44
41
  function deepEqual(a: unknown, b: unknown): boolean {
45
42
  if (a === b) return true;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The shared tree state a `JsonTree` publishes to its nodes: per-node open state,
3
+ * the reader's toggle, the single copy path, and the page size.
4
+ */
5
+ import { createContext, useContext } from 'react';
6
+
7
+ export interface JsonTreeContextValue {
8
+ /** Whether the node at `path`/`depth` is open right now. */
9
+ readonly isOpen: (path: string, depth: number) => boolean;
10
+ /** Records the reader's explicit toggle of one node. */
11
+ readonly setOpen: (path: string, open: boolean) => void;
12
+ /** Copies a value's JSON, returning whether the write succeeded. */
13
+ readonly copy: (value: unknown) => Promise<boolean>;
14
+ readonly pageSize: number;
15
+ }
16
+
17
+ export const JsonTreeContext = createContext<JsonTreeContextValue | null>(null);
18
+
19
+ /** The shared tree state; a subcomponent outside a `JsonTree` is a wiring error. */
20
+ export function useJsonTreeContext(): JsonTreeContextValue {
21
+ const context = useContext(JsonTreeContext);
22
+ if (context === null) {
23
+ throw new Error('JsonTree subcomponents must be rendered inside a JsonTree.');
24
+ }
25
+ return context;
26
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * The bounded-traversal model behind `JsonTree`: container inspection, the paged
3
+ * child slice, path identity, and the open-state computation for the depth
4
+ * default, expand-all and collapse-all baselines. Pure — no React, no DOM.
5
+ */
6
+ import { isRecord } from '../guards';
7
+
8
+ /** The deepest level opened by the guarded default; deeper nodes start collapsed. */
9
+ export const AUTO_EXPAND_DEPTH = 1;
10
+
11
+ /**
12
+ * The deepest level EXPAND-ALL reaches. Past it a node opens only on an explicit
13
+ * click, so the one action that opens the whole tree still cannot force an
14
+ * unbounded-depth payload into the DOM in a single stroke.
15
+ */
16
+ export const MAX_AUTO_DEPTH = 6;
17
+
18
+ /** Children rendered per page; the rest wait behind a "show more" control. */
19
+ export const PAGE_SIZE = 100;
20
+
21
+ /**
22
+ * The most rendered nodes EXPAND-ALL may auto-open in one stroke. The depth cap and
23
+ * the per-page limit each bound ONE dimension, but a payload that is wide AND deep
24
+ * multiplies them — auto-opening every node up to the cap would lay out on the order
25
+ * of PAGE_SIZE^depth nodes and freeze the tab. Expand-all instead opens containers
26
+ * breadth-first only until this budget is spent; a node past it stays collapsed and
27
+ * opens on an explicit click, so a huge payload opens a bounded, usable subset.
28
+ */
29
+ export const AUTO_EXPAND_NODE_BUDGET = 1500;
30
+
31
+ /** Whether a value is a disclosure (object or array) rather than a leaf. */
32
+ export function isContainer(value: unknown): boolean {
33
+ return Array.isArray(value) || isRecord(value);
34
+ }
35
+
36
+ /** A container's child count, without materializing its entries. */
37
+ export function containerCount(value: unknown): number {
38
+ if (Array.isArray(value)) return value.length;
39
+ if (isRecord(value)) return Object.keys(value).length;
40
+ throw new Error('containerCount expects an array or a record.');
41
+ }
42
+
43
+ /**
44
+ * The first `end` entries of a container, arrays keyed by index and objects by
45
+ * key. Only the visible window is materialized, so a million-element array's
46
+ * children never all exist at once.
47
+ */
48
+ export function sliceEntries(value: unknown, end: number): [string, unknown][] {
49
+ if (Array.isArray(value)) {
50
+ return value.slice(0, end).map((item, index) => [String(index), item]);
51
+ }
52
+ // Slice the keys before reading values, so only the visible window is materialized.
53
+ if (isRecord(value))
54
+ return Object.keys(value)
55
+ .slice(0, end)
56
+ .map((key) => [key, value[key]]);
57
+ throw new Error('sliceEntries expects an array or a record.');
58
+ }
59
+
60
+ /** One container's summary text: its kind and its child count. */
61
+ export function containerSummary(value: unknown, count: number): string {
62
+ return Array.isArray(value) ? `Array(${String(count)})` : `Object(${String(count)})`;
63
+ }
64
+
65
+ /**
66
+ * A child's identity for the open-state map. Each segment is percent-encoded, so a
67
+ * key that itself contains the separator cannot collide with a different path.
68
+ */
69
+ export function childPath(parent: string, name: string): string {
70
+ const segment = encodeURIComponent(name);
71
+ return parent === '' ? segment : `${parent}/${segment}`;
72
+ }
73
+
74
+ /** The default open state a call site's `defaultExpanded` selects. */
75
+ export type Baseline = 'depth' | 'expanded' | 'collapsed';
76
+
77
+ export function initialBaseline(defaultExpanded: boolean | undefined): Baseline {
78
+ if (defaultExpanded === true) return 'expanded';
79
+ if (defaultExpanded === false) return 'collapsed';
80
+ return 'depth';
81
+ }
82
+
83
+ /**
84
+ * The set of paths EXPAND-ALL auto-opens: a breadth-first sweep that opens each
85
+ * container in turn — spending its visible child count against a shared node budget
86
+ * and enqueuing that page's own container children — skipping any node whose page
87
+ * would overspend {@link AUTO_EXPAND_NODE_BUDGET} or that sits past {@link MAX_AUTO_DEPTH}.
88
+ * Only a bounded window of a huge payload is materialized, so this stays cheap even
89
+ * when the data is enormous; the paths it omits stay collapsed and open on a click.
90
+ */
91
+ export function expandedOpenPaths(root: unknown): ReadonlySet<string> {
92
+ const open = new Set<string>();
93
+ if (!isContainer(root)) return open;
94
+
95
+ let budget = AUTO_EXPAND_NODE_BUDGET;
96
+ const queue: { readonly value: unknown; readonly path: string; readonly depth: number }[] = [
97
+ { value: root, path: '', depth: 0 },
98
+ ];
99
+
100
+ while (queue.length > 0) {
101
+ const node = queue.shift();
102
+ if (node === undefined) break;
103
+ if (node.depth >= MAX_AUTO_DEPTH) continue;
104
+
105
+ const shown = Math.min(PAGE_SIZE, containerCount(node.value));
106
+ // Skip when the budget can't seat a whole page (a later, smaller node may still fit).
107
+ if (shown > budget) continue;
108
+ budget -= shown;
109
+ open.add(node.path);
110
+
111
+ for (const [name, childValue] of sliceEntries(node.value, shown)) {
112
+ if (isContainer(childValue)) {
113
+ queue.push({ value: childValue, path: childPath(node.path, name), depth: node.depth + 1 });
114
+ }
115
+ }
116
+ }
117
+
118
+ return open;
119
+ }
120
+
121
+ /**
122
+ * Whether a node is open, from the baseline and the reader's own toggles. An
123
+ * explicit toggle always wins; otherwise the baseline decides — the depth-guarded
124
+ * default opens through {@link AUTO_EXPAND_DEPTH}, expand-all opens the budgeted
125
+ * breadth-first set, collapse-all opens nothing.
126
+ */
127
+ export function computeOpen(
128
+ baseline: Baseline,
129
+ overrides: ReadonlyMap<string, boolean>,
130
+ expandedPaths: ReadonlySet<string> | null,
131
+ path: string,
132
+ depth: number,
133
+ ): boolean {
134
+ const override = overrides.get(path);
135
+ if (override !== undefined) return override;
136
+ if (baseline === 'expanded') return expandedPaths?.has(path) ?? false;
137
+ if (baseline === 'collapsed') return false;
138
+ return depth <= AUTO_EXPAND_DEPTH;
139
+ }
@@ -0,0 +1,224 @@
1
+ /**
2
+ * The rendered nodes of a `JsonTree`: the copy control, one disclosure/leaf node,
3
+ * and a node's paged children. State is read from the tree context; layout uses
4
+ * the code-block rhythm.
5
+ */
6
+ import type { CSSProperties, MouseEvent as ReactMouseEvent, ReactElement } from 'react';
7
+ import { useEffect, useRef, useState } from 'react';
8
+
9
+ import { COPIED_LABEL, COPIED_RESET_MS } from '../hooks/useClipboardCopy';
10
+ import { CheckIcon, CopyIcon } from './icons';
11
+ import { useJsonTreeContext } from './json-tree-context';
12
+ import {
13
+ childPath,
14
+ containerCount,
15
+ containerSummary,
16
+ isContainer,
17
+ sliceEntries,
18
+ } from './json-tree-model';
19
+ import { primitiveClass, primitiveText } from './json-value-format';
20
+
21
+ /** A copy control's resting face; whichever is exposed is also its accessible name. */
22
+ export const COPY_LABEL = 'Copy';
23
+
24
+ /**
25
+ * One nesting level's indent: the child block insets and draws its own guide
26
+ * rail. The depth is expressed by the DOM nesting, so each level repeats this
27
+ * single step rather than computing an absolute offset.
28
+ */
29
+ const childrenStyle: CSSProperties = {
30
+ paddingLeft: 'var(--tai-space-4)',
31
+ marginLeft: 'var(--tai-space-1)',
32
+ borderLeft: '1px solid var(--tai-color-decor)',
33
+ };
34
+
35
+ /** A `<summary>` is a click target; browsers do not style it as one by default. */
36
+ const summaryStyle: CSSProperties = {
37
+ display: 'flex',
38
+ alignItems: 'center',
39
+ gap: 'var(--tai-space-2)',
40
+ cursor: 'pointer',
41
+ };
42
+
43
+ /** The copy control sits at the far end of a disclosure's row. */
44
+ const nodeCopyStyle: CSSProperties = { marginLeft: 'auto' };
45
+
46
+ /**
47
+ * The per-node copy button's geometry: borrows `tai-icon-btn` for the focus ring,
48
+ * muted ink and hover, then shrinks to the code rhythm so the row stays dense.
49
+ */
50
+ const nodeCopyButtonStyle: CSSProperties = {
51
+ width: 'auto',
52
+ height: 'auto',
53
+ padding: 'var(--tai-space-1)',
54
+ };
55
+
56
+ const showMoreStyle: CSSProperties = { marginTop: 'var(--tai-space-1)' };
57
+
58
+ interface CopyButtonProps {
59
+ readonly value: unknown;
60
+ /**
61
+ * The button's resting accessible name. When it flips to its confirmed state the
62
+ * name flips with it, so a control reading "Copied" is never still named "Copy"
63
+ * (WCAG 2.5.3). A `text` button spells the name in its own words; an `icon` button
64
+ * takes it from here.
65
+ */
66
+ readonly label: string;
67
+ readonly variant: 'text' | 'icon';
68
+ }
69
+
70
+ /**
71
+ * A copy control that writes its value to the clipboard and shows a transient
72
+ * confirmed state. The write itself lives on the tree context, so a refusal is
73
+ * reported ONCE — as the tree's shared alert — rather than inline at each of the
74
+ * many buttons a large payload carries.
75
+ */
76
+ export function CopyButton({ value, label, variant }: CopyButtonProps): ReactElement {
77
+ const { copy } = useJsonTreeContext();
78
+ const [copied, setCopied] = useState(false);
79
+ const resetTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
80
+ // The write is async, so a copy can be in flight when the button unmounts (a dialog
81
+ // holding the tree closes on the same click); checked before the resolution sets state.
82
+ const mounted = useRef(true);
83
+
84
+ useEffect(() => {
85
+ mounted.current = true;
86
+ return () => {
87
+ mounted.current = false;
88
+ if (resetTimer.current !== null) clearTimeout(resetTimer.current);
89
+ };
90
+ }, []);
91
+
92
+ const handleClick = (event: ReactMouseEvent<HTMLButtonElement>): void => {
93
+ // Inside a `<summary>` a click both toggles the disclosure natively and reaches
94
+ // the summary's own toggle handler; neither should fire for a copy.
95
+ event.preventDefault();
96
+ event.stopPropagation();
97
+ void copy(value).then((ok) => {
98
+ if (!ok || !mounted.current) return;
99
+ setCopied(true);
100
+ if (resetTimer.current !== null) clearTimeout(resetTimer.current);
101
+ resetTimer.current = setTimeout(() => {
102
+ if (mounted.current) setCopied(false);
103
+ }, COPIED_RESET_MS);
104
+ });
105
+ };
106
+
107
+ if (variant === 'text') {
108
+ return (
109
+ <button type="button" className="tai-btn tai-btn-ghost" onClick={handleClick}>
110
+ {copied ? <CheckIcon /> : <CopyIcon />}
111
+ {copied ? COPIED_LABEL : label}
112
+ </button>
113
+ );
114
+ }
115
+
116
+ return (
117
+ <button
118
+ type="button"
119
+ className="tai-icon-btn"
120
+ style={{ ...nodeCopyStyle, ...nodeCopyButtonStyle }}
121
+ aria-label={copied ? COPIED_LABEL : label}
122
+ onClick={handleClick}
123
+ >
124
+ {copied ? <CheckIcon /> : <CopyIcon />}
125
+ </button>
126
+ );
127
+ }
128
+
129
+ interface NodeProps {
130
+ readonly name?: string;
131
+ readonly value: unknown;
132
+ readonly depth: number;
133
+ readonly path: string;
134
+ }
135
+
136
+ /**
137
+ * The visible slice of a container's children, plus a "show more" control while
138
+ * any remain. Rendered ONLY when the node is open, so a collapsed container costs
139
+ * nothing and the page count follows how far the reader has opened it.
140
+ */
141
+ function NodeChildren({
142
+ value,
143
+ count,
144
+ depth,
145
+ path,
146
+ }: {
147
+ readonly value: unknown;
148
+ readonly count: number;
149
+ readonly depth: number;
150
+ readonly path: string;
151
+ }): ReactElement {
152
+ const { pageSize } = useJsonTreeContext();
153
+ const [visible, setVisible] = useState(pageSize);
154
+ const shownCount = Math.min(visible, count);
155
+ const shown = sliceEntries(value, shownCount);
156
+ const remaining = count - shownCount;
157
+
158
+ return (
159
+ <div style={childrenStyle}>
160
+ {shown.map(([childName, childValue]) => (
161
+ <JsonNode
162
+ key={childName}
163
+ name={childName}
164
+ value={childValue}
165
+ depth={depth + 1}
166
+ path={childPath(path, childName)}
167
+ />
168
+ ))}
169
+ {remaining > 0 ? (
170
+ <button
171
+ type="button"
172
+ className="tai-btn tai-btn-ghost"
173
+ style={showMoreStyle}
174
+ onClick={() => {
175
+ setVisible((current) => current + pageSize);
176
+ }}
177
+ >
178
+ Show {String(Math.min(remaining, pageSize))} more
179
+ </button>
180
+ ) : null}
181
+ </div>
182
+ );
183
+ }
184
+
185
+ export function JsonNode({ name, value, depth, path }: NodeProps): ReactElement {
186
+ const { isOpen, setOpen } = useJsonTreeContext();
187
+
188
+ if (isContainer(value)) {
189
+ const count = containerCount(value);
190
+ const open = isOpen(path, depth);
191
+ const summary = containerSummary(value, count);
192
+ const handleToggle = (event: ReactMouseEvent<HTMLElement>): void => {
193
+ // The disclosure is state-driven: cancel the browser's own toggle so the two
194
+ // never diverge, then record the reader's intent.
195
+ event.preventDefault();
196
+ setOpen(path, !open);
197
+ };
198
+
199
+ return (
200
+ <details open={open}>
201
+ <summary style={summaryStyle} onClick={handleToggle}>
202
+ {name !== undefined ? <span className="tai-syntax-key">{name}: </span> : null}
203
+ <span className="tai-muted">{summary}</span>
204
+ {/* The root's copy-node control would duplicate the toolbar's copy-whole. */}
205
+ {depth > 0 ? (
206
+ <CopyButton
207
+ value={value}
208
+ variant="icon"
209
+ label={name !== undefined ? `Copy ${name}` : COPY_LABEL}
210
+ />
211
+ ) : null}
212
+ </summary>
213
+ {open ? <NodeChildren value={value} count={count} depth={depth} path={path} /> : null}
214
+ </details>
215
+ );
216
+ }
217
+
218
+ return (
219
+ <div>
220
+ {name !== undefined ? <span className="tai-syntax-key">{name}: </span> : null}
221
+ <span className={primitiveClass(value)}>{primitiveText(value)}</span>
222
+ </div>
223
+ );
224
+ }