@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
@@ -9,12 +9,12 @@ import type { ReactNode } from 'react';
9
9
  import { useContext, useId, useState } from 'react';
10
10
 
11
11
  import { Badge } from '../components/badge';
12
+ import { Field, type FieldControlProps, useFieldControl } from '../components/field';
12
13
  import { XCircleIcon } from '../components/icons';
13
- import { Button } from '../components/primitives';
14
- import { Field, useFieldControl, type FieldControlProps } from '../components/field';
15
14
  import { TextInput } from '../components/inputs';
16
- import type { MediaUpload } from './classify';
15
+ import { Button } from '../components/primitives';
17
16
  import { MaxUploadBytesContext } from './context';
17
+ import type { MediaUpload } from './field-model';
18
18
  import { decodedByteSize, effectiveMaxBytes, overCapMessage } from './media';
19
19
 
20
20
  /**
@@ -114,9 +114,7 @@ export function MediaField({
114
114
  const defaultMax = useContext(MaxUploadBytesContext);
115
115
  const maxBytes = effectiveMaxBytes(media.maxBytes, defaultMax);
116
116
  const [uploadError, setUploadError] = useState<string | undefined>(undefined);
117
- const [attached, setAttached] = useState<
118
- { name: string; previewUrl: string; value: string } | undefined
119
- >(undefined);
117
+ const [attached, setAttached] = useState<AttachedMedia | undefined>(undefined);
120
118
 
121
119
  const accept = (file: File | undefined): void => {
122
120
  if (file === undefined) return;
@@ -139,19 +137,7 @@ export function MediaField({
139
137
  onChange('');
140
138
  };
141
139
 
142
- // The just-picked file's chip/preview applies ONLY while it still matches the
143
- // current field value; if the value is reset or replaced externally (an edit
144
- // loads a different record, or the form resets after submit), fall back to a
145
- // value-derived display so a stale filename/thumbnail can never linger.
146
- const activeAttached = attached?.value === value ? attached : undefined;
147
- // Prefer the just-read preview; on an edit with a pre-existing data-url value,
148
- // reconstruct the preview from the value itself.
149
- const previewUrl =
150
- activeAttached?.previewUrl ??
151
- (media.encoding === 'data-url' && value.startsWith('data:') ? value : undefined);
152
- const isImage =
153
- media.mediaType?.startsWith('image/') === true || previewUrl?.startsWith('data:image') === true;
154
- const fileName = activeAttached?.name ?? (value !== '' ? 'Attached file' : undefined);
140
+ const { previewUrl, isImage, fileName } = mediaPreview(attached, value, media);
155
141
 
156
142
  return (
157
143
  <Field label={heading} description={description} error={error}>
@@ -161,29 +147,12 @@ export function MediaField({
161
147
  onFile={accept}
162
148
  />
163
149
 
164
- {fileName !== undefined ? (
165
- <div className="tai-row">
166
- {isImage && previewUrl !== undefined ? (
167
- <img
168
- src={previewUrl}
169
- alt={fileName}
170
- // A thumbnail is per-instance geometry: it is capped to a fixed
171
- // height and can never exceed the width it is given.
172
- style={{
173
- maxWidth: '100%',
174
- maxHeight: '6rem',
175
- borderRadius: 'var(--tai-radius-md)',
176
- border: '1px solid var(--tai-color-control-border)',
177
- }}
178
- />
179
- ) : (
180
- <Badge>{fileName}</Badge>
181
- )}
182
- <Button type="button" variant="secondary" onClick={clear}>
183
- Remove
184
- </Button>
185
- </div>
186
- ) : null}
150
+ <AttachedPreview
151
+ fileName={fileName}
152
+ isImage={isImage}
153
+ previewUrl={previewUrl}
154
+ onClear={clear}
155
+ />
187
156
 
188
157
  {uploadError !== undefined ? (
189
158
  <span id={uploadErrorId} role="alert" className="tai-field-error">
@@ -192,33 +161,133 @@ export function MediaField({
192
161
  </span>
193
162
  ) : null}
194
163
 
195
- <label htmlFor={pasteId} className="tai-field">
196
- <span className="tai-field-hint">Or paste a value</span>
197
- <TextInput
198
- id={pasteId}
199
- type="text"
200
- // Only the upload error's id: `TextInput` joins it with the enclosing
201
- // Field's own description and error IDREFs rather than replacing them.
202
- aria-describedby={uploadError === undefined ? undefined : uploadErrorId}
203
- aria-invalid={uploadError === undefined ? undefined : true}
204
- value={value}
205
- onChange={(event) => {
206
- const next = event.target.value;
207
- // The same effective cap the picker enforces, measured on the pasted
208
- // string's DECODED byte size. Reject over-cap LOUDLY; never accept or
209
- // truncate — the field keeps its prior value.
210
- const size = decodedByteSize(next);
211
- if (size > maxBytes) {
212
- setUploadError(overCapMessage('The pasted value', size, maxBytes));
213
- return;
214
- }
215
- setUploadError(undefined);
216
- setAttached(undefined);
217
- onChange(next);
164
+ <MediaPasteInput
165
+ pasteId={pasteId}
166
+ value={value}
167
+ maxBytes={maxBytes}
168
+ uploadErrorId={uploadError === undefined ? undefined : uploadErrorId}
169
+ onReject={setUploadError}
170
+ onAccept={(next) => {
171
+ setUploadError(undefined);
172
+ setAttached(undefined);
173
+ onChange(next);
174
+ }}
175
+ />
176
+ </Field>
177
+ );
178
+ }
179
+
180
+ /** The just-picked file, retained only while it still matches the current field value. */
181
+ interface AttachedMedia {
182
+ name: string;
183
+ previewUrl: string;
184
+ value: string;
185
+ }
186
+
187
+ /**
188
+ * The display derived from the attached file and the current value: the chip/preview
189
+ * applies ONLY while the attachment still matches the value (an external reset or a
190
+ * different record loading falls back to a value-derived display so a stale
191
+ * filename/thumbnail can never linger); an existing data-url value reconstructs its
192
+ * own preview.
193
+ */
194
+ function mediaPreview(
195
+ attached: AttachedMedia | undefined,
196
+ value: string,
197
+ media: MediaUpload,
198
+ ): { previewUrl: string | undefined; isImage: boolean; fileName: string | undefined } {
199
+ const activeAttached = attached?.value === value ? attached : undefined;
200
+ const previewUrl =
201
+ activeAttached?.previewUrl ??
202
+ (media.encoding === 'data-url' && value.startsWith('data:') ? value : undefined);
203
+ const isImage =
204
+ media.mediaType?.startsWith('image/') === true || previewUrl?.startsWith('data:image') === true;
205
+ const fileName = activeAttached?.name ?? (value !== '' ? 'Attached file' : undefined);
206
+ return { previewUrl, isImage, fileName };
207
+ }
208
+
209
+ /** The attached-file chip: an image thumbnail when previewable, else a filename badge, plus Remove. */
210
+ function AttachedPreview({
211
+ fileName,
212
+ isImage,
213
+ previewUrl,
214
+ onClear,
215
+ }: {
216
+ fileName: string | undefined;
217
+ isImage: boolean;
218
+ previewUrl: string | undefined;
219
+ onClear: () => void;
220
+ }): ReactNode {
221
+ if (fileName === undefined) return null;
222
+ return (
223
+ <div className="tai-row">
224
+ {isImage && previewUrl !== undefined ? (
225
+ <img
226
+ src={previewUrl}
227
+ alt={fileName}
228
+ // A thumbnail is per-instance geometry: it is capped to a fixed height and
229
+ // can never exceed the width it is given.
230
+ style={{
231
+ maxWidth: '100%',
232
+ maxHeight: '6rem',
233
+ borderRadius: 'var(--tai-radius-md)',
234
+ border: '1px solid var(--tai-color-control-border)',
218
235
  }}
219
236
  />
220
- </label>
221
- </Field>
237
+ ) : (
238
+ <Badge>{fileName}</Badge>
239
+ )}
240
+ <Button type="button" variant="secondary" onClick={onClear}>
241
+ Remove
242
+ </Button>
243
+ </div>
244
+ );
245
+ }
246
+
247
+ /**
248
+ * The paste fallback: a text input that enforces the SAME effective byte cap the
249
+ * picker does, measured on the pasted string's DECODED size. An over-cap paste is
250
+ * rejected LOUDLY (`onReject`) and the field keeps its prior value; an accepted paste
251
+ * clears any attachment and emits the new value (`onAccept`).
252
+ */
253
+ function MediaPasteInput({
254
+ pasteId,
255
+ value,
256
+ maxBytes,
257
+ uploadErrorId,
258
+ onReject,
259
+ onAccept,
260
+ }: {
261
+ pasteId: string;
262
+ value: string;
263
+ maxBytes: number;
264
+ /** Set while an upload error stands, so the input points at it and reads invalid. */
265
+ uploadErrorId: string | undefined;
266
+ onReject: (message: string) => void;
267
+ onAccept: (value: string) => void;
268
+ }): ReactNode {
269
+ return (
270
+ <label htmlFor={pasteId} className="tai-field">
271
+ <span className="tai-field-hint">Or paste a value</span>
272
+ <TextInput
273
+ id={pasteId}
274
+ type="text"
275
+ // Only the upload error's id: `TextInput` joins it with the enclosing Field's
276
+ // own description and error IDREFs rather than replacing them.
277
+ aria-describedby={uploadErrorId}
278
+ aria-invalid={uploadErrorId === undefined ? undefined : true}
279
+ value={value}
280
+ onChange={(event) => {
281
+ const next = event.target.value;
282
+ const size = decodedByteSize(next);
283
+ if (size > maxBytes) {
284
+ onReject(overCapMessage('The pasted value', size, maxBytes));
285
+ return;
286
+ }
287
+ onAccept(next);
288
+ }}
289
+ />
290
+ </label>
222
291
  );
223
292
  }
