@tai42/studio-sdk 25.0.1 → 26.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 (262) hide show
  1. package/README.md +143 -26
  2. package/dist/components/action-menu.d.ts +30 -0
  3. package/dist/components/action-menu.d.ts.map +1 -0
  4. package/dist/components/action-menu.js +101 -0
  5. package/dist/components/action-menu.js.map +1 -0
  6. package/dist/components/agent-picker.d.ts +22 -0
  7. package/dist/components/agent-picker.d.ts.map +1 -0
  8. package/dist/components/agent-picker.js +17 -0
  9. package/dist/components/agent-picker.js.map +1 -0
  10. package/dist/components/channel-picker.d.ts +27 -0
  11. package/dist/components/channel-picker.d.ts.map +1 -0
  12. package/dist/components/channel-picker.js +26 -0
  13. package/dist/components/channel-picker.js.map +1 -0
  14. package/dist/components/components.css +226 -8
  15. package/dist/components/confirm-dialog.d.ts +3 -1
  16. package/dist/components/confirm-dialog.d.ts.map +1 -1
  17. package/dist/components/confirm-dialog.js +2 -2
  18. package/dist/components/confirm-dialog.js.map +1 -1
  19. package/dist/components/execution-key-picker.d.ts +26 -10
  20. package/dist/components/execution-key-picker.d.ts.map +1 -1
  21. package/dist/components/execution-key-picker.js +134 -15
  22. package/dist/components/execution-key-picker.js.map +1 -1
  23. package/dist/components/extension-combo-builder.d.ts +7 -7
  24. package/dist/components/extension-combo-builder.d.ts.map +1 -1
  25. package/dist/components/extension-combo-builder.js +42 -16
  26. package/dist/components/extension-combo-builder.js.map +1 -1
  27. package/dist/components/extension-combo-parts.d.ts +13 -11
  28. package/dist/components/extension-combo-parts.d.ts.map +1 -1
  29. package/dist/components/extension-combo-parts.js +10 -19
  30. package/dist/components/extension-combo-parts.js.map +1 -1
  31. package/dist/components/extension-config-editor.d.ts +33 -0
  32. package/dist/components/extension-config-editor.d.ts.map +1 -0
  33. package/dist/components/extension-config-editor.js +190 -0
  34. package/dist/components/extension-config-editor.js.map +1 -0
  35. package/dist/components/extension-grouping.d.ts +4 -41
  36. package/dist/components/extension-grouping.d.ts.map +1 -1
  37. package/dist/components/extension-grouping.js +1 -48
  38. package/dist/components/extension-grouping.js.map +1 -1
  39. package/dist/components/extension-picker.d.ts +4 -3
  40. package/dist/components/extension-picker.d.ts.map +1 -1
  41. package/dist/components/extension-picker.js +6 -6
  42. package/dist/components/extension-picker.js.map +1 -1
  43. package/dist/components/fleet-report.d.ts +8 -3
  44. package/dist/components/fleet-report.d.ts.map +1 -1
  45. package/dist/components/fleet-report.js +12 -2
  46. package/dist/components/fleet-report.js.map +1 -1
  47. package/dist/components/holder-kinds.d.ts +18 -0
  48. package/dist/components/holder-kinds.d.ts.map +1 -0
  49. package/dist/components/holder-kinds.js +41 -0
  50. package/dist/components/holder-kinds.js.map +1 -0
  51. package/dist/components/holder-list.d.ts +58 -0
  52. package/dist/components/holder-list.d.ts.map +1 -0
  53. package/dist/components/holder-list.js +77 -0
  54. package/dist/components/holder-list.js.map +1 -0
  55. package/dist/components/icons/index.d.ts +1 -1
  56. package/dist/components/icons/index.d.ts.map +1 -1
  57. package/dist/components/icons/index.js +1 -1
  58. package/dist/components/icons/index.js.map +1 -1
  59. package/dist/components/icons/nav-map.d.ts.map +1 -1
  60. package/dist/components/icons/nav-map.js +1 -3
  61. package/dist/components/icons/nav-map.js.map +1 -1
  62. package/dist/components/icons/nav-marks.d.ts +0 -4
  63. package/dist/components/icons/nav-marks.d.ts.map +1 -1
  64. package/dist/components/icons/nav-marks.js +0 -4
  65. package/dist/components/icons/nav-marks.js.map +1 -1
  66. package/dist/components/named-list-picker.d.ts +39 -0
  67. package/dist/components/named-list-picker.d.ts.map +1 -0
  68. package/dist/components/named-list-picker.js +61 -0
  69. package/dist/components/named-list-picker.js.map +1 -0
  70. package/dist/components/named-list-test-utils.d.ts +23 -0
  71. package/dist/components/named-list-test-utils.d.ts.map +1 -0
  72. package/dist/components/named-list-test-utils.js +33 -0
  73. package/dist/components/named-list-test-utils.js.map +1 -0
  74. package/dist/components/recycle-roll.d.ts +23 -0
  75. package/dist/components/recycle-roll.d.ts.map +1 -0
  76. package/dist/components/recycle-roll.js +47 -0
  77. package/dist/components/recycle-roll.js.map +1 -0
  78. package/dist/components/stepper.d.ts +28 -0
  79. package/dist/components/stepper.d.ts.map +1 -0
  80. package/dist/components/stepper.js +33 -0
  81. package/dist/components/stepper.js.map +1 -0
  82. package/dist/components/subject-section.d.ts +2 -1
  83. package/dist/components/subject-section.d.ts.map +1 -1
  84. package/dist/components/subject-section.js +10 -5
  85. package/dist/components/subject-section.js.map +1 -1
  86. package/dist/components/tokens.css +31 -41
  87. package/dist/components/tokens.d.ts +3 -4
  88. package/dist/components/tokens.d.ts.map +1 -1
  89. package/dist/components/tokens.js +5 -13
  90. package/dist/components/tokens.js.map +1 -1
  91. package/dist/components/tool-picker-parts.d.ts +5 -1
  92. package/dist/components/tool-picker-parts.d.ts.map +1 -1
  93. package/dist/components/tool-picker-parts.js +8 -6
  94. package/dist/components/tool-picker-parts.js.map +1 -1
  95. package/dist/components/tool-picker.d.ts +77 -2
  96. package/dist/components/tool-picker.d.ts.map +1 -1
  97. package/dist/components/tool-picker.js +87 -29
  98. package/dist/components/tool-picker.js.map +1 -1
  99. package/dist/components/version-history-panel.d.ts +7 -1
  100. package/dist/components/version-history-panel.d.ts.map +1 -1
  101. package/dist/components/version-history-panel.js +2 -2
  102. package/dist/components/version-history-panel.js.map +1 -1
  103. package/dist/components/version-history-rows.d.ts +4 -2
  104. package/dist/components/version-history-rows.d.ts.map +1 -1
  105. package/dist/components/version-history-rows.js +14 -2
  106. package/dist/components/version-history-rows.js.map +1 -1
  107. package/dist/errors.d.ts +5 -0
  108. package/dist/errors.d.ts.map +1 -1
  109. package/dist/errors.js +7 -0
  110. package/dist/errors.js.map +1 -1
  111. package/dist/hooks/useApi.d.ts +524 -197
  112. package/dist/hooks/useApi.d.ts.map +1 -1
  113. package/dist/hooks/useCapabilities.d.ts +43 -10
  114. package/dist/hooks/useCapabilities.d.ts.map +1 -1
  115. package/dist/hooks/useCapabilities.js +39 -10
  116. package/dist/hooks/useCapabilities.js.map +1 -1
  117. package/dist/index.d.ts +25 -12
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +14 -6
  120. package/dist/index.js.map +1 -1
  121. package/dist/marketplace-install/env-var-fields.d.ts +17 -0
  122. package/dist/marketplace-install/env-var-fields.d.ts.map +1 -0
  123. package/dist/marketplace-install/env-var-fields.js +22 -0
  124. package/dist/marketplace-install/env-var-fields.js.map +1 -0
  125. package/dist/marketplace-install/index.d.ts +18 -0
  126. package/dist/marketplace-install/index.d.ts.map +1 -0
  127. package/dist/marketplace-install/index.js +8 -0
  128. package/dist/marketplace-install/index.js.map +1 -0
  129. package/dist/marketplace-install/install-env.d.ts +21 -0
  130. package/dist/marketplace-install/install-env.d.ts.map +1 -0
  131. package/dist/marketplace-install/install-env.js +22 -0
  132. package/dist/marketplace-install/install-env.js.map +1 -0
  133. package/dist/marketplace-install/install-mount.d.ts +42 -0
  134. package/dist/marketplace-install/install-mount.d.ts.map +1 -0
  135. package/dist/marketplace-install/install-mount.js +62 -0
  136. package/dist/marketplace-install/install-mount.js.map +1 -0
  137. package/dist/marketplace-install/install-report.d.ts +14 -0
  138. package/dist/marketplace-install/install-report.d.ts.map +1 -0
  139. package/dist/marketplace-install/install-report.js +19 -0
  140. package/dist/marketplace-install/install-report.js.map +1 -0
  141. package/dist/marketplace-install/install-shell.d.ts +34 -0
  142. package/dist/marketplace-install/install-shell.d.ts.map +1 -0
  143. package/dist/marketplace-install/install-shell.js +32 -0
  144. package/dist/marketplace-install/install-shell.js.map +1 -0
  145. package/dist/marketplace-install/mount-install.d.ts +41 -0
  146. package/dist/marketplace-install/mount-install.d.ts.map +1 -0
  147. package/dist/marketplace-install/mount-install.js +90 -0
  148. package/dist/marketplace-install/mount-install.js.map +1 -0
  149. package/dist/marketplace-install/plugin-detail.d.ts +17 -0
  150. package/dist/marketplace-install/plugin-detail.d.ts.map +1 -0
  151. package/dist/marketplace-install/plugin-detail.js +41 -0
  152. package/dist/marketplace-install/plugin-detail.js.map +1 -0
  153. package/dist/marketplace-install/plugin-install.d.ts +27 -0
  154. package/dist/marketplace-install/plugin-install.d.ts.map +1 -0
  155. package/dist/marketplace-install/plugin-install.js +89 -0
  156. package/dist/marketplace-install/plugin-install.js.map +1 -0
  157. package/dist/marketplace-install/route-items.d.ts +14 -0
  158. package/dist/marketplace-install/route-items.d.ts.map +1 -0
  159. package/dist/marketplace-install/route-items.js +11 -0
  160. package/dist/marketplace-install/route-items.js.map +1 -0
  161. package/dist/marketplace-install/use-debounced-value.d.ts +6 -0
  162. package/dist/marketplace-install/use-debounced-value.d.ts.map +1 -0
  163. package/dist/marketplace-install/use-debounced-value.js +18 -0
  164. package/dist/marketplace-install/use-debounced-value.js.map +1 -0
  165. package/dist/marketplace-install/use-install-action.d.ts +26 -0
  166. package/dist/marketplace-install/use-install-action.d.ts.map +1 -0
  167. package/dist/marketplace-install/use-install-action.js +35 -0
  168. package/dist/marketplace-install/use-install-action.js.map +1 -0
  169. package/dist/marketplace-install/use-install-preview.d.ts +33 -0
  170. package/dist/marketplace-install/use-install-preview.d.ts.map +1 -0
  171. package/dist/marketplace-install/use-install-preview.js +44 -0
  172. package/dist/marketplace-install/use-install-preview.js.map +1 -0
  173. package/dist/marketplace-install/use-mount-install.d.ts +80 -0
  174. package/dist/marketplace-install/use-mount-install.d.ts.map +1 -0
  175. package/dist/marketplace-install/use-mount-install.js +75 -0
  176. package/dist/marketplace-install/use-mount-install.js.map +1 -0
  177. package/dist/navigation/index.d.ts +1 -1
  178. package/dist/navigation/index.d.ts.map +1 -1
  179. package/dist/navigation/index.js.map +1 -1
  180. package/dist/navigation/types.d.ts +23 -7
  181. package/dist/navigation/types.d.ts.map +1 -1
  182. package/dist/plugin/registry.d.ts +0 -8
  183. package/dist/plugin/registry.d.ts.map +1 -1
  184. package/dist/plugin/registry.js +25 -1
  185. package/dist/plugin/registry.js.map +1 -1
  186. package/dist/plugin/types.d.ts +36 -12
  187. package/dist/plugin/types.d.ts.map +1 -1
  188. package/dist/plugin/version.d.ts +6 -4
  189. package/dist/plugin/version.d.ts.map +1 -1
  190. package/dist/plugin/version.js +6 -4
  191. package/dist/plugin/version.js.map +1 -1
  192. package/dist/query-keys.d.ts +45 -4
  193. package/dist/query-keys.d.ts.map +1 -1
  194. package/dist/query-keys.js +52 -4
  195. package/dist/query-keys.js.map +1 -1
  196. package/dist/schema-form/json-schema-meta.d.ts +3 -0
  197. package/dist/schema-form/json-schema-meta.d.ts.map +1 -0
  198. package/dist/schema-form/json-schema-meta.js +3 -0
  199. package/dist/schema-form/json-schema-meta.js.map +1 -0
  200. package/dist/testing.d.ts +2 -0
  201. package/dist/testing.d.ts.map +1 -1
  202. package/dist/testing.js +2 -0
  203. package/dist/testing.js.map +1 -1
  204. package/dist/token-rules.d.ts +26 -0
  205. package/dist/token-rules.d.ts.map +1 -0
  206. package/dist/token-rules.js +64 -0
  207. package/dist/token-rules.js.map +1 -0
  208. package/package.json +2 -2
  209. package/src/components/action-menu.tsx +160 -0
  210. package/src/components/agent-picker.tsx +53 -0
  211. package/src/components/channel-picker.tsx +68 -0
  212. package/src/components/components.css +226 -8
  213. package/src/components/confirm-dialog.tsx +4 -1
  214. package/src/components/execution-key-picker.tsx +252 -36
  215. package/src/components/extension-combo-builder.tsx +61 -29
  216. package/src/components/extension-combo-parts.tsx +28 -38
  217. package/src/components/extension-config-editor.tsx +307 -0
  218. package/src/components/extension-grouping.ts +4 -73
  219. package/src/components/extension-picker.tsx +13 -13
  220. package/src/components/fleet-report.tsx +38 -4
  221. package/src/components/holder-kinds.ts +60 -0
  222. package/src/components/holder-list.tsx +163 -0
  223. package/src/components/icons/index.ts +0 -2
  224. package/src/components/icons/nav-map.ts +0 -4
  225. package/src/components/icons/nav-marks.tsx +0 -15
  226. package/src/components/named-list-picker.tsx +182 -0
  227. package/src/components/named-list-test-utils.tsx +47 -0
  228. package/src/components/recycle-roll.tsx +120 -0
  229. package/src/components/stepper.tsx +111 -0
  230. package/src/components/subject-section.tsx +10 -5
  231. package/src/components/tokens.css +31 -41
  232. package/src/components/tokens.ts +5 -13
  233. package/src/components/tool-picker-parts.tsx +17 -6
  234. package/src/components/tool-picker.tsx +215 -41
  235. package/src/components/version-history-panel.tsx +8 -0
  236. package/src/components/version-history-rows.tsx +14 -2
  237. package/src/errors.ts +10 -0
  238. package/src/hooks/useCapabilities.ts +59 -10
  239. package/src/index.ts +54 -14
  240. package/src/marketplace-install/env-var-fields.tsx +59 -0
  241. package/src/marketplace-install/index.ts +17 -0
  242. package/src/marketplace-install/install-env.ts +39 -0
  243. package/src/marketplace-install/install-mount.ts +96 -0
  244. package/src/marketplace-install/install-report.tsx +54 -0
  245. package/src/marketplace-install/install-shell.tsx +99 -0
  246. package/src/marketplace-install/mount-install.tsx +290 -0
  247. package/src/marketplace-install/plugin-detail.ts +60 -0
  248. package/src/marketplace-install/plugin-install.tsx +221 -0
  249. package/src/marketplace-install/route-items.ts +20 -0
  250. package/src/marketplace-install/use-debounced-value.ts +18 -0
  251. package/src/marketplace-install/use-install-action.ts +60 -0
  252. package/src/marketplace-install/use-install-preview.ts +74 -0
  253. package/src/marketplace-install/use-mount-install.ts +116 -0
  254. package/src/navigation/index.ts +1 -0
  255. package/src/navigation/types.ts +27 -7
  256. package/src/plugin/registry.ts +19 -1
  257. package/src/plugin/types.ts +40 -12
  258. package/src/plugin/version.ts +6 -4
  259. package/src/query-keys.ts +71 -4
  260. package/src/schema-form/json-schema-meta.ts +2 -0
  261. package/src/testing.ts +2 -0
  262. package/src/token-rules.ts +66 -0
