@tai42/studio-sdk 17.1.5 → 18.1.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 (55) hide show
  1. package/dist/components/execution-key-picker.d.ts +37 -0
  2. package/dist/components/execution-key-picker.d.ts.map +1 -0
  3. package/dist/components/execution-key-picker.js +49 -0
  4. package/dist/components/execution-key-picker.js.map +1 -0
  5. package/dist/components/json-tree-nodes.d.ts.map +1 -1
  6. package/dist/components/json-tree-nodes.js +24 -9
  7. package/dist/components/json-tree-nodes.js.map +1 -1
  8. package/dist/components/overflow-measure.d.ts +11 -3
  9. package/dist/components/overflow-measure.d.ts.map +1 -1
  10. package/dist/components/overflow-measure.js +8 -5
  11. package/dist/components/overflow-measure.js.map +1 -1
  12. package/dist/components/scroll-region.d.ts +12 -2
  13. package/dist/components/scroll-region.d.ts.map +1 -1
  14. package/dist/components/scroll-region.js +7 -5
  15. package/dist/components/scroll-region.js.map +1 -1
  16. package/dist/components/subject-section.d.ts +78 -0
  17. package/dist/components/subject-section.d.ts.map +1 -0
  18. package/dist/components/subject-section.js +66 -0
  19. package/dist/components/subject-section.js.map +1 -0
  20. package/dist/components/tool-picker.d.ts.map +1 -1
  21. package/dist/components/tool-picker.js +11 -1
  22. package/dist/components/tool-picker.js.map +1 -1
  23. package/dist/hooks/useApi.d.ts +96 -45
  24. package/dist/hooks/useApi.d.ts.map +1 -1
  25. package/dist/index.d.ts +5 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/schema-form/context.d.ts +19 -0
  30. package/dist/schema-form/context.d.ts.map +1 -1
  31. package/dist/schema-form/context.js.map +1 -1
  32. package/dist/schema-form/field-model.d.ts +19 -0
  33. package/dist/schema-form/field-model.d.ts.map +1 -1
  34. package/dist/schema-form/string-annotations.d.ts.map +1 -1
  35. package/dist/schema-form/string-annotations.js +26 -0
  36. package/dist/schema-form/string-annotations.js.map +1 -1
  37. package/dist/schema-form/string-field.js +22 -6
  38. package/dist/schema-form/string-field.js.map +1 -1
  39. package/dist/testing.d.ts +9 -7
  40. package/dist/testing.d.ts.map +1 -1
  41. package/dist/testing.js +16 -13
  42. package/dist/testing.js.map +1 -1
  43. package/package.json +9 -9
  44. package/src/components/execution-key-picker.tsx +116 -0
  45. package/src/components/json-tree-nodes.tsx +36 -18
  46. package/src/components/overflow-measure.ts +16 -5
  47. package/src/components/scroll-region.tsx +16 -3
  48. package/src/components/subject-section.tsx +177 -0
  49. package/src/components/tool-picker.tsx +14 -2
  50. package/src/index.ts +11 -0
  51. package/src/schema-form/context.ts +20 -0
  52. package/src/schema-form/field-model.ts +20 -0
  53. package/src/schema-form/string-annotations.ts +32 -1
  54. package/src/schema-form/string-field.tsx +25 -6
  55. package/src/testing.ts +21 -13
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Picks the api key a fire / recurring run RUNS AS. Shared by every fire-path form
3
+ * (hooks, trigger links, schedules). Presentational and prop-driven — the host
4
+ * feature owns the api-key list query and hands it in, so this component (and the
5
+ * SDK) stay free of a data-fetching library, exactly as {@link ToolPicker} does.
6
+ *
7
+ * The server decides authorization; this only lists the pickable keys and renders
8
+ * the read's loading / empty / error states. The host form renders the server's
9
+ * refusal verbatim elsewhere.
10
+ */
11
+ import type { TokensPayload } from '@tai42/api-client';
12
+ import type { ReactNode } from 'react';
13
+ /**
14
+ * The subset of the api-key list query this picker reads. A caller's TanStack
15
+ * `UseQueryResult<TokensPayload>` satisfies it structurally, so the SDK names no
16
+ * query library.
17
+ */
18
+ export interface ExecutionKeyQuery {
19
+ readonly data: TokensPayload | undefined;
20
+ readonly isPending: boolean;
21
+ readonly isError: boolean;
22
+ readonly isSuccess: boolean;
23
+ readonly error: unknown;
24
+ readonly refetch: () => void;
25
+ }
26
+ /** Resolved, and holding no key at all. */
27
+ export declare function isExecutionKeyListEmpty(query: ExecutionKeyQuery): boolean;
28
+ export interface ExecutionKeyPickerProps {
29
+ /** The api-key list read the host feature owns and hands in. */
30
+ readonly query: ExecutionKeyQuery;
31
+ readonly value: string;
32
+ readonly onValueChange: (value: string) => void;
33
+ /** The host form's required-field error, shown under the control. */
34
+ readonly error?: string | undefined;
35
+ }
36
+ export declare function ExecutionKeyPicker({ query, value, onValueChange, error, }: ExecutionKeyPickerProps): ReactNode;
37
+ //# sourceMappingURL=execution-key-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-key-picker.d.ts","sourceRoot":"","sources":["../../src/components/execution-key-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,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,2CAA2C;AAC3C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAEzE;AA4BD,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE,uBAAuB,GAAG,SAAS,CAsCrC"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { errorMessage } from '../errors';
3
+ import { Field } from './field';
4
+ import { ErrorState } from './primitives';
5
+ import { Select } from './select';
6
+ /** Resolved, and holding no key at all. */
7
+ export function isExecutionKeyListEmpty(query) {
8
+ return query.isSuccess && (query.data?.length ?? 0) === 0;
9
+ }
10
+ /** The mint's stable fingerprint (never key material), nested under `policy_data`. */
11
+ function keyFingerprint(key) {
12
+ const data = key.policy_data;
13
+ if (typeof data !== 'object' || data === null)
14
+ return undefined;
15
+ const value = data.key_fingerprint;
16
+ return typeof value === 'string' ? value : undefined;
17
+ }
18
+ /** A key's label: its id, plus whichever of description / fingerprint it has. */
19
+ function keyLabel(key) {
20
+ const suffix = [key.description, keyFingerprint(key)]
21
+ .filter((part) => part !== undefined && part !== '')
22
+ .join(' · ');
23
+ return suffix === '' ? key.user_id : `${key.user_id} — ${suffix}`;
24
+ }
25
+ /** One option per `user_id` (what a binding names), first occurrence wins. */
26
+ function pickableKeys(keys) {
27
+ const seen = new Set();
28
+ return keys.filter((key) => {
29
+ if (seen.has(key.user_id))
30
+ return false;
31
+ seen.add(key.user_id);
32
+ return true;
33
+ });
34
+ }
35
+ export function ExecutionKeyPicker({ query, value, onValueChange, error, }) {
36
+ const listEmpty = isExecutionKeyListEmpty(query);
37
+ return (_jsx(Field, { label: "Execution key", description: "The api key this fire runs AS. Every tool call it makes is authorized against that key's live grants \u2014 prefer a least-privilege service key over a human's broad one.",
38
+ // Suppressed: the empty note / the ErrorState already say it.
39
+ error: listEmpty || query.isError ? undefined : error,
40
+ // Only the Select branch claims the field's control id; the error and
41
+ // empty branches render no labelable element, so `for` would dangle.
42
+ group: query.isError || listEmpty, children: query.isError ? (_jsx(ErrorState, { message: errorMessage(query.error), onRetry: () => {
43
+ query.refetch();
44
+ } })) : listEmpty ? (_jsx("p", { role: "status", style: { margin: 0, color: 'var(--tai-color-text-muted)' }, children: "No api keys available to run as. Mint one on the settings API-keys tab first." })) : (_jsx(Select, { options: pickableKeys(query.data ?? []).map((key) => ({
45
+ value: key.user_id,
46
+ label: keyLabel(key),
47
+ })), value: value, placeholder: query.isPending ? 'Loading keys…' : 'Select an execution key', disabled: query.isPending, onValueChange: onValueChange })) }));
48
+ }
49
+ //# sourceMappingURL=execution-key-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-key-picker.js","sourceRoot":"","sources":["../../src/components/execution-key-picker.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAgBlC,2CAA2C;AAC3C,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,OAAO,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CAAC,GAA0B;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,KAAK,GAAI,IAAgC,CAAC,eAAe,CAAC;IAChE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,iFAAiF;AACjF,SAAS,QAAQ,CAAC,GAA0B;IAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;SAClD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;SACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,MAAM,MAAM,EAAE,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,IAAmB;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,aAAa,EACb,KAAK,GACmB;IACxB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEjD,OAAO,CACL,KAAC,KAAK,IACJ,KAAK,EAAC,eAAe,EACrB,WAAW,EAAC,4KAAuK;QACnL,8DAA8D;QAC9D,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QACrD,sEAAsE;QACtE,qEAAqE;QACrE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,YAEhC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,KAAC,UAAU,IACT,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAClC,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC,GACD,CACH,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,YAAG,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,8FAEvE,CACL,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACpD,KAAK,EAAE,GAAG,CAAC,OAAO;gBAClB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;aACrB,CAAC,CAAC,EACH,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,EAC1E,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,aAAa,EAAE,aAAa,GAC5B,CACH,GACK,CACT,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"json-tree-nodes.d.ts","sourceRoot":"","sources":["../../src/components/json-tree-nodes.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAgD,YAAY,EAAE,MAAM,OAAO,CAAC;AAexF,uFAAuF;AACvF,eAAO,MAAM,UAAU,SAAS,CAAC;AAoCjC,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,eAAe,GAAG,YAAY,CAmDnF;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAmDD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,YAAY,CAuC9E"}
1
+ {"version":3,"file":"json-tree-nodes.d.ts","sourceRoot":"","sources":["../../src/components/json-tree-nodes.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAgD,YAAY,EAAE,MAAM,OAAO,CAAC;AAexF,uFAAuF;AACvF,eAAO,MAAM,UAAU,SAAS,CAAC;AA+CjC,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,eAAe,GAAG,YAAY,CA+CnF;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAmDD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,YAAY,CAkD9E"}
@@ -24,8 +24,18 @@ const summaryStyle = {
24
24
  gap: 'var(--tai-space-2)',
25
25
  cursor: 'pointer',
26
26
  };
27
- /** The copy control sits at the far end of a disclosure's row. */
28
- const nodeCopyStyle = { marginLeft: 'auto' };
27
+ /**
28
+ * A disclosure and its copy control share one row: the disclosure fills it and the
29
+ * copy control sits at the far end, top-aligned with the summary so it stays on the
30
+ * summary's line even when the open node's children run tall below it.
31
+ */
32
+ const nodeRowStyle = {
33
+ display: 'flex',
34
+ alignItems: 'flex-start',
35
+ gap: 'var(--tai-space-2)',
36
+ };
37
+ /** The disclosure takes the row's width, leaving the copy control at its end. */
38
+ const nodeDetailsStyle = { flex: 1, minWidth: 0 };
29
39
  /**
30
40
  * The per-node copy button's geometry: borrows `tai-icon-btn` for the focus ring,
31
41
  * muted ink and hover, then shrinks to the code rhythm so the row stays dense.
@@ -57,11 +67,7 @@ export function CopyButton({ value, label, variant }) {
57
67
  clearTimeout(resetTimer.current);
58
68
  };
59
69
  }, []);
60
- const handleClick = (event) => {
61
- // Inside a `<summary>` a click both toggles the disclosure natively and reaches
62
- // the summary's own toggle handler; neither should fire for a copy.
63
- event.preventDefault();
64
- event.stopPropagation();
70
+ const handleClick = () => {
65
71
  void copy(value).then((ok) => {
66
72
  if (!ok || !mounted.current)
67
73
  return;
@@ -77,7 +83,7 @@ export function CopyButton({ value, label, variant }) {
77
83
  if (variant === 'text') {
78
84
  return (_jsxs("button", { type: "button", className: "tai-btn tai-btn-ghost", onClick: handleClick, children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), copied ? COPIED_LABEL : label] }));
79
85
  }
80
- return (_jsx("button", { type: "button", className: "tai-icon-btn", style: { ...nodeCopyStyle, ...nodeCopyButtonStyle }, "aria-label": copied ? COPIED_LABEL : label, onClick: handleClick, children: copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}) }));
86
+ return (_jsx("button", { type: "button", className: "tai-icon-btn", style: nodeCopyButtonStyle, "aria-label": copied ? COPIED_LABEL : label, onClick: handleClick, children: copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}) }));
81
87
  }
82
88
  /**
83
89
  * The visible slice of a container's children, plus a "show more" control while
@@ -106,7 +112,16 @@ export function JsonNode({ name, value, depth, path }) {
106
112
  event.preventDefault();
107
113
  setOpen(path, !open);
108
114
  };
109
- return (_jsxs("details", { open: open, children: [_jsxs("summary", { style: summaryStyle, onClick: handleToggle, children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: "tai-muted", children: summary }), depth > 0 ? (_jsx(CopyButton, { value: value, variant: "icon", label: name !== undefined ? `Copy ${name}` : COPY_LABEL })) : null] }), open ? _jsx(NodeChildren, { value: value, count: count, depth: depth, path: path }) : null] }));
115
+ const disclosure = (_jsxs("details", { open: open, style: depth > 0 ? nodeDetailsStyle : undefined, children: [_jsxs("summary", { style: summaryStyle, onClick: handleToggle, children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: "tai-muted", children: summary })] }), open ? _jsx(NodeChildren, { value: value, count: count, depth: depth, path: path }) : null] }));
116
+ // The root's copy-node control would duplicate the toolbar's copy-whole.
117
+ if (depth === 0)
118
+ return disclosure;
119
+ // The copy control is a SIBLING of the disclosure, never a child of its
120
+ // interactive `<summary>`, so no interactive control nests inside another
121
+ // (WCAG 4.1.2 name/role/value — a nested-interactive control has no reliable
122
+ // accessible role). Both the disclosure toggle and the copy button stay
123
+ // independently keyboard operable.
124
+ return (_jsxs("div", { style: nodeRowStyle, children: [disclosure, _jsx(CopyButton, { value: value, variant: "icon", label: name !== undefined ? `Copy ${name}` : COPY_LABEL })] }));
110
125
  }
111
126
  return (_jsxs("div", { children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: primitiveClass(value), children: primitiveText(value) })] }));
112
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"json-tree-nodes.js","sourceRoot":"","sources":["../../src/components/json-tree-nodes.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-tree-nodes.js","sourceRoot":"","sources":["../../src/components/json-tree-nodes.tsx"],"names":[],"mappings":"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"}
@@ -5,9 +5,17 @@
5
5
  * on; it imports neither of them, which is what breaks the write/measure cycle.
6
6
  */
7
7
  export declare const SCROLL_REGION_CLASS = "tai-scroll-region";
8
- export declare function overflows(element: HTMLElement): boolean;
9
8
  /**
10
- * Whether the element should carry the region attributes right now.
9
+ * The axis a scroll region is measured on. A prose table or a code line scrolls
10
+ * SIDEWAYS (`horizontal`, the default); a bounded, capped-height list scrolls
11
+ * DOWN (`vertical`). Both wear the same conditional region attributes — only the
12
+ * dimension read to decide whether they overflow differs.
13
+ */
14
+ export type OverflowAxis = 'horizontal' | 'vertical';
15
+ export declare function overflows(element: HTMLElement, axis?: OverflowAxis): boolean;
16
+ /**
17
+ * Whether the element should carry the region attributes right now, measured on
18
+ * `axis`.
11
19
  *
12
20
  * A region that stops overflowing keeps its tab stop for as long as it holds
13
21
  * focus: taking `tabindex` off the focused element drops the reader onto the
@@ -15,7 +23,7 @@ export declare function overflows(element: HTMLElement): boolean;
15
23
  * already has the stop can be the active element, so this can hold a stop open
16
24
  * but never invent one.
17
25
  */
18
- export declare function needsRegion(element: HTMLElement): boolean;
26
+ export declare function needsRegion(element: HTMLElement, axis?: OverflowAxis): boolean;
19
27
  /** A tracked scrollable surface, with the name it wears while it scrolls. */
20
28
  export interface TrackedSurface {
21
29
  readonly surface: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-measure.d.ts","sourceRoot":"","sources":["../../src/components/overflow-measure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAEvD,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEzD;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAItE;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,GACjB,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAKvE"}
1
+ {"version":3,"file":"overflow-measure.d.ts","sourceRoot":"","sources":["../../src/components/overflow-measure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;AAErD,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,GAAE,YAA2B,GAAG,OAAO,CAI1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,GAAE,YAA2B,GAAG,OAAO,CAE5F;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAItE;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,GACjB,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAKvE"}
@@ -5,11 +5,14 @@
5
5
  * on; it imports neither of them, which is what breaks the write/measure cycle.
6
6
  */
7
7
  export const SCROLL_REGION_CLASS = 'tai-scroll-region';
8
- export function overflows(element) {
9
- return element.scrollWidth > element.clientWidth;
8
+ export function overflows(element, axis = 'horizontal') {
9
+ return axis === 'vertical'
10
+ ? element.scrollHeight > element.clientHeight
11
+ : element.scrollWidth > element.clientWidth;
10
12
  }
11
13
  /**
12
- * Whether the element should carry the region attributes right now.
14
+ * Whether the element should carry the region attributes right now, measured on
15
+ * `axis`.
13
16
  *
14
17
  * A region that stops overflowing keeps its tab stop for as long as it holds
15
18
  * focus: taking `tabindex` off the focused element drops the reader onto the
@@ -17,8 +20,8 @@ export function overflows(element) {
17
20
  * already has the stop can be the active element, so this can hold a stop open
18
21
  * but never invent one.
19
22
  */
20
- export function needsRegion(element) {
21
- return overflows(element) || element.ownerDocument.activeElement === element;
23
+ export function needsRegion(element, axis = 'horizontal') {
24
+ return overflows(element, axis) || element.ownerDocument.activeElement === element;
22
25
  }
23
26
  /** Strips the region attributes from a surface that is not a region now. */
24
27
  export function clearScrollRegionAttributes(wrapper) {
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-measure.js","sourceRoot":"","sources":["../../src/components/overflow-measure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoB;IAC9C,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,OAAO,CAAC;AAC/E,CAAC;AAQD,4EAA4E;AAC5E,MAAM,UAAU,2BAA2B,CAAC,OAAoB;IAC9D,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,2BAA2B,CACzC,OAAoB,EACpB,KAAa,EACb,SAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,OAAkC;IAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"overflow-measure.js","sourceRoot":"","sources":["../../src/components/overflow-measure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAUvD,MAAM,UAAU,SAAS,CAAC,OAAoB,EAAE,OAAqB,YAAY;IAC/E,OAAO,IAAI,KAAK,UAAU;QACxB,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;QAC7C,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoB,EAAE,OAAqB,YAAY;IACjF,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,OAAO,CAAC;AACrF,CAAC;AAQD,4EAA4E;AAC5E,MAAM,UAAU,2BAA2B,CAAC,OAAoB;IAC9D,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,2BAA2B,CACzC,OAAoB,EACpB,KAAa,EACb,SAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,OAAkC;IAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
@@ -23,12 +23,20 @@
23
23
  * would never notice one being swapped for another.
24
24
  */
25
25
  import type { CSSProperties, ReactNode, Ref, RefCallback } from 'react';
26
+ import { type OverflowAxis } from './overflow-measure';
27
+ export type { OverflowAxis } from './overflow-measure';
26
28
  export interface ScrollRegionProps {
27
29
  /** The region's accessible name, applied only while it actually scrolls. */
28
30
  readonly label: string;
29
31
  readonly children: ReactNode;
30
32
  readonly className?: string;
31
33
  readonly style?: CSSProperties;
34
+ /**
35
+ * The dimension overflow is measured on. `horizontal` (the default) fits a pane
36
+ * that scrolls sideways; `vertical` fits a bounded, capped-height box that scrolls
37
+ * down. The caller styles the box's own overflow to match.
38
+ */
39
+ readonly axis?: OverflowAxis;
32
40
  /**
33
41
  * The one arbitrary attribute this component forwards. The measured attributes
34
42
  * — `tabindex`, `role` and `aria-label` — are the component's own and appear
@@ -71,9 +79,11 @@ export interface OverflowRegionAttributes {
71
79
  *
72
80
  * @param ref - a consumer ref that wants the same element, or `undefined`.
73
81
  * @param label - its accessible name, applied only while it actually scrolls.
82
+ * @param axis - the dimension to measure overflow on (`horizontal` by default;
83
+ * `vertical` for a bounded, capped-height box that scrolls down).
74
84
  */
75
- export declare function useOverflowRegion(ref: Ref<HTMLElement> | undefined, label: string): OverflowRegionAttributes;
76
- export declare function ScrollRegion({ label, children, className, style, 'data-testid': testId, ref, }: ScrollRegionProps): import("react").JSX.Element;
85
+ export declare function useOverflowRegion(ref: Ref<HTMLElement> | undefined, label: string, axis?: OverflowAxis): OverflowRegionAttributes;
86
+ export declare function ScrollRegion({ label, children, className, style, axis, 'data-testid': testId, ref, }: ScrollRegionProps): import("react").JSX.Element;
77
87
  /**
78
88
  * Instruments the scrollable surfaces under the element the returned ref is
79
89
  * attached to — every `<table>` and every `<pre>` — as scroll regions. React
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-region.d.ts","sourceRoot":"","sources":["../../src/components/scroll-region.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAwBxE,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CACpC;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAuBD,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,GACZ,wBAAwB,CA4D1B;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,iBAAiB,+BAenB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,CA0H1F"}
1
+ {"version":3,"file":"scroll-region.d.ts","sourceRoot":"","sources":["../../src/components/scroll-region.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AASxE,OAAO,EAGL,KAAK,YAAY,EAIlB,MAAM,oBAAoB,CAAC;AAS5B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CACpC;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAuBD,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,YAA2B,GAChC,wBAAwB,CA4D1B;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,IAAI,EACJ,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,iBAAiB,+BAenB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,CA0H1F"}
@@ -43,15 +43,17 @@ function attachRef(ref, element) {
43
43
  *
44
44
  * @param ref - a consumer ref that wants the same element, or `undefined`.
45
45
  * @param label - its accessible name, applied only while it actually scrolls.
46
+ * @param axis - the dimension to measure overflow on (`horizontal` by default;
47
+ * `vertical` for a bounded, capped-height box that scrolls down).
46
48
  */
47
- export function useOverflowRegion(ref, label) {
49
+ export function useOverflowRegion(ref, label, axis = 'horizontal') {
48
50
  const [scrollable, setScrollable] = useState(false);
49
51
  // Attached and released with the element, so a box that mounts later than the
50
52
  // hook, or is swapped for another, is instrumented exactly once either way.
51
53
  const measuredRef = useCallback((box) => {
52
54
  const detachConsumer = attachRef(ref, box);
53
55
  const measure = () => {
54
- setScrollable(needsRegion(box));
56
+ setScrollable(needsRegion(box, axis));
55
57
  };
56
58
  // The box gives resize; its children give the overflowing width. The
57
59
  // shared observer is released target by target rather than disconnected,
@@ -94,13 +96,13 @@ export function useOverflowRegion(ref, label) {
94
96
  box.removeEventListener('blur', releaseHeldStop);
95
97
  detachConsumer();
96
98
  };
97
- }, [ref]);
99
+ }, [ref, axis]);
98
100
  if (!scrollable)
99
101
  return { ref: measuredRef };
100
102
  return { ref: measuredRef, tabIndex: 0, role: 'region', 'aria-label': label };
101
103
  }
102
- export function ScrollRegion({ label, children, className, style, 'data-testid': testId, ref, }) {
103
- const region = useOverflowRegion(ref, label);
104
+ export function ScrollRegion({ label, children, className, style, axis, 'data-testid': testId, ref, }) {
105
+ const region = useOverflowRegion(ref, label, axis);
104
106
  return (_jsx("div", { className: className === undefined ? SCROLL_REGION_CLASS : `${SCROLL_REGION_CLASS} ${className}`, style: style, "data-testid": testId, ...region, children: children }));
105
107
  }
106
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-region.js","sourceRoot":"","sources":["../../src/components/scroll-region.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scroll-region.js","sourceRoot":"","sources":["../../src/components/scroll-region.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The optional-subject sub-form shared by every form that keys a run's state to a
3
+ * conversation subject (the add-schedule dialog and the tool run panel). A collapsible
4
+ * block whose target / kind / key fields render only while expanded, so a form's default
5
+ * (collapsed) shape sends no subject.
6
+ *
7
+ * Presentational and prop-driven, like {@link ExecutionKeyPicker}: the host feature owns
8
+ * the conversation-targets query (the SDK holds no data-fetching library) and hands the
9
+ * resolved `targetOptions` in. {@link useSubjectFields} owns the field state; the host
10
+ * feature wraps it with its own targets query under its own query-key namespace. The
11
+ * caption and the two placeholders are the only copy that differs between hosts, so they
12
+ * are props.
13
+ */
14
+ import type { StateSubject } from '@tai42/api-client';
15
+ import { type ReactNode } from 'react';
16
+ /** One conversation-target option: `target_kind:target_name` value, `kind · name` label. */
17
+ export interface SubjectTargetOption {
18
+ readonly value: string;
19
+ readonly label: string;
20
+ }
21
+ /** The message a partially-filled subject is refused with (all three fields or none). */
22
+ export declare const SUBJECT_INCOMPLETE_MESSAGE = "A subject needs a target, a kind, and a key.";
23
+ /** Map the conversation routes read to the target select's options. */
24
+ export declare function toSubjectTargetOptions(routes: readonly {
25
+ readonly target_kind: string;
26
+ readonly target_name: string;
27
+ }[]): SubjectTargetOption[];
28
+ /**
29
+ * Build a {@link StateSubject} from the sub-form values: `null` when untouched (no
30
+ * subject), a subject when target, kind and key are all set, or a loud failure when only
31
+ * some are — never a silently dropped partial subject. The target splits on its FIRST
32
+ * colon, so a target name may itself contain one.
33
+ */
34
+ export declare function buildSubject(v: {
35
+ readonly target: string;
36
+ readonly kind: string;
37
+ readonly key: string;
38
+ }): {
39
+ ok: true;
40
+ subject: StateSubject | null;
41
+ } | {
42
+ ok: false;
43
+ message: string;
44
+ };
45
+ /** Subject field state + setters + the collapse toggle. The host feature owns the
46
+ * open-gated conversation-targets query and derives `targetOptions` from it. */
47
+ export declare function useSubjectFields(): {
48
+ target: string;
49
+ setTarget: import("react").Dispatch<import("react").SetStateAction<string>>;
50
+ kind: string;
51
+ setKind: import("react").Dispatch<import("react").SetStateAction<string>>;
52
+ key: string;
53
+ setKey: import("react").Dispatch<import("react").SetStateAction<string>>;
54
+ error: string | null;
55
+ setError: import("react").Dispatch<import("react").SetStateAction<string | null>>;
56
+ open: boolean;
57
+ setOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
58
+ };
59
+ export interface SubjectSectionProps {
60
+ readonly open: boolean;
61
+ readonly onToggle: () => void;
62
+ readonly target: string;
63
+ readonly onTargetChange: (value: string) => void;
64
+ readonly kind: string;
65
+ readonly onKindChange: (value: string) => void;
66
+ readonly subjectKey: string;
67
+ readonly onKeyChange: (value: string) => void;
68
+ readonly error: string | null;
69
+ readonly targetOptions: readonly SubjectTargetOption[];
70
+ /** The block's descriptive caption, shown under the expanded header. */
71
+ readonly caption: string;
72
+ /** The target select's empty-choice placeholder. */
73
+ readonly targetPlaceholder: string;
74
+ /** The Subject key field's helper description. */
75
+ readonly subjectKeyDescription: string;
76
+ }
77
+ export declare function SubjectSection({ open, onToggle, target, onTargetChange, kind, onKindChange, subjectKey, onKeyChange, error, targetOptions, caption, targetPlaceholder, subjectKeyDescription, }: SubjectSectionProps): ReactNode;
78
+ //# sourceMappingURL=subject-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-section.d.ts","sourceRoot":"","sources":["../../src/components/subject-section.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAMjD,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,iDAAiD,CAAC;AAEzF,uEAAuE;AACvE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,GAChF,mBAAmB,EAAE,CAKvB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqB9E;AAED;iFACiF;AACjF,wBAAgB,gBAAgB;;;;;;;;;;;EAO/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kDAAkD;IAClD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,KAAK,EACL,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,qBAAqB,GACtB,EAAE,mBAAmB,GAAG,SAAS,CA4DjC"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Field } from './field';
4
+ import { TextInput } from './inputs';
5
+ import { Select } from './select';
6
+ /** The message a partially-filled subject is refused with (all three fields or none). */
7
+ export const SUBJECT_INCOMPLETE_MESSAGE = 'A subject needs a target, a kind, and a key.';
8
+ /** Map the conversation routes read to the target select's options. */
9
+ export function toSubjectTargetOptions(routes) {
10
+ return routes.map((route) => ({
11
+ value: `${route.target_kind}:${route.target_name}`,
12
+ label: `${route.target_kind} · ${route.target_name}`,
13
+ }));
14
+ }
15
+ /**
16
+ * Build a {@link StateSubject} from the sub-form values: `null` when untouched (no
17
+ * subject), a subject when target, kind and key are all set, or a loud failure when only
18
+ * some are — never a silently dropped partial subject. The target splits on its FIRST
19
+ * colon, so a target name may itself contain one.
20
+ */
21
+ export function buildSubject(v) {
22
+ const touched = v.target !== '' || v.kind.trim() !== '' || v.key.trim() !== '';
23
+ if (!touched)
24
+ return { ok: true, subject: null };
25
+ const separator = v.target.indexOf(':');
26
+ const targetKind = separator < 0 ? '' : v.target.slice(0, separator);
27
+ const targetName = separator < 0 ? '' : v.target.slice(separator + 1);
28
+ if (targetKind === '' || targetName === '' || v.kind.trim() === '' || v.key.trim() === '') {
29
+ return { ok: false, message: SUBJECT_INCOMPLETE_MESSAGE };
30
+ }
31
+ // The target is chosen from the conversation-routes options, so its kind is one of the
32
+ // route target kinds; the value carries it as text and this narrows it to the subject's
33
+ // union without a runtime schema (the SDK holds no api-client value import).
34
+ return {
35
+ ok: true,
36
+ subject: {
37
+ target_kind: targetKind,
38
+ target_name: targetName,
39
+ kind: v.kind.trim(),
40
+ key: v.key.trim(),
41
+ },
42
+ };
43
+ }
44
+ /** Subject field state + setters + the collapse toggle. The host feature owns the
45
+ * open-gated conversation-targets query and derives `targetOptions` from it. */
46
+ export function useSubjectFields() {
47
+ const [target, setTarget] = useState('');
48
+ const [kind, setKind] = useState('');
49
+ const [key, setKey] = useState('');
50
+ const [error, setError] = useState(null);
51
+ const [open, setOpen] = useState(false);
52
+ return { target, setTarget, kind, setKind, key, setKey, error, setError, open, setOpen };
53
+ }
54
+ export function SubjectSection({ open, onToggle, target, onTargetChange, kind, onKindChange, subjectKey, onKeyChange, error, targetOptions, caption, targetPlaceholder, subjectKeyDescription, }) {
55
+ return (_jsxs("div", { children: [_jsx("button", { type: "button", className: "tai-btn tai-btn-ghost", "aria-expanded": open, onClick: onToggle, children: "Subject (optional)" }), open ? (_jsxs("div", { style: {
56
+ display: 'flex',
57
+ flexDirection: 'column',
58
+ gap: 'var(--tai-space-3)',
59
+ marginTop: 'var(--tai-space-3)',
60
+ }, children: [_jsx("p", { style: { margin: 0, color: 'var(--tai-color-text-muted)' }, children: caption }), _jsx(Field, { label: "Target", children: _jsx(Select, { value: target, onValueChange: onTargetChange, "aria-label": "Subject target", placeholder: targetPlaceholder, options: targetOptions }) }), _jsx(Field, { label: "Subject kind", description: "The subject family the state declares (e.g. person).", children: _jsx(TextInput, { value: kind, placeholder: "e.g. person", onChange: (event) => {
61
+ onKindChange(event.target.value);
62
+ } }) }), _jsx(Field, { label: "Subject key", description: subjectKeyDescription, children: _jsx(TextInput, { value: subjectKey, placeholder: "e.g. a-42", onChange: (event) => {
63
+ onKeyChange(event.target.value);
64
+ } }) }), error !== null ? (_jsx("p", { role: "alert", style: { margin: 0, color: 'var(--tai-color-err-text)' }, children: error })) : null] })) : null] }));
65
+ }
66
+ //# sourceMappingURL=subject-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject-section.js","sourceRoot":"","sources":["../../src/components/subject-section.tsx"],"names":[],"mappings":"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"}
@@ -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;AAElD,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,+BA+CjB"}
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"}
@@ -36,10 +36,20 @@ import { useState } from 'react';
36
36
  import { Field } from './field';
37
37
  import { ALL_TAGS, SelectedToolBadges, TagFilterField, ToolSelect } from './tool-picker-parts';
38
38
  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';
39
43
  export function ToolPicker({ toolNames, value, onChange, disabled, placeholder = 'Select a tool…', idPrefix = 'tool-picker', label, 'aria-label': ariaLabel, excludeNames, tagsByTool, agentToolNames, displayNames, badgesByTool, }) {
40
44
  const [tagFilter, setTagFilter] = useState(ALL_TAGS);
41
45
  const excluded = new Set(excludeNames ?? []);
42
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;
43
53
  // Distinct tags across the available tools, sorted, feeding the filter control.
44
54
  const allTags = tagsByTool === undefined
45
55
  ? []
@@ -47,7 +57,7 @@ export function ToolPicker({ toolNames, value, onChange, disabled, placeholder =
47
57
  const filtered = tagsByTool !== undefined && tagFilter !== ALL_TAGS
48
58
  ? available.filter((name) => (tagsByTool[name] ?? []).includes(tagFilter))
49
59
  : available;
50
- const toolSelect = (_jsx(ToolSelect, { tagsByTool: tagsByTool, filtered: filtered, value: value, onChange: onChange, placeholder: placeholder, ariaLabel: ariaLabel, disabled: disabled, displayNames: displayNames, agentToolNames: agentToolNames }));
60
+ const toolSelect = (_jsx(ToolSelect, { tagsByTool: tagsByTool, filtered: filtered, value: value, onChange: onChange, placeholder: pickerPlaceholder, ariaLabel: ariaLabel, disabled: pickerDisabled, displayNames: displayNames, agentToolNames: agentToolNames }));
51
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 })] }));
52
62
  }
53
63
  //# sourceMappingURL=tool-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAsClD,MAAM,UAAU,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,gBAAgB,EAC9B,QAAQ,GAAG,aAAa,EACxB,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,GACI;IAChB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAS,QAAQ,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAElE,gFAAgF;IAChF,MAAM,OAAO,GACX,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9E,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAER,MAAM,QAAQ,GACZ,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ;QAChD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1E,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,UAAU,GAAG,CACjB,KAAC,UAAU,IACT,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;IAEF,OAAO,CACL,8BAAkB,QAAQ,EAAE,SAAS,EAAC,uBAAuB,aAC1D,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChD,KAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,YAAY,EAC/B,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,YAAG,UAAU,GAAS,CAAC,CAAC,CAAC,UAAU,EAC7E,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAI,IAChF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool-picker.js","sourceRoot":"","sources":["../../src/components/tool-picker.tsx"],"names":[],"mappings":"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"}