224
293
 
@@ -10,11 +10,11 @@
10
10
  * silently merged): the map cannot represent two entries under one key, so the
11
11
  * later duplicate is withheld and flagged rather than overwriting the first.
12
12
  */
13
- import { useContext, useRef, useState } from 'react';
14
13
  import type { ReactNode } from 'react';
14
+ import { useContext, useRef, useState } from 'react';
15
15
 
16
- import { CloseIcon } from '../components/icons';
17
16
  import { Field } from '../components/field';
17
+ import { CloseIcon } from '../components/icons';
18
18
  import { TextInput } from '../components/inputs';
19
19
  import { Button } from '../components/primitives';
20
20
  import { classifySchema } from './classify';
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Detect the annotations that opt a (ref-resolved) string schema out of the plain
3
+ * text box: the media-upload annotations (`contentEncoding`/`contentMediaType`/
4
+ * `format: "data-url"`) and the `x-tai42-expression` expression-editor annotation.
5
+ * Both degrade to `undefined` on anything malformed, so an annotated field never
6
+ * renders differently from the plain string it falls back to.
7
+ */
8
+ import { isRecord } from '../guards';
9
+ import type { ExpressionAnnotation, ExpressionAnnotationKey, MediaUpload } from './field-model';
10
+ import type { JsonSchema } from './types';
11
+
12
+ const EXPRESSION_KEYWORD = 'x-tai42-expression';
13
+
14
+ /**
15
+ * Detect the media-upload annotations on a (ref-resolved) string schema. A field
16
+ * opts into the upload control when it carries `contentEncoding: "base64"` plus a
17
+ * `contentMediaType`, OR `format: "data-url"`. Anything else is a plain string.
18
+ */
19
+ export function mediaUpload(schema: JsonSchema): MediaUpload | undefined {
20
+ const mediaType =
21
+ typeof schema.contentMediaType === 'string' ? schema.contentMediaType : undefined;
22
+ const maxBytes =
23
+ typeof schema.contentMaxBytes === 'number' && schema.contentMaxBytes > 0
24
+ ? schema.contentMaxBytes
25
+ : undefined;
26
+ if (schema.format === 'data-url') {
27
+ return { encoding: 'data-url', mediaType, maxBytes };
28
+ }
29
+ if (schema.contentEncoding === 'base64' && mediaType !== undefined) {
30
+ return { encoding: 'base64', mediaType, maxBytes };
31
+ }
32
+ return undefined;
33
+ }
34
+
35
+ /** An optional string member: absent is fine, a non-string is a malformed annotation. */
36
+ type StringOrInvalid =
37
+ { readonly ok: true; readonly value: string | undefined } | { readonly ok: false };
38
+
39
+ function optionalString(value: unknown): StringOrInvalid {
40
+ if (value === undefined) return { ok: true, value: undefined };
41
+ if (typeof value === 'string') return { ok: true, value };
42
+ return { ok: false };
43
+ }
44
+
45
+ /** Parse the optional `keys` array: absent → `undefined`, malformed → `null` (reject). */
46
+ function parseAnnotationKeys(
47
+ value: unknown,
48
+ ): readonly ExpressionAnnotationKey[] | undefined | null {
49
+ if (value === undefined) return undefined;
50
+ if (!Array.isArray(value)) return null;
51
+ const keys: ExpressionAnnotationKey[] = [];
52
+ for (const entry of value as readonly unknown[]) {
53
+ if (!isRecord(entry) || typeof entry.name !== 'string' || typeof entry.gloss !== 'string') {
54
+ return null;
55
+ }
56
+ keys.push({ name: entry.name, gloss: entry.gloss });
57
+ }
58
+ return keys;
59
+ }
60
+
61
+ /** Parse the optional `caveats` array: absent → `undefined`, malformed → `null` (reject). */
62
+ function parseCaveatList(value: unknown): readonly string[] | undefined | null {
63
+ if (value === undefined) return undefined;
64
+ if (!Array.isArray(value)) return null;
65
+ const caveats: string[] = [];
66
+ for (const entry of value as readonly unknown[]) {
67
+ if (typeof entry !== 'string') return null;
68
+ caveats.push(entry);
69
+ }
70
+ return caveats;
71
+ }
72
+
73
+ /**
74
+ * Detect the `x-tai42-expression` annotation on a (ref-resolved) string schema,
75
+ * mirroring {@link mediaUpload}: a well-formed annotation opts the field into the
76
+ * jq expression editor; anything else — absent, non-object, unknown language, or
77
+ * any wrongly-typed member — yields `undefined`, so the field renders EXACTLY as
78
+ * the plain string input it is today. Malformed payloads NEVER throw: a bad
79
+ * annotation is a server-side authoring bug, and degrading to the ordinary text
80
+ * box keeps the form usable while staying byte-identical to the unannotated
81
+ * rendering.
82
+ */
83
+ export function expressionAnnotation(schema: JsonSchema): ExpressionAnnotation | undefined {
84
+ const raw: unknown = schema[EXPRESSION_KEYWORD];
85
+ if (!isRecord(raw)) return undefined;
86
+ // The language gate doubles as the forward-compatibility valve: a future
87
+ // language this client does not understand degrades to a plain string field.
88
+ if (raw.language !== 'jq') return undefined;
89
+
90
+ const label = optionalString(raw.label);
91
+ const blurb = optionalString(raw.blurb);
92
+ const returns = optionalString(raw.returns);
93
+ if (!label.ok || !blurb.ok || !returns.ok) return undefined;
94
+
95
+ const keys = parseAnnotationKeys(raw.keys);
96
+ if (keys === null) return undefined;
97
+ const caveats = parseCaveatList(raw.caveats);
98
+ if (caveats === null) return undefined;
99
+
100
+ // `sample` is any JSON — including `null` — so presence is tracked, not typed.
101
+ return {
102
+ language: 'jq',
103
+ label: label.value,
104
+ blurb: blurb.value,
105
+ keys,
106
+ returns: returns.value,
107
+ caveats,
108
+ hasSample: 'sample' in raw,
109
+ sample: raw.sample,
110
+ };
111
+ }
@@ -24,11 +24,11 @@ import { Suspense, useCallback, useContext, useMemo, useState } from 'react';
24
24
  import { CompletionInput } from '../components/completion-input';