@@ -4,6 +4,7 @@
4
4
  * state and composes these; the option-label and grouping helpers live here too.
5
5
  */
6
6
  import type { ReactNode } from 'react';
7
+ import { type SelectOption } from './select';
7
8
  /** The shared informational note every badge surface carries: declared, never enforced. */
8
9
  export declare const BADGES_NOTE = "Declared capability labels \u2014 informational only. They describe what the tool touches; the server never enforces them.";
9
10
  export declare const ALL_TAGS = "__all_tags__";
@@ -17,10 +18,13 @@ interface ToolSelectProps {
17
18
  readonly disabled: boolean | undefined;
18
19
  readonly displayNames: Readonly<Record<string, string>> | undefined;
19
20
  readonly agentToolNames: ReadonlySet<string> | undefined;
21
+ /** An option drawn ahead of the list's own (a stored value the list does not carry). */
22
+ readonly leading: SelectOption | undefined;
23
+ readonly ariaDescribedBy: string | undefined;
20
24
  }
21
25
  /** The tool select: grouped by tag when `tagsByTool` is present, else a flat list.
22
26
  * Either branch is a `Select`, which claims the enclosing `Field`'s control id. */
23
- export declare function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder, ariaLabel, disabled, displayNames, agentToolNames, }: ToolSelectProps): ReactNode;
27
+ export declare function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder, ariaLabel, disabled, displayNames, agentToolNames, leading, ariaDescribedBy, }: ToolSelectProps): ReactNode;
24
28
  /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
25
29
  export declare function TagFilterField({ allTags, tagFilter, onTagFilterChange, disabled, }: {
26
30
  readonly allTags: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker-parts.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker-parts.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,2FAA2F;AAC3F,eAAO,MAAM,WAAW,+HACiG,CAAC;AAO1H,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAkDvC,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1D;AAED;oFACoF;AACpF,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAc,GACf,EAAE,eAAe,GAAG,SAAS,CA6B7B;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC,GAAG,SAAS,CAcZ;AAED;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,SAAS,CAmBZ"}
1
+ {"version":3,"file":"tool-picker-parts.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker-parts.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGvE,2FAA2F;AAC3F,eAAO,MAAM,WAAW,+HACiG,CAAC;AAO1H,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAkDvC,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACzD,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;oFACoF;AACpF,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,GAChB,EAAE,eAAe,GAAG,SAAS,CAmC7B;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC,GAAG,SAAS,CAcZ;AAED;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,SAAS,CAmBZ"}
@@ -52,10 +52,15 @@ function buildGroups(names, tagsByTool, displayNames, agentToolNames) {
52
52
  }
53
53
  /** The tool select: grouped by tag when `tagsByTool` is present, else a flat list.
54
54
  * Either branch is a `Select`, which claims the enclosing `Field`'s control id. */
55
- export function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder, ariaLabel, disabled, displayNames, agentToolNames, }) {
55
+ export function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder, ariaLabel, disabled, displayNames, agentToolNames, leading, ariaDescribedBy, }) {
56
56
  if (tagsByTool !== undefined) {
57
- return (_jsx(Select, { groups: buildGroups(filtered, tagsByTool, displayNames, agentToolNames), value: value ?? '', onValueChange: onChange, placeholder: placeholder, "aria-label": ariaLabel, disabled: disabled }));
57
+ const groups = buildGroups(filtered, tagsByTool, displayNames, agentToolNames);
58
+ return (_jsx(Select, { groups: leading === undefined ? groups : [{ label: leading.label, options: [leading] }, ...groups], value: value ?? '', onValueChange: onChange, placeholder: placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, disabled: disabled }));
58
59
  }
60
+ const options = filtered.map((name) => ({
61
+ value: name,
62
+ label: optionLabel(name, displayNames, agentToolNames),
63
+ }));
59
64
  return (_jsx(Select
60
65
  // Keep Radix controlled even when the caller's value is null: `''` matches no
61
66
  // item (placeholder still shows) and avoids the uncontrolled→controlled warning
@@ -64,10 +69,7 @@ export function ToolSelect({ tagsByTool, filtered, value, onChange, placeholder,
64
69
  // Keep Radix controlled even when the caller's value is null: `''` matches no
65
70
  // item (placeholder still shows) and avoids the uncontrolled→controlled warning
66
71
  // a subsequent selection would otherwise trigger.
67
- options: filtered.map((name) => ({
68
- value: name,
69
- label: optionLabel(name, displayNames, agentToolNames),
70
- })), value: value ?? '', onValueChange: onChange, placeholder: placeholder, "aria-label": ariaLabel, disabled: disabled }));
72
+ options: leading === undefined ? options : [leading, ...options], value: value ?? '', onValueChange: onChange, placeholder: placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, disabled: disabled }));
71
73
  }