25
25
  import { Field } from '../components/field';
26
26
  import { AlertTriangleIcon } from '../components/icons';
27
- import { TextInput, Textarea } from '../components/inputs';
27
+ import { Textarea, TextInput } from '../components/inputs';
28
28
  import { errorMessage } from '../errors';
29
- import type { ExpressionAnnotation, MediaUpload } from './classify';
30
29
  import type { ExpressionFieldComponent, ExpressionInputShape } from './context';
31
30
  import { CompletionProviderContext, ExpressionFieldContext } from './context';
31
+ import type { ExpressionAnnotation, MediaUpload } from './field-model';
32
32
  import { MediaField } from './media-field';
33
33
  import type { CompletionProvider } from './SchemaForm';
34
34
 
@@ -11,15 +11,16 @@ import type { ReactNode } from 'react';
11
11
 
12
12
  import { Field } from '../components/field';
13
13
  import { Select } from '../components/select';
14
- import { classifySchema, type FieldModel, type UnionVariant } from './classify';
14
+ import { classifySchema } from './classify';
15
15
  import { skeletonValueForSchema } from './default-value';
16
16
  import { FieldGroup } from './field-group';
17
+ import type { FieldModel, UnionVariant } from './field-model';
17
18
  import { FieldNode } from './field-node';
18
19
  import { ObjectFields } from './object-fields';
19
20
  import { resolveRef } from './resolve';
20
21
  import { groupClass } from './styles';
21
- import { activeVariantIndex } from './union';
22
22
  import type { JsonSchema, SchemaFormErrors } from './types';
23
+ import { activeVariantIndex } from './union';
23
24
 
24
25
  function isPlainObject(value: unknown): value is Record<string, unknown> {
25
26
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -5,8 +5,8 @@
5
5
  * when Pydantic emitted no discriminator). Returns `-1` when no variant is
6
6
  * active (an unset/`null` value, or nothing matches).
7
7
  */
8
+ import type { UnionVariant } from './field-model';
8
9
  import { resolveRef } from './resolve';
9
- import type { UnionVariant } from './classify';
10
10
  import type { JsonSchema } from './types';
11
11
 
12
12
  function isPlainObject(value: unknown): value is Record<string, unknown> {