72
74
  /** The tag filter: an "All tags" sentinel plus one option per distinct tag. */
73
75
  export function TagFilterField({ allTags, tagFilter, onTagFilterChange, disabled, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker-parts.js","sourceRoot":"","sources":["../../src/components/tool-picker-parts.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-picker-parts.js","sourceRoot":"","sources":["../../src/components/tool-picker-parts.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,87 @@
1
+ /**
2
+ * `ToolPicker` — a controlled single-select over the tool names a host offers, built
3
+ * on the DS `Select` so features share one picker instead of each re-implementing
4
+ * a listbox (the same reason `SchemaForm` lives in the SDK). It is
5
+ * PRESENTATIONAL: the host owns the tool list read and hands it in as `query`, and
6
+ * owns the selected value; this component fetches nothing.
7
+ *
8
+ * The picker owns its `Field` (with `label`) and draws the read's states in it: pending
9
+ * (a disabled `Select` reading "Loading tools…"), error (`ErrorState` with Retry, or the
10
+ * host's `errorNote` line where the same failure is drawn with Retry elsewhere), refused
11
+ * (a 403 with `forbiddenNote` set), and loaded with nothing to offer (the host's
12
+ * `emptyNote`, then its `emptyAction`). The host's `error` shows, and the `Field` claims
13
+ * its control id, exactly while a `Select` renders.
14
+ *
15
+ * Optional extensions, each inert unless supplied:
16
+ * - `excludeNames` removes names from the options (e.g. a preset cannot be
17
+ * another preset's base, so the preset create flow excludes existing preset
18
+ * names). The server stays the authority — a slipped-through name is rejected
19
+ * loudly there — this is only a UI convenience.
20
+ * - `unlistedLabel` flags a stored value the loaded list does not carry: it is the
21
+ * first option, labelled `<value> (<unlistedLabel>)`, with a warning line under the
22
+ * control. It never blocks: the server judges the save.
23
+ * - `tagsByTool` (from GET /api/tools/tags) turns on tag GROUPING + a tag FILTER:
24
+ * the options are grouped under their tag and a filter control narrows them to
25
+ * a chosen tag.
26
+ * - `agentToolNames` suffixes the LABEL of any option whose name is an agent run
27
+ * tool with " (agent)" (in grouped and flat renderings alike) — a purely visual
28
+ * honesty cue; the value stays the bare name and no option is excluded, since an
29
+ * agent run tool is a legal preset base for an authored agent.
30
+ * - `displayNames` (from the tool-meta overlay) overlays a human name onto the
31
+ * LABEL: a mapped option reads `Display Name (raw_name)`, an unmapped name (or a
32
+ * mapping equal to the raw name) reads the bare raw name. The value stays the raw
33
+ * name and grouping/filtering/exclusion key off raw names alone, so a display
34
+ * name is purely cosmetic.
35
+ * - `badgesByTool` (native ∪ overlay, from the tool-meta merge) surfaces the
36
+ * SELECTED tool's DECLARED capability badges as read-only chips beneath the
37
+ * select. Badges are INFORMATIONAL — the tooltip says so — never a gate, so they
38
+ * change nothing about which options select or how they group.
39
+ *
40
+ * SAFETY: a tool name, a tag, a display name, AND a badge are server-supplied, so
41
+ * every one renders as TEXT (React escapes it) — never an HTML sink. Pinned by a test.
42
+ */
43
+ import { type ReactNode } from 'react';
1
44
  export { BADGES_NOTE } from './tool-picker-parts';
45
+ /**
46
+ * The subset of a tool list read this picker reads: `data` is the names the host
47
+ * offers. A caller's TanStack `UseQueryResult<readonly string[]>` satisfies it
48
+ * structurally, so the SDK names no query library.
49
+ */
50
+ export interface ToolListQuery {
51
+ readonly data: readonly string[] | undefined;
52
+ readonly isPending: boolean;
53
+ readonly isError: boolean;
54
+ readonly isSuccess: boolean;
55
+ readonly error: unknown;
56
+ readonly refetch: () => void;
57
+ }
2
58
  export interface ToolPickerProps {
3
- readonly toolNames: readonly string[];
59
+ /** The tool list read the host owns, `data` projected to the names it offers. */
60
+ readonly query: ToolListQuery;
4
61
  readonly value: string | null;
5
62
  readonly onChange: (toolName: string) => void;
63
+ /** The empty state's sentence, drawn when the loaded list offers no option (after `excludeNames`). */
64
+ readonly emptyNote: string;
65
+ /** Drawn after `emptyNote` in the empty state (e.g. a link to where tools come from). */
66
+ readonly emptyAction?: ReactNode;
67
+ /**
68
+ * Drawn in place of the `ErrorState` and the control when the read fails, with no
69
+ * Retry: for a host that already draws the same read's failure with Retry elsewhere.
70
+ */
71
+ readonly errorNote?: string;
72
+ /** Drawn on a 403 of the read in place of the error state (the no-grant state). */
73
+ readonly forbiddenNote?: string;
74
+ /** Flags a stored value the loaded list does not carry (see the module docs). */
75
+ readonly unlistedLabel?: string;
6
76
  readonly disabled?: boolean;
77
+ /** Shown once the list is loaded; a pending read reads "Loading tools…". */
7
78
  readonly placeholder?: string;
8
79
  readonly idPrefix?: string;
9
80
  readonly label?: string;
81
+ /** Handed to the picker's `Field` (with `label`). */
82
+ readonly description?: string;
83
+ /** The host's field error, shown under the control while a `Select` renders (with `label`). */
84
+ readonly error?: string;
10
85
  /**
11
86
  * Accessible name for the tool listbox when `label` renders none and no
12
87
  * enclosing `Field` names it. `label` wins where both are given: it names the
@@ -34,5 +109,5 @@ export interface ToolPickerProps {
34
109
  */
35
110
  readonly badgesByTool?: Readonly<Record<string, readonly string[]>>;
36
111
  }
37
- export declare function ToolPicker({ toolNames, value, onChange, disabled, placeholder, idPrefix, label, 'aria-label': ariaLabel, excludeNames, tagsByTool, agentToolNames, displayNames, badgesByTool, }: ToolPickerProps): import("react").JSX.Element;
112
+ export declare function ToolPicker({ query, value, onChange, emptyNote, emptyAction, errorNote, forbiddenNote, unlistedLabel, disabled, placeholder, idPrefix, label, description, error, 'aria-label': ariaLabel, excludeNames, tagsByTool, agentToolNames, displayNames, badgesByTool, }: ToolPickerProps): import("react").JSX.Element;
38
113
  //# sourceMappingURL=tool-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOlD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACrE;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAA8B,EAC9B,QAAwB,EACxB,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,GACb,EAAE,eAAe,+BAsDjB"}
1
+ {"version":3,"file":"tool-picker.d.ts","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AASxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,sGAAsG;IACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACrE;AA6FD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAA8B,EAC9B,QAAwB,EACxB,KAAK,EACL,WAAW,EACX,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,GACb,EAAE,eAAe,+BAuFjB"}
@@ -1,17 +1,26 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
- * `ToolPicker` — a controlled single-select over the available tool names, built
3
+ * `ToolPicker` — a controlled single-select over the tool names a host offers, built
4
4
  * on the DS `Select` so features share one picker instead of each re-implementing
5
5
  * a listbox (the same reason `SchemaForm` lives in the SDK). It is
6
- * PRESENTATIONAL: the caller fetches the tool names (GET /api/tools) and owns the
7
- * selected value; this component fetches nothing.
6
+ * PRESENTATIONAL: the host owns the tool list read and hands it in as `query`, and
7
+ * owns the selected value; this component fetches nothing.
8
8
  *
9
- * Four optional extensions, each inert unless supplied; the preset create flow
10
- * passes all four and the multi-tool picker every one but `agentToolNames`:
9
+ * The picker owns its `Field` (with `label`) and draws the read's states in it: pending
10
+ * (a disabled `Select` reading "Loading tools…"), error (`ErrorState` with Retry, or the
11
+ * host's `errorNote` line where the same failure is drawn with Retry elsewhere), refused
12
+ * (a 403 with `forbiddenNote` set), and loaded with nothing to offer (the host's
13
+ * `emptyNote`, then its `emptyAction`). The host's `error` shows, and the `Field` claims
14
+ * its control id, exactly while a `Select` renders.
15
+ *
16
+ * Optional extensions, each inert unless supplied:
11
17
  * - `excludeNames` removes names from the options (e.g. a preset cannot be
12
18
  * another preset's base, so the preset create flow excludes existing preset
13
19
  * names). The server stays the authority — a slipped-through name is rejected
14
20
  * loudly there — this is only a UI convenience.
21
+ * - `unlistedLabel` flags a stored value the loaded list does not carry: it is the
22
+ * first option, labelled `<value> (<unlistedLabel>)`, with a warning line under the
23
+ * control. It never blocks: the server judges the save.
15
24
  * - `tagsByTool` (from GET /api/tools/tags) turns on tag GROUPING + a tag FILTER:
16
25
  * the options are grouped under their tag and a filter control narrows them to
17
26
  * a chosen tag.
@@ -32,32 +41,81 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
41
  * SAFETY: a tool name, a tag, a display name, AND a badge are server-supplied, so
33
42
  * every one renders as TEXT (React escapes it) — never an HTML sink. Pinned by a test.
34
43
  */
35
- import { useState } from 'react';
44
+ import { useId, useState } from 'react';
45
+ import { errorMessage, isForbiddenError } from '../errors';
46
+ import { Badge } from './badge';
36
47
  import { Field } from './field';
48
+ import { ErrorState } from './primitives';
37
49
  import { ALL_TAGS, SelectedToolBadges, TagFilterField, ToolSelect } from './tool-picker-parts';
38
50
  export { BADGES_NOTE } from './tool-picker-parts';
39
- /** The trigger copy when the picker has no option to offer at all (after exclusions).
40
- * Shown only once the list has settled — a still-loading picker keeps its own
41
- * placeholder — so it never misreads a pending fetch as "nothing to pick". */
42
- const NO_TOOLS_AVAILABLE = 'No tools available';
43
- export function ToolPicker({ toolNames, value, onChange, disabled, placeholder = 'Select a tool…', idPrefix = 'tool-picker', label, 'aria-label': ariaLabel, excludeNames, tagsByTool, agentToolNames, displayNames, badgesByTool, }) {
44
- const [tagFilter, setTagFilter] = useState(ALL_TAGS);
51
+ const MUTED_LINE = { margin: 0, color: 'var(--tai-color-text-muted)' };
52
+ function phaseOf(refused, failed, unlisted, empty) {
53
+ if (refused)
54
+ return 'refused';
55
+ if (failed)
56
+ return 'error';
57
+ if (unlisted)
58
+ return 'unlisted';
59
+ return empty ? 'empty' : 'select';
60
+ }
61
+ function pickerState(query, value, excludeNames, forbiddenNote, unlistedLabel) {
45
62
  const excluded = new Set(excludeNames ?? []);
46
- const available = toolNames.filter((name) => !excluded.has(name));
47
- // A settled, empty option set (not a load in progress) is a "nothing to pick"
48
- // state: the trigger reads the empty copy and cannot open onto an empty popup. The
49
- // caller's `disabled` still marks a loading picker, which keeps its own placeholder.
50
- const noneAvailable = available.length === 0;
51
- const pickerDisabled = disabled === true || noneAvailable;
52
- const pickerPlaceholder = noneAvailable && disabled !== true ? NO_TOOLS_AVAILABLE : placeholder;
53
- // Distinct tags across the available tools, sorted, feeding the filter control.
54
- const allTags = tagsByTool === undefined
55
- ? []
56
- : [...new Set(available.flatMap((name) => tagsByTool[name] ?? []))].sort((a, b) => a.localeCompare(b));
57
- const filtered = tagsByTool !== undefined && tagFilter !== ALL_TAGS
58
- ? available.filter((name) => (tagsByTool[name] ?? []).includes(tagFilter))
59
- : available;
60
- const toolSelect = (_jsx(ToolSelect, { tagsByTool: tagsByTool, filtered: filtered, value: value, onChange: onChange, placeholder: pickerPlaceholder, ariaLabel: ariaLabel, disabled: pickerDisabled, displayNames: displayNames, agentToolNames: agentToolNames }));
61
- return (_jsxs("div", { "data-testid": idPrefix, className: "tai-stack tai-stack-2", children: [tagsByTool !== undefined && allTags.length > 0 ? (_jsx(TagFilterField, { allTags: allTags, tagFilter: tagFilter, onTagFilterChange: setTagFilter, disabled: disabled })) : null, label !== undefined ? _jsx(Field, { label: label, children: toolSelect }) : toolSelect, _jsx(SelectedToolBadges, { value: value, badgesByTool: badgesByTool, idPrefix: idPrefix })] }));
63
+ const available = (query.data ?? []).filter((name) => !excluded.has(name));
64
+ const stored = value !== null && value !== '' ? value : null;
65
+ const loaded = query.isSuccess && !query.isError;
66
+ const unlisted = unlistedLabel !== undefined && loaded && stored !== null && !available.includes(stored);
67
+ const empty = loaded && available.length === 0;
68
+ const refused = forbiddenNote !== undefined && query.isError && isForbiddenError(query.error);
69
+ const phase = phaseOf(refused, query.isError, unlisted, empty);
70
+ return { phase, available, stored, pending: !loaded && !query.isError, unlisted, empty };
71
+ }
72
+ /** The distinct tags across `names`, sorted, feeding the filter control. */
73
+ function tagsAcross(names, tagsByTool) {
74
+ return [...new Set(names.flatMap((name) => tagsByTool[name] ?? []))].sort((a, b) => a.localeCompare(b));
75
+ }
76
+ /** The tag filter's choices, and the available names the chosen tag keeps. */
77
+ function tagView(state, tagsByTool, tagFilter) {
78
+ if (tagsByTool === undefined)
79
+ return { allTags: [], filtered: state.available };
80
+ const listed = !state.pending && state.phase !== 'error' && state.phase !== 'refused';
81
+ return {
82
+ allTags: listed ? tagsAcross(state.available, tagsByTool) : [],
83
+ filtered: tagFilter === ALL_TAGS
84
+ ? state.available
85
+ : state.available.filter((name) => (tagsByTool[name] ?? []).includes(tagFilter)),
86
+ };
87
+ }
88
+ function MutedLine({ text }) {
89
+ return (_jsx("p", { role: "status", style: MUTED_LINE, children: text }));
90
+ }
91
+ function ReadError({ query }) {
92
+ return (_jsx(ErrorState, { message: errorMessage(query.error), onRetry: () => {
93
+ query.refetch();
94
+ } }));
95
+ }
96
+ export function ToolPicker({ query, value, onChange, emptyNote, emptyAction, errorNote, forbiddenNote, unlistedLabel, disabled, placeholder = 'Select a tool…', idPrefix = 'tool-picker', label, description, error, 'aria-label': ariaLabel, excludeNames, tagsByTool, agentToolNames, displayNames, badgesByTool, }) {
97
+ const [tagFilter, setTagFilter] = useState(ALL_TAGS);
98
+ const unlistedId = useId();
99
+ const state = pickerState(query, value, excludeNames, forbiddenNote, unlistedLabel);
100
+ const { phase, stored } = state;
101
+ const { allTags, filtered } = tagView(state, tagsByTool, tagFilter);
102
+ const select = (options, leading) => (_jsx(ToolSelect, { tagsByTool: tagsByTool, filtered: options, value: value, onChange: onChange, placeholder: state.pending ? 'Loading tools…' : placeholder, ariaLabel: ariaLabel, ariaDescribedBy: state.unlisted ? unlistedId : undefined, disabled: disabled === true || state.pending, displayNames: displayNames, agentToolNames: agentToolNames, leading: leading }));
103
+ const emptyState = (_jsxs(_Fragment, { children: [_jsx(MutedLine, { text: emptyNote }), emptyAction] }));
104
+ // Only a rendered `Select` claims the field's control id; with none the host's
105
+ // error is hidden and the note in its place says why the field is empty.
106
+ const selectRenders = phase === 'unlisted' || phase === 'select' || (phase === 'refused' && stored !== null);
107
+ const contentByPhase = {
108
+ // A stored value stays as the sole, unflagged option: without the list the form claims nothing about it.
109
+ refused: () => (_jsxs(_Fragment, { children: [stored !== null ? select([], { value: stored, label: stored }) : null, _jsx(MutedLine, { text: forbiddenNote ?? '' })] })),
110
+ error: () => errorNote !== undefined ? _jsx(MutedLine, { text: errorNote }) : _jsx(ReadError, { query: query }),
111
+ unlisted: () => (_jsxs(_Fragment, { children: [select(filtered, {
112
+ value: stored ?? '',
113
+ label: `${stored ?? ''} (${unlistedLabel ?? ''})`,
114
+ }), state.empty ? emptyState : null, _jsxs("p", { id: unlistedId, className: "tai-field-hint", style: { margin: 0 }, children: [_jsx(Badge, { variant: "warning", children: unlistedLabel }), " ", stored, " is ", unlistedLabel, ". Pick another, or saving is refused."] })] })),
115
+ empty: () => emptyState,
116
+ select: () => select(filtered, undefined),
117
+ };
118
+ const content = contentByPhase[phase]();
119
+ return (_jsxs("div", { "data-testid": idPrefix, className: "tai-stack tai-stack-2", children: [allTags.length > 0 ? (_jsx(TagFilterField, { allTags: allTags, tagFilter: tagFilter, onTagFilterChange: setTagFilter, disabled: disabled })) : null, label !== undefined ? (_jsx(Field, { label: label, description: description, error: selectRenders ? error : undefined, group: !selectRenders, children: content })) : (content), _jsx(SelectedToolBadges, { value: value, badgesByTool: badgesByTool, idPrefix: idPrefix })] }));
62
120
  }
63
121
  //# sourceMappingURL=tool-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"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"}
@@ -66,6 +66,12 @@ export interface VersionHistoryPanelProps {
66
66
  * state. Omitted ⇒ no edit affordance (tags stay read-only).
67
67
  */
68
68
  readonly onEditTags?: (version: number, tags: string[]) => Promise<void>;
69
+ /**
70
+ * A version to point the reader at (a deep link names it): its row is marked
71
+ * `aria-current="true"` on the accent tint and scrolled into view. Omitted ⇒ no
72
+ * row is marked.
73
+ */
74
+ readonly highlightVersion?: number;
69
75
  }
70
- export declare function VersionHistoryPanel({ versions, onRollback, onView, rollbackPending, rollbackError, readOnly, rollbackConfirmDescription, onEditTags, }: VersionHistoryPanelProps): ReactNode;
76
+ export declare function VersionHistoryPanel({ versions, onRollback, onView, rollbackPending, rollbackError, readOnly, rollbackConfirmDescription, onEditTags, highlightVersion, }: VersionHistoryPanelProps): ReactNode;
71
77
  //# sourceMappingURL=version-history-panel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-history-panel.d.ts","sourceRoot":"","sources":["../../src/components/version-history-panel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAgBpE,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AA6ED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,UAAU,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,QAAgB,EAChB,0BAA0B,EAC1B,UAAU,GACX,EAAE,wBAAwB,GAAG,SAAS,CAoItC"}
1
+ {"version":3,"file":"version-history-panel.d.ts","sourceRoot":"","sources":["../../src/components/version-history-panel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAgBpE,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AA6ED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,UAAU,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,QAAgB,EAChB,0BAA0B,EAC1B,UAAU,EACV,gBAAgB,GACjB,EAAE,wBAAwB,GAAG,SAAS,CAqItC"}
@@ -66,7 +66,7 @@ function EditTagsDialog({ version, initialTags, onSave, onClose, }) {
66
66
  onClose();
67
67
  }, disabled: pending, children: "Cancel" }), _jsxs(Button, { variant: "primary", onClick: submit, disabled: pending, children: [pending ? _jsx(Spinner, { label: "Saving tags" }) : null, "Save tags"] })] })] }));
68
68
  }
69
- export function VersionHistoryPanel({ versions, onRollback, onView, rollbackPending, rollbackError, readOnly = false, rollbackConfirmDescription, onEditTags, }) {
69
+ export function VersionHistoryPanel({ versions, onRollback, onView, rollbackPending, rollbackError, readOnly = false, rollbackConfirmDescription, onEditTags, highlightVersion, }) {
70
70
  const [selected, setSelected] = useState(() => initialSelection(versions));
71
71
  const [confirming, setConfirming] = useState(null);
72
72
  // The armed Compare source (first click), and the open compare pair (second click).
@@ -112,7 +112,7 @@ export function VersionHistoryPanel({ versions, onRollback, onView, rollbackPend
112
112
  const editingEntry = versions.find((entry) => entry.version === editingTags);
113
113
  const fromBody = versions.find((entry) => entry.version === comparePair?.from)?.body;
114
114
  const toBody = versions.find((entry) => entry.version === comparePair?.to)?.body;
115
- return (_jsxs("div", { className: "tai-stack", children: [_jsx(Card, { children: _jsx(ScrollRegion, { label: "Version history", children: _jsxs(Table, { children: [_jsx(THead, { children: _jsxs(TR, { children: [_jsx(TH, { numeric: true, children: "Version" }), _jsx(TH, { children: "Created" }), _jsx(TH, { children: "Status" }), showTags ? _jsx(TH, { children: "Tags" }) : null, _jsx(TH, { children: "Actions" })] }) }), _jsx(TBody, { children: versions.map((entry) => (_jsx(VersionRow, { entry: entry, showTags: showTags, canCompare: canCompare, compareArmed: compareFrom === entry.version, readOnly: readOnly, canEditTags: onEditTags !== undefined, onView: view, onCompare: compare, onEditTags: setEditingTags, onRollback: setConfirming }, entry.version))) })] }) }) }), compareFrom !== null && comparePair === null ? (_jsxs("p", { role: "status", className: "tai-muted", children: ["Comparing from version ", compareFrom, " \u2014 pick another version, or Compare again to cancel."] })) : null, selectedEntry !== undefined ? _jsx(SelectedVersionBody, { entry: selectedEntry }) : null, comparePair !== null ? (_jsx(CompareDialog, { from: comparePair.from, to: comparePair.to, fromBody: fromBody, toBody: toBody, onClose: closeCompare })) : null, editingEntry !== undefined && onEditTags !== undefined ? (_jsx(EditTagsDialog, { version: editingEntry.version, initialTags: editingEntry.tags ?? [], onSave: onEditTags, onClose: () => {
115
+ return (_jsxs("div", { className: "tai-stack", children: [_jsx(Card, { children: _jsx(ScrollRegion, { label: "Version history", children: _jsxs(Table, { children: [_jsx(THead, { children: _jsxs(TR, { children: [_jsx(TH, { numeric: true, children: "Version" }), _jsx(TH, { children: "Created" }), _jsx(TH, { children: "Status" }), showTags ? _jsx(TH, { children: "Tags" }) : null, _jsx(TH, { children: "Actions" })] }) }), _jsx(TBody, { children: versions.map((entry) => (_jsx(VersionRow, { entry: entry, showTags: showTags, canCompare: canCompare, compareArmed: compareFrom === entry.version, readOnly: readOnly, canEditTags: onEditTags !== undefined, highlighted: entry.version === highlightVersion, onView: view, onCompare: compare, onEditTags: setEditingTags, onRollback: setConfirming }, entry.version))) })] }) }) }), compareFrom !== null && comparePair === null ? (_jsxs("p", { role: "status", className: "tai-muted", children: ["Comparing from version ", compareFrom, " \u2014 pick another version, or Compare again to cancel."] })) : null, selectedEntry !== undefined ? _jsx(SelectedVersionBody, { entry: selectedEntry }) : null, comparePair !== null ? (_jsx(CompareDialog, { from: comparePair.from, to: comparePair.to, fromBody: fromBody, toBody: toBody, onClose: closeCompare })) : null, editingEntry !== undefined && onEditTags !== undefined ? (_jsx(EditTagsDialog, { version: editingEntry.version, initialTags: editingEntry.tags ?? [], onSave: onEditTags, onClose: () => {
116
116
  setEditingTags(null);
117
117
  } })) : null, confirming !== null ? (_jsx(RollbackConfirmDialog, { version: confirming, rollbackPending: rollbackPending, rollbackError: rollbackError, extraDescription: rollbackConfirmDescription, onCancel: () => {
118
118
  setConfirming(null);
@@ -1 +1 @@
1
- {"version":3,"file":"version-history-panel.js","sourceRoot":"","sources":["../../src/components/version-history-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-history-panel.js","sourceRoot":"","sources":["../../src/components/version-history-panel.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * the two-version compare dialog (`CompareDialog`), and the rollback confirm
5
5
  * dialog (`RollbackConfirmDialog`). All generic and kind-agnostic.
6
6
  */
7
- import type { ReactNode } from 'react';
7
+ import { type ReactNode } from 'react';
8
8
  import type { VersionHistoryEntry } from './version-history-panel';
9
9
  interface VersionRowProps {
10
10
  readonly entry: VersionHistoryEntry;
@@ -15,6 +15,8 @@ interface VersionRowProps {
15
15
  readonly readOnly: boolean;
16
16
  /** An edit-tags affordance is available (the consumer supplied `onEditTags`). */
17
17
  readonly canEditTags: boolean;
18
+ /** The row a deep link points at: marked current on the accent tint, scrolled to. */
19
+ readonly highlighted: boolean;
18
20
  readonly onView: (version: number) => void;
19
21
  readonly onCompare: (version: number) => void;
20
22
  readonly onEditTags: (version: number) => void;
@@ -22,7 +24,7 @@ interface VersionRowProps {
22
24
  }
23
25
  /** One version's row: its number, timestamp, status mark, optional tags, and the
24
26
  * View / Compare / Edit tags / Roll back action cluster. */
25
- export declare function VersionRow({ entry, showTags, canCompare, compareArmed, readOnly, canEditTags, onView, onCompare, onEditTags, onRollback, }: VersionRowProps): ReactNode;
27
+ export declare function VersionRow({ entry, showTags, canCompare, compareArmed, readOnly, canEditTags, highlighted, onView, onCompare, onEditTags, onRollback, }: VersionRowProps): ReactNode;
26
28
  /** The selected version's opaque body, rendered through `JsonTree`. */
27
29
  export declare function SelectedVersionBody({ entry }: {
28
30
  readonly entry: VersionHistoryEntry;
@@ -1 +1 @@
1
- {"version":3,"file":"version-history-rows.d.ts","sourceRoot":"","sources":["../../src/components/version-history-rows.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;6DAC6D;AAC7D,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,eAAe,GAAG,SAAS,CAiF7B;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAAG,SAAS,CASjG;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,GAAG,SAAS,CAmBZ;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,GAAG,SAAS,CA6BZ"}
1
+ {"version":3,"file":"version-history-rows.d.ts","sourceRoot":"","sources":["../../src/components/version-history-rows.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAU1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;6DAC6D;AAC7D,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,eAAe,GAAG,SAAS,CA0F7B;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAAG,SAAS,CASjG;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,GAAG,SAAS,CAmBZ;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,GAAG,SAAS,CA6BZ"}
@@ -1,4 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The row and dialog pieces of `VersionHistoryPanel`: one version's table row and
4
+ * action cluster (`VersionRow`), the selected version's body (`SelectedVersionBody`),
5
+ * the two-version compare dialog (`CompareDialog`), and the rollback confirm
6
+ * dialog (`RollbackConfirmDialog`). All generic and kind-agnostic.
7
+ */
8
+ import { useEffect, useRef } from 'react';
2
9
  import { Dialog } from './dialog';
3
10
  import { CheckCircleIcon, PendingIcon } from './icons';
4
11
  import { JsonDiff } from './json-diff';
@@ -9,8 +16,13 @@ import { TD, TR } from './table';
9
16
  import { TagChips } from './tags';
10
17
  /** One version's row: its number, timestamp, status mark, optional tags, and the
11
18
  * View / Compare / Edit tags / Roll back action cluster. */
12
- export function VersionRow({ entry, showTags, canCompare, compareArmed, readOnly, canEditTags, onView, onCompare, onEditTags, onRollback, }) {
13
- return (_jsxs(TR, { "data-testid": `version-row-${String(entry.version)}`, children: [_jsx(TD, { className: "tai-table-id", numeric: true, children: entry.version }), _jsx(TD, { className: "tai-mono", children: entry.created_at }), _jsx(TD, { children: entry.is_current ? (_jsxs("span", { className: "tai-status tai-status-ok", children: [_jsx(CheckCircleIcon, {}), "Current"] })) : (_jsxs("span", { className: "tai-status tai-status-pending", children: [_jsx(PendingIcon, {}), "Historical"] })) }), showTags ? (_jsx(TD, { children: (entry.tags ?? []).length > 0 ? (_jsx(TagChips, { tags: entry.tags ?? [] })) : (_jsx("span", { className: "tai-muted", children: "\u2014" })) })) : null, _jsx(TD, { children: _jsxs("div", { className: "tai-row", children: [_jsx(Button, { "aria-label": `View version ${String(entry.version)}`, onClick: () => {
19
+ export function VersionRow({ entry, showTags, canCompare, compareArmed, readOnly, canEditTags, highlighted, onView, onCompare, onEditTags, onRollback, }) {
20
+ const rowRef = useRef(null);
21
+ useEffect(() => {
22
+ if (highlighted)
23
+ rowRef.current?.scrollIntoView({ block: 'nearest' });
24
+ }, [highlighted]);
25
+ return (_jsxs(TR, { ref: rowRef, "data-testid": `version-row-${String(entry.version)}`, "aria-current": highlighted ? 'true' : undefined, style: highlighted ? { background: 'var(--tai-color-accent-tint)' } : undefined, children: [_jsx(TD, { className: "tai-table-id", numeric: true, children: entry.version }), _jsx(TD, { className: "tai-mono", children: entry.created_at }), _jsx(TD, { children: entry.is_current ? (_jsxs("span", { className: "tai-status tai-status-ok", children: [_jsx(CheckCircleIcon, {}), "Current"] })) : (_jsxs("span", { className: "tai-status tai-status-pending", children: [_jsx(PendingIcon, {}), "Historical"] })) }), showTags ? (_jsx(TD, { children: (entry.tags ?? []).length > 0 ? (_jsx(TagChips, { tags: entry.tags ?? [] })) : (_jsx("span", { className: "tai-muted", children: "\u2014" })) })) : null, _jsx(TD, { children: _jsxs("div", { className: "tai-row", children: [_jsx(Button, { "aria-label": `View version ${String(entry.version)}`, onClick: () => {
14
26
  onView(entry.version);
15
27
  }, children: "View" }), canCompare ? (_jsx(Button
16
28
  // The name starts with the word the button is SHOWING, which is what
@@ -1 +1 @@
1
- {"version":3,"file":"version-history-rows.js","sourceRoot":"","sources":["../../src/components/version-history-rows.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-history-rows.js","sourceRoot":"","sources":["../../src/components/version-history-rows.tsx"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -6,4 +6,9 @@
6
6
  * show it, and the message is always shown, never blank.
7
7
  */
8
8
  export declare function errorMessage(error: unknown): string;
9
+ /**
10
+ * True when `error` is a refusal for want of a grant: an object whose `status` is
11
+ * `403`. Duck-typed, so it reads an `ApiError` and any error shaped like one.
12
+ */
13
+ export declare function isForbiddenError(error: unknown): boolean;
9
14
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAInD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIxD"}
package/dist/errors.js CHANGED
@@ -12,4 +12,11 @@ export function errorMessage(error) {
12
12
  return error;
13
13
  return 'An unexpected error occurred.';
14
14
  }
15
+ /**
16
+ * True when `error` is a refusal for want of a grant: an object whose `status` is
17
+ * `403`. Duck-typed, so it reads an `ApiError` and any error shaped like one.
18
+ */
19
+ export function isForbiddenError(error) {
20
+ return (typeof error === 'object' && error !== null && error.status === 403);
21
+ }
15
22
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,+BAA+B,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,+BAA+B,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAA8B,CAAC,MAAM,KAAK,GAAG,CAC9F,CAAC;AACJ,CAAC"}